smartcontract: fix uint160 marshalling in smartcontract.Parameter

There's a bug after #785: smartcontract.Parameter of type hash160 should
be marshalled in LE (as default marshaller for uint160 does) instead of
BE, so fixed.
This commit is contained in:
Anna Shaleva 2020-04-01 20:31:29 +03:00
parent 12a9a6b9ae
commit 5a62eb923e
2 changed files with 6 additions and 8 deletions

View file

@ -66,9 +66,7 @@ func (p *Parameter) MarshalJSON() ([]byte, error) {
resultErr error
)
switch p.Type {
case Hash160Type:
resultRawValue, resultErr = json.Marshal(p.Value.(util.Uint160).Reverse()) // Hash160 should be marshaled in BE but default marshaler uses LE.
case BoolType, StringType, Hash256Type:
case BoolType, StringType, Hash160Type, Hash256Type:
resultRawValue, resultErr = json.Marshal(p.Value)
case IntegerType:
val, ok := p.Value.(int64)
@ -202,7 +200,7 @@ func (p *Parameter) UnmarshalJSON(data []byte) (err error) {
if err = json.Unmarshal(r.Value, &h); err != nil {
return
}
p.Value = h.Reverse() // Hash160 should be marshaled in BE but default marshaler uses LE.
p.Value = h
case Hash256Type:
var h util.Uint256
if err = json.Unmarshal(r.Value, &h); err != nil {

View file

@ -95,8 +95,8 @@ var marshalJSONTestCases = []struct {
input: Parameter{
Type: Hash160Type,
Value: util.Uint160{
0x0b, 0xcd, 0x29, 0x78, 0x63, 0x4d, 0x96, 0x1c, 0x24, 0xf5,
0xae, 0xa0, 0x80, 0x22, 0x97, 0xff, 0x12, 0x87, 0x24, 0xd6,
0xd6, 0x24, 0x87, 0x12, 0xff, 0x97, 0x22, 0x80, 0xa0, 0xae,
0xf5, 0x24, 0x1c, 0x96, 0x4d, 0x63, 0x78, 0x29, 0xcd, 0xb,
},
},
result: `{"type":"Hash160","value":"0x0bcd2978634d961c24f5aea0802297ff128724d6"}`,
@ -188,8 +188,8 @@ var unmarshalJSONTestCases = []struct {
result: Parameter{
Type: Hash160Type,
Value: util.Uint160{
0x0b, 0xcd, 0x29, 0x78, 0x63, 0x4d, 0x96, 0x1c, 0x24, 0xf5,
0xae, 0xa0, 0x80, 0x22, 0x97, 0xff, 0x12, 0x87, 0x24, 0xd6,
0xd6, 0x24, 0x87, 0x12, 0xff, 0x97, 0x22, 0x80, 0xa0, 0xae,
0xf5, 0x24, 0x1c, 0x96, 0x4d, 0x63, 0x78, 0x29, 0xcd, 0xb,
},
},
},