online gambling singapore online gambling singapore online slot malaysia online slot malaysia mega888 malaysia slot gacor live casino malaysia online betting malaysia mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 文組也該知道的區塊鏈技術知識《1》 從一筆交易來看 ETH 與 BTC 之異同

 

要了解以太幣(ETH)或是比特幣(BTC)是如何運作,從一筆交易來切入是很好的著力點,因為幾乎所有的概念與原理都是圍繞著交易來發生的。

本篇文章將從一筆普通的 ETH 交易與一筆 BTC 交易來檢視架構上的異同,藉以了解各自之運作原理。

下方是一筆在 Etherscan( 以太坊的區塊瀏覽器,任何在鏈上發生的交易都可以在 Etherscan 一覽無遺 )上隨機擷取的交易,我們先來解析一下這筆交易內容包含的資訊。

以太坊上的一筆普通交易

第1點「交易雜湊值」,即這筆交易的 id,是唯一識別值,如我們的身分證字號一般。這個值是由這筆交易的所有資訊雜湊而成。

第2點「所在區塊」,為這筆交易位在的區塊,亦即「區塊高度」。後方灰標籤中的 「13 Block Confirmations」代表在這個區塊之後已經接了 12 個區塊(包含本區塊共有 13 個區塊已經確認)。因為有可能有分叉的問題,故通常在一筆交易出塊後,要等到 5 個以上的區塊確認,才較能確保本交易是在最長的區塊鏈之上,相關資訊不會再被更動。

第3點「時間戳記」,為礦工打包本筆交易上鏈的時間,時間以 UTC(世界協調時間)表示,和台灣有 8 個小時的時差。

第4點「來自地址」,表示本筆交易是從哪個地址送出。

第5點「接收地址」,表示本筆交易的金額將被哪個地址接收。

第6點「交易金額」,表示本筆交易中所轉移了多少顆以太幣,後方會以檢視時的時價來換算。

第7點「手續費」,在以太坊中進行交易,必須經由礦工運算打包後上鏈,故需要支付給礦工手續費。一筆一般的以太坊轉帳交易會使用 21,000 的 Gas(燃料),可以理解成點對點網路要花多少資源去做這筆交易的運算。

[註]以太坊交易手續費公式:

Tx Fee(7手續費)= Gas Used(7-2燃料用量) * Gas Price(7-3單位燃料價格)

用比喻來說明的話,可以理解成台北開車至台中的油錢:「油錢 = 使用公升數 * 每公升油價」

而 Gas Limit 比較像是出發前你要加多少公升的油,如果加的油不足你旅程需要的油,那這趟旅程(這筆交易)就會失敗。

發送交易時,部分錢包的 Gas Price & Gas Limit 是可以自己設定的,Gas Limit 基本上只要大過交易所需的用量,不要交易失敗即可。比較需要注意的是,在以太坊如果因為 Gas Limit 設不夠等原因交易失敗,那麼手續費還是會被收取,不會退回。(因為礦工還是花資源下去幫你算了)

因為交易的 Gas Used 是礦工實際在運算時才會被決定的,故 Gas Price 成為決定要支付給礦工多少手續費的決定因子。原則上手續費越高會越優先被礦工打包上鏈,交易的等待時間會越短。由於以太坊上交易量會隨時間改變,欲知道當前即時狀況以決定手續費要設多少,可以到 ETH gas station 查看。

第8點「Nonce」,目前比較沒有一個比較統一的翻譯,我個人覺得可以理解為序次,前方的值 “22954”表示這個「來自地址」截至本交易為止,已發送了 22954 筆交易。

後方的值 “210” 則表示這筆交易是在這個「所在區塊」中的第 210 筆交易。

第9點「額外註記」,則是可以寫上額外的文字作為這筆交易的註記,也會牽涉到以太坊與比特幣最大的不同處之一:智慧合約,我們會在後續詳述。

介紹完了以太坊的一筆交易,接下來我們要先來談談以太坊和比特幣的架構,才能來介紹比特幣的交易。因為比特幣的交易長相比較特別一些,不像以太坊這麼直覺。

