@@ -22,7 +22,7 @@ const (
2222 defaultMaxSyncErrCount = int32 (100 )
2323)
2424
25- //blockSyncClient 区块同步控制和状态变量
25+ // blockSyncClient 区块同步控制和状态变量
2626type blockSyncClient struct {
2727 paraClient * client
2828 //notifyChan 下载通知通道
@@ -43,7 +43,7 @@ type blockSyncClient struct {
4343 isSyncFirstCaughtUp bool
4444}
4545
46- //nextActionType 定义每一轮可执行操作
46+ // nextActionType 定义每一轮可执行操作
4747type nextActionType int8
4848
4949const (
@@ -55,7 +55,7 @@ const (
5555 nextActionAdd
5656)
5757
58- //blockSyncState 定义当前区块同步状态
58+ // blockSyncState 定义当前区块同步状态
5959type blockSyncState int32
6060
6161const (
@@ -84,12 +84,12 @@ func newBlockSyncCli(para *client, cfg *subConfig) *blockSyncClient {
8484 return cli
8585}
8686
87- //syncHasCaughtUp 判断同步是否已追赶上,供发送层调用
87+ // syncHasCaughtUp 判断同步是否已追赶上,供发送层调用
8888func (client * blockSyncClient ) syncHasCaughtUp () bool {
8989 return atomic .LoadInt32 (& client .isSyncCaughtUpAtom ) == 1
9090}
9191
92- //handleLocalChangedMsg 处理下载通知消息,供下载层调用
92+ // handleLocalChangedMsg 处理下载通知消息,供下载层调用
9393func (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 处理下载已追赶上消息,供下载层调用
103103func (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 创建创世区块
111111func (client * blockSyncClient ) createGenesisBlock (newblock * types.Block ) error {
112112 return client .writeBlock (zeroHash [:], newblock )
113113}
114114
115- //syncBlocks 区块执行线程
116- //循环执行
115+ // syncBlocks 区块执行线程
116+ // 循环执行
117117func (client * blockSyncClient ) syncBlocks () {
118118
119119 client .syncInit ()
136136 client .paraClient .wg .Done ()
137137}
138138
139- //批量执行同步区块
139+ // 批量执行同步区块
140140func (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+ // 获取每一轮可执行状态
182182func (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 是否已完成同步
235235func (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+ // 批量删除下载层缓冲数据
287287func (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+ // 最低高度没有设置的时候设置一下最低高度
317317func (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+ // 获取下载层缓冲数据的区块最低高度
333333func (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)以前的区块
359359func (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+ // 添加一个区块
418418func (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+ // 获取同步状态
534535func (client * blockSyncClient ) getBlockSyncState () blockSyncState {
535536 return blockSyncState (atomic .LoadInt32 (& client .syncState ))
536537}
537538
538- //设置同步状态
539+ // 设置同步状态
539540func (client * blockSyncClient ) setBlockSyncState (state blockSyncState ) {
540541 atomic .StoreInt32 (& client .syncState , int32 (state ))
541542}
542543
543- //设置是否追赶上
544+ // 设置是否追赶上
544545func (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+ // 下载是否已经追赶上
553554func (client * blockSyncClient ) downloadHasCaughtUp () bool {
554555 return atomic .LoadInt32 (& client .isDownloadCaughtUpAtom ) == 1
555556}
556557
557- //设置下载同步追赶状态
558+ // 设置下载同步追赶状态
558559func (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+ // 打印错误日志
567568func (client * blockSyncClient ) printError (err error ) {
568569 plog .Error (fmt .Sprintf ("Para sync - sync block error:%v" , err .Error ()))
569570}
570571
571- //打印调试信息
572+ // 打印调试信息
572573func (client * blockSyncClient ) printDebugInfo (msg string , ctx ... interface {}) {
573574 plog .Debug (msg , ctx ... )
574575}
575576
576- //初始化
577+ // 初始化
577578func (client * blockSyncClient ) syncInit () {
578579 client .printDebugInfo ("Para sync - init" )
579580 client .setBlockSyncState (blockSyncStateNone )
0 commit comments