如何在geth中创建genesis.json_如何搭建相互转账的多节点私有链

b9af323aedca95bb9fd558b0b8cb853f.png

本文通过geth搭建多节点私有链, 并且命令行实现多节点之前的相互转账

一、环境要求

  1. 需要预先安装好golang, 以及 geth客户端环境
geth version # 命令行输入

看到如下输入, 表示安装成功:

Geth
Version: 1.8.3-stable
Git Commit: 329ac18ef617d0238f71637bffe78f028b0f13f7
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.10
Operating System: darwin

二、搭建私有链

  1. 在启动私有链之前, 需要指定一些创世区块的数据, 所以, 预先需要有一个创世区块的配置文件
cd ~/geth_test; cat > genesis.json <<EOF
{
  "config": {
    "chainID": 1024,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x400",
  "extraData": "",
  "gasLimit": "0x2fefd8",
  "nonce": "0x0000000000000000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}
EOF
  • chainId: 用于标记一条以太链的ID,它必须和你的代码中交易时的chainId一致。
  • homesteadBlock: 值为0表示,它使用ethereum homestead release。Homestead是第二个重要的以太坊版本。
  • eip155Block/eip158Block: 值0表示,该块支持EIP(ethereum改进建议)155/158
  • alloc: 预先指定账户, 和账户对应的账户余额
"alloc"
  • coinbase: 默认的矿工账号,挖矿成功时会默认把所得的挖矿奖励存入这个账号
  • difficulty: 设置挖矿难度,私有链在测试时可将该值设置小点,使得区块容易被挖出来,测试效率更高
  • extraData: 附加信息,随便填
  • gasLimit: GAS 的消耗量限制,用来限制区块能包含的交易信息总和
  • nonce: 一个 64 位随机数,用于挖矿
  • mixhash: 与 nonce 配合用于挖矿
  • parentHash: 上一个区块的 hash 值,创世块的该值为 0
  • timestamp: 设置创世块的时间戳
  • 以创世区块文件, 进行初始化链, 并且启动节点
# 初始化创世区块
geth --datadir 
  • 节点的相关操作:
# 查看账号,  创世文件alloc中可以预先设置
eth.accounts # 此时为 []
# 创建账号
personal.newAccount("123") # 此时 keystore中被写入内容. 并且 eth.accounts 有值
# 获取账户余额
eth.getBalance(eth.accounts[0])
# 挖矿账户
eth.coinbase  # 默认会设置成 eth.accounts中第一个账号
# 挖矿
miner.strat() # 使用eth.coinbase进行挖矿
# 停止挖矿
miner.stop()
# 手动设置挖矿账户
miner.setEtherbase(eth.accounts[1]) # 节点重启, 那么会默认设置会 eth.accounts中第一个账户

# 查看节点信息
admin.nodeInfo
# 检测查看所有节点
admin.peers

三、多节点相互转账

3.1 启动第二个节点, 须跟其他节点的networkid相同, 才能进行连接

# 创建私有链
   geth --datadir 

3.2 查看节点2信息

# 节点2
admin.nodeInfo

结果如下:

{
     
  • encode: 节点编码, 根据此编码进行添加节点

3.3 节点1进行添加节点, 指定节点2的encode

# 节点1
admin.addPeer

3.4 节点1和节点2进行相互转账

​ 3.4.1给节点2创建账号

# 节点2
personal.newAccount

结果:

"0x6d9001d15cc6ed6738ff5aaac6fa1ae8f5ea7cf0"

​ 3.4.2节点1解锁账号. 账号进行转账, 必须先进行解锁, 输入密码, 才能完成转账.

# 节点1
personal.unlockAccount

3.4.3 此时, 转账交易, 已加入交易池, txpool中, 是按照gas费用最高, 交易nonce值越小的进行排序, 打包区块, 全节点本地执行交易,

直到成功挖矿, 广播区块到全网之后, 交易才会真正的被写入区块链

# 进行挖矿
miner.start

​ 3.4.4 此时转账以完成, 通过查看节点2余额来进行验证

# 查看节点2账户余额
eth.getBalance
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用geth创建基于联盟链的私有区块链,拥有自己的节点genesis区块,以及创建10个合约账户的步骤: **1. 安装geth** 首先需要安装geth,可以从官网下载二进制文件或者通过包管理器进行安装。 **2. 创建genesis区块** 在创建私有区块链之前,需要先创建genesis区块,可以使用puppeth工具来完成。puppeth是一个命令行工具,可以帮助我们创建和管理私有区块链。 使用以下命令来启动puppeth: ``` puppeth ``` 根据提示进行以下设置: - 输入一个名字来创建一个新的网络 - 选择一个网络类型,选择2(Configure new genesis) - 选择网络协议,选择1(Ethash - proof-of-work) - 选择预分配的币数,输入0 - 输入一个新的地址作为挖矿奖励的收件人地址 - 输入一个新的账户地址,用于签署genesis区块 - 选择一个密码,用于加密私钥 - 选择一个目标平台,选择1(Ethereum) - 选择一个链ID,输入一个数字作为你的私有链ID - 选择是否要使用Clique共识算法,选择2(No) 完成以上设置后,puppeth会自动创建genesis.json文件,该文件包含了我们需要在geth使用的genesis区块数据。 **3. 初始化节点** 接下来需要初始化节点,使用以下命令: ``` geth --datadir /path/to/chain init /path/to/genesis.json ``` 其,/path/to/chain是你想要存储区块链数据的目录,/path/to/genesis.json是上一步生成的genesis.json文件的路径。 **4. 创建账户** 使用以下命令来创建账户: ``` geth --datadir /path/to/chain account new ``` 这将会提示你输入一个密码,该密码将会用于加密账户的私钥。创建完毕后,你将会得到一个账户地址。 重复以上步骤,创建10个账户。 **5. 启动节点** 使用以下命令来启动节点: ``` geth --datadir /path/to/chain --networkid [network_id] --nodiscover console ``` 其,/path/to/chain是你的区块链数据目录,[network_id]是你在puppeth设置的私有链ID。 启动后,会进入geth控制台,可以在控制台进行各种操作,例如挖矿、转账等。 **6. 解锁账户** 在控制台,使用以下命令来解锁账户: ``` personal.unlockAccount(address, password, duration) ``` 其,address是你的账户地址,password是你在创建账户时设置的密码,duration是解锁时间,单位为秒。 解锁账户后,可以使用以下命令来查询账户余额: ``` eth.getBalance(address) ``` 以上就是使用geth创建基于联盟链的私有区块链,拥有自己的节点genesis区块,以及创建10个合约账户的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值