网上关于如何搭建私链的文章很多,但是看来看去都是一样的,千篇一律,想找点不一样,新鲜的知识很难,本文总结归纳那些文章的内容,从使用私链的角度出发写了一篇比较全面的博客,内容包含以下几点:

  • windows单节点
  • windows多节点
  • linux创建节点并,windows远程使用linux节点
  • linux节点和Windows节点建立连接(网络原因,提供思路)

1.windows单节点

安装geth

下载地址:https://geth.ethereum.org/downloads/,下载之后是个 .exe文件,然后安装就好了,安装之后把geth的安装目录加入到系统环境变量的path里。验证是否安装成功,打开cmd窗口,输入 geth version 如果出来下面的内容,表示安装好了。(如果不加任何任何参数直接运行 geth ,会自动连接到以太坊公网,此时会开始同步区块)

初始化创世区块

新建个空文件夹,比如

然后在里面创建个first.json文件,文件名随意自己定吧,里面的内容如下:

{"config": {"chainId": 10, "homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0},"alloc"      : {},"coinbase"   : "0x0000000000000000000000000000000000000000","difficulty" : "0x20000","extraData"  : "","gasLimit"   : "0x2fefd8","nonce"      : "0x0000000000000042","mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp"  : "0x00"
}

然后打开cmd窗口,跳转到当前目录下执行命令:

geth --datadir .\nodedata0 init first.json

上面的命令的主体是 geth init,表示初始化区块链,命令可以带有选项和参数,其中–datadir选项后面跟一个目录名,这里为nodedata0,表示指定数据存放目录为 nodedata0, first.json是init命令的参数,就是刚才创建的json文件

出现Successfully表示初始化成功了(把这行命令保存为一个.cmd命令备用),这时候你会发现,你的目录下面自动生成了一个nodedata0的文件夹,目录如下:

其中geth/chaindata中存放的是区块数据,keystore中存放的是账户数据。

启动节点

执行命令:

geth --rpc --nodiscover --datadir  "./nodedata0"  --port 30303 --rpcapi "db,eth,net,web3" --rpccorsdomain "*" --networkid 1001 --ipcdisable console 2>>geth.log

参数说明

--nodiscover 关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络
--rpc 启用ipc服务,默认端口号8545
--datadir 区块链数据存储目录
--port 网络监听端口,默认30303
--rpcapi 表示可以通过ipc调用的对象
--rpccorsdomain 指定可以访问APi的domain地址,设置为“*”则任何地址都可以访问,这样做不安全
--networkid 网络标识,私有链取一个大于4的随意的值
console 打开一个可交互的javascript环境
2>>geth.log 把geth中的log信息导入geth.log,也可以不加这个,把信息直接输出在console里,这样直观
更多参数:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options
http://www.yaozihao.cn/2017/07/07/geth%E5%91%BD%E4%BB%A4%E9%80%89%E9%A1%B9%E4%BB%8B%E7%BB%8D/

出现javascript console说明节点启动成功了,geth.log文件也生成了

把这启动命令也保存start0.cmd命令,以后再启动这个节点直接双击这个cmd就行了

节点相关基本操作

  • 查看账户

这时候是没有账户的

  • 创建账户

personal.newAccount()

Passphrase是输入密码,下面的repeat passphrase是重复密码,创建的账户地址是:

0x8b2bd44cec6caedcc0664f965d895a17db326e0a

这是我们会看到nodedata0文件夹下面的keystore下面会多出个文件,就是保存账户信息

再查看账户列表,发现有账户了

如果你记不清楚personal有哪些方法,可以执行personal命令查看一下,其它的eth,miner也一样

  • 启动挖矿

miner.start()

看到null,不要慌,因为你的日志信息都保存到了geth.log文件里了,下面这小图标代表啥自己领会哈

挖了半天,到底挖了几个区块了?赚了多少以太币了?看下面的查询余额和查看区块数

另外说明一点,节点挖矿的以太币会自动存入到eth.coinbase账户里,默认是eth.accounts里的第一个,你也可以自己指定coinbase

  • 停止挖矿

miner.stop()

  • 查看账户余额

eth.getBalance

eth.accounts[0]得到的是账户地址而已,你可能被这么大的数值吓一跳,怎么这么多以太币?一个以太币等于10的18次方个wei,这里的数值是wei的个数,显示以太币的个数,可以用下面的命令,405个以太币,如果是真的,简直不要太爽,以太坊创始人V神以前肯定也在家里这么偷偷的挖了不少

  • 查看区块数

eth.blockNumber

81个区块,一个区块奖励5个以太币

  • 指定coinbase账户

先创建第二个账户,然后把第二个账户指定为coinbase,修改之前和修改之后已经改变

  • 转账

先创建第三个没有币的账户,从账户1转5个比特币到账户3里,有的同学会问,不是有个账户2吗,你怎么不用呢?因为转账发起了交易,然而发起交易仅仅是发起交易,交易要被确认需要打包进区块里,挖矿就是做这个的,挖矿本身的收益会存进coinbase账户里,而现在coinbase账户是账户2,所以不考虑账户2

再查看coinbase账户2的余额,不仅挖矿奖励,连交易费都收了哦

  • 退出

exit

验证私链

写了这么多,一顿操作猛如虎,这个私链到底能不能用?

我们用remix验证一样,连接这个私链

账户和余额信息会显示出来,如果你的工具找不到你的私链,请确认启动节点的参数中,有没有设置 --rpccorsdomain "*"

单节点就写到这里,下面是多节点的内容

2.windows多节点

我们在上面已经创建了一个节点了,下面我们直接创建第二个节点,然后连接两个节点,第二个节点的创建要满足下面条件

  • 创世区块的信息得一样

就是要用一样的.json配置文件初始化,因为区块链的本质就是所有节点记录的账本都是一样的,所以第一个区块的数据也得一致

  • rpcport 和 port参数必须和第一个不同

节点1 启动的命令没有这个参数rpcport,默认的值是8545,我们就用9545吧,port用30306

初始化创世区块

geth --datadir .\nodedata1 init first.json

自动创建了存放节点数据的文件夹nodedata1

启动节点

geth --rpc --rpcport 9545 --nodiscover --datadir  "./nodedata1"  --port 30306 --rpcapi "db,eth,net,web3" --rpccorsdomain "*" --networkid 1001 --ipcdisable console

nodiscover,ipcdisable,这两个参数很关键,windows没有ipcdisable参数,第二个节点启动会报错的。nodiscover让节点2不会被节点1自动扫描到。

节点1和节点2建立连接

我们用节点2主动添加节点1,两个节点只要一方主动建立连接就可以了,另一方会自动获得这个连接关系的,效果一样的

先查看节点1的enode信息,作为节点2 admin.addPeer()方法的参数

节点1的console:

节点2的console:

再看节点1的console:

再用remix连接一下我们的节点2吧

windows多个节点的私链就是这样了

3.linux创建节点并和windows节点建立连接

下载文件并上传服务器解压:https://geth.ethereum.org/downloads/

注意你的linux是多少位的就下载多少位的二进制文件,我的是32位的,我就下载32位的

然后把geth复制到/usr/bin目录下面,我们就可以使用geth命令了,geth help,出现下的界面,表示成功。

网上其它的文章都是先安装go语言,再下载geth源码编译安装,最终的效果都是一样的。

然后执行初始化区块的命令:

geth --datadir nodedata2 init first.json

命令跟在windows差不多,自动生成的nodedata2文件夹也是一样的

启动节点,步骤跟在windous一样

geth --rpc --rpcport 8545 --rpcaddr 65.49.132.28 --nodiscover --datadir  "/root/privatechain/nodedata2"  --port 30303 --rpcapi "db,eth,net,web3" --rpccorsdomain "*" --networkid 1001 --ipcdisable console

命令多了一个:

--rpcaddr 65.49.132.28

这个ip是linux服务器的地址,如果我们在windows本地想要访问服务器的私链,这个参数得加上

已经启动,我们可以在命令行窗口执行一些geth的命令

windows电脑上的remix访问一下linux的私链:

一个账户,地址也是一样的,it is working。

额外操作:把启动命令保存为linux可运行文件,方便以后启动

linux的私链运行成功了,接下来我们让window的节点和linux的节点连接起来(因为网络原因没实现,只有思路)

windows上已经有两个节点了,现在我们的linux要访问这两个节点,所以这两个节点的启动命令得加上--rpcaddr这个参数,但是这部分实现不了了,因为自己电脑连接的是路由器,直接用公网ip+端口号访问不到自己的电脑,要在路由器上做端口映射才能让服务器访问到自己的电脑,我没有路由器的登录权限,所以做不了了(有个什么软件,可以帮自己的电脑生成一个外网ip,有兴趣的朋友可以百度一下,然后继续走下去)

1.端口映射方法:http://service.tp-link.com.cn/detail_article_2441.html

2.节点建立连接方法应该跟windous连接点相连方法是一样的,关键是节点启动的时候加上--rpcaddr参数

3.祝好运!

搭建以太坊私链(单节点,多节点,windows,linux)相关推荐

  1. 搭建以太坊私链创建新账户时遇到“personal is not defined“错误

    在完成以太坊私链的初始化后,我尝试创建一个新用户却遇到如下报错. 我的配置如下: ubuntu-18.04.6-desktop-amd64.ios geth-alltools-linux-amd64- ...

  2. Windows环境下搭建基于PoA共识算法的多节点以太坊私链

    本文阐述在一台windows电脑上,搭建基于PoA共识算法的以太坊私链(3个挖矿节点),步骤如下: (1)生成3个矿工账号 假设3个节点的数据目录分别是: 节点1 e:\work\test\1_poa ...

  3. 以太坊私链搭建、truffle项目开发

    本文实现以下目标: 搭建一条以太坊私链 用企业级开发方式开发.部署一个项目 分析truffle执行过程 solidity.web3等的一些说明 Token ERC20标准 contract ERC20 ...

  4. CentOS 7.5 搭建以太坊私联(联盟链)及区块链浏览器

    环境: 操作系统为win10,虚拟化2个centos7.5 系统,cpu 4核,内存8G.本文将以node1,node2代表虚拟机节点1 和虚拟机节点2. 此篇将搭建2个节点,node1 会搭建区块链 ...

  5. 以太坊私链搭建(二)——genesis.json字段解读

    genesis.json文件用于配置生成以太坊私链网络的创世区块,当我们需要去创建一个创世区块时,我们可以通过修改genesis.json文件内的初始参数将这些数据写入创世区块.下面是以太坊官方文档给 ...

  6. 区块链开发之搭建以太坊私有链

    (一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...

  7. 【问题】以太坊私链连接钱包报错解决汇总

    以太坊私链连接钱包报错解决汇总 关键词 虚拟机 MetaMask 私有链 rpc 以太坊 问题简述 区块链私链搭建完成之后,连接虚拟机上的私链与MetaMask钱包过程调试问题解决,主要包括 以太坊命 ...

  8. 如何搭建以太坊私有链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...

  9. 区块链开发(五)搭建以太坊区块链浏览器

    经过前面文章介绍,已经搭建以太坊的区块链环境,但是没有一个界面能查看到区块链的块数等信息,不是很直观,本篇搭建以太坊区块链浏览器. 下载区块链浏览器代码 uiran@cuiran:~/ethereum ...

  10. 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B

    使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...

最新文章

  1. AI 版 Nature Index 排名,两种结果折射中国 AI 实力软肋
  2. 异形隔离java剧情_异形隔离攻略 系统上手教程 全剧情流程图文攻略(41)
  3. 奚记--最简洁的记账软件
  4. fedora17下配置tftp服务器
  5. 四柱加强版汉诺塔HanoiTower----是甜蜜还是烦恼
  6. java选中一格_java-选中排序(新手)
  7. 服务体系总出bug,咸鱼社交挤压,转转的综合性二手电商还好做吗?
  8. HDU4475(找规律+预处理加速)
  9. 对 *.google.com/* 产品进行大规模的 CSRFing 研究,意外获得3万美元奖金
  10. 语音网关典型配置实例
  11. eclipse 中使用字符流复制文件乱码解决
  12. reviewboard mysql_Linux ReviewBoard安装与配置
  13. 多一个渠道,多一份收益!
  14. 提高个人竞争力的三件法宝
  15. ArcGIS教程:要素类基础知识(一)
  16. Photoshop 制作水晶按钮
  17. 初中高中生用计算机,中学生如何科学的使用计算器?
  18. 图构建:领域本体设计原则与动态本体
  19. CF975C Valhalla Siege 题解
  20. Gittins index for MAB Problem

热门文章

  1. Comma Separated Values Format
  2. 应届生web前端面试题_前端开发应届生面试指南(含各大公司具体指南及面试真题)...
  3. ArcGIS影像多种裁剪方法
  4. PHP中 逗号,和句号.的区别
  5. cygwin装linux系统,给cygwin安装命令package
  6. mac转换pin计算机,MAC对应PIN码表-2012.3.4整理
  7. 6款沙发背景墙装饰画 总有一幅你喜欢的
  8. android 动态库符号表,Android NDK隐藏jni动态库的内部符号表
  9. 微信双开的登录取消没有回调
  10. IDEA Maven配置,Tomcat配置