以太坊上发行ERC20代币

ERC20 代币生成

环境

虚拟主机: ubuntu 18虚拟机

宿主主机: win10; ip:192.168.0.160

1.部署以太坊

1.1 安装GO

安装go,并编译geth

将下载好的golang包上传到root目录。

sudo apt-get install -y build-essential golang

1.2 下载源代码编译

git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth
# 添加快捷访问
cp build/bin/geth /usr/bin/geth

1.3 部署节点

1.3.1 创建节点目录

创建数据存储目录,分别为8001-8002以此类推

mkdir -p /node/node8001
mkdir -p /node/node8002

1.3.2 创建账号

geth  account  new - -datadir  "/node/node8001"  

执行后会要求设置账户的unlock口令,请记住配置的口令. 会生成一个密码保存文件夹(keystore), 内含一个密码保存文件,名字如下

UTC--2018-12-13T02-58-07.160085261Z--f8c5cad127f7053e143204450c18b6bc1f353c9b

1.3.3 生成创世文件

生成文件名为genesis.json的文件, 内容如下:

{
"config": {
    "chainId": 115,
    "homesteadBlock": 0,
    "byzantiumBlock": 12,
    "eip155Block": 0,
    "eip158Block": 0
},
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty":"0x0001",
"alloc":{"f8c5cad127f7053e143204450c18b6bc1f353c9b":{"balance":"990000000000000000000000000000"}},
"timestamp":"0x5b3bcd2f",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData":"",
"gasLimit":"0xffffffff"
}

1.3.4 根据创世文件信息,创建节点

/usr/bin/gethfw --datadir /node/node8001 init ./genesis.json
/usr/bin/gethfw --datadir /node/node8002 init ./genesis.json

1.3.5 启动节点

单独启一个终端来启动节点

/usr/bin/geth --targetgaslimit 4294967295 --identity "node8001" --datadir /node/node8001  --port 8801 --rpc --rpcaddr "0.0.0.0" --rpcport 8145 --rpccorsdomain "http://192.168.0.160:8081" --rpcapi "admin,debug,eth,net,personal,shh,txpool,web3"  --networkid 115  --nodiscover --mine

单独启一个终端来启动节点

/usr/bin/geth --targetgaslimit 4294967295 --identity "node8002" --datadir /node/node8002  --port 8802 --rpc --rpcaddr "0.0.0.0" --rpcport 8546 --rpccorsdomain "http://192.168.0.160:8081" --rpcapi "admin,debug,eth,net,personal,shh,txpool,web3"  --networkid 115 --nodiscover

此时,节点已经启动OK, 我们可以来查看一下节点状态了:

先前的两个终端就让他们挂在那里执行程序,另外开启一个终端,执行如下命令:

/usr/bin/gethfw attach ipc:/node/node8001/geth.ipc

然后会自动进入控制台了, 输入admin命令,可以查看当前链的信息,输出类似如下:

