繁体   English   中英

合约部署在Polygon(Mumbai/Mai.net)上如何在WETH接受支付?

[英]How To Accept Payment In WETH When The Contract Is Deployed on Polygon (Mumbai/Mainnet)?

我正在构建一个问答游戏支付系统,用户可以在其中支付价值 5 美元的 ETH 来玩。 下面是一份合同和我认为我遇到麻烦的地方

 // SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.9.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; contract Trivia is Ownable { IERC20 public WETHContract; uint256 playingFee = 440000000000000; // 0.00044 ether; // ~ $5 USD / 440000 GWei / 440000000000000 Wei constructor(IERC20 _LinkContract) public payable { WETHContract = _WETHContract; } receive() external payable { // what to do when receiving funds... } function payToPlay() public payable { require(WETHContract.transferFrom( msg.sender, address(this), playingFee ), "You do not have enough WETH To Pay" ); // (bool sent, ) = payable(address(this)).call{value: playingFee}(""); // require(sent, "Failed to send fee"); } }

部署脚本

 const Trivia = artifacts.require("Trivia"); const WETHContractMumbaiTes.net = "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa" module.exports = async (deployer,.networks, accounts) => { await deployer.deploy(Trivia, WETHContractMumbaiTes.net); }

我能够编译合同并在孟买 tes.net 上成功部署它。

但是当我尝试与Remix IDE 中的合约交互时(在连接到 Metamask 并切换到 Mumbai tes.net 之后),为了付费玩游戏,我收到以下错误:

在此处输入图像描述

Gas 估计错误。 我不知道我做错了什么。 我确保我的钱包里有足够的 WETH。 我什至换了另一个代币(LINK)并尝试用 LINK 代币支付,但没有成功。

请专业人士告诉我我做错了什么。 我已经坚持了好几天了。

友好地,

您是否批准了代币转移,调用了WEth合约上的approve方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM