【问题标题】:How ERC20 tokens control access to their functions?ERC20 代币如何控制对其功能的访问?
【发布时间】:2017-12-20 15:31:23
【问题描述】:

这是我的问题(基本上,我想知道我是对还是错):

首先,我们有标准的 ERC20:

contract ERC20Interface
{
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
.....
}

然后,在 CrowdSale 中,我们有一个派生自它的代币:

contract ICO is Ownable {
...
MyToken public m_token;
...
function ICO() public {
m_token = new MyToken();
...

然后众筹结束。带有购买它的所有人(地址)列表的代币成为“免费”的众售合约:

function finish() onlyOwner public {
if(goalReached()) {
    m_token.transferOwnership(m_addrOwner);

我的问题: 1. 为了让这个代币在交易所交易,我必须以某种方式向这些交易所提供代币的地址。我应该在哪里得到它? 2. 我说的对吗?它应该如何工作?

换句话说,如果一个代币是一个单独的合约,通过地址传递给 ICO 合约,我可以看到交易所在众售结束后如何交易它:它们拥有相同的地址。 但我在 Etherscan 上看到了很多众筹,它们在内部创建合约(如上面的代码 sn-ps)。在这种情况下,如何在众筹结束后使其“可交易”?

谢谢。

【问题讨论】:

    标签: ethereum


    【解决方案1】:

    大多数交易所只有在看到您的代币有价值的情况下才会支持您的代币。你必须联系交易所,他们会根据对你的代币的需求评估它是否值得。即使这样,他们也很可能会在上市前要求预先付款。

    例如,Bittrex 记录了他们的提交过程here。一旦您通过了他们的验证过程,他们就会提供免费列表(以及一些非免费服务)。其他交易所遵循类似的过程。

    当您部署代币合约时,您必须提供的您正在寻找的合约地址会返回给您的客户。如果您以某种方式丢失了客户端中的地址,您可以在 etherscan.io 上通过搜索代币名称/符号(假设您的代币合约遵循 ERC20 规范)或交易哈希来找到它。您也可以在代码中检索地址:

    function getTokenAddress() constant returns (address) {
      return address(m_token);
    }
    

    在交易所之外,您还可以通过简单地将代币合约地址添加到 Mist 或 Parity 等钱包并在地址之间发送代币来进行代币的私人转移。

    请注意,所有这些都与众筹无关。众筹是一个单独的合约,用于筹集资金并进行初始代币分配。

    【讨论】:

    • 谢谢,但您没有抓住重点。我的问题是:如果我从 CrowdSale 合约中创建 ERC20 合约,就像我在问题中的示例代码中所做的那样?如果 ERC20 合约没有单独的文件怎么办?在这种情况下如何获得地址?我的意思是,ERC20 合约是 Crowdsale 合约的成员。众筹结束——现在如何使用 ERC20 合约? etherscan 有很多 Crowdsales 这样做...
    • 您仍然可以通过在 etherscan.io 中按名称/符号搜索来找到它。您还可以使用 address() 获取代码中的地址。更新了答案。
    • 我同意在代码中获取地址,但问题是 - 在像 etherscan.io/address/… 这样的合约中,我看不到获取地址。看起来他们进行了众筹——仅此而已。他们如何将代币传递给交易所? Adn 我仍然无法理解“您仍然可以通过在 etherscan.io 按名称/符号搜索来找到它”部分。代币是在 CrowdSale 合约中创建的,它是一个类变量,为什么会在 etherscan 上?
    • 例如在这个合约中:etherscan.io/address/… - 很简单,可以确保永远不会返回代币的地址...
    • 另外 :) 抱歉有这么多问题。假设已经创建并部署了一个代币合约。然后在 CrowdSale 合约中我发出: tokenReward = Token(0x98E2750d38b1D24Ba6C503E9853DB69e7Cf78fe4);那不是新合同吧?它是对现有的引用吗?
    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2023-04-10
    • 2019-12-15
    • 2022-01-20
    • 1970-01-01
    • 2022-03-15
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多