前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >geth 搭建 私有链节点

geth 搭建 私有链节点

作者头像
星辉
发布2019-12-25 17:56:40
3.5K1
发布2019-12-25 17:56:40
举报
文章目录

搭建 私有链节点

安装 geth:节点指令工具

操作
代码语言:javascript
复制
# Mac OS
brew tap ethereum/ethereum
brew install ethereum
geth --help # 检查是否安装成功

其他系统的 geth 安装操作:点击此处

初始化:节点启动准备

操作
代码语言:javascript
复制
# 创建节点工程, data0 存放区块链数据
mkdir $HOME/Desktop/private_chain
mkdir $HOME/Desktop/private_chain/data0

# 创建两个账户, 因测试,密码可为 123
geth --datadir $HOME/Desktop/private_chain/data0 account new
geth --datadir $HOME/Desktop/private_chain/data0 account new

我们得到两个公钥。例如 公钥1公钥2

零点:配置 创世区块

作用

作为区块链的起始区块,其他区块直接或间接引用到创世区块。因此要运行以太坊私有链,需要定义自己的创世区块,创世区块信息写在一个 JSON 格式的配置文件中。

操作

将下面的内容保存到一个 json 文件中,例如 genesis.json。保存在 $HOME/Desktop/private_chain/

代码语言:javascript
复制
{
  "config": {
        "chainId": 10,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {
    "公钥1": {
        "balance": "20000000000000000000"
    },
    "公钥2": {
        "balance": "0"
    }
  }, 
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000", 
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8", 
  "nonce"      : "0x0000000000000042",
  "mixHash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}
解释
代码语言:javascript
复制
├── config: 链配置,新区块的出块规则依赖链配置。
├────── chainId: 即区块链网络 id,用于连接其他节点,不同 id 网络的节点无法相互连接。以太坊公网 id 为 1。
├── alloc: 即分配,创世初始账户的资产配置,直接将账户资产写入区块中。
├── coinbase: 即「生成交易」中的 from。
├── difficulty: 挖矿难度系数,与出块速度成负相关。
├── extraData: 额外数据。
├── gasLimit: 十六进制,燃料上限。
├── nonce: 随机数。
├── parentHash: 母区块的哈希值。
└── timestamp: UTC 时间戳。
结构

此时的目录结构应该是这样的:

代码语言:javascript
复制
private_chain
├── data0
└── genesis.json

玩转 私有链节点

创世:写入创世区块

操作
代码语言:javascript
复制
# 进入工程目录
cd $HOME/Desktop/private_chain

# 写入创世区块
geth --datadir data0 init genesis.json

返回的信息中看到 Successfully wrote genesis state,写入创世区块成功。

入世:启动节点

操作
代码语言:javascript
复制
# 启动节点并进入交互式控制台
geth --datadir data0 --networkid 10086 console

返回的信息中看到 Welcome to the Geth JavaScript console!,启动节点成功。

交互:账户查询

操作
代码语言:javascript
复制
# 交互式控制台中

# 查询账户
> eth.accounts

# 查询账户余额
> eth.getBalance(eth.accounts[0])
> eth.getBalance(eth.accounts[1])

查询到第一个账户有余额 20000000000000000000,第二个账户有余额 0

交互:账户转账

操作
代码语言:javascript
复制
# 交互式控制台中

# 向第二个账户转账 5000 wei。报错 authentication needed: password or unlock。
eth.sendTransaction({'to': eth.accounts[1], 'from': eth.accounts[0], 'value': 5000})

# 转账前解锁
personal.unlockAccount(eth.accounts[0])

# 再转账则成功
eth.sendTransaction({'to': eth.accounts[1], 'from': eth.accounts[0], 'value': 5000})

# 开启挖矿对交易进行打包。打包一个区块之后就停止挖矿。
miner.start(1);admin.sleepBlocks(1);miner.stop();

经过上述操作,查看第二个账户余额,就会发现为 5000,即转账成功。

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搭建 私有链节点
    • 安装 geth:节点指令工具
      • 操作
    • 初始化:节点启动准备
      • 操作
    • 零点:配置 创世区块
      • 作用
      • 操作
      • 解释
      • 结构
  • 玩转 私有链节点
    • 创世:写入创世区块
      • 操作
    • 入世:启动节点
      • 操作
    • 交互:账户查询
      • 操作
    • 交互:账户转账
      • 操作
  • 参考
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档