区块链开发搭建的私有链环境
通过本文所述方法和项目中的脚本,我们可以快速的搭建好自己的私有链进行区块链开发测试,本文基于以太坊技术进行搭建,两个部分,Windwos下搭建方法、Ubuntu下搭建方法

一: 使用节点进行挖矿

在Geth命令行界面下,输入miner.start()即启动挖矿,挖矿后,会不停刷屏,输入miner.stop()即停止,不用管刷屏导致的命令不全,命令会正常执行。到这一步,已经组建一个私有链的网络,可以像其他区块链一样不停的扩充这个网络,下一篇文章,我会介绍如何在私有链上编写、调试和部署智能合约。

参考文章:

  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-private-testnet

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

  4. https://github.com/ethereum/go-ethereum/wiki/JavaScript-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

二: 使用节点创建账号

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

personal.newAccount()

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

三: 连接其他节点

首先要知道自己的节点信息,在Geth命令行界面下输入命令,注意大小写

admin.nodeInfo

系统会显示

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

其中

enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@0.0.0.0:30303

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

admin.addPeer(‘enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@192.168.1.101:30303’)

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

四: 安装Windows下Geth客户端

Windows必须64位系统,从官方网站下载编译好的win64客户端,解压缩即可运行,下载地址如下:https://github.com/ethereum/go-ethereum/releases/下载后,只有一个Geth.exe的文件。安装图像化客户端Mist,依然是从官方地址下载编译好的客户端即可,下载地址:https://github.com/ethereum/mist/releases/下载解压缩后,Ethereum-Wallet即为以太坊图形化界面。

五: Ubuntu下安装Geth客户端

之所以采用Ubuntu,是因为以太坊的官方对Ubuntu支持的很好,是在各个Linux系统中安装最简单。Geth官方安装指南:https://github.com/ethereum/Go-ethereum/wiki/Building-Ethereum进入ubuntu命令行,执行如下命令

sudo apt-get update

sudo apt-get installsoftware-properties-common

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

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

sudo apt-get update

sudo apt-get install ethereum

系统联网执行后,即完成了安装以太坊客户端,其中包括geth,bootnode, evm, disasm, rlpdump,ethtest此时如果输入Geth命令,会出现启动以太坊启动的画面

六: 准备创世块文件

配置自己的创世块是为了区分公有链,同一个网络中,创世块必须是一样的,否则无法联通,此方法在windows和Ubuntu下通用。

新建文件piccgenesis.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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

七: 启动私有链节点

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

identity

区块链的标示,随便填写,用于标示目前网络的名字

init

指定创世块文件的位置,并创建初始块

datadir

设置当前区块链网络数据存放的位置

port

网络监听端口

rpc

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

rpcapi

设置允许连接的rpc的客户端,一般为db,eth,net,web3

networkid

设置当前区块链的网络ID,用于区分不同的网络,是一个数字

console

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

1、 在Ubuntu启动区块链节点

在Ubuntu下,首先切换到打算运行的目录,目录下应该有配置好的piccgenesis.json文件,执行如下命令

basepath=$(cd dirname $0; pwd)

获取当前的目录

geth --datadir “$basepath/chain” init piccgenesis.json

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

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

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

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/server.go:313]Starting Server

I0707 00:45:45.834488p2p/discover/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/server.go:556]Listening on [::]:30303

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

Welcome to the Geth JavaScript console!

instance:Geth/v1.5.0-unstable/linux/go1.5.1/PICCetherum

coinbase:0x93509a2f4b2b974b07ef0b52e07c3992601f5de1

at block: 81 (Tue, 05 Jul 2016 21:02:25CST)

datadir: /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

可以看到Listening on [::]:30303和Welcome to the Geth JavaScript console!的提示,说明已经启动成功注意:如果想将Ubuntu作为永久区块链节点使用,当使用nohup命令时,Geth启动参数console必须去掉,否则Geth会自动停止。

2、 在windows启动区块链节点

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

geth --datadir “%cd%\chain” init piccgenesis.json

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

geth–identity “PICCetherum” --rpc–rpccorsdomain “*” --datadir “%cd%\chain” --port"30303" --rpcapi"db,eth,net,web3" --networkid 95518 console

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

八: 启动Windows下私有链图形节点

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

