Przeglądaj źródła

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.
Marius van der Wijden 5 lat temu
rodzic
commit
3eebf34038
2 zmienionych plików z 14 dodań i 24 usunięć
  1. 3 22
      common/bytes.go
  2. 11 2
      internal/ethapi/api.go

+ 3 - 22
common/bytes.go

@@ -17,28 +17,9 @@
 // Package common contains various helper functions.
 // Package common contains various helper functions.
 package common
 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.
 // FromHex returns the bytes represented by the hexadecimal string s.
 // s may be prefixed with "0x".
 // s may be prefixed with "0x".

+ 11 - 2
internal/ethapi/api.go

@@ -599,7 +599,7 @@ func (s *PublicBlockChainAPI) GetProof(ctx context.Context, address common.Addre
 			if storageError != nil {
 			if storageError != nil {
 				return nil, storageError
 				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 {
 		} else {
 			storageProof[i] = StorageResult{key, &hexutil.Big{}, []string{}}
 			storageProof[i] = StorageResult{key, &hexutil.Big{}, []string{}}
 		}
 		}
@@ -613,7 +613,7 @@ func (s *PublicBlockChainAPI) GetProof(ctx context.Context, address common.Addre
 
 
 	return &AccountResult{
 	return &AccountResult{
 		Address:      address,
 		Address:      address,
-		AccountProof: common.ToHexArray(accountProof),
+		AccountProof: toHexSlice(accountProof),
 		Balance:      (*hexutil.Big)(state.GetBalance(address)),
 		Balance:      (*hexutil.Big)(state.GetBalance(address)),
 		CodeHash:     codeHash,
 		CodeHash:     codeHash,
 		Nonce:        hexutil.Uint64(state.GetNonce(address)),
 		Nonce:        hexutil.Uint64(state.GetNonce(address)),
@@ -1943,3 +1943,12 @@ func checkTxFee(gasPrice *big.Int, gas uint64, cap float64) error {
 	}
 	}
 	return nil
 	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
+}