aboutsummaryrefslogtreecommitdiffstats
path: root/common/types.go
diff options
context:
space:
mode:
Diffstat (limited to 'common/types.go')
-rw-r--r--common/types.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/common/types.go b/common/types.go
index 05288bf46..803726634 100644
--- a/common/types.go
+++ b/common/types.go
@@ -31,6 +31,11 @@ const (
AddressLength = 20
)
+var (
+ hashT = reflect.TypeOf(Hash{})
+ addressT = reflect.TypeOf(Address{})
+)
+
// Hash represents the 32 byte Keccak256 hash of arbitrary data.
type Hash [HashLength]byte
@@ -72,6 +77,11 @@ func (h *Hash) UnmarshalText(input []byte) error {
return hexutil.UnmarshalFixedText("Hash", input, h[:])
}
+// UnmarshalJSON parses a hash in hex syntax.
+func (h *Hash) UnmarshalJSON(input []byte) error {
+ return hexutil.UnmarshalFixedJSON(hashT, input, h[:])
+}
+
// MarshalText returns the hex representation of h.
func (h Hash) MarshalText() ([]byte, error) {
return hexutil.Bytes(h[:]).MarshalText()
@@ -194,6 +204,11 @@ func (a *Address) UnmarshalText(input []byte) error {
return hexutil.UnmarshalFixedText("Address", input, a[:])
}
+// UnmarshalJSON parses a hash in hex syntax.
+func (a *Address) UnmarshalJSON(input []byte) error {
+ return hexutil.UnmarshalFixedJSON(addressT, input, a[:])
+}
+
// UnprefixedHash allows marshaling an Address without 0x prefix.
type UnprefixedAddress Address