1

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

例子:

pragma 稳固性 ^0.4.24;

/* * ---如何使用: * 1. 向智能合约地址发送任意数量的HYPER Tokens。* 2. 通过发送 0 次 HYPER 交易(每小时 1 次)来获取您的利润 * 3. 如果您没有提款并且赚取超过 200%,您只能在 200% 限额以上提款一次 */ contract 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() 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 代币的百分比作为回报。

4

2 回答 2

1

以电子商务业务为例。所以我这样做的方式是:

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

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

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

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

于 2021-04-04T20:46:22.580 回答
0

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

于 2018-11-15T04:14:30.143 回答