diff --git a/neo3-gui/neo3-gui/Common/Scanners/ExecuteResultScanner.cs b/neo3-gui/neo3-gui/Common/Scanners/ExecuteResultScanner.cs index cbaed04..72eb936 100644 --- a/neo3-gui/neo3-gui/Common/Scanners/ExecuteResultScanner.cs +++ b/neo3-gui/neo3-gui/Common/Scanners/ExecuteResultScanner.cs @@ -86,8 +86,21 @@ public async Task Sync(uint blockHeight) return true; } + var block = blockHeight.GetBlock(); var blockTime = block.Timestamp.FromTimestampMS(); + if (blockHeight == 0) + { + SyncNativeContracts(blockTime); + } + + if (block.Transactions.Length == 0) + { + _db.AddSyncIndex(blockHeight); + return true; + } + + SyncContracts(blockHeight, blockTime); foreach (var transaction in block.Transactions) { @@ -108,7 +121,6 @@ public async Task Sync(uint blockHeight) //} } - SyncContracts(blockHeight, blockTime); var transfers = new List(); var transferItems = _levelDb.GetTransfers(blockHeight); @@ -163,6 +175,32 @@ public async Task Sync(uint blockHeight) } + private void SyncNativeContracts(DateTime blockTime) + { + foreach (var nativeContract in NativeContract.Contracts) + { + var entity = new ContractEntity() + { + Name = nativeContract.Name, + Hash = nativeContract.Hash.ToBigEndianHex(), + CreateTime = blockTime, + }; + if (nativeContract is NeoToken neo) + { + entity.Symbol = neo.Symbol; + entity.Decimals = neo.Decimals; + entity.AssetType = AssetType.Nep17; + } + if (nativeContract is GasToken gas) + { + entity.Symbol = gas.Symbol; + entity.Decimals = gas.Decimals; + entity.AssetType = AssetType.Nep17; + } + _db.CreateContract(entity); + } + } + /// /// sync contract create\update\delete state /// @@ -170,31 +208,6 @@ public async Task Sync(uint blockHeight) /// private void SyncContracts(uint blockHeight, DateTime blockTime) { - if (blockHeight == 0) - { - foreach (var nativeContract in NativeContract.Contracts) - { - var entity = new ContractEntity() - { - Name = nativeContract.Name, - Hash = nativeContract.Hash.ToBigEndianHex(), - CreateTime = blockTime, - }; - if (nativeContract is NeoToken neo) - { - entity.Symbol = neo.Symbol; - entity.Decimals = neo.Decimals; - entity.AssetType = AssetType.Nep17; - } - if (nativeContract is GasToken gas) - { - entity.Symbol = gas.Symbol; - entity.Decimals = gas.Decimals; - entity.AssetType = AssetType.Nep17; - } - _db.CreateContract(entity); - } - } var contractEvents = _levelDb.GetContractEvent(blockHeight); if (contractEvents.NotEmpty()) {