目录
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 方法名