以太坊的架構類似銀行帳戶,有資料庫在記錄每個帳號和帳號的餘額,透過交易來更新。如下圖所示,地址 14c5f8ba 在一筆交易中發送了 10 個 eth 給 地址 bb75a980 ,於是在交易過後雙方的以太幣數量便被更新了。

 

比特幣的UTXO模型

然而,比特幣是採用了另外一種,叫作 UTXO(Unspent Transaction Output,Transaction 簡稱 Tx)的架構,如下圖所示:

我們可以想像比特幣是一坨一坨的錢堆,我們的地址比較像是能夠操控這些錢堆的鑰匙。可以把錢堆湊在一起做交易;也可以把一坨錢堆拆開來交易。

每一筆交易可以有多個 input(錢堆),交易後也可以變成一或多個新的錢堆。我們直接透過 Blockstream Bitcoin Explorer( 比特幣的區塊瀏覽器,任何在鏈上發生的交易都可以在這一覽無遺 )上的隨機一筆比特幣交易來一探究竟:

比特幣的一筆普通交易

可以發現,這筆交易動用了三個錢堆,推測可能是這三個錢堆的所有者想要發送四顆比特幣給別人,但他想動用的前兩個錢堆總額不足四顆,所以便再動用了第三個錢堆,湊足四顆發送給別人。而多出的比特幣則會變為「Unspent (未花費)」的錢堆回到所有者身上。

打開 Details 查看交易的細節後便可以發現,右下方的 #1 錢堆中有標注 Unspent 的字樣,這筆錢堆在交易後會返回到發送交易的地址中。

此外,我們可以發現 input 的三筆錢堆,總額是 6.1446498 BTC;而 output 的兩筆錢堆,總額卻只有 6.1442275 BTC。中間有 0.0004223 BTC 的差額,原因是比特幣交易需要付手續費給幫忙驗證打包上鏈的礦工,故這 0.0004223 BTC 便是這筆交易手續費的金額。

UTXO 的架構,其實是解決了 Account model 同一個地址(帳戶)無法同時進行兩筆交易的問題(Account model 一定會有先後順序,即 Nonce)。以太幣為了避免雙重花費(Double Spending:同一筆錢被花了兩次),會以 Nonce 來標註每一筆交易的先後次序,若同時發送多筆交易,一但前面有一筆交易卡住,則後面的交易也都會跟著塞住。

比特幣 UTXO 的架構可以同時進行多筆交易,一個地址可以「同時」將多個錢堆發送給多個不同的地址,在同一個區塊,甚至同一筆交易中完成。可以把多個錢堆同時進行交易,算是讓交易變得更加有效率。(雖然比特幣出一個塊依然要10分鐘⋯⋯)

至此,我們對於比特幣和以太幣的架構都有初步的認識了。接著便要來介紹以太幣和比特幣最核心的差異:智慧合約。我們再來重新檢視一下比特幣和以太幣的交易。

還記得在以太坊交易的第9點中,有個額外註記的部分,我們在前面跳過了。其實這個部分不只可以作為額外註記,要在以太坊上發佈智慧合約、操作智慧合約也都是要透過這個欄位來輸入程式碼,被礦工執行。

其實比特幣也可以在交易中做額外註記,會標註在「OP_RETURN」的欄位中,但比特幣這個額外備註的欄位並無法被解釋為程式碼,故在此便只能單純作為交易的註記。

結論

以太坊採用 Account Model 架構;比特幣則是採用 UTXO 架構。

以太坊同一個地址 (帳戶) 發送出的交易必有先後順序之分(Nonce);比特幣則是類似錢堆的架構。

以太坊可以在「Input Data」欄位輸入程式碼,部署或操作智慧合約;比特幣則只能在「OP_RETURN DATA」欄位單純做備註。

 

轉貼自: 動區

若喜歡本文,請關注我們的臉書 Please Like our Facebook Page: Big Data In Finance

 


留下你的回應

以訪客張貼回應

0
  • 找不到回應

YOU MAY BE INTERESTED