美文网首页
基于以太坊发行代币TOKEN

基于以太坊发行代币TOKEN

作者: 会跳舞的机器人 | 来源:发表于2018-09-01 18:36 被阅读267次

    一、背景说明

    在2015年11月份,以太坊推出了目前通行的ERC20token标准,按照这个标准,每个团队都可以开发出自己的基于以太坊的代币,然后通过公开发售这些代币,筹集资金,这就是我们所说的ICO。

    具体来说,其实每一种代币本身就是一个智能合约,像其它智能合约一样运作,只是限定了合约内容:这个合约维护着相关的数据库,当外部账户或者合约账户发送消息要求从A转账到B,它就执行相应的操作。或者说,它就是一个账本。同时,它是兼容以太坊钱包的。所以团队只要照着ERC20写好程序,就能拥有自己的基于以太坊的代币。

    ERC20协议

    ERC20和代币一同出现, ERC20是以太坊定义的一个代币标准。是一种发行代币合约必须要遵守的协议,该协议规定了几个参数——发行货币的名称,简称,发行量,要支持的函数等,只有支持了该协议才会被以太坊所认同。

    ERC20标准代码如下:

    // https://github.com/ethereum/EIPs/issues/20
      contract ERC20 {
          function totalSupply() constant returns (uint totalSupply);
          function balanceOf(address _owner) constant returns (uint balance);
          function transfer(address _to, uint _value) returns (bool success);
          function transferFrom(address _from, address _to, uint _value) returns (bool success);
          function approve(address _spender, uint _value) returns (bool success);
          function allowance(address _owner, address _spender) constant returns (uint remaining);
          event Transfer(address indexed _from, address indexed _to, uint _value);
          event Approval(address indexed _owner, address indexed _spender, uint _value);
        }
    

    其中

    function totalSupply() constant returns (uint totalSupply);
    

    以上方法表示获取总的发行量

          function balanceOf(address _owner) constant returns (uint balance);
    

    以上方法表示获取_owner的账户余额

          function transfer(address _to, uint _value) returns (bool success);
    

    以上方法表示当前账户转_value数量的代币至_to

          function transferFrom(address _from, address _to, uint _value) returns (bool success);
    

    以上方法表示从_from账户转_value数量的代币至_to

          function approve(address _spender, uint _value) returns (bool success);
    

    以上方法表示允许_spender从你的账户转_value数量的代币

          function allowance(address _owner, address _spender) constant returns (uint remaining);
    

    以上方法表示_spender被允许从_owner提取的金额数量,是一个查询函数

          event Transfer(address indexed _from, address indexed _to, uint _value);
    

    以上事件在转账的时候被触发

          event Approval(address indexed _owner, address indexed _spender, uint _value);
    

    以上事件表示在调用approve方法时被触发

    二、环境准备

    前提:科学上网工具

    1、下载以太坊钱包

    进入ethereum下载钱包
    [图片上传失败...(image-3c8339-1535797918908)]

    2、选择测试网络

    由于在以太坊上部署执行智能合约是需要真实的ETH作为gas燃料费的,所以我们选择在测试环境进行,测试环境的ETH可以通过其他手段获取到

    打卡钱包主页面是长这样的,我们可以在开发——网络中选择Rinkeby - Test network测试网络
    [图片上传失败...(image-dd0df6-1535797918908)]

    3、创建账户

    点击上图中的ADD ACCOUNT,设置密码即可完成账户的创建
    [图片上传失败...(image-ace0ac-1535797918908)]

    4、获取测试ETH

    我们可以在https://www.rinkeby.io/#faucet中获取测试的以太币
    [图片上传失败...(image-1a5580-1535797918908)]
    获取的方式有三种,我选择的是Google Plus,操作步骤如下:

    进入https://plus.google.com/,没有账户的创建一个账号即可,新鲜事分享

    image
    在发布页面,将自已以太坊账户的地址复制到文本中发布
    [图片上传失败...(image-c6b612-1535797918908)]
    发布完成之后,在首页点击转发,进入转发详情页,复制详情页的URL
    [图片上传失败...(image-9566ef-1535797918908)]
    [图片上传失败...(image-95410d-1535797918908)]

    https://www.rinkeby.io/#faucet的输入框中填入上个步骤获取到的URL,再选择送币的类型,我们选择3 Ethers/8 hours,表示此次领取3ETH,8个小时之后可再次领取。

    [图片上传失败...(image-4fc2fc-1535797918908)]
    领取完之后,回到我们的钱包界面就可以看到3ETH已经到账了
    [图片上传失败...(image-607d3e-1535797918908)]

    此次交易转账在etherscan中也是能查询到的

    image

    三、编写&&部署智能合约

    在智能合约的界面中,我们选择部署一个新的智能合约
    [图片上传失败...(image-3ed459-1535798174106)]
    https://www.ethereum.org/token复制THE CODE下方的那段完整代码,粘贴到SOLIDITY CONTRACT SOURCE CODE栏目
    [图片上传失败...(image-8e5de2-1535798174106)]
    粘贴过去之后,它会自动编译,可以看到是有报错的,可能是语法和版本有冲突,我们按照提示把function TokenERC20改为constructor即可。

    [图片上传失败...(image-b62042-1535798174106)]

    在编译完成之后,我们填写好token的相关信息,再把下面的手续费拉到FASTER,这样做的原因是能更快的被打包,然后再点击DEPLOY,在弹出的界面中输入密码即可。

    接下来要做就是稍等几分钟等待合约部署完成
    [图片上传失败...(image-8c84df-1535798174106)]

    四、基于发行的代币在账户之间的转账

    我们可以在钱包中再创建一个账户,基于这两个账户之间做转账,当然,也可以转给你的同事朋友的账户地址
    [图片上传失败...(image-12692b-1535798174106)]
    点击左上方的SEND,在页面中选择填写好相关信息即可开始转账,在TO的输入框中输入收款方的账户地址,AMOUNT为此次转账的金额,在ETHER的一栏,我们选择自已发行的代币,同样的,手续费越高转账越快,点击SEND完成转账
    [图片上传失败...(image-f8eb93-1535798174106)]
    [图片上传失败...(image-98df9d-1535798174106)]
    可以看到,我们转入的1000MTK币已经到account2的账户中。

    五、思考

    通过上述步骤,我们可以发现基于以太坊发行代币是一件多么简单的事情,但是代币发行之后可以用来干嘛,怎么与我们的实际应用相结合,这才是我们需要思考的问题。

    相关文章

      网友评论

          本文标题:基于以太坊发行代币TOKEN

          本文链接:https://www.haomeiwen.com/subject/atvuwftx.html