美文网首页我爱编程
搭建自己的以太坊网络发布erc20代币

搭建自己的以太坊网络发布erc20代币

作者: NO123456 | 来源:发表于2018-04-16 10:36 被阅读0次

    1.搭建自己的以太坊网络

    目前以太坊官方提供了两种网络:线上生产网络、测试网络。

    以太坊生产网络就是真正有价值的 的以太币运行的网络。我们使用的以太币进行转账、支付都是在生产网络上进行,每一个操作都需要消耗实实在在的ETH。智能合约也是部署在生产网络上,智能合约代码的执行调用都清晰可查,并且可供所有开发者调用。

    以太坊的测试网络也是官方提供专供用户来开发、调试和测试的。但是测试网络的节点也是全球化的,现在测试网络的区块数量也很大,执行速度较慢,不便于开发、调试。

    开始

    下面我们使用Geth安装自己的以太坊私有网络 PrivateNetwork。

    下载对应 go-ethereum 使用go语言开发

    Geth安装可以直接到官网下载对应的版本,进行安装:https://ethereum.github.io/go-ethereum/downloads/

    版本1.8.1

    配置创世币

    配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。创建eth目录,在该目录下新建创世块文件 gen.json

    {

    "config":{

     "chainId":9999,
    
     "homesteadBlock":0,
    
     "eip155Black":0,
    
     "eip158Black":0
    
    },
    
    "nonce":"0x0000000000000042",
    
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    
    "difficulty": "0x4000",
    
    "alloc": {},
    
    "coinbase":"0x0000000000000000000000000000000000000000",
    
    "timestamp": "0x00",
    
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    
    "extraData": "",
    
    "gasLimit":"0xffffffff"
    

    }

    字段名 类型
    mixhash 与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。.
    nonce nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。
    difficulty 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
    alloc 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。
    coinbase 矿工的账号,随便填
    timestamp 设置创世块的时间戳
    parentHash 上一个区块的hash值,因为是创世块,所以这个值是0
    extraData 附加信息,随便填,可以填你的个性信息
    gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

    init 执行然后执行命令初始化节点

    geth --datadir "./" init gen.json

    可以看到将节点数据写入了对应的文件夹中,此时当前目录下面会新增出两个文件夹geth和keystore

    geth中用以保存区块链的相关数据

    keystore中保存的是用户数据

    创建私有联

    输入命令:

    geth --datadir "./" --nodiscover console

    当看到Welcome to the Geth JavaScript console!的提示,说明已经启动成功

    在私有链上创建账户

    输入命令:personal.newAccount("123456")

    "123456"表示此账号的密码.

    0x71e71645f6f999a5b723f862fd2d8a590ca961c3

    输入命令eth.accounts可以查看新账户

    这样,通过这两个命令可以创建出多个用户出来

    若输入命令:personal.newAccount()

    则系统会提示你输入账号密码,并确认,最后会显示一个新生成的账号

    挖矿

    输入命令:miner.start() 或者miner.start(1)

    后者表示只使用一个线程工作,这样系统不会太卡

    查看主账户中以太币的数量

    输入命令: eth.getBalance(eth.accounts[0]) 结果不为0,说明挖矿成功

    Cmd发布合约

    合约代码

    pragma solidity ^0.4.16;

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

    contract TokenERC20 {

    // Public variables of the token
    
    string public name;
    
    string public symbol;
    
    uint8 public decimals = 18;
    
    // 18 decimals is the strongly suggested default, avoid changing it
    
    uint256 public totalSupply;
    
    // This creates an array with all balances
    
    mapping (address => uint256) public balanceOf;
    
    mapping (address => mapping (address => uint256)) public allowance;
    
    // This generates a public event on the blockchain that will notify clients
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    // This notifies clients about the amount burnt
    
    event Burn(address indexed from, uint256 value);
    
    /**
    
     * Constructor function
    
     *
    
     * Initializes contract with initial supply tokens to the creator of the contract
    
     */
    
    function TokenERC20(
    
        uint256 initialSupply,
    
        string tokenName,
    
        string tokenSymbol
    
    ) public {
    
        totalSupply = initialSupply * 10 ** uint256(decimals);  // Update total supply with the decimal amount
    
        balanceOf[msg.sender] = totalSupply;                // Give the creator all initial tokens
    
        name = tokenName;                                   // Set the name for display purposes
    
        symbol = tokenSymbol;                               // Set the symbol for display purposes
    
    }
    
    /**
    
     * Internal transfer, only can be called by this contract
    
     */
    
    function _transfer(address _from, address _to, uint _value) internal {
    
        // Prevent transfer to 0x0 address. Use burn() instead
    
        require(_to != 0x0);
    
        // Check if the sender has enough
    
        require(balanceOf[_from] >= _value);
    
        // Check for overflows
    
        require(balanceOf[_to] + _value > balanceOf[_to]);
    
        // Save this for an assertion in the future
    
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
    
        // Subtract from the sender
    
        balanceOf[_from] -= _value;
    
        // Add the same to the recipient
    
        balanceOf[_to] += _value;
    
        Transfer(_from, _to, _value);
    
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
    
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    
    }
    
    /**
    
     * Transfer tokens
    
     *
    
     * Send `_value` tokens to `_to` from your account
    
     *
    
     * @param _to The address of the recipient
    
     * @param _value the amount to send
    
     */
    
    function transfer(address _to, uint256 _value) public {
    
        _transfer(msg.sender, _to, _value);
    
    }
    
    /**
    
     * Transfer tokens from other address
    
     *
    
     * Send `_value` tokens to `_to` on behalf of `_from`
    
     *
    
     * @param _from The address of the sender
    
     * @param _to The address of the recipient
    
     * @param _value the amount to send
    
     */
    
    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;
    
    }
    
    /**
    
     * Set allowance for other address
    
     *
    
     * Allows `_spender` to spend no more than `_value` tokens on your behalf
    
     *
    
     * @param _spender The address authorized to spend
    
     * @param _value the max amount they can spend
    
     */
    
    function approve(address _spender, uint256 _value) public
    
        returns (bool success) {
    
        allowance[msg.sender][_spender] = _value;
    
        return true;
    
    }
    
    /**
    
     * Set allowance for other address and notify
    
     *
    
     * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
    
     *
    
     * @param _spender The address authorized to spend
    
     * @param _value the max amount they can spend
    
     * @param _extraData some extra information to send to the approved contract
    
     */
    
    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;
    
        }
    
    }
    
    /**
    
     * Destroy tokens
    
     *
    
     * Remove `_value` tokens from the system irreversibly
    
     *
    
     * @param _value the amount of money to burn
    
     */
    
    function burn(uint256 _value) public returns (bool success) {
    
        require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
    
        balanceOf[msg.sender] -= _value;            // Subtract from the sender
    
        totalSupply -= _value;                      // Updates totalSupply
    
        Burn(msg.sender, _value);
    
        return true;
    
    }
    
    /**
    
     * Destroy tokens from other account
    
     *
    
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
    
     *
    
     * @param _from the address of the sender
    
     * @param _value the amount of money to burn
    
     */
    
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
    
        require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
    
        require(_value <= allowance[_from][msg.sender]);    // Check allowance
    
        balanceOf[_from] -= _value;                         // Subtract from the targeted balance
    
        allowance[_from][msg.sender] -= _value;             // Subtract from the sender's allowance
    
        totalSupply -= _value;                              // Update totalSupply
    
        Burn(_from, _value);
    
        return true;
    
    }
    

    }

    合约代币在线编辑

    http://remix.ethereum.org/#optimize=false&version=soljson-v0.4.21+commit.dfe3193c.js

    编译合约[图片上传失败...(image-679e6f-1523846142637)]

    点击details

    复制

    [图片上传失败...(image-5ea8f-1523846142637)]

    var initialSupply = 18000 ;

    var tokenName = “”;

    var tokenSymbol = SW ;

    var tokenerc20Contract = web3.eth.contract([{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"}]);

    var tokenerc20 = tokenerc20Contract.new(

    initialSupply,

    tokenName,

    tokenSymbol,

    {

     from: web3.eth.accounts[0],
    
     data: '0x60606040526012600260006101000a81548160ff021916908360ff16021790555034156200002c57600080fd5b604051620012223803806200122283398101604052808051906020019091908051820191906020018051820191905050600260009054906101000a900460ff1660ff16600a0a8302600381905550600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160009080519060200190620000d8929190620000fb565b508060019080519060200190620000f1929190620000fb565b50505050620001aa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013e57805160ff19168380011785556200016f565b828001600101855582156200016f579182015b828111156200016e57825182559160200191906001019062000151565b5b5090506200017e919062000182565b5090565b620001a791905b80821115620001a357600081600090555060010162000189565b5090565b90565b61106880620001ba6000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100bf578063095ea7b31461014d57806318160ddd146101a757806323b872dd146101d0578063313ce5671461024957806342966c681461027857806370a08231146102b357806379cc67901461030057806395d89b411461035a578063a9059cbb146103e8578063cae9ca511461042a578063dd62ed3e146104c7575b600080fd5b34156100ca57600080fd5b6100d2610533565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101125780820151818401526020810190506100f7565b50505050905090810190601f16801561013f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015857600080fd5b61018d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105d1565b604051808215151515815260200191505060405180910390f35b34156101b257600080fd5b6101ba61065e565b6040518082815260200191505060405180910390f35b34156101db57600080fd5b61022f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610664565b604051808215151515815260200191505060405180910390f35b341561025457600080fd5b61025c610791565b604051808260ff1660ff16815260200191505060405180910390f35b341561028357600080fd5b61029960048080359060200190919050506107a4565b604051808215151515815260200191505060405180910390f35b34156102be57600080fd5b6102ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108a8565b6040518082815260200191505060405180910390f35b341561030b57600080fd5b610340600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108c0565b604051808215151515815260200191505060405180910390f35b341561036557600080fd5b61036d610ada565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103ad578082015181840152602081019050610392565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103f357600080fd5b610428600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b78565b005b341561043557600080fd5b6104ad600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610b87565b604051808215151515815260200191505060405180910390f35b34156104d257600080fd5b61051d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d01565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105c95780601f1061059e576101008083540402835291602001916105c9565b820191906000526020600020905b8154815290600101906020018083116105ac57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60035481565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156106f157600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610786848484610d26565b600190509392505050565b600260009054906101000a900460ff1681565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156107f457600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b60046020528060005260406000206000915090505481565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561091057600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561099b57600080fd5b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b705780601f10610b4557610100808354040283529160200191610b70565b820191906000526020600020905b815481529060010190602001808311610b5357829003601f168201915b505050505081565b610b83338383610d26565b5050565b600080849050610b9785856105d1565b15610cf8578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c91578082015181840152602081019050610c76565b50505050905090810190601f168015610cbe5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610cdf57600080fd5b5af11515610cec57600080fd5b50505060019150610cf9565b5b509392505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b6000808373ffffffffffffffffffffffffffffffffffffffff1614151515610d4d57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610d9b57600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401111515610e2957600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401905081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540114151561103657fe5b505050505600a165627a7a72305820d757f24e6e041c5e6b503dc67efa722c29fc302a9c9a1ca7f1491fc21bd5259b0029',
    
     gas: '4700000'
    

    }, function (e, contract){

    console.log(e, contract);
    
    if (typeof contract.address !== 'undefined') {
    
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    
    }
    

    })

    修改

    var initialSupply = ;

    var tokenName = ;

    var tokenSymbol = ;

    var initialSupply = 18000 ;

    var tokenName = ShaoWei ;

    var tokenSymbol = SW ;

    解锁部署帐号

    personal.unlockAccount(eth.accounts[0])

    粘贴部署代码

    到cmd

    [图片上传失败...(image-be22d0-1523846142637)]

    部署完成

    运行

    Miner.start()

    开始挖矿确认

    [图片上传失败...(image-39fa65-1523846142637)]

    部署完成

    [图片上传失败...(image-7e0b6d-1523846142637)]

    添加token完成

    交易已部署合约代币

    var abi = [ { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string", "value": "LiShaoWei" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256", "value": "8.999999999999999999223e+21" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8", "value": "18" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_value", "type": "uint256" } ], "name": "burn", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256", "value": "0" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "burnFrom", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "name": "", "type": "string", "value": "LSW" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" }, { "name": "_extraData", "type": "bytes" } ], "name": "approveAndCall", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" }, { "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "name": "", "type": "uint256", "value": "0" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "initialSupply", "type": "uint256", "index": 0, "typeShort": "uint", "bits": "256", "displayName": "initial Supply", "template": "elements_input_uint", "value": "9000" }, { "name": "tokenName", "type": "string", "index": 1, "typeShort": "string", "bits": "", "displayName": "token Name", "template": "elements_input_string", "value": "LiShaoWei" }, { "name": "tokenSymbol", "type": "string", "index": 2, "typeShort": "string", "bits": "", "displayName": "token Symbol", "template": "elements_input_string", "value": "LSW" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Burn", "type": "event" } ]

    Var Address = “0x7492367650F86185eCBDF798f4C409AEeB2DF521”

    varaccount_one=web3.eth.accounts[0]; varaccount_two=web3.eth.accounts[1]; personal.unlockAccount(eth.accounts[0]) metacoin.transfer.sendTransaction(account_two,100,{from:account_one})

    [图片上传失败...(image-83fe4c-1523846142637)]

    完成

    相关文章

      网友评论

        本文标题:搭建自己的以太坊网络发布erc20代币

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