solidity智能合约[5]——一笔交易详解-创新互联

在之前,我们已经写好了一个最简单的helloworld合约,如下:

专业领域包括成都做网站、网站制作、商城建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联公司的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pragma solidity ^0.4.23;
contract HelloWorld{
  string public name = "jonson";

  function getName() public view returns(string){
    return name;
  }

  function changeName(string _name) public{
    name = _name;

  }

  function testPure(uint a,uint b) public pure returns(uint){
    return a+b;
  }
}

和pure和view不同,当我们执行changeName方法时,会发现,我们需要消耗gas。这笔事务会发送给全网所有的节点。全网所有的节点都会执行同样的操作。
当我们调用函数会在remix控制台中显示一些信息。

一笔交易的信息详解:

solidity智能合约[5]——一笔交易详解

控制台信息

其中:
  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中的信息为:

solidity智能合约[5]——一笔交易详解

input

1、0x5353a2d8前4个字节,是函数声明hash后的前4个字节,用于查找到函数的位置。
2、0000000000000000000000000000000000000000000000000000000000000020第一个参数的偏移量,0x20是10进制的32,代表olaya这个参数偏移了32个字节。
3、0000000000000000000000000000000000000000000000000000000000000005string是特殊的动态长度数组,前面需要有长度来标示占了几个字节,扩充到32个字节。
4、6f6c617961000000000000000000000000000000000000000000000000000000olaya16进制标示,扩充到32个字节。。

参考资料:
transation cost and excution cost

  • 本文链接: https://dreamerjonson.com/2018/11/09/solidity-5/

  • 版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!

solidity智能合约[5]——一笔交易详解

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:solidity智能合约[5]——一笔交易详解-创新互联
URL分享:http://scyanting.com/article/gsedo.html