极路由B70关闭root-(极路由b70设置)

192.168.0.1 次浏览手机阅读
极路由B70关闭root (极路由b70设置)

原文链接:https://learnblockchain.cn/2019/04/08/genesis/

请前往简单的区块链主站, 获取最新内容。

作为第零块,创世区块直接或间接引用于创世区块。因此,在节点启动之初,必须载入正确的创世区块信息,不得任意修改。

以太坊允许通过创造配置文件初始化创造块,也可以使用选择使用多个内置网络环境的创造配置。以太坊主网创造配置默认使用。

创建配置文件

假如你需要建立以太坊私有链,那么了解创造配置是必要的,否则你可能不在乎创造配置。下面是一份 JSON 创造配置格式示例:

{

\\"config\\":{

\\"chainId\\": 1,

\\"homesteadBlock\\": 1150000,

\\"daoForkBlock\\": 1920000,

\\"daoForkSupport\\": true,

\\"eip150Block\\": 2463000,

\\"eip150Hash\\": \\"0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0\\",

\\"eip155Block\\": 2675000,

\\"eip158Block\\": 2675000,

\\"byzantiumBlock\\": 4370000,

\\"constantinopleBlock\\": 7280000,

\\"petersburgBlock\\": 7280000,

\\"ethash\\":{}

},

\\"nonce\\": \\"0x42\\",

\\"timestamp\\": \\"0x0\\",

\\"extraData\\": \\"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa\\",

\\"gasLimit\\": \\"0x1388\\",

\\"difficulty\\": \\"0x400000000\\",

\\"mixHash\\": \\"0x0000000000000000000000000000000000000000000000000000000000000000\\",

\\"coinbase\\": \\"0x0000000000000000000000000000000000000000\\",

\\"number\\": \\"0x0\\",

\\"gasUsed\\": \\"0x0\\",

\\"parentHash\\": \\"0x0000000000000000000000000000000000000000000000000000000000000000\\",

\\"alloc\\":{

\\"000d836201318ec6899a67540690382780743280\\":{

\\"balance\\": \\"0xad78ebc5ac6200000\\"

},

\\"001762430ea9c3a26e5749afdb70da5f78ddbb8c\\":{

\\"balance\\": \\"0xad78ebc5ac6200000\\"

}

}

}

按配置用途可分为三类:

链配置

config项目定义链配置,会影响共识协议。虽然链配置对创造影响不大,但新区块的规则取决于链配置。

创造区块头信息配置

nonce:随机数对应创世区块 Nonce 字段。

创造区块头信息配置

nonce:随机数对应创世区块 Nonce 字段。

timestamp:UTC时间戳对应创世区块 Time字段。

extraData:额外数据对应创世区块 Extra 字段。

gasLimit:必填、燃料上限对应创世区块 GasLimit 字段。

difficulty:必填、难度系数对应创世区块 Difficulty 字段。搭建私有链时,需要根据情况选择合适的难度值,以调整块。

minHash:哈希值对应创世区块MixDigest字段。和 nonce 一起证明区块上有足够的计算。

coinbase:地址对应创世区块Coinbase字段。

初始账户资产配置

alloc 项目是创世中初始账户资产配置。在世区块生成时,将数据集中的账户资产写入区块,相当于预挖矿。这对开发测试和私有链非常有用,可以直接为任何多个账户分配资产,无需挖掘。

自定义创世

如果你计划部署以太坊私有网络或独立的测试环境,你需要定制它并初始化它。为统一沟通,建议在用户根目录中创建文件夹 deepeth,作为以太坊设计与实现的电子书学习目录。

mkdir $HOME/deepeth && cd $HOME/deepeth

在创造时准备两个以太坊账户存入资产。

geth --datadir $HOME/deepeth account new

由于是学习使用,建议使用统一密码 foobar,执行两个命令,创建两个账户。这里使用 --datadir 参数指定了以太坊运行时的数据存储目录,允许每个人在本课程的学习文件夹中统一存储数据。

