From 70755237e7f85ce1106b35bd356f232a30755d82 Mon Sep 17 00:00:00 2001 From: Daniel Liu <139250065@qq.com> Date: Tue, 9 Dec 2025 13:31:37 +0800 Subject: [PATCH] contracts, core/rawdb: refactor read and write randomizeKey (#1806) --- contracts/utils.go | 9 ++++----- core/rawdb/accessors_xdc.go | 31 +++++++++++++++++++++++++++++++ core/rawdb/schema.go | 1 + 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/contracts/utils.go b/contracts/utils.go index 8602d100d4..933b200e52 100644 --- a/contracts/utils.go +++ b/contracts/utils.go @@ -103,8 +103,7 @@ func CreateTransactionSign(chainConfig *params.ChainConfig, pool *txpool.TxPool, blockNumber := block.Number().Uint64() checkNumber := blockNumber % chainConfig.XDPoS.Epoch // Generate random private key and save into chaindb. - randomizeKeyName := []byte("randomizeKey") - exist, _ := chainDb.Has(randomizeKeyName) + exist := rawdb.HasRandomize(chainDb) // Set secret for randomize. if !exist && checkNumber > 0 && common.EpocBlockSecret <= checkNumber && common.EpocBlockOpening > checkNumber { @@ -129,12 +128,12 @@ func CreateTransactionSign(chainConfig *params.ChainConfig, pool *txpool.TxPool, } // Put randomize key into chainDb. - chainDb.Put(randomizeKeyName, randomizeKeyValue) + rawdb.WriteRandomize(chainDb, randomizeKeyValue) } // Set opening for randomize. if exist && checkNumber > 0 && common.EpocBlockOpening <= checkNumber && common.EpocBlockRandomize >= checkNumber { - randomizeKeyValue, err := chainDb.Get(randomizeKeyName) + randomizeKeyValue, err := rawdb.ReadRandomize(chainDb) if err != nil { log.Error("Fail to get randomize key from state db.", "error", err) return err @@ -158,7 +157,7 @@ func CreateTransactionSign(chainConfig *params.ChainConfig, pool *txpool.TxPool, } // Clear randomize key in state db. - chainDb.Delete(randomizeKeyName) + rawdb.DeleteRandomize(chainDb) } } diff --git a/core/rawdb/accessors_xdc.go b/core/rawdb/accessors_xdc.go index 48a97be54b..85718d666d 100644 --- a/core/rawdb/accessors_xdc.go +++ b/core/rawdb/accessors_xdc.go @@ -82,6 +82,37 @@ func DeleteectionHead(db ethdb.KeyValueWriter, section uint64) { } } +// HasRandomize verifies the existence of randomize. +func HasRandomize(db ethdb.KeyValueReader) bool { + if has, err := db.Has(randomizeKey); !has || err != nil { + return false + } + return true +} + +// ReadRandomize retrieves the randomiz from database. +func ReadRandomize(db ethdb.KeyValueReader) ([]byte, error) { + data, err := db.Get(randomizeKey) + if err != nil { + return nil, err + } + return data, nil +} + +// WriteRandomize writes the randomize into database. +func WriteRandomize(db ethdb.KeyValueWriter, data []byte) { + if err := db.Put(randomizeKey, data); err != nil { + log.Crit("Failed to store randomizeKey", "err", err) + } +} + +// DeleteRandomize deletes the randomize from database. +func DeleteRandomize(db ethdb.KeyValueWriter) { + if err := db.Delete(randomizeKey); err != nil { + log.Crit("Failed to delete randomizeKey", "err", err) + } +} + // ReadValidSections retrieves the number of valid sections from database. func ReadValidSections(db ethdb.KeyValueReader) *uint64 { data, err := db.Get(validSectionsKey) diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go index 010caf4cd6..538ebd9da1 100644 --- a/core/rawdb/schema.go +++ b/core/rawdb/schema.go @@ -82,6 +82,7 @@ var ( xdposV1Prefix = []byte("XDPoS-") xdposV2Prefix = []byte("XDPoS-V2-") + randomizeKey = []byte("randomizeKey") sectionHeadKeyPrefix = []byte("shead") validSectionsKey = []byte("count")