以太坊智能合约编写(二)

简单环境搭建---实现简单Hello World合约


我这里将使用当前最活跃的智能合约开发框架truffle为基础来开发。

就像一般网站或App开发一样,在提供公开服务之前,开发者会在自己用于写程序的电脑(又称作本机)或透过测试网络来测试程序执行的效果,测试完成后,才会部署到公开的网络上提供服务。开发区块链智能合约(程序)的过程也是如此。特别是公开链上所有写入或读取计算结果的操作都需要真金白银(虚拟代币),而且根据网络状况,每个公开链上的操作都需要要一小段反应时间(15秒~数分钟),这些等待颇浪费宝贵的开发时间。因此在开发的过程中,我将使用geth客户端,启动一个以太坊(开发者)网络节点。

此外,开发前还需准备一个合手的编辑器。我目前是使用Remix -Solidity IDE来开发。


一、Solidity安装

强烈建议新手使用Remix -Solidity IDE来进行开发。

Remix 是一个基于浏览器的Solidity,就可以不用安装Solidity,本文的Hello World也将基于Remix Solidity IDE来进行。

二、geth 安装

git clone https://github.com/ethereum/go-ethereum

sudo apt-get install -y build-essential golang

cd go-ethereum 

make geth

安装完以后,就是把geth控制台启动。

三、启动环境

geth --datadir testNet --dev console 2>> test.log

执行命名后,会进入geth控制台,这时光标停在一个向右的箭头处,如下图:


以太坊智能合约编写(二)_第1张图片

命令参数说明(更多命令详解我会在接下来博文中介绍):

–dev 启用开发者网络(模式),开发者网络会使用POA共识,默认预分配一个开发者账户并且会自动开启挖矿。

–datadir 后面的参数是区块数据及秘钥存放目录。

第一次输入命令后,它会放在当前目录下新建一个testNet目录来存放数据。

console 进入控制台

2>> test.log 表示把控制台日志输出到test.log文件

四、准备账户

部署智能合约需要一个外部账户,先来看看分配的开发者账户,在控制台使用以下命令查看账户:


再来看一下账户里的余额,使用一下命令:

eth.getBalance(eth.accounts[0])


以太坊智能合约编写(二)_第2张图片

eth.accounts[0]表示账户列表第一个账户

开发者账户因余额太多,如果用这个账户来部署合约时会无法看到余额变化,为了更好的体验完整的过程,这里选择创建一个新的账户。

创建账户

使用以下命令创建账户:

personal.newAccount("xitou")    xitou为新账户的密码,回车后,返回一个新账户。


现在查看下账户列表:


可以看到账户包含两个账户,新账户在第二个(索引为1)位置。

现在看看账户的余额:


可以看到新账户的余额为0

给新账户转账

我们知道没有余额的账户是没法部署合约的,那就从默认账户转1以太币给新账户,使用以下命令(请使用你自己eth.accounts对应输出的账户):

eth.sendTransaction({from:'0xd39e4470d6cb34b1efdbc500ca08e6bccb7715ea', to:'0x2df65f4920e2f4d69c48e070bfc08f6cc5f67c66', value: web3.toWei(1, "ether")})

再次查看新账户余额,可以新账户有1个以太币


以太坊智能合约编写(二)_第3张图片


解锁账户

在部署合约前需要先解锁账户(就像银行转账要输入密码一样),使用以下命令:

personal.unlockAccount(eth.accounts[1],"xitou")


解锁成功后,账户就准备完毕,接下来就是编写合约代码。

五、编写合约代码

现在来开始编写第一个智能合约代码,solidity代码如下:


以太坊智能合约编写(二)_第4张图片

在弹出的对话框中找到WEB3DEPLOY部分,点复制,粘贴到编辑器后,修改相应信息即可。


以太坊智能合约编写(二)_第5张图片

六、部署合约

将修改后的代码,复制回geth控制台里,回车后,看到输出:


说明合约已经部署成功。

现在查看下新账户的余额:


是不是比之前转账的余额少了。

七、运行合约


以太坊智能合约编写(二)_第6张图片

你可能感兴趣的:(以太坊智能合约编写(二))