從一筆交易來看 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」的欄位中,但比特幣這個額外備註的欄位並無法被解釋為程式碼,故在此便只能單純作為交易的註記。

結論

1. 以太坊採用Account Model 架構;比特幣則是採用UTXO 架構。
2. 以太坊同一個地址(帳戶) 傳送出的交易必有先後順序之分(Nonce);比特幣則是類似錢堆的架構。
3. 以太坊可以在「Input Data」欄位輸入程式碼,部署或操作智慧合約;比特幣則只能在「OP_RETURN DATA」欄位單純做備註。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;