目录
一、简介
私网是由开发者自行组建的网络,不与主网和测试网相通,独立存在,主要用于个人测试或企业项目使用。
二、知识点
智能合约
以太坊私网
创世区块
部署以太坊私网
启动以太坊节点
三、菜鸟实战
实战场景:搭建以太坊智能合约私网。
1、配置创世区块
{
"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 | 创世中初始账户资产配置。在生成创世区块时,将此数据集中的账户资产写入区块中。 |
2、数据初始化
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
3、启动节点
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 | 进入管理台 |
至此,节点启动成功,后续就可以准备智能合约的开发了。