交易的資料結構定義在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...