然后保存以下配置内容 $HOME/deepeth/genesis.json 文件,其中 alloc 项目被新创建的两个以太坊账户地址取代。

{

\\"config\\":{

\\"chainId\\": 8888,

\\"homesteadBlock\\": 0,

\\"daoForkBlock\\": 0,

\\"daoForkSupport\\": true,

\\"eip150Block\\": 0,

\\"eip155Block\\": 0,

\\"eip158Block\\": 0,

\\"byzantiumBlock\\": 0,

\\"constantinopleBlock\\": 0,

\\"petersburgBlock\\": 0,

\\"ethash\\":{}

},

\\"nonce\\": \\"0x42\\",

\\"timestamp\\": \\"0x0\\",

\\"extraData\\": \\"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa\\",

\\"gasLimit\\": \\"0x1388\\",

\\"difficulty\\": \\"0x1\\",

\\"alloc\\":{

\\"093f59f1d91017d30d8c2caa78feb5beb0d2cfaf\\":{

\\"balance\\": \\"0xffffffffffffffff\\"

},

\\"ddf7202cbe0aaed1c2d5c4ef05e386501a054406\\":{

\\"balance\\": \\"0xffffffffffffffff\\"

}

}

}

然后,执行 geth 子命令 init 创造区块的初始化。

geth --datadir $HOME/deepeth init genesis.json

实施成功后,可启动私有链:

geth --maxpeers 0 --datadir $HOME/deepeth console

执行下列命令,您可以查看前面创建的两个帐户,现有资产:

eth.getBalance(eth.accounts[0])

// 18446744073709551615

eth.getBalance(eth.accounts[1])

// 18446744073709551615

至此,我们已经完成了创造定制版。

内置创新配置

以上我已经完成了自定义创造,但以太坊作为去中心平台,需要很多节点一起参与。

内置创新配置

以上我已经完成了自定义创造,但以太坊作为一个分散的平台,需要很多节点一起参与。仅仅为了测试,建立多个节点的私人链更麻烦。想和别人联调,或者需要在测试网络中测试DAPP该怎么办?以太坊测试网络可以使用。以太坊公开的测试网络有 5 个,还在运行的有 4 具体见下表。

测试网共识机制的块间隔提供了在线时间备注状态

MordenPoW由于难度炸弹,以太坊官方2015.7被迫退役stopped

RopstenPoW以太坊官方2016.1130秒取代Mordenrunning

KovanPoA4秒以太坊钱包Parity2017年3月开发团队不支持gethrunning

RinkebyPoA2017.4年以太坊官方15秒最常用,只支持gethrunning

SokolPoA5秒以太坊官方POA.network2017年12不支持团队gethrunning

G?rliPoA2018.9以太坊柏林社区15秒以太坊2.0实验场running

支持 geth 以太坊代码中内置了三个测试网络的创建配置,具体见 core/genesis.go 文件:

// DefaultTestnetGenesisBlock returns the Ropsten network genesis block.

func DefaultTestnetGenesisBlock() *Genesis{}

// DefaultRinkebyGenesisBlock returns the Rinkeby network genesis block.

func DefaultRinkebyGenesisBlock() *Genesis

// DefaultGoerliGenesisBlock returns the G?rli network genesis block.

func DefaultGoerliGenesisBlock() *Genesis{}

当然,以太坊主网的创会缺少创意配置 geth 默认配置操作。

// DefaultGenesisBlock returns the Ethereum main net genesis block.

func DefaultGenesisBlock() *Genesis{}

如果您不想为开发测试定制创建配置文件,因此,以太坊还为本地开发提供配置。

// DeveloperGenesisBlock returns the 'geth --dev' genesis block. Note, this must

// be seeded with the

func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis

运行 geth --dev console 可临时使用。但是,如果需要长期使用这种模式,则需要指定 datadir。 {x

喜欢 ()