mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 21:26:42 +00:00
core/rawdb: optimize database key construction
This commit is contained in:
parent
446fdebdc3
commit
f1e6b72d1c
1 changed files with 24 additions and 4 deletions
|
|
@ -191,12 +191,22 @@ func headerKeyPrefix(number uint64) []byte {
|
||||||
|
|
||||||
// headerKey = headerPrefix + num (uint64 big endian) + hash
|
// headerKey = headerPrefix + num (uint64 big endian) + hash
|
||||||
func headerKey(number uint64, hash common.Hash) []byte {
|
func headerKey(number uint64, hash common.Hash) []byte {
|
||||||
return append(append(headerPrefix, encodeBlockNumber(number)...), hash.Bytes()...)
|
key := make([]byte, len(headerPrefix)+8+common.HashLength)
|
||||||
|
off := copy(key, headerPrefix)
|
||||||
|
binary.BigEndian.PutUint64(key[off:], number)
|
||||||
|
off += 8
|
||||||
|
copy(key[off:], hash.Bytes())
|
||||||
|
return key
|
||||||
}
|
}
|
||||||
|
|
||||||
// headerHashKey = headerPrefix + num (uint64 big endian) + headerHashSuffix
|
// headerHashKey = headerPrefix + num (uint64 big endian) + headerHashSuffix
|
||||||
func headerHashKey(number uint64) []byte {
|
func headerHashKey(number uint64) []byte {
|
||||||
return append(append(headerPrefix, encodeBlockNumber(number)...), headerHashSuffix...)
|
key := make([]byte, len(headerPrefix)+8+len(headerHashSuffix))
|
||||||
|
off := copy(key, headerPrefix)
|
||||||
|
binary.BigEndian.PutUint64(key[off:], number)
|
||||||
|
off += 8
|
||||||
|
copy(key[off:], headerHashSuffix)
|
||||||
|
return key
|
||||||
}
|
}
|
||||||
|
|
||||||
// headerNumberKey = headerNumberPrefix + hash
|
// headerNumberKey = headerNumberPrefix + hash
|
||||||
|
|
@ -206,12 +216,22 @@ func headerNumberKey(hash common.Hash) []byte {
|
||||||
|
|
||||||
// blockBodyKey = blockBodyPrefix + num (uint64 big endian) + hash
|
// blockBodyKey = blockBodyPrefix + num (uint64 big endian) + hash
|
||||||
func blockBodyKey(number uint64, hash common.Hash) []byte {
|
func blockBodyKey(number uint64, hash common.Hash) []byte {
|
||||||
return append(append(blockBodyPrefix, encodeBlockNumber(number)...), hash.Bytes()...)
|
key := make([]byte, len(blockBodyPrefix)+8+common.HashLength)
|
||||||
|
off := copy(key, blockBodyPrefix)
|
||||||
|
binary.BigEndian.PutUint64(key[off:], number)
|
||||||
|
off += 8
|
||||||
|
copy(key[off:], hash.Bytes())
|
||||||
|
return key
|
||||||
}
|
}
|
||||||
|
|
||||||
// blockReceiptsKey = blockReceiptsPrefix + num (uint64 big endian) + hash
|
// blockReceiptsKey = blockReceiptsPrefix + num (uint64 big endian) + hash
|
||||||
func blockReceiptsKey(number uint64, hash common.Hash) []byte {
|
func blockReceiptsKey(number uint64, hash common.Hash) []byte {
|
||||||
return append(append(blockReceiptsPrefix, encodeBlockNumber(number)...), hash.Bytes()...)
|
key := make([]byte, len(blockReceiptsPrefix)+8+common.HashLength)
|
||||||
|
off := copy(key, blockReceiptsPrefix)
|
||||||
|
binary.BigEndian.PutUint64(key[off:], number)
|
||||||
|
off += 8
|
||||||
|
copy(key[off:], hash.Bytes())
|
||||||
|
return key
|
||||||
}
|
}
|
||||||
|
|
||||||
// txLookupKey = txLookupPrefix + hash
|
// txLookupKey = txLookupPrefix + hash
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue