比特大陆-比特币价格行情交易交流平台!

区块链开发(一)搭建基于ETH的私有链环境

更新时间:2021-07-09 13:29点击:

1、在Ubuntu启动区块链节点

在Ubuntu下,第一切换到计划运行的目录,目录下应该有配置好的piccgenesis.json文件,实行如下命令

系统会显示

enode:”enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@0.0.0.0:30303“

“alloc”: {},

“coinbase”:”0x0000000000000000000000000000000000000000″,

“timestamp”: “0x00”,

“parentHash”:”0x0000000000000000000000000000000000000000000000000000000000000000″,

“extraData”: “PICC GenesisBlock”,

“gasLimit”:”0xffffffff”

Geth官方安装指南:

https://github.com/ethereum/go-ethereum/wiki/Builpng-以太坊

networkid

设置目前区块链的互联网ID,用于区别不一样的互联网,是一个数字

rh3c

启动rpc通信,可以进行智能合约的部署和调试

1、Ubuntu下安装Geth推广客户端

之所以使用Ubuntu,是由于ETH的官方对Ubuntu支持的非常不错,是在各个linux系统中安装最容易。

3、筹备创世块文件

配置我们的创世块是为了区别公有链,同一个互联网中,创世块需要是一样的,不然没办法联通,此办法在windows和Ubuntu下通用。

新建文件piccgenesis.json,输入如下内容并保存

rh3cah3i

设置允许连接的rpc的推广客户端,通常为db,eth,net,web3

2、安装Windows下Geth推广客户端

Windows需要64位系统,从官方网站下载编译好的win64推广客户端,解压缩即可运行,下载地址如下:https://github.com/ethereum/go-ethereum/releases/

下载后,只有一个Geth.exe的文件。

安装图像化推广客户端Mist,依旧是从官方地址下载编译好的推广客户端即可,下载地址:https://github.com/ethereum/mist/releases/

下载解压缩后,以太坊-Wallet即为ETH图形化界面。

admin.nodeInfo

通过本文所述办法和项目中的脚本,大家可以迅速的搭建好我们的私有链进行区块链开发测试,本文基于ETH技术进行搭建,分两个部分,一个是Ubuntu下搭建办法,另一个是Windwos下搭建办法,关于ETH有关的入门知识,可以看我原先发表的一些文章,地址如下:http://blog.csdn.net/sportshark

}

h3ort

7、连接其他节点

第一要知晓我们的节点信息,在Geth命令行界面下输入命令,注意大小写

互联网监听端口

coinbase

mixhash

与nonce配适用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足ETH的Yellow paper, 4.3.4. Block Header Valipty, 章节所描述的条件。.

sudo ah3t-get uh3date

sudo apt-get installsoftware-properties-common

sudo add-apt-repository -yppa:ethereum/ethereum

sudo add-apt-repository -yppa:ethereum/ethereum-de

其中

enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@0.0.0.0:30303

就是自己节点的信息,注意要把“0.0.0.0“换成你一个人的IP。将这个信息发送给其他节点,在其他节点的命令行中输入:

init

指定创世块文件的地方,并创建初始块

讲解一下各个参数有哪些用途:

alloc

用来预置账号与账号的ETH数目,由于私有链挖矿很容易,所以大家无需预置有币的账号,需要的时候自己创建即可以。

h3ersonal.newAccount

系统会提示你输入账号密码,并确认,最后会显示一个新生成的账号。

extraData

附加信息,随便填,可以填你的个性信息

nonce

nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足ETH的Yellow paper, 4.3.4. Block Header Valipty, 章节所描述的条件。

h3arentHash

上一个区块的hash值,由于是创世块,所以这个值是0

sudo ah3t-get uh3date

h3fficulty

设置目前区块的困难程度,假如困难程度过大,cpu挖矿就非常难,这里设置较小困难程度

矿工的账号,随便填

Welcome to the Geth JaaScrih3t console!

instance:Geth/1.5.0-unstable/linux/go1.5.1/PICCetherum

coinbase:0x93509a2f4b2b974b07ef0b52e07c3992601f5de1

5、用节点创建账号

启动节点成功后,会进入Geth的命令行模式,输入如下命令

admin.addPeer

假如添加成功,输入admin.peers会显示出新添加的节点。

timestamh3

进入ubuntu命令行,实行如下命令

sudo ah3t-get install ethereum

系统联网实行后,即完成了安装ETH推广客户端,其中包括geth,bootnode, em, psasm, rlpdump,ethtest

此时假如输入Geth命令,会出现启动ETH启动的画面

baseh3ath=$

设置创世块的时间戳

4、启动私有链节点

启动Geth即可以启动ETH的区块链,为了构建私有链 ,需要在Geth启动时加入一些参数,Geth参数含义如下:

console

启动命令行模式,可以在Geth中实行命令

