使用 ABI 查询或与以太坊合约交互
Querying or interacting with Ethereum contracts using ABI
我有合同 ABI,我想查询合同。我知道存在 web3.js 用于此目的,但我没有使用它。我想大致了解如何使用其 ABI 与已部署的合约进行交互。
- 还有其他方法可以使用 ABI 查询合约吗?
- 我正在用 C++/Qt 编程,我想使用 ABI 查询合同。有什么想法吗?
我也用过metamask和myetherwallet查询合约,但不是我想要的
如果你有一个 ABI 和一个合约地址,你可以在上面执行方法。
我不确定您如何使用现有的 C++ 库在 C++ 中执行此操作。但是,在 Web3.py 中(在 Web3.js 中也类似),在最基本的层面上,它是相当简单的:
- 使用 ABI 和合约地址创建合约实例
- 获取你想要的合约函数实例运行
- 运行合约方法上的交易,带任何参数
- 等待交易哈希(tx_id)
- 使用 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.
完成的
我有合同 ABI,我想查询合同。我知道存在 web3.js 用于此目的,但我没有使用它。我想大致了解如何使用其 ABI 与已部署的合约进行交互。
- 还有其他方法可以使用 ABI 查询合约吗?
- 我正在用 C++/Qt 编程,我想使用 ABI 查询合同。有什么想法吗?
我也用过metamask和myetherwallet查询合约,但不是我想要的
如果你有一个 ABI 和一个合约地址,你可以在上面执行方法。
我不确定您如何使用现有的 C++ 库在 C++ 中执行此操作。但是,在 Web3.py 中(在 Web3.js 中也类似),在最基本的层面上,它是相当简单的:
- 使用 ABI 和合约地址创建合约实例
- 获取你想要的合约函数实例运行
- 运行合约方法上的交易,带任何参数
- 等待交易哈希(tx_id)
- 使用 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.
完成的