diff --git a/pkg/morph/client/util.go b/pkg/morph/client/util.go index 3af9c4c48..da61e276c 100644 --- a/pkg/morph/client/util.go +++ b/pkg/morph/client/util.go @@ -48,6 +48,13 @@ func BytesFromStackItem(param stackitem.Item) ([]byte, error) { switch param.Type() { case stackitem.BufferT, stackitem.ByteArrayT: return param.TryBytes() + case stackitem.IntegerT: + n, err := param.TryInteger() + if err != nil { + return nil, errors.Wrap(err, "can't parse integer bytes") + } + + return n.Bytes(), nil case stackitem.AnyT: if param.Value() == nil { return nil, nil diff --git a/pkg/morph/client/util_test.go b/pkg/morph/client/util_test.go index a3588b353..897a02333 100644 --- a/pkg/morph/client/util_test.go +++ b/pkg/morph/client/util_test.go @@ -74,6 +74,10 @@ func TestBytesFromStackItem(t *testing.T) { val, err := BytesFromStackItem(stringByteItem) require.NoError(t, err) require.Equal(t, stringByteItem.Value().([]byte), val) + + val, err = BytesFromStackItem(intItem) + require.NoError(t, err) + require.Equal(t, intItem.Value().(*big.Int).Bytes(), val) }) t.Run("incorrect assert", func(t *testing.T) {