可以部署合约了,赶快记录一下

2020-09-27 15:29:03  [ 以太坊 ]      留言:0      阅读:24

来源:


今天是2020-09-27,部署以太坊合约需要三个工具来部署:浏览器MetaMask插件、remix在线编辑器、MyEtherWallet在线部署合约。


在开始使用的过程中遇到很多的坑,先简要说明一下部署过程,再介绍遇到的坑。


部署过程:

* 现在浏览器安装MetaMask插件,并利用MetaMask申请以太坊测试币

* 再到remix在线编辑器,把标准合约复制到编辑器中,生成Bytecode和ABI

* 再把Bytecode和ABI复制到MyEtherWallet网站中进行部署合约

* 最后完成了部署合约,并得到了合约地址


遇到的坑:

* 浏览器安装MetaMask插件,必须要卸载掉当前的firefox,重新安装最新的firefox,才能安装MetaMask插件

(今天是2020-09-27)


* 用MetaMask申请测试币,申请ropsten测试币可以顺利得到2个ETH,但要申请rinkeby测试币要到推特网发一条消息才行(但推特网登录不了)


* remix在线编辑器官方地址:https://remix.ethereum.org可以编辑合约代码,但要编译,必须要再适当的位置才能找到相关的按钮


* MyEtherWallet的官方网址:https://www.myetherwallet.com,要部署合约需要在恰当的位置才会出现相关功,要把remix生成的Bytecode和ABI复制到myetherwallet部署合约的相应位置才行。


* MyEtherWallet需要关联到浏览器中的MetaMask才会出现部署合约的相关功能



* 在remix.ethereum.org中直接通过Injected Web3连接到浏览器的metamask也可以直接发布合约的。这样子更方便。


* 要有谷歌验证码通过才能验证,有点奇怪。要过一段时间才可以验证,大约半小时。


合约代码的例子:



pragma solidity ^0.4.16;

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);
}

contract USR is Token {            // USR 是合约名称,也是代币简称,需要修改:之一

    string public name;
    uint8 public decimals;
    string public symbol;

    function USR() public {        // USR 是构造函数,必须与合约名称相同,需要修改:之二
        decimals = 18;             // 18是代币的小数位数,需要修改:之三
        totalSupply = 7000000 * 10 ** 18;                //7000000 是发行代币的总量,需要修改:之四       18 是发行代币的小数位数,需要修改:之五
        balances[msg.sender] = totalSupply;
        name = "KKR Blockchain Fund";                    // KKR Blockchain Fund 是代币的全称,需要修改:之六
        symbol = "USR";                                  // USR 是代币单位符号,需要修改:之七
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]);
        require(_to != 0x0);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value);
        balances[_to] += _value;
        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }

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

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

    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}


来源:


留言:


    更换校验码     

无觅相关文章插件,快速提升流量
分享到:
友荐云推荐 Process: 0.0366s ( Load:0.0003s Init:0.0008s Exec:0.0220s Template:0.0136s ) | DB :14 queries 1 writes | UseMem:3,028 kb