blockchain - 处理 WTRX 代币从智能合约中提取和存款
问题描述
您好,我想在我的智能合约中处理 WTRX(WETH,但在 tronchain 上)令牌。
deposit
似乎有效,但问题出在withdraw
和both
功能上,这两个失败了REVERT opcode executed.
.
在我打电话之前,withdraw
我已经从 WTRX 智能合约中批准了合约地址。
根据我的调查,我认为这是来自函数msg.sender.transfer(sad)
内部wtrx.withdraw
。
有人知道如何解决这个问题并使这个功能起作用吗?谢谢!
WTRX 合约可以在这里找到:https ://tronscan.io/#/token20/TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR/code
我的合约代码:
contract TestTransfer {
function deposit(address payable wtrxAddr) public payable{
WTRX wtrx = WTRX(wtrxAddr);
// TRX to WTRX Token
wtrx.deposit.value(msg.value)();
// Transfer TRX to caller
wtrx.transfer(msg.sender, msg.value);
}
function withdraw(address payable wtrxAddr, uint sad) public{
WTRX wtrx = WTRX(wtrxAddr);
// Transfer WTRX Token from owner to contract
wtrx.transferFrom(msg.sender, address(this), sad);
// WTRX Token to TRX
wtrx.withdraw(sad);
// Transfer TRX to caller
msg.sender.transfer(sad);
}
function both(address payable wtrxAddr) public payable{
WTRX wtrx = WTRX(wtrxAddr);
// TRX to WTRX Token
wtrx.deposit.value(msg.value)();
// WTRX Token to TRX
wtrx.withdraw(msg.value);
// Transfer TRX to caller
msg.sender.transfer(msg.value);
}
}
解决方案
推荐阅读
- javascript - 信任函数
- oracle - 更新 Oracle 默认配置文件
- java - IntellijIDEA 不显示注释描述
- javascript - 当我扩展 Array 类时,filter() 是错误的
- postgresql - 无法使用 Dropbox 作为 url 在 Heroku 中导入本地 pg_dump
- amazon-web-services - Ansible + AWS EC2 插件 + 用户名 + 动态清单文件上的 ssh 密钥
- wpf - 是否可以使用鼠标滚轮滚动 ScrollViewer 的内容?
- python - Scipy.integrate solve_ivp 的稳定性问题
- c# - ASP.NET Core 中的证书绑定
- bitwise-operators - 检查 0,1 和 1,0 模式是否存在 2 个位集