以太坊POW方式出块,是以工作量方式出块。当没有交易时也会出块,对于智能合约使用者来说,空快将大量浪费磁盘空间。
POA即资产证明,通过指定账号和节点进行出块,主要在创世块配置文件中添加以下参数实现。 可以通过修改出块周期"period": 0, 从而实现没有交易时,不出块,从而节省磁盘空间。
"clique": {
"period": 0, // 出块周期,单位为秒,默认15秒。改值如果为0,则没有交易时将不出块
"epoch": 30000 // 切换验证者的周期,单位为区块数,默认30000个区块。
}
"extraData": "0x000000000000000000000000000000000000000000000000000000000000000004819FcA652AD35F9cD688aAAfa53aD61DDA21990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", //这里设置出块账号 64位+账号+65*2位;
完整以太坊PoA共识方式出块完整配置、配置文件genesis.json
{
"config": {
"chainId": 456719,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"clique": {
"period": 0, // 出块周期,单位为秒,默认15秒。改值如果为0,则没有交易时将不出块
"epoch": 30000 // 切换验证者的周期,单位为区块数,默认30000个区块。
}
},
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x00100000",
"coinbase": "0x3333333333333333333333333333333333333333",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x000000000000000000000000000000000000000000000000000000000000000004819FcA652AD35F9cD688aAAfa53aD61DDA21990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", //这里设置出块账号 64位+账号+65*2位;
"gasLimit": "0x8000000",
"alloc": {
"0x04819FcA652AD35F9cD688aAAfa53aD61DDA2199": {
"balance": "99999999999999999999"
},
"0x59fE0911B06B1Fe0136744D383502da57c0c1229": {
"balance": "99999999999999999999"
}
}
}
验证
> eth.sendTransaction({ from:eth.coinbase, to:"0x59fE0911B06B1Fe0136744D383502da57c0c1229",value: 1});
"0x9fdde975c63cde9a2b741022a488b50ce1897c024476281b6461f3ea488f4750"
> eth.getTransactionReceipt("0x9fdde975c63cde9a2b741022a488b50ce1897c024476281b6461f3ea488f4750");
{
blockHash: "0xc35d93dd73dac56075539fb87cee8f5b6c55ff3465cada34468dcd5891cd1a08",
**blockNumber: 1, ##此处为出块编号 **
contractAddress: null,
cumulativeGasUsed: 21000,
effectiveGasPrice: 1000000000,
from: "0x04819fca652ad35f9cd688aaafa53ad61dda2199",
gasUsed: 21000,
logs: [],
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
status: "0x1",
to: "0x59fe0911b06b1fe0136744d383502da57c0c1229",
transactionHash: "0x9fdde975c63cde9a2b741022a488b50ce1897c024476281b6461f3ea488f4750",
transactionIndex: 0,
type: "0x0"
}