{

“nonce”:”0x0000000000000042″,

“mixhash”:”0x0000000000000000000000000000000000000000000000000000000000000000″,

“pfficulty”: “0x4000”,

identity

区块链的标示,随便填写,用于标示现在互联网的名字

datah3r: /home/lihe/桌面/chain

modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

获得目前的目录

geth –datapr “$basepath/chain” init piccgenesis.json

创建数据存放地址并初始化创世块

geth –identity”PICCetherum” –rpc –rpccorsdomain “*” –datapr “$basepath/chain” –port “30303” –rpcapi “db,eth,net,web3”–networkid 95518 console

启动后界面如下,光标停留在最后的命令行上,可以实行ETH命令。

I0707 00:45:43.680087 ethdb/database.go:82]Alloted 128MB cache and 1024 file handles to /home/lihe/桌面/chain/chaindata

I0707 00:45:43.726008ethdb/database.go:169] closed db:/home/lihe/桌面/chain/chaindata

I0707 00:45:43.728913 ethdb/database.go:82]Alloted 128MB cache and 1024 file handles to /home/lihe/桌面/chain/chaindata

I0707 00:45:43.908795 ethdb/database.go:82]Alloted 16MB cache and 16 file handles to /home/lihe/桌面/chain/dapp

I0707 00:45:43.969506 core/genesis.go:92]Genesis block already in chain. Writing canonical number

I0707 00:45:43.980337 eth/backend.go:274]Successfully wrote custom genesis block:6e92f8b23bcdfdf34dc813cfaf1d84b71beac80530506b5d63a2df10fe23a660

I0707 00:45:43.980618 eth/backend.go:184]Protocol Versions: [63 62], Network Id: 95518

I0707 00:45:43.981567core/blockchain.go:204] Last header: #81 [6193c4b0…] TD=10836704

I0707 00:45:43.981645core/blockchain.go:205] Last block: #81 [6193c4b0…] TD=10836704

I0707 00:45:43.981677core/blockchain.go:206] Fast block: #81 [6193c4b0…] TD=10836704

I0707 00:45:43.985253 p2p/serer.go:313]Starting Serer

I0707 00:45:45.834488p2p/pscoer/udp.go:217] Listening,enode://134881790e54c803955715e3661c27f91caaf499be813e29c9f986e2eac62d47e02b13a8e51776c1caea554655614ed26ce0185d84e626da7ac48a83a60113ff@[::]:30303

I0707 00:45:45.835853 node/node.go:366]HTTP endpoint opened: http://localhost:8545

I0707 00:45:45.848008 p2p/serer.go:556]Listening on [::]:30303

I0707 00:45:45.849731 node/node.go:296] IPCendpoint opened: /home/lihe/桌面/chain/geth.ipc

参考文章:

1. http://tech.lab.carl.pro/kb/ethereum/testnet_setup

2. http://www.ethdocs.org/en/latest/network/test-networks.html#setting-up-a-local-priate-testnet

3. https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network

4. https://github.com/ethereum/go-ethereum/wiki/JaaScript-Console

5. https://github.com/ethereum/go-ethereum/wiki/Mining

6. https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts

7. https://github.com/janx/ethereum-bootstrap

gt;

可以看到Listening on [::]:30303和Welcome to the Geth JaaScript console!的提示,说明已经启动成功

注意:假如想将Ubuntu作为永久区块链节点用,当用nohup命令时,Geth启动参数console需要去掉,不然Geth会自动停止。

datah3r

设置目前区块链互联网数据存放的地方

at block: 81

6、启动Windows下私有链图形节点

第一按上面的步骤启动Geth并创建了账号,然后解压缩以太坊-Wallet,运行以太坊-Wallet.exe,即启动成功,假如区块链正常的话,会在右上角显示“PRIVATE-NET”,点击“LAUNCH APPLICATION”进入图形界面即可。

gasLimit

该值设置对GAS的消耗总量限制,用来限制区块能包含的买卖信息总和,由于大家是私有链,所以填最大。

2、在windows启动区块链节点

进入Windows下Geth的目录 ,放置配置好的piccgenesis.json文件,实行如下命令:

geth –datapr “%cd%chain” init piccgenesis.json

创建数据存放地址并初始化创世块

geth–identity “PICCetherum” –rpc–rpccorsdomain “*” –datapr “%cd%chain” –port”30303″ –rpcapi”db,eth,net,web3″ –networkid 95518 console

当看到Listening on [::]:30303和Welcome to the Geth JaaScript console!的提示,说明已经启动成功

8、用节点进行挖矿

在Geth命令行界面下,输入miner.start即启动挖矿,挖矿后,会不停刷屏,输入miner.sTOP即停止,不需要管刷屏致使的命令不全,命令会正常实行。

到这一步,已经组建一个私有链的互联网,可以像其他区块链一样不停的扩充这个互联网,下一篇文章,我会介绍怎么样在私有链上撰写、调试和部署智能合约。

官方微信公众号