Glossary
json接口
json 接口是描述以太坊智能合约的应用程序二进制接口 (ABI)的 json 对象。
使用这个 json 接口 web3.js 能够使用 web3.eth.Contract 对象创建表示智能合约及其方法和事件的JavaScript 对象。
Functions:
type: "function", "constructor"(可以省略,默认为"function";"fallback"也可以,但在 web3.js 中不相关);
name: 函数的名称(仅存在于函数类型);
constant: true 如果函数被指定为不修改区块链状态;
payable: true 如果函数接受以太,默认为`false`;
stateMutability:具有以下值之一的字符串:pure(指定为不读取区块链状态)、view(和constant一样)nonpayable和payable(和payable一样);
inputs: 一个对象数组,每个对象包含:
name: 参数名称;
type:参数的规范类型。
outputs: 与相同的对象数组,inputs如果不存在输出,则可以省略。
Events:
type: 总是`"event"`
name:事件的名称;
inputs: 一个对象数组,每个对象包含:
name: 参数名称;
type:参数的规范类型。
indexed:true 如果该字段是日志主题的一部分,false 如果它是日志的数据段之一。
anonymous:true如果事件被声明为anonymous.
举例:
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;
contract Test {
uint a;
address d = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
constructor(uint testInt) { a = testInt;} //一个合约只有一个constructor(构造函数)
event Event(uint indexed b, bytes32 c); //创建一个事件Event
event Event2(uint indexed b, bytes32 c);//创建一个事件Event2
//创建一个方法 ,输入b,c 返回一个address类型
function foo(uint b, bytes32 c) public returns(address) {
emit Event(b, c);//触发事件
return d;
}
}
// would result in the JSON:
[
{
"type": "constructor"
"stateMutability": "nonpayable",
"inputs": [{"internalType":"uint256","name":"testInt","type":"uint256"}],
},
{
"type": "event"
"name": "Event",
"inputs": [{"indexed":true,"internalType":"uint256","name":"b","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"c","type":"bytes32"}],
"anonymous": false,
},
{
"type": "event"
"name": "Event2",
"inputs": [{"indexed":true,"internalType":"uint256","name":"b","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"c","type":"bytes32"}],
"anonymous": false,
},
{
"type": "function"
"name": "foo",
"stateMutability": "nonpayable",
"inputs": [{"internalType":"uint256","name":"b","type":"uint256"},{"internalType":"bytes32","name":"c","type":"bytes32"}],
"outputs": [{"internalType":"address","name":"","type":"address"}],
}
]