基于以太坊网络的智能合约开发、部署和测试(入门)
基本概念:
更多资源信息请关注前两天刚写的文章(关于以太坊的一些学习资源)。 初学者会遇到很多各种各样的概念,网上的一些资料也比较陈旧。 学习它会看起来很乱。 主要把握以下几点就行了。
准备:
启用后,客户端会显示当前的私网:
启动网络并开始挖矿。 因为部署智能合约需要资金和旷工,所以我们搭建了一个单节点的以太坊网络。 该节点也是矿工,需要工作。
挖矿开始后,创世区块和以太币不断产生。 所有数字货币都将自行开采。
可惜不是真的以太坊,不然就贴出来了! o(* ̄︶ ̄*)o.
至此,个人以太坊网络即开发运行环境已经搭建完成购买以太坊秒合约,可以创建多个账户进行后续测试。
智能合约应用示例:
为了开发、部署和测试智能合约(DAPP),我们列出一个简单的应用场景。 开发一个应用程序,可以在我的控制下发行虚拟货币,并可以将货币发送给其他人。 就这么简单。 (当然以太坊平台很强大,这只是万里长征的第一步,类似于HelloWorld)
代码开发和解释:
我们用来开发智能合约的IDE是基于浏览器的Remix,访问这个工具如下图所示:
代码解释如下:
pragma solidity ^0.4.0;
contract Coin{
// 声明 一个 address 类型 变量 256 bits, 用于 存储启动该智能合约的账户地址。
address public minter;
// 声明 mapping 类型 变量 类似于 java map ,用于存储账户的资产信息
mapping(address => uint) public balances;
// 声明 一个事件 ,客户端可以来监听该事件
event Sent(address from, address to , uint value);
//构造函数,在合约启动的时候执行一次,因此minter保存的是启动该智能合约的账户地址
function Coin() public{
minter = msg.sender;
}
//为当前启动合约账号 ,也就是自己发币。每次加20
function go() public{
//如果不是启动合约的账号 则返回,即别人无法给自己发币
if(msg.sender != minter) return;
balances[msg.sender] += 20;
}
//为指定账号发币
function mint(address receiver) public{
//只有自己可以发币 其他账号调用无效
if(msg.sender != minter) return;
balances[receiver] += 15;
}
//账号之间发送货币
function send(address receiver) public{
uint amount = 15;
if(balances[msg.sender]
代码编译:
使用 Remix 编译代码
代码调试和测试:
选择右上角的运行选项卡,模拟参数全部默认(默认会生成一个账户)购买以太坊秒合约,点击创建,模拟部署智能合约代码。 创建成功后,右下角会出现已部署的合约(包括合约地址和合约方法)
自己测试发币:
点击go方法按钮,控制端会显示调用成功
为了验证自己是否给自己发币成功,可以查询balances变量,在balances按钮右侧输入我的账户地址,查询如下图,因为我点了八次(20每次都是硬币),所以我的账户余额是160。
注意这里需要知道如何获取账号。 个人账号其实是有的,如下图: 点击右边的复制按钮,获取账号字符串。 该账户也是部署合约的账户。 当时复制的账户信息只有20个字节,地址类型需要32个字节(因为地址的地址是256bits),那么我们需要完成地址查询,在地址的前端加上24一个0表示最终用于查询的账户地址为0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733c
测试为他人发币:
点击铸币按钮,随便写一个别人的账号,比如0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b
验证发币结果:
在balances右边输入别人的账号0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,点击查询,如下图,发行15个币。
测试发送数字货币:
当前合约部署者(自己)给别人转币,在发送按钮中输入账号0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,点击发送按钮,转15个币。
验证货币转移的结果。 在那之前,我有160个硬币,其他人有15个硬币。 转了15个币后,我有145个,别人有30个。如下图。
部署到以太坊平台(搭建的单点开发环境):
打开MIST平台,创建A、B两个模拟账户,其中A账户用于部署智能合约,B账户为他人账户。 用于测试货币发行和转账。打开MIST智能合约界面
点击 DEPLOY NEW CONTRACT 创建一个新的智能合约:
复制代码后,会自动编译并生成合约,如下图,合约名称为Coin:
选择合约,然后在页面底部点击部署,部署时需要输入账户密码:
部署成功后,点击智能合约界面查看:
测试部分没做,和Remix很像。