From 896688c670d20832a57adc224695305bf2593aa9 Mon Sep 17 00:00:00 2001 From: Phi-rjan Date: Wed, 7 Feb 2024 23:22:23 +0100 Subject: [PATCH] feat: fvm: update the FVM/FFI to v4.1 (#11608) (#11612) This: 1. Adds nv22 support. 2. Updates the message tracing format. Co-authored-by: Steven Allen --- CHANGELOG.md | 46 +++++++ api/docgen/docgen.go | 8 +- build/openrpc/full.json.gz | Bin 34899 -> 35017 bytes build/openrpc/gateway.json.gz | Bin 11861 -> 11922 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 | 11 ++ node/impl/full/eth_trace.go | 11 +- 12 files changed, 365 insertions(+), 86 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5da284702..88ccfa971 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 e4574d157..00e938c6e 100644 --- a/api/docgen/docgen.go +++ b/api/docgen/docgen.go @@ -153,13 +153,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), }) @@ -208,7 +209,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 0f5a23788fad4d6fcb6fa90c6956f6d7e2ec467e..0779bc4519eed8920ccca38c40a7ab7c3e1f5be0 100644 GIT binary patch delta 12830 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 diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz index 04cbbbe5d4747efac90db74f8a2d8df800e56256..6571430bcc4533d2bb8a5cb8cbf0525c1047254f 100644 GIT binary patch delta 11799 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 B5X%4n diff --git a/chain/types/cbor_gen.go b/chain/types/cbor_gen.go index a097c72de..ba84c1e50 100644 --- a/chain/types/cbor_gen.go +++ b/chain/types/cbor_gen.go @@ -2410,7 +2410,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 { @@ -2474,13 +2550,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 } @@ -2503,7 +2572,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") } @@ -2615,18 +2684,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 } @@ -2764,7 +2821,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 { @@ -2788,6 +2845,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") @@ -2839,7 +2901,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") } @@ -2860,6 +2922,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 a799db39c..f9c7d5a1b 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", @@ -6517,16 +6561,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", @@ -6546,16 +6601,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 049f54773..e728b111f 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -6406,16 +6406,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", @@ -6435,16 +6446,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", @@ -6646,16 +6668,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", @@ -6675,16 +6708,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", @@ -8197,16 +8241,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", @@ -8226,16 +8281,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 be911fcd5..b715c9403 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit be911fcd56251d5477756893881ed2bac5d01657 +Subproject commit b715c9403faf919e95fdc702cd651e842f18d890 diff --git a/gen/main.go b/gen/main.go index 447822893..f1fe3876a 100644 --- a/gen/main.go +++ b/gen/main.go @@ -39,6 +39,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 a0dd82780..c8b976710 100644 --- a/go.sum +++ b/go.sum @@ -1798,6 +1798,7 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1840,6 +1841,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= @@ -1902,7 +1904,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= @@ -1928,6 +1932,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= @@ -2029,6 +2034,8 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/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/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2037,6 +2044,8 @@ 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/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2048,6 +2057,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= @@ -2116,6 +2126,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")