我如何将 eth 值发送到在 ethers.js 中支付的特定智能合约功能?

Posted

技术标签:

【中文标题】我如何将 eth 值发送到在 ethers.js 中支付的特定智能合约功能?【英文标题】:How would I send an eth value to specific smart contract function that is payable in ethers.js? 【发布时间】:2021-09-12 20:18:20 【问题描述】:

我正在尝试在只接受一个参数的智能合约上调用应付函数。

如何将 eth 值与函数调用一起发送到 ethers.js 中的该函数?文档似乎没有提供太多关于最佳方式的示例。

我的函数调用

const reciept = await contract.buyPunk(1001);

所有其他读写函数调用都按预期工作,但它调用了一个我尚未解决的应付函数。

【问题讨论】:

这能回答你的问题吗? How to test payable/external method with waffle and ethers.js 使用单元测试时,符号会有所不同,因为您在 chai 的框架内工作,不过感谢您的建议 【参考方案1】:
const options = value: ethers.utils.parseEther("1.0")
const reciept = await contract.buyPunk(1001, options);

通过 ethers.js 调用合约函数时,您可以在参数末尾传递一个选项对象。该对象可以设置value随交易一起发送。

此处的文档:https://docs.ethers.io/v5/api/contract/contract/#Contract-functionsCall

【讨论】:

非常感谢!这解决了它,是的,我确实在文档中看到了这一点,但不确定该对象应该包含哪些属性。您还可以在对象中指定 GasLimit 和价格,这非常酷。是一种很好的模块化方法

以上是关于我如何将 eth 值发送到在 ethers.js 中支付的特定智能合约功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ethers.js 与元掩码连接起来?

使用 Ethers.js 向智能合约发送静态调用

如何以编程方式将 ethers.js 库与 Rinkeby 连接?

如何使用 Ethers.js 制作自定义链连接按钮

Ethers.js,向智能合约汇款(接收功能)

ethers.js:provider.getGasPrice()