• Posts tagged "token"

Blog Archives

Ropsten测试网络部署自己的Token

比特币吸金之道系列文章,由计算机黑客发明的网络货币,无国界,无政府,无中心。没有政府滥发货币,没有通货膨胀。在全球计算机网络中,自由的实现货币兑换和流通。

本系列文章只讲程序和策略,不谈挖矿…

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/bitcoin-eth-ropsten-token

前言

2017年,不断出现各种ICO项目,大量的币其实都是基于以太坊的公链,包装一个智能合约,远看很高深,近看很简单。以太坊作为区块链2.0时代的奠基者,功不可没,确实极大程度上推动了数字货币的兴起。

作为一个程序员,要关注新的领域和新的技术,区块链就是需要了解的一个新领域。自己把发币流程操作一遍,会有新的感悟。Ropsten是一个以太坊的测试网络,我们在这个网络进行发币实验。

目录

  1. 以太坊上发token
  2. 完成转账交易

1. 以太坊上发token

基于以太坊的公链发币,真的不难!工具已经被高度自动化地集成了,唯一花时间的事情,就是我们了解发token的操作原理。那么接下来,就让我们开始发token吧。

直接在正式的以太坊网络发币是要花钱的,我们先在测试网络上,把这个流程跑一遍,之后再用正式网络进行发币。

在以太坊上发token,操作步骤有如下几步进行:

  1. 打开VPN,建立国际访问通道。
  2. 打开Chrome浏览器,安装MetaMask插件
  3. 在MetaMask中,切换到Ropsten Test Network,并创建钱包
  4. 从测试网络中,获得测试的eth。
  5. 打开Remix 在线合约编程环境
  6. 编写 solidity 智能合约代码
  7. 编译,配置,提交ABI到测试网络
  8. 切换到 MetaMask 进行付费
  9. 生成合约,发币成功。

我们开始具体执行每个步骤的操作:

1.1 打开VPN,建立国际访问通道。

程序员都知道,不多说了。VPN服务器搭建,请参考文章在Ubuntu上安装IPSEC VPN服务在Ubuntu上安装PPTP VPN服务

1.2 打开Chrome浏览器,安装MetaMask插件。

安装好后,启用插件就行了,在chrome浏览器右上角会出现的一个小狐狸的图标。

1.3 在MetaMask中,切换到Ropsten Test Network,并创建钱包

打开MetaMask钱包,进行注册和登录。

然后,从 Main Ethereum Network 切换到测试网络 Ropsten Test Network 连接成功。

1.4 从测试网络中,获得测试的eth。

由于发token是需要进行付费(Gas),我们要先从测试网络中获得ETH。在MetaMask中,点击buy,就会弹出一个新的网页,用于获得测试网络中的token。点击faucet栏目下面的,request 1 eth from faucet的按钮,申请ETH。在user栏目中,会自动匹配我们的钱包地址(address)和余额(balnacen)。

在最下面transcation栏目中,会产生一笔ETH的转账信息,从faucet测试网络中,生成一笔转账到我们自己的钱包中。同时,我们可以查看这笔的完整转账信息。

我们多点几次,在钱包中就会获得多个ETH,现在我们钱包就4个ETH了,就可以用来付发币的费用了。

1.5 打开Remix 在线合约编程环境

Remix是一个在线的以太合约的编程环境,https://remix.ethereum.org/

Remix分为4个部分:

  • 文件管理:用于管理文件结构
  • 代码编写:是一个编辑器,用于编写 solidity 代码
  • 日志输入:运行可以后,用打印出运行日志
  • 命令控制:支持各种命令,如 编译,运行,发布等

1.6 编写 solidity 智能合约代码

我们可以定义一个自己的智能合约,如果不熟悉,可以找到一个已经发币的合约的例子,基于他合约代码的改一下。从etherscan上找一个合约。

复制它的代码,然后改一下名字。:-) (这种做法仅限于测试用,你不知道他的合约中有没有什么漏洞,所以最好还是仔细读读代码)


// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20
pragma solidity ^0.4.23;

contract Token {

    uint256 public totalSupply;  // 供给总量
    function balanceOf(address _owner) public constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

library SafeMath { // 安全计算函数
  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c>=a && c>=b);
    return c;
  }
}

// 省略

contract FENS is StandardToken { // 符合ERC20标准

    function () public {
        revert();
    }

    using SafeMath for uint256;
    string public name = "fens.me Token";  
    uint8 public decimals = 18;
    string public symbol = "FENS";

// 省略

在代码中,contract FENS is StandardToken 这里,定义自己的合约的名字,叫FENS,同时简称symbol叫FENS。基于以太坊普遍要求遵守的规律,都符合ERC20的标准,有统一的命名规范,使用一致的变量和函数等,方便之后的交易所或钱包等其他应用的接入。

1.7 编译,配置,提交ABI到测试网络

接下来,通过reminx的命令控制的操作界面,进行是代码编译,做配置定义总发行量,然后生成ABI(Application Binary Interface)文件,用于部署到以太坊网络中。

按照上图所示,从左到右的操作顺序。

右1图,写完代码后,使用Compile标签中,点击start to compile进行代码编译,如果有错误,会直接显示错误信息。

在2图,编译完成后,切换到Run标签,看到Account对应的地址为,MetaMask中钱包的地址,这个插件让操作变得方便。FENS下拉框,显示的是这个Token的名字,在Deploy右边有一个文本框,是需要我们设置总供给量的,我在这个填入1,000,000,000,那么Token的总发行量为1亿。点击Deploy按钮,进行程序部署。

在3图,切换到 MetaMask会提示付费,这是由于我们使用ETH的网络,每一次的操作对应底层操作来说,是会经过矿工打包和确认的过程,所以不管是新发token还是转账,都是需要给矿工支付一定费用的。这里我自己输入5 GWei,以目前我的ETH市场价,这个大约值7.85USD。因为是在测试网络,所以多点少点,都无所谓啦。然后点击SUMBIT,确认支付,矿工进行打包。

在Remix的日志界面,就出现程序进行打包的日志。

1.8 生成合约,发币成功。

通过上面的链接,我们查看在以太坊测试网络中的执行情况,生成合约地址为:0xc6b08f0d67948854dff544b2093ccf726b7b17fd”

回到MetaMask界面,选择 ADD TOKEN 把刚才的生成的合约地址加入到当前创建者的钱包中,这样在钱包中就会出现已生成的token。

同时,我们也可以在以太坊的测试网络中,查到这个token的情况,0xc6b08f0d67948854dff544b2093ccf726b7b17fd”

这样就实现了,合约生成,完成了发token的整理流程。

2. 转账交易

接下来,我们就是发刚刚发的FENS代币,进行转账,转给别人的账户。由于MetaMask没有太多的转账功能,那么还需要使用一个在线转账的工具myetherwallet,用来完成转账的操作。

导出私钥 & 新建钱包

  • Account1 钱包地址:0xbA390993F3Ee624528c7EE9F280e2656613c7A81
  • Account2 钱包地址:0x35C8aEC449a8dE933C2d4beEFCc4490933F9f122

在myetherwallet,选择Network Repsten(infura.io)测试网络上进行注册和登录

选择 Send Ether & Tokens 的标签,通过私钥的方式导入账户。

接下来进行转账,输入Account2的钱包地址,和转账数量,选择FENS的代币,并设置Gas的消耗。

网页上,会弹出查看交易确认的选项。点击Yes,就开始进行交易。

完成进行交易确认后,查看2个账户的信息,FENS币,Account1账户少了50000币,Account2账户中多的50000个币。

我们可以通过以太坊网络,找到这条确认的消息。

发Token听起来很Cool,其实操作一遍还是觉得很Cool。你要不要自己也来发个Token?新的视角和新的思考方式,一起迎接新的挑战吧。

转载请注明出处:
http://blog.fens.me/bitcoin-eth-ropsten-token

打赏作者