使用ABI查询以太坊合约或与之互动

时间:2018-06-19 12:41:27

标签: ethereum abi contract

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

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

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

1 个答案:

答案 0 :(得分: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完成的。