{
datadir: "/node/node8001",
nodeInfo: {
? enode: "enode://9e7c5f604f49638524b3d95078bb4644e4e379f6fa532094ccd1bbd9c975e81a1[email protected][::]:8801?discport=0",
? ip: "::",
? listenAddr: "[::]:8801",
? name: "Geth/node8001/v1.8.3-stable/linux-amd64/go1.10.4",
? ports: {
? discovery: 0,
? listener: 8801
? },
? protocols: {
? eth: {
? config: {...},
? difficulty: 78940001,
? genesis: "0xa6ebc49109d376f9afc21fb6ab9d4b62da2442c6d81e6ab90633a03e851693d6",
? head: "0xafe6c156e1920039334e4a470aa80c7d8ad9202fdf62a38ed2ec27e076685949",
? network: 115

......

至此, 以太坊私链算是启动完成了。

2.部署Remix

参考https://github.com/ethereum/remix-ide 文档, 开始部署。

2.1 下载Remix-IDE源码

git clone https://github.com/ethereum/remix-ide.git

2.2 安装Remix-IDE

cd remix-ide

2.3 启动Remix-IDE

npm start

此时,就可以在localhost:8080访问RemixIDe了。

3.部署ERC20代币

通过在浏览器打开localhost:8080地址, 进入Remix-IDE.

3.1 在新建智能合约

加入如下代码

pragma solidity ^0.4.16;

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }

contract TokenERC20 {
    string public name;
    string public symbol;
    uint8 public decimals = 18;  // 18 是建议的默认值
    uint256 public totalSupply;

    mapping (address => uint256) public balanceOf;  //
    mapping (address => mapping (address => uint256)) public allowance;

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Burn(address indexed from, uint256 value);

    function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public {
        totalSupply = initialSupply * 10 ** uint256(decimals);
        balanceOf[msg.sender] = totalSupply;
        name = tokenName;
        symbol = tokenSymbol;
    }

    function _transfer(address _from, address _to, uint _value) internal {
        require(_to != 0x0);
        require(balanceOf[_from] >= _value);
        require(balanceOf[_to] + _value > balanceOf[_to]);
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }

    function transfer(address _to, uint256 _value) public {
        _transfer(msg.sender, _to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        return true;
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }

    function burn(uint256 _value) public returns (bool success) {
        require(balanceOf[msg.sender] >= _value);
        balanceOf[msg.sender] -= _value;
        totalSupply -= _value;
        Burn(msg.sender, _value);
        return true;
    }

    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        require(balanceOf[_from] >= _value);
        require(_value <= allowance[_from][msg.sender]);
        balanceOf[_from] -= _value;
        allowance[_from][msg.sender] -= _value;
        totalSupply -= _value;
        Burn(_from, _value);
        return true;
    }
}

3.2 编译智能合约

在compile页中, 选中Auto Compile, 进行自动编译智能合约, (应用不会出现红色错误提示)

3.3 部署合约

在Run页中, Environment中,选中inject web3(前提是, 已经安装好了metamash插件,并且已经导入了账号,配置后账号环境)。

在account项, 选择一个有币的账号

最后通过点击deploy按钮来部署合约, 在部署前, 可填写构造函数的参数如 20000000, "TESTINT COIN", "TC"

最终完成部署

原文地址:https://www.cnblogs.com/freebird92/p/10115274.html

时间: 2024-11-09 13:51:41

以太坊上发行ERC20代币的相关文章

在以太坊上发行自己的代币

简单代币开发 代币(Token): 代币单纯从其名字上理解的话,就是一种可以替代通用货币起到交换媒介作用的东西,可以是商场积分,可以是游戏币,也可以是筹码.但是在区块链中,就不完全是那么回事了,区块链中的代币或者说Token通常指的是具有流通性的加密数字权益证明,例如比特币.以太币等数字货币都属于代币 从以上定义可以得知代币的三个要素: 权益证明:一种数字形式存在的权益凭证,代表一种权利,一种固有的内在价值和使用价值 加密:为了防止篡改,保护隐私,不可以复制等 较高的可流通性(去中心化):可以进

基于以太坊创建自己的代币(小白版)

写在前面 不可否认做为一个web前端工程师,转型区块链,"智能合约开发"是最好的一个切入点了.嗯,那么就做一个以太坊智能合约开发的系列教程吧.不奢望转型,只为了记录和见证自己的成长.这一篇算是引子.序或者叫前传. 本文会详细的介绍创建一个基于以太坊ERC20代币的整个流程,旨在帮助没有任何基础的小伙伴顺利创建自己的代币,并有一个较为完整的从开发部署到交易测试的体验. 一.开发前的准备 1.首先需要给你的chrome浏览器安装一个metaMask钱包插件. metaMask的安装有些偏离

虚拟货币,区块链,交易所,活动送以太坊两个,AAT币400,空投2000万新年糖果,进电报88AAT

送两个以太坊. 第一步注册https://www.aacoin.com/m/#/activeLogin?invitedCode=OoUARUcGEb邀请15人有2个以太坊和约400aat第二步拿糖果88个全球第一个基于区块链的收藏品在线拍卖社区,由真格基金等众多一线风投投资,同时与国内最大的收藏品公司达成战略合作,服务百万高端用户.目前通过MyCandyBag限时空投2000万新年糖果AAT,免费领取,先到先得.入群即送88个空投糖果:http://www.mycandybag.net/aat/

区块链-如何在以太坊上制作自己的数字货币

copy from https://www.ethereum.org/token Create your own CRYPTO-CURRENCY with Ethereum The Coin We are going to create a digital token. Tokens in the Ethereum ecosystem can represent any fungible tradable good: coins, loyalty points, gold certificate

EOS绑定以太坊地址

最近接EOS代币后有人告诉我说要先注册EOS地址,不然一年后会变成废币,网上搜了下教程不清楚.我用的私钥文件绑定,写一下: EOS的变态规定:eos众筹一年,这一年时间内 eos使用的是 ETH 上面的 erc-20代币,在众筹结束后的23小时内,eos在 eth上面的erc-20代币将会被锁定,锁定之后,需要把代币的持有情况转移到 EOS原生公链上面.不同的公链,需要在 EOS原生公链上申请公钥和密钥,然后和你 ETH上面的地址进行绑定,只有这样操作,你之前在 ETH的ERC-20的 EOS代

第18讲 | 智能合约与以太坊

在前面的文章里,我们介绍了区块链的核心技术,也穿插介绍了一些项目.然而每个区块链都有自己的特色,接下来我们将针对每个项目进行详细讲解.今天我们就来讲讲智能合约和以太坊项目. 今天我们从智能合约这个概念入手,聊聊什么是以太坊项目以及它的发展历史.最后还会介绍几款钱包给你,希望通过今天文章的讲解,你也可以尝试在以太坊上编写简单的智能合约. 智能合约的概念 不同于法律意义上的合约概念,区块链领域的合约表达的是可以“自治自理”的 计算机协议,这套协议具有自我执行.自我验证的属性. 如果完全从技术角度来看

【免费下载】全套最新 03区块链以太坊理论 视频教程+教学资料+学习课件+源代码+软件开发工具

03区块链以太坊理论视频教程 网盘地址: 链接:https://pan.baidu.com/s/1Lf9QB2dl2Zk4FeWOvaup\_A 提取码:ug7u 加公众号 获取更多新教程 教程目录大纲 ./03区块链以太坊理论 ├── 视频 │?? ├── 001_以太坊课程简介.mp4 │?? ├── 002_以太坊简介(一).avi │?? ├── 003_以太坊简介(二).avi │?? ├── 004_以太坊简介(三).avi │?? ├── 005_以太坊简介(四).avi │??

以太坊代币合约详析

以太坊代币 在以太坊系统中,存在作为基础货币的 Ether(以太),以及同样可以作为货币使用的 Token(代币). 以太坊与其他加密货币的主要不同在于,以太坊不是单纯的货币,而是一个环境/平台.在这个平台上,任何人都可以利用区块链的技术,通过智能合约来构建自己的项目和DAPPS(去中心化应用). 如果把以太坊理解成互联网,DAPPS则是在上面运行的网页.DAPPS是去中心化的,意味着它不属于某个人,而是属于一群人.DAPPS发布的方式通常是采用被称为 ICO 的众筹方式.简单来说,你需要用你的

Erc20Tokens:以太坊代币数据集

Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java.Python.Php.NodeJs.C#等各种开发语言查询主流ERC20代币的相关数据.下载链接:ERC20代币数据集. 1.数据集概述 以下是ERC20代币数据集中部分代币的图标示意: Erc20Tokens数据集的的当前版本为1.0.0,主要文件清单参见:http://sc.hubwiz.com/codebag/erc20-tokens-dataset