基于新版Remix+MetaMask部署以太坊智能合约

    本来是不打算写这个博客的,因为网上也有很多关于Remix+MetaMask的教程,但是看到的教程都是基于旧版的Remix,所以当初自己在开始部署的时候还是挺费力的。所以,希望能帮到跟我一样的小伙伴吧~~

 第一步:准备环境(Remix+MetaMask)

       1. 基于浏览器的Remix,网址为:http://remix.ethereum.org/ 或者直接在浏览器中搜索Remix(会直接跳转到新版)。

       2. MetaMask是一个基于Chrome浏览器的插件,具体的安装过程,参考链接:https://cloud.tencent.com/developer/article/1127431

       3. MetaMask钱包中准备几个以太币,因为部署智能合约是需要消耗gas的。

基于新版Remix+MetaMask部署以太坊智能合约_第1张图片

第二步: 编写智能合约(可以自己创建一个新的.sol文件编写智能合约。此时,我是从网上找一个现成的智能合约来部署测试的)。

基于新版Remix+MetaMask部署以太坊智能合约_第2张图片

pragma solidity ^0.4.26;
 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 test is Token {
 
    string public name;                   //名称,例如"My test token"
    uint8 public decimals;               //返回token使用的小数点后几位。比如如果设置为3,就是支持0.001表示.
    string public symbol;               //token简称,like MTT
 
    function test(uint256 _initialAmount, string _tokenName, uint8 _decimalUnits, string _tokenSymbol) public {
        totalSupply = _initialAmount * 10 ** uint256(_decimalUnits);         // 设置初始总量
        balances[msg.sender] = totalSupply; // 初始token数量给予消息发送者,因为是构造函数,所以这里也是合约的创建者
 
        name = _tokenName;                   
        decimals = _decimalUnits;          
        symbol = _tokenSymbol;
    }
 
    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;//从消息发送者账户中减去token数量_value
        balances[_to] += _value;//往接收账户增加token数量_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;//接收账户增加token数量_value
        balances[_from] -= _value; //支出账户_from减去token数量_value
        allowed[_from][msg.sender] -= _value;//消息发送者可以从账户_from中转出的数量减少_value
        Transfer(_from, _to, _value);//触发转币交易事件
        return true;
    }
    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }
 
 
    function approve(address _spender, uint256 _value) public returns (bool success)   
    { 
         require((_value == 0) || (allowed[msg.sender][_spender] == 0));
        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];//允许_spender从_owner中转出的token数
    }
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}

第三步:编译智能合约(注意:保证编译的版本跟.sol文件中solidity的版本是一致的,否则编译是会报错的呦~~)

基于新版Remix+MetaMask部署以太坊智能合约_第3张图片

第四步:部署智能合约 

  1. 在第一项选择Environment的时候,当你选中Injected Web3之后,系统会自动弹出右边的关联请求,选择连接即可。

基于新版Remix+MetaMask部署以太坊智能合约_第4张图片

    2. 接下来选择部署合约的账户Account,小费。同样地,在点击Deploy 的时候,系统也会弹出MetaMask让确认一下是否部署(因为部署智能合约是要消耗小费的)。

基于新版Remix+MetaMask部署以太坊智能合约_第5张图片

第五步:合约部署成功过一会儿,我们再去看一眼咱们的MetaMask钱包,就会发现合约已经部署成功了,并且我们是可以看到交易详情滴~~

基于新版Remix+MetaMask部署以太坊智能合约_第6张图片

你可能感兴趣的:(区块链&以太坊)