From ca877940a0cd0b53bea246cb20b4780d977c45c0 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 6 Feb 2024 17:22:14 -0800 Subject: [PATCH] feat: fvm: update the FVM/FFI to v4.1 (#11608) This: 1. Adds nv22 support. 2. Updates the message tracing format. --- CHANGELOG.md | 46 +++++++ api/docgen/docgen.go | 8 +- build/openrpc/full.json.gz | Bin 34601 -> 34712 bytes build/openrpc/gateway.json.gz | Bin 11870 -> 11931 bytes chain/types/cbor_gen.go | 127 ++++++++++++++++---- chain/types/execresult.go | 17 +-- documentation/en/api-v0-methods.md | 114 ++++++++++++++---- documentation/en/api-v1-unstable-methods.md | 114 ++++++++++++++---- extern/filecoin-ffi | 2 +- gen/main.go | 1 + go.sum | 8 ++ node/impl/full/eth_trace.go | 11 +- 12 files changed, 362 insertions(+), 86 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cf98e889..c18f2f6a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,52 @@ ## Improvements +### Tracing API + +Replace the `CodeCid` field in the message trace (added in 1.23.4) with an `InvokedActor` field. + +**Before:** + +```javascript +{ + "Msg": { + "From": ..., + "To": ..., + ... + "CodeCid": ... // The actor's code CID. + } + "MsgRct": ..., + "GasCharges": [], + "Subcalls": [], +} +``` + +**After:** + +```javascript +{ + "Msg": { + "From": ..., + "To": ... + } + "InvokedActor": { // The invoked actor (ommitted if the actor wasn't invoked). + "Id": 1234, // The ID of the actor. + "State": { // The actor's state object (may change between network versions). + "Code": ..., // The actor's code CID. + "Head": ..., // The actor's state-root (when invoked). + "CallSeqNum": ..., // The actor's nonce. + "Balance": ..., // The actor's balance (when invoked). + "Address": ..., // Delegated address (FEVM only). + } + } + "MsgRct": ..., + "GasCharges": [], + "Subcalls": [], +} +``` + +This means the trace now contains an accurate "snapshot" of the actor at the time of the call, information that may not be present in the final state-tree (e.g., due to reverts). This will hopefully improve the performance and accuracy of indexing services. + # v1.25.2 / 2024-01-11 This is an optional but **highly recommended feature release** of Lotus, as it includes fixes for synchronizations issues that users have experienced. The feature release also introduces `Lotus-Provider` in its alpha testing phase, as well as the ability to call external PC2-binaries during the sealing process. diff --git a/api/docgen/docgen.go b/api/docgen/docgen.go index 181efeb30..6028a40f2 100644 --- a/api/docgen/docgen.go +++ b/api/docgen/docgen.go @@ -154,13 +154,14 @@ func init() { addExample(map[verifreg.ClaimId]verifreg.Claim{}) addExample(map[string]int{"name": 42}) addExample(map[string]time.Time{"name": time.Unix(1615243938, 0).UTC()}) + addExample(abi.ActorID(1000)) + addExample(map[string]types.Actor{ + "t01236": ExampleValue("init", reflect.TypeOf(types.Actor{}), nil).(types.Actor), + }) addExample(&types.ExecutionTrace{ Msg: ExampleValue("init", reflect.TypeOf(types.MessageTrace{}), nil).(types.MessageTrace), MsgRct: ExampleValue("init", reflect.TypeOf(types.ReturnTrace{}), nil).(types.ReturnTrace), }) - addExample(map[string]types.Actor{ - "t01236": ExampleValue("init", reflect.TypeOf(types.Actor{}), nil).(types.Actor), - }) addExample(map[string]api.MarketDeal{ "t026363": ExampleValue("init", reflect.TypeOf(api.MarketDeal{}), nil).(api.MarketDeal), }) @@ -209,7 +210,6 @@ func init() { si := uint64(12) addExample(&si) addExample(retrievalmarket.DealID(5)) - addExample(abi.ActorID(1000)) addExample(map[string]cid.Cid{}) addExample(map[string][]api.SealedRef{ "98000": { diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 0b0acf6dae7a7a7e8d64017a070186a9a62d8b6b..dc9bc44ec13c8002b79e97069b6d6e6e6ed4ece5 100644 GIT binary patch delta 32201 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ν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 W{4U`)0|?0Xw*#MSs8K8!$o~Q?m__LT diff --git a/chain/types/cbor_gen.go b/chain/types/cbor_gen.go index fe8e7e3fe..74a278ce4 100644 --- a/chain/types/cbor_gen.go +++ b/chain/types/cbor_gen.go @@ -2395,7 +2395,83 @@ func (t *GasTrace) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufMessageTrace = []byte{137} +var lengthBufActorTrace = []byte{130} + +func (t *ActorTrace) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write(lengthBufActorTrace); err != nil { + return err + } + + // t.Id (abi.ActorID) (uint64) + + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Id)); err != nil { + return err + } + + // t.State (types.ActorV5) (struct) + if err := t.State.MarshalCBOR(cw); err != nil { + return err + } + return nil +} + +func (t *ActorTrace) UnmarshalCBOR(r io.Reader) (err error) { + *t = ActorTrace{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajArray { + return fmt.Errorf("cbor input should be of type array") + } + + if extra != 2 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.Id (abi.ActorID) (uint64) + + { + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.Id = abi.ActorID(extra) + + } + // t.State (types.ActorV5) (struct) + + { + + if err := t.State.UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.State: %w", err) + } + + } + return nil +} + +var lengthBufMessageTrace = []byte{136} func (t *MessageTrace) MarshalCBOR(w io.Writer) error { if t == nil { @@ -2459,13 +2535,6 @@ func (t *MessageTrace) MarshalCBOR(w io.Writer) error { if err := cbg.WriteBool(w, t.ReadOnly); err != nil { return err } - - // t.CodeCid (cid.Cid) (struct) - - if err := cbg.WriteCid(cw, t.CodeCid); err != nil { - return xerrors.Errorf("failed to write cid field t.CodeCid: %w", err) - } - return nil } @@ -2488,7 +2557,7 @@ func (t *MessageTrace) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input should be of type array") } - if extra != 9 { + if extra != 8 { return fmt.Errorf("cbor input had wrong number of fields") } @@ -2599,18 +2668,6 @@ func (t *MessageTrace) UnmarshalCBOR(r io.Reader) (err error) { default: return fmt.Errorf("booleans are either major type 7, value 20 or 21 (got %d)", extra) } - // t.CodeCid (cid.Cid) (struct) - - { - - c, err := cbg.ReadCid(cr) - if err != nil { - return xerrors.Errorf("failed to read cid field t.CodeCid: %w", err) - } - - t.CodeCid = c - - } return nil } @@ -2747,7 +2804,7 @@ func (t *ReturnTrace) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufExecutionTrace = []byte{132} +var lengthBufExecutionTrace = []byte{133} func (t *ExecutionTrace) MarshalCBOR(w io.Writer) error { if t == nil { @@ -2771,6 +2828,11 @@ func (t *ExecutionTrace) MarshalCBOR(w io.Writer) error { return err } + // t.InvokedActor (types.ActorTrace) (struct) + if err := t.InvokedActor.MarshalCBOR(cw); err != nil { + return err + } + // t.GasCharges ([]*types.GasTrace) (slice) if len(t.GasCharges) > 1000000000 { return xerrors.Errorf("Slice value in field t.GasCharges was too long") @@ -2820,7 +2882,7 @@ func (t *ExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input should be of type array") } - if extra != 4 { + if extra != 5 { return fmt.Errorf("cbor input had wrong number of fields") } @@ -2841,6 +2903,25 @@ func (t *ExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { return xerrors.Errorf("unmarshaling t.MsgRct: %w", err) } + } + // t.InvokedActor (types.ActorTrace) (struct) + + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.InvokedActor = new(ActorTrace) + if err := t.InvokedActor.UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.InvokedActor pointer: %w", err) + } + } + } // t.GasCharges ([]*types.GasTrace) (slice) diff --git a/chain/types/execresult.go b/chain/types/execresult.go index 4556f7b88..99bbb6ece 100644 --- a/chain/types/execresult.go +++ b/chain/types/execresult.go @@ -4,8 +4,6 @@ import ( "encoding/json" "time" - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/exitcode" @@ -28,7 +26,11 @@ type MessageTrace struct { ParamsCodec uint64 GasLimit uint64 ReadOnly bool - CodeCid cid.Cid +} + +type ActorTrace struct { + Id abi.ActorID + State Actor } type ReturnTrace struct { @@ -38,10 +40,11 @@ type ReturnTrace struct { } type ExecutionTrace struct { - Msg MessageTrace - MsgRct ReturnTrace - GasCharges []*GasTrace `cborgen:"maxlen=1000000000"` - Subcalls []ExecutionTrace `cborgen:"maxlen=1000000000"` + Msg MessageTrace + MsgRct ReturnTrace + InvokedActor *ActorTrace `json:",omitempty"` + GasCharges []*GasTrace `cborgen:"maxlen=1000000000"` + Subcalls []ExecutionTrace `cborgen:"maxlen=1000000000"` } func (et ExecutionTrace) SumGas() GasTrace { diff --git a/documentation/en/api-v0-methods.md b/documentation/en/api-v0-methods.md index 2eb683f2c..411190339 100644 --- a/documentation/en/api-v0-methods.md +++ b/documentation/en/api-v0-methods.md @@ -4878,16 +4878,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -4907,16 +4918,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -5118,16 +5140,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -5147,16 +5180,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -6518,16 +6562,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -6547,16 +6602,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 6c315a92d..c24cdc6dd 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -6375,16 +6375,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -6404,16 +6415,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -6615,16 +6637,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -6644,16 +6677,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -8144,16 +8188,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", @@ -8173,16 +8228,27 @@ Response: "Params": "Ynl0ZSBhcnJheQ==", "ParamsCodec": 42, "GasLimit": 42, - "ReadOnly": true, - "CodeCid": { - "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" - } + "ReadOnly": true }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", "ReturnCodec": 42 }, + "InvokedActor": { + "Id": 1000, + "State": { + "Code": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Head": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + }, + "Nonce": 42, + "Balance": "0", + "Address": "f01234" + } + }, "GasCharges": [ { "Name": "string value", diff --git a/extern/filecoin-ffi b/extern/filecoin-ffi index 4176a1e66..b715c9403 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit 4176a1e662e865834bfdc5861da921dc2d272b45 +Subproject commit b715c9403faf919e95fdc702cd651e842f18d890 diff --git a/gen/main.go b/gen/main.go index 942b3ac2c..d84343739 100644 --- a/gen/main.go +++ b/gen/main.go @@ -38,6 +38,7 @@ func main() { types.EventEntry{}, // Tracing types.GasTrace{}, + types.ActorTrace{}, types.MessageTrace{}, types.ReturnTrace{}, types.ExecutionTrace{}, diff --git a/go.sum b/go.sum index a7983d80c..57eb9bcd1 100644 --- a/go.sum +++ b/go.sum @@ -1821,6 +1821,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1883,7 +1884,9 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1909,6 +1912,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180202135801-37707fdb30a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2014,6 +2018,7 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2022,6 +2027,7 @@ golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2033,6 +2039,7 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2101,6 +2108,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/node/impl/full/eth_trace.go b/node/impl/full/eth_trace.go index 9d24394d7..123d96fe1 100644 --- a/node/impl/full/eth_trace.go +++ b/node/impl/full/eth_trace.go @@ -56,6 +56,11 @@ func buildTraces(traces *[]*ethtypes.EthTrace, parent *ethtypes.EthTrace, addr [ return nil } + // Skip the trace if we never reached the point where we invoked this actor. + if et.InvokedActor == nil { + return nil + } + trace := ðtypes.EthTrace{ Action: ethtypes.EthTraceAction{ From: from, @@ -67,7 +72,7 @@ func buildTraces(traces *[]*ethtypes.EthTrace, parent *ethtypes.EthTrace, addr [ FilecoinFrom: et.Msg.From, FilecoinTo: et.Msg.To, FilecoinMethod: et.Msg.Method, - FilecoinCodeCid: et.Msg.CodeCid, + FilecoinCodeCid: et.InvokedActor.State.Code, }, Result: ethtypes.EthTraceResult{ GasUsed: ethtypes.EthUint64(et.SumGas().TotalGas), @@ -137,7 +142,7 @@ func buildTraces(traces *[]*ethtypes.EthTrace, parent *ethtypes.EthTrace, addr [ if parent.Action.FilecoinTo == builtin.InitActorAddr && parent.Action.FilecoinMethod == builtin.MethodsInit.Exec && et.Msg.Method == builtin.MethodConstructor { - log.Debugf("COND3 Native actor creation! method:%d, code:%s, height:%d", et.Msg.Method, et.Msg.CodeCid.String(), height) + log.Debugf("COND3 Native actor creation! method:%d, code:%s, height:%d", et.Msg.Method, et.InvokedActor.State.Code.String(), height) parent.SetCallType("create") parent.Action.To = to parent.Action.Input = []byte{0xFE} @@ -165,7 +170,7 @@ func buildTraces(traces *[]*ethtypes.EthTrace, parent *ethtypes.EthTrace, addr [ // TODO: We need to handle failures in contract creations and support resurrections on an existing but dead EVM actor) if calledCreateOnEAM && eamCalledInitOnExec4 && initCreatedActor { - log.Debugf("COND4 EVM contract creation method:%d, code:%s, height:%d", et.Msg.Method, et.Msg.CodeCid.String(), height) + log.Debugf("COND4 EVM contract creation method:%d, code:%s, height:%d", et.Msg.Method, et.InvokedActor.State.Code.String(), height) if parent.Parent.Action.FilecoinMethod == builtin.MethodsEAM.Create { parent.Parent.SetCallType("create")