12 以太坊原始碼分析 12 交易資料分析

2021-09-01 08:46:08 字數 1112 閱讀 1986

交易的資料結構定義在core.types.transaction.go中,結構如下:

type transaction struct
交易的結構體中只有乙個data欄位,是txdata型別的。其他的hash,size,from都是快取。

txdata結構體定義如下:

type txdata struct
accountnonce是交易傳送者已經傳送交易的次數

price是此交易的gas費用

gaslimit是本次交易允許消耗gas的最大數量

recipient是交易的接收者

amount是交易的以太坊數量

payload是交易攜帶的資料

v,r,s是交易的簽名資料

這裡沒有交易的發起者,因為發起者可以通過簽名的資料獲得。

交易的hash會首先從transaction的快取中讀取hash,如果快取中沒有,則通過rlphash來計算hash,並將hash放入到快取中。

交易的hash是通過hash()方法獲得的。

// hash hashes the rlp encoding of tx.

// it uniquely identifies the transaction.

func (tx *transaction) hash() common.hash

v := rlphash(tx)

tx.hash.store(v)

return v

}

這裡交易的hash實際上是對transaction結構體重的data欄位進行hash得到的結果。

##交易型別

目前交易有兩種型別

第一種是以太坊轉賬,這裡在建立交易時需要在sendtransaction寫入to欄位,即寫轉到的位址。

第二種是合約交易,以太坊**中定義在傳送合約交易時,sendtransaction中的to欄位置空,這樣就能夠知道是合約交易。

在執行交易時,在命令列中呼叫eth.sendtransaction即可執行交易。

sendtransaction具體的實現在account下的eth account analysis.md檔案中。

以太坊原始碼分析 交易的執行

以太坊是乙個執行智慧型合約的平台,被稱作可程式設計的區塊鏈,允許使用者將編寫的智慧型合約部署在區塊鏈上執行。而執行合約的主體便是以太坊虛擬機器 evm 區塊 交易 合約 區塊鏈由區塊 block 組成,而區塊中打包一定數量的交易 transaction 交易可能是乙個單純的轉賬操作,也可能是呼叫乙個...

以太坊原始碼 交易(一)

交易是區塊鏈中最基本也是最核心的乙個概念,在以太坊中,交易更是重中之重,因為以太坊是乙個智慧型合約平台,以太坊上的應用都是通過智慧型合約與區塊鏈進行互動,而智慧型合約的執行是由交易觸發的,沒有交易,智慧型合約就是一段死的 可以說在以太坊中,一切都源於交易。下面就來看看在以太坊中交易是什麼樣的,交易裡...

以太坊ETH原始碼分析(2) 交易執行過程

交易的發起一般通過呼叫rpc介面實現,eth原始碼本身提供了相關api,位於原始碼的ethereum go ethereum的internal包中 sendtransaction creates a transaction for the given argument,sign it and sub...