web3.js中的Glossary

178 阅读2分钟

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"}],
    }
]