methods - 为合约方法创建交易
优质
小牛编辑
130浏览
2023-12-01
为指定的合约方法创建一个交易对象,以便使用该交易对象进行调用、发送或估算gas。
调用:
myContract.methods.myMethod([param1[, param2[, ...]]])
可以使用以下语法获得指定方法的交易对象:
- 名称: myContract.methods.myMethod(http://cw.hubwiz.com/card/c/web3.js-1.0/1/4/7/123)
- 带参名称: myContract.methods'myMethod(uint256)'
- 签名: myContract.methods'0x58cf5f10'
这样就可以支持从javascript合约对象调用同名但参数不同的合约方法。
参数:
参数取决于在JSON接口中定义的合约方法
返回值:
Object: 交易对象,包含以下字段:
arguments
: Array - 之前传入方法的参数,可修改call
: Function - 用来调用只读的合约方法,在EVM直接执行而不必发出交易,因此不会改变合约的状态send
: Function - 用来向合约发送交易并执行方法,因此可以改变合约的状态estimateGas
: Function - 用来估算方法在链上执行时的gas用量encodeABI
: Function - 用来为合约方法进行ABI编码。
示例代码:
// 调用合约方法
myContract.methods.myMethod(http://cw.hubwiz.com/card/c/web3.js-1.0/1/4/7/123).call({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'}, function(error, result){
...
});
// 发送交易,使用Promise对象获取返回结果
myContract.methods.myMethod(http://cw.hubwiz.com/card/c/web3.js-1.0/1/4/7/123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.then(function(receipt){
// receipt can also be a new contract instance, when coming from a "contract.deploy({...}).send()"
});
// 发送交易,使用事件获取返回结果
myContract.methods.myMethod(http://cw.hubwiz.com/card/c/web3.js-1.0/1/4/7/123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.on('transactionHash', function(hash){
...
})
.on('receipt', function(receipt){
...
})
.on('confirmation', function(confirmationNumber, receipt){
...
})
.on('error', console.error);