繁体   English   中英

我可以将我的自定义 ERC-20 与我的智能合约一起使用吗?

[英]Can I use my custom ERC-20 with my smart contract?

所以我有一个合同,允许你用 ETH 交换我的自定义 ERC20 代币。 我现在想将该自定义 ERC20 令牌与其他智能合约一起使用。 是否有某种方式我必须指定自定义令牌与 ETH?

例子:

pragma solidity ^0.4.24;

/* * ---如何使用: * 1. 向智能合约地址发送任意数量的 HYPER 代币。 * 2. 通过发送 0 次 HYPER 交易(每小时 1 次)来索取您的利润 * 3. 如果您不提款并且赚取超过 200%,则您只能提款一次超过 200% 的限额 */ 合约 HyperLENDtest {

using SafeMath for uint;
mapping(address => uint) public balance;
mapping(address => uint) public time;
mapping(address => uint) public percentWithdraw;
mapping(address => uint) public allPercentWithdraw;

函数percentRate() public view returns(uint) { uint contractBalance = address(this).balance;

    if (contractBalance < 100 ether) {
        return (20);
    }
    if (contractBalance >= 500 ether && contractBalance < 1000 ether) {
        return (40);
    }
    if (contractBalance >= 1000 ether && contractBalance < 2000 ether) {
        return (60);
    }
    if (contractBalance >= 2000 ether) {
        return (80);
    }

我不想返回 ETH,我想使用我的自定义 ERC20 令牌给用户发送到合约并获得 ERC20 令牌的回报百分比。

以电子商务业务为例。 所以我的做法是:

  1. 用户将购买代币,购买将以太币发送到您的 ERC-20 合约。 Ether 和您的代币之间的比率完全取决于您,因为它与业务相关,而不是 Ether 本身。
    在这个商业案例中,假设我们为每个以太币提供 100 个代币。 用户将 2 个 Ether 传递给合约,然后将 200 个商业代币放入合约的
    mapping(address => uint) accounts
    鉴于此,以下代码将为您提供 200:
    accounts[customer_address] //(returns 200)

  2. 然后你会有另一份合同,比如说购买给定的物品。 你只需要从那个地址调用这个智能合约购买函数。 然后这个函数负责调用你的 ERC-20 合约来检查用户是否有足够的资金考虑他/她的地址。 如果是这样,那么您的合约会将给定数量的代币转移到您的 ERC-20 合约中,以转移到可用的代币或您想要的另一个钱包,基本上是将用户(地址)代币转移到您决定的另一个地址。

通过这种方式,您的用户正在使用您之前购买的代币,甚至没有考虑过以太币。 请记住,必须支付 GAS 费用。 因此,要么您为它付款,要么您的客户会(将其包含在商品价格中)。

希望这可以帮助有同样问题的人:)

你的合约只是另一个地址,所以是的,你可以向你的合约发送代币。 但是您不能像发送以太币那样发送它们,即使用应付功能。 您必须使用 ERC-20 代币的转移方法将代币转移到合约地址。 并且要将合约中的代币发送给其他人,您必须从合约内部调用 transfer ,除非您执行诸如为您的帐户提供大量津贴之类的操作,但我不建议这样做。 这篇文章解释了如何从其他合约内部调用 ERC-20 中的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM