From 3eebf340386dee2f6a008664bf8a1e82842a053e Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 4 Nov 2020 11:20:39 +0100 Subject: [PATCH] common: remove ToHex and ToHexArray (#21610) ToHex was deprecated a couple years ago. The last remaining use was in ToHexArray, which itself only had a single call site. This just moves ToHexArray near its only remaining call site and implements it using hexutil.Encode. This changes the default behaviour of ToHexArray and with it the behaviour of eth_getProof. Previously we encoded an empty slice as 0, now the empty slice is encoded as 0x. --- common/bytes.go | 25 +++---------------------- internal/ethapi/api.go | 13 +++++++++++-- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/common/bytes.go b/common/bytes.go index 634041804d..7827bb572e 100644 --- a/common/bytes.go +++ b/common/bytes.go @@ -17,28 +17,9 @@ // Package common contains various helper functions. package common -import "encoding/hex" - -// ToHex returns the hex representation of b, prefixed with '0x'. -// For empty slices, the return value is "0x0". -// -// Deprecated: use hexutil.Encode instead. -func ToHex(b []byte) string { - hex := Bytes2Hex(b) - if len(hex) == 0 { - hex = "0" - } - return "0x" + hex -} - -// ToHexArray creates a array of hex-string based on []byte -func ToHexArray(b [][]byte) []string { - r := make([]string, len(b)) - for i := range b { - r[i] = ToHex(b[i]) - } - return r -} +import ( + "encoding/hex" +) // FromHex returns the bytes represented by the hexadecimal string s. // s may be prefixed with "0x". diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index c7d1e0020f..0d6ace9b5b 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -599,7 +599,7 @@ func (s *PublicBlockChainAPI) GetProof(ctx context.Context, address common.Addre if storageError != nil { return nil, storageError } - storageProof[i] = StorageResult{key, (*hexutil.Big)(state.GetState(address, common.HexToHash(key)).Big()), common.ToHexArray(proof)} + storageProof[i] = StorageResult{key, (*hexutil.Big)(state.GetState(address, common.HexToHash(key)).Big()), toHexSlice(proof)} } else { storageProof[i] = StorageResult{key, &hexutil.Big{}, []string{}} } @@ -613,7 +613,7 @@ func (s *PublicBlockChainAPI) GetProof(ctx context.Context, address common.Addre return &AccountResult{ Address: address, - AccountProof: common.ToHexArray(accountProof), + AccountProof: toHexSlice(accountProof), Balance: (*hexutil.Big)(state.GetBalance(address)), CodeHash: codeHash, Nonce: hexutil.Uint64(state.GetNonce(address)), @@ -1943,3 +1943,12 @@ func checkTxFee(gasPrice *big.Int, gas uint64, cap float64) error { } return nil } + +// toHexSlice creates a slice of hex-strings based on []byte. +func toHexSlice(b [][]byte) []string { + r := make([]string, len(b)) + for i := range b { + r[i] = hexutil.Encode(b[i]) + } + return r +}