主页 > imtoken安全下载 > 搭建以太坊私有链(单节点、多节点、windows、linux)

搭建以太坊私有链(单节点、多节点、windows、linux)

imtoken安全下载 2023-05-05 07:27:57

网上有很多关于如何搭建私链的文章,但是看起来都一样,都是一样的,很难找到不同的地方。 新鲜知识很难。 本文是总结那些文章的内容,从使用私有链的角度来写的。 比较全面的一篇博客,包括以下几点: 1. windows单节点安装geth

下载地址:下载后为.exe文件,安装即可。 安装完成后,将geth安装目录添加到系统环境变量的路径中。 验证是否安装成功,打开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控制台说明节点启动成功,同时也生成了geth.log文件

以太坊搭建私链_以太坊全节点搭建_搭建以太坊节点

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

保存启动命令以及start0.cmd命令,以后启动节点直接双击cmd即可。

节点相关基本操作

以太坊搭建私链_以太坊全节点搭建_搭建以太坊节点

目前没有账号

个人的。 新账户()

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

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

0x8b2bd44cec6caedcc0664f965d895a17db326e0a

这里我们会看到在nodedata0文件夹下的keystore下会有一个额外的文件,就是用来保存账户信息的

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

再次查看账户列表,发现有一个账户

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

如果不记得个人的方法,可以执行个人命令查看。 其他eth和矿工也是如此

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

miner.start()

以太坊搭建私链_搭建以太坊节点_以太坊全节点搭建

看到null不要惊慌,因为你的日志信息已经保存在geth.log文件中了。 您可以理解下面的小图标代表什么。

以太坊搭建私链_以太坊全节点搭建_搭建以太坊节点

挖了半天,挖了多少块? 你赚了多少以太币?看看查询余额,看看下面的区块数

另外,节点挖出的以太坊会自动存入eth.coinbase账户。 默认是 eth.accounts 中的第一个。 您也可以自己指定 coinbase。

矿工。 停止()

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

伦理。 取得平衡

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

eth.accounts[0]得到的是账户地址,这么大的值大家可能会奇怪,为什么会有这么多以太币?一个以太币等于10的wei的18次方,这里的值就是数量wei,要显示ether的数量,可以用下面的命令,405 ether,如果是真的,简直不要太爽,ether V神,方方的创始人,一定在家里偷偷挖了很多前。

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

eth.blockNumber

以太坊搭建私链_搭建以太坊节点_以太坊全节点搭建

81个区块,每个区块奖励5 ETH

先创建第二个账户,然后指定第二个账户为coinbase,修改前后有变化

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

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

搭建以太坊节点_以太坊搭建私链_以太坊全节点搭建

然后查看coinbase账户2的余额,不仅挖矿奖励,还收取了交易手续费。

搭建以太坊节点_以太坊搭建私链_以太坊全节点搭建

出口

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

验证私有链

写了这么多,操作起来猛如虎。 可以使用这个私人链接吗?

我们使用 remix 来验证,连接到这个私有链

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

将显示帐户和余额信息。 如果您的工具找不到您的私有链,请确认启动节点的参数中是否设置了--rpccorsdomain "*"

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

2.windows多节点

上面我们已经创建了一个节点,下面我们直接创建第二个节点,然后将两个节点连接起来,第二个节点的创建必须满足以下条件

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

节点1启动的命令没有rpcport这个参数,默认值8545,我们用9545,端口用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的控制台:

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

节点2的控制台:

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

再看节点1的控制台:

搭建以太坊节点_以太坊搭建私链_以太坊全节点搭建

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

然后使用 remix 连接到我们的节点 2

以太坊搭建私链_以太坊全节点搭建_搭建以太坊节点

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

windows多节点私有链是这样的

3、linux创建节点并与windows节点建立连接

下载文件并上传到服务器解压:

注意你的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的私有链接:

以太坊全节点搭建_搭建以太坊节点_以太坊搭建私链

以太坊搭建私链_以太坊全节点搭建_搭建以太坊节点

一个帐户,地址是相同的,它正在工作。

附加操作:将启动命令保存为linux可执行文件,方便以后启动:

搭建以太坊节点_以太坊全节点搭建_以太坊搭建私链

以太坊全节点搭建_以太坊搭建私链_搭建以太坊节点

linux私链运行成功,然后我们把window节点和linux节点连接起来(由于网络原因,没有实现,仅想法)

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

1、端口映射方法:

2、节点的连接方式要和windous连接点一样。 关键是在节点启动的时候加上--rpcaddr参数

3.祝你好运!