所以我有一个合同,允许您将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令牌的返还%。
答案 0 :(得分:1)
以电子商务业务为例。所以我的做法是:
用户会购买代币,购买将以太币发送到您的 ERC-20 合约。 Ether 和您的代币之间的比率完全取决于您,因为它与业务相关,而不是 Ether 本身。
在这个商业案例中,假设我们为每个以太币提供 100 个代币。用户将 2 个 Ether 传递给合约,然后将 200 个商业代币放入合约的
mapping(address => uint) accounts
。
鉴于此,以下代码将为您提供 200:
accounts[customer_address] //(returns 200)
然后你会有另一份合同,比如说购买给定的物品。你只需要从那个地址调用这个智能合约购买函数。然后这个函数负责调用你的 ERC-20 合约来检查用户是否有足够的资金考虑他/她的地址。如果是这样,那么您的合同会将给定数量的代币转移到您的 ERC-20 合同到可用的代币或您想要的另一个钱包,基本上是将用户(地址)代币转移到您决定的另一个地址。
这样您的用户就可以使用您之前购买的代币,甚至没有考虑过以太币。 请记住,必须支付 GAS 费用。因此,要么您为此付费,要么您的客户(将其包含在商品价格中)。
希望这对有同样问题的人有所帮助:)
答案 1 :(得分:0)
您的合同只是另一个地址,因此,可以将令牌发送到您的合同中。但是您不能使用以太币发送相同的方式(即使用付费功能)发送它们。您必须使用ERC-20令牌的转移方法将令牌转移到合同地址。要将令牌从合同发送给其他人,您必须从合同内部进行转账,除非您执行类似的操作,例如为您的帐户提供大量津贴,但是我不建议这样做。 this帖子中说明了如何精确地从其他合同中调用ERC-20中的方法。