如何使用 useDapp 将 eth 存入以 solidity 编写的合约中

问题描述 投票:0回答:0

鉴于我在 remix 中有这个智能合约

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract DepositWithdraw {
    mapping(address => uint256) private balances;

    event Deposit(address indexed depositor, uint256 amount);
    event Withdrawal(address indexed withdrawer, uint256 amount);

    function deposit() public payable {
        balances[msg.sender] += msg.value;
        emit Deposit(msg.sender, msg.value);
    }

    function withdraw(uint256 amount) public {
        require(balances[msg.sender] >= amount, "Insufficient balance");
        balances[msg.sender] -= amount;
        payable(msg.sender).transfer(amount);
        emit Withdrawal(msg.sender, amount);
    }

    function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
}

remix ide 存款有效,但是当我尝试使用 useContractFunction 在 javascript 中使用 useDapp lib 存款时,我无法传递要存款的金额。当我被重定向到元掩码以接受交易时,没有显示金额。

我的前端代码:

import { Contract } from 'ethers';
import { Interface } from 'ethers/lib/utils';
import { useContractFunction } from '@usedapp/core';
const contractAddress = // my contract address;
const ABI = new Interface(
  //...copied contract ABI from remix
);

const contract = new Contract(contractAddress, ABI);
const { send } = useContractFunction(contract, 'deposit');
// send(value) will error that deposit function argument length is no correct (it want 0 arguments)

尝试添加带有选项的第三个参数到 useContractFunction 但没有成功。 当我不带参数调用 send 时,它将处理到元掩码但没有显示金额,只有 gas 费 有什么想法吗?

solidity ethers.js usedapp
© www.soinside.com 2019 - 2024. All rights reserved.