返回介绍

methods - 为合约方法创建交易

发布于 2020-01-19 11:52:17 字数 1960 浏览 2034 评论 0 收藏 0

为指定的合约方法创建一个交易对象,以便使用该交易对象进行调用、发送或估算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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文