以太坊系列之九: 从零一步一步搭建以太坊私有链

简介: 从零一步一步搭建以太坊私有链我会说明一步一步怎么做,同时说明可能的注意事项。1.下载geth这一步网上很多,就不细说了,windows的,linux的,mac都有。2. 创建genesis.json关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。

从零一步一步搭建以太坊私有链

我会说明一步一步怎么做,同时说明可能的注意事项。

1.下载geth

这一步网上很多,就不细说了,windows的,linux的,mac都有。

2. 创建genesis.json

关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。

我的genesis.json如下
{ "config": { "chainId": 89120348581, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "20", "gasLimit": "2100000", "alloc": { "0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" }, "0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" } } }
我这里预先给自己的测试账号分配了一些以太币,这样就不用挖矿了。

3.初始化区块链

这里需要注意的是,如果你要有多台电脑,那么每台电脑都要执行一遍下面的操作,也不能图省事,复制geth目录。
geth --datadir ~/eth/privnet/ init genesis.json,我设定的私有链主目录是~/eth/privnet,你可以根据自己的情况修改

4.节点运行

节点之间能够联通,首先要保证网络是通的,测试网络是否畅通,可以通过telnet ip 30303来测试,有时候由于防火墙或者nat等原因,有些节点之间是没法直接通信的.

在各个节点上运行下面命令
geth --datadir ~/eth/privnet --networkid 89120348581
这时候各个几点已经独立运行起来了,但是他们是没有连通的,因为他们的networkid,和创世块和以太坊网络上的都不一样,所以导致在p2p网络认证过程中会失败.

5.连接节点

在各自节点上运行geth attach来添加节点
各自节点信息可以通过admin.nodeInfo来获取,获取以后再其他节点通过
admin.addPeer('enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303')
来添加,

还有一种方式可以通过在运行参数中直接指定
如下:
geth.exe --datadir=d:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303
如果有多个node,用逗号分隔即可.

6.注意事项

  • 1) init genesis.json必须每个节点都运行一遍,否则添加节点的时候因为创世块不匹配,会失败,我就是在这里耽误了很久.
  • 2) 节点之间单向网络通就可以,也就是在nat环境下A可以直接访问B,那就用A添加B
  • 3) 后续转账等操作,必须启动挖矿,怎么挖矿,很简单,就是在启动的时候加上--mine参数就可以了.

7 加入我的私有链

  • 1) 将上面的genesis.json内容保存为c:\privnet\genesis.json
  • 2) 运行命令
    geth --datadir c:\privnet init genesis.json
  • 3) 启动节点
    geth.exe --datadir=c:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@123.206.176.142:30303
  • 4) 特别注意,genesis.json要一字不差,否则无法加入我的私有网络.
    在私有链上挖矿很容易,方便自己测试开发.
目录
相关文章
|
7月前
|
存储 区块链 数据安全/隐私保护
BSC链DAPP合约技术系统开发指南与需求
最重要的事情是为团队提供充分的理由说明去中心化是有意义的
|
9月前
|
安全 区块链
DAPP代币合约BSC链系统开发详细程序丨BSC链DAPP合约代币系统开发(项目案例)及源码逻辑
  Dapp的核心是智能合约,它定义了应用程序在区块链上运行的规则和逻辑。在设计智能合约时,需要仔细考虑业务逻辑,并确保安全性和可靠性。使用Solidity等语言编写智能合约,并进行测试和部署。
|
11月前
|
存储 区块链
DAPP链上智能合约开发稳定版丨DAPP智能合约链上系统开发规则及详情/源码版
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。是一个共享的分布式账本,其中交易通过附加块永久记录。
|
区块链
DAPP马蹄链智能合约系统开发功能详情丨DAPP马蹄链智能合约开发源码部署
 DAPP是DecentralizeDAPPlication的缩写,中文叫分布式应用/去中心化应用)。通常来说,不同的DAPP会采用不同的底层区快开发平台和共识机制,或者自行发布代币(也可以使用基于相同区快平台的通用代币)。
|
存储 安全
关于DAPP马蹄链合约开发逻辑
This article is compiled and released by**WeChaT: kaifa873**, which is only for reference of project development requirements!**telegram @ sleu88**
45 0
|
存储 区块链 Python
以太坊中如何获取另外一个智能合约部署的合约地址?
如何获取另外一个智能合约部署的合约地址? 我正试图从另一个工厂合约中签智能合约,然后重新部署新智能合约的地址。然而,它返回的地址是交易哈希值而不是合约地址。
2267 0
|
JSON Ubuntu 区块链
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
459 0
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
|
区块链 算法 开发者
带你读《深入理解以太坊》之一:以太坊概述
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
|
Go 区块链 iOS开发
搭建以太坊私有链
本文介绍在mac上搭建以太坊私有链。
3262 0
|
存储 新零售 区块链
以太坊智能合约生命周期
之前我们写过如何将以太坊智能合约通过truffle部署到区块链上。在本文将进一步了解以太坊智能合约。 智能合约的建立 当我们编写完成一个智能合约后,当它被部署到区块链时,我们可能会有一些操作要做。
1401 0