@@ -1559,6 +1559,23 @@ func (p *Parlia) Delay(chain consensus.ChainReader, header *types.Header, leftOv
15591559 return & delay
15601560}
15611561
1562+ // AssembleSignature assemble the signature for block header
1563+ func (p * Parlia ) AssembleSignature (block * types.Block ) (* types.Block , error ) {
1564+ header := block .Header ()
1565+ // Don't hold the val fields for the entire sealing procedure
1566+ p .lock .RLock ()
1567+ val , signFn := p .val , p .signFn
1568+ p .lock .RUnlock ()
1569+ sig , err := signFn (accounts.Account {Address : val }, accounts .MimetypeParlia , ParliaRLP (header , p .chainConfig .ChainID ))
1570+ if err != nil {
1571+ log .Error ("Sign for the block header failed when sealing" , "err" , err )
1572+ return nil , err
1573+ }
1574+ copy (header .Extra [len (header .Extra )- extraSeal :], sig )
1575+ block = block .WithSeal (header )
1576+ return block , nil
1577+ }
1578+
15621579// Seal implements consensus.Engine, attempting to create a sealed block using
15631580// the local signing credentials.
15641581func (p * Parlia ) Seal (chain consensus.ChainHeaderReader , block * types.Block , results chan <- * types.Block , stop <- chan struct {}) error {
@@ -2118,6 +2135,10 @@ func (p *Parlia) backOffTime(snap *Snapshot, header *types.Header, val common.Ad
21182135 backOffSteps [i ], backOffSteps [j ] = backOffSteps [j ], backOffSteps [i ]
21192136 })
21202137
2138+ for i := uint64 (0 ); i < uint64 (n ); i ++ {
2139+ log .Debug ("backOffTime" , "Number" , header .Number , "val" , validators [i ], "delay" , delay + backOffSteps [i ]* wiggleTime )
2140+ }
2141+
21212142 delay += backOffSteps [idx ] * wiggleTime
21222143 return delay
21232144 }
0 commit comments