据我所知,EOA的状态是它的一套账户,无论是EOA的还是合同的。
但是genesis.json没有指定帐户,而是定义了,例如,difficulty和gas-limit (块)。
那么,为什么我经常看到genesis.json定义了基于Ethereum的块链的初始状态?
发布于 2017-11-10 07:45:02
当您启动一个新的starts链时,可以指定用户的帐户和余额,甚至可以在创世纪块中约定,这样区块链就可以从某种状态开始。
一个例子是具有QuorumChain共识的仲裁。这使用创世纪块创建一个联系,初始化它,并创建一些帐户与余额。在仲裁中没有工作证据的挖掘,所以没有以太被创建;它都需要在创世纪块中被指定,总供给是永远固定的。
请参阅此这里的示例,如下面的genesis.json所示。"alloc“块首先在地址0x20创建一个契约,并初始化它的存储。接下来的行初始化了一些帐户地址,其中包含了(私人连锁) Ether的大量余额。
{
"alloc": {
"0x0000000000000000000000000000000000000020": {
"code": "606060405236156100c45760e060020a60003504631290948581146100...<truncated>...",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x02",
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x04",
"0x29ecdbdf95c7f6ceec92d6150c697aa14abeb0f8595dd58d808842ea237d8494": "0x01",
"0x6aa118c6537572d8b515a9f9154be55a3377a8de7991cd23bf6e5ceb368688e3": "0x01",
...
}
},
"0xed9d02e382b34818e88b88a309c7fe71e65f419d": {
"balance": "1000000000000000000000000000"
},
"0xca843569e3427144cead5e4d5999a3d0ccf92b8e": {
"balance": "1000000000000000000000000000"
},
"0x0fbdc686b912d7722dc86510934589e0aaf3b55a": {
"balance": "1000000000000000000000000000"
},
...
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"config": {
"homesteadBlock": 0
},
"difficulty": "0x0",
"extraData": "0x",
"gasLimit": "0x2FEFD800",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"nonce": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}在公共Mainnet Ethereum链上,通过设计,初始状态基本上是空的,这是正确的,但这并不限制使用创世纪块在其他链中创建状态。
https://ethereum.stackexchange.com/questions/30366
复制相似问题