> 文档中心 > 【区块链实战】如何搭建以太网智能合约私网

【区块链实战】如何搭建以太网智能合约私网

目录

一、简介

二、知识点

智能合约

以太坊私网

创世区块

部署以太坊私网

启动以太坊节点

三、菜鸟实战

1、配置创世区块

2、数据初始化

3、启动节点


一、简介

私网是由开发者自行组建的网络,不与主网和测试网相通,独立存在,主要用于个人测试或企业项目使用。

二、知识点

  • 智能合约

  • 以太坊私网

  • 创世区块

  • 部署以太坊私网

  • 启动以太坊节点

三、菜鸟实战

实战场景:搭建以太坊智能合约私网。

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└── keystore6 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

进入管理台

至此,节点启动成功,后续就可以准备智能合约的开发了。