以太坊事务解析:从ABI:Application Binary Interface到input data和ABI.json

目录

ABI

合约代码

编译后节码

生成ABI.json

input

input解析

如何获取合约的ABI.json

方案1:DApp站点

         方案2:Etherscan API


ABI

ABI是Application Binary Interface的缩写,应用二进制接口,指明了一个智能合约的接口。智能合约部署到以太坊上时是把编译后的智能合约字节码放到区块链上的。

当合约被编译后,那么它的ABI也就确定了。

合约代码

pragma solidity ^0.4.4;
contract test { 
    string public a;
    function modify_a(string val) {
        a = val;
    }
}

编译后节码

经过编译之后,它的字节码如下:

6060604052341561000c57fe5b5b60e18061001b6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dbe671f146044578063efa3b144146067575bfe5b3415604b57fe5b60516098565b6040518082815260200191505060405180910390f35b3415606e57fe5b60826004808035906020019091905050609e565b6040518082815260200191505060405180910390f35b60005481565b60006005820260008190555060005490505b9190505600a165627a7a72305820e7910925075fb58319dd637b47520b821714dd11ad896cb6d8272151aff714690029

生成ABI.json

[
  {
    "constant": true,
    "inputs": [
 
    ],
    "name": "a",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "val",
        "type": "uint256"
      }
    ],
    "name": "modify_a",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "type": "function"
  }
]

这是一个json格式的数组,它包含两个对象,每个对象都对应着一个合约方法,这里因为a是public类型的,编译的时候会自动为它生成get()方法,所以这个合约实际是包含两个方法的。

参数含义解析:
>type  方法类型,包括function,constructor,fallback(缺省方法)可以缺省,默认为function

>name  方法名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeelTouch Labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值