主页 > imtoken手机钱包 > Mac搭建以太坊私有链

Mac搭建以太坊私有链

imtoken手机钱包 2023-10-12 05:09:17

区块链学习的以太坊Solidity学习流程

文档过程和问题

一、安装

安装 go 版本的以太坊

brew tap ethereum/ethereum
brew install ethereum
# 如果希望基于ethereum的develop分支安装,执行 brew install ethereum --devel

问题:

1、由于我的MacOS系统没有更新,所以无法安装。 提示XCode版本太低。 更新XCode时提示OS版本过低。 没有办法重新更新macos monterey到最新版本,然后重新更新所有的软件。 一次

2.go安装过程中出现问题。 在继续之前,我必须单独安装。

安装成功后可以通过geth --help查看是否安装

2. 初始化(写入创世块)

自定义一个创世块的json配置文件genesis.json以太坊是私有链还是公有链,保存数据目录data

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "alloc": {},
    "nonce": "0x0000000000000042",
    "difficulty": "0x020000",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
    "gasLimit": "0x4c4b40"
}

然后运行初始化命令:

geth --datadir "./data" init ./genesis.json

结果异常如下:

原因:如果用比较短的负码写初始块,会报错。 修改json如下:

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00002",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

重复初始化命令以太坊是私有链还是公有链,初始化成功

此时目录结构变成如下:

其中keystore用于保存账户信息,geth用于保存区块信息

3.启动私链节点

geth --datadir "./data" --networkid 1001 console

–networkid选项后面跟一个数字,这里是1108,表示指定私有链的network id是1108,连接其他节点时会用到这个network id。 以太坊公网network id为1,为了不和公链网络冲突,运行私有链节点时必须指定自己的network id

以下输出表示成功:

先记录到这里,下一章会写账号创建和多私密节点挖矿