区块链--Ubuntu上搭建以太坊私有链
1、搭建私链所需环境
操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度
软件:
geth客户端
Mist和Ethereum Wallet:https://github.com/ethereum/mist/releases/
2、安装geth客户端
sudo apt-get update
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
安装完成后,输入geth -h,如果有列出信息则说明安装成功,可查看列出信息,方便后续的操作
3、创建创始块
(1)创建以太坊初始区块文件 genesis.json
作为区块链,链子总要有个头,所以需要创建一个创世块作为头部,才好往下添加,创世文件名称命名为genesis.json,数据目录存放在/home/cll/privateDemo/data1,genesis.json存放在/home/cll/ privateDemo/:
cat > genesis.json
输入:
{
"config": {
"chainId": 411,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"nonce": "0x0000000000000033",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x8000000",
"difficulty": "0x100",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase":"0x0000000000000000000000000000000000000000",
"alloc": {
"0x1C83C95473e1e93A2C8560c73976dAFA9C3f0a79":
{"balance":""}
}
}
查看:
cat genesis.json
部分字段解释:
chainId : 以太坊区块链网络Id,ethereum主链是1,私有链只用不要与主链冲突即可。
alloc : 预留账户,如下
coinbase: 旷工账户
difficulty: 挖矿难度
extraData:相当于备注
gasLimit:最小消耗gas
nonce : 64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊黄皮书中的要求
parentHash : 上一个区块的Hash值,因为是创世块,没有在它前面的,所以是0
timestamp : 时间戳
(2)初始化区块节点
geth --datadir data1 init genesis.json
(3)启动geth客户端节点
geth --identity "data1" --rpc --rpcport 8000 --rpccorsdomain "*" --datadir "data1" --port 30303 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>data1/geth.log
geth常用属性:
--Identity : 节点身份标识,起个名字
--datadir : 指定节点存在位置,“data1”
--rpc : 启用http-rpc服务器
--rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db...
--rpcaddr : http-rpc服务器接口地址:默认“127.0.0.1”
--rpcport : http-rpc 端口(多节点时,不要重复)
--port : 节点端口号(多节点时,不要重复)
--networkid : 网络标识符 随便指定一个id(确保多节点是统一网络,保持一致)
(4)geth常用命令
#创建账户
personal.newAccount("") #获取账户数组
eth.accounts #解锁账户,转账时可使用
personal.unlockAccount(eth.accounts[0], "") #节点主账户
eth.coinbase #查看账户余额
eth.getBalance(eth.accounts[0]) #启动,结束挖矿,写区块
miner.start(), miner.stop() #查看区块数量
eth.blockNumber
4、配置多节点服务
(1)再初始化一个节点(与上一个节点使用同一个genesis.json)
(privateDemo目录)
geth --datadir data2 init genesis.json
(2)启动新节点
(privateDemo目录)
geth --identity "data2" --rpc --rpcport 8001 --rpccorsdomain "*" --datadir "data2" --port 30306 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>data2/geth.log
注:如果在同一台电脑上这两个端口号与之前的节点不能相同
(3)查看:新节点enode信息
admin.nodeInfo.enode
(4)主节点添加新节点,使两节点连在同一个私有链上
在data1终端下输入新节点data2的enode信息
例如:
admin.addpeer("enode://d4f64272de882d2e2ccefc6466c6580ddecd253f5c9d87f977ac3881cbea7b141c07681ea605c53af5815cbfc25b5138b9ddb07be61b757850a55b7197939ba4@127.0.0.1:30306")
(5)检查两节点是否已连接
首先使用命令admin.nodeInfo,查看结果是否为空[],或者net.peerCount,查看是否为0(这里有点问题,有时候由于某些原因,可能网络不稳定,添加完后是[]和0,有时候又显示有同伴);另外在其中一个节点启动挖矿命令 miner.start(),看另一个节点是否也同步,可以使用命令行跟踪(data1目录):tail -f geth.log。
4、Mist连接私链
(1)以rpc方式打开访问ipc接口方式打开mist钱包
“(mist应用所在路径)” –rpc “(节点geth.ipc所在目录)”
例如:
“/home/cll/ethereum/mist/mist” –rpc “/home/cll/privateDemo/data1/geth.ipc”
(2)只读的http方式打开钱包。不能转账,不能部署合约
“/home/cll/ethereum/mist/mist” –rpc http://127.0.0.1:8000
5、在Mist上部署智能合约
点击CONTRACTS->点击DEPLOY NEW CONTRACT->选择账户,编写合约内容->最底下点击DEPLOY。成功提交后,等待挖矿确认,确认的合约会显示在CONTRACTS页面,点击合约即可进行相关操作。
区块链--Ubuntu上搭建以太坊私有链的更多相关文章
- 区块链入门(2):搭建以太坊私有链(private network of ethereum),以及挖矿的操作..
在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有 ...
- ubuntu系统搭建以太坊私有链
1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage. ...
- 转:使用 Go-Ethereum 1.7.2搭建以太坊私有链
使用 Go-Ethereum 1.7.2搭建以太坊私有链 目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底 ...
- Mac环境搭建以太坊私有链
原文地址: 石匠的blog 为了测试以太坊智能合约,最方便的是在本地搭建一个以太坊私有链.在mac上搭建环境主要需要以下步骤. geth安装 geth是go-ethereum的简写,是一个用go语言编 ...
- 使用 Go-Ethereum 1.7.2搭建以太坊私有链
目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球 ...
- docker 搭建以太坊私有链搭建
最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...
- CentOS7搭建以太坊私有链
1. 环境准备:Win10 64位安装 VM VirtualBox,操作系统版本: CentOS-7-x86_64-Everything-1611.iso(7.71G). 切换root账号,方便安装程 ...
- Mac搭建以太坊私有链
记录过程与问题 一.安装 以go版本的ethereum进行安装 brew tap ethereum/ethereum brew install ethereum # 如果希望基于ethereum的de ...
- 区块链学习:Windows下搭建以太坊私有链环境
一:安装geth客户端 Windows要求必须是64位系统,从官方网站下载编译好的win64客户端,下载解压后只有一个Geth.exe问价,运行安装即可,下载地址如下: https://github. ...
随机推荐
- [转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
转至:https://segmentfault.com/a/1190000011539920 前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错.但还是有 ...
- JS 控制输入框输入表情emoji 显示在页面上
问题描述: 最近做一个评论回复的功能遇到了用户输入框输入表情,存入数据库的时候转变成了问号??? 起初为了避免这个问题,做了一个过滤表情的控制 var inputText = $('#pinglun' ...
- 2019/3/7 Java学习之多线程(基础)
Java学习之多线程 讲到线程,就必须要懂得进程,进程是相当于一个程序的开始到结束,而线程是依赖于进程的,没有进程,就没有线程.线程也分主线程和子线程,当在主线程开启子线程时,主线程结束,而子线程还可 ...
- Pi的计算
百度百科 圆周率用希腊字母 π(读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值.它是一个无理数,即无限不循环小数.在日常生活中,通常都用3. ...
- 监听HTTP请求
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Oracle.DataAccess.Client; using System; usi ...
- Spring5中的DispatcherServlet初始化
Spring MVC像许多其它Web框架,被设计围绕前端控制器(DispatcherServlet)实际的工作是由可配置的,委托组件执行提供了一种用于请求处理的共享算法.这个模型是灵活的,支持不同的工 ...
- 用java开发dota英雄最华丽的技能
爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好的同学欢迎一起研究学习. 先把我的代码呈上 import ...
- Javascript高级编程学习笔记(30)—— BOM(4)navigator对象
window对象作为浏览器的全局对象.location对象保存了页面的url信息 那么navigator对象又有什么作用呢? navigator对象 该对象最早由 Netspace Navigator ...
- Numpy学习二:数组的索引与切片
1.一维数组索引与切片#创建一维数组arr1d = np.arange(10)print(arr1d) 结果:[0 1 2 3 4 5 6 7 8 9] #数组的索引从0开始,通过索引获取第三个元素a ...
- Numpy学习一:ndarray数组对象
NumPy是Python的一个高性能科学计算和数据分析基础库,提供了功能强大的多维数组对象ndarray.jupyter notebook快速执行代码的快捷键:鼠标点击选中要指定的代码框,Shift ...