95 波场如何approve给合约地址

以下代码是波场JavaScript的授权方法,这个目前来说是没问题,但是我想要让toAddress不是个人地址,而是合约地址。

00000.jpg

因为合约地址没有私钥,所以我想要用合约创建者来执行transferfrom函数

我想要知道怎么改写toAddress这个合约的transferfrom的Solidity代码。

请问这么写有问题吗

function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
require(sender == owner, "Only owner can use transferFrom");
require(_allowances[sender][msg.sender] >= amount, "Allowance exceeded");
_allowances[sender][msg.sender] -= amount;
_transfer(sender, recipient, amount);
return true;
}

请先 登录 后评论

最佳答案 2023-09-02 15:46

你的概念理解错了,javascript code 跟你理解的一样,把 toAddress 改成合约地址就可以了;
不过合约 (toAddress)的 solidity代码不需要有transferfrom function, 需要的是一个类似于 transfer 的函数。我们可以把这个函数叫做 transferTokenA,他的代码应该类似于下面:

contract YourContract {
    // Define tokenA here
    
    function transferTokenA(address recipient, uint256 amount) public {
        tokenA.transfer(recipient, amount);
    }
}
请先 登录 后评论

其它 2 个回答

zen

看你描述,概念搞错了..
toContract内部 是调用token.transferFrom,
而不是修改代币的transferFrom, (除非黑币...)

请先 登录 后评论
Tiny熊
  擅长:智能合约,以太坊
  1. A 授权(approve)给 B , B 就可以执行 transferFrom 来转移 A 的币。
  2. 若 B 是一个合约, 则在 B 的某个函数(假设叫tranferXX())代码里调用 transferFrom , 你的JavaScript 代码调用 tranferXX() 即可。
请先 登录 后评论
  • 3 关注
  • 0 收藏,2486 浏览
  • hjl8419 提出于 2023-08-26 17:21