【区块链-以太坊】2 使用Remix编译和部署Solidity智能合约
文章目录1 基础知识2 使用Remix编译智能合约3 在本地部署智能合约4 在测试网络中部署智能合约1 基础知识Remix简介:Remix 是以太坊提供的一个开发Solidity智能合约的网络版开发软件(无需安装)。合约的开发者在Remix里提供的JavaScript虚拟机上开发,调试好合约后,可以发布到以太坊,或者任何支持Solidity智能合约的区块链上。solidity简介Soli...
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)编译成功后右下角显示绿色提示
3 在本地部署智能合约
1)点击run,环境选择JavaScript VM 表示所有资料都保存在本地。图中Account是JavaScript虚拟机提供的,共有5个账户,每个账户都有100测试ether。
2)发送交易部署合约。选择MyToken,在Deploy中输入要发行的代币数量,点击Deploy即可发送交易部署合约(点击下拉箭头可更清楚地看出此时调用的是initialSupply函数)
3)合约部署成功后,中下方灰色区域显示如下:
右下方显示如下:
此时发起合约的账户所持ether会减少
4)查询代币余额(balanceOf)
在balanceOf后填写账户地址,点击call,将会显示账户的代币余额
5)转移代币(transfer)
a)选择要转出的账户
b)输入要转入的账户及代币数量
c)点击transact,显示
d)查询账户代币余额
转出者余额为:
转入者余额为:
【注】
Q1:transact to MyToken. transfer errored: VM error: revert.
revert The transaction has been reverted to the initial state.
A1:这表示转出账户代币余额不足,交易失败
4 在测试网络中部署智能合约
1)打开MetaMask,选择Rinkeby Test Network
2)在Remix中选择测试网络,环境选择Injected Web3,自动连接MetaMask
3)发送交易部署合约
a)输入初始代币数目
b)点击Deploy后会弹出以下界面
c)点击confirm后,Remix中显示:
MetaMask中显示
4)转移代币
点击transact弹出如下窗口:
MetaMask中显示
5)查询代币余额
6)将代币加入钱包
a)合约发布成功后,会显示发布合约的交易查询地址,点击网页
b)红框中即为代币地址
c)在metamask页面中点击ADD TOKEN
d)点击Custom Token
根据合约的详细信息输入代币地址、定义代币名称以及精确位数
e)点击ADD TOKENS
f)代币添加成功
7)验证智能合约
a)点击合约地址,显示合约详细信息
b)点击code后显示:
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码
【注】在code中可得到构造函数传入的参数的ABI码
d)点击Verify And Publish
e)验证成功后显示以下:
更多推荐
所有评论(0)