以太坊最详细私链搭建教程

第1步 - 创建datadir文件夹

      运行专用区块链时,强烈建议使用特定文件夹来存储专用区块链的数据(数据库和钱包),而不会影响用于存储来自公共区块链的数据的文件夹。在您的计算机上,创建将托管您的第一个矿工的文件夹:

命令:mkdir -p ~/ChainSkills/miner1

对第二个矿工重复操作

命令:mkdir -p ~/ChainSkills/miner2

第2步 - 创建Genesis文件

       每个区块链都以一个创世块开头,用于初始化区块链并定义加入网络的条款和条件。

我们的genesis块叫做“ genesis.json”  ,存储在“ 〜/ ChainSkills ”文件夹下。

在〜/ ChainSkills下创建一个名为genesis.json的文本文件,其中包含以下内容:

{
 "nonce": "0x0000000000000042",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "difficulty": "0x400",
 "alloc": {}, 
 "coinbase": "0x0000000000000000000000000000000000000000",
 "timestamp": "0x00",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "extraData": "0x436861696e536b696c6c732047656e6573697320426c6f636b",
 "gasLimit": "0xffffffff",
 "config": {
    "chainId": 42,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
 }
}

第3步 - 初始化私有区块链

是时候用genesis块初始化私有区块链了此操作将创建存储在专用于每个矿工的数据目录下的初始数据库。

步骤3.1 - 初始化矿工#1

输入以下命令为第一个矿工创建区块链:

命令:

cd ~/ChainSkills

geth --datadir ~/ChainSkills/miner1 init genesis.json

步骤3.2 - 初始化矿工#2

重复相同的操作,通过指定自己的目标文件夹(〜/ ChainSkills / miner2)来初始化第二个矿工:

命令:

cd ~/ChainSkills

geth --datadir ~/ChainSkills/miner2 init genesis.json

第4步 - 创建帐户

让我们为我们的矿工创建一些账户。

步骤4.1 - 矿工#1的账户

创建将用于运行节点的默认帐户。该帐户将接收矿工在私人区块链中创建的所有醚类。这些醚用于通过支付处理每笔交易所需的气体来测试我们的解决方案。要为矿工#1创建默认帐户,请键入以下命令。将密码保存在安全的地方:

命令:geth --datadir ~/ChainSkills/miner1 account new (可以添加多个账户测试)

这些帐户的钱包就在这里:ls -al ~/ChainSkills/miner1/keystore

要列出节点的所有帐户,请使用以下命令:

geth --datadir ~/ChainSkills/miner1 account list

步骤4.2 - 矿工#2的账户

重复相同的操作为第二个矿工创建默认帐户。区别在于目标文件夹(〜/ ChainSkills / miner2)。

geth --datadir ~/ChainSkills/miner2 account new

ls -al ~/ChainSkills/miner2/keystore

geth --datadir ~/ChainSkills/miner2 account list

步骤5.1 - 矿工#1:设置

让我们首先创建一个包含默认帐户密码的文件,这是我们为每个矿工创建的第一个帐户。在〜/ ChainSkills / miner1 /下创建一个password.sec文件,其中包含您在miner1上为第一个帐户配置的密码,以纯文本格式显示。

要启动矿工#1,我们需要运行以下命令:

geth --identity "miner1" --networkid 42 --datadir "~/ChainSkills/miner1" --nodiscover --mine --rpc --rpcport "8042" --port "30303" --unlock 0 --password ~/ChainSkills/miner1/password.sec --ipcpath "~/Library/Ethereum/geth.ipc"

主要参数的含义如下:

  • identity:我们节点的名称
  • networkid:此网络标识符是一个任意值,用于配对同一网络的所有节点。该值必须不同于0到3(已经被活链使用)
  • datadir:我们的私有区块链存储其数据的文件夹
  • rpc和rpcport:启用HTTP-RPC服务器并提供其侦听端口号
  • port:网络侦听端口号,节点彼此连接以传播新的事务和块
  • nodiscover:禁用发现机制(稍后我们将配对节点)
  • 我的:矿井和交易
  • unlock:默认帐户的ID
  • password:包含默认帐户密码的文件的路径
  • ipcpath:存储IPC套接字/管道文件名的路径

启动矿工后 :

打开矿工控制台: geth attach

可以在控制台 执行 geth命令了:

常用geth命令:

1、查看当前有哪些账户

eth.accounts

2、创建一个新账户

personal.newAccount(‘密码')

3、user1向user2转移以太币

eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

4、查看账户余额

> eth.getBalance(eth.accounts[ ])

5、解锁账户

> personal.unlockAccount(eth.accounts[], <password>) 

6、查看挖矿速率

> miner.getHashrate()

7、查看区块高度

 > eth.blockNumber

8、查看挖矿账户

> eth.coinbase

9、设置挖矿账户

> miner.setEtherbase(eth.accounts[0]) 

10、挖矿

> miner.start(8)

11、结束挖矿

> miner.stop()

到此为止一个私链就搭建完成了。下期将发布 2个矿工直接的转账交易。

学如逆水行舟,不进则退。心似平原跑马,易放难收。全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人。 也叫全端工程师(同时具备前端和后台能力),英文Full Stack engineer。【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。欢迎各位大神萌新一起专研分享技术。。。

欢迎加入 IT全栈工程师技术交流群:593674370

猜你喜欢

转载自blog.csdn.net/qq_16137795/article/details/82797861