可以转移到智能合约

发布于 2025-01-25 04:04:06 字数 1376 浏览 4 评论 0 原文

我正在尝试使用以太货币将Matic转移到孟买测试网中的智能合约。

我正在使用Hardhat -Greater带来的最基本合同。 sol。

我一直遇到的错误是(在多边形孟买):

使用以太货币的客户端传输:

const provider = new ethers.providers.Web3Provider(ethereum);
const signer = provider.getSigner();
const erc20Contract = new ethers.Contract("0x0000000000000000000000000000000000001010", erc20abi, signer);
const parsedAmount = ethers.utils.parseUnits(amount.toString(), 'ether');
const transferTokens = await erc20Contract.transfer(contractAddress , parsedAmount);

entrer.sol:

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

import "hardhat/console.sol";

contract Greeter {
    string private greeting;

    constructor(string memory _greeting) {
        console.log("Deploying a Greeter with greeting:", _greeting);
        greeting = _greeting;
    }

    function greet() public view returns (string memory) {
        return greeting;
    }

    function setGreeting(string memory _greeting) public {
        console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
        greeting = _greeting;
    }
}

另外,当我手动尝试使用metamsk将Matic发送到智能合约时,它给了我相同的错误(仅是合同,而不是其他钱包)。 但是,如果我尝试其他令牌,它可以正常工作 - 我缺少什么吗?

I'm trying to transfer Matic to my smart contract in the Mumbai test net using ethers.

I'm using the most basic contract which comes with hardhat - Greeter. sol.

The error I keep getting is(in the polygonscan-mumbai):
enter image description here

The client side transfer using ethers:

const provider = new ethers.providers.Web3Provider(ethereum);
const signer = provider.getSigner();
const erc20Contract = new ethers.Contract("0x0000000000000000000000000000000000001010", erc20abi, signer);
const parsedAmount = ethers.utils.parseUnits(amount.toString(), 'ether');
const transferTokens = await erc20Contract.transfer(contractAddress , parsedAmount);

Greeter.sol:

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

import "hardhat/console.sol";

contract Greeter {
    string private greeting;

    constructor(string memory _greeting) {
        console.log("Deploying a Greeter with greeting:", _greeting);
        greeting = _greeting;
    }

    function greet() public view returns (string memory) {
        return greeting;
    }

    function setGreeting(string memory _greeting) public {
        console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
        greeting = _greeting;
    }
}

Also when I manually try to send Matic to the smart contract using metamsk it's giving me the same error(only to contracts, not other wallets).
But if I try other tokens it works fine - am I missing something?

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黯然#的苍凉 2025-02-01 04:04:06

您的合同需要实现接收() hallback()功能,以便能够接受网络的本机货币。

文档:

示例:

contract Greeter {
    // ...

    receive() external payable {
    }
}

Your contract needs to implement either receive() or fallback() function to be able to accept native currency of the network.

Docs: https://docs.soliditylang.org/en/v0.8.13/contracts.html#special-functions

Example:

contract Greeter {
    // ...

    receive() external payable {
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文