• 部署以太坊合约


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

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

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

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

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

    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的版本是一致的,否则编译是会报错的呦~~)

    第四步:部署智能合约 

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

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

    第五步:合约部署成功

    原文链接:https://blog.csdn.net/zqq_2016/article/details/103435025

  • 相关阅读:
    一个整型数组里除了两个数字之外,其他的数字都出现了两次
    输入一颗二叉树的根节点,求该树的深度
    输入两个单向链表,找出它们的第一个公共结点
    java归并排序
    这样设计 Java 异常更优雅,赶紧学!
    2019 最新 Java 核心技术教程,都在这了!
    程序员加班写的代码,千万不要相信!
    为什么有些大公司技术弱爆了?
    这才是微服务划分的正确姿势,值得学习!
    为什么 Kafka 速度那么快?
  • 原文地址:https://www.cnblogs.com/jx66/p/14845392.html
Copyright © 2020-2023  润新知