在之前,我们已经写好了一个最简单的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 交易附带的以太币。
对于此例来说,如果我调用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
本文链接: https://dreamerjonson.com/2018/11/09/solidity-5/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。