【p2p、分布式,区块链笔记 Blockchain】truffle005 调用以太坊测试网上某个地址的合约

ABI

  • ABI(Application Binary Interface,应用二进制接口)是智能合约的接口定义,它描述了智能合约的函数和事件。对于以太坊区块链,ABI 是一个 JSON 格式的对象数组,它定义了如何与已部署的智能合约进行交互。

ABI 的作用:

  1. 合约交互: 当你使用 Web3.js 或其他以太坊库与智能合约交互时,ABI 告诉库如何构造正确的交易,调用合约中的方法,或解析事件和返回值。
  2. 输入和输出定义: ABI 明确描述了合约中函数的输入参数类型、输出类型、函数名称以及函数是否改变区块链状态(即是否需要支付 Gas)。

ABI 的组成部分:

ABI 通常包括以下信息:

  • 函数签名:合约中每个函数的名称和参数类型。
  • 函数类型
    • function: 普通函数,可能是只读(不修改区块链状态)或写入(会修改状态,需要 Gas)。
    • constructor: 构造函数,用于部署合约时调用。
    • event: 事件,用于通知某些操作已发生,通常可以在交易日志中捕获。
    • fallbackreceive:回退函数,当调用合约但没有指定函数时执行。
  • 输入和输出:函数参数的类型和顺序,以及返回值的类型。
  • 状态可见性:定义函数是否是 view(只读)或 pure(纯函数,不读取或修改状态),或者是否需要 Gas。

ABI 示例:

  • 假设有一个智能合约,定义了一个 getValue() 函数和一个 setValue(uint256) 函数,它们的 ABI 可能像下面这样:
[
    {
   
        "constant": true,
        "inputs": [],
        "name": "getValue",
        "outputs": [
            {
   
                "name": "",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
   
        "constant": false,
        "inputs": [
            {
   
                "name": "_value",
                "type": "uint256"
            }
        ],
        "name": "setValue",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    }
]

解释:

  1. getValue 函数

    • constant: true: 表明这是一个只读函数,不会修改区块链状态(即不需要 Gas)。
    • inputs: []: 没有输入参数。
    • outputs: 返回一个 uint256 类型的值。
    • stateMutability: view: 表示它是只读的函数。
  2. setValue 函数

    • constant: false: 表明这是一个可以修改区块链状态的函数(需要 Gas)。
    • inputs: 需要一个名为 _valueuint256 类型的输入参数。
    • outputs: 没有输出。
    • stateMutability: nonpayable: 表示这个函数不会接收以太币(ETH)。

如何获取 ABI:

  • 从编译合约时生成:当你使用 Solidity 编译器(如 solc 或 Remix)编译合约时,ABI 会自动生成。
    在这里插入图片描述
  • 从区块链浏览器获取:如果合约已经部署在区块链上(如以太坊主网或测试网),你可以通过区块链浏览器(例如 Etherscan)查找合约,通常 ABI 会在合约页面中提供。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fetch Contract ABI</title>
</head>
<body>

<h1>Fetch and Display Contract ABI</h1>
<p id="abiData">Fetching ABI data...</p>

<script>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值