文章
问答
讲堂
百科图谱
线下集训
更多
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
如何在我的合约内调用一个已经部署的erc20合约的转账方法。给某个地址转账呢
0 条评论
分类:
以太坊
请先
登录
后评论
默认排序
时间排序
2 个回答
i am duck
- 划水
2021-08-18 16:16
我用了两种方法,分别是test和test1 ``` // SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.0.0/contracts/token/ERC20/ERC20.sol"; contract MockERC20 is ERC20{ constructor(string memory _name, string memory _symbol) public ERC20(_name, _symbol) { _mint(msg.sender, 100000000 * 10 ** 18); } } contract Test{ ERC20 erc20; constructor(ERC20 _erc20) public{ erc20 = _erc20; } function transferFrom(address _to,uint256 _amount) public{ erc20.transferFrom(msg.sender,_to,_amount); } } contract Test1{ address erc20; constructor(address _erc20) public{ erc20 = _erc20; } function transferFrom(address _to,uint256 _amount) public returns(bool){ bytes32 a = keccak256("transferFrom(address,address,uint256)"); bytes4 methodId = bytes4(a); bytes memory b = abi.encodeWithSelector(methodId,msg.sender,_to,_amount); (bool result,) = erc20.call(b); return result; } } ```
请先
登录
后评论
Ethereal
- Solidity智能合约开发工程师
2021-08-18 17:39
就是1楼的方法,在你的合约X的方法里写入调用ERC20合约的授权转账transferFrom接口,你得先在ERC20合约里给你的合约X的地址授权一定额度,再去调用包含transferFrom接口的方法就可以任意转账了
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
2
关注
收藏
1
收藏,
3713
浏览
xmenzp
提出于 2021-08-18 13:33
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: