搭建自己的以太坊网络
本文由币乎(bihu.com)内容支持计划奖励
目前以太坊官方提供了两种网络:线上生产网络、测试网络。
以太坊生产网络就是真正有价值的 的以太币运行的网络。我们使用的以太币进行转账、支付都是在生产网络上进行,每一个操作都需要消耗实实在在的ETH。智能合约也是部署在生产网络上,智能合约代码的执行调用都清晰可查,并且可供所有开发者调用。
以太坊的测试网络也是官方提供专供用户来开发、调试和测试的。但是测试网络的节点也是全球化的,现在测试网络的区块数量也很大,执行速度较慢,不便于开发、调试。
下面我们使用Geth安装自己的以太坊私有网络 PrivateNetwork。
Geth安装可以直接到官网下载对应的版本,进行安装:https://ethereum.github.io/go-ethereum/downloads/
安装完成后,需要创建私有网络的初始状态,所有节点都需要了解并达成一致。新建一个Json文件如gen.json,文件内容如图所示:
然后执行命令初始化节点 geth init gen.json,可以看到将节点数据写入了对应的文件夹中,此时当前目录下面会新增出两个文件夹geth和keystore
geth中用以保存区块链的相关数据
keystore中保存的是用户数据
使用命令personal.newAccount("xxx"),创造一个新的用户,该用户的密码是xxx. 测试使用可以使用123456便于记忆;
输入命令 eth.accounts, 我们会看到刚刚创建的新用户,可以看到已经创建了2个账户
至此,我们已经成功搭建了一个私有的ETH网络。
最简单的智能合约
pragma solidity 0.4.9;
contract AddDemo {
function add(uint a) returns (uint b)
{
uint result = a + 1;
return result;
}
}
pragma solidity 中pragma是关键字,0.4.19 表示编译器的版本,从0.4.9起可以在不在前面使用^
contract是关键字,表示合约,和面向对象编程语言中的类Class很像,可以定义变量和方法。 function add(uint a) returns (uint b)就定义了一个名为add的方法,输入参数为uint a,输出参数为uint b。
Solidity语言是一种类JS的语言,也有构造函数、继承、抽象类等概念。