Solidity

為使用者建立一個抽象合約來領取erc20代幣,遇到“配額不足”錯誤

  • May 11, 2022

我的目標是建構一個抽象合約並將特定的 erc20 令牌發送到其中,以便其他人可以通過 merkletree 驗證來聲明 erc20 令牌。但是,我在批准使用此 erc20 的契約時遇到問題。這是我的聲明功能。請幫我弄清楚如何分配津貼或其他方式。是否有實現目標的方法?

function claimTokens(IERC20 _token, uint256 amount, bytes32[] calldata merkleProof) public {
       uint256 erc20balance = _token.balanceOf(address(this));
       require(amount <= erc20balance, "balance is low");
       bytes32 leaf = keccak256(abi.encodePacked(msg.sender, amount));
       bool valid = MerkleProof.verify(merkleProof, merkleRoot, leaf);
       require(valid, "Chimpz: Valid proof required.");
       require(!claimed[msg.sender], "Tokens already claimed.");
       claimed[msg.sender] = true;
   
       emit Claim(msg.sender, amount);
       _token.transferFrom(address(this), msg.sender, amount);
   }

您應該能夠通過 transfer() 函式轉移代幣:

function transfer(address recipient, uint amount) external returns (bool);

轉讓不需要批准。

引用自:https://ethereum.stackexchange.com/questions/127966