【问题标题】:Querying or interacting with Ethereum contracts using ABI使用 ABI 查询以太坊合约或与之交互
【发布时间】:2018-06-19 12:41:27
【问题描述】:

我有合同 ABI,我想查询合同。我知道存在用于此目的的 web3.js,但是我没有使用它。我想大致了解如何使用其 ABI 与已部署的合约进行交互。

  1. 还有其他方法可以使用ABI查询合约吗?
  2. 我正在使用 C++/Qt 进行编程,我想使用 ABI 查询合同。有什么想法吗?

我也使用 metamask 和 myetherwallet 来查询合约,但这不是我想要的。

【问题讨论】:

    标签: ethereum abi contract


    【解决方案1】:

    如果你有一个 ABI 和一个合约的地址,你可以在上面执行方法。

    我不确定您如何使用现有的 C++ 库在 C++ 中做到这一点。然而,在 Web3.py 中(在 Web3.js 中也是如此),在最基本的层面上,它是相当简单的:

    1. 使用 ABI 和合约地址创建合约实例
    2. 获取要运行的合约函数的实例
    3. 在合约方法上运行交易,使用任何参数
    4. 等待交易哈希 (tx_id)
    5. 使用 tx_id 获取收据。收据上有所有的东西,比如使用的气体、结果数据等。

    Python using Web3.py 中,这看起来像:

    contract_instance = web3.eth.contract(address, abi)
    contract_function = contract_instance.functions["contractMethodToRun"]
    tx_hash = contract_function(*params).transact(tx_dict)
    receipt = web3.eth.waitForTransactionReceipt(tx_hash)
    

    对于Web3.js 1.0,步骤几乎相同。

    对于 C++,here's a popular client。如你所知,以太坊上的大部分工作都是使用 Go、Node 或 Python 完成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2018-03-15
      • 2019-04-07
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多