代币兑换 迷你项目

本文介绍了一个简单的代币交换智能合约的构建过程,涉及两个ERC20合约:RareCoin和SkillsCoin,并详细说明了如何通过SkillsCoin来获取RareCoin的步骤。

这很具有挑战性

信不信由你,你现在已经掌握了构建一个非常简单的代币交易智能合约所需的所有基础知识!这是你的任务。

构建两个 ERC20 合约:RareCoinSkillsCoin(如果你愿意,可以更改名称)。任何人都可以铸造 SkillsCoin,但获得 RareCoin 的唯一方法是将 SkillsCoin 发送到 RareCoin 合约。你需要移除限制,允许所有人铸造 SkillsCoin。

以下是工作流程

  • mint() 将 SkillsCoin 铸造给自己
  • SkillsCoin.approve(address rareCoinAddress, uint256 yourBalanceOfSkillsCoin) 允许 RareCoin 从你那里提取代币。
  • RareCoin.trade() 这将导致 RareCoin 执行 SkillsCoin.transferFrom(address you, address RareCoin, uint256 yourBalanceOfSkillsCoin) 记住,RareCoin 可以通过 address(this) 知道它自己的地址。
  • RareCoin.balanceOf(address you) 应返回你最初为 SkillsCoin 铸造的代币数量。

记住,ERC20 代币(即合约)可以拥有其他 ERC20 代币。因此,当你调用 RareCoin.trade() 时,它应该调用 SkillsCoin.transferFrom 并将你的 SkillsCoin 转移到自己那里,即 address(this)。

如果你已存储 SkillsCoin 地址,它将如下所示

function trade(uint256 amount)
    public {
        // 一些代码
        // 你可以将已部署的 SkillsCoin 合约的地址作为参数传递给 RareCoin 合约的构造函数作为 'source'
        (bool ok, bytes memory result) = source.call(
            abi.encodeWithSignature(
                "transferFrom(address,address,uint256)",
                msg.sender,
                address(this),
                amount
            )
        );
        // 如果没有足够的批准或余额,这将失败
        require(ok, "调用失败");
        // 更多代码
}

在 Remix 中部署这些合约并测试它们是否正常工作。

如果你是 Solidity 新手,请留出几天时间。很多工程师因为余额存储在智能合约中而非钱包而感到困惑,因此需要一些时间来适应。此外,相信我,你会对跨合约调用感到困惑。

了解更多

请查看 区块链培训营,以了解更多关于智能合约开发和代币标准的信息。

  • 原文链接: rareskills.io/learn-soli...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/