我可以在我的智能合约中使用自定义的ERC-20吗?

时间:2018-11-14 21:17:36

标签: solidity smartcontracts erc20

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

示例:

实用性^ 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;

function percentRate()公共视图返回(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);
    }

我希望使用我的自定义ERC20令牌向用户发送合同,而不是返回ETH,以获取ERC20令牌的返还%。

2 个答案:

答案 0 :(得分:1)

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

  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 费用。因此,要么您为此付费,要么您的客户(将其包含在商品价格中)。

希望这对有同样问题的人有所帮助:)

答案 1 :(得分:0)

您的合同只是另一个地址,因此,可以将令牌发送到您的合同中。但是您不能使用以太币发送相同的方式(即使用付费功能)发送它们。您必须使用ERC-20令牌的转移方法将令牌转移到合同地址。要将令牌从合同发送给其他人,您必须从合同内部进行转账,除非您执行类似的操作,例如为您的帐户提供大量津贴,但是我不建议这样做。 this帖子中说明了如何精确地从其他合同中调用ERC-20中的方法。