Skip to content

Commit 0dcffb8

Browse files
committed
[[FIX]] sort parachain transaction without miner tx
1 parent e87d9cc commit 0dcffb8

1 file changed

Lines changed: 32 additions & 31 deletions

File tree

plugin/consensus/para/parasync.go

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
defaultMaxSyncErrCount = int32(100)
2323
)
2424

25-
//blockSyncClient 区块同步控制和状态变量
25+
// blockSyncClient 区块同步控制和状态变量
2626
type blockSyncClient struct {
2727
paraClient *client
2828
//notifyChan 下载通知通道
@@ -43,7 +43,7 @@ type blockSyncClient struct {
4343
isSyncFirstCaughtUp bool
4444
}
4545

46-
//nextActionType 定义每一轮可执行操作
46+
// nextActionType 定义每一轮可执行操作
4747
type nextActionType int8
4848

4949
const (
@@ -55,7 +55,7 @@ const (
5555
nextActionAdd
5656
)
5757

58-
//blockSyncState 定义当前区块同步状态
58+
// blockSyncState 定义当前区块同步状态
5959
type blockSyncState int32
6060

6161
const (
@@ -84,12 +84,12 @@ func newBlockSyncCli(para *client, cfg *subConfig) *blockSyncClient {
8484
return cli
8585
}
8686

87-
//syncHasCaughtUp 判断同步是否已追赶上,供发送层调用
87+
// syncHasCaughtUp 判断同步是否已追赶上,供发送层调用
8888
func (client *blockSyncClient) syncHasCaughtUp() bool {
8989
return atomic.LoadInt32(&client.isSyncCaughtUpAtom) == 1
9090
}
9191

92-
//handleLocalChangedMsg 处理下载通知消息,供下载层调用
92+
// handleLocalChangedMsg 处理下载通知消息,供下载层调用
9393
func (client *blockSyncClient) handleLocalChangedMsg() {
9494
client.printDebugInfo("Para sync - notify change")
9595
if client.getBlockSyncState() == blockSyncStateSyncing || client.paraClient.isCancel() {
@@ -99,21 +99,21 @@ func (client *blockSyncClient) handleLocalChangedMsg() {
9999
client.notifyChan <- true
100100
}
101101

102-
//handleLocalCaughtUpMsg 处理下载已追赶上消息,供下载层调用
102+
// handleLocalCaughtUpMsg 处理下载已追赶上消息,供下载层调用
103103
func (client *blockSyncClient) handleLocalCaughtUpMsg() {
104104
client.printDebugInfo("Para sync -notify download has caughtUp")
105105
if !client.downloadHasCaughtUp() {
106106
client.setDownloadHasCaughtUp(true)
107107
}
108108
}
109109

110-
//createGenesisBlock 创建创世区块
110+
// createGenesisBlock 创建创世区块
111111
func (client *blockSyncClient) createGenesisBlock(newblock *types.Block) error {
112112
return client.writeBlock(zeroHash[:], newblock)
113113
}
114114

115-
//syncBlocks 区块执行线程
116-
//循环执行
115+
// syncBlocks 区块执行线程
116+
// 循环执行
117117
func (client *blockSyncClient) syncBlocks() {
118118

119119
client.syncInit()
@@ -136,7 +136,7 @@ out:
136136
client.paraClient.wg.Done()
137137
}
138138

139-
//批量执行同步区块
139+
// 批量执行同步区块
140140
func (client *blockSyncClient) batchSyncBlocks() {
141141
client.setBlockSyncState(blockSyncStateSyncing)
142142
client.printDebugInfo("Para sync - syncing")
@@ -178,7 +178,7 @@ func (client *blockSyncClient) batchSyncBlocks() {
178178

179179
}
180180

181-
//获取每一轮可执行状态
181+
// 获取每一轮可执行状态
182182
func (client *blockSyncClient) getNextAction() (nextActionType, *types.Block, *pt.ParaLocalDbBlock, int64, error) {
183183
lastBlock, err := client.paraClient.getLastBlockInfo()
184184
if err != nil {
@@ -229,9 +229,9 @@ func (client *blockSyncClient) getNextAction() (nextActionType, *types.Block, *p
229229
}
230230
}
231231

232-
//根据当前可执行状态执行区块操作
233-
//返回参数
234-
//bool 是否已完成同步
232+
// 根据当前可执行状态执行区块操作
233+
// 返回参数
234+
// bool 是否已完成同步
235235
func (client *blockSyncClient) syncBlocksIfNeed() (bool, error) {
236236
nextAction, lastBlock, localBlock, lastLocalHeight, err := client.getNextAction()
237237
if err != nil {
@@ -283,7 +283,7 @@ func (client *blockSyncClient) syncBlocksIfNeed() (bool, error) {
283283

284284
}
285285

286-
//批量删除下载层缓冲数据
286+
// 批量删除下载层缓冲数据
287287
func (client *blockSyncClient) delLocalBlocks(startHeight int64, endHeight int64) error {
288288
if startHeight > endHeight {
289289
return errors.New("para sync - startHeight > endHeight,can't clear local blocks")
@@ -313,7 +313,7 @@ func (client *blockSyncClient) delLocalBlocks(startHeight int64, endHeight int64
313313
return client.paraClient.setLocalDb(set)
314314
}
315315

316-
//最低高度没有设置的时候设置一下最低高度
316+
// 最低高度没有设置的时候设置一下最低高度
317317
func (client *blockSyncClient) initFirstLocalHeightIfNeed() error {
318318
height, err := client.getFirstLocalHeight()
319319
cfg := client.paraClient.GetAPI().GetConfig()
@@ -329,7 +329,7 @@ func (client *blockSyncClient) initFirstLocalHeightIfNeed() error {
329329
return err
330330
}
331331

332-
//获取下载层缓冲数据的区块最低高度
332+
// 获取下载层缓冲数据的区块最低高度
333333
func (client *blockSyncClient) getFirstLocalHeight() (int64, error) {
334334
cfg := client.paraClient.GetAPI().GetConfig()
335335
key := calcTitleFirstHeightKey(cfg.GetTitle())
@@ -355,7 +355,7 @@ func (client *blockSyncClient) getFirstLocalHeight() (int64, error) {
355355
return height.Data, nil
356356
}
357357

358-
//清除指定数量(localCacheCount)以前的区块
358+
// 清除指定数量(localCacheCount)以前的区块
359359
func (client *blockSyncClient) clearLocalOldBlocks() error {
360360
lastLocalHeight, err := client.paraClient.getLastLocalHeight()
361361
if err != nil {
@@ -414,17 +414,14 @@ func (client *blockSyncClient) addMinerTx(preStateHash []byte, block *types.Bloc
414414
return nil
415415
}
416416

417-
//添加一个区块
417+
// 添加一个区块
418418
func (client *blockSyncClient) addBlock(lastBlock *types.Block, localBlock *pt.ParaLocalDbBlock) error {
419419
cfg := client.paraClient.GetAPI().GetConfig()
420420
var newBlock types.Block
421421
newBlock.ParentHash = lastBlock.Hash(cfg)
422422
newBlock.Height = lastBlock.Height + 1
423423
newBlock.Txs = localBlock.Txs
424-
err := client.addMinerTx(lastBlock.StateHash, &newBlock, localBlock)
425-
if err != nil {
426-
return err
427-
}
424+
428425
//挖矿固定难度
429426
newBlock.Difficulty = cfg.GetP(0).PowLimitBits
430427
newBlock.BlockTime = localBlock.BlockTime
@@ -437,6 +434,10 @@ func (client *blockSyncClient) addBlock(lastBlock *types.Block, localBlock *pt.P
437434
if cfg.IsFork(newBlock.GetMainHeight(), "ForkRootHash") {
438435
newBlock.Txs = types.TransactionSort(newBlock.Txs)
439436
}
437+
err := client.addMinerTx(lastBlock.StateHash, &newBlock, localBlock)
438+
if err != nil {
439+
return err
440+
}
440441
//在之前版本中CalcMerkleRoot的height是未初始化的MainHeight,等于0,在这个平行链的分叉ForkParaRootHash高度后统一采用新高度
441442
if cfg.IsDappFork(newBlock.Height, pt.ParaX, pt.ForkParaRootHash) {
442443
newBlock.TxHash = merkle.CalcMerkleRoot(cfg, newBlock.GetMainHeight(), newBlock.Txs)
@@ -530,17 +531,17 @@ func (client *blockSyncClient) writeBlock(prev []byte, paraBlock *types.Block) e
530531
return nil
531532
}
532533

533-
//获取同步状态
534+
// 获取同步状态
534535
func (client *blockSyncClient) getBlockSyncState() blockSyncState {
535536
return blockSyncState(atomic.LoadInt32(&client.syncState))
536537
}
537538

538-
//设置同步状态
539+
// 设置同步状态
539540
func (client *blockSyncClient) setBlockSyncState(state blockSyncState) {
540541
atomic.StoreInt32(&client.syncState, int32(state))
541542
}
542543

543-
//设置是否追赶上
544+
// 设置是否追赶上
544545
func (client *blockSyncClient) setSyncCaughtUp(isCaughtUp bool) {
545546
if isCaughtUp {
546547
atomic.StoreInt32(&client.isSyncCaughtUpAtom, 1)
@@ -549,12 +550,12 @@ func (client *blockSyncClient) setSyncCaughtUp(isCaughtUp bool) {
549550
}
550551
}
551552

552-
//下载是否已经追赶上
553+
// 下载是否已经追赶上
553554
func (client *blockSyncClient) downloadHasCaughtUp() bool {
554555
return atomic.LoadInt32(&client.isDownloadCaughtUpAtom) == 1
555556
}
556557

557-
//设置下载同步追赶状态
558+
// 设置下载同步追赶状态
558559
func (client *blockSyncClient) setDownloadHasCaughtUp(isCaughtUp bool) {
559560
if isCaughtUp {
560561
atomic.CompareAndSwapInt32(&client.isDownloadCaughtUpAtom, 0, 1)
@@ -563,17 +564,17 @@ func (client *blockSyncClient) setDownloadHasCaughtUp(isCaughtUp bool) {
563564
}
564565
}
565566

566-
//打印错误日志
567+
// 打印错误日志
567568
func (client *blockSyncClient) printError(err error) {
568569
plog.Error(fmt.Sprintf("Para sync - sync block error:%v", err.Error()))
569570
}
570571

571-
//打印调试信息
572+
// 打印调试信息
572573
func (client *blockSyncClient) printDebugInfo(msg string, ctx ...interface{}) {
573574
plog.Debug(msg, ctx...)
574575
}
575576

576-
//初始化
577+
// 初始化
577578
func (client *blockSyncClient) syncInit() {
578579
client.printDebugInfo("Para sync - init")
579580
client.setBlockSyncState(blockSyncStateNone)

0 commit comments

Comments
 (0)