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