【问题标题】:How can interact with custom payable function and metamask & etherjs?如何与自定义支付功能和 metamask & etherjs 交互?
【发布时间】:2021-09-04 11:19:44
【问题描述】:

我正在尝试从前端与 etherjs 库 metamask 进行交互:

"ethers": "^5.3.1",

基于以下网站上的示例: https://metamask.github.io/test-dapp/

但事实是,查看文档和示例中的内容,具体来说,没有使用“合约功能”的示例

我的合同中有这个功能:

function storeName() external payable {

但是我在 dapp 上的所有例子都是这样的

const result = await ethersProvider.getSigner().sendTransaction({
      to: "0x7aE5277F207E1a288C9ad03A829AfC6035Da0B",
      value: "0x29a2241af62",
      gasLimit: 6721975,
      gasPrice: 20000000000,
    });
console.log(result);

https://docs.ethers.io/v5/api/contract/contract/#Contract--methods

查看文档,我找不到指定它调用方法 storeName

的方法

【问题讨论】:

  • 也许,使用另一个库是个好主意吗?像 web3js 一样?

标签: solidity metamask ethers.js


【解决方案1】:

请这样做:

    await window.ethereum.enable();
    const provider = new ethers.providers.Web3Provider(window.ethereum);
    const signer = provider.getSigner();
    const contract = new ethers.Contract(smartContractAddress, abi, signer);
    const result = await contract.storeName({
         to: "0x7aE5277F207E1a288C9ad03A829AfC6035Da0B",
         value: "0x29a2241af62",
         gasLimit: 6721975,
         gasPrice: 20000000000,
    });
    console.log(result);

【讨论】:

  • 和我的例子中的代码一样,看不到函数名storeName()的位置在哪里
  • 我终于用 web3js 制作了
猜你喜欢
  • 2021-08-03
  • 2022-09-30
  • 1970-01-01
  • 2022-11-10
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2018-12-20
相关资源
最近更新 更多