以太坊PoA共识方式出块

192 阅读7分钟

以太坊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"
}