【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约

文章目录

      • 1 基础知识
      • 2 使用Remix编译智能合约
      • 3 在本地部署智能合约
      • 4 在测试网络中部署智能合约

1 基础知识

Remix简介
Remix 是以太坊提供的一个开发Solidity智能合约的网络版开发软件(无需安装)。合约的开发者在Remix里提供的JavaScript虚拟机上开发,调试好合约后,可以发布到以太坊,或者任何支持Solidity智能合约的区块链上。
solidity简介
Solidity 是 Ethereum 官方设计和支援的程式语言,专门用于编写智能合约。
使用智能合约的步骤
1)部署智能合约:就是合约的发起人把智能合约发布到区块链上,并且生成一个新的合约地址。
2)调用函数:调用部署在这个地址上的合约里的函数。一个合约只需部署一次,生成一个合约地址。但是这个地址上合约中的函数可以多次被调用。

2 使用Remix编译智能合约

1)打开Remix网页 http://remix.ethereum.org
2)创建新的智能合约

pragma solidity >0.4.22 <0.6.0;  /*version*/
contract MyToken {
/* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;
    
    /* Initializes contract with initial supply tokens to the creator of the contract */
    constructor(uint256 initialSupply) public {
        balanceOf[msg.sender] = initialSupply;              
        // Give the creator all initial tokens
    }
    
    /* Send coins */
    function transfer(address _to, uint256 _value) public {
        require(balanceOf[msg.sender] >= _value);           
        // Check if the sender has enough
        require(balanceOf[_to] + _value >= balanceOf[_to]); 
        // Check for overflows
        balanceOf[msg.sender] -= _value;                    
        // Subtract from the sender
        balanceOf[_to] += _value;                  
        // Add the same to the recipient
    }
}

此智能合约实现两个操作
a) 创造代币:发起合约时创造指定数量的代币,代币拥有着是发起合约的Ethereum账户
b) 转移代币(transfer):转移指定数量的代币给指定账户
3)选择合适版本的编译器进行编译
4)编译成功后右下角显示绿色提示
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第1张图片

3 在本地部署智能合约

1)点击run,环境选择JavaScript VM 表示所有资料都保存在本地。图中Account是JavaScript虚拟机提供的,共有5个账户,每个账户都有100测试ether。
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第2张图片
2)发送交易部署合约。选择MyToken,在Deploy中输入要发行的代币数量,点击Deploy即可发送交易部署合约(点击下拉箭头可更清楚地看出此时调用的是initialSupply函数)
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第3张图片
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第4张图片
3)合约部署成功后,中下方灰色区域显示如下:
在这里插入图片描述
右下方显示如下:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第5张图片
此时发起合约的账户所持ether会减少
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第6张图片
4)查询代币余额(balanceOf)
在balanceOf后填写账户地址,点击call,将会显示账户的代币余额
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第7张图片
在这里插入图片描述
5)转移代币(transfer)
a)选择要转出的账户
在这里插入图片描述
b)输入要转入的账户及代币数量
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第8张图片
c)点击transact,显示
在这里插入图片描述
d)查询账户代币余额
转出者余额为:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第9张图片
转入者余额为:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第10张图片
【注】
Q1:transact to MyToken. transfer errored: VM error: revert.
revert The transaction has been reverted to the initial state.
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第11张图片
A1:这表示转出账户代币余额不足,交易失败

4 在测试网络中部署智能合约

1)打开MetaMask,选择Rinkeby Test Network
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第12张图片
2)在Remix中选择测试网络,环境选择Injected Web3,自动连接MetaMask
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第13张图片
3)发送交易部署合约
a)输入初始代币数目
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第14张图片
b)点击Deploy后会弹出以下界面
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第15张图片
c)点击confirm后,Remix中显示:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第16张图片
MetaMask中显示
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第17张图片
4)转移代币
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第18张图片
点击transact弹出如下窗口:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第19张图片
MetaMask中显示
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第20张图片

5)查询代币余额
在这里插入图片描述
在这里插入图片描述

6)将代币加入钱包
a)合约发布成功后,会显示发布合约的交易查询地址,点击网页
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第21张图片
b)红框中即为代币地址
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第22张图片
c)在metamask页面中点击ADD TOKEN
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第23张图片
d)点击Custom Token 根据合约的详细信息输入代币地址、定义代币名称以及精确位数
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第24张图片
e)点击ADD TOKENS
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第25张图片
f)代币添加成功
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第26张图片
7)验证智能合约
a)点击合约地址,显示合约详细信息
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第27张图片
b)点击code后显示:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第28张图片
c)点击Verify And Publish,进入验证界面,按照以下提示输入相应信息
· Contract Address:合约地址
· Contract Name:合约名称,即为编译时选择的合约名称
· Compiler:编译版本,即为编译时用的版本号
· Optimization:是否优化(选择:否)
· Enter the Solidity Contract Code below:输入合约代码
· Constructor Arguments ABI-encoded (For contracts that accept constructor parameters):合约中构造函数传入的参数的ABI码
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第29张图片
【注】在code中可得到构造函数传入的参数的ABI码
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第30张图片

d)点击Verify And Publish
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第31张图片
e)验证成功后显示以下:
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第32张图片
【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约_第33张图片

你可能感兴趣的:(区块链)