solidity智慧合約[5]——一筆交易詳解
在之前,我們已經寫好了一個最簡單的helloworld合約,如下:
1 |
pragma solidity ^0.4.23; |
和pure和view不同,當我們執行changeName方法時,會發現,我們需要消耗gas。這筆事務會發送給全網所有的節點。全網所有的節點都會執行同樣的操作。
當我們呼叫函式會在remix控制檯中顯示一些資訊。
一筆交易的資訊詳解:
控制檯資訊
其中:
1、statues:代表當前交易狀態,是否提交到區塊鏈中成功。
2、transation hash:唯一標識此交易。
3、from:呼叫者地址。
4、to:合約地址
5、gas:此交易gas的最大限制
6、transation cost:此交易花費的總gas的大小。包含了excution cost。例如一筆交易基本的cost為21000gas。部署合約最小的成本為32000gas
7、excution cost:交易的執行成本。特指在以太坊虛擬機器中執行的成本。
8、hash:同transation hash。
9、input 呼叫函式、傳遞進以太坊虛擬機器中的二進位制程式碼。
10、decode input 建構函式輸入。
11、函式返回值
12、log 事件資訊儲存在其中
13、value 交易附帶的以太幣。
input詳解
對於此例來說,如果我呼叫changeName傳遞的引數為"olaya",那麼input中的資訊為:
input
1、0x5353a2d8
前4個位元組,是函式宣告hash後的前4個位元組,用於查詢到函式的位置。
2、0000000000000000000000000000000000000000000000000000000000000020
第一個引數的偏移量,0x20是10進位制的32,代表olaya這個引數偏移了32個位元組。
3、0000000000000000000000000000000000000000000000000000000000000005
string是特殊的動態長度陣列,前面需要有長度來標示佔了幾個位元組,擴充到32個位元組。
4、6f6c617961000000000000000000000000000000000000000000000000000000
olaya16進位制標示,擴充到32個位元組。。
參考資料:
transation cost and excution cost
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!