转:区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
wo541075754 · 2016-11-07 13:00:03 · 3730 次点击 · 预计阅读时间 3 分钟 · 约1小时前 开始浏览
通过各方资料了解学习之后,决定自己开始搭建基于以太坊go-ethereum的私有链环境。由于本人的电脑系统为win8,为避免window环境出现过多莫名其妙的问题,特意通过vm搭建了一台ubuntu16.04版本的虚拟系统。以下内容均基于ubuntu16.04系统。
go-ethereum客户端
下载地址&参考手册
首先,可以查看一下go-ethereum项目在git上的地址:
https://github.com/ethereum/Go-ethereum
、
可以在点击项目上的wiki标签,也可以通过一下地址访问wiki:
https://github.com/ethereum/Go-ethereum/wiki/Building-Ethereum
在wiki页面选择ubuntu系统的安装说明,也可以直接访问下面链接:
https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu
ubuntu下安装命令
打开命令行窗口,或通过快捷键CTL+ALT+T,依次输入以下命令,即可安装成功:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereum
PS:如果安装过程中需要依赖其他组件,则先安装其他组件。另外,在ubuntu16.04版本,sudo apt-get install命令可精简为sudo apt install。
安装测试
安装完成之后在命令行输入:
geth --help
如果现实出命令行各种参数提示信息,则说明安装成功。
创世块
在以上安装成功之后,直接启动,即可连接公有链。现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。
创建一个eth的根目录,在根目录下新建创世块json文件piccgenesis.json。内容如下:
{
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "SecBroBlock",
"gasLimit":"0x0000ffff"
}
参数解释:
| 参数名称 | 参数描述 |
|---|---|
| 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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。 |
启动私有链节点
启动私有节点所需参数
| 参数名称 | 参数描述 |
|---|---|
| identity | 区块链的标示,随便填写,用于标示目前网络的名字 |
| init | 指定创世块文件的位置,并创建初始块 |
| datadir | 设置当前区块链网络数据存放的位置 |
| port | 网络监听端口 |
| rpc | 启动rpc通信,可以进行智能合约的部署和调试 |
| rpcapi | 设置允许连接的rpc的客户端,一般为db,eth,net,web3 |
| networkid | 设置当前区块链的网络ID,用于区分不同的网络,是一个数字 |
| console | 启动命令行模式,可以在Geth中执行命令 |
启动
本人启动eth所在目录为:
/home/zhuzs/eth
此目录下放置刚才配置好的创世块json文件:piccgenesis.json
因此直接执行如下命令:
geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "/home/zhuzs/eth/chain" --port "30303" --rpcapi "db,eth,net,web3" -- networkid 95518 console --dev
PS:根据自己的环境进行对应的替换。注意,最后添加了–dev,当此服务启动成功之后,在后面会用到。
看到一下输出说明启动成功,并且是使用的私有链:
随后就是相关的命令操作,在下一篇博客中进一步说明。
转:区块链开发(一)搭建基于以太坊go-ethereum的私有链环境的更多相关文章
- 基于docker的以太坊集群的私有链开发环境
转载博文:https://www.jianshu.com/p/8af386ec5f9e https://www.jianshu.com/p/7994db7a2b89?from=singlemessag ...
- 以太坊(ethereum)开发DApp应用的入门区块链技术教程
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- [中文] 以太坊(Ethereum )白皮书
以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年 ...
- 以太坊客户端Ethereum Wallet与Geth区别简介
以太坊客户端Ethereum Wallet与Geth区别简介 最近有不少朋友在搭建交易平台,在咨询和技术交流的过程中发现很多朋友不太清楚Ethereum Wallet和Geth区别.甚至有朋友使用Ge ...
- 基于以太坊开发的类似58同城的DApp开发与应用案例
今天,Origin开发团队很高兴地宣布在以太坊Rinkeby测试网络上推出Origin Protocol Demo DApp ! 在这个DApp中,你可以在不同垂直行业的solidarity econ ...
- 从零构建以太坊(Ethereum)智能合约到项目实战——第20章 搭建自己的私有链网络
P75 .1-以太坊私网建立 .合约编译.部署完全教程(1) 使用此博文进行安装配置:https://blog.csdn.net/w88193363/article/details/79402074 ...
- [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包
本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...
- 基于以太坊的Token开发步骤
Token开发步骤 一.准备工具1.安装以太坊brew tap ethereum/ethereumbrew install ethereum2.node:brew install nodejs3.安装 ...
- 以太坊(Ethereum)智能合约NodeJS/Web3 使用
一.概述 运行环境:Node.js.npm.Truffle.Solidity等 root@keke:~/go-ethereum# node -v v8.9.4 root@keke:~/go-ether ...
随机推荐
- Hibernate乐观锁无法Catch到org.hibernate.StaleObjectStateException
Hibernate乐观锁无法Catch到org.hibernate.StaleObjectStateException时,请Catch HibernateOptimisticLockingFailur ...
- 【Python】Excel操作-1
#练习:创建Excel 如果要创建的Excel已经存在并打开,会报错 from openpyxl import Workbook wb=Workbook() #创建文件对象 ws=wb.active ...
- [转][译] Closures in Lua - Lua中的闭包
http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...
- file类和io流
一.file类 file类是一个可以用其对象表示目录或文件的一个Java.io包中的类 import java.io.File; import java.io.IOException; public ...
- mac os x lipo 工具
lipo是管理Fat文件的工具,可以查看平台列表,提取.重新打包 dreamdeMac-mini:test dream$ lipo -info libtest001.a Architectures i ...
- YII2.0使用ActiveForm表单(转)
Controller控制器层代码 <?php namespace frontend\controllers; use frontend\models\UserForm; class UserCo ...
- C++中输出字符到文本文档
#include <iostream> #include <fstream> //ofstream类的头文件 using namespace std; int main() { ...
- HDU 1873 看病要排队 优先队列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- python在图片上画矩形
python在图片上画矩形 image_path = '' image = cv2.imread(image_path) first_point = (100, 100) last_point = ( ...
- jsp中引入jquery报错:Failed to load resource: the server responded with a status of 404 (Not Found)
问题描述: 今天自己在搭建spring.springMVC.hibernate框架,搭建完成后,在引入jquery时,发现jquery不管用.我的解决顺序是: 1.检查路径,发现路径没错,另外需要注意 ...