types: Add CID fields to messages in json marshalers
This commit is contained in:
parent
224a96431f
commit
6c08120628
@ -2,6 +2,7 @@ package types
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-state-types/abi"
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
@ -106,6 +107,20 @@ func (m *Message) Cid() cid.Cid {
|
|||||||
return b.Cid()
|
return b.Cid()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type mCid struct {
|
||||||
|
*RawMessage
|
||||||
|
CID cid.Cid
|
||||||
|
}
|
||||||
|
|
||||||
|
type RawMessage Message
|
||||||
|
|
||||||
|
func (m *Message) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(&mCid{
|
||||||
|
RawMessage: (*RawMessage)(m),
|
||||||
|
CID: m.Cid(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Message) RequiredFunds() BigInt {
|
func (m *Message) RequiredFunds() BigInt {
|
||||||
return BigMul(m.GasFeeCap, NewInt(uint64(m.GasLimit)))
|
return BigMul(m.GasFeeCap, NewInt(uint64(m.GasLimit)))
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
package types
|
package types
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-state-types/big"
|
"github.com/filecoin-project/go-state-types/big"
|
||||||
|
"github.com/filecoin-project/go-state-types/crypto"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin"
|
"github.com/filecoin-project/specs-actors/actors/builtin"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -70,3 +73,66 @@ func TestEqualCall(t *testing.T) {
|
|||||||
require.True(t, m1.EqualCall(m3))
|
require.True(t, m1.EqualCall(m3))
|
||||||
require.False(t, m1.EqualCall(m4))
|
require.False(t, m1.EqualCall(m4))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMessageJson(t *testing.T) {
|
||||||
|
m := &Message{
|
||||||
|
To: builtin.StoragePowerActorAddr,
|
||||||
|
From: builtin.SystemActorAddr,
|
||||||
|
Nonce: 34,
|
||||||
|
Value: big.Zero(),
|
||||||
|
|
||||||
|
GasLimit: 123,
|
||||||
|
GasFeeCap: big.NewInt(234),
|
||||||
|
GasPremium: big.NewInt(234),
|
||||||
|
|
||||||
|
Method: 6,
|
||||||
|
Params: []byte("hai"),
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := json.Marshal(m)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
exp := []byte("{\"Version\":0,\"To\":\"f04\",\"From\":\"f00\",\"Nonce\":34,\"Value\":\"0\",\"GasLimit\":123,\"GasFeeCap\":\"234\",\"GasPremium\":\"234\",\"Method\":6,\"Params\":\"aGFp\",\"CID\":{\"/\":\"bafy2bzaced5rdpz57e64sc7mdwjn3blicglhpialnrph2dlbufhf6iha63dmc\"}}")
|
||||||
|
fmt.Println(string(b))
|
||||||
|
|
||||||
|
require.Equal(t, exp, b)
|
||||||
|
|
||||||
|
var um Message
|
||||||
|
require.NoError(t, json.Unmarshal(b, &um))
|
||||||
|
|
||||||
|
require.EqualValues(t, *m, um)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSignedMessageJson(t *testing.T) {
|
||||||
|
m := Message{
|
||||||
|
To: builtin.StoragePowerActorAddr,
|
||||||
|
From: builtin.SystemActorAddr,
|
||||||
|
Nonce: 34,
|
||||||
|
Value: big.Zero(),
|
||||||
|
|
||||||
|
GasLimit: 123,
|
||||||
|
GasFeeCap: big.NewInt(234),
|
||||||
|
GasPremium: big.NewInt(234),
|
||||||
|
|
||||||
|
Method: 6,
|
||||||
|
Params: []byte("hai"),
|
||||||
|
}
|
||||||
|
|
||||||
|
sm := &SignedMessage{
|
||||||
|
Message: m,
|
||||||
|
Signature: crypto.Signature{},
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := json.Marshal(sm)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
exp := []byte("{\"Message\":{\"Version\":0,\"To\":\"f04\",\"From\":\"f00\",\"Nonce\":34,\"Value\":\"0\",\"GasLimit\":123,\"GasFeeCap\":\"234\",\"GasPremium\":\"234\",\"Method\":6,\"Params\":\"aGFp\",\"CID\":{\"/\":\"bafy2bzaced5rdpz57e64sc7mdwjn3blicglhpialnrph2dlbufhf6iha63dmc\"}},\"Signature\":{\"Type\":0,\"Data\":null},\"CID\":{\"/\":\"bafy2bzacea5ainifngxj3rygaw2hppnyz2cw72x5pysqty2x6dxmjs5qg2uus\"}}")
|
||||||
|
fmt.Println(string(b))
|
||||||
|
|
||||||
|
require.Equal(t, exp, b)
|
||||||
|
|
||||||
|
var um SignedMessage
|
||||||
|
require.NoError(t, json.Unmarshal(b, &um))
|
||||||
|
|
||||||
|
require.EqualValues(t, *sm, um)
|
||||||
|
}
|
||||||
|
@ -2,6 +2,7 @@ package types
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-state-types/abi"
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
"github.com/filecoin-project/go-state-types/crypto"
|
"github.com/filecoin-project/go-state-types/crypto"
|
||||||
@ -62,6 +63,20 @@ func (sm *SignedMessage) Serialize() ([]byte, error) {
|
|||||||
return buf.Bytes(), nil
|
return buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type smCid struct {
|
||||||
|
*RawSignedMessage
|
||||||
|
CID cid.Cid
|
||||||
|
}
|
||||||
|
|
||||||
|
type RawSignedMessage SignedMessage
|
||||||
|
|
||||||
|
func (sm *SignedMessage) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(&smCid{
|
||||||
|
RawSignedMessage: (*RawSignedMessage)(sm),
|
||||||
|
CID: sm.Cid(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (sm *SignedMessage) ChainLength() int {
|
func (sm *SignedMessage) ChainLength() int {
|
||||||
ser, err := sm.Serialize()
|
ser, err := sm.Serialize()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user