From 324d9b981b87c89e9689c8b9841c806785a4507d Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Tue, 12 Mar 2024 15:48:51 +1100 Subject: [PATCH 1/2] feat(events): introduce compact JSON form of EventEntry Optional compact form, can round-trip as either full standard Go style JSON or compact tuple struct with decoded "value" field represented as dag-json. Currently turned on as strict default for GetActorEvents and SubscribeActorEvents --- build/openrpc/full.json.gz | Bin 35937 -> 35941 bytes build/openrpc/gateway.json.gz | Bin 12141 -> 12145 bytes chain/types/actor_event.go | 299 ++++++++++++++++++++ chain/types/actor_event_test.go | 45 ++- chain/types/event.go | 3 + chain/types/tipset_key.go | 64 +++++ chain/types/tipset_key_test.go | 65 +++++ documentation/en/api-v1-unstable-methods.md | 28 +- itests/direct_data_onboard_verified_test.go | 5 +- node/impl/full/actor_events.go | 10 +- node/impl/full/actor_events_test.go | 5 +- 11 files changed, 495 insertions(+), 29 deletions(-) diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index e011458afee18b4bbbecdbf9a8bdd3432afaa6eb..cd2278ebb13e81bd3cc70c47751e499c2b73bbf5 100644 GIT binary patch delta 21799 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 delta 21771 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 diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz index c06286e38b9f6d97c672a8cf9a3fb5a7282678e6..bf6fd3e793ea342858b8c73ff77b2b4783dd8912 100644 GIT binary patch delta 4613 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 delta 4610 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 0 { + first, _ := entries.LookupByIndex(0) + if first.Kind() == datamodel.Kind_List { + ae.encodeCompact = new(bool) + *ae.encodeCompact = true + } + } + + return nil +} + +func (ae ActorEvent) MarshalJSON() ([]byte, error) { + var entryOpt bindnode.Option = eventEntryBindnodeOption + if ae.encodeCompact != nil { + if *ae.encodeCompact { + entryOpt = eventEntryCompactBindnodeOption + } + ae.encodeCompact = nil // hide it from this encode + } + nd := bindnode.Wrap( + &ae, + actorEventProto.Type(), + TipSetKeyAsLinksListBindnodeOption, + addressAsStringBindnodeOption, + entryOpt, + ) + return ipld.Encode(nd, dagjson.Encode) +} + +// TODO: move this in to go-state-types/ipld with the address "as bytes" form +var addressAsStringBindnodeOption = bindnode.TypedStringConverter(&address.Address{}, addressFromString, addressToString) + +func addressFromString(s string) (interface{}, error) { + a, err := address.NewFromString(s) + if err != nil { + return nil, err + } + return &a, nil +} + +func addressToString(iface interface{}) (string, error) { + addr, ok := iface.(*address.Address) + if !ok { + return "", errors.New("expected *Address value") + } + return addr.String(), nil +} + +var eventEntryBindnodeOption = bindnode.TypedAnyConverter(&EventEntry{}, eventEntryFromAny, eventEntryToAny) +var eventEntryCompactBindnodeOption = bindnode.TypedAnyConverter(&EventEntry{}, eventEntryCompactFromAny, eventEntryCompactToAny) + +// eventEntryFromAny will instantiate an EventEntry assuming standard Go JSON form, i.e.: +// {"Codec":82,"Flags":0,"Key":"key2","Value":"dmFsdWUy"} +// Where the value is intact as raw bytes but represented as a base64 string, and the object is +// represented as a map. +func eventEntryFromAny(n datamodel.Node) (interface{}, error) { + if n.Kind() == datamodel.Kind_List { + return eventEntryCompactFromAny(n) + } + if n.Kind() != datamodel.Kind_Map { + return nil, errors.New("expected map representation for EventEntry") + } + if n.Length() != 4 { + return nil, errors.New("expected 4 fields for EventEntry") + } + fn, err := n.LookupByString("Flags") + if err != nil { + return nil, fmt.Errorf("missing Flags field for EventEntry: %w", err) + } + flags, err := fn.AsInt() + if err != nil { + return nil, fmt.Errorf("expected int in Flags field for EventEntry: %w", err) + } + cn, err := n.LookupByString("Codec") + if err != nil { + return nil, fmt.Errorf("missing Codec field for EventEntry: %w", err) + } + codec, err := cn.AsInt() + if err != nil { + return nil, fmt.Errorf("expected int in Codec field for EventEntry: %w", err) + } + // it has to fit into a uint8 + if flags < 0 || flags > 255 { + return nil, fmt.Errorf("expected uint8 in Flags field for EventEntry, got %d", flags) + } + kn, err := n.LookupByString("Key") + if err != nil { + return nil, fmt.Errorf("missing Key field for EventEntry: %w", err) + } + key, err := kn.AsString() + if err != nil { + return nil, fmt.Errorf("expected string in Key field for EventEntry: %w", err) + } + vn, err := n.LookupByString("Value") + if err != nil { + return nil, fmt.Errorf("missing Value field for EventEntry: %w", err) + } + value64, err := vn.AsString() // base64 + if err != nil { + return nil, fmt.Errorf("expected string in Value field for EventEntry: %w", err) + } + value, err := base64.StdEncoding.DecodeString(value64) + if err != nil { + return nil, fmt.Errorf("failed to decode base64 value: %w", err) + } + return &EventEntry{ + Flags: uint8(flags), + Key: key, + Codec: uint64(codec), + Value: value, + }, nil +} + +// eventEntryCompactFromAny will instantiate an EventEntry assuming compact form, i.e.: +// [0,82,"key2",{"/":{"bytes":"dmFsdWUy"}}] +// Where the value is represented in its decoded IPLD data model form, and the object is represented +// as a tuple. +func eventEntryCompactFromAny(n datamodel.Node) (interface{}, error) { + if n.Kind() != datamodel.Kind_List { + return nil, errors.New("expected list representation for compact EventEntry") + } + if n.Length() != 4 { + return nil, errors.New("expected 4 fields for EventEntry") + } + // Flags before Codec in this form, sorted Codec before Flags in the non-compact form when dag-json + fn, err := n.LookupByIndex(0) + if err != nil { + return nil, fmt.Errorf("missing Flags field for EventEntry: %w", err) + } + flags, err := fn.AsInt() + if err != nil { + return nil, fmt.Errorf("expected int in Flags field for EventEntry: %w", err) + } + // it has to fit into a uint8 + if flags < 0 || flags > 255 { + return nil, fmt.Errorf("expected uint8 in Flags field for EventEntry, got %d", flags) + } + cn, err := n.LookupByIndex(1) + if err != nil { + return nil, fmt.Errorf("missing Codec field for EventEntry: %w", err) + } + codecCode, err := cn.AsInt() + if err != nil { + return nil, fmt.Errorf("expected int in Codec field for EventEntry: %w", err) + } + kn, err := n.LookupByIndex(2) + if err != nil { + return nil, fmt.Errorf("missing Key field for EventEntry: %w", err) + } + key, err := kn.AsString() + if err != nil { + return nil, fmt.Errorf("expected string in Key field for EventEntry: %w", err) + } + vn, err := n.LookupByIndex(3) + if err != nil { + return nil, fmt.Errorf("missing Value field for EventEntry: %w", err) + } + // as of writing only 0x55 and 0x51 are supported here, but we'll treat raw as the default, + // regardless, which means that for any unexpected codecs encountered we'll assume that the + // encoder also didn't know what to do with it and just treat it as raw bytes. + var value []byte + switch codecCode { + case 0x51: // plain cbor + if value, err = ipld.Encode(vn, dagcbor.Encode); err != nil { + return nil, fmt.Errorf("failed to encode cbor value: %w", err) + } + default: // raw (0x55) and all unknowns + if vn.Kind() != datamodel.Kind_Bytes { + return nil, fmt.Errorf("expected bytes in Value field for EventEntry, got %s", vn.Kind()) + } + if value, err = vn.AsBytes(); err != nil { + return nil, err + } + } + + return &EventEntry{ + Flags: uint8(flags), + Key: key, + Codec: uint64(codecCode), + Value: value, + }, nil +} + +// eventEntryToAny does the reverse of eventEntryFromAny, converting an EventEntry back to the +// standard Go JSON form, i.e.: +// {"Codec":82,"Flags":0,"Key":"key2","Value":"dmFsdWUy"} +func eventEntryToAny(iface interface{}) (datamodel.Node, error) { + ee, ok := iface.(*EventEntry) + if !ok { + return nil, errors.New("expected *Address value") + } + return qp.BuildMap(basicnode.Prototype.Map, 4, func(ma datamodel.MapAssembler) { + qp.MapEntry(ma, "Flags", qp.Int(int64(ee.Flags))) + qp.MapEntry(ma, "Codec", qp.Int(int64(ee.Codec))) + qp.MapEntry(ma, "Key", qp.String(ee.Key)) + qp.MapEntry(ma, "Value", qp.String(base64.StdEncoding.EncodeToString(ee.Value))) + }) +} + +// eventEntryCompactToAny does the reverse of eventEntryCompactFromAny, converting an EventEntry +// back to the compact form, i.e.: +// [0,82,"key2",{"/":{"bytes":"dmFsdWUy"}}] +func eventEntryCompactToAny(iface interface{}) (datamodel.Node, error) { + ee, ok := iface.(*EventEntry) + if !ok { + return nil, errors.New("expected *Address value") + } + var decoder codec.Decoder = raw.Decode + if ee.Codec == 0x51 { + decoder = dagcbor.Decode + } + valueNode, err := ipld.Decode(ee.Value, decoder) + if err != nil { + log.Warn("failed to decode event entry value with expected codec", "err", err) + valueNode = basicnode.NewBytes(ee.Value) + } + return qp.BuildList(basicnode.Prototype.List, 4, func(la datamodel.ListAssembler) { + qp.ListEntry(la, qp.Int(int64(ee.Flags))) + qp.ListEntry(la, qp.Int(int64(ee.Codec))) + qp.ListEntry(la, qp.String(ee.Key)) + qp.ListEntry(la, qp.Node(valueNode)) + }) +} + +var ( + actorEventProto schema.TypedPrototype + fullFormIpldSchema = ` +type ActorEvent struct { + encodeCompact optional Bool + Entries [Any] (rename "entries") # EventEntry + Emitter String (rename "emitter") # addr.Address + Reverted Bool (rename "reverted") + Height Int (rename "height") + TipSetKey Any (rename "tipsetKey") # types.TipSetKey + MsgCid &Any (rename "msgCid") +} +` +) + +func init() { + typeSystem, err := ipld.LoadSchemaBytes([]byte(fullFormIpldSchema)) + if err != nil { + panic(err) + } + schemaType := typeSystem.TypeByName("ActorEvent") + if schemaType == nil { + panic(fmt.Errorf("schema for [%T] does not contain that named type [%s]", (*ActorEvent)(nil), "ActorEvent")) + } + actorEventProto = bindnode.Prototype( + (*ActorEvent)(nil), + schemaType, + TipSetKeyAsLinksListBindnodeOption, + addressAsStringBindnodeOption, + eventEntryBindnodeOption, + ) +} diff --git a/chain/types/actor_event_test.go b/chain/types/actor_event_test.go index 8c50b171754..30f1e150b0c 100644 --- a/chain/types/actor_event_test.go +++ b/chain/types/actor_event_test.go @@ -16,6 +16,10 @@ import ( func TestJSONMarshalling(t *testing.T) { rng := pseudo.New(pseudo.NewSource(0)) + emitter := randomF4Addr(t, rng) + tskCid := randomCid(t, rng) + msgCid := randomCid(t, rng) + t.Run("actor event with entries", testJsonMarshalling( ActorEvent{ @@ -23,7 +27,7 @@ func TestJSONMarshalling(t *testing.T) { { Key: "key1", Codec: 0x51, - Value: []byte("value1"), + Value: []byte("fvalue1"), }, { Key: "key2", @@ -31,13 +35,40 @@ func TestJSONMarshalling(t *testing.T) { Value: []byte("value2"), }, }, - Emitter: randomF4Addr(t, rng), + Emitter: emitter, Reverted: false, Height: 1001, - TipSetKey: NewTipSetKey(randomCid(t, rng)), - MsgCid: randomCid(t, rng), + TipSetKey: NewTipSetKey(tskCid), + MsgCid: msgCid, }, - `{"entries":[{"Flags":0,"Key":"key1","Codec":81,"Value":"dmFsdWUx"},{"Flags":0,"Key":"key2","Codec":82,"Value":"dmFsdWUy"}],"emitter":"f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua","reverted":false,"height":1001,"tipsetKey":[{"/":"bafkqacx3dag26sfht3qlcdi"}],"msgCid":{"/":"bafkqacrziziykd6uuf4islq"}}`, + `{"entries":[{"Flags":0,"Key":"key1","Codec":81,"Value":"ZnZhbHVlMQ=="},{"Flags":0,"Key":"key2","Codec":82,"Value":"dmFsdWUy"}],"emitter":"f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua","reverted":false,"height":1001,"tipsetKey":[{"/":"bafkqacx3dag26sfht3qlcdi"}],"msgCid":{"/":"bafkqacrziziykd6uuf4islq"}}`, + ), + ) + + t.Run("actor event with entries as compact form ", + testJsonMarshalling( + ActorEvent{ + Entries: []EventEntry{ + { + // this should get decoded as a string: "value1" in our compact form and + // round-tripped back to this encoded form + Key: "key1", + Codec: 0x51, + Value: []byte("fvalue1"), + }, + { + Key: "key2", + Codec: 0x52, + Value: []byte("value2"), + }, + }, + Emitter: emitter, + Reverted: false, + Height: 1001, + TipSetKey: NewTipSetKey(tskCid), + MsgCid: msgCid, + }.AsCompactEncoded(), + `{"entries":[[0,81,"key1","value1"],[0,82,"key2",{"/":{"bytes":"dmFsdWUy"}}]],"emitter":"f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua","reverted":false,"height":1001,"tipsetKey":[{"/":"bafkqacx3dag26sfht3qlcdi"}],"msgCid":{"/":"bafkqacrziziykd6uuf4islq"}}`, ), ) @@ -52,7 +83,7 @@ func TestJSONMarshalling(t *testing.T) { "key1": { { Codec: 0x51, - Value: []byte("value1"), + Value: []byte("fvalue1"), }, }, "key2": { @@ -66,7 +97,7 @@ func TestJSONMarshalling(t *testing.T) { ToHeight: heightOf(100), TipSetKey: randomTipSetKey(t, rng), }, - `{"addresses":["f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua","f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua"],"fields":{"key1":[{"codec":81,"value":"dmFsdWUx"}],"key2":[{"codec":82,"value":"dmFsdWUy"}]},"fromHeight":0,"toHeight":100,"tipsetKey":[{"/":"bafkqacxcqxwocuiukv4aq5i"}]}`, + `{"addresses":["f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua","f410fagkp3qx2f76maqot74jaiw3tzbxe76k76zrkl3xifk67isrnbn2sll3yua"],"fields":{"key1":[{"codec":81,"value":"ZnZhbHVlMQ=="}],"key2":[{"codec":82,"value":"dmFsdWUy"}]},"fromHeight":0,"toHeight":100,"tipsetKey":[{"/":"bafkqacxcqxwocuiukv4aq5i"}]}`, ), ) t.Run("actor event block", diff --git a/chain/types/event.go b/chain/types/event.go index 5f6415d49e1..7f192459f72 100644 --- a/chain/types/event.go +++ b/chain/types/event.go @@ -32,4 +32,7 @@ type EventEntry struct { Value []byte } +// TODO: implement EventEntry#UnmarshalJSON and EventEntry#MarshalJSON to allow for both compact and +// non-compact forms as per ActorEvent#UnmarshalJSON and ActorEvent#MarshalJSON + type FilterID [32]byte // compatible with EthHash diff --git a/chain/types/tipset_key.go b/chain/types/tipset_key.go index 15e655da7d6..0e0872bbd7e 100644 --- a/chain/types/tipset_key.go +++ b/chain/types/tipset_key.go @@ -3,12 +3,17 @@ package types import ( "bytes" "encoding/json" + "errors" "fmt" "io" "strings" block "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" + "github.com/ipld/go-ipld-prime/datamodel" + cidlink "github.com/ipld/go-ipld-prime/linking/cid" + basicnode "github.com/ipld/go-ipld-prime/node/basic" + "github.com/ipld/go-ipld-prime/node/bindnode" typegen "github.com/whyrusleeping/cbor-gen" "github.com/filecoin-project/go-state-types/abi" @@ -192,3 +197,62 @@ func decodeKey(encoded []byte) ([]cid.Cid, error) { var _ typegen.CBORMarshaler = &TipSetKey{} var _ typegen.CBORUnmarshaler = &TipSetKey{} + +// TipSetKeyAsLinksListBindnodeOption Used in conjunction +// github.com/ipld/go-ipld-prime/node/bindnode when you want to refer to a TipSetKey and have it +// encoded as a list of links, as in the JSON representation above rather than as a byte string as +// in the CBOR representation above. +// +// This option lets you represent a TipSetKey field as an Any in a schema, and it will map directly +// on to a TipSetKey in the corresponding concrete Go types. +var TipSetKeyAsLinksListBindnodeOption = bindnode.TypedAnyConverter(&TipSetKey{}, tipsetKeyAsLinksListFromAny, tipsetKeyAsLinksListToAny) + +func tipsetKeyAsLinksListFromAny(n datamodel.Node) (interface{}, error) { + if n.Kind() != datamodel.Kind_List { + return nil, errors.New("expected list representation") + } + cids := make([]cid.Cid, 0) + itr := n.ListIterator() + for !itr.Done() { + _, v, err := itr.Next() + if err != nil { + return nil, err + } + if v.Kind() != datamodel.Kind_Link { + return nil, errors.New("expected link") + } + l, err := v.AsLink() + if err != nil { + return nil, err + } + if cl, ok := l.(cidlink.Link); ok { + cids = append(cids, cl.Cid) + } else { + return nil, errors.New("expected CID link") + } + } + return &TipSetKey{value: string(encodeKey(cids))}, nil + +} + +func tipsetKeyAsLinksListToAny(iface interface{}) (datamodel.Node, error) { + tsk, ok := iface.(*TipSetKey) + if !ok { + return nil, fmt.Errorf("expected *Address value") + } + cids := tsk.Cids() + nb := basicnode.Prototype.List.NewBuilder() + la, err := nb.BeginList(int64(len(cids))) + if err != nil { + return nil, err + } + for _, c := range cids { + if err := la.AssembleValue().AssignLink(cidlink.Link{Cid: c}); err != nil { + return nil, err + } + } + if err := la.Finish(); err != nil { + return nil, err + } + return nb.Build(), nil +} diff --git a/chain/types/tipset_key_test.go b/chain/types/tipset_key_test.go index 5fbecb3ea7d..554b90ade17 100644 --- a/chain/types/tipset_key_test.go +++ b/chain/types/tipset_key_test.go @@ -8,6 +8,9 @@ import ( "testing" "github.com/ipfs/go-cid" + "github.com/ipld/go-ipld-prime" + "github.com/ipld/go-ipld-prime/codec/dagjson" + "github.com/ipld/go-ipld-prime/node/bindnode" "github.com/multiformats/go-multihash" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -93,3 +96,65 @@ func verifyJSON(t *testing.T, expected string, k TipSetKey) { require.NoError(t, err) assert.Equal(t, k, rehydrated) } + +// Test that our go-ipld-prime bindnode option works with TipSetKey as an Any in the schema but +// properly typed in the Go type. In this form we expect it to match the JSON style encoding, but +// we could use an alternate encoder (dag-cbor) and get the same form: a list of links. This is +// distinct from the natural CBOR form of TipSetKey which is just a byte string, which we don't +// (yet) have a bindnode option for (but could). + +var ipldSchema string = ` +type TSKHolder struct { + K1 String + TSK Any + K2 String +} +` + +type testTSKHolder struct { + K1 string + TSK TipSetKey + K2 string +} + +func TestBindnodeTipSetKey(t *testing.T) { + req := require.New(t) + + cb := cid.V1Builder{Codec: cid.DagCBOR, MhType: multihash.BLAKE2B_MIN + 31} + c1, _ := cb.Sum([]byte("a")) + c2, _ := cb.Sum([]byte("b")) + c3, _ := cb.Sum([]byte("c")) + tsk := NewTipSetKey(c1, c2, c3) + + typeSystem, err := ipld.LoadSchemaBytes([]byte(ipldSchema)) + req.NoError(err, "should load a properly encoded schema") + schemaType := typeSystem.TypeByName("TSKHolder") + req.NotNil(schemaType, "should have the expected type") + proto := bindnode.Prototype((*testTSKHolder)(nil), schemaType, TipSetKeyAsLinksListBindnodeOption) + nd := bindnode.Wrap(&testTSKHolder{ + K1: "before", + TSK: tsk, + K2: "after", + }, schemaType, TipSetKeyAsLinksListBindnodeOption) + jsonBytes, err := ipld.Encode(nd, dagjson.Encode) + req.NoError(err, "should encode to JSON with ipld-prime") + + // plain json unmarshal, make sure we're compatible + var holder testTSKHolder + err = json.Unmarshal(jsonBytes, &holder) + req.NoError(err, "should decode with encoding/json") + req.Equal("before", holder.K1) + req.Equal("after", holder.K2) + req.Equal(tsk, holder.TSK) + + // decode with ipld-prime + decoded, err := ipld.DecodeUsingPrototype(jsonBytes, dagjson.Decode, proto) + req.NoError(err, "should decode with ipld-prime") + tskPtr := bindnode.Unwrap(decoded) + req.NotNil(tskPtr, "should have a non-nil value") + holder2, ok := tskPtr.(*testTSKHolder) + req.True(ok, "should unwrap to the correct go type") + req.Equal("before", holder2.K1) + req.Equal("after", holder2.K2) + req.Equal(tsk, holder2.TSK) +} diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 4c1dbdee4fe..f6c8e456e37 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -3426,17 +3426,20 @@ Response: ```json [ { + "emitter": "f01234", "entries": [ { + "Codec": 42, "Flags": 7, "Key": "string value", - "Codec": 42, "Value": "Ynl0ZSBhcnJheQ==" } ], - "emitter": "f01234", - "reverted": true, "height": 10101, + "msgCid": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "reverted": true, "tipsetKey": [ { "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" @@ -3444,10 +3447,7 @@ Response: { "/": "bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve" } - ], - "msgCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + ] } ] ``` @@ -8874,17 +8874,20 @@ Inputs: Response: ```json { + "emitter": "f01234", "entries": [ { + "Codec": 42, "Flags": 7, "Key": "string value", - "Codec": 42, "Value": "Ynl0ZSBhcnJheQ==" } ], - "emitter": "f01234", - "reverted": true, "height": 10101, + "msgCid": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "reverted": true, "tipsetKey": [ { "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" @@ -8892,10 +8895,7 @@ Response: { "/": "bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve" } - ], - "msgCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + ] } ``` diff --git a/itests/direct_data_onboard_verified_test.go b/itests/direct_data_onboard_verified_test.go index 0c3de2448d2..3676c5aa8ba 100644 --- a/itests/direct_data_onboard_verified_test.go +++ b/itests/direct_data_onboard_verified_test.go @@ -588,14 +588,15 @@ func ddoVerifiedBuildActorEventsFromMessages(ctx context.Context, t *testing.T, addr, err := address.NewIDAddress(uint64(evt.Emitter)) require.NoError(t, err) - actorEvents = append(actorEvents, &types.ActorEvent{ + ae := types.ActorEvent{ Entries: evt.Entries, Emitter: addr, Reverted: false, Height: ts.Height(), TipSetKey: ts.Key(), MsgCid: m.Cid, - }) + }.AsCompactEncoded() + actorEvents = append(actorEvents, &ae) } } } diff --git a/node/impl/full/actor_events.go b/node/impl/full/actor_events.go index fecd1d2b6ad..784cf41eb97 100644 --- a/node/impl/full/actor_events.go +++ b/node/impl/full/actor_events.go @@ -296,14 +296,15 @@ func (a *ActorEventHandler) SubscribeActorEvents(ctx context.Context, evtFilter return false } - buffer = append(buffer, &types.ActorEvent{ + ae := types.ActorEvent{ Entries: ce.Entries, Emitter: ce.EmitterAddr, Reverted: ce.Reverted, Height: ce.Height, TipSetKey: ce.TipSetKey, MsgCid: ce.MsgCid, - }) + }.AsCompactEncoded() + buffer = append(buffer, &ae) return true } @@ -362,14 +363,15 @@ func getCollected(ctx context.Context, f filter.EventFilter) []*types.ActorEvent var out []*types.ActorEvent for _, e := range ces { - out = append(out, &types.ActorEvent{ + ae := types.ActorEvent{ Entries: e.Entries, Emitter: e.EmitterAddr, Reverted: e.Reverted, Height: e.Height, TipSetKey: e.TipSetKey, MsgCid: e.MsgCid, - }) + }.AsCompactEncoded() + out = append(out, &ae) } return out diff --git a/node/impl/full/actor_events_test.go b/node/impl/full/actor_events_test.go index ab446e57b4a..975a9cd9843 100644 --- a/node/impl/full/actor_events_test.go +++ b/node/impl/full/actor_events_test.go @@ -732,14 +732,15 @@ func epochPtr(i int) *abi.ChainEpoch { func collectedToActorEvents(collected []*filter.CollectedEvent) []*types.ActorEvent { var out []*types.ActorEvent for _, c := range collected { - out = append(out, &types.ActorEvent{ + ae := types.ActorEvent{ Entries: c.Entries, Emitter: c.EmitterAddr, Reverted: c.Reverted, Height: c.Height, TipSetKey: c.TipSetKey, MsgCid: c.MsgCid, - }) + }.AsCompactEncoded() + out = append(out, &ae) } return out } From 4b4134430462c8a23f8965e08cb59154823bf95f Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Wed, 13 Mar 2024 17:27:50 +1100 Subject: [PATCH 2/2] doc: add compact ActorEvent example for doc gen --- api/docgen/docgen.go | 23 ++++++++++ build/openrpc/full.json.gz | Bin 35941 -> 35957 bytes build/openrpc/gateway.json.gz | Bin 12145 -> 12151 bytes documentation/en/api-v1-unstable-methods.md | 44 +++++++++++++------- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/api/docgen/docgen.go b/api/docgen/docgen.go index bf76444e63d..c9ac16add0a 100644 --- a/api/docgen/docgen.go +++ b/api/docgen/docgen.go @@ -43,6 +43,7 @@ import ( "github.com/filecoin-project/lotus/chain/actors/builtin/miner" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/ethtypes" + "github.com/filecoin-project/lotus/lib/must" "github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/repo/imports" sealing "github.com/filecoin-project/lotus/storage/pipeline" @@ -433,6 +434,28 @@ func init() { FromHeight: epochPtr(1010), ToHeight: epochPtr(1020), }) + + ae := types.ActorEvent{ + Emitter: must.One(address.NewIDAddress(1234)), + Entries: []types.EventEntry{ + { + Codec: 81, + Flags: 3, + Key: "$type", + Value: []byte("jallocation"), + }, + { + Codec: 81, + Flags: 3, + Key: "client", + Value: []byte("\x19\x03\xf3"), + }, + }, + Height: abi.ChainEpoch(101010), + MsgCid: cid.MustParse("bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"), + TipSetKey: types.NewTipSetKey(cid.MustParse("bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"), cid.MustParse("bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve")), + }.AsCompactEncoded() + addExample(&ae) } func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) { diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index cd2278ebb13e81bd3cc70c47751e499c2b73bbf5..d83de75946f15383c549b5b3de92ad3b5e7e4694 100644 GIT binary patch literal 35957 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 J&#=NB2LRp*jx+!O literal 35941 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 delta 11603 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