概述
一、准备工作:
1、从官网下载以太坊go客户端
https://github.com/ethereum/go-ethereum/releases/
2、从官网下载以太坊钱包
https://github.com/ethereum/mist/releases/
3、创建geth初始化文件hdgenesis.json
内容如下:
{
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "PICC GenesisBlock",
"gasLimit":"0xffffffff"
}
参数 | 描述 |
mixhash | 与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。 |
nonce | nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。 |
difficulty | 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度 |
alloc | 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。 |
coinbase | 矿工的账号,随便填 |
timestamp | 设置创世块的时间戳 |
parentHash | 上一个区块的hash值,因为是创世块,所以这个值是0 |
extraData | 附加信息,随便填,可以填你的个性信息 |
gasLimit | 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。 |
二、第一个节点环境搭建
1、解压geth客户端到安装目录,如d:geth
2、将文件hdgenesis.json拷贝到geth安装目录下,然后创建数据存放地址并初始化创世块
geth --datadir "%cd%chain" init hdgenesis.json
3、启动geth console
geth --identity "HDetherum" --rpc --rpccorsdomain "*" --datadir "%cd%chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95520 -nodiscover --verbosity=5 console 2>>hdchain.log
参数 | 描述 |
identity | 区块链的标示,随便填写,用于标示目前网络的名字 |
init | 指定创世块文件的位置,并创建初始块 |
datadir | 设置当前区块链网络数据存放的位置 |
port | 网络监听端口 |
rpc | 启动rpc通信,可以进行智能合约的部署和调试 |
rpcapi | 设置允许连接的rpc的客户端,一般为db,eth,net,web3 |
networkid | 设置当前区块链的网络ID,用于区分不同的网络,是一个数字 |
console | 启动命令行模式,可以在Geth中执行命令 |
nodiscover | 禁止被网络中其它节点发现,需要手动添加该节点到网络 |
verbosity | 打印详细的日志信息 |
4、创建主账户
geth console启动后,运行如下命令创建一个主账户(没有账户不允许挖矿),根据提示设置交易密码,创建成功后就可以使用console进行相关的单节点命令操作。
personal.newAccount()
5、以太坊钱包
将以太坊钱包解压到指定安装目录,如d:wallet,然后运行Ethereum-Wallet.exe 启动图形化的以太坊钱包,钱包默认连接本地的geth客户端,所以这时会显示的是私有网络(private-net),点击Launch application启动钱包应用,进入钱包主界面即可看到账户信息,同时可以进行交易,创建智能合约等操作。
刚开始钱包是空的,没有任何以太,我们通过在控制台运行miner.start()命令开始挖矿赚钱,过一会就会发现钱包开始不断鼓起来了,超过500后运行miner.stop()命令停止挖矿。
点击ADD ACCOUNT创建一个新的账户ACCOUNT2.
有钱后可以开始花了,点击SEND进入转账交易界面,转100以太给新创建的账户ACCOUNT2,根据提示输入密码提交交易,然后返回主界面,这时发现主账户和ACCOUNT2的余额都没有发生变化,因为交易需要挖矿创建区块来确认,这时没有挖矿没确认,所以账户余额没有变化,通过运行miner.start(),再过一会就会发现两个账户的余额都根据预期发生了变化,为了减少资源消耗,交易确认后需要运行miner.stop()停止挖矿。
点击CONTRACTS进入智能合约操作界面,点击DEPLOY NEW CONTRACT发布一个新的智能合约,如官网最简单的示例,get/set一个数值,然后点击DEPLOY进行发布,发布之后即可执行该智能合约,当然执行智能合约也是需要挖矿确认才能看到结果,同时需要消耗一定数量以太,具体数量界面上都有显示。
contract SimpleStorage {
uint storedData;
function set(uint x) {
storedData = x;
}
function get() constant returns (uintretVal) {
return storedData;
}
}
三、添加网络新节点:
使用VirtualBox创建以太windows 7虚拟机,然后重复第一个节点的创建步骤在虚拟机上部署geth和以太坊钱包,同样需要初始化文件hdgenesis.json(同一个文件拷贝一份),并运行初始化命令,然后再运行启动命令,启动之后运行admin.nodeInfo.enode命令获取新节点的enode信息,然后在第一个节点上运行 admin.addPeer(enode URL)来添加新节点,注意将enode URL中[::]替换为新节点的IP地址,添加成功后运行admin.peers命令即可查看对等节点信息。
至此,一套基于geth的本地简单私有网络创建完成,可以在这套环境上进行简单的智能合约创建和测试。
转载于:https://my.oschina.net/stevex/blog/746669
最后
以上就是超帅花瓣为你收集整理的搭建Geth本地私有链网络的全部内容,希望文章能够帮你解决搭建Geth本地私有链网络所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复