簡體   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