fixes from integration

This commit is contained in:
Ian Norden 2020-09-16 09:49:32 -05:00
parent 1574d1a968
commit 0ccc53b4bb
2 changed files with 11 additions and 4 deletions

View File

@ -22,6 +22,7 @@ type KeyType uint
const (
Invalid KeyType = iota
Static
Keccak
Prefixed
Suffixed
@ -30,11 +31,11 @@ const (
)
var (
// keyDelineation is used to delineate the key prefixes and suffixes
KeyDelineation = []byte("/")
// KeyDelineation is used to delineate the key prefixes and suffixes
KeyDelineation = []byte("-fix-")
// numberDelineation is used to delineate the block number encoded in a key
NumberDelineation = []byte(":")
// NumberDelineation is used to delineate the block number encoded in a key
NumberDelineation = []byte("-nmb-")
// Data item prefixes (use single byte to avoid mixing data types, avoid `i`, used for indexes).
HeaderPrefix = []byte("h") // headerPrefix + num (uint64 big endian) + hash -> header
@ -45,8 +46,12 @@ var (
func ResolveKeyType(key []byte) (KeyType, [][]byte) {
sk := bytes.Split(key, KeyDelineation)
// these heuristics are reliant on the current db key patterns
switch len(sk) {
case 1:
if len(sk[0]) < 32 {
return Static, sk
}
return Keccak, sk
case 2:
switch prefix := sk[0]; {

View File

@ -55,6 +55,8 @@ func DatastoreKeyFromGethKey(h []byte) (string, []byte, error) {
// I.e. the public.blocks datastore key == the hex representation of the geth key
// Alternatively, decompose the data and derive the hash
return common.Bytes2Hex(h), keyComponents[0], nil
case Static:
return common.Bytes2Hex(h), nil, nil
default:
return "", nil, fmt.Errorf("invalid formatting of database key: %x", h)
}