目录
私网是由开发者自行组建的网络,不与主网和测试网相通,独立存在,主要用于个人测试或企业项目使用。
实战场景:搭建以太坊智能合约私网。
- {
- "config": {
- "chainId": 15,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0
- },
- "alloc" : {},
- "coinbase" : "0x0000000000000000000000000000000000000000",
- "difficulty" : "0x2",
- "extraData" : "",
- "gasLimit" : "0xffffffff",
- "nonce" : "0x0000000000000042",
- "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
- "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
- "timestamp" : "0x00"
- }
参数说明如下:
参数 | 说明 |
config | 项是定义链配置,会影响共识协议,虽然链配置对创世影响不大,但新区块的出块规则均依赖链配置 |
config.chainId | 网络ID,私网任意配置 |
coinbase | 挖矿后获得奖励的账户地址 |
difficulty | 挖矿难度 |
gasLimit | 一个区块所能容纳的 gas 上限 |
nonce | 随机值 |
mixhash | 256位哈希证明,与 nonce 结合,验证当前区块的有效性 |
extraData | 自定义附加信息 |
parentHash | 前一块的 hash 值,因为是创世区块,所以为 0 |
timestamp | UTC时间戳 |
alloc | 创世中初始账户资产配置。在生成创世区块时,将此数据集中的账户资产写入区块中。 |
geth init genesis.json --datadir ./data
初始化成功后 data 目录会有一些文件生成,具体如下:
- data
- ├── geth
- │ ├── chaindata
- │ │ ├── 000001.log
- │ │ ├── ancient
- │ │ │ ├── bodies.0000.cdat
- │ │ │ ├── bodies.cidx
- │ │ │ ├── bodies.meta
- │ │ │ ├── diffs.0000.rdat
- │ │ │ ├── diffs.meta
- │ │ │ ├── diffs.ridx
- │ │ │ ├── FLOCK
- │ │ │ ├── hashes.0000.rdat
- │ │ │ ├── hashes.meta
- │ │ │ ├── hashes.ridx
- │ │ │ ├── headers.0000.cdat
- │ │ │ ├── headers.cidx
- │ │ │ ├── headers.meta
- │ │ │ ├── receipts.0000.cdat
- │ │ │ ├── receipts.cidx
- │ │ │ └── receipts.meta
- │ │ ├── CURRENT
- │ │ ├── LOCK
- │ │ ├── LOG
- │ │ └── MANIFEST-000000
- │ ├── lightchaindata
- │ │ ├── 000001.log
- │ │ ├── ancient
- │ │ │ ├── bodies.0000.cdat
- │ │ │ ├── bodies.cidx
- │ │ │ ├── bodies.meta
- │ │ │ ├── diffs.0000.rdat
- │ │ │ ├── diffs.meta
- │ │ │ ├── diffs.ridx
- │ │ │ ├── FLOCK
- │ │ │ ├── hashes.0000.rdat
- │ │ │ ├── hashes.meta
- │ │ │ ├── hashes.ridx
- │ │ │ ├── headers.0000.cdat
- │ │ │ ├── headers.cidx
- │ │ │ ├── headers.meta
- │ │ │ ├── receipts.0000.cdat
- │ │ │ ├── receipts.cidx
- │ │ │ └── receipts.meta
- │ │ ├── CURRENT
- │ │ ├── LOCK
- │ │ ├── LOG
- │ │ └── MANIFEST-000000
- │ ├── LOCK
- │ └── nodekey
- └── keystore
-
- 6 directories, 44 files
geth --datadir ./data --networkid 15 --http --http.addr 0.0.0.0 --http.vhosts "*" --http.api "db,net,eth,web3,personal" --http.corsdomain "*" --snapshot --allow-insecure-unlock console 2> 1.log
参数 | 说明 |
datadir | 初始化的数据目录文件 |
networkid | 加入的网络ID, 与 config.chainId 值相同 |
port | 节点之间 P2P 通信端口 |
http | 开启远程调用 |
httpport | rpc 端口,默认 8545 |
httpcorsdomain | 可接受请求来源的域名列表 |
console | 进入管理台 |
至此,节点启动成功,后续就可以准备智能合约的开发了。