区块链软件开发的搭建环境相关推荐

  1. 区块链软件开发:区块链颠覆性渐渐开始  2019年需求侧开始涌现出大量需求...

    区块链软件开发:区块链颠覆性渐渐开始 2019年需求侧开始涌现出大量需求 需求侧缺乏弹性会导致短期内并不会涌现出大量应用,但这不代表区块链技术没有应用场景,相反随着对于区块链技术的理性认识加深以及技术 ...

  2. 区块链软件开发NFT平台开发移动APP开发预约预定APP定制开发

    区块链软件开发NFT平台开发移动APP开发预约预定APP定制开发 这款产品的主要功能是预定包房,针对大型连锁KTV公司的客户做一个定向业务.用户比较习惯给事情早定个时间,所以这是一个具有单向简单功能却 ...

  3. 区块链软件开发公司:区块链技术的安全解释

    众所周知,区块链是安全.不可改变和清廉的,但如果我们忽略了其中存在的漏洞,就相当于使价值数十亿美元资产锁在有问题的保险箱里.区块链因其复杂的数学运算而自吹自擂为"廉洁",但在现实中 ...

  4. 区块链软件开发:区块链+餐饮

    一.行业概况:自主还是加盟? 在所有的第三产业中,餐饮业可能是人们最熟悉的一个领域,不仅对于消费者来说如此,对于创业者而言亦然.由于其入行门槛低,外加 " 民以食为天 " 的观念深 ...

  5. 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java,nodejs,go和python语言的sdk,供用户选择用不同的语言开发上层应用,使用相应的sdk调用部署在区块链上的链码. ...

  6. 区块链软件开发公司谈区块链为什么被大众所接受

    说到区块链这个全新的概念,我相信很多人都比较熟悉.即使他们不参加,他们几乎可以聊这个话题,比如热门比特币.挖矿等等.此外,许多对区块链了解不多的人听说过很多人一夜暴富.在区块链圈富起来的神话之后,他们 ...

  7. 区块链软件开发案例分享

    区块链+各种,这类的开发越来越多,消费者的选择也多种多样,如何突出重围,只有借鉴各个软件开发,取其精华去其糟粕. 下面这是一个艺术品交易市场的软件开发分享 这是一个收集和交易独特的单版数字艺术品的市场 ...

  8. 区块链软件开发公司谈获取区块链的方式

    区块链技术的发展已成为不可逆转的现象.区块链技术作为比特币的底层技术,是一种由密码学产生的数据块.大规模区块链技术对应于范围广泛的数据库,导致日志内容复杂.消费者可以通过信誉良好的区块链技术重新整合行 ...

  9. 区块链能否与数字货币彻底分离 区块链软件开发公司

    区块链的热度已经随着数字货币的落幕而退潮.这已经成为一个不争的事实.但是,如果你因此去否定区块链的作用和意义,甚至将它归结为区块链时代的落幕显然有些太过唐突了.作为一个全新的技术,遭遇跌宕起伏是一件在 ...

最新文章

  1. c#算两个火星坐标的距离(高德or百度)
  2. pytorch 模型下载,郑重推荐
  3. R语言 深圳 面授_「深圳侦探电话」用R语言实现深度学习情感分析
  4. 文件与文件夹课后作业
  5. 02 李俊杰 20160221-S1笔试
  6. 利用innerHTML实现隐显效果-两种实现方法
  7. 与IP地址有关的那些点
  8. 假新闻无处不在:我开源了一个深度学习标记假新闻项目
  9. ReactNative集成百度语音合成
  10. sublime跳转到函数定义
  11. sql 不允许保存更改 解决办法
  12. J2EE是技术还是平台还是框架? 什么是J2EE
  13. 用计算机求已知两点坐标方位角,python 计算方位角实例(根据两点的坐标计算)
  14. cocos creater 2.4 Error Bundle resources doesn‘t contain
  15. nmon和nmon analyser的网盘下载安装与使用
  16. 面试被问到如何设计微信钉钉后端高并发IM架构?懵了.....
  17. 【Numpy】多维度切片截取
  18. pandorabox挂硬盘文件服务器,PandoraBox将系统挂载到U盘启动图文教程
  19. 【数据挖掘】之 数据挖掘 绪论
  20. OSChina 周三乱弹 ——你有社交恐惧症么?

热门文章

  1. 救命!为啥邮件发不到 500 英里以外?
  2. 315护眼灯测试哪一款合格?盘点315合格儿童护眼灯品牌
  3. Grbl V1.1F-GRBL接口基础
  4. Anaconda 的安装教程(图文)
  5. php中rectangle函数怎么用,Rectangle()函数
  6. 计算机网络学习9:可靠传输
  7. 英文论文-城市云脑,基于互联网云脑的智慧城市新架构
  8. 【msvcp140.dll怎么下载】msvcp140.dll丢失的解决方法
  9. 功率W与dBm以及SINR/RSRP/RSRQ含义
  10. H5新特性(五)——增强型表单