etc dao分叉分析

  
分叉前:
  Height:    < Prev   1919999   Next >
  TimeStamp:    643 days 17 hrs ago (Jul-20-2016 01:20:38 PM +UTC)
  Transactions:    0 transactions and 0 contract internal transactions in this block
  Hash:    0xa218e2c611f21232d857e3c8cecdcdf1f65f25a4477f98f6f47e4063807f2308
  Parent Hash:    0x505ffd21f4cbf2c5c34fa84cd8c92525f3a719b7ad18852bffddad601035f5f4
  Sha3Uncles:    0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
  Mined By:    0x2a65aca4d5fc5b5c859090a6c34d164135398226 (DwarfPool1) in 3 secs
  Difficulty:    62,382,916,183,238
  Total Difficulty:    39,490,902,020,018,959,982
  Size:    526 bytes
  Gas Used:    0 (0.00%)
  Gas Limit:    4,707,788
  Nonce:    0x60832709c8979daa
  Block Reward:    5 Ether
  Uncles Reward:    0
  Extra Data:    DwarfPool (Hex:0x4477617266506f6f6c)

开始分叉:

新的代码生成一个新的块:
  Height: < Prev   1920000   Next >
  TimeStamp:  643 days 17 hrs ago (Jul-20-2016 01:20:40 PM +UTC)
  Transactions: 4 transactions and 0 contract internal transactions in this block
  Hash: 0x4985f5ca3d2afbec36529aa96f74de3cc10a2a4a6c44f2157a57d2c6059a11bb
  Parent Hash:  0xa218e2c611f21232d857e3c8cecdcdf1f65f25a4477f98f6f47e4063807f2308
  Sha3Uncles: 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
  Mined By: 0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1 (bw.com) in 2 secs
  Difficulty: 62,413,376,722,602
  Total Difficulty: 39,490,964,433,395,682,584
  Size: 976 bytes
  Gas Used: 84,000 (1.78%)
  Gas Limit:  4,712,384
  Nonce:  0xbede87201de42426
  Block Reward: 5.00168 Ether (5 + 0.00168)
  Uncles Reward:  0
  Extra Data: dao-hard-fork (Hex:0x64616f2d686172642d666f726b)

0x4985f5ca3d2afbec36529aa96f74de3cc10a2a4a6c44f2157a57d2c6059a11bb进行广播


旧的代码生成一个新的块:

  Height: < Prev   1920000   Next >
  TimeStamp:  643 days 17 hrs ago (Jul-20-2016 01:20:38 PM +UTC)
  Transactions: 0 transactions and 0 contract internal transactions in this block
  Hash: 0xa2************************
  Parent Hash:  0xa218e2c611f21232d857e3c8cecdcdf1f65f25a4477f98f6f47e4063807f2308
 


如果在1919999这个块及以前的的时候,因为if header.Number.Cmp(config.DAOForkBlock) < 0 || header.Number.Cmp(config.DAOForkBlock+10)>= 0, 新旧代码都可以兼容的.

A.1920000开始后,这个p2p的网络大家还是连接着的,那么,
1.  对于新版本的,在download到新版本块,头部校验通过,insertchain. 如果收到旧的版本生成的块,那么这个就出错了, 给抛弃(这个是ErrBadProDAOExtra,ErrBadNoDAOExtra,只会报告错误不会有后续处理)
2.  对于旧版本,则反之
3.  对于1,2的情况,会一直持续到 config.DAOForkBlock+10,即1920010,这时新旧的版本,已经各有11个不同的块了.

B.19200011开始,   parent := chain.GetHeader(header.ParentHash, number-1), 则各自的block在验证header之前取父块失败,在验证header之前就返回错误consensus.ErrUnknownAncestor,
这时这个块会给有可能放入futureBlocks的队列里, 前提是满足这个块的父块在futureBlocks的中, 这个只有当它的父块的时间在当前处理时间之后,即这里给直接给丢弃。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值