|
|
@@ -18,6 +18,7 @@ package rpc
|
|
|
|
|
|
import (
|
|
|
"encoding/binary"
|
|
|
+ "encoding/hex"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"math/big"
|
|
|
@@ -117,7 +118,13 @@ func newHexData(input interface{}) *hexdata {
|
|
|
binary.BigEndian.PutUint32(buff, input)
|
|
|
d.data = buff
|
|
|
case string: // hexstring
|
|
|
- d.data = common.Big(input).Bytes()
|
|
|
+ // aaargh ffs TODO: avoid back-and-forth hex encodings where unneeded
|
|
|
+ bytes, err := hex.DecodeString(strings.TrimPrefix(input, "0x"))
|
|
|
+ if err != nil {
|
|
|
+ d.isNil = true
|
|
|
+ } else {
|
|
|
+ d.data = bytes
|
|
|
+ }
|
|
|
default:
|
|
|
d.isNil = true
|
|
|
}
|