diff --git a/CHANGELOG.md b/CHANGELOG.md index d2f0262ea5..b9c95d0e6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # venus changelog +## v1.11.1 + +* fix: windowPoST verify fail [[#fvm-1750](https://github.com/filecoin-project/ref-fvm/pull/1750)] + +## v1.11.0 + +This is the stable release of Venus v1.11.0 for the upcoming MANDATORY network upgrade at `2023-04-27T13:00:00Z`, epoch `2809800`. This release delivers the nv19 Lighting and nv20 Thunder network upgrade for mainnet. +The Lighting and Thunder upgrade introduces the following Filecoin Improvement Proposals (FIPs), delivered by builtin-actors v11 (see actors [v11.0.0](https://github.com/filecoin-project/builtin-actors/releases/tag/v11.0.0)): + +- [FIP 0060](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0060.md) - Thirty day market deal maintenance interval +- [FIP 0061](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0061.md) - WindowPoSt grindability fix +- [FIP 0062](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0062.md) - Fallback method handler for multisig actor + +### New Features + +- add interface for health check /各组件增加状态检查接口 [[#4887](https://github.com/filecoin-project/venus/issues/4887)] +- ffi validation parallelism / ffi 验证平行计算 [[#5838](https://github.com/filecoin-project/venus/issues/5838)] +- chain fetch faster / chain fetch 优化 [[#5814](https://github.com/filecoin-project/venus/issues/5814)] + +## v1.11.0-rc2 + +### Main Changes + +* Revert add new-vm-exec-tracer [[#5901](https://github.com/filecoin-project/venus/pull/5901)] + ## v1.11.0-rc1 ### New Features diff --git a/extern/filecoin-ffi b/extern/filecoin-ffi index cec06a79dc..1e38c8473f 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit cec06a79dc858f221f6542cff264b92b4f99c25d +Subproject commit 1e38c8473fe806255795163ada0fbed081180333 diff --git a/fixtures/networks/butterfly.go b/fixtures/networks/butterfly.go index b1e82c3f68..edd20c51ed 100644 --- a/fixtures/networks/butterfly.go +++ b/fixtures/networks/butterfly.go @@ -12,8 +12,8 @@ func ButterflySnapNet() *NetworkConf { return &NetworkConf{ Bootstrap: config.BootstrapConfig{ Addresses: []string{ - "/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWEwwFTMAi8rMnVX4fzih9pW5xZgTMbcacAFPinaT1g4wo", - "/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWSJ8KShJSdW8cqz29K7k3AR5frbAaun8gdW3ELFV3T4Ck", + "/dns4/bootstrap-0.butterfly.fildev.network/tcp/1347/p2p/12D3KooWD5mtdmjHQ1Puj9Md7SEfoa7kWMpwqUhAKsyYsBP56LQC", + "/dns4/bootstrap-1.butterfly.fildev.network/tcp/1347/p2p/12D3KooWEoYPkm6o87ES6AppFY7d7WHJUQg7XVPRAyQZjEU31efQ", }, MinPeerThreshold: 0, Period: "30s", diff --git a/fixtures/networks/forcenet.go b/fixtures/networks/forcenet.go index 16e83cd3a7..4a8027c2f8 100644 --- a/fixtures/networks/forcenet.go +++ b/fixtures/networks/forcenet.go @@ -55,7 +55,7 @@ func ForceNet() *NetworkConf { UpgradeOhSnapHeight: -18, UpgradeSkyrHeight: -19, UpgradeSharkHeight: -20, - UpgradeHyggeHeight: 30, + UpgradeHyggeHeight: -21, UpgradeLightningHeight: 30, UpgradeThunderHeight: 1000, }, diff --git a/fixtures/networks/mainnet.go b/fixtures/networks/mainnet.go index c5990362b0..cd106fc41d 100644 --- a/fixtures/networks/mainnet.go +++ b/fixtures/networks/mainnet.go @@ -67,13 +67,12 @@ func Mainnet() *NetworkConf { UpgradeTurboHeight: 712320, // 2021-04-29T06:00:00Z UpgradeHyperdriveHeight: 892800, // 2021-06-30T22:00:00Z UpgradeChocolateHeight: 1231620, - UpgradeOhSnapHeight: 1594680, // 2022-03-01T15:00:00Z - UpgradeSkyrHeight: 1960320, // 2022-07-06T14:00:00Z - UpgradeSharkHeight: 2383680, // 2022-11-30T14:00:00Z - UpgradeHyggeHeight: 2683348, // 2023-03-14T15:14:00Z - // TODO: set correct upgrade height - UpgradeLightningHeight: 999999999999999, - UpgradeThunderHeight: 999999999999999 + 1, + UpgradeOhSnapHeight: 1594680, // 2022-03-01T15:00:00Z + UpgradeSkyrHeight: 1960320, // 2022-07-06T14:00:00Z + UpgradeSharkHeight: 2383680, // 2022-11-30T14:00:00Z + UpgradeHyggeHeight: 2683348, // 2023-03-14T15:14:00Z + UpgradeLightningHeight: 2809800, // 2023-04-27T13:00:00Z + UpgradeThunderHeight: 2809800 + 2880*21, // 2023-05-18T13:00:00Z }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: 5, 51000: 1}, AddressNetwork: address.Mainnet, diff --git a/go.mod b/go.mod index 58d1354658..dc076f291a 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/filecoin-project/go-fil-markets v1.25.2 github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-paramfetch v0.0.4 - github.com/filecoin-project/go-state-types v0.11.0-rc2 + github.com/filecoin-project/go-state-types v0.11.1 github.com/filecoin-project/pubsub v1.0.0 github.com/filecoin-project/specs-actors v0.9.15 github.com/filecoin-project/specs-actors/v2 v2.3.6 @@ -44,7 +44,7 @@ require ( github.com/filecoin-project/specs-actors/v8 v8.0.1 github.com/filecoin-project/specs-storage v0.4.1 github.com/filecoin-project/test-vectors/schema v0.0.5 - github.com/filecoin-project/venus-auth v1.10.2-0.20230308100319-913815325d5e + github.com/filecoin-project/venus-auth v1.11.0 github.com/fxamacker/cbor/v2 v2.4.0 github.com/go-errors/errors v1.0.1 github.com/go-kit/kit v0.12.0 diff --git a/go.sum b/go.sum index 65f6feb88c..f0e0c7a6e1 100644 --- a/go.sum +++ b/go.sum @@ -352,9 +352,9 @@ github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psS github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4IrzznwS98X5XW/irUP3Lhxg= github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= -github.com/filecoin-project/go-state-types v0.11.0-rc1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= -github.com/filecoin-project/go-state-types v0.11.0-rc2 h1:zUx7aRxEGn56n4A1RS2J8FZzpzAozEMsqF11aXjtmkc= github.com/filecoin-project/go-state-types v0.11.0-rc2/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= +github.com/filecoin-project/go-state-types v0.11.1 h1:GDtCN9V18bYVwXDZe+vJXc6Ck+qY9OUaQqpoVlp1FAk= +github.com/filecoin-project/go-state-types v0.11.1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v1.0.2 h1:421SSWBk8GIoCoWYYTE/d+qCWccgmRH0uXotXRDjUbc= github.com/filecoin-project/go-statemachine v1.0.2/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= @@ -387,8 +387,8 @@ github.com/filecoin-project/specs-storage v0.4.1/go.mod h1:Z2eK6uMwAOSLjek6+sy0j github.com/filecoin-project/storetheindex v0.4.30-0.20221114113647-683091f8e893 h1:6GCuzxLVHBzlz7y+FkbHh6n0UyoEGWqDwJKQPJoz7bE= github.com/filecoin-project/test-vectors/schema v0.0.5 h1:w3zHQhzM4pYxJDl21avXjOKBLF8egrvwUwjpT8TquDg= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= -github.com/filecoin-project/venus-auth v1.10.2-0.20230308100319-913815325d5e h1:Bxpt1AzPeNxmUnFT2Y8rpabr9x0wIC0Q87DeRmjL2co= -github.com/filecoin-project/venus-auth v1.10.2-0.20230308100319-913815325d5e/go.mod h1:aBfIfNxQkdcY8Rk5wrQn9qRtJpH4RTDdc10Ac+ferzs= +github.com/filecoin-project/venus-auth v1.11.0 h1:9PBswWxc113vqaHABMcRyMm+1BtlJCwOFTPQJg/OVtQ= +github.com/filecoin-project/venus-auth v1.11.0/go.mod h1:aBfIfNxQkdcY8Rk5wrQn9qRtJpH4RTDdc10Ac+ferzs= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= diff --git a/pkg/constants/version.go b/pkg/constants/version.go index 923c92a8f3..ff4fbf9a9a 100644 --- a/pkg/constants/version.go +++ b/pkg/constants/version.go @@ -5,7 +5,7 @@ import ( ) // BuildVersion is the local build version, set by build system -const BuildVersion = "1.11.0-rc1" +const BuildVersion = "1.11.1" var CurrentCommit string diff --git a/pkg/fork/fork.go b/pkg/fork/fork.go index 3d5027a22e..e50729cd6b 100644 --- a/pkg/fork/fork.go +++ b/pkg/fork/fork.go @@ -379,11 +379,6 @@ func DefaultUpgradeSchedule(cf *ChainFork, upgradeHeight *config.ForkUpgradeConf StartWithin: 120, DontStartWithin: 15, StopWithin: 10, - }, { - PreMigration: cf.PreUpgradeActorsV11, - StartWithin: 15, - DontStartWithin: 10, - StopWithin: 5, }}, Expensive: true, }, { diff --git a/pkg/fvm/cbor_gen.go b/pkg/fvm/cbor_gen.go new file mode 100644 index 0000000000..71b053ecd9 --- /dev/null +++ b/pkg/fvm/cbor_gen.go @@ -0,0 +1,391 @@ +// Code generated by github.com/whyrusleeping/cbor-gen. DO NOT EDIT. + +package fvm + +import ( + "fmt" + "io" + "math" + "sort" + + types "github.com/filecoin-project/venus/venus-shared/actors/types" + types1 "github.com/filecoin-project/venus/venus-shared/types" + cid "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + xerrors "golang.org/x/xerrors" +) + +var _ = xerrors.Errorf +var _ = cid.Undef +var _ = math.E +var _ = sort.Sort + +var lengthBufFvmExecutionTrace = []byte{133} + +func (t *FvmExecutionTrace) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write(lengthBufFvmExecutionTrace); err != nil { + return err + } + + // t.Msg (types.Message) (struct) + if err := t.Msg.MarshalCBOR(cw); err != nil { + return err + } + + // t.MsgRct (types.MessageReceipt) (struct) + if err := t.MsgRct.MarshalCBOR(cw); err != nil { + return err + } + + // t.Error (string) (string) + if len(t.Error) > cbg.MaxLength { + return xerrors.Errorf("Value in field t.Error was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Error))); err != nil { + return err + } + if _, err := io.WriteString(w, string(t.Error)); err != nil { + return err + } + + // t.GasCharges ([]fvm.FvmGasCharge) (slice) + if len(t.GasCharges) > 1000000000 { + return xerrors.Errorf("Slice value in field t.GasCharges was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.GasCharges))); err != nil { + return err + } + for _, v := range t.GasCharges { + if err := v.MarshalCBOR(cw); err != nil { + return err + } + } + + // t.Subcalls ([]fvm.FvmExecutionTrace) (slice) + if len(t.Subcalls) > 1000000000 { + return xerrors.Errorf("Slice value in field t.Subcalls was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Subcalls))); err != nil { + return err + } + for _, v := range t.Subcalls { + if err := v.MarshalCBOR(cw); err != nil { + return err + } + } + return nil +} + +func (t *FvmExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { + *t = FvmExecutionTrace{} + + 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 != 5 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.Msg (types.Message) (struct) + + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.Msg = new(types.Message) + if err := t.Msg.UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.Msg pointer: %w", err) + } + } + + } + // t.MsgRct (types.MessageReceipt) (struct) + + { + + b, err := cr.ReadByte() + if err != nil { + return err + } + if b != cbg.CborNull[0] { + if err := cr.UnreadByte(); err != nil { + return err + } + t.MsgRct = new(types1.MessageReceipt) + if err := t.MsgRct.UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.MsgRct pointer: %w", err) + } + } + + } + // t.Error (string) (string) + + { + sval, err := cbg.ReadString(cr) + if err != nil { + return err + } + + t.Error = string(sval) + } + // t.GasCharges ([]fvm.FvmGasCharge) (slice) + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + + if extra > 1000000000 { + return fmt.Errorf("t.GasCharges: array too large (%d)", extra) + } + + if maj != cbg.MajArray { + return fmt.Errorf("expected cbor array") + } + + if extra > 0 { + t.GasCharges = make([]FvmGasCharge, extra) + } + + for i := 0; i < int(extra); i++ { + + var v FvmGasCharge + if err := v.UnmarshalCBOR(cr); err != nil { + return err + } + + t.GasCharges[i] = v + } + + // t.Subcalls ([]fvm.FvmExecutionTrace) (slice) + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + + if extra > 1000000000 { + return fmt.Errorf("t.Subcalls: array too large (%d)", extra) + } + + if maj != cbg.MajArray { + return fmt.Errorf("expected cbor array") + } + + if extra > 0 { + t.Subcalls = make([]FvmExecutionTrace, extra) + } + + for i := 0; i < int(extra); i++ { + + var v FvmExecutionTrace + if err := v.UnmarshalCBOR(cr); err != nil { + return err + } + + t.Subcalls[i] = v + } + + return nil +} + +var lengthBufFvmGasCharge = []byte{132} + +func (t *FvmGasCharge) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write(lengthBufFvmGasCharge); err != nil { + return err + } + + // t.Name (string) (string) + if len(t.Name) > cbg.MaxLength { + return xerrors.Errorf("Value in field t.Name was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Name))); err != nil { + return err + } + if _, err := io.WriteString(w, string(t.Name)); err != nil { + return err + } + + // t.TotalGas (int64) (int64) + if t.TotalGas >= 0 { + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.TotalGas)); err != nil { + return err + } + } else { + if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.TotalGas-1)); err != nil { + return err + } + } + + // t.ComputeGas (int64) (int64) + if t.ComputeGas >= 0 { + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ComputeGas)); err != nil { + return err + } + } else { + if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.ComputeGas-1)); err != nil { + return err + } + } + + // t.StorageGas (int64) (int64) + if t.StorageGas >= 0 { + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.StorageGas)); err != nil { + return err + } + } else { + if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.StorageGas-1)); err != nil { + return err + } + } + return nil +} + +func (t *FvmGasCharge) UnmarshalCBOR(r io.Reader) (err error) { + *t = FvmGasCharge{} + + 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 != 4 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.Name (string) (string) + + { + sval, err := cbg.ReadString(cr) + if err != nil { + return err + } + + t.Name = string(sval) + } + // t.TotalGas (int64) (int64) + { + maj, extra, err := cr.ReadHeader() + var extraI int64 + if err != nil { + return err + } + switch maj { + case cbg.MajUnsignedInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 positive overflow") + } + case cbg.MajNegativeInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 negative oveflow") + } + extraI = -1 - extraI + default: + return fmt.Errorf("wrong type for int64 field: %d", maj) + } + + t.TotalGas = int64(extraI) + } + // t.ComputeGas (int64) (int64) + { + maj, extra, err := cr.ReadHeader() + var extraI int64 + if err != nil { + return err + } + switch maj { + case cbg.MajUnsignedInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 positive overflow") + } + case cbg.MajNegativeInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 negative oveflow") + } + extraI = -1 - extraI + default: + return fmt.Errorf("wrong type for int64 field: %d", maj) + } + + t.ComputeGas = int64(extraI) + } + // t.StorageGas (int64) (int64) + { + maj, extra, err := cr.ReadHeader() + var extraI int64 + if err != nil { + return err + } + switch maj { + case cbg.MajUnsignedInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 positive overflow") + } + case cbg.MajNegativeInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 negative oveflow") + } + extraI = -1 - extraI + default: + return fmt.Errorf("wrong type for int64 field: %d", maj) + } + + t.StorageGas = int64(extraI) + } + return nil +} diff --git a/pkg/fvm/fvm.go b/pkg/fvm/fvm.go index ee16a5001d..36b755f494 100644 --- a/pkg/fvm/fvm.go +++ b/pkg/fvm/fvm.go @@ -62,6 +62,60 @@ type FvmExtern struct { // nolint gasPriceSchedule *gas.PricesSchedule } +type FvmGasCharge struct { // nolint + Name string + TotalGas int64 + ComputeGas int64 + StorageGas int64 +} + +// This may eventually become identical to ExecutionTrace, but we can make incremental progress towards that +type FvmExecutionTrace struct { // nolint + Msg *types.Message + MsgRct *types.MessageReceipt + Error string + + GasCharges []FvmGasCharge `cborgen:"maxlen=1000000000"` + Subcalls []FvmExecutionTrace `cborgen:"maxlen=1000000000"` +} + +func (t *FvmExecutionTrace) ToExecutionTrace() types.ExecutionTrace { + if t == nil { + return types.ExecutionTrace{} + } + + ret := types.ExecutionTrace{ + Msg: t.Msg, + MsgRct: t.MsgRct, + Error: t.Error, + Duration: 0, + GasCharges: nil, + Subcalls: nil, // Should be nil when there are no subcalls for backwards compatibility + } + + if len(t.GasCharges) > 0 { + ret.GasCharges = make([]*types.GasTrace, len(t.GasCharges)) + for i, v := range t.GasCharges { + ret.GasCharges[i] = &types.GasTrace{ + Name: v.Name, + TotalGas: v.TotalGas, + ComputeGas: v.ComputeGas, + StorageGas: v.StorageGas, + } + } + } + + if len(t.Subcalls) > 0 { + ret.Subcalls = make([]types.ExecutionTrace, len(t.Subcalls)) + + for i, v := range t.Subcalls { + ret.Subcalls[i] = v.ToExecutionTrace() + } + } + + return ret +} + func (x *FvmExtern) TipsetCid(ctx context.Context, epoch abi.ChainEpoch) (cid.Cid, error) { tsk, err := x.tsGet(ctx, epoch) if err != nil { @@ -442,9 +496,19 @@ func (fvm *FVM) ApplyMessage(ctx context.Context, cmsg types.ChainMsg) (*vm.Ret, var et types.ExecutionTrace if len(ret.ExecTraceBytes) != 0 { - if err = et.UnmarshalCBOR(bytes.NewReader(ret.ExecTraceBytes)); err != nil { + var fvmEt FvmExecutionTrace + if err = fvmEt.UnmarshalCBOR(bytes.NewReader(ret.ExecTraceBytes)); err != nil { return nil, fmt.Errorf("failed to unmarshal exectrace: %w", err) } + et = fvmEt.ToExecutionTrace() + } + + // Set the top-level exectrace info from the message and receipt for backwards compatibility + et.Msg = vmMsg + et.MsgRct = &receipt + et.Duration = duration + if aerr != nil { + et.Error = aerr.Error() } applyRet := &vm.Ret{ @@ -510,9 +574,18 @@ func (fvm *FVM) ApplyImplicitMessage(ctx context.Context, cmsg types.ChainMsg) ( var et types.ExecutionTrace if len(ret.ExecTraceBytes) != 0 { - if err = et.UnmarshalCBOR(bytes.NewReader(ret.ExecTraceBytes)); err != nil { + var fvmEt FvmExecutionTrace + if err = fvmEt.UnmarshalCBOR(bytes.NewReader(ret.ExecTraceBytes)); err != nil { return nil, fmt.Errorf("failed to unmarshal exectrace: %w", err) } + et = fvmEt.ToExecutionTrace() + } else { + et.Msg = vmMsg + et.MsgRct = &receipt + et.Duration = duration + if aerr != nil { + et.Error = aerr.Error() + } } applyRet := &vm.Ret{ diff --git a/pkg/vm/gas/gas_tracker.go b/pkg/vm/gas/gas_tracker.go index a21f4e530d..5dd381923a 100644 --- a/pkg/vm/gas/gas_tracker.go +++ b/pkg/vm/gas/gas_tracker.go @@ -55,6 +55,8 @@ func (t *GasTracker) TryCharge(gasCharge GasCharge) bool { toUse := gasCharge.Total() // code for https://github.com/filecoin-project/venus/issues/4610 if EnableDetailedTracing { + var callers [10]uintptr + cout := 0 // gruntime.Callers(2+skip, callers[:]) now := time.Now() if t.LastGasCharge != nil { @@ -62,11 +64,26 @@ func (t *GasTracker) TryCharge(gasCharge GasCharge) bool { } gasTrace := types.GasTrace{ - Name: gasCharge.Name, + Name: gasCharge.Name, + Extra: gasCharge.Extra, TotalGas: toUse, ComputeGas: gasCharge.ComputeGas, StorageGas: gasCharge.StorageGas, + + // TotalVirtualGas: gasCharge.VirtualCompute*GasComputeMulti + gasCharge.VirtualStorage*GasStorageMulti, + TotalVirtualGas: gasCharge.VirtualCompute + gasCharge.VirtualStorage, + VirtualComputeGas: gasCharge.VirtualCompute, + VirtualStorageGas: gasCharge.VirtualStorage, + + Callers: callers[:cout], + } + + if gasTrace.VirtualStorageGas == 0 { + gasTrace.VirtualStorageGas = gasTrace.StorageGas + } + if gasTrace.VirtualComputeGas == 0 { + gasTrace.VirtualComputeGas = gasTrace.ComputeGas } t.ExecutionTrace.GasCharges = append(t.ExecutionTrace.GasCharges, &gasTrace) diff --git a/pkg/vm/vmcontext/vmcontext.go b/pkg/vm/vmcontext/vmcontext.go index 33effd0e5e..4c5c5c8e71 100644 --- a/pkg/vm/vmcontext/vmcontext.go +++ b/pkg/vm/vmcontext/vmcontext.go @@ -31,7 +31,6 @@ import ( ) const MaxCallDepth = 4096 -const CborCodec = 0x51 var vmlog = logging.Logger("vm.context") @@ -196,13 +195,6 @@ func (vm *LegacyVM) normalizeAddress(addr address.Address) (address.Address, boo func (vm *LegacyVM) applyImplicitMessage(imsg VmMessage) (*Ret, error) { // implicit messages gas is tracked separatly and not paid by the miner gasTank := gas.NewGasTracker(constants.BlockGasLimit * 10000) - gasTank.ExecutionTrace.Msg.From = imsg.From - gasTank.ExecutionTrace.Msg.To = imsg.To - gasTank.ExecutionTrace.Msg.Method = imsg.Method - gasTank.ExecutionTrace.Msg.Value = imsg.Value - if imsg.Params != nil { - gasTank.ExecutionTrace.Msg.ParamsCodec = CborCodec - } // the execution of the implicit messages is simpler than full external/actor-actor messages // execution: @@ -239,11 +231,6 @@ func (vm *LegacyVM) applyImplicitMessage(imsg VmMessage) (*Ret, error) { return nil, fmt.Errorf("invalid exit code %d during implicit message execution: From %s, To %s, Method %d, Value %s, Params %v", code, imsg.From, imsg.To, imsg.Method, imsg.Value, imsg.Params) } - if len(ret) > 0 { - gasTank.ExecutionTrace.MsgRct.ReturnCodec = CborCodec - } - gasTank.ExecutionTrace.MsgRct.Return = ret - gasTank.ExecutionTrace.MsgRct.ExitCode = code return &Ret{ GasTracker: gasTank, OutPuts: gas.GasOutputs{}, @@ -273,13 +260,6 @@ func (vm *LegacyVM) applyMessage(msg *types.Message, onChainMsgSize int) (*Ret, // (see: `invocationContext.invoke()` for the dispatch and execution) // initiate gas tracking gasTank := gas.NewGasTracker(msg.GasLimit) - gasTank.ExecutionTrace.Msg.From = msg.From - gasTank.ExecutionTrace.Msg.To = msg.To - gasTank.ExecutionTrace.Msg.Method = msg.Method - gasTank.ExecutionTrace.Msg.Value = msg.Value - if len(msg.Params) > 0 { - gasTank.ExecutionTrace.Msg.ParamsCodec = CborCodec - } // pre-send // 1. charge for message existence // 2. load sender actor @@ -428,11 +408,6 @@ func (vm *LegacyVM) applyMessage(msg *types.Message, onChainMsgSize int) (*Ret, code = exitcode.SysErrOutOfGas ret = []byte{} } - if len(ret) > 0 { - gasTank.ExecutionTrace.MsgRct.ReturnCodec = CborCodec - } - gasTank.ExecutionTrace.MsgRct.Return = ret - gasTank.ExecutionTrace.MsgRct.ExitCode = code // Roll back all stateView if the receipt's exit code is not ok. // This is required in addition To revert within the invocation context since top level messages can fail for diff --git a/venus-devtool/api-gen/example.go b/venus-devtool/api-gen/example.go index f3588ae793..721219a26a 100644 --- a/venus-devtool/api-gen/example.go +++ b/venus-devtool/api-gen/example.go @@ -152,8 +152,8 @@ func init() { addExample(map[string]time.Time{"name": time.Unix(1615243938, 0).UTC()}) addExample(map[string]cid.Cid{}) addExample(&types.ExecutionTrace{ - Msg: ExampleValue("init", reflect.TypeOf(types.MessageTrace{}), nil).(types.MessageTrace), - MsgRct: ExampleValue("init", reflect.TypeOf(types.ReturnTrace{}), nil).(types.ReturnTrace), + Msg: ExampleValue("init", reflect.TypeOf(&types.Message{}), nil).(*types.Message), + MsgRct: ExampleValue("init", reflect.TypeOf(&types.MessageReceipt{}), nil).(*types.MessageReceipt), }) addExample(map[string]types.Actor{ "t01236": ExampleValue("init", reflect.TypeOf(types.Actor{}), nil).(types.Actor), diff --git a/venus-devtool/cborgen/main.go b/venus-devtool/cborgen/main.go index 8f55628ab0..d2acc1ca5d 100644 --- a/venus-devtool/cborgen/main.go +++ b/venus-devtool/cborgen/main.go @@ -5,6 +5,7 @@ import ( "path/filepath" "github.com/filecoin-project/venus/pkg/chain" + "github.com/filecoin-project/venus/pkg/fvm" market1 "github.com/filecoin-project/venus/pkg/market" "github.com/filecoin-project/venus/pkg/net/helloprotocol" "github.com/filecoin-project/venus/pkg/state/tree" @@ -56,11 +57,6 @@ func main() { types.PaymentInfo{}, types.Event{}, types.EventEntry{}, - // Tracing - types.GasTrace{}, - types.MessageTrace{}, - types.ReturnTrace{}, - types.ExecutionTrace{}, }, }, { @@ -117,6 +113,13 @@ func main() { chain.TSState{}, }, }, + { + dir: "../pkg/fvm", + types: []interface{}{ + fvm.FvmExecutionTrace{}, + fvm.FvmGasCharge{}, + }, + }, { dir: "../venus-shared/blockstore", types: []interface{}{ diff --git a/venus-devtool/go.mod b/venus-devtool/go.mod index d11ad67763..5f38d7f7a4 100644 --- a/venus-devtool/go.mod +++ b/venus-devtool/go.mod @@ -8,8 +8,8 @@ require ( github.com/filecoin-project/go-data-transfer v1.15.2 github.com/filecoin-project/go-fil-markets v1.25.2 github.com/filecoin-project/go-jsonrpc v0.2.1 - github.com/filecoin-project/go-state-types v0.11.0-rc2 - github.com/filecoin-project/lotus v1.22.0-rc4 + github.com/filecoin-project/go-state-types v0.11.1 + github.com/filecoin-project/lotus v1.22.0 github.com/filecoin-project/venus v0.0.0-00010101000000-000000000000 github.com/google/uuid v1.3.0 github.com/ipfs/go-cid v0.3.2 diff --git a/venus-devtool/go.sum b/venus-devtool/go.sum index 1854ae7c6e..652305623c 100644 --- a/venus-devtool/go.sum +++ b/venus-devtool/go.sum @@ -330,15 +330,15 @@ github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psS github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4IrzznwS98X5XW/irUP3Lhxg= github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= -github.com/filecoin-project/go-state-types v0.11.0-rc1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= -github.com/filecoin-project/go-state-types v0.11.0-rc2 h1:zUx7aRxEGn56n4A1RS2J8FZzpzAozEMsqF11aXjtmkc= github.com/filecoin-project/go-state-types v0.11.0-rc2/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= +github.com/filecoin-project/go-state-types v0.11.1 h1:GDtCN9V18bYVwXDZe+vJXc6Ck+qY9OUaQqpoVlp1FAk= +github.com/filecoin-project/go-state-types v0.11.1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8= github.com/filecoin-project/go-statemachine v1.0.3 h1:N07o6alys+V1tNoSTi4WuuoeNC4erS/6jE74+NsgQuk= github.com/filecoin-project/go-statestore v0.2.0 h1:cRRO0aPLrxKQCZ2UOQbzFGn4WDNdofHZoGPjfNaAo5Q= github.com/filecoin-project/go-statestore v0.2.0/go.mod h1:8sjBYbS35HwPzct7iT4lIXjLlYyPor80aU7t7a/Kspo= github.com/filecoin-project/index-provider v0.9.1 h1:Jnh9dviIHvQxZ2baNoYu3n8z6F9O62ksnVlyREgPyyM= -github.com/filecoin-project/lotus v1.22.0-rc4 h1:jem6qAi/J5cASvCS/Di51sZcY8MNRXgd92Ydg6R/bRM= -github.com/filecoin-project/lotus v1.22.0-rc4/go.mod h1:5DOVWy5G4IRgll0pNTs+K3jEEossouSpdFc/GTYqrrc= +github.com/filecoin-project/lotus v1.22.0 h1:hZFe28of6g83cy4w/4OafnASlWu1tjd8YxPkTOJo0eE= +github.com/filecoin-project/lotus v1.22.0/go.mod h1:gUAd0I0RuuA6LY9kwhid1uJeGB5sz8rRPLpSzky7Xlw= github.com/filecoin-project/pubsub v1.0.0 h1:ZTmT27U07e54qV1mMiQo4HDr0buo8I1LDHBYLXlsNXM= github.com/filecoin-project/pubsub v1.0.0/go.mod h1:GkpB33CcUtUNrLPhJgfdy4FDx4OMNR9k+46DHx/Lqrg= github.com/filecoin-project/specs-actors v0.9.13/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= diff --git a/venus-shared/actors/builtin-actors-code/v11.tar.zst b/venus-shared/actors/builtin-actors-code/v11.tar.zst index 51792a9754..069ce23c83 100644 Binary files a/venus-shared/actors/builtin-actors-code/v11.tar.zst and b/venus-shared/actors/builtin-actors-code/v11.tar.zst differ diff --git a/venus-shared/actors/builtin/miner/utils.go b/venus-shared/actors/builtin/miner/utils.go index 354bffbad2..e2b0170fda 100644 --- a/venus-shared/actors/builtin/miner/utils.go +++ b/venus-shared/actors/builtin/miner/utils.go @@ -72,19 +72,38 @@ func SealProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version) (abi. // WindowPoStProofTypeFromSectorSize returns preferred post proof type for creating // new miner actors and new sectors -func WindowPoStProofTypeFromSectorSize(ssize abi.SectorSize) (abi.RegisteredPoStProof, error) { - switch ssize { - case 2 << 10: - return abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, nil - case 8 << 20: - return abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, nil - case 512 << 20: - return abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, nil - case 32 << 30: - return abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, nil - case 64 << 30: - return abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, nil - default: - return 0, fmt.Errorf("unsupported sector size for miner: %v", ssize) +func WindowPoStProofTypeFromSectorSize(ssize abi.SectorSize, nv network.Version) (abi.RegisteredPoStProof, error) { + switch { + case nv < network.Version19: + switch ssize { + case 2 << 10: + return abi.RegisteredPoStProof_StackedDrgWindow2KiBV1, nil + case 8 << 20: + return abi.RegisteredPoStProof_StackedDrgWindow8MiBV1, nil + case 512 << 20: + return abi.RegisteredPoStProof_StackedDrgWindow512MiBV1, nil + case 32 << 30: + return abi.RegisteredPoStProof_StackedDrgWindow32GiBV1, nil + case 64 << 30: + return abi.RegisteredPoStProof_StackedDrgWindow64GiBV1, nil + default: + return 0, fmt.Errorf("unsupported sector size for miner: %v", ssize) + } + case nv >= network.Version19: + switch ssize { + case 2 << 10: + return abi.RegisteredPoStProof_StackedDrgWindow2KiBV1_1, nil + case 8 << 20: + return abi.RegisteredPoStProof_StackedDrgWindow8MiBV1_1, nil + case 512 << 20: + return abi.RegisteredPoStProof_StackedDrgWindow512MiBV1_1, nil + case 32 << 30: + return abi.RegisteredPoStProof_StackedDrgWindow32GiBV1_1, nil + case 64 << 30: + return abi.RegisteredPoStProof_StackedDrgWindow64GiBV1_1, nil + default: + return 0, fmt.Errorf("unsupported sector size for miner: %v", ssize) + } } + return 0, fmt.Errorf("unsupported network version") } diff --git a/venus-shared/actors/builtin_actors_gen.go b/venus-shared/actors/builtin_actors_gen.go index f569881046..6eed3b86a7 100644 --- a/venus-shared/actors/builtin_actors_gen.go +++ b/venus-shared/actors/builtin_actors_gen.go @@ -74,24 +74,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "butterflynet", Version: 11, - ManifestCid: mustParseCid("bafy2bzaceajj76ms4q2ka3ckzj2iiifl7ewxqdpolshcmhml32sqwolrmsh6e"), + ManifestCid: mustParseCid("bafy2bzaceaiy4dsxxus5xp5n5i4tjzkb7sc54mjz7qnk2efhgmsrobjesxnza"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacecsf7v7mm4osq7cqbygyudg5zkwqbpbkmi3iluakugzvbd2cuucfw"), - "cron": mustParseCid("bafk2bzacediqvwudrujh7ejowrcumrnara7k2fonr35vulnggpwwwh3o32pmu"), - "datacap": mustParseCid("bafk2bzaceb7jkx5kxwwbkw5ehz63sq2b6urouegn4cdczlziaw5ea44u67ock"), - "eam": mustParseCid("bafk2bzacebq2zzzkcra7ahantiq7xlkgcrkoq2azmeqpwhoie5gxcxhurbdp2"), - "ethaccount": mustParseCid("bafk2bzacebrtwz4nyl3nkgjfpvtqjrjixnbujkr72fwzf5bqhpqfo4hgbjqo2"), - "evm": mustParseCid("bafk2bzacecoxcwxbukue76b4rrqhnjywgzjdlhbbemma4kqdzalpkgtdpog7q"), - "init": mustParseCid("bafk2bzacebwfs5wna2dculc4mpl4a25cjrmguoscbebeb5g5yft4ntfpku7cu"), - "multisig": mustParseCid("bafk2bzaceavnestm7obwlj3moeewcnuomzigfzys4lt26s3l3psjeligf4hju"), - "paymentchannel": mustParseCid("bafk2bzaceb4vefsbgswrciqo26wnacvqwpicqjfyicwsdjmv4rbcc4zeae72g"), + "account": mustParseCid("bafk2bzacecfdqb7p3jakhaa3cqnzpt7hxmhghrbxvafsylqno3febx55fnidw"), + "cron": mustParseCid("bafk2bzaceavmqu2qihgbe3xdaotgypuzvdpiifnm7ll6rolks2u4lac6voosk"), + "datacap": mustParseCid("bafk2bzacealtvh65rzb34fmyzw4m2np2htnio4w3pn4alzqovwxkdbf23dvpo"), + "eam": mustParseCid("bafk2bzacedko6hcjmwpuwgma5pb4gr2wgyvregk3nqqjxit7dv4es6vh5cjoc"), + "ethaccount": mustParseCid("bafk2bzacedhcei2xnr34poxr4xziypm2obqlibke4cs2cjfnr3sz6nf6h7fyy"), + "evm": mustParseCid("bafk2bzacebn5lwxboiikhz67ajwa34v2lc4qevnhpwdnipbmrnutkvrrqkb46"), + "init": mustParseCid("bafk2bzacea6vw4esh5tg7mprv5jkbx5xcyilcy4vvf64lss32mjyuvv2mh5ng"), + "multisig": mustParseCid("bafk2bzacedq2afnwcfipay5twv5mgzjoio5bbjvyo4yqchdwqcr7wrareyx54"), + "paymentchannel": mustParseCid("bafk2bzacebbsvr7i7mqmaadyjibe5wxnv7bwvvec2wlgknuwda6ep45amnd5w"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacedyl4uerjbw3tu5mcgkn7ftvr3j3poy4uv5tuzyuvcdinjb75cz3w"), - "storagemarket": mustParseCid("bafk2bzacechvhqru32tw7zii2raii3upjrkybiubepjtartyhzibnac57gxyo"), - "storageminer": mustParseCid("bafk2bzacedu6tzfpxwzqym3z2j252d57gqj3jduap7ijf5mczvhmsirs6wxfs"), - "storagepower": mustParseCid("bafk2bzacebdoeoiayvshg4zaxygmpuituux3ccd4gxfl3ile7ckpsyy7kpnms"), - "system": mustParseCid("bafk2bzaceatn5cj3jqmrug65ur26jhrzcgmishv5hjfswvsyxsieccchhwies"), - "verifiedregistry": mustParseCid("bafk2bzacecjshlgoyim3r2uvhtjthu5udxpq5fvjy4pmpi3sy4v6a4chjvb4k"), + "reward": mustParseCid("bafk2bzaceafuh6idvaqqkj353vs4qdl42tcmvnymewu5zf4rq2nruxdyunses"), + "storagemarket": mustParseCid("bafk2bzaceb7bx4honi3byjllpdk6fea32dpu3vqvil3okodybdk5m3erlnwjw"), + "storageminer": mustParseCid("bafk2bzacebxjhofdr3sb2uhy2ky2vcijh4nhmwkh5xijtbgk6dzkknji2kn7a"), + "storagepower": mustParseCid("bafk2bzaceabskmmkas6njbowols7t4ib3bipa5abpomk3jtgfwojtzd7mjzfm"), + "system": mustParseCid("bafk2bzacedtuh7cht3fud7fb4avl4g2zbz57lc4ohiaufpaex6dkmdokn5rgo"), + "verifiedregistry": mustParseCid("bafk2bzaceb37hxeuoo5rgf6ansrdl2ykm5v5zp6kireubn4orcopr67jbxv6k"), }, }, { Network: "calibrationnet", @@ -249,24 +249,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "caterpillarnet", Version: 11, - ManifestCid: mustParseCid("bafy2bzacedeberqleewemblnbpwufbs6hnric73jy2anlb2sef4o72jf6mxsu"), + ManifestCid: mustParseCid("bafy2bzacebexc2jgzwr5ngn6jdnkwdqwwmcapajuypdgvopoe6bnvp4yxm4o2"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacearzuvg6ugk4evuvgjkap2cyln2efrpano75ecgam4bzyl5l2enn6"), - "cron": mustParseCid("bafk2bzaceas3ku3ol6pwlab7g7zgttfn5bhdo2qbc6vpkbgb2wbrzqsldsv6u"), - "datacap": mustParseCid("bafk2bzacebyrneejblvplw6if36hhxx765hx7efnk7a4sj3lqsuupz6m7rgqm"), - "eam": mustParseCid("bafk2bzaceaclwxphuqwymjozzomza3q2jhf6ib4mqewlrrgmkkqzupvpbaksk"), - "ethaccount": mustParseCid("bafk2bzacebikzogkoy4fzkqrc3vdirr4h7eq3zzty7csc7aaabevocf65nfds"), - "evm": mustParseCid("bafk2bzacectdxa4ctrobwmq5h42aqbras42b6hjea7krgkc3ghatuitgset4i"), - "init": mustParseCid("bafk2bzacecdtsmhlxakdoyojcntubtj7kdplwq67dlodihs22zlz762ljkico"), - "multisig": mustParseCid("bafk2bzacebgwns6gt4sv44ey7hz7nfqmk2z6g3yjrr32ovz5iuklrrc6xujn6"), - "paymentchannel": mustParseCid("bafk2bzacedxwn53sstmkmakev6yjvwezfsozbeoljnk2ls2yfmndvytkcw3iq"), + "account": mustParseCid("bafk2bzaceanjiq5m3feytue5m7hhxfkob2ofg2greoct5tr77reuhrjglo66g"), + "cron": mustParseCid("bafk2bzaceavgd5qj6n744tukhdrvxejygzs3jnlizmcvjsdnxkgiimrd5jrys"), + "datacap": mustParseCid("bafk2bzacedmdywxwrzop2gmf4ys5stydlmvbe35j3nyr2efmf273briksuvse"), + "eam": mustParseCid("bafk2bzacec7qo7s72li7tqysllstlrxxm2dhfqv2w32pytel2e775cki4ozqm"), + "ethaccount": mustParseCid("bafk2bzaceaygtkliu26ubb7ivljrvaeesp5sbjlis5okzl35ishxioa2tlx4w"), + "evm": mustParseCid("bafk2bzacebo7iqzy2ophz4f3civzwlltec7q5fut7kmtfckr6vy33r6ic5eqe"), + "init": mustParseCid("bafk2bzaceb7uzzlsquqwrqhb2vpbvk3jgr4wp5i3smu2splnag2v5sppdehns"), + "multisig": mustParseCid("bafk2bzacebwibfqrytobl4pjtny244zkmfoomazbap3r5gddjryckx5js4csi"), + "paymentchannel": mustParseCid("bafk2bzacecuaa5esuxpouigxoamyl5gire2qqqhvyhewsig2x2j73f6ksh7go"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacedjwx5vlghmudjd4zbgzjs7cgk5yyzn7hxb5usqyfwhhumhfse2wq"), - "storagemarket": mustParseCid("bafk2bzacedxnxuwq64g5jsoz6dejx2lm6gjis5evzglaxdnb2rrb4oh2tvjhg"), - "storageminer": mustParseCid("bafk2bzacedpmjackp3e3wucnu2kx4r6gl7cues2ogyfffvuv4x7ec5mwbwlie"), - "storagepower": mustParseCid("bafk2bzacecjlefvghymezg6lrccaedviwirjg3vmu5sd5qz6aps3khjjvhlxm"), - "system": mustParseCid("bafk2bzacec6p5l2no77yiaznaxogzg5zwgocfn32h7ebzry7vyxnbfqvn3oqa"), - "verifiedregistry": mustParseCid("bafk2bzacebmi44uxzpu3xhzlkjkczrjz2sv4brj3thxwc7c6nvhcjoc4divca"), + "reward": mustParseCid("bafk2bzaced4xxqhv63njf2ibvsqshlwikafctxev7aho5lgsfxyt2javjwvtw"), + "storagemarket": mustParseCid("bafk2bzacedwtx3xokqmbgkgkoqkdt6lam4ymdjb3eznlbtec5wcrtx74l2bpc"), + "storageminer": mustParseCid("bafk2bzacebbbe4sdo3xxkez7x7lkl6j46w34vx7eg7xswmdzhp7moa44p3wjg"), + "storagepower": mustParseCid("bafk2bzacedfgz6n24tjsor4pcayomim2f5f3a3fgyatmjgwxxeejna7okndda"), + "system": mustParseCid("bafk2bzacebxfzeom3d7ahcz2n2nlwp7ncv767bdbbrisugks4l6v7lcu2tmyg"), + "verifiedregistry": mustParseCid("bafk2bzacedaws3or3twy45ltcxucgvqijsje4x675ph6vup2w35smlfneamno"), }, }, { Network: "devnet", @@ -332,24 +332,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "devnet", Version: 11, - ManifestCid: mustParseCid("bafy2bzacec2nca2tmntojbsjmi6gpt7gnslv3phratoara3lpamv5w3do2qh2"), + ManifestCid: mustParseCid("bafy2bzaceay35go4xbjb45km6o46e5bib3bi46panhovcbedrynzwmm3drr4i"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacedxucublg7o7zdy4vw4zr46vngpiflysif333saptv3tfzrh7ktcs"), - "cron": mustParseCid("bafk2bzacebnihuzok7gxzmopayqmou42j3uwfpsdzpqkzxf4xvxbxco76cx42"), - "datacap": mustParseCid("bafk2bzacebcz2agc2pojoqecllda5bytbtfns7uxozk6hexuzgktl3d447k3g"), - "eam": mustParseCid("bafk2bzacedmy4fvb26m7rxom55tcjlekpprxieecgfqpxivum6cv72ca5ld3k"), - "ethaccount": mustParseCid("bafk2bzacedlthlzuuaay4ouhvrdbcmljhudihgwtguxlqc5bqwem3hcymeiee"), - "evm": mustParseCid("bafk2bzaceboozl4smxva6g6z6dqegtzszq2qheewgr3gbvd32bbvs64simorc"), - "init": mustParseCid("bafk2bzacectfoykh2du5w2odxgtcu6jttdeup3j3sh6tke6zbgqzzmhqlc7vw"), - "multisig": mustParseCid("bafk2bzaceawofhfckab5zwthkgyos5ornbrg7aeudhavgd6jglfb67tezjxpo"), - "paymentchannel": mustParseCid("bafk2bzacebmw7foxdepc44p6wtwkoshvczi6lagspwivfy3o5zc6xcq7e2uzw"), + "account": mustParseCid("bafk2bzacecf2pprkbdlpm4e2xz3ufunxtgrgyh2ie3stuqiyhibsvdze7kvri"), + "cron": mustParseCid("bafk2bzaceasr5d2skowvzv5mzsyak6waqrgc46ewj6rzbapkfi5woom6n6bwa"), + "datacap": mustParseCid("bafk2bzaceaqd77gptubupda7rp7daxkxbkzwc253dxhiyoezxvj2tljmkgpny"), + "eam": mustParseCid("bafk2bzacedve6p4ye6zxydjbfs4ode5r2equ7rqzpyltujsq2lu6wyxnijfx4"), + "ethaccount": mustParseCid("bafk2bzacea25xfsxwew3h2crer6jlb4c5vwu2gtch2jh73ocuxjhupenyrugy"), + "evm": mustParseCid("bafk2bzacece5hivtkmi757lyfahgti7xuqgofodb2u65pxgf6oizfwiiwlcsi"), + "init": mustParseCid("bafk2bzacecxnr5y7qifzdqqiwfbjxv2yr7lbkcyu3e2mf5zjdncteupxdlquu"), + "multisig": mustParseCid("bafk2bzaceayap4k4u3lbysaeeixct5fvhmafy3fa5eagvdpk3i4a7ubfdpobe"), + "paymentchannel": mustParseCid("bafk2bzaceafgrz5wepbein35gie7rnsu7zttxvgllgdneuefmmy4j5izydtza"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacebeclhjkqqstbnvhzsqf5b54257sblr673kuaqemz7mm4kapyepgw"), - "storagemarket": mustParseCid("bafk2bzacea6jtlm65dcihroldmnfk6qxqrsjxxfw5hniftm4rnhuopm2gk6yg"), - "storageminer": mustParseCid("bafk2bzacebpzfxjn2z2fk3ariehjldy6l5yker3o57etnup3thqmiqd4vbbdo"), - "storagepower": mustParseCid("bafk2bzaceced2xdnoob5yb4tgyhdr2y2f5c5xo7k2ghe5kna5xuevapbvjwpw"), - "system": mustParseCid("bafk2bzacea356un67ewdbot57dqreil7gqatzj6uy333xbgah5j6zpdwnpu2k"), - "verifiedregistry": mustParseCid("bafk2bzacea6jep5uswr6rfwuizfliy5bzbqahuednohmbgeo2lk443yugq2ho"), + "reward": mustParseCid("bafk2bzacedwbtfqlx47fdkxjrb5mwiatheci44x3zkpx33smybc2cme23ymuo"), + "storagemarket": mustParseCid("bafk2bzaceaj74fmooaf3gj3ebwon64ky7hhdh7kytdr3agclqfrqzmpzykh7g"), + "storageminer": mustParseCid("bafk2bzacedb7bokkzzs7hnbhivp74pgcpermuy7j6b3ncodylksukkxtnn7ze"), + "storagepower": mustParseCid("bafk2bzacedilnkegizkxz3nuutib4d4wwlk4bkla22loepia2h53yf4hysmq6"), + "system": mustParseCid("bafk2bzacedpyoncjbl4oxkjm5e77ngvpy2xfajjc4myfsv2vltvzxioattlu2"), + "verifiedregistry": mustParseCid("bafk2bzacebdqi5tr5pjnem5nylg2zbqcugvi7oxi35bhnrfudx4y4ufhlit2k"), }, }, { Network: "hyperspace", @@ -438,24 +438,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "mainnet", Version: 11, - ManifestCid: mustParseCid("bafy2bzacebgfsebvidddy6l6zplsgmibmuqiyfwxotnvoxknvnnhxerjnrgke"), + ManifestCid: mustParseCid("bafy2bzacecnhaiwcrpyjvzl4uv4q3jzoif26okl3m66q3cijp3dfwlcxwztwo"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacecrtbcv3sgamwajiigx4j6v3zd6ycdzicycfjheduxksntymovj72"), - "cron": mustParseCid("bafk2bzacecdxzej5q7yodb6zkxjkfrmmuuemu2ykgh4qepnagis6j3gfo73zk"), - "datacap": mustParseCid("bafk2bzacecsvwqyxiotzin33zkeqdmt63uokfww6ren6wqvynhow6kwl52oma"), - "eam": mustParseCid("bafk2bzaceccgh7emq3a2f46l4buukmwchlggbdcdvxjt34snx64h7tq37vkya"), - "ethaccount": mustParseCid("bafk2bzaceahuwxxcpnzzcxqkqa5247pvoojxq72koy36qlq223yyn7mhul7xk"), - "evm": mustParseCid("bafk2bzaceafofne3osqnbupdosg23ixb4lsssnd6yo7rdj5gqvfwwxxnwxt22"), - "init": mustParseCid("bafk2bzacedxf5bwugxllkuwpyg4ddleckryydoojbcirngbckmlxpdcrmtkw2"), - "multisig": mustParseCid("bafk2bzaceakw5rdw67ok44cssjlr655th2kgzjjbcbadbymsl35feplyoljea"), - "paymentchannel": mustParseCid("bafk2bzacecj5g34lvlq72wttc65dqdxebrmph4yjftygopsgo6ifabguuf5rm"), + "account": mustParseCid("bafk2bzacealnlr7st6lkwoh6wxpf2hnrlex5sknaopgmkr2tuhg7vmbfy45so"), + "cron": mustParseCid("bafk2bzacebpewdvvgt6tk2o2u4rcovdgym67tadiis5usemlbejg7k3kt567o"), + "datacap": mustParseCid("bafk2bzacebslykoyrb2hm7aacjngqgd5n2wmeii2goadrs5zaya3pvdf6pdnq"), + "eam": mustParseCid("bafk2bzaceaelwt4yfsfvsu3pa3miwalsvy3cfkcjvmt4sqoeopsppnrmj2mf2"), + "ethaccount": mustParseCid("bafk2bzaceclkmc4yidxc6lgcjpfypbde2eddnevcveo4j5kmh4ek6inqysz2k"), + "evm": mustParseCid("bafk2bzacediwh6etwzwmb5pivtclpdplewdjzphouwqpppce6opisjv2fjqfe"), + "init": mustParseCid("bafk2bzaceckwf3w6n2nw6eh77ktmsxqgsvshonvgnyk5q5syyngtetxvasfxg"), + "multisig": mustParseCid("bafk2bzaceafajceqwg5ybiz7xw6rxammuirkgtuv625gzaehsqfprm4bazjmk"), + "paymentchannel": mustParseCid("bafk2bzaceb4e6cnsnviegmqvsmoxzncruvhra54piq7bwiqfqevle6oob2gvo"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacebnz62vsryganusdr4gwhhtm7vj5q5ev43tpcp4usgieh2xnk7dzk"), - "storagemarket": mustParseCid("bafk2bzacecprtjtwkfbdzcqglg6bwbqzosamebta7darvistsareszgsxf6ig"), - "storageminer": mustParseCid("bafk2bzacedomhrky77hoodiworfnh7imh66entqwsudm2hsmedfx2ymsprd6e"), - "storagepower": mustParseCid("bafk2bzacecyri3krbroak66cpccmnjwjzjtzyv7a3qbqjscgnhb46yadtp36w"), - "system": mustParseCid("bafk2bzacedehzsjoy5msxblwnkzi7hzuuohdzugh3j3bp427jcnef57xkqevc"), - "verifiedregistry": mustParseCid("bafk2bzaceazvpyoiqrsmitkjsaei3r6746d2fqoiy7yjo7htguvwo5ntlxfrq"), + "reward": mustParseCid("bafk2bzacebwjw2vxkobs7r2kwjdqqb42h2kucyuk6flbnyzw4odg5s4mogamo"), + "storagemarket": mustParseCid("bafk2bzaceazu2j2zu4p24tr22btnqzkhzjvyjltlvsagaj6w3syevikeb5d7m"), + "storageminer": mustParseCid("bafk2bzacec24okjqrp7c7rj3hbrs5ez5apvwah2ruka6haesgfngf37mhk6us"), + "storagepower": mustParseCid("bafk2bzaceaxgloxuzg35vu7l7tohdgaq2frsfp4ejmuo7tkoxjp5zqrze6sf4"), + "system": mustParseCid("bafk2bzaced7npe5mt5nh72jxr2igi2sofoa7gedt4w6kueeke7i3xxugqpjfm"), + "verifiedregistry": mustParseCid("bafk2bzacedej3dnr62g2je2abmyjg3xqv4otvh6e26du5fcrhvw7zgcaaez3a"), }, }, { Network: "testing", @@ -521,24 +521,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "testing", Version: 11, - ManifestCid: mustParseCid("bafy2bzacedsxzhzzkfbexqyspkiwqyyn27xplscxtpria4babxsxqmvwvgzmg"), + ManifestCid: mustParseCid("bafy2bzacea2vxre32tg3xhpejrktiuzx4d3pcoe7yyazgscfibmegmchr6n42"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacecn3i4m2utctacfctwf3tord3a2z364yffacydc6h3mtv37exehxo"), - "cron": mustParseCid("bafk2bzacedpt2d3ckjirv45esiug4hoousgqixdu3ya6yydhebjuklx6lkzuw"), - "datacap": mustParseCid("bafk2bzacebfp7bklbkomcexam2r5aawv2ucuqzkdmeamch7bigsprmadfvxvk"), - "eam": mustParseCid("bafk2bzaceds3dguvp5pvqnq7cwvz46mqbqem35nfril5frwumcauzdliamvam"), - "ethaccount": mustParseCid("bafk2bzaceab3egffns45nwvvgtbncoq6jyqgyt4czvwrayz6x6isotbob55ve"), - "evm": mustParseCid("bafk2bzacealplkpnbvap6qrz4vuiebkuutum3e5nasnscepfx5pw4grrvkfpe"), - "init": mustParseCid("bafk2bzaced7mmznvvjh3vrlm3s3iostm7iwwvust3lcpujbldh4dmmrecoxia"), - "multisig": mustParseCid("bafk2bzaceajadbzimbpdjzddi56p6hih5ro6p7pvwb635ivk6byktbjy2a3rq"), - "paymentchannel": mustParseCid("bafk2bzacech2ns3zv7j3xxmbw37zldh5brg4j4shurf5scnf2q74ksow7f6tg"), + "account": mustParseCid("bafk2bzaceccerssb3tgel6ukdghlwvs7dxsolj4fpkgn7dh7owzwapqb6ejpw"), + "cron": mustParseCid("bafk2bzacebtfl6fczxnitrqqjhyefskf3asyn3gzuvqcddieoqfsaddk5fd4q"), + "datacap": mustParseCid("bafk2bzacediikc55y6uzmnhucf4mik6rqpjulwvgp5gdibogxjhgbvusmzff2"), + "eam": mustParseCid("bafk2bzaceazqi5ezossp6kvqogaaba6hxlfarqgniktmb7iy5qonha3eflz6m"), + "ethaccount": mustParseCid("bafk2bzaceb77ospgfqqmf67v23wkyeg7lr2mu53ybaacu3bslx7s7nhttdueo"), + "evm": mustParseCid("bafk2bzacedvgt7mv22hux4vrnklylq7qmw43kfrqwam6wdsfzkdnaewr33qbu"), + "init": mustParseCid("bafk2bzacealzb3nk2oypway5ubz3hs5py5ok5tuw545454vg4d3mwbslef4js"), + "multisig": mustParseCid("bafk2bzacec45ppn4hrwizmopp2v2atkxw35tb6yem6uqhqilrv7aiaknnnxmu"), + "paymentchannel": mustParseCid("bafk2bzaceajbr3t6cngzh3katqteflbcrtwtdgbthnlfemon5tg6rytf2uonw"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacearazt2oxjp5vbzymu2zfur2p5wj7giabxunj42w5embrmgi2byh2"), - "storagemarket": mustParseCid("bafk2bzacecqtfzdcwygdjo7jyeonkfvhuyit6hv6an2bit6t6xdmliyiaxpyy"), - "storageminer": mustParseCid("bafk2bzaceah46gbb5ls2dor2ajr7quofchee3bwghtq3btcjve3dpyrxo56tc"), - "storagepower": mustParseCid("bafk2bzacedmz4i6cslncm65si47tnpmdbn5owvvm7kjisvbfvvkvdv2viucck"), - "system": mustParseCid("bafk2bzaceably72ppjsvbtm2pmc7zzczvxsc7qaab5off6jy2qntwhax3klqa"), - "verifiedregistry": mustParseCid("bafk2bzacecozu2vc3tqk7az7koqdiejcgk2q476542pnv7tmx5beomtvtjbzc"), + "reward": mustParseCid("bafk2bzacea7ycf53kbq4robcuh3ziy7qwwhaqamc5krn3lugypgpxhlewdaiq"), + "storagemarket": mustParseCid("bafk2bzacedskmbcpaeb6bezs32szh52jrukvihobluadauayroo5gzrt32tkm"), + "storageminer": mustParseCid("bafk2bzaced3yg5lctmswnbkxyd6cleg3llyux7fu2vbddyd2ho36fpym423mq"), + "storagepower": mustParseCid("bafk2bzacebvpdf372fzxgixztbz2r7ayxyvx7jmdxwlfuqt2cq7tnqgie3klw"), + "system": mustParseCid("bafk2bzaceaatvscbnkv36ixhtt2zel4er5oskxevgumh5gegqkv7uzah36f24"), + "verifiedregistry": mustParseCid("bafk2bzacebp2r56wxadvfzpfbmqwfi3dlnwpmoc5u4tau2hfftbkuafkhye64"), }, }, { Network: "testing-fake-proofs", @@ -604,24 +604,24 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet Network: "testing-fake-proofs", Version: 11, - ManifestCid: mustParseCid("bafy2bzacebebmxp3bmls3erhyyothy243ljtet4wtey54ufbygat3nhs6rody"), + ManifestCid: mustParseCid("bafy2bzacecojemqglhzzhjnhgtrcbsgkyv67ziytvtbhwlr4ym4oxqofv7zui"), Actors: map[string]cid.Cid{ - "account": mustParseCid("bafk2bzacecn3i4m2utctacfctwf3tord3a2z364yffacydc6h3mtv37exehxo"), - "cron": mustParseCid("bafk2bzacedpt2d3ckjirv45esiug4hoousgqixdu3ya6yydhebjuklx6lkzuw"), - "datacap": mustParseCid("bafk2bzacebfp7bklbkomcexam2r5aawv2ucuqzkdmeamch7bigsprmadfvxvk"), - "eam": mustParseCid("bafk2bzaceds3dguvp5pvqnq7cwvz46mqbqem35nfril5frwumcauzdliamvam"), - "ethaccount": mustParseCid("bafk2bzaceab3egffns45nwvvgtbncoq6jyqgyt4czvwrayz6x6isotbob55ve"), - "evm": mustParseCid("bafk2bzacealplkpnbvap6qrz4vuiebkuutum3e5nasnscepfx5pw4grrvkfpe"), - "init": mustParseCid("bafk2bzaced7mmznvvjh3vrlm3s3iostm7iwwvust3lcpujbldh4dmmrecoxia"), - "multisig": mustParseCid("bafk2bzaceajadbzimbpdjzddi56p6hih5ro6p7pvwb635ivk6byktbjy2a3rq"), - "paymentchannel": mustParseCid("bafk2bzacech2ns3zv7j3xxmbw37zldh5brg4j4shurf5scnf2q74ksow7f6tg"), + "account": mustParseCid("bafk2bzaceccerssb3tgel6ukdghlwvs7dxsolj4fpkgn7dh7owzwapqb6ejpw"), + "cron": mustParseCid("bafk2bzacebtfl6fczxnitrqqjhyefskf3asyn3gzuvqcddieoqfsaddk5fd4q"), + "datacap": mustParseCid("bafk2bzacediikc55y6uzmnhucf4mik6rqpjulwvgp5gdibogxjhgbvusmzff2"), + "eam": mustParseCid("bafk2bzaceazqi5ezossp6kvqogaaba6hxlfarqgniktmb7iy5qonha3eflz6m"), + "ethaccount": mustParseCid("bafk2bzaceb77ospgfqqmf67v23wkyeg7lr2mu53ybaacu3bslx7s7nhttdueo"), + "evm": mustParseCid("bafk2bzacedvgt7mv22hux4vrnklylq7qmw43kfrqwam6wdsfzkdnaewr33qbu"), + "init": mustParseCid("bafk2bzacealzb3nk2oypway5ubz3hs5py5ok5tuw545454vg4d3mwbslef4js"), + "multisig": mustParseCid("bafk2bzacec45ppn4hrwizmopp2v2atkxw35tb6yem6uqhqilrv7aiaknnnxmu"), + "paymentchannel": mustParseCid("bafk2bzaceajbr3t6cngzh3katqteflbcrtwtdgbthnlfemon5tg6rytf2uonw"), "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), - "reward": mustParseCid("bafk2bzacearazt2oxjp5vbzymu2zfur2p5wj7giabxunj42w5embrmgi2byh2"), - "storagemarket": mustParseCid("bafk2bzacecqtfzdcwygdjo7jyeonkfvhuyit6hv6an2bit6t6xdmliyiaxpyy"), - "storageminer": mustParseCid("bafk2bzacec6ntijn67h3gnn5htgbnlpwfp7g47t4nlkr3llr6trnaj35p3kas"), - "storagepower": mustParseCid("bafk2bzaceasdxhi4r4ksy6ageji3xhajr5m5rgixk2w6ojp456kbacmjvxqai"), - "system": mustParseCid("bafk2bzaceably72ppjsvbtm2pmc7zzczvxsc7qaab5off6jy2qntwhax3klqa"), - "verifiedregistry": mustParseCid("bafk2bzacecozu2vc3tqk7az7koqdiejcgk2q476542pnv7tmx5beomtvtjbzc"), + "reward": mustParseCid("bafk2bzacea7ycf53kbq4robcuh3ziy7qwwhaqamc5krn3lugypgpxhlewdaiq"), + "storagemarket": mustParseCid("bafk2bzacedskmbcpaeb6bezs32szh52jrukvihobluadauayroo5gzrt32tkm"), + "storageminer": mustParseCid("bafk2bzacebqeztpa5exztccqjwqhan5droiy7ga6zekm6f2gzxoe655vneczm"), + "storagepower": mustParseCid("bafk2bzaceb2tlyuwxncdxsh3hc4fwcjnpxaijkiv54ustwdjbrqabxdsc27km"), + "system": mustParseCid("bafk2bzaceaatvscbnkv36ixhtt2zel4er5oskxevgumh5gegqkv7uzah36f24"), + "verifiedregistry": mustParseCid("bafk2bzacebp2r56wxadvfzpfbmqwfi3dlnwpmoc5u4tau2hfftbkuafkhye64"), }, }} diff --git a/venus-shared/api/chain/v0/method.md b/venus-shared/api/chain/v0/method.md index bddc8fb305..358356be84 100644 --- a/venus-shared/api/chain/v0/method.md +++ b/venus-shared/api/chain/v0/method.md @@ -1316,49 +1316,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null @@ -1487,49 +1533,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null @@ -1719,49 +1811,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null diff --git a/venus-shared/api/chain/v1/method.md b/venus-shared/api/chain/v1/method.md index 571a1a52da..0fc2cc12a4 100644 --- a/venus-shared/api/chain/v1/method.md +++ b/venus-shared/api/chain/v1/method.md @@ -1359,49 +1359,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null @@ -1530,49 +1576,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null @@ -1799,49 +1891,95 @@ Response: }, "ExecutionTrace": { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": [ { "Msg": { - "From": "f01234", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + }, + "Version": 42, "To": "f01234", + "From": "f01234", + "Nonce": 42, "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", "Method": 1, - "Params": "Ynl0ZSBhcnJheQ==", - "ParamsCodec": 42 + "Params": "Ynl0ZSBhcnJheQ==" }, "MsgRct": { "ExitCode": 0, "Return": "Ynl0ZSBhcnJheQ==", - "ReturnCodec": 42 + "GasUsed": 9, + "EventsRoot": { + "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4" + } }, + "Error": "string value", + "Duration": 60000000000, "GasCharges": [ { "Name": "string value", + "loc": [ + { + "File": "string value", + "Line": 123, + "Function": "string value" + } + ], "tg": 9, "cg": 9, "sg": 9, - "tt": 60000000000 + "vtg": 9, + "vcg": 9, + "vsg": 9, + "tt": 60000000000, + "ex": {} } ], "Subcalls": null diff --git a/venus-shared/types/cbor_gen.go b/venus-shared/types/cbor_gen.go index 086b961b18..d46cf8995a 100644 --- a/venus-shared/types/cbor_gen.go +++ b/venus-shared/types/cbor_gen.go @@ -11,12 +11,10 @@ import ( abi "github.com/filecoin-project/go-state-types/abi" paych "github.com/filecoin-project/go-state-types/builtin/v8/paych" crypto "github.com/filecoin-project/go-state-types/crypto" - exitcode "github.com/filecoin-project/go-state-types/exitcode" proof "github.com/filecoin-project/go-state-types/proof" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" - time "time" ) var _ = xerrors.Errorf @@ -1495,659 +1493,3 @@ func (t *EventEntry) UnmarshalCBOR(r io.Reader) (err error) { } return nil } - -var lengthBufGasTrace = []byte{133} - -func (t *GasTrace) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufGasTrace); err != nil { - return err - } - - // t.Name (string) (string) - if len(t.Name) > cbg.MaxLength { - return xerrors.Errorf("Value in field t.Name was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Name))); err != nil { - return err - } - if _, err := io.WriteString(w, string(t.Name)); err != nil { - return err - } - - // t.TotalGas (int64) (int64) - if t.TotalGas >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.TotalGas)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.TotalGas-1)); err != nil { - return err - } - } - - // t.ComputeGas (int64) (int64) - if t.ComputeGas >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ComputeGas)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.ComputeGas-1)); err != nil { - return err - } - } - - // t.StorageGas (int64) (int64) - if t.StorageGas >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.StorageGas)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.StorageGas-1)); err != nil { - return err - } - } - - // t.TimeTaken (time.Duration) (int64) - if t.TimeTaken >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.TimeTaken)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.TimeTaken-1)); err != nil { - return err - } - } - return nil -} - -func (t *GasTrace) UnmarshalCBOR(r io.Reader) (err error) { - *t = GasTrace{} - - 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 != 5 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Name (string) (string) - - { - sval, err := cbg.ReadString(cr) - if err != nil { - return err - } - - t.Name = string(sval) - } - // t.TotalGas (int64) (int64) - { - maj, extra, err := cr.ReadHeader() - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.TotalGas = int64(extraI) - } - // t.ComputeGas (int64) (int64) - { - maj, extra, err := cr.ReadHeader() - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.ComputeGas = int64(extraI) - } - // t.StorageGas (int64) (int64) - { - maj, extra, err := cr.ReadHeader() - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.StorageGas = int64(extraI) - } - // t.TimeTaken (time.Duration) (int64) - { - maj, extra, err := cr.ReadHeader() - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.TimeTaken = time.Duration(extraI) - } - return nil -} - -var lengthBufMessageTrace = []byte{134} - -func (t *MessageTrace) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufMessageTrace); err != nil { - return err - } - - // t.From (address.Address) (struct) - if err := t.From.MarshalCBOR(cw); err != nil { - return err - } - - // t.To (address.Address) (struct) - if err := t.To.MarshalCBOR(cw); err != nil { - return err - } - - // t.Value (big.Int) (struct) - if err := t.Value.MarshalCBOR(cw); err != nil { - return err - } - - // t.Method (abi.MethodNum) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Method)); err != nil { - return err - } - - // t.Params ([]uint8) (slice) - if len(t.Params) > cbg.ByteArrayMaxLen { - return xerrors.Errorf("Byte array in field t.Params was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Params))); err != nil { - return err - } - - if _, err := cw.Write(t.Params[:]); err != nil { - return err - } - - // t.ParamsCodec (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ParamsCodec)); err != nil { - return err - } - - return nil -} - -func (t *MessageTrace) UnmarshalCBOR(r io.Reader) (err error) { - *t = MessageTrace{} - - 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 != 6 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.From (address.Address) (struct) - - { - - if err := t.From.UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.From: %w", err) - } - - } - // t.To (address.Address) (struct) - - { - - if err := t.To.UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.To: %w", err) - } - - } - // t.Value (big.Int) (struct) - - { - - if err := t.Value.UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.Value: %w", err) - } - - } - // t.Method (abi.MethodNum) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Method = abi.MethodNum(extra) - - } - // t.Params ([]uint8) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > cbg.ByteArrayMaxLen { - return fmt.Errorf("t.Params: byte array too large (%d)", extra) - } - if maj != cbg.MajByteString { - return fmt.Errorf("expected byte array") - } - - if extra > 0 { - t.Params = make([]uint8, extra) - } - - if _, err := io.ReadFull(cr, t.Params[:]); err != nil { - return err - } - // t.ParamsCodec (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.ParamsCodec = uint64(extra) - - } - return nil -} - -var lengthBufReturnTrace = []byte{131} - -func (t *ReturnTrace) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufReturnTrace); err != nil { - return err - } - - // t.ExitCode (exitcode.ExitCode) (int64) - if t.ExitCode >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ExitCode)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.ExitCode-1)); err != nil { - return err - } - } - - // t.Return ([]uint8) (slice) - if len(t.Return) > cbg.ByteArrayMaxLen { - return xerrors.Errorf("Byte array in field t.Return was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajByteString, uint64(len(t.Return))); err != nil { - return err - } - - if _, err := cw.Write(t.Return[:]); err != nil { - return err - } - - // t.ReturnCodec (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ReturnCodec)); err != nil { - return err - } - - return nil -} - -func (t *ReturnTrace) UnmarshalCBOR(r io.Reader) (err error) { - *t = ReturnTrace{} - - 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 != 3 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.ExitCode (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - var extraI int64 - if err != nil { - return err - } - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative oveflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.ExitCode = exitcode.ExitCode(extraI) - } - // t.Return ([]uint8) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > cbg.ByteArrayMaxLen { - return fmt.Errorf("t.Return: byte array too large (%d)", extra) - } - if maj != cbg.MajByteString { - return fmt.Errorf("expected byte array") - } - - if extra > 0 { - t.Return = make([]uint8, extra) - } - - if _, err := io.ReadFull(cr, t.Return[:]); err != nil { - return err - } - // t.ReturnCodec (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.ReturnCodec = uint64(extra) - - } - return nil -} - -var lengthBufExecutionTrace = []byte{132} - -func (t *ExecutionTrace) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufExecutionTrace); err != nil { - return err - } - - // t.Msg (types.MessageTrace) (struct) - if err := t.Msg.MarshalCBOR(cw); err != nil { - return err - } - - // t.MsgRct (types.ReturnTrace) (struct) - if err := t.MsgRct.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") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.GasCharges))); err != nil { - return err - } - for _, v := range t.GasCharges { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - } - - // t.Subcalls ([]types.ExecutionTrace) (slice) - if len(t.Subcalls) > 1000000000 { - return xerrors.Errorf("Slice value in field t.Subcalls was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Subcalls))); err != nil { - return err - } - for _, v := range t.Subcalls { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - } - return nil -} - -func (t *ExecutionTrace) UnmarshalCBOR(r io.Reader) (err error) { - *t = ExecutionTrace{} - - 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 != 4 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Msg (types.MessageTrace) (struct) - - { - - if err := t.Msg.UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.Msg: %w", err) - } - - } - // t.MsgRct (types.ReturnTrace) (struct) - - { - - if err := t.MsgRct.UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.MsgRct: %w", err) - } - - } - // t.GasCharges ([]*types.GasTrace) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 1000000000 { - return fmt.Errorf("t.GasCharges: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.GasCharges = make([]*GasTrace, extra) - } - - for i := 0; i < int(extra); i++ { - - var v GasTrace - if err := v.UnmarshalCBOR(cr); err != nil { - return err - } - - t.GasCharges[i] = &v - } - - // t.Subcalls ([]types.ExecutionTrace) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 1000000000 { - return fmt.Errorf("t.Subcalls: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.Subcalls = make([]ExecutionTrace, extra) - } - - for i := 0; i < int(extra); i++ { - - var v ExecutionTrace - if err := v.UnmarshalCBOR(cr); err != nil { - return err - } - - t.Subcalls[i] = v - } - - return nil -} diff --git a/venus-shared/types/exec.go b/venus-shared/types/exec.go index 9063cf7014..c9ad82b823 100644 --- a/venus-shared/types/exec.go +++ b/venus-shared/types/exec.go @@ -2,60 +2,105 @@ package types import ( "encoding/json" + "fmt" + "regexp" + "runtime" + "strings" "time" - - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/exitcode" ) type ExecutionTrace struct { - Msg MessageTrace - MsgRct ReturnTrace - GasCharges []*GasTrace `cborgen:"maxlen=1000000000"` - Subcalls []ExecutionTrace `cborgen:"maxlen=1000000000"` + Msg *Message + MsgRct *MessageReceipt + Error string + Duration time.Duration + GasCharges []*GasTrace + + Subcalls []ExecutionTrace } type GasTrace struct { - Name string - TotalGas int64 `json:"tg"` - ComputeGas int64 `json:"cg"` - StorageGas int64 `json:"sg"` - TimeTaken time.Duration `json:"tt"` -} + Name string -type MessageTrace struct { - From address.Address - To address.Address - Value abi.TokenAmount - Method abi.MethodNum - Params []byte - ParamsCodec uint64 -} + Location []Loc `json:"loc"` + TotalGas int64 `json:"tg"` + ComputeGas int64 `json:"cg"` + StorageGas int64 `json:"sg"` + TotalVirtualGas int64 `json:"vtg"` + VirtualComputeGas int64 `json:"vcg"` + VirtualStorageGas int64 `json:"vsg"` + + TimeTaken time.Duration `json:"tt"` + Extra interface{} `json:"ex,omitempty"` -type ReturnTrace struct { - ExitCode exitcode.ExitCode - Return []byte - ReturnCodec uint64 + Callers []uintptr `json:"-"` } -func (et ExecutionTrace) SumGas() GasTrace { - return SumGas(et.GasCharges) +type Loc struct { + File string + Line int + Function string } -func SumGas(charges []*GasTrace) GasTrace { - var out GasTrace - for _, gc := range charges { - out.TotalGas += gc.TotalGas - out.ComputeGas += gc.ComputeGas - out.StorageGas += gc.StorageGas +// TODO: ??? +// func (l Loc) Show() bool { +// ignorePrefix := []string{ +// "reflect.", +// "github.com/filecoin-project/lotus/chain/vm.(*Invoker).transform", +// "github.com/filecoin-project/go-amt-ipld/", +// } +// for _, pre := range ignorePrefix { +// if strings.HasPrefix(l.Function, pre) { +// return false +// } +// } +// return true +// } + +func (l Loc) String() string { + file := strings.Split(l.File, "/") + + fn := strings.Split(l.Function, "/") + var fnpkg string + if len(fn) > 2 { + fnpkg = strings.Join(fn[len(fn)-2:], "/") + } else { + fnpkg = l.Function } - return out + return fmt.Sprintf("%s@%s:%d", fnpkg, file[len(file)-1], l.Line) +} + +var importantRegex = regexp.MustCompile(`github.com/filecoin-project/specs-actors/(v\d+/)?actors/builtin`) + +func (l Loc) Important() bool { + return importantRegex.MatchString(l.Function) } func (gt *GasTrace) MarshalJSON() ([]byte, error) { type GasTraceCopy GasTrace + if len(gt.Location) == 0 { + if len(gt.Callers) != 0 { + frames := runtime.CallersFrames(gt.Callers) + for { + frame, more := frames.Next() + // TODO: this func name must be fixed + if frame.Function == "github.com/filecoin-project/lotus/chain/vm.(*LegacyVM).ApplyMessage" { + break + } + l := Loc{ + File: frame.File, + Line: frame.Line, + Function: frame.Function, + } + gt.Location = append(gt.Location, l) + if !more { + break + } + } + } + } + cpy := (*GasTraceCopy)(gt) return json.Marshal(cpy) }