From e8aacf325c29f57cb45ea9c908efa65b2a122b0d Mon Sep 17 00:00:00 2001 From: hunjixin <1084400399@qq.com> Date: Mon, 17 Oct 2022 11:56:50 +0800 Subject: [PATCH 01/45] fix: add gaspremium check when less than maxfee --- chain/messagepool/messagepool.go | 1 + chain/messagepool/messagepool_test.go | 37 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/chain/messagepool/messagepool.go b/chain/messagepool/messagepool.go index def161171..d0bb60d62 100644 --- a/chain/messagepool/messagepool.go +++ b/chain/messagepool/messagepool.go @@ -218,6 +218,7 @@ func CapGasFee(mff dtypes.DefaultMaxFeeFunc, msg *types.Message, sendSpec *api.M totalFee := types.BigMul(msg.GasFeeCap, gl) if totalFee.LessThanEqual(maxFee) { + msg.GasPremium = big.Min(msg.GasFeeCap, msg.GasPremium) // cap premium at FeeCap return } diff --git a/chain/messagepool/messagepool_test.go b/chain/messagepool/messagepool_test.go index 7751f7978..5e93f7464 100644 --- a/chain/messagepool/messagepool_test.go +++ b/chain/messagepool/messagepool_test.go @@ -1075,3 +1075,40 @@ func TestRemoveMessage(t *testing.T) { assert.Len(t, msgs, 0) } } + +func TestCapGasFee(t *testing.T) { + t.Run("use default maxfee", func(t *testing.T) { + msg := &types.Message{ + GasLimit: 100_000_000, + GasFeeCap: abi.NewTokenAmount(100_000_000), + GasPremium: abi.NewTokenAmount(100_000), + } + CapGasFee(func() (abi.TokenAmount, error) { + return abi.NewTokenAmount(100_000_000_000), nil + }, msg, nil) + assert.Equal(t, msg.GasFeeCap.Int64(), int64(1000)) + assert.Equal(t, msg.GasPremium.Int.Int64(), int64(1000)) + }) + + t.Run("use spec maxfee", func(t *testing.T) { + msg := &types.Message{ + GasLimit: 100_000_000, + GasFeeCap: abi.NewTokenAmount(100_000_000), + GasPremium: abi.NewTokenAmount(100_000), + } + CapGasFee(nil, msg, &api.MessageSendSpec{MaxFee: abi.NewTokenAmount(100_000_000_000)}) + assert.Equal(t, msg.GasFeeCap.Int64(), int64(1000)) + assert.Equal(t, msg.GasPremium.Int.Int64(), int64(1000)) + }) + + t.Run("use smaller feecap value when fee is enough", func(t *testing.T) { + msg := &types.Message{ + GasLimit: 100_000_000, + GasFeeCap: abi.NewTokenAmount(100_000), + GasPremium: abi.NewTokenAmount(100_000_000), + } + CapGasFee(nil, msg, &api.MessageSendSpec{MaxFee: abi.NewTokenAmount(100_000_000_000_000)}) + assert.Equal(t, msg.GasFeeCap.Int64(), int64(100_000)) + assert.Equal(t, msg.GasPremium.Int.Int64(), int64(100_000)) + }) +} From 599f16a7cf68217120e53ab0af792bd4eca57a23 Mon Sep 17 00:00:00 2001 From: vyzo Date: Mon, 7 Nov 2022 15:34:25 +0200 Subject: [PATCH 02/45] update filecoin-ffi@master --- extern/filecoin-ffi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/filecoin-ffi b/extern/filecoin-ffi index 20f104e88..6c58e21db 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit 20f104e88065aae59fd212d64be5bed108604e78 +Subproject commit 6c58e21db3f813afce5e1240401036b53be0a33e From 66dbe45f9eb13d216c53fa41f472030844ec2712 Mon Sep 17 00:00:00 2001 From: vyzo Date: Mon, 7 Nov 2022 15:41:16 +0200 Subject: [PATCH 03/45] use go-state-types@feat/m2-nv18 --- go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index a39c70956..3de88b0d9 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/fatih/color v1.13.0 github.com/filecoin-project/dagstore v0.5.2 github.com/filecoin-project/filecoin-ffi v0.30.4-0.20200910194244-f640612a1a1f - github.com/filecoin-project/go-address v1.0.0 + github.com/filecoin-project/go-address v1.1.0 github.com/filecoin-project/go-bitfield v0.2.4 github.com/filecoin-project/go-cbor-util v0.0.1 github.com/filecoin-project/go-commp-utils v0.1.3 @@ -42,7 +42,7 @@ require ( github.com/filecoin-project/go-legs v0.4.4 github.com/filecoin-project/go-padreader v0.0.1 github.com/filecoin-project/go-paramfetch v0.0.4 - github.com/filecoin-project/go-state-types v0.9.8 + github.com/filecoin-project/go-state-types v0.9.9-0.20221108200718-49613d443749 github.com/filecoin-project/go-statemachine v1.0.2 github.com/filecoin-project/go-statestore v0.2.0 github.com/filecoin-project/go-storedcounter v0.1.0 From d7b680ecb8fc6ae4b70bd4d78c07bb22c40e6dec Mon Sep 17 00:00:00 2001 From: vyzo Date: Mon, 7 Nov 2022 15:41:23 +0200 Subject: [PATCH 04/45] go mod tidy --- go.sum | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go.sum b/go.sum index 550042677..7fae5e518 100644 --- a/go.sum +++ b/go.sum @@ -286,8 +286,8 @@ github.com/filecoin-project/dagstore v0.5.2/go.mod h1:mdqKzYrRBHf1pRMthYfMv3n37o github.com/filecoin-project/go-address v0.0.3/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-address v0.0.5/go.mod h1:jr8JxKsYx+lQlQZmF5i2U0Z+cGQ59wMIps/8YW/lDj8= github.com/filecoin-project/go-address v0.0.6/go.mod h1:7B0/5DA13n6nHkB8bbGx1gWzG/dbTsZ0fgOJVGsM3TE= -github.com/filecoin-project/go-address v1.0.0 h1:IrexI0kpADLaPP+CdmU3CVAUqnW/FQC0KTmz4lVKiFU= -github.com/filecoin-project/go-address v1.0.0/go.mod h1:5t3z6qPmIADZBtuE9EIzi0EwzcRy2nVhpo0I/c1r0OA= +github.com/filecoin-project/go-address v1.1.0 h1:ofdtUtEsNxkIxkDw67ecSmvtzaVSdcea4boAmLbnHfE= +github.com/filecoin-project/go-address v1.1.0/go.mod h1:5t3z6qPmIADZBtuE9EIzi0EwzcRy2nVhpo0I/c1r0OA= github.com/filecoin-project/go-amt-ipld/v2 v2.1.0 h1:t6qDiuGYYngDqaLc2ZUvdtAg4UNxPeOYaXhBWSNsVaM= github.com/filecoin-project/go-amt-ipld/v2 v2.1.0/go.mod h1:nfFPoGyX0CU9SkXX8EoCcSuHN1XcbN0c6KBh7yvP5fs= github.com/filecoin-project/go-amt-ipld/v3 v3.0.0/go.mod h1:Qa95YNAbtoVCTSVtX38aAC1ptBnJfPma1R/zZsKmx4o= @@ -343,8 +343,8 @@ github.com/filecoin-project/go-state-types v0.1.0/go.mod h1:ezYnPf0bNkTsDibL/psS 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.8/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.9.8 h1:xkdITiR7h691z1tWOhNCJxHI+cq+Mq7ATkpHQ7f1gu8= -github.com/filecoin-project/go-state-types v0.9.8/go.mod h1:+HCZifUV+e8TlQkgll22Ucuiq8OrVJkK+4Kh4u75iiw= +github.com/filecoin-project/go-state-types v0.9.9-0.20221108200718-49613d443749 h1:b6VIyo14PnFlBuDIwzSJtkF7OiCvWfkn0FNQwtU1R7s= +github.com/filecoin-project/go-state-types v0.9.9-0.20221108200718-49613d443749/go.mod h1:7ty480tvttEAqWKywhAaDCElk7ksTqEXtXWAzTSdEKo= 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= From 50b971091fc3005b180ac66263875793c17c29d3 Mon Sep 17 00:00:00 2001 From: vyzo Date: Mon, 7 Nov 2022 17:13:26 +0200 Subject: [PATCH 05/45] define actors version 10 --- chain/actors/version.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/chain/actors/version.go b/chain/actors/version.go index b9f4c2034..34e9a88bf 100644 --- a/chain/actors/version.go +++ b/chain/actors/version.go @@ -14,20 +14,21 @@ const ({{range .actorVersions}} /* inline-gen start */ -var LatestVersion = 9 +var LatestVersion = 10 -var Versions = []int{0, 2, 3, 4, 5, 6, 7, 8, 9} +var Versions = []int{0, 2, 3, 4, 5, 6, 7, 8, 9, 10} const ( - Version0 Version = 0 - Version2 Version = 2 - Version3 Version = 3 - Version4 Version = 4 - Version5 Version = 5 - Version6 Version = 6 - Version7 Version = 7 - Version8 Version = 8 - Version9 Version = 9 + Version0 Version = 0 + Version2 Version = 2 + Version3 Version = 3 + Version4 Version = 4 + Version5 Version = 5 + Version6 Version = 6 + Version7 Version = 7 + Version8 Version = 8 + Version9 Version = 9 + Version10 Version = 10 ) /* inline-gen end */ From 7ffd1635f547e9cb5484da457f12c82f096e3562 Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 8 Nov 2022 06:55:26 +0200 Subject: [PATCH 06/45] fix residual v9 references in templates --- chain/actors/builtin/datacap/actor.go.template | 3 +-- chain/actors/builtin/market/state.go.template | 2 +- chain/actors/builtin/verifreg/state.go.template | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/chain/actors/builtin/datacap/actor.go.template b/chain/actors/builtin/datacap/actor.go.template index 9a3f2bdb8..c62bdaa21 100644 --- a/chain/actors/builtin/datacap/actor.go.template +++ b/chain/actors/builtin/datacap/actor.go.template @@ -41,9 +41,8 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address {{range .versions}} case actorstypes.Version{{.}}: return make{{.}}(store, governor, bitwidth) - - default: return nil, xerrors.Errorf("datacap actor only valid for actors v9 and above, got %d", av) {{end}} + default: return nil, xerrors.Errorf("datacap actor only valid for actors v9 and above, got %d", av) } } diff --git a/chain/actors/builtin/market/state.go.template b/chain/actors/builtin/market/state.go.template index 50abdeb6b..61d1de5eb 100644 --- a/chain/actors/builtin/market/state.go.template +++ b/chain/actors/builtin/market/state.go.template @@ -370,7 +370,7 @@ func (s *state{{.v}}) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifreg {{if (le .v 8)}} return verifregtypes.NoAllocationID, xerrors.Errorf("unsupported before actors v9") {{else}} - allocations, err := adt9.AsMap(s.store, s.PendingDealAllocationIds, builtin.DefaultHamtBitwidth) + allocations, err := adt{{.v}}.AsMap(s.store, s.PendingDealAllocationIds, builtin.DefaultHamtBitwidth) if err != nil { return verifregtypes.NoAllocationID, xerrors.Errorf("failed to load allocation id for %d: %w", dealId, err) } diff --git a/chain/actors/builtin/verifreg/state.go.template b/chain/actors/builtin/verifreg/state.go.template index cc3c2a781..6a93c50b6 100644 --- a/chain/actors/builtin/verifreg/state.go.template +++ b/chain/actors/builtin/verifreg/state.go.template @@ -22,6 +22,9 @@ import ( {{end}} {{if (ge .v 9)}} "github.com/filecoin-project/go-state-types/big" +{{if (gt .v 9)}} + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" +{{end}} {{else}} verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" {{end}} From 6373e9752c3c6077b85376ecc75f9baaee85c1ca Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 8 Nov 2022 06:55:56 +0200 Subject: [PATCH 07/45] agen --- chain/actors/builtin/account/account.go | 36 +- chain/actors/builtin/account/v0.go | 6 +- chain/actors/builtin/account/v10.go | 40 ++ chain/actors/builtin/account/v2.go | 6 +- chain/actors/builtin/account/v3.go | 6 +- chain/actors/builtin/account/v4.go | 6 +- chain/actors/builtin/account/v5.go | 6 +- chain/actors/builtin/account/v6.go | 6 +- chain/actors/builtin/account/v7.go | 6 +- chain/actors/builtin/account/v8.go | 6 +- chain/actors/builtin/account/v9.go | 6 +- chain/actors/builtin/builtin.go | 20 +- chain/actors/builtin/cron/cron.go | 38 +- chain/actors/builtin/cron/v0.go | 4 +- chain/actors/builtin/cron/v10.go | 35 ++ chain/actors/builtin/cron/v2.go | 4 +- chain/actors/builtin/cron/v3.go | 4 +- chain/actors/builtin/cron/v4.go | 4 +- chain/actors/builtin/cron/v5.go | 4 +- chain/actors/builtin/cron/v6.go | 4 +- chain/actors/builtin/cron/v7.go | 4 +- chain/actors/builtin/cron/v8.go | 4 +- chain/actors/builtin/cron/v9.go | 4 +- chain/actors/builtin/datacap/datacap.go | 13 +- chain/actors/builtin/datacap/v10.go | 61 +++ chain/actors/builtin/datacap/v9.go | 8 +- chain/actors/builtin/init/init.go | 40 +- chain/actors/builtin/init/v0.go | 10 +- chain/actors/builtin/init/v10.go | 113 +++++ chain/actors/builtin/init/v2.go | 10 +- chain/actors/builtin/init/v3.go | 13 +- chain/actors/builtin/init/v4.go | 13 +- chain/actors/builtin/init/v5.go | 13 +- chain/actors/builtin/init/v6.go | 13 +- chain/actors/builtin/init/v7.go | 13 +- chain/actors/builtin/init/v8.go | 10 +- chain/actors/builtin/init/v9.go | 10 +- chain/actors/builtin/market/market.go | 28 +- chain/actors/builtin/market/v0.go | 10 +- chain/actors/builtin/market/v10.go | 351 +++++++++++++ chain/actors/builtin/market/v2.go | 10 +- chain/actors/builtin/market/v3.go | 10 +- chain/actors/builtin/market/v4.go | 10 +- chain/actors/builtin/market/v5.go | 10 +- chain/actors/builtin/market/v6.go | 11 +- chain/actors/builtin/market/v7.go | 11 +- chain/actors/builtin/market/v8.go | 13 +- chain/actors/builtin/market/v9.go | 14 +- chain/actors/builtin/miner/miner.go | 55 +- chain/actors/builtin/miner/v0.go | 15 +- chain/actors/builtin/miner/v10.go | 554 +++++++++++++++++++++ chain/actors/builtin/miner/v2.go | 14 +- chain/actors/builtin/miner/v3.go | 15 +- chain/actors/builtin/miner/v4.go | 15 +- chain/actors/builtin/miner/v5.go | 15 +- chain/actors/builtin/miner/v6.go | 15 +- chain/actors/builtin/miner/v7.go | 15 +- chain/actors/builtin/miner/v8.go | 14 +- chain/actors/builtin/miner/v9.go | 14 +- chain/actors/builtin/multisig/message0.go | 3 +- chain/actors/builtin/multisig/message10.go | 77 +++ chain/actors/builtin/multisig/message2.go | 3 +- chain/actors/builtin/multisig/message3.go | 3 +- chain/actors/builtin/multisig/message4.go | 3 +- chain/actors/builtin/multisig/message5.go | 3 +- chain/actors/builtin/multisig/message6.go | 3 +- chain/actors/builtin/multisig/message7.go | 3 +- chain/actors/builtin/multisig/message8.go | 11 +- chain/actors/builtin/multisig/message9.go | 7 +- chain/actors/builtin/multisig/multisig.go | 36 +- chain/actors/builtin/multisig/v0.go | 8 +- chain/actors/builtin/multisig/v10.go | 117 +++++ chain/actors/builtin/multisig/v2.go | 8 +- chain/actors/builtin/multisig/v3.go | 9 +- chain/actors/builtin/multisig/v4.go | 9 +- chain/actors/builtin/multisig/v5.go | 9 +- chain/actors/builtin/multisig/v6.go | 9 +- chain/actors/builtin/multisig/v7.go | 9 +- chain/actors/builtin/multisig/v8.go | 8 +- chain/actors/builtin/multisig/v9.go | 8 +- chain/actors/builtin/paych/message0.go | 2 + chain/actors/builtin/paych/message10.go | 111 +++++ chain/actors/builtin/paych/message2.go | 2 + chain/actors/builtin/paych/message3.go | 2 + chain/actors/builtin/paych/message4.go | 2 + chain/actors/builtin/paych/message5.go | 2 + chain/actors/builtin/paych/message6.go | 2 + chain/actors/builtin/paych/message7.go | 2 + chain/actors/builtin/paych/message8.go | 4 +- chain/actors/builtin/paych/message9.go | 4 +- chain/actors/builtin/paych/paych.go | 22 +- chain/actors/builtin/paych/v0.go | 5 +- chain/actors/builtin/paych/v10.go | 114 +++++ chain/actors/builtin/paych/v2.go | 5 +- chain/actors/builtin/paych/v3.go | 5 +- chain/actors/builtin/paych/v4.go | 5 +- chain/actors/builtin/paych/v5.go | 5 +- chain/actors/builtin/paych/v6.go | 5 +- chain/actors/builtin/paych/v7.go | 5 +- chain/actors/builtin/paych/v8.go | 5 +- chain/actors/builtin/paych/v9.go | 5 +- chain/actors/builtin/power/power.go | 42 +- chain/actors/builtin/power/v0.go | 10 +- chain/actors/builtin/power/v10.go | 186 +++++++ chain/actors/builtin/power/v2.go | 10 +- chain/actors/builtin/power/v3.go | 13 +- chain/actors/builtin/power/v4.go | 13 +- chain/actors/builtin/power/v5.go | 13 +- chain/actors/builtin/power/v6.go | 13 +- chain/actors/builtin/power/v7.go | 13 +- chain/actors/builtin/power/v8.go | 10 +- chain/actors/builtin/power/v9.go | 10 +- chain/actors/builtin/registry.go | 104 +++- chain/actors/builtin/reward/reward.go | 30 +- chain/actors/builtin/reward/v0.go | 10 +- chain/actors/builtin/reward/v10.go | 98 ++++ chain/actors/builtin/reward/v2.go | 10 +- chain/actors/builtin/reward/v3.go | 10 +- chain/actors/builtin/reward/v4.go | 10 +- chain/actors/builtin/reward/v5.go | 10 +- chain/actors/builtin/reward/v6.go | 10 +- chain/actors/builtin/reward/v7.go | 10 +- chain/actors/builtin/reward/v8.go | 10 +- chain/actors/builtin/reward/v9.go | 10 +- chain/actors/builtin/system/system.go | 39 +- chain/actors/builtin/system/v0.go | 6 +- chain/actors/builtin/system/v10.go | 50 ++ chain/actors/builtin/system/v2.go | 6 +- chain/actors/builtin/system/v3.go | 6 +- chain/actors/builtin/system/v4.go | 6 +- chain/actors/builtin/system/v5.go | 6 +- chain/actors/builtin/system/v6.go | 6 +- chain/actors/builtin/system/v7.go | 6 +- chain/actors/builtin/system/v8.go | 4 +- chain/actors/builtin/system/v9.go | 4 +- chain/actors/builtin/verifreg/v0.go | 13 +- chain/actors/builtin/verifreg/v10.go | 118 +++++ chain/actors/builtin/verifreg/v2.go | 13 +- chain/actors/builtin/verifreg/v3.go | 16 +- chain/actors/builtin/verifreg/v4.go | 16 +- chain/actors/builtin/verifreg/v5.go | 16 +- chain/actors/builtin/verifreg/v6.go | 16 +- chain/actors/builtin/verifreg/v7.go | 16 +- chain/actors/builtin/verifreg/v8.go | 15 +- chain/actors/builtin/verifreg/v9.go | 13 +- chain/actors/builtin/verifreg/verifreg.go | 25 +- chain/actors/policy/policy.go | 109 +++- 147 files changed, 3046 insertions(+), 612 deletions(-) create mode 100644 chain/actors/builtin/account/v10.go create mode 100644 chain/actors/builtin/cron/v10.go create mode 100644 chain/actors/builtin/datacap/v10.go create mode 100644 chain/actors/builtin/init/v10.go create mode 100644 chain/actors/builtin/market/v10.go create mode 100644 chain/actors/builtin/miner/v10.go create mode 100644 chain/actors/builtin/multisig/message10.go create mode 100644 chain/actors/builtin/multisig/v10.go create mode 100644 chain/actors/builtin/paych/message10.go create mode 100644 chain/actors/builtin/paych/v10.go create mode 100644 chain/actors/builtin/power/v10.go create mode 100644 chain/actors/builtin/reward/v10.go create mode 100644 chain/actors/builtin/system/v10.go create mode 100644 chain/actors/builtin/verifreg/v10.go diff --git a/chain/actors/builtin/account/account.go b/chain/actors/builtin/account/account.go index f8c65a9b9..9bdeab17c 100644 --- a/chain/actors/builtin/account/account.go +++ b/chain/actors/builtin/account/account.go @@ -1,26 +1,34 @@ package account import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/lotus/chain/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" ) -var Methods = builtin9.MethodsAccount +var Methods = builtin10.MethodsAccount func Load(store adt.Store, act *types.Actor) (State, error) { if name, av, ok := actors.GetActorMetaByCode(act.Code); ok { @@ -36,6 +44,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -97,6 +108,9 @@ func MakeState(store adt.Store, av actorstypes.Version, addr address.Address) (S case actorstypes.Version9: return make9(store, addr) + case actorstypes.Version10: + return make10(store, addr) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/account/v0.go b/chain/actors/builtin/account/v0.go index 314bd4b29..bdfca2fd7 100644 --- a/chain/actors/builtin/account/v0.go +++ b/chain/actors/builtin/account/v0.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account0 "github.com/filecoin-project/specs-actors/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account0 "github.com/filecoin-project/specs-actors/actors/builtin/account" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/account/v10.go b/chain/actors/builtin/account/v10.go new file mode 100644 index 000000000..c53fd72e3 --- /dev/null +++ b/chain/actors/builtin/account/v10.go @@ -0,0 +1,40 @@ +package account + +import ( + "github.com/filecoin-project/go-address" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors/adt" + + account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, addr address.Address) (State, error) { + out := state10{store: store} + out.State = account10.State{Address: addr} + return &out, nil +} + +type state10 struct { + account10.State + store adt.Store +} + +func (s *state10) PubkeyAddress() (address.Address, error) { + return s.Address, nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/account/v2.go b/chain/actors/builtin/account/v2.go index 605065424..66618e06a 100644 --- a/chain/actors/builtin/account/v2.go +++ b/chain/actors/builtin/account/v2.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/account" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/account/v3.go b/chain/actors/builtin/account/v3.go index d070476ea..dbe100a4f 100644 --- a/chain/actors/builtin/account/v3.go +++ b/chain/actors/builtin/account/v3.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/account" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/account/v4.go b/chain/actors/builtin/account/v4.go index f4d9f7a06..53f71dcc5 100644 --- a/chain/actors/builtin/account/v4.go +++ b/chain/actors/builtin/account/v4.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/account" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/account/v5.go b/chain/actors/builtin/account/v5.go index 5e01ce152..538f56987 100644 --- a/chain/actors/builtin/account/v5.go +++ b/chain/actors/builtin/account/v5.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/account" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/account/v6.go b/chain/actors/builtin/account/v6.go index 85135dcda..a0d157ae5 100644 --- a/chain/actors/builtin/account/v6.go +++ b/chain/actors/builtin/account/v6.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/account" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/account/v7.go b/chain/actors/builtin/account/v7.go index 4ae979b82..883776cf8 100644 --- a/chain/actors/builtin/account/v7.go +++ b/chain/actors/builtin/account/v7.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/account" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/account/v8.go b/chain/actors/builtin/account/v8.go index 211deea33..d8ef52c00 100644 --- a/chain/actors/builtin/account/v8.go +++ b/chain/actors/builtin/account/v8.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/account/v9.go b/chain/actors/builtin/account/v9.go index 7e172b33c..f44e192b6 100644 --- a/chain/actors/builtin/account/v9.go +++ b/chain/actors/builtin/account/v9.go @@ -1,12 +1,12 @@ package account import ( + "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" - account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" - "github.com/filecoin-project/lotus/chain/actors/adt" + + account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/builtin.go b/chain/actors/builtin/builtin.go index 82e80365a..9e5f2ac0f 100644 --- a/chain/actors/builtin/builtin.go +++ b/chain/actors/builtin/builtin.go @@ -3,23 +3,31 @@ package builtin import ( "fmt" + "github.com/filecoin-project/go-address" "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/builtin" - smoothingtypes "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/proof" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/go-state-types/proof" + "github.com/filecoin-project/lotus/chain/actors" + + smoothingtypes "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" + minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" ) var SystemActorAddr = builtin.SystemActorAddr diff --git a/chain/actors/builtin/cron/cron.go b/chain/actors/builtin/cron/cron.go index 29f795476..38f8ccc58 100644 --- a/chain/actors/builtin/cron/cron.go +++ b/chain/actors/builtin/cron/cron.go @@ -1,21 +1,27 @@ package cron import ( - "golang.org/x/xerrors" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + "golang.org/x/xerrors" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -32,6 +38,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -93,13 +102,16 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version9: return make9(store) + case actorstypes.Version10: + return make10(store) + } return nil, xerrors.Errorf("unknown actor version %d", av) } var ( - Address = builtin9.CronActorAddr - Methods = builtin9.MethodsCron + Address = builtin10.CronActorAddr + Methods = builtin10.MethodsCron ) type State interface { diff --git a/chain/actors/builtin/cron/v0.go b/chain/actors/builtin/cron/v0.go index baa81aac3..6147b858c 100644 --- a/chain/actors/builtin/cron/v0.go +++ b/chain/actors/builtin/cron/v0.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron0 "github.com/filecoin-project/specs-actors/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron0 "github.com/filecoin-project/specs-actors/actors/builtin/cron" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/cron/v10.go b/chain/actors/builtin/cron/v10.go new file mode 100644 index 000000000..9bdba2fb4 --- /dev/null +++ b/chain/actors/builtin/cron/v10.go @@ -0,0 +1,35 @@ +package cron + +import ( + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors/adt" + + cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store) (State, error) { + out := state10{store: store} + out.State = *cron10.ConstructState(cron10.BuiltInEntries()) + return &out, nil +} + +type state10 struct { + cron10.State + store adt.Store +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/cron/v2.go b/chain/actors/builtin/cron/v2.go index d6ee35935..51ca179d9 100644 --- a/chain/actors/builtin/cron/v2.go +++ b/chain/actors/builtin/cron/v2.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/cron" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/cron/v3.go b/chain/actors/builtin/cron/v3.go index 356d385cd..ff74d511d 100644 --- a/chain/actors/builtin/cron/v3.go +++ b/chain/actors/builtin/cron/v3.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/cron" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/cron/v4.go b/chain/actors/builtin/cron/v4.go index 3db3c95aa..1cff8cc28 100644 --- a/chain/actors/builtin/cron/v4.go +++ b/chain/actors/builtin/cron/v4.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/cron" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/cron/v5.go b/chain/actors/builtin/cron/v5.go index 5d99af1fd..2bb00dc21 100644 --- a/chain/actors/builtin/cron/v5.go +++ b/chain/actors/builtin/cron/v5.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/cron" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/cron/v6.go b/chain/actors/builtin/cron/v6.go index c86cd6c42..8bbadd79f 100644 --- a/chain/actors/builtin/cron/v6.go +++ b/chain/actors/builtin/cron/v6.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/cron" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/cron/v7.go b/chain/actors/builtin/cron/v7.go index db9f8f9e2..e5538c89f 100644 --- a/chain/actors/builtin/cron/v7.go +++ b/chain/actors/builtin/cron/v7.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/cron" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/cron/v8.go b/chain/actors/builtin/cron/v8.go index 00567acf9..00b22fcbf 100644 --- a/chain/actors/builtin/cron/v8.go +++ b/chain/actors/builtin/cron/v8.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/cron/v9.go b/chain/actors/builtin/cron/v9.go index 312a33b68..94530e181 100644 --- a/chain/actors/builtin/cron/v9.go +++ b/chain/actors/builtin/cron/v9.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" - "github.com/filecoin-project/lotus/chain/actors/adt" + + cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/datacap/datacap.go b/chain/actors/builtin/datacap/datacap.go index 3915c01e5..2526024da 100644 --- a/chain/actors/builtin/datacap/datacap.go +++ b/chain/actors/builtin/datacap/datacap.go @@ -6,7 +6,7 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" + builtin10 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/lotus/chain/actors" @@ -15,8 +15,8 @@ import ( ) var ( - Address = builtin9.DatacapActorAddr - Methods = builtin9.MethodsDatacap + Address = builtin10.DatacapActorAddr + Methods = builtin10.MethodsDatacap ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -30,6 +30,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -42,9 +45,11 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address case actorstypes.Version9: return make9(store, governor, bitwidth) + case actorstypes.Version10: + return make10(store, governor, bitwidth) + default: return nil, xerrors.Errorf("datacap actor only valid for actors v9 and above, got %d", av) - } } diff --git a/chain/actors/builtin/datacap/v10.go b/chain/actors/builtin/datacap/v10.go new file mode 100644 index 000000000..579712045 --- /dev/null +++ b/chain/actors/builtin/datacap/v10.go @@ -0,0 +1,61 @@ +package datacap + +import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" + + datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, governor address.Address, bitwidth uint64) (State, error) { + out := state10{store: store} + s, err := datacap10.ConstructState(store, governor, bitwidth) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state10 struct { + datacap10.State + store adt.Store +} + +func (s *state10) Governor() (address.Address, error) { + return s.State.Governor, nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +func (s *state10) ForEachClient(cb func(addr address.Address, dcap abi.StoragePower) error) error { + return forEachClient(s.store, actors.Version10, s.verifiedClients, cb) +} + +func (s *state10) verifiedClients() (adt.Map, error) { + return adt10.AsMap(s.store, s.Token.Balances, int(s.Token.HamtBitWidth)) +} + +func (s *state10) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { + return getDataCap(s.store, actors.Version10, s.verifiedClients, addr) +} diff --git a/chain/actors/builtin/datacap/v9.go b/chain/actors/builtin/datacap/v9.go index a6e4bbcd6..6d07bf2e2 100644 --- a/chain/actors/builtin/datacap/v9.go +++ b/chain/actors/builtin/datacap/v9.go @@ -1,15 +1,15 @@ package datacap import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" - adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + + datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" + adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/init/init.go b/chain/actors/builtin/init/init.go index 8a5550697..ace944db5 100644 --- a/chain/actors/builtin/init/init.go +++ b/chain/actors/builtin/init/init.go @@ -1,31 +1,39 @@ package init import ( - "github.com/ipfs/go-cid" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/lotus/chain/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin9.InitActorAddr - Methods = builtin9.MethodsInit + Address = builtin10.InitActorAddr + Methods = builtin10.MethodsInit ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -42,6 +50,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -103,6 +114,9 @@ func MakeState(store adt.Store, av actorstypes.Version, networkName string) (Sta case actorstypes.Version9: return make9(store, networkName) + case actorstypes.Version10: + return make10(store, networkName) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/init/v0.go b/chain/actors/builtin/init/v0.go index 2f6b213c0..ddd2dab94 100644 --- a/chain/actors/builtin/init/v0.go +++ b/chain/actors/builtin/init/v0.go @@ -1,17 +1,17 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" - adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" + adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/init/v10.go b/chain/actors/builtin/init/v10.go new file mode 100644 index 000000000..42aa836e8 --- /dev/null +++ b/chain/actors/builtin/init/v10.go @@ -0,0 +1,113 @@ +package init + +import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, networkName string) (State, error) { + out := state10{store: store} + + s, err := init10.ConstructState(store, networkName) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state10 struct { + init10.State + store adt.Store +} + +func (s *state10) ResolveAddress(address address.Address) (address.Address, bool, error) { + return s.State.ResolveAddress(s.store, address) +} + +func (s *state10) MapAddressToNewID(address address.Address) (address.Address, error) { + return s.State.MapAddressToNewID(s.store, address) +} + +func (s *state10) ForEachActor(cb func(id abi.ActorID, address address.Address) error) error { + addrs, err := adt10.AsMap(s.store, s.State.AddressMap, builtin10.DefaultHamtBitwidth) + if err != nil { + return err + } + var actorID cbg.CborInt + return addrs.ForEach(&actorID, func(key string) error { + addr, err := address.NewFromBytes([]byte(key)) + if err != nil { + return err + } + return cb(abi.ActorID(actorID), addr) + }) +} + +func (s *state10) NetworkName() (dtypes.NetworkName, error) { + return dtypes.NetworkName(s.State.NetworkName), nil +} + +func (s *state10) SetNetworkName(name string) error { + s.State.NetworkName = name + return nil +} + +func (s *state10) SetNextID(id abi.ActorID) error { + s.State.NextID = id + return nil +} + +func (s *state10) Remove(addrs ...address.Address) (err error) { + m, err := adt10.AsMap(s.store, s.State.AddressMap, builtin10.DefaultHamtBitwidth) + if err != nil { + return err + } + for _, addr := range addrs { + if err = m.Delete(abi.AddrKey(addr)); err != nil { + return xerrors.Errorf("failed to delete entry for address: %s; err: %w", addr, err) + } + } + amr, err := m.Root() + if err != nil { + return xerrors.Errorf("failed to get address map root: %w", err) + } + s.State.AddressMap = amr + return nil +} + +func (s *state10) SetAddressMap(mcid cid.Cid) error { + s.State.AddressMap = mcid + return nil +} + +func (s *state10) AddressMap() (adt.Map, error) { + return adt10.AsMap(s.store, s.State.AddressMap, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/init/v2.go b/chain/actors/builtin/init/v2.go index d780a1fe9..72e2d56a5 100644 --- a/chain/actors/builtin/init/v2.go +++ b/chain/actors/builtin/init/v2.go @@ -1,17 +1,17 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" - adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" + adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/init/v3.go b/chain/actors/builtin/init/v3.go index b2f713b1f..4609c94a3 100644 --- a/chain/actors/builtin/init/v3.go +++ b/chain/actors/builtin/init/v3.go @@ -1,18 +1,19 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" - adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" + adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/init/v4.go b/chain/actors/builtin/init/v4.go index 9de02816f..dc56d1f19 100644 --- a/chain/actors/builtin/init/v4.go +++ b/chain/actors/builtin/init/v4.go @@ -1,18 +1,19 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" - adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" + adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/init/v5.go b/chain/actors/builtin/init/v5.go index f9c59f83a..107366de5 100644 --- a/chain/actors/builtin/init/v5.go +++ b/chain/actors/builtin/init/v5.go @@ -1,18 +1,19 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" - adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" + adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/init/v6.go b/chain/actors/builtin/init/v6.go index 494b6aaa0..a5bd9edfb 100644 --- a/chain/actors/builtin/init/v6.go +++ b/chain/actors/builtin/init/v6.go @@ -1,18 +1,19 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" - adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" + adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/init/v7.go b/chain/actors/builtin/init/v7.go index bc378a141..341aa52cd 100644 --- a/chain/actors/builtin/init/v7.go +++ b/chain/actors/builtin/init/v7.go @@ -1,18 +1,19 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" - adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/node/modules/dtypes" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" + adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/init/v8.go b/chain/actors/builtin/init/v8.go index 63b058e57..919819549 100644 --- a/chain/actors/builtin/init/v8.go +++ b/chain/actors/builtin/init/v8.go @@ -1,18 +1,18 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" + builtin8 "github.com/filecoin-project/go-state-types/builtin" init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/init/v9.go b/chain/actors/builtin/init/v9.go index 6153b4f73..e6406b2dd 100644 --- a/chain/actors/builtin/init/v9.go +++ b/chain/actors/builtin/init/v9.go @@ -1,18 +1,18 @@ package init import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" + builtin9 "github.com/filecoin-project/go-state-types/builtin" init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/market/market.go b/chain/actors/builtin/market/market.go index 0e095d282..c9810f1a4 100644 --- a/chain/actors/builtin/market/market.go +++ b/chain/actors/builtin/market/market.go @@ -1,28 +1,37 @@ package market import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" "unicode/utf8" - cbg "github.com/whyrusleeping/cbor-gen" + "github.com/filecoin-project/go-state-types/network" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/go-state-types/cbor" + cbg "github.com/whyrusleeping/cbor-gen" + markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/go-state-types/cbor" - "github.com/filecoin-project/go-state-types/network" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + builtintypes "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" @@ -47,6 +56,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -108,6 +120,9 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version9: return make9(store) + case actorstypes.Version10: + return make10(store) + } return nil, xerrors.Errorf("unknown actor version %d", av) } @@ -192,6 +207,9 @@ func DecodePublishStorageDealsReturn(b []byte, nv network.Version) (PublishStora case actorstypes.Version9: return decodePublishStorageDealsReturn9(b) + case actorstypes.Version10: + return decodePublishStorageDealsReturn10(b) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/market/v0.go b/chain/actors/builtin/market/v0.go index aa68049bb..0bb189ebb 100644 --- a/chain/actors/builtin/market/v0.go +++ b/chain/actors/builtin/market/v0.go @@ -3,18 +3,18 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" - adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" + adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/market/v10.go b/chain/actors/builtin/market/v10.go new file mode 100644 index 000000000..2ab269967 --- /dev/null +++ b/chain/actors/builtin/market/v10.go @@ -0,0 +1,351 @@ +package market + +import ( + "bytes" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-bitfield" + rlepluslazy "github.com/filecoin-project/go-bitfield/rle" + + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" + + market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" + + "github.com/filecoin-project/go-state-types/builtin" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store) (State, error) { + out := state10{store: store} + + s, err := market10.ConstructState(store) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state10 struct { + market10.State + store adt.Store +} + +func (s *state10) TotalLocked() (abi.TokenAmount, error) { + fml := types.BigAdd(s.TotalClientLockedCollateral, s.TotalProviderLockedCollateral) + fml = types.BigAdd(fml, s.TotalClientStorageFee) + return fml, nil +} + +func (s *state10) BalancesChanged(otherState State) (bool, error) { + otherState10, ok := otherState.(*state10) + if !ok { + // there's no way to compare different versions of the state, so let's + // just say that means the state of balances has changed + return true, nil + } + return !s.State.EscrowTable.Equals(otherState10.State.EscrowTable) || !s.State.LockedTable.Equals(otherState10.State.LockedTable), nil +} + +func (s *state10) StatesChanged(otherState State) (bool, error) { + otherState10, ok := otherState.(*state10) + if !ok { + // there's no way to compare different versions of the state, so let's + // just say that means the state of balances has changed + return true, nil + } + return !s.State.States.Equals(otherState10.State.States), nil +} + +func (s *state10) States() (DealStates, error) { + stateArray, err := adt10.AsArray(s.store, s.State.States, market10.StatesAmtBitwidth) + if err != nil { + return nil, err + } + return &dealStates10{stateArray}, nil +} + +func (s *state10) ProposalsChanged(otherState State) (bool, error) { + otherState10, ok := otherState.(*state10) + if !ok { + // there's no way to compare different versions of the state, so let's + // just say that means the state of balances has changed + return true, nil + } + return !s.State.Proposals.Equals(otherState10.State.Proposals), nil +} + +func (s *state10) Proposals() (DealProposals, error) { + proposalArray, err := adt10.AsArray(s.store, s.State.Proposals, market10.ProposalsAmtBitwidth) + if err != nil { + return nil, err + } + return &dealProposals10{proposalArray}, nil +} + +func (s *state10) EscrowTable() (BalanceTable, error) { + bt, err := adt10.AsBalanceTable(s.store, s.State.EscrowTable) + if err != nil { + return nil, err + } + return &balanceTable10{bt}, nil +} + +func (s *state10) LockedTable() (BalanceTable, error) { + bt, err := adt10.AsBalanceTable(s.store, s.State.LockedTable) + if err != nil { + return nil, err + } + return &balanceTable10{bt}, nil +} + +func (s *state10) VerifyDealsForActivation( + minerAddr address.Address, deals []abi.DealID, currEpoch, sectorExpiry abi.ChainEpoch, +) (weight, verifiedWeight abi.DealWeight, err error) { + w, vw, _, err := market10.ValidateDealsForActivation(&s.State, s.store, deals, minerAddr, sectorExpiry, currEpoch) + return w, vw, err +} + +func (s *state10) NextID() (abi.DealID, error) { + return s.State.NextID, nil +} + +type balanceTable10 struct { + *adt10.BalanceTable +} + +func (bt *balanceTable10) ForEach(cb func(address.Address, abi.TokenAmount) error) error { + asMap := (*adt10.Map)(bt.BalanceTable) + var ta abi.TokenAmount + return asMap.ForEach(&ta, func(key string) error { + a, err := address.NewFromBytes([]byte(key)) + if err != nil { + return err + } + return cb(a, ta) + }) +} + +type dealStates10 struct { + adt.Array +} + +func (s *dealStates10) Get(dealID abi.DealID) (*DealState, bool, error) { + var deal10 market10.DealState + found, err := s.Array.Get(uint64(dealID), &deal10) + if err != nil { + return nil, false, err + } + if !found { + return nil, false, nil + } + deal := fromV10DealState(deal10) + return &deal, true, nil +} + +func (s *dealStates10) ForEach(cb func(dealID abi.DealID, ds DealState) error) error { + var ds10 market10.DealState + return s.Array.ForEach(&ds10, func(idx int64) error { + return cb(abi.DealID(idx), fromV10DealState(ds10)) + }) +} + +func (s *dealStates10) decode(val *cbg.Deferred) (*DealState, error) { + var ds10 market10.DealState + if err := ds10.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return nil, err + } + ds := fromV10DealState(ds10) + return &ds, nil +} + +func (s *dealStates10) array() adt.Array { + return s.Array +} + +func fromV10DealState(v10 market10.DealState) DealState { + + return (DealState)(v10) + +} + +type dealProposals10 struct { + adt.Array +} + +func (s *dealProposals10) Get(dealID abi.DealID) (*DealProposal, bool, error) { + var proposal10 market10.DealProposal + found, err := s.Array.Get(uint64(dealID), &proposal10) + if err != nil { + return nil, false, err + } + if !found { + return nil, false, nil + } + + proposal, err := fromV10DealProposal(proposal10) + if err != nil { + return nil, true, xerrors.Errorf("decoding proposal: %w", err) + } + + return &proposal, true, nil +} + +func (s *dealProposals10) ForEach(cb func(dealID abi.DealID, dp DealProposal) error) error { + var dp10 market10.DealProposal + return s.Array.ForEach(&dp10, func(idx int64) error { + dp, err := fromV10DealProposal(dp10) + if err != nil { + return xerrors.Errorf("decoding proposal: %w", err) + } + + return cb(abi.DealID(idx), dp) + }) +} + +func (s *dealProposals10) decode(val *cbg.Deferred) (*DealProposal, error) { + var dp10 market10.DealProposal + if err := dp10.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return nil, err + } + + dp, err := fromV10DealProposal(dp10) + if err != nil { + return nil, err + } + + return &dp, nil +} + +func (s *dealProposals10) array() adt.Array { + return s.Array +} + +func fromV10DealProposal(v10 market10.DealProposal) (DealProposal, error) { + + label, err := fromV10Label(v10.Label) + + if err != nil { + return DealProposal{}, xerrors.Errorf("error setting deal label: %w", err) + } + + return DealProposal{ + PieceCID: v10.PieceCID, + PieceSize: v10.PieceSize, + VerifiedDeal: v10.VerifiedDeal, + Client: v10.Client, + Provider: v10.Provider, + + Label: label, + + StartEpoch: v10.StartEpoch, + EndEpoch: v10.EndEpoch, + StoragePricePerEpoch: v10.StoragePricePerEpoch, + + ProviderCollateral: v10.ProviderCollateral, + ClientCollateral: v10.ClientCollateral, + }, nil +} + +func fromV10Label(v10 market10.DealLabel) (DealLabel, error) { + if v10.IsString() { + str, err := v10.ToString() + if err != nil { + return markettypes.EmptyDealLabel, xerrors.Errorf("failed to convert string label to string: %w", err) + } + return markettypes.NewLabelFromString(str) + } + + bs, err := v10.ToBytes() + if err != nil { + return markettypes.EmptyDealLabel, xerrors.Errorf("failed to convert bytes label to bytes: %w", err) + } + return markettypes.NewLabelFromBytes(bs) +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +var _ PublishStorageDealsReturn = (*publishStorageDealsReturn10)(nil) + +func decodePublishStorageDealsReturn10(b []byte) (PublishStorageDealsReturn, error) { + var retval market10.PublishStorageDealsReturn + if err := retval.UnmarshalCBOR(bytes.NewReader(b)); err != nil { + return nil, xerrors.Errorf("failed to unmarshal PublishStorageDealsReturn: %w", err) + } + + return &publishStorageDealsReturn10{retval}, nil +} + +type publishStorageDealsReturn10 struct { + market10.PublishStorageDealsReturn +} + +func (r *publishStorageDealsReturn10) IsDealValid(index uint64) (bool, int, error) { + + set, err := r.ValidDeals.IsSet(index) + if err != nil || !set { + return false, -1, err + } + maskBf, err := bitfield.NewFromIter(&rlepluslazy.RunSliceIterator{ + Runs: []rlepluslazy.Run{rlepluslazy.Run{Val: true, Len: index}}}) + if err != nil { + return false, -1, err + } + before, err := bitfield.IntersectBitField(maskBf, r.ValidDeals) + if err != nil { + return false, -1, err + } + outIdx, err := before.Count() + if err != nil { + return false, -1, err + } + return set, int(outIdx), nil + +} + +func (r *publishStorageDealsReturn10) DealIDs() ([]abi.DealID, error) { + return r.IDs, nil +} + +func (s *state10) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes.AllocationId, error) { + + allocations, err := adt10.AsMap(s.store, s.PendingDealAllocationIds, builtin.DefaultHamtBitwidth) + if err != nil { + return verifregtypes.NoAllocationID, xerrors.Errorf("failed to load allocation id for %d: %w", dealId, err) + } + + var allocationId cbg.CborInt + found, err := allocations.Get(abi.UIntKey(uint64(dealId)), &allocationId) + if err != nil { + return verifregtypes.NoAllocationID, xerrors.Errorf("failed to load allocation id for %d: %w", dealId, err) + } + if !found { + return verifregtypes.NoAllocationID, nil + } + + return verifregtypes.AllocationId(allocationId), nil + +} diff --git a/chain/actors/builtin/market/v2.go b/chain/actors/builtin/market/v2.go index 777a17cd0..6509980b5 100644 --- a/chain/actors/builtin/market/v2.go +++ b/chain/actors/builtin/market/v2.go @@ -3,18 +3,18 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" - adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" + adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/market/v3.go b/chain/actors/builtin/market/v3.go index 5ca09fdfb..1d00165d2 100644 --- a/chain/actors/builtin/market/v3.go +++ b/chain/actors/builtin/market/v3.go @@ -3,18 +3,18 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" - adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" + adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/market/v4.go b/chain/actors/builtin/market/v4.go index 23422ec31..3b3f3577c 100644 --- a/chain/actors/builtin/market/v4.go +++ b/chain/actors/builtin/market/v4.go @@ -3,18 +3,18 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" - adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" + adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/market/v5.go b/chain/actors/builtin/market/v5.go index 8e8833c37..c408c3164 100644 --- a/chain/actors/builtin/market/v5.go +++ b/chain/actors/builtin/market/v5.go @@ -3,18 +3,18 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" - adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" + adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/market/v6.go b/chain/actors/builtin/market/v6.go index d86f73108..24a6a2641 100644 --- a/chain/actors/builtin/market/v6.go +++ b/chain/actors/builtin/market/v6.go @@ -3,20 +3,21 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" - adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" + adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/market/v7.go b/chain/actors/builtin/market/v7.go index 5f6547e3f..a1ed5b1bd 100644 --- a/chain/actors/builtin/market/v7.go +++ b/chain/actors/builtin/market/v7.go @@ -3,20 +3,21 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" - adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" + adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/market/v8.go b/chain/actors/builtin/market/v8.go index 5f3b690bb..741ff13ca 100644 --- a/chain/actors/builtin/market/v8.go +++ b/chain/actors/builtin/market/v8.go @@ -3,21 +3,22 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" + + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" + market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/market/v9.go b/chain/actors/builtin/market/v9.go index 9fed45ae8..c0ce990cc 100644 --- a/chain/actors/builtin/market/v9.go +++ b/chain/actors/builtin/market/v9.go @@ -3,22 +3,24 @@ package market import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/builtin" + + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" + market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" + "github.com/filecoin-project/go-state-types/builtin" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/miner/miner.go b/chain/actors/builtin/miner/miner.go index c3db4cb0e..e2b864c58 100644 --- a/chain/actors/builtin/miner/miner.go +++ b/chain/actors/builtin/miner/miner.go @@ -1,29 +1,36 @@ package miner import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + "github.com/filecoin-project/go-state-types/network" + "github.com/filecoin-project/lotus/chain/actors" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/go-state-types/big" - miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/go-state-types/dline" - "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-state-types/proof" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -40,6 +47,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -101,6 +111,9 @@ func MakeState(store adt.Store, av actors.Version) (State, error) { case actors.Version9: return make9(store) + case actors.Version10: + return make10(store) + } return nil, xerrors.Errorf("unknown actor version %d", av) } @@ -119,8 +132,8 @@ type State interface { GetSector(abi.SectorNumber) (*SectorOnChainInfo, error) FindSector(abi.SectorNumber) (*SectorLocation, error) GetSectorExpiration(abi.SectorNumber) (*SectorExpiration, error) - GetPrecommittedSector(abi.SectorNumber) (*miner9.SectorPreCommitOnChainInfo, error) - ForEachPrecommittedSector(func(miner9.SectorPreCommitOnChainInfo) error) error + GetPrecommittedSector(abi.SectorNumber) (*miner10.SectorPreCommitOnChainInfo, error) + ForEachPrecommittedSector(func(miner10.SectorPreCommitOnChainInfo) error) error LoadSectors(sectorNos *bitfield.BitField) ([]*SectorOnChainInfo, error) NumLiveSectors() (uint64, error) IsAllocated(abi.SectorNumber) (bool, error) @@ -149,7 +162,7 @@ type State interface { sectors() (adt.Array, error) decodeSectorOnChainInfo(*cbg.Deferred) (SectorOnChainInfo, error) precommits() (adt.Map, error) - decodeSectorPreCommitOnChainInfo(*cbg.Deferred) (miner9.SectorPreCommitOnChainInfo, error) + decodeSectorPreCommitOnChainInfo(*cbg.Deferred) (miner10.SectorPreCommitOnChainInfo, error) GetState() interface{} } @@ -187,7 +200,7 @@ type Partition interface { UnprovenSectors() (bitfield.BitField, error) } -type SectorOnChainInfo = miner9.SectorOnChainInfo +type SectorOnChainInfo = miner10.SectorOnChainInfo func PreferredSealProofTypeFromWindowPoStType(nver network.Version, proof abi.RegisteredPoStProof) (abi.RegisteredSealProof, error) { // We added support for the new proofs in network version 7, and removed support for the old @@ -242,9 +255,9 @@ func WinningPoStProofTypeFromWindowPoStProofType(nver network.Version, proof abi } } -type MinerInfo = miner9.MinerInfo -type WorkerKeyChange = miner9.WorkerKeyChange -type SectorPreCommitOnChainInfo = miner9.SectorPreCommitOnChainInfo +type MinerInfo = miner10.MinerInfo +type WorkerKeyChange = miner10.WorkerKeyChange +type SectorPreCommitOnChainInfo = miner10.SectorPreCommitOnChainInfo type WindowPostVerifyInfo = proof.WindowPoStVerifyInfo type SectorExpiration struct { @@ -272,8 +285,8 @@ type SectorExtensions struct { } type PreCommitChanges struct { - Added []miner9.SectorPreCommitOnChainInfo - Removed []miner9.SectorPreCommitOnChainInfo + Added []miner10.SectorPreCommitOnChainInfo + Removed []miner10.SectorPreCommitOnChainInfo } type LockedFunds struct { diff --git a/chain/actors/builtin/miner/v0.go b/chain/actors/builtin/miner/v0.go index e815806bd..38747fc9f 100644 --- a/chain/actors/builtin/miner/v0.go +++ b/chain/actors/builtin/miner/v0.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" - "github.com/ipfs/go-cid" - cbg "github.com/whyrusleeping/cbor-gen" - "golang.org/x/xerrors" + "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-bitfield" rle "github.com/filecoin-project/go-bitfield/rle" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/big" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" "github.com/filecoin-project/go-state-types/dline" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" + + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/miner/v10.go b/chain/actors/builtin/miner/v10.go new file mode 100644 index 000000000..9cb9c7dc4 --- /dev/null +++ b/chain/actors/builtin/miner/v10.go @@ -0,0 +1,554 @@ +package miner + +import ( + "bytes" + "errors" + + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" + + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store) (State, error) { + out := state10{store: store} + out.State = miner10.State{} + return &out, nil +} + +type state10 struct { + miner10.State + store adt.Store +} + +type deadline10 struct { + miner10.Deadline + store adt.Store +} + +type partition10 struct { + miner10.Partition + store adt.Store +} + +func (s *state10) AvailableBalance(bal abi.TokenAmount) (available abi.TokenAmount, err error) { + defer func() { + if r := recover(); r != nil { + err = xerrors.Errorf("failed to get available balance: %w", r) + available = abi.NewTokenAmount(0) + } + }() + // this panics if the miner doesnt have enough funds to cover their locked pledge + available, err = s.GetAvailableBalance(bal) + return available, err +} + +func (s *state10) VestedFunds(epoch abi.ChainEpoch) (abi.TokenAmount, error) { + return s.CheckVestedFunds(s.store, epoch) +} + +func (s *state10) LockedFunds() (LockedFunds, error) { + return LockedFunds{ + VestingFunds: s.State.LockedFunds, + InitialPledgeRequirement: s.State.InitialPledge, + PreCommitDeposits: s.State.PreCommitDeposits, + }, nil +} + +func (s *state10) FeeDebt() (abi.TokenAmount, error) { + return s.State.FeeDebt, nil +} + +func (s *state10) InitialPledge() (abi.TokenAmount, error) { + return s.State.InitialPledge, nil +} + +func (s *state10) PreCommitDeposits() (abi.TokenAmount, error) { + return s.State.PreCommitDeposits, nil +} + +func (s *state10) GetSector(num abi.SectorNumber) (*SectorOnChainInfo, error) { + info, ok, err := s.State.GetSector(s.store, num) + if !ok || err != nil { + return nil, err + } + + ret := fromV10SectorOnChainInfo(*info) + return &ret, nil +} + +func (s *state10) FindSector(num abi.SectorNumber) (*SectorLocation, error) { + dlIdx, partIdx, err := s.State.FindSector(s.store, num) + if err != nil { + return nil, err + } + return &SectorLocation{ + Deadline: dlIdx, + Partition: partIdx, + }, nil +} + +func (s *state10) NumLiveSectors() (uint64, error) { + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return 0, err + } + var total uint64 + if err := dls.ForEach(s.store, func(dlIdx uint64, dl *miner10.Deadline) error { + total += dl.LiveSectors + return nil + }); err != nil { + return 0, err + } + return total, nil +} + +// GetSectorExpiration returns the effective expiration of the given sector. +// +// If the sector does not expire early, the Early expiration field is 0. +func (s *state10) GetSectorExpiration(num abi.SectorNumber) (*SectorExpiration, error) { + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return nil, err + } + // NOTE: this can be optimized significantly. + // 1. If the sector is non-faulty, it will expire on-time (can be + // learned from the sector info). + // 2. If it's faulty, it will expire early within the first 42 entries + // of the expiration queue. + + stopErr := errors.New("stop") + out := SectorExpiration{} + err = dls.ForEach(s.store, func(dlIdx uint64, dl *miner10.Deadline) error { + partitions, err := dl.PartitionsArray(s.store) + if err != nil { + return err + } + quant := s.State.QuantSpecForDeadline(dlIdx) + var part miner10.Partition + return partitions.ForEach(&part, func(partIdx int64) error { + if found, err := part.Sectors.IsSet(uint64(num)); err != nil { + return err + } else if !found { + return nil + } + if found, err := part.Terminated.IsSet(uint64(num)); err != nil { + return err + } else if found { + // already terminated + return stopErr + } + + q, err := miner10.LoadExpirationQueue(s.store, part.ExpirationsEpochs, quant, miner10.PartitionExpirationAmtBitwidth) + if err != nil { + return err + } + var exp miner10.ExpirationSet + return q.ForEach(&exp, func(epoch int64) error { + if early, err := exp.EarlySectors.IsSet(uint64(num)); err != nil { + return err + } else if early { + out.Early = abi.ChainEpoch(epoch) + return nil + } + if onTime, err := exp.OnTimeSectors.IsSet(uint64(num)); err != nil { + return err + } else if onTime { + out.OnTime = abi.ChainEpoch(epoch) + return stopErr + } + return nil + }) + }) + }) + if err == stopErr { + err = nil + } + if err != nil { + return nil, err + } + if out.Early == 0 && out.OnTime == 0 { + return nil, xerrors.Errorf("failed to find sector %d", num) + } + return &out, nil +} + +func (s *state10) GetPrecommittedSector(num abi.SectorNumber) (*minertypes.SectorPreCommitOnChainInfo, error) { + info, ok, err := s.State.GetPrecommittedSector(s.store, num) + if !ok || err != nil { + return nil, err + } + + ret := fromV10SectorPreCommitOnChainInfo(*info) + + return &ret, nil +} + +func (s *state10) ForEachPrecommittedSector(cb func(minertypes.SectorPreCommitOnChainInfo) error) error { + precommitted, err := adt10.AsMap(s.store, s.State.PreCommittedSectors, builtin10.DefaultHamtBitwidth) + if err != nil { + return err + } + + var info miner10.SectorPreCommitOnChainInfo + if err := precommitted.ForEach(&info, func(_ string) error { + return cb(fromV10SectorPreCommitOnChainInfo(info)) + }); err != nil { + return err + } + + return nil +} + +func (s *state10) LoadSectors(snos *bitfield.BitField) ([]*SectorOnChainInfo, error) { + sectors, err := miner10.LoadSectors(s.store, s.State.Sectors) + if err != nil { + return nil, err + } + + // If no sector numbers are specified, load all. + if snos == nil { + infos := make([]*SectorOnChainInfo, 0, sectors.Length()) + var info10 miner10.SectorOnChainInfo + if err := sectors.ForEach(&info10, func(_ int64) error { + info := fromV10SectorOnChainInfo(info10) + infos = append(infos, &info) + return nil + }); err != nil { + return nil, err + } + return infos, nil + } + + // Otherwise, load selected. + infos10, err := sectors.Load(*snos) + if err != nil { + return nil, err + } + infos := make([]*SectorOnChainInfo, len(infos10)) + for i, info10 := range infos10 { + info := fromV10SectorOnChainInfo(*info10) + infos[i] = &info + } + return infos, nil +} + +func (s *state10) loadAllocatedSectorNumbers() (bitfield.BitField, error) { + var allocatedSectors bitfield.BitField + err := s.store.Get(s.store.Context(), s.State.AllocatedSectors, &allocatedSectors) + return allocatedSectors, err +} + +func (s *state10) IsAllocated(num abi.SectorNumber) (bool, error) { + allocatedSectors, err := s.loadAllocatedSectorNumbers() + if err != nil { + return false, err + } + + return allocatedSectors.IsSet(uint64(num)) +} + +func (s *state10) GetProvingPeriodStart() (abi.ChainEpoch, error) { + return s.State.ProvingPeriodStart, nil +} + +func (s *state10) UnallocatedSectorNumbers(count int) ([]abi.SectorNumber, error) { + allocatedSectors, err := s.loadAllocatedSectorNumbers() + if err != nil { + return nil, err + } + + allocatedRuns, err := allocatedSectors.RunIterator() + if err != nil { + return nil, err + } + + unallocatedRuns, err := rle.Subtract( + &rle.RunSliceIterator{Runs: []rle.Run{{Val: true, Len: abi.MaxSectorNumber}}}, + allocatedRuns, + ) + if err != nil { + return nil, err + } + + iter, err := rle.BitsFromRuns(unallocatedRuns) + if err != nil { + return nil, err + } + + sectors := make([]abi.SectorNumber, 0, count) + for iter.HasNext() && len(sectors) < count { + nextNo, err := iter.Next() + if err != nil { + return nil, err + } + sectors = append(sectors, abi.SectorNumber(nextNo)) + } + + return sectors, nil +} + +func (s *state10) GetAllocatedSectors() (*bitfield.BitField, error) { + var allocatedSectors bitfield.BitField + if err := s.store.Get(s.store.Context(), s.State.AllocatedSectors, &allocatedSectors); err != nil { + return nil, err + } + + return &allocatedSectors, nil +} + +func (s *state10) LoadDeadline(idx uint64) (Deadline, error) { + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return nil, err + } + dl, err := dls.LoadDeadline(s.store, idx) + if err != nil { + return nil, err + } + return &deadline10{*dl, s.store}, nil +} + +func (s *state10) ForEachDeadline(cb func(uint64, Deadline) error) error { + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return err + } + return dls.ForEach(s.store, func(i uint64, dl *miner10.Deadline) error { + return cb(i, &deadline10{*dl, s.store}) + }) +} + +func (s *state10) NumDeadlines() (uint64, error) { + return miner10.WPoStPeriodDeadlines, nil +} + +func (s *state10) DeadlinesChanged(other State) (bool, error) { + other10, ok := other.(*state10) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + + return !s.State.Deadlines.Equals(other10.Deadlines), nil +} + +func (s *state10) MinerInfoChanged(other State) (bool, error) { + other0, ok := other.(*state10) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.Info.Equals(other0.State.Info), nil +} + +func (s *state10) Info() (MinerInfo, error) { + info, err := s.State.GetInfo(s.store) + if err != nil { + return MinerInfo{}, err + } + + mi := MinerInfo{ + Owner: info.Owner, + Worker: info.Worker, + ControlAddresses: info.ControlAddresses, + + PendingWorkerKey: (*WorkerKeyChange)(info.PendingWorkerKey), + + PeerId: info.PeerId, + Multiaddrs: info.Multiaddrs, + WindowPoStProofType: info.WindowPoStProofType, + SectorSize: info.SectorSize, + WindowPoStPartitionSectors: info.WindowPoStPartitionSectors, + ConsensusFaultElapsed: info.ConsensusFaultElapsed, + + Beneficiary: info.Beneficiary, + BeneficiaryTerm: info.BeneficiaryTerm, + PendingBeneficiaryTerm: info.PendingBeneficiaryTerm, + } + + return mi, nil +} + +func (s *state10) DeadlineInfo(epoch abi.ChainEpoch) (*dline.Info, error) { + return s.State.RecordedDeadlineInfo(epoch), nil +} + +func (s *state10) DeadlineCronActive() (bool, error) { + return s.State.DeadlineCronActive, nil +} + +func (s *state10) sectors() (adt.Array, error) { + return adt10.AsArray(s.store, s.Sectors, miner10.SectorsAmtBitwidth) +} + +func (s *state10) decodeSectorOnChainInfo(val *cbg.Deferred) (SectorOnChainInfo, error) { + var si miner10.SectorOnChainInfo + err := si.UnmarshalCBOR(bytes.NewReader(val.Raw)) + if err != nil { + return SectorOnChainInfo{}, err + } + + return fromV10SectorOnChainInfo(si), nil +} + +func (s *state10) precommits() (adt.Map, error) { + return adt10.AsMap(s.store, s.PreCommittedSectors, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) decodeSectorPreCommitOnChainInfo(val *cbg.Deferred) (minertypes.SectorPreCommitOnChainInfo, error) { + var sp miner10.SectorPreCommitOnChainInfo + err := sp.UnmarshalCBOR(bytes.NewReader(val.Raw)) + if err != nil { + return minertypes.SectorPreCommitOnChainInfo{}, err + } + + return fromV10SectorPreCommitOnChainInfo(sp), nil +} + +func (s *state10) EraseAllUnproven() error { + + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return err + } + + err = dls.ForEach(s.store, func(dindx uint64, dl *miner10.Deadline) error { + ps, err := dl.PartitionsArray(s.store) + if err != nil { + return err + } + + var part miner10.Partition + err = ps.ForEach(&part, func(pindx int64) error { + _ = part.ActivateUnproven() + err = ps.Set(uint64(pindx), &part) + return nil + }) + + if err != nil { + return err + } + + dl.Partitions, err = ps.Root() + if err != nil { + return err + } + + return dls.UpdateDeadline(s.store, dindx, dl) + }) + if err != nil { + return err + } + + return s.State.SaveDeadlines(s.store, dls) + +} + +func (d *deadline10) LoadPartition(idx uint64) (Partition, error) { + p, err := d.Deadline.LoadPartition(d.store, idx) + if err != nil { + return nil, err + } + return &partition10{*p, d.store}, nil +} + +func (d *deadline10) ForEachPartition(cb func(uint64, Partition) error) error { + ps, err := d.Deadline.PartitionsArray(d.store) + if err != nil { + return err + } + var part miner10.Partition + return ps.ForEach(&part, func(i int64) error { + return cb(uint64(i), &partition10{part, d.store}) + }) +} + +func (d *deadline10) PartitionsChanged(other Deadline) (bool, error) { + other10, ok := other.(*deadline10) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + + return !d.Deadline.Partitions.Equals(other10.Deadline.Partitions), nil +} + +func (d *deadline10) PartitionsPoSted() (bitfield.BitField, error) { + return d.Deadline.PartitionsPoSted, nil +} + +func (d *deadline10) DisputableProofCount() (uint64, error) { + + ops, err := d.OptimisticProofsSnapshotArray(d.store) + if err != nil { + return 0, err + } + + return ops.Length(), nil + +} + +func (p *partition10) AllSectors() (bitfield.BitField, error) { + return p.Partition.Sectors, nil +} + +func (p *partition10) FaultySectors() (bitfield.BitField, error) { + return p.Partition.Faults, nil +} + +func (p *partition10) RecoveringSectors() (bitfield.BitField, error) { + return p.Partition.Recoveries, nil +} + +func (p *partition10) UnprovenSectors() (bitfield.BitField, error) { + return p.Partition.Unproven, nil +} + +func fromV10SectorOnChainInfo(v10 miner10.SectorOnChainInfo) SectorOnChainInfo { + info := SectorOnChainInfo{ + SectorNumber: v10.SectorNumber, + SealProof: v10.SealProof, + SealedCID: v10.SealedCID, + DealIDs: v10.DealIDs, + Activation: v10.Activation, + Expiration: v10.Expiration, + DealWeight: v10.DealWeight, + VerifiedDealWeight: v10.VerifiedDealWeight, + InitialPledge: v10.InitialPledge, + ExpectedDayReward: v10.ExpectedDayReward, + ExpectedStoragePledge: v10.ExpectedStoragePledge, + + SectorKeyCID: v10.SectorKeyCID, + } + return info +} + +func fromV10SectorPreCommitOnChainInfo(v10 miner10.SectorPreCommitOnChainInfo) minertypes.SectorPreCommitOnChainInfo { + return v10 +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/miner/v2.go b/chain/actors/builtin/miner/v2.go index 3501e81f1..ac4ec64d3 100644 --- a/chain/actors/builtin/miner/v2.go +++ b/chain/actors/builtin/miner/v2.go @@ -4,19 +4,19 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/miner/v3.go b/chain/actors/builtin/miner/v3.go index 5d2d3ef61..b8a396190 100644 --- a/chain/actors/builtin/miner/v3.go +++ b/chain/actors/builtin/miner/v3.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/miner/v4.go b/chain/actors/builtin/miner/v4.go index db36c3875..54c812d8a 100644 --- a/chain/actors/builtin/miner/v4.go +++ b/chain/actors/builtin/miner/v4.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/miner/v5.go b/chain/actors/builtin/miner/v5.go index 8ff6432d2..5a680182e 100644 --- a/chain/actors/builtin/miner/v5.go +++ b/chain/actors/builtin/miner/v5.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/miner/v6.go b/chain/actors/builtin/miner/v6.go index f11d4d062..5a1634dd4 100644 --- a/chain/actors/builtin/miner/v6.go +++ b/chain/actors/builtin/miner/v6.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/miner/v7.go b/chain/actors/builtin/miner/v7.go index f7893cef3..2610d2c03 100644 --- a/chain/actors/builtin/miner/v7.go +++ b/chain/actors/builtin/miner/v7.go @@ -4,20 +4,21 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/miner/v8.go b/chain/actors/builtin/miner/v8.go index 0d53cc664..1b2932609 100644 --- a/chain/actors/builtin/miner/v8.go +++ b/chain/actors/builtin/miner/v8.go @@ -4,20 +4,20 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin8 "github.com/filecoin-project/go-state-types/builtin" miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" - "github.com/filecoin-project/go-state-types/dline" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/miner/v9.go b/chain/actors/builtin/miner/v9.go index 32b8d008b..7b8764995 100644 --- a/chain/actors/builtin/miner/v9.go +++ b/chain/actors/builtin/miner/v9.go @@ -4,20 +4,20 @@ import ( "bytes" "errors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin9 "github.com/filecoin-project/go-state-types/builtin" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" - minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - "github.com/filecoin-project/go-state-types/dline" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/multisig/message0.go b/chain/actors/builtin/multisig/message0.go index 7dbdf444c..c8e97cb49 100644 --- a/chain/actors/builtin/multisig/message0.go +++ b/chain/actors/builtin/multisig/message0.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" multisig0 "github.com/filecoin-project/specs-actors/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message10.go b/chain/actors/builtin/multisig/message10.go new file mode 100644 index 000000000..aaa616e14 --- /dev/null +++ b/chain/actors/builtin/multisig/message10.go @@ -0,0 +1,77 @@ +package multisig + +import ( + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + + builtintypes "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors" + init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" + "github.com/filecoin-project/lotus/chain/types" +) + +type message10 struct{ message0 } + +func (m message10) Create( + signers []address.Address, threshold uint64, + unlockStart, unlockDuration abi.ChainEpoch, + initialAmount abi.TokenAmount, +) (*types.Message, error) { + + lenAddrs := uint64(len(signers)) + + if lenAddrs < threshold { + return nil, xerrors.Errorf("cannot require signing of more addresses than provided for multisig") + } + + if threshold == 0 { + threshold = lenAddrs + } + + if m.from == address.Undef { + return nil, xerrors.Errorf("must provide source address") + } + + // Set up constructor parameters for multisig + msigParams := &multisig10.ConstructorParams{ + Signers: signers, + NumApprovalsThreshold: threshold, + UnlockDuration: unlockDuration, + StartEpoch: unlockStart, + } + + enc, actErr := actors.SerializeParams(msigParams) + if actErr != nil { + return nil, actErr + } + + code, ok := actors.GetActorCodeID(actorstypes.Version10, actors.MultisigKey) + if !ok { + return nil, xerrors.Errorf("failed to get multisig code ID") + } + + // new actors are created by invoking 'exec' on the init actor with the constructor params + execParams := &init10.ExecParams{ + CodeCID: code, + ConstructorParams: enc, + } + + enc, actErr = actors.SerializeParams(execParams) + if actErr != nil { + return nil, actErr + } + + return &types.Message{ + To: init_.Address, + From: m.from, + Method: builtintypes.MethodsInit.Exec, + Params: enc, + Value: initialAmount, + }, nil +} diff --git a/chain/actors/builtin/multisig/message2.go b/chain/actors/builtin/multisig/message2.go index 91ad17b84..c316c9fdd 100644 --- a/chain/actors/builtin/multisig/message2.go +++ b/chain/actors/builtin/multisig/message2.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" multisig2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message3.go b/chain/actors/builtin/multisig/message3.go index 4124e00c8..6c842c471 100644 --- a/chain/actors/builtin/multisig/message3.go +++ b/chain/actors/builtin/multisig/message3.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" multisig3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message4.go b/chain/actors/builtin/multisig/message4.go index 33449df75..11ba46da9 100644 --- a/chain/actors/builtin/multisig/message4.go +++ b/chain/actors/builtin/multisig/message4.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" multisig4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message5.go b/chain/actors/builtin/multisig/message5.go index 46c35dabc..a6292c0ac 100644 --- a/chain/actors/builtin/multisig/message5.go +++ b/chain/actors/builtin/multisig/message5.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" multisig5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message6.go b/chain/actors/builtin/multisig/message6.go index f528cfbb5..e497fbaac 100644 --- a/chain/actors/builtin/multisig/message6.go +++ b/chain/actors/builtin/multisig/message6.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" multisig6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message7.go b/chain/actors/builtin/multisig/message7.go index 6e62dad13..79af7d19d 100644 --- a/chain/actors/builtin/multisig/message7.go +++ b/chain/actors/builtin/multisig/message7.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtintypes "github.com/filecoin-project/go-state-types/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" multisig7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message8.go b/chain/actors/builtin/multisig/message8.go index f627a695f..4560f6e0a 100644 --- a/chain/actors/builtin/multisig/message8.go +++ b/chain/actors/builtin/multisig/message8.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtintypes "github.com/filecoin-project/go-state-types/builtin" - multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" - init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" + actorstypes "github.com/filecoin-project/go-state-types/actors" + init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" + + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" @@ -56,7 +57,7 @@ func (m message8) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init9.ExecParams{ + execParams := &init10.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/chain/actors/builtin/multisig/message9.go b/chain/actors/builtin/multisig/message9.go index 62f6ff558..e149cf5d0 100644 --- a/chain/actors/builtin/multisig/message9.go +++ b/chain/actors/builtin/multisig/message9.go @@ -5,11 +5,12 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" - builtintypes "github.com/filecoin-project/go-state-types/builtin" - init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" + init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" multisig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" @@ -56,7 +57,7 @@ func (m message9) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init9.ExecParams{ + execParams := &init10.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/chain/actors/builtin/multisig/multisig.go b/chain/actors/builtin/multisig/multisig.go index 6c0d449df..c089d96ca 100644 --- a/chain/actors/builtin/multisig/multisig.go +++ b/chain/actors/builtin/multisig/multisig.go @@ -2,6 +2,7 @@ package multisig import ( "fmt" + actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/minio/blake2b-simd" cbg "github.com/whyrusleeping/cbor-gen" @@ -9,18 +10,26 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtintypes "github.com/filecoin-project/go-state-types/builtin" - msig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" "github.com/filecoin-project/go-state-types/cbor" + + msig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + builtintypes "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" @@ -40,6 +49,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -101,6 +113,9 @@ func MakeState(store adt.Store, av actorstypes.Version, signers []address.Addres case actorstypes.Version9: return make9(store, signers, threshold, startEpoch, unlockDuration, initialBalance) + case actorstypes.Version10: + return make10(store, signers, threshold, startEpoch, unlockDuration, initialBalance) + } return nil, xerrors.Errorf("unknown actor version %d", av) } @@ -123,7 +138,7 @@ type State interface { GetState() interface{} } -type Transaction = msig9.Transaction +type Transaction = msig10.Transaction var Methods = builtintypes.MethodsMultisig @@ -156,6 +171,9 @@ func Message(version actorstypes.Version, from address.Address) MessageBuilder { case actorstypes.Version9: return message9{message0{from}} + + case actorstypes.Version10: + return message10{message0{from}} default: panic(fmt.Sprintf("unsupported actors version: %d", version)) } @@ -179,13 +197,13 @@ type MessageBuilder interface { } // this type is the same between v0 and v2 -type ProposalHashData = msig9.ProposalHashData -type ProposeReturn = msig9.ProposeReturn -type ProposeParams = msig9.ProposeParams -type ApproveReturn = msig9.ApproveReturn +type ProposalHashData = msig10.ProposalHashData +type ProposeReturn = msig10.ProposeReturn +type ProposeParams = msig10.ProposeParams +type ApproveReturn = msig10.ApproveReturn func txnParams(id uint64, data *ProposalHashData) ([]byte, error) { - params := msig9.TxnIDParams{ID: msig9.TxnID(id)} + params := msig10.TxnIDParams{ID: msig10.TxnID(id)} if data != nil { if data.Requester.Protocol() != address.ID { return nil, xerrors.Errorf("proposer address must be an ID address, was %s", data.Requester) diff --git a/chain/actors/builtin/multisig/v0.go b/chain/actors/builtin/multisig/v0.go index 9f4d09dc1..ccd9a9e37 100644 --- a/chain/actors/builtin/multisig/v0.go +++ b/chain/actors/builtin/multisig/v0.go @@ -4,16 +4,16 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + msig0 "github.com/filecoin-project/specs-actors/actors/builtin/multisig" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/multisig/v10.go b/chain/actors/builtin/multisig/v10.go new file mode 100644 index 000000000..654d92f91 --- /dev/null +++ b/chain/actors/builtin/multisig/v10.go @@ -0,0 +1,117 @@ +package multisig + +import ( + "bytes" + "encoding/binary" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + msig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, signers []address.Address, threshold uint64, startEpoch abi.ChainEpoch, unlockDuration abi.ChainEpoch, initialBalance abi.TokenAmount) (State, error) { + out := state10{store: store} + out.State = msig10.State{} + out.State.Signers = signers + out.State.NumApprovalsThreshold = threshold + out.State.StartEpoch = startEpoch + out.State.UnlockDuration = unlockDuration + out.State.InitialBalance = initialBalance + + em, err := adt10.StoreEmptyMap(store, builtin10.DefaultHamtBitwidth) + if err != nil { + return nil, err + } + + out.State.PendingTxns = em + + return &out, nil +} + +type state10 struct { + msig10.State + store adt.Store +} + +func (s *state10) LockedBalance(currEpoch abi.ChainEpoch) (abi.TokenAmount, error) { + return s.State.AmountLocked(currEpoch - s.State.StartEpoch), nil +} + +func (s *state10) StartEpoch() (abi.ChainEpoch, error) { + return s.State.StartEpoch, nil +} + +func (s *state10) UnlockDuration() (abi.ChainEpoch, error) { + return s.State.UnlockDuration, nil +} + +func (s *state10) InitialBalance() (abi.TokenAmount, error) { + return s.State.InitialBalance, nil +} + +func (s *state10) Threshold() (uint64, error) { + return s.State.NumApprovalsThreshold, nil +} + +func (s *state10) Signers() ([]address.Address, error) { + return s.State.Signers, nil +} + +func (s *state10) ForEachPendingTxn(cb func(id int64, txn Transaction) error) error { + arr, err := adt10.AsMap(s.store, s.State.PendingTxns, builtin10.DefaultHamtBitwidth) + if err != nil { + return err + } + var out msig10.Transaction + return arr.ForEach(&out, func(key string) error { + txid, n := binary.Varint([]byte(key)) + if n <= 0 { + return xerrors.Errorf("invalid pending transaction key: %v", key) + } + return cb(txid, (Transaction)(out)) //nolint:unconvert + }) +} + +func (s *state10) PendingTxnChanged(other State) (bool, error) { + other10, ok := other.(*state10) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.PendingTxns.Equals(other10.PendingTxns), nil +} + +func (s *state10) transactions() (adt.Map, error) { + return adt10.AsMap(s.store, s.PendingTxns, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) decodeTransaction(val *cbg.Deferred) (Transaction, error) { + var tx msig10.Transaction + if err := tx.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return Transaction{}, err + } + return Transaction(tx), nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/multisig/v2.go b/chain/actors/builtin/multisig/v2.go index 14e895680..c3579b3e2 100644 --- a/chain/actors/builtin/multisig/v2.go +++ b/chain/actors/builtin/multisig/v2.go @@ -4,16 +4,16 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + msig2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/multisig" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/multisig/v3.go b/chain/actors/builtin/multisig/v3.go index 5cde148c1..80682808e 100644 --- a/chain/actors/builtin/multisig/v3.go +++ b/chain/actors/builtin/multisig/v3.go @@ -4,17 +4,18 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + msig3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/multisig" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/multisig/v4.go b/chain/actors/builtin/multisig/v4.go index 87936661d..f065f9f8c 100644 --- a/chain/actors/builtin/multisig/v4.go +++ b/chain/actors/builtin/multisig/v4.go @@ -4,17 +4,18 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + msig4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/multisig" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/multisig/v5.go b/chain/actors/builtin/multisig/v5.go index d50638ca5..783e3987f 100644 --- a/chain/actors/builtin/multisig/v5.go +++ b/chain/actors/builtin/multisig/v5.go @@ -4,17 +4,18 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + msig5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/multisig" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/multisig/v6.go b/chain/actors/builtin/multisig/v6.go index 9246eeaa9..71ea3c00c 100644 --- a/chain/actors/builtin/multisig/v6.go +++ b/chain/actors/builtin/multisig/v6.go @@ -4,17 +4,18 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + msig6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/multisig" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/multisig/v7.go b/chain/actors/builtin/multisig/v7.go index a6b630179..8ed1caacd 100644 --- a/chain/actors/builtin/multisig/v7.go +++ b/chain/actors/builtin/multisig/v7.go @@ -4,17 +4,18 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + msig7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/multisig" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/multisig/v8.go b/chain/actors/builtin/multisig/v8.go index 6311583b3..5b76f662e 100644 --- a/chain/actors/builtin/multisig/v8.go +++ b/chain/actors/builtin/multisig/v8.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin8 "github.com/filecoin-project/go-state-types/builtin" msig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/multisig/v9.go b/chain/actors/builtin/multisig/v9.go index ef9a48f28..cf6df9316 100644 --- a/chain/actors/builtin/multisig/v9.go +++ b/chain/actors/builtin/multisig/v9.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/binary" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + builtin9 "github.com/filecoin-project/go-state-types/builtin" msig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/paych/message0.go b/chain/actors/builtin/paych/message0.go index d5a112d43..2daa0301b 100644 --- a/chain/actors/builtin/paych/message0.go +++ b/chain/actors/builtin/paych/message0.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message10.go b/chain/actors/builtin/paych/message10.go new file mode 100644 index 000000000..008605217 --- /dev/null +++ b/chain/actors/builtin/paych/message10.go @@ -0,0 +1,111 @@ +package paych + +import ( + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + + "github.com/filecoin-project/lotus/chain/actors" + init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" + "github.com/filecoin-project/lotus/chain/types" +) + +type message10 struct{ from address.Address } + +func (m message10) Create(to address.Address, initialAmount abi.TokenAmount) (*types.Message, error) { + + actorCodeID, ok := actors.GetActorCodeID(actorstypes.Version10, "paymentchannel") + if !ok { + return nil, xerrors.Errorf("error getting actor paymentchannel code id for actor version %d", 10) + } + + params, aerr := actors.SerializeParams(&paych10.ConstructorParams{From: m.from, To: to}) + if aerr != nil { + return nil, aerr + } + enc, aerr := actors.SerializeParams(&init10.ExecParams{ + CodeCID: actorCodeID, + ConstructorParams: params, + }) + if aerr != nil { + return nil, aerr + } + + return &types.Message{ + To: init_.Address, + From: m.from, + Value: initialAmount, + Method: builtin10.MethodsInit.Exec, + Params: enc, + }, nil +} + +func (m message10) Update(paych address.Address, sv *paychtypes.SignedVoucher, secret []byte) (*types.Message, error) { + params, aerr := actors.SerializeParams(&paych10.UpdateChannelStateParams{ + + Sv: toV10SignedVoucher(*sv), + + Secret: secret, + }) + if aerr != nil { + return nil, aerr + } + + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin10.MethodsPaych.UpdateChannelState, + Params: params, + }, nil +} + +func toV10SignedVoucher(sv paychtypes.SignedVoucher) paych10.SignedVoucher { + merges := make([]paych10.Merge, len(sv.Merges)) + for i := range sv.Merges { + merges[i] = paych10.Merge{ + Lane: sv.Merges[i].Lane, + Nonce: sv.Merges[i].Nonce, + } + } + + return paych10.SignedVoucher{ + ChannelAddr: sv.ChannelAddr, + TimeLockMin: sv.TimeLockMin, + TimeLockMax: sv.TimeLockMax, + SecretHash: sv.SecretHash, + Extra: (*paych10.ModVerifyParams)(sv.Extra), + Lane: sv.Lane, + Nonce: sv.Nonce, + Amount: sv.Amount, + MinSettleHeight: sv.MinSettleHeight, + Merges: merges, + Signature: sv.Signature, + } +} + +func (m message10) Settle(paych address.Address) (*types.Message, error) { + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin10.MethodsPaych.Settle, + }, nil +} + +func (m message10) Collect(paych address.Address) (*types.Message, error) { + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin10.MethodsPaych.Collect, + }, nil +} diff --git a/chain/actors/builtin/paych/message2.go b/chain/actors/builtin/paych/message2.go index 89a6e74ce..925ad0ed9 100644 --- a/chain/actors/builtin/paych/message2.go +++ b/chain/actors/builtin/paych/message2.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" paych2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message3.go b/chain/actors/builtin/paych/message3.go index 47f8e7e9e..e8ae585fc 100644 --- a/chain/actors/builtin/paych/message3.go +++ b/chain/actors/builtin/paych/message3.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" paych3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message4.go b/chain/actors/builtin/paych/message4.go index 65e63149d..b32b0fa57 100644 --- a/chain/actors/builtin/paych/message4.go +++ b/chain/actors/builtin/paych/message4.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" paych4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message5.go b/chain/actors/builtin/paych/message5.go index ede1c8ceb..897bebe7a 100644 --- a/chain/actors/builtin/paych/message5.go +++ b/chain/actors/builtin/paych/message5.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" paych5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message6.go b/chain/actors/builtin/paych/message6.go index 009e8641f..11bd3a8a5 100644 --- a/chain/actors/builtin/paych/message6.go +++ b/chain/actors/builtin/paych/message6.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" paych6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message7.go b/chain/actors/builtin/paych/message7.go index 430fb9341..446e54ead 100644 --- a/chain/actors/builtin/paych/message7.go +++ b/chain/actors/builtin/paych/message7.go @@ -3,7 +3,9 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" paych7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message8.go b/chain/actors/builtin/paych/message8.go index a72c5fbb3..6d9df4f4c 100644 --- a/chain/actors/builtin/paych/message8.go +++ b/chain/actors/builtin/paych/message8.go @@ -5,11 +5,13 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + actorstypes "github.com/filecoin-project/go-state-types/actors" builtin8 "github.com/filecoin-project/go-state-types/builtin" init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" paych8 "github.com/filecoin-project/go-state-types/builtin/v8/paych" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" diff --git a/chain/actors/builtin/paych/message9.go b/chain/actors/builtin/paych/message9.go index 350c760ea..c0e68a4c3 100644 --- a/chain/actors/builtin/paych/message9.go +++ b/chain/actors/builtin/paych/message9.go @@ -5,9 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" + actorstypes "github.com/filecoin-project/go-state-types/actors" builtin9 "github.com/filecoin-project/go-state-types/builtin" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" diff --git a/chain/actors/builtin/paych/paych.go b/chain/actors/builtin/paych/paych.go index e0a13fd21..3c0de73b0 100644 --- a/chain/actors/builtin/paych/paych.go +++ b/chain/actors/builtin/paych/paych.go @@ -3,23 +3,31 @@ package paych import ( "encoding/base64" "fmt" + actorstypes "github.com/filecoin-project/go-state-types/actors" - ipldcbor "github.com/ipfs/go-ipld-cbor" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + ipldcbor "github.com/ipfs/go-ipld-cbor" + + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" "github.com/filecoin-project/lotus/chain/actors" @@ -42,6 +50,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -148,6 +159,9 @@ func Message(version actorstypes.Version, from address.Address) MessageBuilder { case actorstypes.Version9: return message9{from} + case actorstypes.Version10: + return message10{from} + default: panic(fmt.Sprintf("unsupported actors version: %d", version)) } diff --git a/chain/actors/builtin/paych/v0.go b/chain/actors/builtin/paych/v0.go index 727525c50..e9bc30e3d 100644 --- a/chain/actors/builtin/paych/v0.go +++ b/chain/actors/builtin/paych/v0.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" - adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" + adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/paych/v10.go b/chain/actors/builtin/paych/v10.go new file mode 100644 index 000000000..1425b5bee --- /dev/null +++ b/chain/actors/builtin/paych/v10.go @@ -0,0 +1,114 @@ +package paych + +import ( + "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/big" + + "github.com/filecoin-project/lotus/chain/actors/adt" + + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store) (State, error) { + out := state10{store: store} + out.State = paych10.State{} + return &out, nil +} + +type state10 struct { + paych10.State + store adt.Store + lsAmt *adt10.Array +} + +// Channel owner, who has funded the actor +func (s *state10) From() (address.Address, error) { + return s.State.From, nil +} + +// Recipient of payouts from channel +func (s *state10) To() (address.Address, error) { + return s.State.To, nil +} + +// Height at which the channel can be `Collected` +func (s *state10) SettlingAt() (abi.ChainEpoch, error) { + return s.State.SettlingAt, nil +} + +// Amount successfully redeemed through the payment channel, paid out on `Collect()` +func (s *state10) ToSend() (abi.TokenAmount, error) { + return s.State.ToSend, nil +} + +func (s *state10) getOrLoadLsAmt() (*adt10.Array, error) { + if s.lsAmt != nil { + return s.lsAmt, nil + } + + // Get the lane state from the chain + lsamt, err := adt10.AsArray(s.store, s.State.LaneStates, paych10.LaneStatesAmtBitwidth) + if err != nil { + return nil, err + } + + s.lsAmt = lsamt + return lsamt, nil +} + +// Get total number of lanes +func (s *state10) LaneCount() (uint64, error) { + lsamt, err := s.getOrLoadLsAmt() + if err != nil { + return 0, err + } + return lsamt.Length(), nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +// Iterate lane states +func (s *state10) ForEachLaneState(cb func(idx uint64, dl LaneState) error) error { + // Get the lane state from the chain + lsamt, err := s.getOrLoadLsAmt() + if err != nil { + return err + } + + // Note: we use a map instead of an array to store laneStates because the + // client sets the lane ID (the index) and potentially they could use a + // very large index. + var ls paych10.LaneState + return lsamt.ForEach(&ls, func(i int64) error { + return cb(uint64(i), &laneState10{ls}) + }) +} + +type laneState10 struct { + paych10.LaneState +} + +func (ls *laneState10) Redeemed() (big.Int, error) { + return ls.LaneState.Redeemed, nil +} + +func (ls *laneState10) Nonce() (uint64, error) { + return ls.LaneState.Nonce, nil +} diff --git a/chain/actors/builtin/paych/v2.go b/chain/actors/builtin/paych/v2.go index 5852c9a64..400305e2f 100644 --- a/chain/actors/builtin/paych/v2.go +++ b/chain/actors/builtin/paych/v2.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/paych" - adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/paych" + adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/paych/v3.go b/chain/actors/builtin/paych/v3.go index 5297e9d10..1d7c2f94b 100644 --- a/chain/actors/builtin/paych/v3.go +++ b/chain/actors/builtin/paych/v3.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/paych" - adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/paych" + adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/paych/v4.go b/chain/actors/builtin/paych/v4.go index be10061bf..b7d1e52a5 100644 --- a/chain/actors/builtin/paych/v4.go +++ b/chain/actors/builtin/paych/v4.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/paych" - adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/paych" + adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/paych/v5.go b/chain/actors/builtin/paych/v5.go index 37a917273..b331a1500 100644 --- a/chain/actors/builtin/paych/v5.go +++ b/chain/actors/builtin/paych/v5.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/paych" - adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/paych" + adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/paych/v6.go b/chain/actors/builtin/paych/v6.go index 36676d9de..0d60b1f03 100644 --- a/chain/actors/builtin/paych/v6.go +++ b/chain/actors/builtin/paych/v6.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/paych" - adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/paych" + adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/paych/v7.go b/chain/actors/builtin/paych/v7.go index 88b6f2b84..ce09ea2e4 100644 --- a/chain/actors/builtin/paych/v7.go +++ b/chain/actors/builtin/paych/v7.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/paych" - adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/paych" + adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/paych/v8.go b/chain/actors/builtin/paych/v8.go index 1961e69ec..7936b76e1 100644 --- a/chain/actors/builtin/paych/v8.go +++ b/chain/actors/builtin/paych/v8.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych8 "github.com/filecoin-project/go-state-types/builtin/v8/paych" - adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych8 "github.com/filecoin-project/go-state-types/builtin/v8/paych" + adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/paych/v9.go b/chain/actors/builtin/paych/v9.go index 443fe74ea..02493ac99 100644 --- a/chain/actors/builtin/paych/v9.go +++ b/chain/actors/builtin/paych/v9.go @@ -6,10 +6,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" - adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" "github.com/filecoin-project/lotus/chain/actors/adt" + + paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" + adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/power/power.go b/chain/actors/builtin/power/power.go index dc008f1f1..ce12b9219 100644 --- a/chain/actors/builtin/power/power.go +++ b/chain/actors/builtin/power/power.go @@ -1,32 +1,40 @@ package power import ( + "github.com/filecoin-project/go-address" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + "github.com/filecoin-project/lotus/chain/actors" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/go-state-types/big" - builtin9 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/types" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin9.StoragePowerActorAddr - Methods = builtin9.MethodsPower + Address = builtin10.StoragePowerActorAddr + Methods = builtin10.MethodsPower ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -43,6 +51,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -104,6 +115,9 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version9: return make9(store) + case actorstypes.Version10: + return make10(store) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/power/v0.go b/chain/actors/builtin/power/v0.go index 5ae42b4df..e114ac219 100644 --- a/chain/actors/builtin/power/v0.go +++ b/chain/actors/builtin/power/v0.go @@ -3,16 +3,16 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" - adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" + adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/power/v10.go b/chain/actors/builtin/power/v10.go new file mode 100644 index 000000000..5b1d60680 --- /dev/null +++ b/chain/actors/builtin/power/v10.go @@ -0,0 +1,186 @@ +package power + +import ( + "bytes" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + power10 "github.com/filecoin-project/go-state-types/builtin/v10/power" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store) (State, error) { + out := state10{store: store} + + s, err := power10.ConstructState(store) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state10 struct { + power10.State + store adt.Store +} + +func (s *state10) TotalLocked() (abi.TokenAmount, error) { + return s.TotalPledgeCollateral, nil +} + +func (s *state10) TotalPower() (Claim, error) { + return Claim{ + RawBytePower: s.TotalRawBytePower, + QualityAdjPower: s.TotalQualityAdjPower, + }, nil +} + +// Committed power to the network. Includes miners below the minimum threshold. +func (s *state10) TotalCommitted() (Claim, error) { + return Claim{ + RawBytePower: s.TotalBytesCommitted, + QualityAdjPower: s.TotalQABytesCommitted, + }, nil +} + +func (s *state10) MinerPower(addr address.Address) (Claim, bool, error) { + claims, err := s.claims() + if err != nil { + return Claim{}, false, err + } + var claim power10.Claim + ok, err := claims.Get(abi.AddrKey(addr), &claim) + if err != nil { + return Claim{}, false, err + } + return Claim{ + RawBytePower: claim.RawBytePower, + QualityAdjPower: claim.QualityAdjPower, + }, ok, nil +} + +func (s *state10) MinerNominalPowerMeetsConsensusMinimum(a address.Address) (bool, error) { + return s.State.MinerNominalPowerMeetsConsensusMinimum(s.store, a) +} + +func (s *state10) TotalPowerSmoothed() (builtin.FilterEstimate, error) { + return builtin.FilterEstimate(s.State.ThisEpochQAPowerSmoothed), nil +} + +func (s *state10) MinerCounts() (uint64, uint64, error) { + return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil +} + +func (s *state10) ListAllMiners() ([]address.Address, error) { + claims, err := s.claims() + if err != nil { + return nil, err + } + + var miners []address.Address + err = claims.ForEach(nil, func(k string) error { + a, err := address.NewFromBytes([]byte(k)) + if err != nil { + return err + } + miners = append(miners, a) + return nil + }) + if err != nil { + return nil, err + } + + return miners, nil +} + +func (s *state10) ForEachClaim(cb func(miner address.Address, claim Claim) error) error { + claims, err := s.claims() + if err != nil { + return err + } + + var claim power10.Claim + return claims.ForEach(&claim, func(k string) error { + a, err := address.NewFromBytes([]byte(k)) + if err != nil { + return err + } + return cb(a, Claim{ + RawBytePower: claim.RawBytePower, + QualityAdjPower: claim.QualityAdjPower, + }) + }) +} + +func (s *state10) ClaimsChanged(other State) (bool, error) { + other10, ok := other.(*state10) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.Claims.Equals(other10.State.Claims), nil +} + +func (s *state10) SetTotalQualityAdjPower(p abi.StoragePower) error { + s.State.TotalQualityAdjPower = p + return nil +} + +func (s *state10) SetTotalRawBytePower(p abi.StoragePower) error { + s.State.TotalRawBytePower = p + return nil +} + +func (s *state10) SetThisEpochQualityAdjPower(p abi.StoragePower) error { + s.State.ThisEpochQualityAdjPower = p + return nil +} + +func (s *state10) SetThisEpochRawBytePower(p abi.StoragePower) error { + s.State.ThisEpochRawBytePower = p + return nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +func (s *state10) claims() (adt.Map, error) { + return adt10.AsMap(s.store, s.Claims, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) decodeClaim(val *cbg.Deferred) (Claim, error) { + var ci power10.Claim + if err := ci.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return Claim{}, err + } + return fromV10Claim(ci), nil +} + +func fromV10Claim(v10 power10.Claim) Claim { + return Claim{ + RawBytePower: v10.RawBytePower, + QualityAdjPower: v10.QualityAdjPower, + } +} diff --git a/chain/actors/builtin/power/v2.go b/chain/actors/builtin/power/v2.go index 485819e3e..405bad8ba 100644 --- a/chain/actors/builtin/power/v2.go +++ b/chain/actors/builtin/power/v2.go @@ -3,16 +3,16 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - power2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/power" - adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + power2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/power" + adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/power/v3.go b/chain/actors/builtin/power/v3.go index e33ee2bb5..0ff06f617 100644 --- a/chain/actors/builtin/power/v3.go +++ b/chain/actors/builtin/power/v3.go @@ -3,17 +3,18 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - power3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/power" - adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + power3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/power" + adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/power/v4.go b/chain/actors/builtin/power/v4.go index e5c446f07..f121e3b2f 100644 --- a/chain/actors/builtin/power/v4.go +++ b/chain/actors/builtin/power/v4.go @@ -3,17 +3,18 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - power4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/power" - adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + power4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/power" + adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/power/v5.go b/chain/actors/builtin/power/v5.go index aaf248058..851522e50 100644 --- a/chain/actors/builtin/power/v5.go +++ b/chain/actors/builtin/power/v5.go @@ -3,17 +3,18 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - power5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/power" - adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + power5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/power" + adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/power/v6.go b/chain/actors/builtin/power/v6.go index 072def6e2..083b85f45 100644 --- a/chain/actors/builtin/power/v6.go +++ b/chain/actors/builtin/power/v6.go @@ -3,17 +3,18 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - power6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/power" - adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + power6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/power" + adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/power/v7.go b/chain/actors/builtin/power/v7.go index 0c60b03a0..af626cf3a 100644 --- a/chain/actors/builtin/power/v7.go +++ b/chain/actors/builtin/power/v7.go @@ -3,17 +3,18 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - power7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/power" - adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" - "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + power7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/power" + adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/power/v8.go b/chain/actors/builtin/power/v8.go index c23da6904..177d3bc3d 100644 --- a/chain/actors/builtin/power/v8.go +++ b/chain/actors/builtin/power/v8.go @@ -3,17 +3,17 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" + builtin8 "github.com/filecoin-project/go-state-types/builtin" power8 "github.com/filecoin-project/go-state-types/builtin/v8/power" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/power/v9.go b/chain/actors/builtin/power/v9.go index 7614b7c2e..745e060a1 100644 --- a/chain/actors/builtin/power/v9.go +++ b/chain/actors/builtin/power/v9.go @@ -3,17 +3,17 @@ package power import ( "bytes" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" + builtin9 "github.com/filecoin-project/go-state-types/builtin" power9 "github.com/filecoin-project/go-state-types/builtin/v9/power" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/registry.go b/chain/actors/builtin/registry.go index 622bf4185..476271766 100644 --- a/chain/actors/builtin/registry.go +++ b/chain/actors/builtin/registry.go @@ -1,14 +1,14 @@ package builtin import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/ipfs/go-cid" "reflect" "runtime" "strings" - "github.com/ipfs/go-cid" - - actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/builtin" + account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" _init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" @@ -20,9 +20,9 @@ import ( reward8 "github.com/filecoin-project/go-state-types/builtin/v8/reward" system8 "github.com/filecoin-project/go-state-types/builtin/v8/system" verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" + account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" - datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" _init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" @@ -32,9 +32,25 @@ import ( reward9 "github.com/filecoin-project/go-state-types/builtin/v9/reward" system9 "github.com/filecoin-project/go-state-types/builtin/v9/system" verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + + datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" + + account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" + cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" + _init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + power10 "github.com/filecoin-project/go-state-types/builtin/v10/power" + reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward" + system10 "github.com/filecoin-project/go-state-types/builtin/v10/system" + verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" + + datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" + "github.com/filecoin-project/go-state-types/cbor" rtt "github.com/filecoin-project/go-state-types/rt" - "github.com/filecoin-project/lotus/chain/actors" ) @@ -254,6 +270,84 @@ func MakeRegistry(av actorstypes.Version) []RegistryEntry { } } + case actorstypes.Version10: + for key, codeID := range codeIDs { + switch key { + case actors.AccountKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: account10.Methods, + state: new(account10.State), + }) + case actors.CronKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: cron10.Methods, + state: new(cron10.State), + }) + case actors.InitKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: _init10.Methods, + state: new(_init10.State), + }) + case actors.MarketKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: market10.Methods, + state: new(market10.State), + }) + case actors.MinerKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: miner10.Methods, + state: new(miner10.State), + }) + case actors.MultisigKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: multisig10.Methods, + state: new(multisig10.State), + }) + case actors.PaychKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: paych10.Methods, + state: new(paych10.State), + }) + case actors.PowerKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: power10.Methods, + state: new(power10.State), + }) + case actors.RewardKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: reward10.Methods, + state: new(reward10.State), + }) + case actors.SystemKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: system10.Methods, + state: new(system10.State), + }) + case actors.VerifregKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: verifreg10.Methods, + state: new(verifreg10.State), + }) + case actors.DatacapKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: datacap10.Methods, + state: new(datacap10.State), + }) + } + } + default: panic("expected version v8 and up only, use specs-actors for v0-7") } diff --git a/chain/actors/builtin/reward/reward.go b/chain/actors/builtin/reward/reward.go index 6902b258e..b37b89bf2 100644 --- a/chain/actors/builtin/reward/reward.go +++ b/chain/actors/builtin/reward/reward.go @@ -1,30 +1,38 @@ package reward import ( - "golang.org/x/xerrors" - "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + "github.com/filecoin-project/lotus/chain/actors" reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-state-types/cbor" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/types" ) var ( - Address = builtin9.RewardActorAddr - Methods = builtin9.MethodsReward + Address = builtin10.RewardActorAddr + Methods = builtin10.MethodsReward ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -41,6 +49,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -102,6 +113,9 @@ func MakeState(store adt.Store, av actorstypes.Version, currRealizedPower abi.St case actorstypes.Version9: return make9(store, currRealizedPower) + case actorstypes.Version10: + return make10(store, currRealizedPower) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/reward/v0.go b/chain/actors/builtin/reward/v0.go index 12bdee054..646ab3a9a 100644 --- a/chain/actors/builtin/reward/v0.go +++ b/chain/actors/builtin/reward/v0.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" - reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" - smoothing0 "github.com/filecoin-project/specs-actors/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" + reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" + smoothing0 "github.com/filecoin-project/specs-actors/actors/util/smoothing" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/reward/v10.go b/chain/actors/builtin/reward/v10.go new file mode 100644 index 000000000..41d859c39 --- /dev/null +++ b/chain/actors/builtin/reward/v10.go @@ -0,0 +1,98 @@ +package reward + +import ( + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward" + smoothing10 "github.com/filecoin-project/go-state-types/builtin/v10/util/smoothing" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, currRealizedPower abi.StoragePower) (State, error) { + out := state10{store: store} + out.State = *reward10.ConstructState(currRealizedPower) + return &out, nil +} + +type state10 struct { + reward10.State + store adt.Store +} + +func (s *state10) ThisEpochReward() (abi.TokenAmount, error) { + return s.State.ThisEpochReward, nil +} + +func (s *state10) ThisEpochRewardSmoothed() (builtin.FilterEstimate, error) { + + return builtin.FilterEstimate{ + PositionEstimate: s.State.ThisEpochRewardSmoothed.PositionEstimate, + VelocityEstimate: s.State.ThisEpochRewardSmoothed.VelocityEstimate, + }, nil + +} + +func (s *state10) ThisEpochBaselinePower() (abi.StoragePower, error) { + return s.State.ThisEpochBaselinePower, nil +} + +func (s *state10) TotalStoragePowerReward() (abi.TokenAmount, error) { + return s.State.TotalStoragePowerReward, nil +} + +func (s *state10) EffectiveBaselinePower() (abi.StoragePower, error) { + return s.State.EffectiveBaselinePower, nil +} + +func (s *state10) EffectiveNetworkTime() (abi.ChainEpoch, error) { + return s.State.EffectiveNetworkTime, nil +} + +func (s *state10) CumsumBaseline() (reward10.Spacetime, error) { + return s.State.CumsumBaseline, nil +} + +func (s *state10) CumsumRealized() (reward10.Spacetime, error) { + return s.State.CumsumRealized, nil +} + +func (s *state10) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { + return miner10.InitialPledgeForPower( + qaPower, + s.State.ThisEpochBaselinePower, + s.State.ThisEpochRewardSmoothed, + smoothing10.FilterEstimate{ + PositionEstimate: networkQAPower.PositionEstimate, + VelocityEstimate: networkQAPower.VelocityEstimate, + }, + circSupply, + ), nil +} + +func (s *state10) PreCommitDepositForPower(networkQAPower builtin.FilterEstimate, sectorWeight abi.StoragePower) (abi.TokenAmount, error) { + return miner10.PreCommitDepositForPower(s.State.ThisEpochRewardSmoothed, + smoothing10.FilterEstimate{ + PositionEstimate: networkQAPower.PositionEstimate, + VelocityEstimate: networkQAPower.VelocityEstimate, + }, + sectorWeight), nil +} + +func (s *state10) GetState() interface{} { + return &s.State +} diff --git a/chain/actors/builtin/reward/v2.go b/chain/actors/builtin/reward/v2.go index ed2481635..08e9a7bc3 100644 --- a/chain/actors/builtin/reward/v2.go +++ b/chain/actors/builtin/reward/v2.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" - reward2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/reward" - smoothing2 "github.com/filecoin-project/specs-actors/v2/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" + reward2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/reward" + smoothing2 "github.com/filecoin-project/specs-actors/v2/actors/util/smoothing" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/reward/v3.go b/chain/actors/builtin/reward/v3.go index d9f4bf369..fd9fa56e2 100644 --- a/chain/actors/builtin/reward/v3.go +++ b/chain/actors/builtin/reward/v3.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" - reward3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/reward" - smoothing3 "github.com/filecoin-project/specs-actors/v3/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" + reward3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/reward" + smoothing3 "github.com/filecoin-project/specs-actors/v3/actors/util/smoothing" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/reward/v4.go b/chain/actors/builtin/reward/v4.go index 160c72ce7..310ca04e8 100644 --- a/chain/actors/builtin/reward/v4.go +++ b/chain/actors/builtin/reward/v4.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" - reward4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/reward" - smoothing4 "github.com/filecoin-project/specs-actors/v4/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" + reward4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/reward" + smoothing4 "github.com/filecoin-project/specs-actors/v4/actors/util/smoothing" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/reward/v5.go b/chain/actors/builtin/reward/v5.go index 838ec8f21..7200f7d11 100644 --- a/chain/actors/builtin/reward/v5.go +++ b/chain/actors/builtin/reward/v5.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" - reward5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/reward" - smoothing5 "github.com/filecoin-project/specs-actors/v5/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" + reward5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/reward" + smoothing5 "github.com/filecoin-project/specs-actors/v5/actors/util/smoothing" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/reward/v6.go b/chain/actors/builtin/reward/v6.go index e056b22f6..010a3a870 100644 --- a/chain/actors/builtin/reward/v6.go +++ b/chain/actors/builtin/reward/v6.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" - reward6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/reward" - smoothing6 "github.com/filecoin-project/specs-actors/v6/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" + reward6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/reward" + smoothing6 "github.com/filecoin-project/specs-actors/v6/actors/util/smoothing" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/reward/v7.go b/chain/actors/builtin/reward/v7.go index 5fedaa43c..368bb3abd 100644 --- a/chain/actors/builtin/reward/v7.go +++ b/chain/actors/builtin/reward/v7.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" - reward7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/reward" - smoothing7 "github.com/filecoin-project/specs-actors/v7/actors/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" + reward7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/reward" + smoothing7 "github.com/filecoin-project/specs-actors/v7/actors/util/smoothing" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/reward/v8.go b/chain/actors/builtin/reward/v8.go index ecc5a94ba..3d49063df 100644 --- a/chain/actors/builtin/reward/v8.go +++ b/chain/actors/builtin/reward/v8.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" - reward8 "github.com/filecoin-project/go-state-types/builtin/v8/reward" - smoothing8 "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" + reward8 "github.com/filecoin-project/go-state-types/builtin/v8/reward" + smoothing8 "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/reward/v9.go b/chain/actors/builtin/reward/v9.go index 04da532d2..6dbfdd2e6 100644 --- a/chain/actors/builtin/reward/v9.go +++ b/chain/actors/builtin/reward/v9.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/ipfs/go-cid" - "github.com/filecoin-project/go-state-types/abi" - miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" - reward9 "github.com/filecoin-project/go-state-types/builtin/v9/reward" - smoothing9 "github.com/filecoin-project/go-state-types/builtin/v9/util/smoothing" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" + + miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" + reward9 "github.com/filecoin-project/go-state-types/builtin/v9/reward" + smoothing9 "github.com/filecoin-project/go-state-types/builtin/v9/util/smoothing" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/system/system.go b/chain/actors/builtin/system/system.go index 4c99d90eb..a77830e8c 100644 --- a/chain/actors/builtin/system/system.go +++ b/chain/actors/builtin/system/system.go @@ -1,26 +1,33 @@ package system import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" + "github.com/ipfs/go-cid" + + "golang.org/x/xerrors" + + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin9.SystemActorAddr + Address = builtin10.SystemActorAddr ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -37,6 +44,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -98,6 +108,9 @@ func MakeState(store adt.Store, av actorstypes.Version, builtinActors cid.Cid) ( case actorstypes.Version9: return make9(store, builtinActors) + case actorstypes.Version10: + return make10(store, builtinActors) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/builtin/system/v0.go b/chain/actors/builtin/system/v0.go index 78e578896..cbf9ace98 100644 --- a/chain/actors/builtin/system/v0.go +++ b/chain/actors/builtin/system/v0.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system0 "github.com/filecoin-project/specs-actors/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system0 "github.com/filecoin-project/specs-actors/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/system/v10.go b/chain/actors/builtin/system/v10.go new file mode 100644 index 000000000..e1d9cdf32 --- /dev/null +++ b/chain/actors/builtin/system/v10.go @@ -0,0 +1,50 @@ +package system + +import ( + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors/adt" + + system10 "github.com/filecoin-project/go-state-types/builtin/v10/system" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, builtinActors cid.Cid) (State, error) { + out := state10{store: store} + out.State = system10.State{ + BuiltinActors: builtinActors, + } + return &out, nil +} + +type state10 struct { + system10.State + store adt.Store +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +func (s *state10) GetBuiltinActors() cid.Cid { + + return s.State.BuiltinActors + +} + +func (s *state10) SetBuiltinActors(c cid.Cid) error { + + s.State.BuiltinActors = c + return nil + +} diff --git a/chain/actors/builtin/system/v2.go b/chain/actors/builtin/system/v2.go index 21dfa5c78..2372f4a98 100644 --- a/chain/actors/builtin/system/v2.go +++ b/chain/actors/builtin/system/v2.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/system/v3.go b/chain/actors/builtin/system/v3.go index ccf8aa2c3..ece3db802 100644 --- a/chain/actors/builtin/system/v3.go +++ b/chain/actors/builtin/system/v3.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/system/v4.go b/chain/actors/builtin/system/v4.go index bcb120be2..9c185659a 100644 --- a/chain/actors/builtin/system/v4.go +++ b/chain/actors/builtin/system/v4.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/system/v5.go b/chain/actors/builtin/system/v5.go index 182883398..45423cc0c 100644 --- a/chain/actors/builtin/system/v5.go +++ b/chain/actors/builtin/system/v5.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/system/v6.go b/chain/actors/builtin/system/v6.go index 9860ce373..1eb1edc87 100644 --- a/chain/actors/builtin/system/v6.go +++ b/chain/actors/builtin/system/v6.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/system/v7.go b/chain/actors/builtin/system/v7.go index 5984b0b4d..ed64d61d6 100644 --- a/chain/actors/builtin/system/v7.go +++ b/chain/actors/builtin/system/v7.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - - system7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/system" "github.com/filecoin-project/lotus/chain/actors/adt" + + system7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/system" + "golang.org/x/xerrors" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/system/v8.go b/chain/actors/builtin/system/v8.go index 574df9c44..72f06c580 100644 --- a/chain/actors/builtin/system/v8.go +++ b/chain/actors/builtin/system/v8.go @@ -3,9 +3,9 @@ package system import ( "github.com/ipfs/go-cid" - system8 "github.com/filecoin-project/go-state-types/builtin/v8/system" - "github.com/filecoin-project/lotus/chain/actors/adt" + + system8 "github.com/filecoin-project/go-state-types/builtin/v8/system" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/system/v9.go b/chain/actors/builtin/system/v9.go index 40555a921..8614d4676 100644 --- a/chain/actors/builtin/system/v9.go +++ b/chain/actors/builtin/system/v9.go @@ -3,9 +3,9 @@ package system import ( "github.com/ipfs/go-cid" - system9 "github.com/filecoin-project/go-state-types/builtin/v9/system" - "github.com/filecoin-project/lotus/chain/actors/adt" + + system9 "github.com/filecoin-project/go-state-types/builtin/v9/system" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/verifreg/v0.go b/chain/actors/builtin/verifreg/v0.go index debe32125..eec86eeff 100644 --- a/chain/actors/builtin/verifreg/v0.go +++ b/chain/actors/builtin/verifreg/v0.go @@ -1,17 +1,18 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" - adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" + adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/verifreg/v10.go b/chain/actors/builtin/verifreg/v10.go new file mode 100644 index 000000000..f2b393927 --- /dev/null +++ b/chain/actors/builtin/verifreg/v10.go @@ -0,0 +1,118 @@ +package verifreg + +import ( + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" + + "github.com/filecoin-project/go-state-types/big" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" +) + +var _ State = (*state10)(nil) + +func load10(store adt.Store, root cid.Cid) (State, error) { + out := state10{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make10(store adt.Store, rootKeyAddress address.Address) (State, error) { + out := state10{store: store} + + s, err := verifreg10.ConstructState(store, rootKeyAddress) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state10 struct { + verifreg10.State + store adt.Store +} + +func (s *state10) RootKey() (address.Address, error) { + return s.State.RootKey, nil +} + +func (s *state10) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { + + return false, big.Zero(), xerrors.Errorf("unsupported in actors v10") + +} + +func (s *state10) VerifierDataCap(addr address.Address) (bool, abi.StoragePower, error) { + return getDataCap(s.store, actors.Version10, s.verifiers, addr) +} + +func (s *state10) RemoveDataCapProposalID(verifier address.Address, client address.Address) (bool, uint64, error) { + return getRemoveDataCapProposalID(s.store, actors.Version10, s.removeDataCapProposalIDs, verifier, client) +} + +func (s *state10) ForEachVerifier(cb func(addr address.Address, dcap abi.StoragePower) error) error { + return forEachCap(s.store, actors.Version10, s.verifiers, cb) +} + +func (s *state10) ForEachClient(cb func(addr address.Address, dcap abi.StoragePower) error) error { + + return xerrors.Errorf("unsupported in actors v10") + +} + +func (s *state10) verifiedClients() (adt.Map, error) { + + return nil, xerrors.Errorf("unsupported in actors v10") + +} + +func (s *state10) verifiers() (adt.Map, error) { + return adt10.AsMap(s.store, s.Verifiers, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) removeDataCapProposalIDs() (adt.Map, error) { + return adt10.AsMap(s.store, s.RemoveDataCapProposalIDs, builtin10.DefaultHamtBitwidth) +} + +func (s *state10) GetState() interface{} { + return &s.State +} + +func (s *state10) GetAllocation(clientIdAddr address.Address, allocationId verifreg9.AllocationId) (*verifreg9.Allocation, bool, error) { + + return s.FindAllocation(s.store, clientIdAddr, allocationId) + +} + +func (s *state10) GetAllocations(clientIdAddr address.Address) (map[verifreg9.AllocationId]verifreg9.Allocation, error) { + + return s.LoadAllocationsToMap(s.store, clientIdAddr) + +} + +func (s *state10) GetClaim(providerIdAddr address.Address, claimId verifreg9.ClaimId) (*verifreg9.Claim, bool, error) { + + return s.FindClaim(s.store, providerIdAddr, claimId) + +} + +func (s *state10) GetClaims(providerIdAddr address.Address) (map[verifreg9.ClaimId]verifreg9.Claim, error) { + + return s.LoadClaimsToMap(s.store, providerIdAddr) + +} diff --git a/chain/actors/builtin/verifreg/v2.go b/chain/actors/builtin/verifreg/v2.go index a6f07eea2..e7a4bab4a 100644 --- a/chain/actors/builtin/verifreg/v2.go +++ b/chain/actors/builtin/verifreg/v2.go @@ -1,17 +1,18 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" - adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" + adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/verifreg/v3.go b/chain/actors/builtin/verifreg/v3.go index 11e56d8ae..443ce071d 100644 --- a/chain/actors/builtin/verifreg/v3.go +++ b/chain/actors/builtin/verifreg/v3.go @@ -1,18 +1,20 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" - adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + + verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" + adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/verifreg/v4.go b/chain/actors/builtin/verifreg/v4.go index da51e78b8..e2753a463 100644 --- a/chain/actors/builtin/verifreg/v4.go +++ b/chain/actors/builtin/verifreg/v4.go @@ -1,18 +1,20 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" - adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + + verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" + adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/verifreg/v5.go b/chain/actors/builtin/verifreg/v5.go index 08f8ad706..9b5ea0c6e 100644 --- a/chain/actors/builtin/verifreg/v5.go +++ b/chain/actors/builtin/verifreg/v5.go @@ -1,18 +1,20 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" - adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + + verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" + adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/verifreg/v6.go b/chain/actors/builtin/verifreg/v6.go index 8e6fc3603..806ebce82 100644 --- a/chain/actors/builtin/verifreg/v6.go +++ b/chain/actors/builtin/verifreg/v6.go @@ -1,18 +1,20 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" - adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + + verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" + adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/verifreg/v7.go b/chain/actors/builtin/verifreg/v7.go index c3b49a305..6ba0f4e04 100644 --- a/chain/actors/builtin/verifreg/v7.go +++ b/chain/actors/builtin/verifreg/v7.go @@ -1,18 +1,20 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" - adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" + adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/verifreg/v8.go b/chain/actors/builtin/verifreg/v8.go index 36d219fa0..e471f5741 100644 --- a/chain/actors/builtin/verifreg/v8.go +++ b/chain/actors/builtin/verifreg/v8.go @@ -1,18 +1,19 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - builtin8 "github.com/filecoin-project/go-state-types/builtin" - adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" - verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/ipfs/go-cid" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + + builtin8 "github.com/filecoin-project/go-state-types/builtin" + adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/verifreg/v9.go b/chain/actors/builtin/verifreg/v9.go index 5c84c7041..482f066ed 100644 --- a/chain/actors/builtin/verifreg/v9.go +++ b/chain/actors/builtin/verifreg/v9.go @@ -1,18 +1,19 @@ package verifreg import ( - "github.com/ipfs/go-cid" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/big" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" + builtin9 "github.com/filecoin-project/go-state-types/builtin" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/go-state-types/big" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/verifreg/verifreg.go b/chain/actors/builtin/verifreg/verifreg.go index 300307dbb..407799b2b 100644 --- a/chain/actors/builtin/verifreg/verifreg.go +++ b/chain/actors/builtin/verifreg/verifreg.go @@ -1,30 +1,39 @@ package verifreg import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - builtin9 "github.com/filecoin-project/go-state-types/builtin" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/go-state-types/cbor" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" ) var ( - Address = builtin9.VerifiedRegistryActorAddr - Methods = builtin9.MethodsVerifiedRegistry + Address = builtin10.VerifiedRegistryActorAddr + Methods = builtin10.MethodsVerifiedRegistry ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -41,6 +50,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version9: return load9(store, act.Head) + case actorstypes.Version10: + return load10(store, act.Head) + } } @@ -102,6 +114,9 @@ func MakeState(store adt.Store, av actorstypes.Version, rootKeyAddress address.A case actorstypes.Version9: return make9(store, rootKeyAddress) + case actorstypes.Version10: + return make10(store, rootKeyAddress) + } return nil, xerrors.Errorf("unknown actor version %d", av) } diff --git a/chain/actors/policy/policy.go b/chain/actors/policy/policy.go index eaeb326c7..00e9fe066 100644 --- a/chain/actors/policy/policy.go +++ b/chain/actors/policy/policy.go @@ -1,56 +1,79 @@ package policy import ( + actorstypes "github.com/filecoin-project/go-state-types/actors" + + "github.com/filecoin-project/go-state-types/big" "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/go-state-types/big" - builtin8 "github.com/filecoin-project/go-state-types/builtin" - builtin9 "github.com/filecoin-project/go-state-types/builtin" - market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" - miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" - verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" - market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" - miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" - paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/network" + market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" - power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" + + power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" + + builtin8 "github.com/filecoin-project/go-state-types/builtin" + market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" + miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" + verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" + + builtin9 "github.com/filecoin-project/go-state-types/builtin" + market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" + miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + + builtin10 "github.com/filecoin-project/go-state-types/builtin" + market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" + + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" ) const ( - ChainFinality = miner9.ChainFinality + ChainFinality = miner10.ChainFinality SealRandomnessLookback = ChainFinality - PaychSettleDelay = paych9.SettleDelay - MaxPreCommitRandomnessLookback = builtin9.EpochsInDay + SealRandomnessLookback + PaychSettleDelay = paych10.SettleDelay + MaxPreCommitRandomnessLookback = builtin10.EpochsInDay + SealRandomnessLookback ) // SetSupportedProofTypes sets supported proof types, across all actor versions. @@ -159,11 +182,13 @@ func SetPreCommitChallengeDelay(delay abi.ChainEpoch) { miner9.PreCommitChallengeDelay = delay + miner10.PreCommitChallengeDelay = delay + } // TODO: this function shouldn't really exist. Instead, the API should expose the precommit delay. func GetPreCommitChallengeDelay() abi.ChainEpoch { - return miner9.PreCommitChallengeDelay + return miner10.PreCommitChallengeDelay } // SetConsensusMinerMinPower sets the minimum power of an individual miner must @@ -205,6 +230,10 @@ func SetConsensusMinerMinPower(p abi.StoragePower) { policy.ConsensusMinerMinPower = p } + for _, policy := range builtin10.PoStProofPolicies { + policy.ConsensusMinerMinPower = p + } + } // SetMinVerifiedDealSize sets the minimum size of a verified deal. This should @@ -229,6 +258,8 @@ func SetMinVerifiedDealSize(size abi.StoragePower) { verifreg9.MinVerifiedDealSize = size + verifreg10.MinVerifiedDealSize = size + } func GetMaxProveCommitDuration(ver actorstypes.Version, t abi.RegisteredSealProof) (abi.ChainEpoch, error) { @@ -270,6 +301,10 @@ func GetMaxProveCommitDuration(ver actorstypes.Version, t abi.RegisteredSealProo return miner9.MaxProveCommitDuration[t], nil + case actorstypes.Version10: + + return miner10.MaxProveCommitDuration[t], nil + default: return 0, xerrors.Errorf("unsupported actors version") } @@ -320,6 +355,11 @@ func SetProviderCollateralSupplyTarget(num, denom big.Int) { Denominator: denom, } + market10.ProviderCollateralSupplyTarget = builtin10.BigFrac{ + Numerator: num, + Denominator: denom, + } + } func DealProviderCollateralBounds( @@ -378,13 +418,18 @@ func DealProviderCollateralBounds( min, max := market9.DealProviderCollateralBounds(size, verified, rawBytePower, qaPower, baselinePower, circulatingFil) return min, max, nil + case actorstypes.Version10: + + min, max := market10.DealProviderCollateralBounds(size, verified, rawBytePower, qaPower, baselinePower, circulatingFil) + return min, max, nil + default: return big.Zero(), big.Zero(), xerrors.Errorf("unsupported actors version") } } func DealDurationBounds(pieceSize abi.PaddedPieceSize) (min, max abi.ChainEpoch) { - return market9.DealDurationBounds(pieceSize) + return market10.DealDurationBounds(pieceSize) } // Sets the challenge window and scales the proving period to match (such that @@ -446,6 +491,13 @@ func SetWPoStChallengeWindow(period abi.ChainEpoch) { // scale it if we're scaling the challenge period. miner9.WPoStDisputeWindow = period * 30 + miner10.WPoStChallengeWindow = period + miner10.WPoStProvingPeriod = period * abi.ChainEpoch(miner10.WPoStPeriodDeadlines) + + // by default, this is 2x finality which is 30 periods. + // scale it if we're scaling the challenge period. + miner10.WPoStDisputeWindow = period * 30 + } func GetWinningPoStSectorSetLookback(nwVer network.Version) abi.ChainEpoch { @@ -458,15 +510,15 @@ func GetWinningPoStSectorSetLookback(nwVer network.Version) abi.ChainEpoch { } func GetMaxSectorExpirationExtension() abi.ChainEpoch { - return miner9.MaxSectorExpirationExtension + return miner10.MaxSectorExpirationExtension } func GetMinSectorExpiration() abi.ChainEpoch { - return miner9.MinSectorExpiration + return miner10.MinSectorExpiration } func GetMaxPoStPartitions(nv network.Version, p abi.RegisteredPoStProof) (int, error) { - sectorsPerPart, err := builtin9.PoStProofWindowPoStPartitionSectors(p) + sectorsPerPart, err := builtin10.PoStProofWindowPoStPartitionSectors(p) if err != nil { return 0, err } @@ -486,7 +538,7 @@ func GetSectorMaxLifetime(proof abi.RegisteredSealProof, nwVer network.Version) return builtin4.SealProofPoliciesV0[proof].SectorMaxLifetime } - return builtin9.SealProofPoliciesV11[proof].SectorMaxLifetime + return builtin10.SealProofPoliciesV11[proof].SectorMaxLifetime } func GetAddressedSectorsMax(nwVer network.Version) (int, error) { @@ -523,6 +575,9 @@ func GetAddressedSectorsMax(nwVer network.Version) (int, error) { case actorstypes.Version9: return miner9.AddressedSectorsMax, nil + case actorstypes.Version10: + return miner10.AddressedSectorsMax, nil + default: return 0, xerrors.Errorf("unsupported network version") } @@ -572,6 +627,10 @@ func GetDeclarationsMax(nwVer network.Version) (int, error) { return miner9.DeclarationsMax, nil + case actorstypes.Version10: + + return miner10.DeclarationsMax, nil + default: return 0, xerrors.Errorf("unsupported network version") } @@ -620,6 +679,10 @@ func AggregateProveCommitNetworkFee(nwVer network.Version, aggregateSize int, ba return miner9.AggregateProveCommitNetworkFee(aggregateSize, baseFee), nil + case actorstypes.Version10: + + return miner10.AggregateProveCommitNetworkFee(aggregateSize, baseFee), nil + default: return big.Zero(), xerrors.Errorf("unsupported network version") } @@ -668,6 +731,10 @@ func AggregatePreCommitNetworkFee(nwVer network.Version, aggregateSize int, base return miner9.AggregatePreCommitNetworkFee(aggregateSize, baseFee), nil + case actorstypes.Version10: + + return miner10.AggregatePreCommitNetworkFee(aggregateSize, baseFee), nil + default: return big.Zero(), xerrors.Errorf("unsupported network version") } From 5e4f24ec60f8d82e1e91afa41b16e4a34e19aaaf Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 8 Nov 2022 07:35:51 +0200 Subject: [PATCH 08/45] add NV18 actor keys --- chain/actors/manifest.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/chain/actors/manifest.go b/chain/actors/manifest.go index fdf274748..225c8b990 100644 --- a/chain/actors/manifest.go +++ b/chain/actors/manifest.go @@ -32,6 +32,9 @@ const ( SystemKey = "system" VerifregKey = "verifiedregistry" DatacapKey = "datacap" + EvmKey = "evm" + EamKey = "eam" + EmbryoKey = "embryo" ) func GetBuiltinActorsKeys(av actorstypes.Version) []string { @@ -51,6 +54,9 @@ func GetBuiltinActorsKeys(av actorstypes.Version) []string { if av >= 9 { keys = append(keys, DatacapKey) } + if av >= 10 { + keys = append(keys, EvmKey, EamKey, EmbryoKey) + } return keys } From 8a7fdb04b41ecf991b3cd1abf33d41ab02099edc Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 8 Nov 2022 07:40:54 +0200 Subject: [PATCH 09/45] update inlinegen-data --- gen/inlinegen-data.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gen/inlinegen-data.json b/gen/inlinegen-data.json index e767f990a..8384e749d 100644 --- a/gen/inlinegen-data.json +++ b/gen/inlinegen-data.json @@ -1,7 +1,7 @@ { - "actorVersions": [0, 2, 3, 4, 5, 6, 7, 8, 9], - "latestActorsVersion": 9, + "actorVersions": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], + "latestActorsVersion": 10, - "networkVersions": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], - "latestNetworkVersion": 17 + "networkVersions": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], + "latestNetworkVersion": 18 } From 6aee53fc8b988639238362fd033c744f931e1c71 Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 8 Nov 2022 07:53:13 +0200 Subject: [PATCH 10/45] make gen --- build/openrpc/full.json.gz | Bin 29041 -> 29039 bytes build/openrpc/gateway.json.gz | Bin 5108 -> 5108 bytes build/openrpc/miner.json.gz | Bin 16050 -> 16049 bytes build/params_shared_vals.go | 2 +- chain/actors/builtin/account/account.go | 18 ++-- chain/actors/builtin/account/v0.go | 6 +- chain/actors/builtin/account/v10.go | 6 +- chain/actors/builtin/account/v2.go | 6 +- chain/actors/builtin/account/v3.go | 6 +- chain/actors/builtin/account/v4.go | 6 +- chain/actors/builtin/account/v5.go | 6 +- chain/actors/builtin/account/v6.go | 6 +- chain/actors/builtin/account/v7.go | 6 +- chain/actors/builtin/account/v8.go | 6 +- chain/actors/builtin/account/v9.go | 6 +- chain/actors/builtin/builtin.go | 30 +++---- chain/actors/builtin/cron/cron.go | 28 +++--- chain/actors/builtin/cron/v0.go | 4 +- chain/actors/builtin/cron/v10.go | 4 +- chain/actors/builtin/cron/v2.go | 4 +- chain/actors/builtin/cron/v3.go | 4 +- chain/actors/builtin/cron/v4.go | 4 +- chain/actors/builtin/cron/v5.go | 4 +- chain/actors/builtin/cron/v6.go | 4 +- chain/actors/builtin/cron/v7.go | 4 +- chain/actors/builtin/cron/v8.go | 4 +- chain/actors/builtin/cron/v9.go | 4 +- chain/actors/builtin/datacap/v10.go | 8 +- chain/actors/builtin/datacap/v9.go | 8 +- chain/actors/builtin/init/init.go | 30 +++---- chain/actors/builtin/init/v0.go | 10 +-- chain/actors/builtin/init/v10.go | 10 +-- chain/actors/builtin/init/v2.go | 10 +-- chain/actors/builtin/init/v3.go | 11 ++- chain/actors/builtin/init/v4.go | 11 ++- chain/actors/builtin/init/v5.go | 11 ++- chain/actors/builtin/init/v6.go | 11 ++- chain/actors/builtin/init/v7.go | 11 ++- chain/actors/builtin/init/v8.go | 10 +-- chain/actors/builtin/init/v9.go | 10 +-- chain/actors/builtin/market/market.go | 19 ++-- chain/actors/builtin/market/v0.go | 10 +-- chain/actors/builtin/market/v10.go | 14 ++- chain/actors/builtin/market/v2.go | 10 +-- chain/actors/builtin/market/v3.go | 10 +-- chain/actors/builtin/market/v4.go | 10 +-- chain/actors/builtin/market/v5.go | 10 +-- chain/actors/builtin/market/v6.go | 11 ++- chain/actors/builtin/market/v7.go | 11 ++- chain/actors/builtin/market/v8.go | 13 ++- chain/actors/builtin/market/v9.go | 14 ++- chain/actors/builtin/miner/miner.go | 31 +++---- chain/actors/builtin/miner/v0.go | 15 ++-- chain/actors/builtin/miner/v10.go | 14 +-- chain/actors/builtin/miner/v2.go | 12 +-- chain/actors/builtin/miner/v3.go | 13 ++- chain/actors/builtin/miner/v4.go | 13 ++- chain/actors/builtin/miner/v5.go | 13 ++- chain/actors/builtin/miner/v6.go | 13 ++- chain/actors/builtin/miner/v7.go | 13 ++- chain/actors/builtin/miner/v8.go | 14 +-- chain/actors/builtin/miner/v9.go | 14 +-- chain/actors/builtin/multisig/message0.go | 3 +- chain/actors/builtin/multisig/message10.go | 3 +- chain/actors/builtin/multisig/message2.go | 3 +- chain/actors/builtin/multisig/message3.go | 3 +- chain/actors/builtin/multisig/message4.go | 3 +- chain/actors/builtin/multisig/message5.go | 3 +- chain/actors/builtin/multisig/message6.go | 3 +- chain/actors/builtin/multisig/message7.go | 3 +- chain/actors/builtin/multisig/message8.go | 3 +- chain/actors/builtin/multisig/message9.go | 3 +- chain/actors/builtin/multisig/multisig.go | 29 +++--- chain/actors/builtin/multisig/v0.go | 8 +- chain/actors/builtin/multisig/v10.go | 8 +- chain/actors/builtin/multisig/v2.go | 8 +- chain/actors/builtin/multisig/v3.go | 9 +- chain/actors/builtin/multisig/v4.go | 9 +- chain/actors/builtin/multisig/v5.go | 9 +- chain/actors/builtin/multisig/v6.go | 9 +- chain/actors/builtin/multisig/v7.go | 9 +- chain/actors/builtin/multisig/v8.go | 8 +- chain/actors/builtin/multisig/v9.go | 8 +- chain/actors/builtin/paych/message0.go | 2 - chain/actors/builtin/paych/message10.go | 4 +- chain/actors/builtin/paych/message2.go | 2 - chain/actors/builtin/paych/message3.go | 2 - chain/actors/builtin/paych/message4.go | 2 - chain/actors/builtin/paych/message5.go | 2 - chain/actors/builtin/paych/message6.go | 2 - chain/actors/builtin/paych/message7.go | 2 - chain/actors/builtin/paych/message8.go | 4 +- chain/actors/builtin/paych/message9.go | 4 +- chain/actors/builtin/paych/paych.go | 16 +--- chain/actors/builtin/paych/v0.go | 5 +- chain/actors/builtin/paych/v10.go | 5 +- chain/actors/builtin/paych/v2.go | 5 +- chain/actors/builtin/paych/v3.go | 5 +- chain/actors/builtin/paych/v4.go | 5 +- chain/actors/builtin/paych/v5.go | 5 +- chain/actors/builtin/paych/v6.go | 5 +- chain/actors/builtin/paych/v7.go | 5 +- chain/actors/builtin/paych/v8.go | 5 +- chain/actors/builtin/paych/v9.go | 5 +- chain/actors/builtin/power/power.go | 32 +++---- chain/actors/builtin/power/v0.go | 10 +-- chain/actors/builtin/power/v10.go | 10 +-- chain/actors/builtin/power/v2.go | 10 +-- chain/actors/builtin/power/v3.go | 11 ++- chain/actors/builtin/power/v4.go | 11 ++- chain/actors/builtin/power/v5.go | 11 ++- chain/actors/builtin/power/v6.go | 11 ++- chain/actors/builtin/power/v7.go | 11 ++- chain/actors/builtin/power/v8.go | 10 +-- chain/actors/builtin/power/v9.go | 10 +-- chain/actors/builtin/registry.go | 38 ++++---- chain/actors/builtin/reward/reward.go | 18 ++-- chain/actors/builtin/reward/v0.go | 8 +- chain/actors/builtin/reward/v10.go | 8 +- chain/actors/builtin/reward/v2.go | 8 +- chain/actors/builtin/reward/v3.go | 8 +- chain/actors/builtin/reward/v4.go | 8 +- chain/actors/builtin/reward/v5.go | 8 +- chain/actors/builtin/reward/v6.go | 8 +- chain/actors/builtin/reward/v7.go | 8 +- chain/actors/builtin/reward/v8.go | 8 +- chain/actors/builtin/reward/v9.go | 8 +- chain/actors/builtin/system/system.go | 31 +++---- chain/actors/builtin/system/v0.go | 6 +- chain/actors/builtin/system/v10.go | 4 +- chain/actors/builtin/system/v2.go | 6 +- chain/actors/builtin/system/v3.go | 6 +- chain/actors/builtin/system/v4.go | 6 +- chain/actors/builtin/system/v5.go | 6 +- chain/actors/builtin/system/v6.go | 6 +- chain/actors/builtin/system/v7.go | 6 +- chain/actors/builtin/system/v8.go | 4 +- chain/actors/builtin/system/v9.go | 4 +- chain/actors/builtin/verifreg/v0.go | 11 ++- chain/actors/builtin/verifreg/v10.go | 14 ++- chain/actors/builtin/verifreg/v2.go | 11 ++- chain/actors/builtin/verifreg/v3.go | 12 ++- chain/actors/builtin/verifreg/v4.go | 12 ++- chain/actors/builtin/verifreg/v5.go | 12 ++- chain/actors/builtin/verifreg/v6.go | 12 ++- chain/actors/builtin/verifreg/v7.go | 12 ++- chain/actors/builtin/verifreg/v8.go | 11 ++- chain/actors/builtin/verifreg/v9.go | 11 ++- chain/actors/builtin/verifreg/verifreg.go | 15 +--- chain/actors/policy/policy.go | 93 ++++++++------------ chain/state/statetree.go | 2 +- documentation/en/api-v0-methods-miner.md | 2 +- documentation/en/api-v0-methods.md | 6 +- documentation/en/api-v1-unstable-methods.md | 6 +- itests/kit/ensemble_opts_nv.go | 6 +- 155 files changed, 633 insertions(+), 835 deletions(-) diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 978fbb730b6a85804d2e4b1e4c136ce1ef451a92..21f22e3f16cc85ca238fd9d66e6fa84a0d15f574 100644 GIT binary patch delta 3042 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 kEn3?YtoMHQS&>~y@3Y^T>lnH;{|Igl)^|p;` z;lD!UW!l0CvNhB8t!bNSF=y+ z@sN^u7M|rhH0}`kv^Pim&5_bJsmN9@U*ThJoZ;kJRdyKte1?;+n7AKLXN-vK<2jAS z?$6G|*_RiHBX*BIVm^PIF$+c1Qp;ykx0U(DRRxTQiAOIUf>?h>%~+0$amXQCbl-TOBe@Jd(~4Tdw*l*3g~1r{)el&{iwgZm-;Q?YFoTy05D{!)%K=kD0uB>o$=#5Q(pI`FdIf*m;=EsEyYl(I;tG$q zzrUszzoByXZBw5VD-kZx2y?*}7nGWfxq|2|5Npvnr6`X*83GO$wfDH} zU{SMHSNxjQ+4F=Q0_>RIIAD}2%;?_ce~e}-C1tbe%4joX(!qXHuN1TGSqD}idsO?6 zt;zCZ0X84&t-XKV+S_2!+FN_wNY;a&A@>U!3+~|a@-wGkeRwW zL7Lr53ydJUico~0J=6KaRND*y7P^B82QwmYlIs})8N>I8J8(ac#9)Lp;Ej^5StqQB zl3N@j5+M+yskqzg;e>iPp&m|X!{LN_WSq@F#wi%RsT_LMXR4c>o1IpNs{9HY zT;cB2%2ee5-=?h`^U2ji7~4*V1}}AB{a3p4Aw!T;(w%#$x5zfEy_z9Ve75P=9{!(P zyP9BYaYKK_%~2hEm}Rpm#iZPr&RgK9;ok8(UFFdva1_02krNRg0t@T&2XJ0a)}|caPyF{x(a>S+M3yM@*+j zlO%cK9DZB}%CsQSSIC0x2{U%7Inl_|hDa9-ovnYTnVapDWmZNdx9t1-Qy-2wWdsE`sni5+lIZo;da2F)fjr&97h8kHRHC}=juhQR_9X`}W-9&So zCDjWJJ)ax;j%G|digi@nL-*_6!IGs~SLx@TQ&>+!`!HLg4(UEqQq)5E zOkya|uD}yiHAxfFS}iX$c7mxcUh|K+rr{ zfQTU#HPWx(I#%6OF|0z8Fl7?)t=uCeGEa*l_If{0Om zY(aH?zd{qd$8^S%MLxx5Wf%9h?bE~kx{B)beXX`hSB}f3WV+j`KC#(s+8L>f&sOf# zp@KfbF|_puI#3JX2;x2_+s9;|jpR6}t9xFM=-P0=l|lv!5+8XI{XxbQc#M*dO%(@+ zHO0C=V3Htl3KK}8_Gucq(Vox;FTo2FoWi3oL^KJ59Qg*Q6_;KsoR#AG>*YayDQaF&?>{46xxLjD-GR0*kjnzLIR@m%tRbzh;x}%@GLfX1x;p>_t zf4xmUJ;;q0$R>KQzZGb5l>S7EWqoa2`kmzR78bmWd(6zPf|xRV4+R2aqyQouhFU>E zJb8A?ztXy_wCrb}q_iv3i!tG5Pk{x-B+$AoP5OUUP|4{xsh__ol^p2SlYyDnRJEQm2m&pnWSr1;4 zZf%5d$hl6_U+Z};y@h2AXx73|gcO(=1gTwNgBwvYi`6fV?lwjLYA^??^PEA->Y6`$ z-PfbwKAx0$TT|MhndcnyP#GhKR=bIQ{%S2yB(Vl@QlfttAW+PDn?#9PMS{6dJr`Yf z5L!ulS8edpEtOtF)fFC*pLCc18rUSMpI&K!&W3k%tYt^rM?aP#_T!k)W;<~h{`mmcd7uQBF$0K>)dpG3$J;aFu zY?kL`^;Cb}fnmZ2fTL)7`1)jg;QV(tLGcK&8)EK5L4lIl1Th@J#120IyYA>iunSJl zFQtW@ZNHAAujWPisTrxXyUbwdbzw(x;Gia_O7Hc{G%gS*4l)8=d5klP-FS_2D_q9= z&g44Lsv^j#{uDa9xss9&Tg7eM#_k=-=SN3}HTi!aV{ml-1OGW9Ai?a-lYmfqYd!I_!k5pfwx-UtUXu3=@$O%k3fLp37g>i6rn z$kM5}O9fooU*$7?#TEX?{3RvM8(Z4;Ow59##tbR>N-Z=-xLh+7+K4yfH!>r$u$d%> zV)K8spQN*(@ZAc$?4Eq(o?S;#{8=dWUI12k4zu0oBT`I`x2|iyqArxf8KV>T^EXN& zq%XWypg0<<;19^p@dRt!hCd)bL+AsXWYAnPrZ|;_7S}W|l4kZQMX3G#Y5N7)3PJIoJ@)QIhPM zT1Imdot+B)b*T5=%fCjBe%+W4u3DA0?>+4fZttU1T?$J+BJa#LJ#DASZRwr3y$Ktc zSg%3AaW0E|0HE6lP1RM?3DOQtlVdmGnOOT^`B)`F{Wa0RR87NDuG3tpxzc^YO+2 diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz index c534f2d51248bdaa67d218bd550609a8958b8ec4..0edcb298250c647fdf2a22030fef68a6e880e35a 100644 GIT binary patch delta 23 ecmeyO{zZL5rvPL4<}QIGW)5|cuXX(27#IL>mIy@v delta 23 fcmeyO{zZL5rvPK<<}QIGW{%sb0dM%fF)#oCc9#he diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 1b6db8796b6a9f7f6550e5957b56b9bb0bf9ac1a..61e3853fc8343a560c95e8130bd9e1d32a05a420 100644 GIT binary patch delta 14338 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 w(>^Z#3hAqbYX7S7`SM(!(c8Poa#w4{4@bu1 delta 14339 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 diff --git a/build/params_shared_vals.go b/build/params_shared_vals.go index 645560d36..be6640d6f 100644 --- a/build/params_shared_vals.go +++ b/build/params_shared_vals.go @@ -33,7 +33,7 @@ const TestNetworkVersion = network.Version{{.latestNetworkVersion}} /* inline-gen start */ -const TestNetworkVersion = network.Version17 +const TestNetworkVersion = network.Version18 /* inline-gen end */ diff --git a/chain/actors/builtin/account/account.go b/chain/actors/builtin/account/account.go index 9bdeab17c..2a3f6faca 100644 --- a/chain/actors/builtin/account/account.go +++ b/chain/actors/builtin/account/account.go @@ -1,31 +1,23 @@ package account import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/lotus/chain/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin10 "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var Methods = builtin10.MethodsAccount diff --git a/chain/actors/builtin/account/v0.go b/chain/actors/builtin/account/v0.go index bdfca2fd7..314bd4b29 100644 --- a/chain/actors/builtin/account/v0.go +++ b/chain/actors/builtin/account/v0.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account0 "github.com/filecoin-project/specs-actors/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/account/v10.go b/chain/actors/builtin/account/v10.go index c53fd72e3..50a68c00c 100644 --- a/chain/actors/builtin/account/v10.go +++ b/chain/actors/builtin/account/v10.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/account/v2.go b/chain/actors/builtin/account/v2.go index 66618e06a..605065424 100644 --- a/chain/actors/builtin/account/v2.go +++ b/chain/actors/builtin/account/v2.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/account/v3.go b/chain/actors/builtin/account/v3.go index dbe100a4f..d070476ea 100644 --- a/chain/actors/builtin/account/v3.go +++ b/chain/actors/builtin/account/v3.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/account/v4.go b/chain/actors/builtin/account/v4.go index 53f71dcc5..f4d9f7a06 100644 --- a/chain/actors/builtin/account/v4.go +++ b/chain/actors/builtin/account/v4.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/account/v5.go b/chain/actors/builtin/account/v5.go index 538f56987..5e01ce152 100644 --- a/chain/actors/builtin/account/v5.go +++ b/chain/actors/builtin/account/v5.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/account/v6.go b/chain/actors/builtin/account/v6.go index a0d157ae5..85135dcda 100644 --- a/chain/actors/builtin/account/v6.go +++ b/chain/actors/builtin/account/v6.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/account/v7.go b/chain/actors/builtin/account/v7.go index 883776cf8..4ae979b82 100644 --- a/chain/actors/builtin/account/v7.go +++ b/chain/actors/builtin/account/v7.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/account/v8.go b/chain/actors/builtin/account/v8.go index d8ef52c00..211deea33 100644 --- a/chain/actors/builtin/account/v8.go +++ b/chain/actors/builtin/account/v8.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/account/v9.go b/chain/actors/builtin/account/v9.go index f44e192b6..7e172b33c 100644 --- a/chain/actors/builtin/account/v9.go +++ b/chain/actors/builtin/account/v9.go @@ -1,12 +1,12 @@ package account import ( - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/builtin.go b/chain/actors/builtin/builtin.go index 9e5f2ac0f..82e80365a 100644 --- a/chain/actors/builtin/builtin.go +++ b/chain/actors/builtin/builtin.go @@ -3,31 +3,23 @@ package builtin import ( "fmt" - "github.com/filecoin-project/go-address" "github.com/ipfs/go-cid" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/proof" - - "github.com/filecoin-project/lotus/chain/actors" - smoothingtypes "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" minertypes "github.com/filecoin-project/go-state-types/builtin/v9/miner" + "github.com/filecoin-project/go-state-types/proof" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + + "github.com/filecoin-project/lotus/chain/actors" ) var SystemActorAddr = builtin.SystemActorAddr diff --git a/chain/actors/builtin/cron/cron.go b/chain/actors/builtin/cron/cron.go index 38f8ccc58..2c761b75f 100644 --- a/chain/actors/builtin/cron/cron.go +++ b/chain/actors/builtin/cron/cron.go @@ -1,27 +1,21 @@ package cron import ( + "golang.org/x/xerrors" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" - "golang.org/x/xerrors" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - - builtin10 "github.com/filecoin-project/go-state-types/builtin" ) func Load(store adt.Store, act *types.Actor) (State, error) { diff --git a/chain/actors/builtin/cron/v0.go b/chain/actors/builtin/cron/v0.go index 6147b858c..baa81aac3 100644 --- a/chain/actors/builtin/cron/v0.go +++ b/chain/actors/builtin/cron/v0.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron0 "github.com/filecoin-project/specs-actors/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/cron/v10.go b/chain/actors/builtin/cron/v10.go index 9bdba2fb4..c1ef1b4e7 100644 --- a/chain/actors/builtin/cron/v10.go +++ b/chain/actors/builtin/cron/v10.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/cron/v2.go b/chain/actors/builtin/cron/v2.go index 51ca179d9..d6ee35935 100644 --- a/chain/actors/builtin/cron/v2.go +++ b/chain/actors/builtin/cron/v2.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/cron/v3.go b/chain/actors/builtin/cron/v3.go index ff74d511d..356d385cd 100644 --- a/chain/actors/builtin/cron/v3.go +++ b/chain/actors/builtin/cron/v3.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/cron/v4.go b/chain/actors/builtin/cron/v4.go index 1cff8cc28..3db3c95aa 100644 --- a/chain/actors/builtin/cron/v4.go +++ b/chain/actors/builtin/cron/v4.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/cron/v5.go b/chain/actors/builtin/cron/v5.go index 2bb00dc21..5d99af1fd 100644 --- a/chain/actors/builtin/cron/v5.go +++ b/chain/actors/builtin/cron/v5.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/cron/v6.go b/chain/actors/builtin/cron/v6.go index 8bbadd79f..c86cd6c42 100644 --- a/chain/actors/builtin/cron/v6.go +++ b/chain/actors/builtin/cron/v6.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/cron/v7.go b/chain/actors/builtin/cron/v7.go index e5538c89f..db9f8f9e2 100644 --- a/chain/actors/builtin/cron/v7.go +++ b/chain/actors/builtin/cron/v7.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/cron/v8.go b/chain/actors/builtin/cron/v8.go index 00b22fcbf..00567acf9 100644 --- a/chain/actors/builtin/cron/v8.go +++ b/chain/actors/builtin/cron/v8.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/cron/v9.go b/chain/actors/builtin/cron/v9.go index 94530e181..312a33b68 100644 --- a/chain/actors/builtin/cron/v9.go +++ b/chain/actors/builtin/cron/v9.go @@ -3,9 +3,9 @@ package cron import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/datacap/v10.go b/chain/actors/builtin/datacap/v10.go index 579712045..aa34fe2cd 100644 --- a/chain/actors/builtin/datacap/v10.go +++ b/chain/actors/builtin/datacap/v10.go @@ -1,15 +1,15 @@ package datacap import ( + "github.com/ipfs/go-cid" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/ipfs/go-cid" + datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" + adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - - datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" - adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/datacap/v9.go b/chain/actors/builtin/datacap/v9.go index 6d07bf2e2..a6e4bbcd6 100644 --- a/chain/actors/builtin/datacap/v9.go +++ b/chain/actors/builtin/datacap/v9.go @@ -1,15 +1,15 @@ package datacap import ( + "github.com/ipfs/go-cid" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/ipfs/go-cid" + datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" + adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" - - datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" - adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/init/init.go b/chain/actors/builtin/init/init.go index ace944db5..a14f33826 100644 --- a/chain/actors/builtin/init/init.go +++ b/chain/actors/builtin/init/init.go @@ -1,34 +1,26 @@ package init import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/lotus/chain/actors" + "github.com/ipfs/go-cid" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - "github.com/ipfs/go-cid" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/node/modules/dtypes" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - - builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( diff --git a/chain/actors/builtin/init/v0.go b/chain/actors/builtin/init/v0.go index ddd2dab94..2f6b213c0 100644 --- a/chain/actors/builtin/init/v0.go +++ b/chain/actors/builtin/init/v0.go @@ -1,17 +1,17 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/init/v10.go b/chain/actors/builtin/init/v10.go index 42aa836e8..248d627fc 100644 --- a/chain/actors/builtin/init/v10.go +++ b/chain/actors/builtin/init/v10.go @@ -1,18 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin10 "github.com/filecoin-project/go-state-types/builtin" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/init/v2.go b/chain/actors/builtin/init/v2.go index 72e2d56a5..d780a1fe9 100644 --- a/chain/actors/builtin/init/v2.go +++ b/chain/actors/builtin/init/v2.go @@ -1,17 +1,17 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/init/v3.go b/chain/actors/builtin/init/v3.go index 4609c94a3..b2f713b1f 100644 --- a/chain/actors/builtin/init/v3.go +++ b/chain/actors/builtin/init/v3.go @@ -1,19 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/init/v4.go b/chain/actors/builtin/init/v4.go index dc56d1f19..9de02816f 100644 --- a/chain/actors/builtin/init/v4.go +++ b/chain/actors/builtin/init/v4.go @@ -1,19 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/init/v5.go b/chain/actors/builtin/init/v5.go index 107366de5..f9c59f83a 100644 --- a/chain/actors/builtin/init/v5.go +++ b/chain/actors/builtin/init/v5.go @@ -1,19 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/init/v6.go b/chain/actors/builtin/init/v6.go index a5bd9edfb..494b6aaa0 100644 --- a/chain/actors/builtin/init/v6.go +++ b/chain/actors/builtin/init/v6.go @@ -1,19 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/init/v7.go b/chain/actors/builtin/init/v7.go index 341aa52cd..bc378a141 100644 --- a/chain/actors/builtin/init/v7.go +++ b/chain/actors/builtin/init/v7.go @@ -1,19 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/init/v8.go b/chain/actors/builtin/init/v8.go index 919819549..63b058e57 100644 --- a/chain/actors/builtin/init/v8.go +++ b/chain/actors/builtin/init/v8.go @@ -1,18 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin8 "github.com/filecoin-project/go-state-types/builtin" init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/init/v9.go b/chain/actors/builtin/init/v9.go index e6406b2dd..6153b4f73 100644 --- a/chain/actors/builtin/init/v9.go +++ b/chain/actors/builtin/init/v9.go @@ -1,18 +1,18 @@ package init import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/node/modules/dtypes" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin9 "github.com/filecoin-project/go-state-types/builtin" init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/node/modules/dtypes" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/market/market.go b/chain/actors/builtin/market/market.go index c9810f1a4..f41e80d59 100644 --- a/chain/actors/builtin/market/market.go +++ b/chain/actors/builtin/market/market.go @@ -1,37 +1,28 @@ package market import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" "unicode/utf8" - "github.com/filecoin-project/go-state-types/network" + cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/go-state-types/cbor" - cbg "github.com/whyrusleeping/cbor-gen" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - + "github.com/filecoin-project/go-state-types/cbor" + "github.com/filecoin-project/go-state-types/network" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtintypes "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/market/v0.go b/chain/actors/builtin/market/v0.go index 0bb189ebb..aa68049bb 100644 --- a/chain/actors/builtin/market/v0.go +++ b/chain/actors/builtin/market/v0.go @@ -3,18 +3,18 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/market/v10.go b/chain/actors/builtin/market/v10.go index 2ab269967..8159f213b 100644 --- a/chain/actors/builtin/market/v10.go +++ b/chain/actors/builtin/market/v10.go @@ -3,24 +3,22 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/builtin" market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/market/v2.go b/chain/actors/builtin/market/v2.go index 6509980b5..777a17cd0 100644 --- a/chain/actors/builtin/market/v2.go +++ b/chain/actors/builtin/market/v2.go @@ -3,18 +3,18 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/market/v3.go b/chain/actors/builtin/market/v3.go index 1d00165d2..5ca09fdfb 100644 --- a/chain/actors/builtin/market/v3.go +++ b/chain/actors/builtin/market/v3.go @@ -3,18 +3,18 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/market/v4.go b/chain/actors/builtin/market/v4.go index 3b3f3577c..23422ec31 100644 --- a/chain/actors/builtin/market/v4.go +++ b/chain/actors/builtin/market/v4.go @@ -3,18 +3,18 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/market/v5.go b/chain/actors/builtin/market/v5.go index c408c3164..8e8833c37 100644 --- a/chain/actors/builtin/market/v5.go +++ b/chain/actors/builtin/market/v5.go @@ -3,18 +3,18 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/market/v6.go b/chain/actors/builtin/market/v6.go index 24a6a2641..d86f73108 100644 --- a/chain/actors/builtin/market/v6.go +++ b/chain/actors/builtin/market/v6.go @@ -3,21 +3,20 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/market/v7.go b/chain/actors/builtin/market/v7.go index a1ed5b1bd..5f6547e3f 100644 --- a/chain/actors/builtin/market/v7.go +++ b/chain/actors/builtin/market/v7.go @@ -3,21 +3,20 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - + "github.com/filecoin-project/go-state-types/abi" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/market/v8.go b/chain/actors/builtin/market/v8.go index 741ff13ca..5f3b690bb 100644 --- a/chain/actors/builtin/market/v8.go +++ b/chain/actors/builtin/market/v8.go @@ -3,22 +3,21 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - + "github.com/filecoin-project/go-state-types/abi" market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/market/v9.go b/chain/actors/builtin/market/v9.go index c0ce990cc..9fed45ae8 100644 --- a/chain/actors/builtin/market/v9.go +++ b/chain/actors/builtin/market/v9.go @@ -3,24 +3,22 @@ package market import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" rlepluslazy "github.com/filecoin-project/go-bitfield/rle" - - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/types" - + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/builtin" market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/types" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/miner/miner.go b/chain/actors/builtin/miner/miner.go index e2b864c58..3939afdd5 100644 --- a/chain/actors/builtin/miner/miner.go +++ b/chain/actors/builtin/miner/miner.go @@ -1,36 +1,29 @@ package miner import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/go-state-types/network" - "github.com/filecoin-project/lotus/chain/actors" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/go-state-types/dline" + "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/go-state-types/proof" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" ) func Load(store adt.Store, act *types.Actor) (State, error) { diff --git a/chain/actors/builtin/miner/v0.go b/chain/actors/builtin/miner/v0.go index 38747fc9f..6159961c0 100644 --- a/chain/actors/builtin/miner/v0.go +++ b/chain/actors/builtin/miner/v0.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/big" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/miner/v10.go b/chain/actors/builtin/miner/v10.go index 9cb9c7dc4..c6cc9f342 100644 --- a/chain/actors/builtin/miner/v10.go +++ b/chain/actors/builtin/miner/v10.go @@ -4,20 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" builtin10 "github.com/filecoin-project/go-state-types/builtin" miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + "github.com/filecoin-project/go-state-types/dline" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/miner/v2.go b/chain/actors/builtin/miner/v2.go index ac4ec64d3..9d41c5aa5 100644 --- a/chain/actors/builtin/miner/v2.go +++ b/chain/actors/builtin/miner/v2.go @@ -4,19 +4,19 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/miner/v3.go b/chain/actors/builtin/miner/v3.go index b8a396190..b26fe3784 100644 --- a/chain/actors/builtin/miner/v3.go +++ b/chain/actors/builtin/miner/v3.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/miner/v4.go b/chain/actors/builtin/miner/v4.go index 54c812d8a..ccf82148b 100644 --- a/chain/actors/builtin/miner/v4.go +++ b/chain/actors/builtin/miner/v4.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/miner/v5.go b/chain/actors/builtin/miner/v5.go index 5a680182e..eb04b1a6f 100644 --- a/chain/actors/builtin/miner/v5.go +++ b/chain/actors/builtin/miner/v5.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/miner/v6.go b/chain/actors/builtin/miner/v6.go index 5a1634dd4..c659dee9c 100644 --- a/chain/actors/builtin/miner/v6.go +++ b/chain/actors/builtin/miner/v6.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/miner/v7.go b/chain/actors/builtin/miner/v7.go index 2610d2c03..40c08da14 100644 --- a/chain/actors/builtin/miner/v7.go +++ b/chain/actors/builtin/miner/v7.go @@ -4,21 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-state-types/dline" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/miner/v8.go b/chain/actors/builtin/miner/v8.go index 1b2932609..71ec78f5e 100644 --- a/chain/actors/builtin/miner/v8.go +++ b/chain/actors/builtin/miner/v8.go @@ -4,20 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" builtin8 "github.com/filecoin-project/go-state-types/builtin" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + "github.com/filecoin-project/go-state-types/dline" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/miner/v9.go b/chain/actors/builtin/miner/v9.go index 7b8764995..9c1fb98a0 100644 --- a/chain/actors/builtin/miner/v9.go +++ b/chain/actors/builtin/miner/v9.go @@ -4,20 +4,20 @@ import ( "bytes" "errors" - "github.com/filecoin-project/go-bitfield" - rle "github.com/filecoin-project/go-bitfield/rle" - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/dline" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-bitfield" + rle "github.com/filecoin-project/go-bitfield/rle" + "github.com/filecoin-project/go-state-types/abi" builtin9 "github.com/filecoin-project/go-state-types/builtin" + minertypes "github.com/filecoin-project/go-state-types/builtin/v10/miner" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + "github.com/filecoin-project/go-state-types/dline" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/multisig/message0.go b/chain/actors/builtin/multisig/message0.go index c8e97cb49..7dbdf444c 100644 --- a/chain/actors/builtin/multisig/message0.go +++ b/chain/actors/builtin/multisig/message0.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" multisig0 "github.com/filecoin-project/specs-actors/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message10.go b/chain/actors/builtin/multisig/message10.go index aaa616e14..944911643 100644 --- a/chain/actors/builtin/multisig/message10.go +++ b/chain/actors/builtin/multisig/message10.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" + builtintypes "github.com/filecoin-project/go-state-types/builtin" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message2.go b/chain/actors/builtin/multisig/message2.go index c316c9fdd..91ad17b84 100644 --- a/chain/actors/builtin/multisig/message2.go +++ b/chain/actors/builtin/multisig/message2.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" multisig2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message3.go b/chain/actors/builtin/multisig/message3.go index 6c842c471..4124e00c8 100644 --- a/chain/actors/builtin/multisig/message3.go +++ b/chain/actors/builtin/multisig/message3.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" multisig3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message4.go b/chain/actors/builtin/multisig/message4.go index 11ba46da9..33449df75 100644 --- a/chain/actors/builtin/multisig/message4.go +++ b/chain/actors/builtin/multisig/message4.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" multisig4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message5.go b/chain/actors/builtin/multisig/message5.go index a6292c0ac..46c35dabc 100644 --- a/chain/actors/builtin/multisig/message5.go +++ b/chain/actors/builtin/multisig/message5.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" multisig5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message6.go b/chain/actors/builtin/multisig/message6.go index e497fbaac..f528cfbb5 100644 --- a/chain/actors/builtin/multisig/message6.go +++ b/chain/actors/builtin/multisig/message6.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" multisig6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message7.go b/chain/actors/builtin/multisig/message7.go index 79af7d19d..6e62dad13 100644 --- a/chain/actors/builtin/multisig/message7.go +++ b/chain/actors/builtin/multisig/message7.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + builtintypes "github.com/filecoin-project/go-state-types/builtin" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" multisig7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message8.go b/chain/actors/builtin/multisig/message8.go index 4560f6e0a..7c79f3f50 100644 --- a/chain/actors/builtin/multisig/message8.go +++ b/chain/actors/builtin/multisig/message8.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" + builtintypes "github.com/filecoin-project/go-state-types/builtin" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/message9.go b/chain/actors/builtin/multisig/message9.go index e149cf5d0..be49894fa 100644 --- a/chain/actors/builtin/multisig/message9.go +++ b/chain/actors/builtin/multisig/message9.go @@ -5,12 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" + builtintypes "github.com/filecoin-project/go-state-types/builtin" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" multisig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" - builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/multisig/multisig.go b/chain/actors/builtin/multisig/multisig.go index c089d96ca..09a37fd6a 100644 --- a/chain/actors/builtin/multisig/multisig.go +++ b/chain/actors/builtin/multisig/multisig.go @@ -2,7 +2,6 @@ package multisig import ( "fmt" - actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/minio/blake2b-simd" cbg "github.com/whyrusleeping/cbor-gen" @@ -10,25 +9,17 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/cbor" - - msig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - + actorstypes "github.com/filecoin-project/go-state-types/actors" builtintypes "github.com/filecoin-project/go-state-types/builtin" + msig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + "github.com/filecoin-project/go-state-types/cbor" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" diff --git a/chain/actors/builtin/multisig/v0.go b/chain/actors/builtin/multisig/v0.go index ccd9a9e37..9f4d09dc1 100644 --- a/chain/actors/builtin/multisig/v0.go +++ b/chain/actors/builtin/multisig/v0.go @@ -4,16 +4,16 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" msig0 "github.com/filecoin-project/specs-actors/actors/builtin/multisig" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/multisig/v10.go b/chain/actors/builtin/multisig/v10.go index 654d92f91..a90b8ee96 100644 --- a/chain/actors/builtin/multisig/v10.go +++ b/chain/actors/builtin/multisig/v10.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin10 "github.com/filecoin-project/go-state-types/builtin" msig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/multisig/v2.go b/chain/actors/builtin/multisig/v2.go index c3579b3e2..14e895680 100644 --- a/chain/actors/builtin/multisig/v2.go +++ b/chain/actors/builtin/multisig/v2.go @@ -4,16 +4,16 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" msig2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/multisig" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/multisig/v3.go b/chain/actors/builtin/multisig/v3.go index 80682808e..5cde148c1 100644 --- a/chain/actors/builtin/multisig/v3.go +++ b/chain/actors/builtin/multisig/v3.go @@ -4,18 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - msig3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/multisig" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/multisig/v4.go b/chain/actors/builtin/multisig/v4.go index f065f9f8c..87936661d 100644 --- a/chain/actors/builtin/multisig/v4.go +++ b/chain/actors/builtin/multisig/v4.go @@ -4,18 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - msig4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/multisig" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/multisig/v5.go b/chain/actors/builtin/multisig/v5.go index 783e3987f..d50638ca5 100644 --- a/chain/actors/builtin/multisig/v5.go +++ b/chain/actors/builtin/multisig/v5.go @@ -4,18 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - msig5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/multisig" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/multisig/v6.go b/chain/actors/builtin/multisig/v6.go index 71ea3c00c..9246eeaa9 100644 --- a/chain/actors/builtin/multisig/v6.go +++ b/chain/actors/builtin/multisig/v6.go @@ -4,18 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - msig6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/multisig" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/multisig/v7.go b/chain/actors/builtin/multisig/v7.go index 8ed1caacd..a6b630179 100644 --- a/chain/actors/builtin/multisig/v7.go +++ b/chain/actors/builtin/multisig/v7.go @@ -4,18 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - msig7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/multisig" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/multisig/v8.go b/chain/actors/builtin/multisig/v8.go index 5b76f662e..6311583b3 100644 --- a/chain/actors/builtin/multisig/v8.go +++ b/chain/actors/builtin/multisig/v8.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin8 "github.com/filecoin-project/go-state-types/builtin" msig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/multisig/v9.go b/chain/actors/builtin/multisig/v9.go index cf6df9316..ef9a48f28 100644 --- a/chain/actors/builtin/multisig/v9.go +++ b/chain/actors/builtin/multisig/v9.go @@ -4,17 +4,17 @@ import ( "bytes" "encoding/binary" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" - "github.com/filecoin-project/lotus/chain/actors/adt" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin9 "github.com/filecoin-project/go-state-types/builtin" msig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/paych/message0.go b/chain/actors/builtin/paych/message0.go index 2daa0301b..d5a112d43 100644 --- a/chain/actors/builtin/paych/message0.go +++ b/chain/actors/builtin/paych/message0.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" init0 "github.com/filecoin-project/specs-actors/actors/builtin/init" paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message10.go b/chain/actors/builtin/paych/message10.go index 008605217..03daa7bcf 100644 --- a/chain/actors/builtin/paych/message10.go +++ b/chain/actors/builtin/paych/message10.go @@ -5,13 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - actorstypes "github.com/filecoin-project/go-state-types/actors" builtin10 "github.com/filecoin-project/go-state-types/builtin" init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" diff --git a/chain/actors/builtin/paych/message2.go b/chain/actors/builtin/paych/message2.go index 925ad0ed9..89a6e74ce 100644 --- a/chain/actors/builtin/paych/message2.go +++ b/chain/actors/builtin/paych/message2.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" init2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/init" paych2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message3.go b/chain/actors/builtin/paych/message3.go index e8ae585fc..47f8e7e9e 100644 --- a/chain/actors/builtin/paych/message3.go +++ b/chain/actors/builtin/paych/message3.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" init3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/init" paych3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message4.go b/chain/actors/builtin/paych/message4.go index b32b0fa57..65e63149d 100644 --- a/chain/actors/builtin/paych/message4.go +++ b/chain/actors/builtin/paych/message4.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" init4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/init" paych4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message5.go b/chain/actors/builtin/paych/message5.go index 897bebe7a..ede1c8ceb 100644 --- a/chain/actors/builtin/paych/message5.go +++ b/chain/actors/builtin/paych/message5.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" init5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/init" paych5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message6.go b/chain/actors/builtin/paych/message6.go index 11bd3a8a5..009e8641f 100644 --- a/chain/actors/builtin/paych/message6.go +++ b/chain/actors/builtin/paych/message6.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" init6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/init" paych6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message7.go b/chain/actors/builtin/paych/message7.go index 446e54ead..430fb9341 100644 --- a/chain/actors/builtin/paych/message7.go +++ b/chain/actors/builtin/paych/message7.go @@ -3,9 +3,7 @@ package paych import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" init7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/init" paych7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/paych" diff --git a/chain/actors/builtin/paych/message8.go b/chain/actors/builtin/paych/message8.go index 6d9df4f4c..a72c5fbb3 100644 --- a/chain/actors/builtin/paych/message8.go +++ b/chain/actors/builtin/paych/message8.go @@ -5,13 +5,11 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - actorstypes "github.com/filecoin-project/go-state-types/actors" builtin8 "github.com/filecoin-project/go-state-types/builtin" init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" paych8 "github.com/filecoin-project/go-state-types/builtin/v8/paych" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" "github.com/filecoin-project/lotus/chain/actors" init_ "github.com/filecoin-project/lotus/chain/actors/builtin/init" diff --git a/chain/actors/builtin/paych/message9.go b/chain/actors/builtin/paych/message9.go index c0e68a4c3..350c760ea 100644 --- a/chain/actors/builtin/paych/message9.go +++ b/chain/actors/builtin/paych/message9.go @@ -5,11 +5,9 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - actorstypes "github.com/filecoin-project/go-state-types/actors" builtin9 "github.com/filecoin-project/go-state-types/builtin" + paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" diff --git a/chain/actors/builtin/paych/paych.go b/chain/actors/builtin/paych/paych.go index 3c0de73b0..17f8dd5e9 100644 --- a/chain/actors/builtin/paych/paych.go +++ b/chain/actors/builtin/paych/paych.go @@ -3,31 +3,23 @@ package paych import ( "encoding/base64" "fmt" - actorstypes "github.com/filecoin-project/go-state-types/actors" + ipldcbor "github.com/ipfs/go-ipld-cbor" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/go-state-types/cbor" - ipldcbor "github.com/ipfs/go-ipld-cbor" - paychtypes "github.com/filecoin-project/go-state-types/builtin/v8/paych" - paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" - + "github.com/filecoin-project/go-state-types/cbor" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - + paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" "github.com/filecoin-project/lotus/chain/actors" diff --git a/chain/actors/builtin/paych/v0.go b/chain/actors/builtin/paych/v0.go index e9bc30e3d..727525c50 100644 --- a/chain/actors/builtin/paych/v0.go +++ b/chain/actors/builtin/paych/v0.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych0 "github.com/filecoin-project/specs-actors/actors/builtin/paych" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/paych/v10.go b/chain/actors/builtin/paych/v10.go index 1425b5bee..f3b1996eb 100644 --- a/chain/actors/builtin/paych/v10.go +++ b/chain/actors/builtin/paych/v10.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/paych/v2.go b/chain/actors/builtin/paych/v2.go index 400305e2f..5852c9a64 100644 --- a/chain/actors/builtin/paych/v2.go +++ b/chain/actors/builtin/paych/v2.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/paych" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/paych/v3.go b/chain/actors/builtin/paych/v3.go index 1d7c2f94b..5297e9d10 100644 --- a/chain/actors/builtin/paych/v3.go +++ b/chain/actors/builtin/paych/v3.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/paych" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/paych/v4.go b/chain/actors/builtin/paych/v4.go index b7d1e52a5..be10061bf 100644 --- a/chain/actors/builtin/paych/v4.go +++ b/chain/actors/builtin/paych/v4.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/paych" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/paych/v5.go b/chain/actors/builtin/paych/v5.go index b331a1500..37a917273 100644 --- a/chain/actors/builtin/paych/v5.go +++ b/chain/actors/builtin/paych/v5.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/paych" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/paych/v6.go b/chain/actors/builtin/paych/v6.go index 0d60b1f03..36676d9de 100644 --- a/chain/actors/builtin/paych/v6.go +++ b/chain/actors/builtin/paych/v6.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/paych" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/paych/v7.go b/chain/actors/builtin/paych/v7.go index ce09ea2e4..88b6f2b84 100644 --- a/chain/actors/builtin/paych/v7.go +++ b/chain/actors/builtin/paych/v7.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/paych" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/paych/v8.go b/chain/actors/builtin/paych/v8.go index 7936b76e1..1961e69ec 100644 --- a/chain/actors/builtin/paych/v8.go +++ b/chain/actors/builtin/paych/v8.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych8 "github.com/filecoin-project/go-state-types/builtin/v8/paych" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/paych/v9.go b/chain/actors/builtin/paych/v9.go index 02493ac99..443fe74ea 100644 --- a/chain/actors/builtin/paych/v9.go +++ b/chain/actors/builtin/paych/v9.go @@ -6,11 +6,10 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" - - "github.com/filecoin-project/lotus/chain/actors/adt" - paych9 "github.com/filecoin-project/go-state-types/builtin/v9/paych" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/power/power.go b/chain/actors/builtin/power/power.go index ce12b9219..fbea9719b 100644 --- a/chain/actors/builtin/power/power.go +++ b/chain/actors/builtin/power/power.go @@ -1,35 +1,27 @@ package power import ( - "github.com/filecoin-project/go-address" - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/go-state-types/big" - "github.com/filecoin-project/lotus/chain/actors" cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + builtin10 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/types" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - - builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( diff --git a/chain/actors/builtin/power/v0.go b/chain/actors/builtin/power/v0.go index e114ac219..5ae42b4df 100644 --- a/chain/actors/builtin/power/v0.go +++ b/chain/actors/builtin/power/v0.go @@ -3,16 +3,16 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/power/v10.go b/chain/actors/builtin/power/v10.go index 5b1d60680..a37cd1850 100644 --- a/chain/actors/builtin/power/v10.go +++ b/chain/actors/builtin/power/v10.go @@ -3,17 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin10 "github.com/filecoin-project/go-state-types/builtin" power10 "github.com/filecoin-project/go-state-types/builtin/v10/power" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/power/v2.go b/chain/actors/builtin/power/v2.go index 405bad8ba..485819e3e 100644 --- a/chain/actors/builtin/power/v2.go +++ b/chain/actors/builtin/power/v2.go @@ -3,16 +3,16 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" power2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/power" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/power/v3.go b/chain/actors/builtin/power/v3.go index 0ff06f617..e33ee2bb5 100644 --- a/chain/actors/builtin/power/v3.go +++ b/chain/actors/builtin/power/v3.go @@ -3,18 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - power3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/power" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/power/v4.go b/chain/actors/builtin/power/v4.go index f121e3b2f..e5c446f07 100644 --- a/chain/actors/builtin/power/v4.go +++ b/chain/actors/builtin/power/v4.go @@ -3,18 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - power4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/power" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/power/v5.go b/chain/actors/builtin/power/v5.go index 851522e50..aaf248058 100644 --- a/chain/actors/builtin/power/v5.go +++ b/chain/actors/builtin/power/v5.go @@ -3,18 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - power5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/power" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/power/v6.go b/chain/actors/builtin/power/v6.go index 083b85f45..072def6e2 100644 --- a/chain/actors/builtin/power/v6.go +++ b/chain/actors/builtin/power/v6.go @@ -3,18 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - power6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/power" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/power/v7.go b/chain/actors/builtin/power/v7.go index af626cf3a..0c60b03a0 100644 --- a/chain/actors/builtin/power/v7.go +++ b/chain/actors/builtin/power/v7.go @@ -3,18 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - power7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/power" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/power/v8.go b/chain/actors/builtin/power/v8.go index 177d3bc3d..c23da6904 100644 --- a/chain/actors/builtin/power/v8.go +++ b/chain/actors/builtin/power/v8.go @@ -3,17 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin8 "github.com/filecoin-project/go-state-types/builtin" power8 "github.com/filecoin-project/go-state-types/builtin/v8/power" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/power/v9.go b/chain/actors/builtin/power/v9.go index 745e060a1..7614b7c2e 100644 --- a/chain/actors/builtin/power/v9.go +++ b/chain/actors/builtin/power/v9.go @@ -3,17 +3,17 @@ package power import ( "bytes" - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin9 "github.com/filecoin-project/go-state-types/builtin" power9 "github.com/filecoin-project/go-state-types/builtin/v9/power" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/registry.go b/chain/actors/builtin/registry.go index 476271766..73c9c117f 100644 --- a/chain/actors/builtin/registry.go +++ b/chain/actors/builtin/registry.go @@ -1,14 +1,26 @@ package builtin import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/ipfs/go-cid" "reflect" "runtime" "strings" - "github.com/filecoin-project/go-state-types/builtin" + "github.com/ipfs/go-cid" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/builtin" + account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" + cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" + datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" + _init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" + market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + power10 "github.com/filecoin-project/go-state-types/builtin/v10/power" + reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward" + system10 "github.com/filecoin-project/go-state-types/builtin/v10/system" + verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" account8 "github.com/filecoin-project/go-state-types/builtin/v8/account" cron8 "github.com/filecoin-project/go-state-types/builtin/v8/cron" _init8 "github.com/filecoin-project/go-state-types/builtin/v8/init" @@ -20,9 +32,9 @@ import ( reward8 "github.com/filecoin-project/go-state-types/builtin/v8/reward" system8 "github.com/filecoin-project/go-state-types/builtin/v8/system" verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" - account9 "github.com/filecoin-project/go-state-types/builtin/v9/account" cron9 "github.com/filecoin-project/go-state-types/builtin/v9/cron" + datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" _init9 "github.com/filecoin-project/go-state-types/builtin/v9/init" market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" @@ -32,25 +44,9 @@ import ( reward9 "github.com/filecoin-project/go-state-types/builtin/v9/reward" system9 "github.com/filecoin-project/go-state-types/builtin/v9/system" verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - - datacap9 "github.com/filecoin-project/go-state-types/builtin/v9/datacap" - - account10 "github.com/filecoin-project/go-state-types/builtin/v10/account" - cron10 "github.com/filecoin-project/go-state-types/builtin/v10/cron" - _init10 "github.com/filecoin-project/go-state-types/builtin/v10/init" - market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" - miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" - multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" - paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" - power10 "github.com/filecoin-project/go-state-types/builtin/v10/power" - reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward" - system10 "github.com/filecoin-project/go-state-types/builtin/v10/system" - verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" - - datacap10 "github.com/filecoin-project/go-state-types/builtin/v10/datacap" - "github.com/filecoin-project/go-state-types/cbor" rtt "github.com/filecoin-project/go-state-types/rt" + "github.com/filecoin-project/lotus/chain/actors" ) diff --git a/chain/actors/builtin/reward/reward.go b/chain/actors/builtin/reward/reward.go index b37b89bf2..437e58dc8 100644 --- a/chain/actors/builtin/reward/reward.go +++ b/chain/actors/builtin/reward/reward.go @@ -1,30 +1,22 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/filecoin-project/lotus/chain/actors" - reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" "golang.org/x/xerrors" + "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - + reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin10 "github.com/filecoin-project/go-state-types/builtin" - + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/builtin/reward/v0.go b/chain/actors/builtin/reward/v0.go index 646ab3a9a..12bdee054 100644 --- a/chain/actors/builtin/reward/v0.go +++ b/chain/actors/builtin/reward/v0.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" smoothing0 "github.com/filecoin-project/specs-actors/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/reward/v10.go b/chain/actors/builtin/reward/v10.go index 41d859c39..8ef3875f3 100644 --- a/chain/actors/builtin/reward/v10.go +++ b/chain/actors/builtin/reward/v10.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" reward10 "github.com/filecoin-project/go-state-types/builtin/v10/reward" smoothing10 "github.com/filecoin-project/go-state-types/builtin/v10/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/reward/v2.go b/chain/actors/builtin/reward/v2.go index 08e9a7bc3..ed2481635 100644 --- a/chain/actors/builtin/reward/v2.go +++ b/chain/actors/builtin/reward/v2.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" reward2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/reward" smoothing2 "github.com/filecoin-project/specs-actors/v2/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/reward/v3.go b/chain/actors/builtin/reward/v3.go index fd9fa56e2..d9f4bf369 100644 --- a/chain/actors/builtin/reward/v3.go +++ b/chain/actors/builtin/reward/v3.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" reward3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/reward" smoothing3 "github.com/filecoin-project/specs-actors/v3/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/reward/v4.go b/chain/actors/builtin/reward/v4.go index 310ca04e8..160c72ce7 100644 --- a/chain/actors/builtin/reward/v4.go +++ b/chain/actors/builtin/reward/v4.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" reward4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/reward" smoothing4 "github.com/filecoin-project/specs-actors/v4/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/reward/v5.go b/chain/actors/builtin/reward/v5.go index 7200f7d11..838ec8f21 100644 --- a/chain/actors/builtin/reward/v5.go +++ b/chain/actors/builtin/reward/v5.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" reward5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/reward" smoothing5 "github.com/filecoin-project/specs-actors/v5/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/reward/v6.go b/chain/actors/builtin/reward/v6.go index 010a3a870..e056b22f6 100644 --- a/chain/actors/builtin/reward/v6.go +++ b/chain/actors/builtin/reward/v6.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" reward6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/reward" smoothing6 "github.com/filecoin-project/specs-actors/v6/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/reward/v7.go b/chain/actors/builtin/reward/v7.go index 368bb3abd..5fedaa43c 100644 --- a/chain/actors/builtin/reward/v7.go +++ b/chain/actors/builtin/reward/v7.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" reward7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/reward" smoothing7 "github.com/filecoin-project/specs-actors/v7/actors/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/reward/v8.go b/chain/actors/builtin/reward/v8.go index 3d49063df..ecc5a94ba 100644 --- a/chain/actors/builtin/reward/v8.go +++ b/chain/actors/builtin/reward/v8.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" reward8 "github.com/filecoin-project/go-state-types/builtin/v8/reward" smoothing8 "github.com/filecoin-project/go-state-types/builtin/v8/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/reward/v9.go b/chain/actors/builtin/reward/v9.go index 6dbfdd2e6..04da532d2 100644 --- a/chain/actors/builtin/reward/v9.go +++ b/chain/actors/builtin/reward/v9.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - "github.com/filecoin-project/lotus/chain/actors/builtin" - + "github.com/filecoin-project/go-state-types/abi" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" reward9 "github.com/filecoin-project/go-state-types/builtin/v9/reward" smoothing9 "github.com/filecoin-project/go-state-types/builtin/v9/util/smoothing" + + "github.com/filecoin-project/lotus/chain/actors/adt" + "github.com/filecoin-project/lotus/chain/actors/builtin" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/system/system.go b/chain/actors/builtin/system/system.go index a77830e8c..2fec9e5e5 100644 --- a/chain/actors/builtin/system/system.go +++ b/chain/actors/builtin/system/system.go @@ -1,29 +1,22 @@ package system import ( + "github.com/ipfs/go-cid" + "golang.org/x/xerrors" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" - "github.com/ipfs/go-cid" - - "golang.org/x/xerrors" - - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - - builtin10 "github.com/filecoin-project/go-state-types/builtin" ) var ( diff --git a/chain/actors/builtin/system/v0.go b/chain/actors/builtin/system/v0.go index cbf9ace98..78e578896 100644 --- a/chain/actors/builtin/system/v0.go +++ b/chain/actors/builtin/system/v0.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system0 "github.com/filecoin-project/specs-actors/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/system/v10.go b/chain/actors/builtin/system/v10.go index e1d9cdf32..a90a7f5ac 100644 --- a/chain/actors/builtin/system/v10.go +++ b/chain/actors/builtin/system/v10.go @@ -3,9 +3,9 @@ package system import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - system10 "github.com/filecoin-project/go-state-types/builtin/v10/system" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/system/v2.go b/chain/actors/builtin/system/v2.go index 2372f4a98..21dfa5c78 100644 --- a/chain/actors/builtin/system/v2.go +++ b/chain/actors/builtin/system/v2.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/system/v3.go b/chain/actors/builtin/system/v3.go index ece3db802..ccf8aa2c3 100644 --- a/chain/actors/builtin/system/v3.go +++ b/chain/actors/builtin/system/v3.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/system/v4.go b/chain/actors/builtin/system/v4.go index 9c185659a..bcb120be2 100644 --- a/chain/actors/builtin/system/v4.go +++ b/chain/actors/builtin/system/v4.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/system/v5.go b/chain/actors/builtin/system/v5.go index 45423cc0c..182883398 100644 --- a/chain/actors/builtin/system/v5.go +++ b/chain/actors/builtin/system/v5.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/system/v6.go b/chain/actors/builtin/system/v6.go index 1eb1edc87..9860ce373 100644 --- a/chain/actors/builtin/system/v6.go +++ b/chain/actors/builtin/system/v6.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/system/v7.go b/chain/actors/builtin/system/v7.go index ed64d61d6..5984b0b4d 100644 --- a/chain/actors/builtin/system/v7.go +++ b/chain/actors/builtin/system/v7.go @@ -2,11 +2,11 @@ package system import ( "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors/adt" + "golang.org/x/xerrors" system7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/system" - "golang.org/x/xerrors" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/system/v8.go b/chain/actors/builtin/system/v8.go index 72f06c580..574df9c44 100644 --- a/chain/actors/builtin/system/v8.go +++ b/chain/actors/builtin/system/v8.go @@ -3,9 +3,9 @@ package system import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - system8 "github.com/filecoin-project/go-state-types/builtin/v8/system" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/system/v9.go b/chain/actors/builtin/system/v9.go index 8614d4676..40555a921 100644 --- a/chain/actors/builtin/system/v9.go +++ b/chain/actors/builtin/system/v9.go @@ -3,9 +3,9 @@ package system import ( "github.com/ipfs/go-cid" - "github.com/filecoin-project/lotus/chain/actors/adt" - system9 "github.com/filecoin-project/go-state-types/builtin/v9/system" + + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/verifreg/v0.go b/chain/actors/builtin/verifreg/v0.go index eec86eeff..debe32125 100644 --- a/chain/actors/builtin/verifreg/v0.go +++ b/chain/actors/builtin/verifreg/v0.go @@ -1,18 +1,17 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" adt0 "github.com/filecoin-project/specs-actors/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state0)(nil) diff --git a/chain/actors/builtin/verifreg/v10.go b/chain/actors/builtin/verifreg/v10.go index f2b393927..5f7cd559d 100644 --- a/chain/actors/builtin/verifreg/v10.go +++ b/chain/actors/builtin/verifreg/v10.go @@ -1,21 +1,19 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/big" builtin10 "github.com/filecoin-project/go-state-types/builtin" adt10 "github.com/filecoin-project/go-state-types/builtin/v10/util/adt" verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" - - "github.com/filecoin-project/go-state-types/big" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state10)(nil) diff --git a/chain/actors/builtin/verifreg/v2.go b/chain/actors/builtin/verifreg/v2.go index e7a4bab4a..a6f07eea2 100644 --- a/chain/actors/builtin/verifreg/v2.go +++ b/chain/actors/builtin/verifreg/v2.go @@ -1,18 +1,17 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" adt2 "github.com/filecoin-project/specs-actors/v2/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state2)(nil) diff --git a/chain/actors/builtin/verifreg/v3.go b/chain/actors/builtin/verifreg/v3.go index 443ce071d..11e56d8ae 100644 --- a/chain/actors/builtin/verifreg/v3.go +++ b/chain/actors/builtin/verifreg/v3.go @@ -1,20 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" adt3 "github.com/filecoin-project/specs-actors/v3/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state3)(nil) diff --git a/chain/actors/builtin/verifreg/v4.go b/chain/actors/builtin/verifreg/v4.go index e2753a463..da51e78b8 100644 --- a/chain/actors/builtin/verifreg/v4.go +++ b/chain/actors/builtin/verifreg/v4.go @@ -1,20 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" adt4 "github.com/filecoin-project/specs-actors/v4/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state4)(nil) diff --git a/chain/actors/builtin/verifreg/v5.go b/chain/actors/builtin/verifreg/v5.go index 9b5ea0c6e..08f8ad706 100644 --- a/chain/actors/builtin/verifreg/v5.go +++ b/chain/actors/builtin/verifreg/v5.go @@ -1,20 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" adt5 "github.com/filecoin-project/specs-actors/v5/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state5)(nil) diff --git a/chain/actors/builtin/verifreg/v6.go b/chain/actors/builtin/verifreg/v6.go index 806ebce82..8e6fc3603 100644 --- a/chain/actors/builtin/verifreg/v6.go +++ b/chain/actors/builtin/verifreg/v6.go @@ -1,20 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" adt6 "github.com/filecoin-project/specs-actors/v6/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state6)(nil) diff --git a/chain/actors/builtin/verifreg/v7.go b/chain/actors/builtin/verifreg/v7.go index 6ba0f4e04..c3b49a305 100644 --- a/chain/actors/builtin/verifreg/v7.go +++ b/chain/actors/builtin/verifreg/v7.go @@ -1,20 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" adt7 "github.com/filecoin-project/specs-actors/v7/actors/util/adt" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state7)(nil) diff --git a/chain/actors/builtin/verifreg/v8.go b/chain/actors/builtin/verifreg/v8.go index e471f5741..36d219fa0 100644 --- a/chain/actors/builtin/verifreg/v8.go +++ b/chain/actors/builtin/verifreg/v8.go @@ -1,19 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" builtin8 "github.com/filecoin-project/go-state-types/builtin" adt8 "github.com/filecoin-project/go-state-types/builtin/v8/util/adt" verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" - verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state8)(nil) diff --git a/chain/actors/builtin/verifreg/v9.go b/chain/actors/builtin/verifreg/v9.go index 482f066ed..5c84c7041 100644 --- a/chain/actors/builtin/verifreg/v9.go +++ b/chain/actors/builtin/verifreg/v9.go @@ -1,19 +1,18 @@ package verifreg import ( - "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/abi" "github.com/ipfs/go-cid" - - "github.com/filecoin-project/lotus/chain/actors" - "github.com/filecoin-project/lotus/chain/actors/adt" "golang.org/x/xerrors" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/big" builtin9 "github.com/filecoin-project/go-state-types/builtin" adt9 "github.com/filecoin-project/go-state-types/builtin/v9/util/adt" verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - "github.com/filecoin-project/go-state-types/big" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var _ State = (*state9)(nil) diff --git a/chain/actors/builtin/verifreg/verifreg.go b/chain/actors/builtin/verifreg/verifreg.go index 407799b2b..9d92751da 100644 --- a/chain/actors/builtin/verifreg/verifreg.go +++ b/chain/actors/builtin/verifreg/verifreg.go @@ -1,31 +1,22 @@ package verifreg import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtin10 "github.com/filecoin-project/go-state-types/builtin" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/go-state-types/cbor" - builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin10 "github.com/filecoin-project/go-state-types/builtin" - - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/lotus/chain/actors" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/types" diff --git a/chain/actors/policy/policy.go b/chain/actors/policy/policy.go index 00e9fe066..eff7ba899 100644 --- a/chain/actors/policy/policy.go +++ b/chain/actors/policy/policy.go @@ -1,72 +1,53 @@ package policy import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - - "github.com/filecoin-project/go-state-types/big" "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/go-state-types/network" - - market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" - miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" - verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" - - power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" - - builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" - - market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" - miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" - verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" - - builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" - - market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" - miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" - verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" - - builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" - - market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" - miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" - verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" - - builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" - - market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" - miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" - verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" - - builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" - - market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" - miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" - verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" - - builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - - market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" - miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" - verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" - + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/big" + builtin10 "github.com/filecoin-project/go-state-types/builtin" builtin8 "github.com/filecoin-project/go-state-types/builtin" + builtin9 "github.com/filecoin-project/go-state-types/builtin" + market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" + miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" + paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" market8 "github.com/filecoin-project/go-state-types/builtin/v8/market" miner8 "github.com/filecoin-project/go-state-types/builtin/v8/miner" verifreg8 "github.com/filecoin-project/go-state-types/builtin/v8/verifreg" - - builtin9 "github.com/filecoin-project/go-state-types/builtin" market9 "github.com/filecoin-project/go-state-types/builtin/v9/market" miner9 "github.com/filecoin-project/go-state-types/builtin/v9/miner" verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" - - builtin10 "github.com/filecoin-project/go-state-types/builtin" - market10 "github.com/filecoin-project/go-state-types/builtin/v10/market" - miner10 "github.com/filecoin-project/go-state-types/builtin/v10/miner" - verifreg10 "github.com/filecoin-project/go-state-types/builtin/v10/verifreg" - - paych10 "github.com/filecoin-project/go-state-types/builtin/v10/paych" + "github.com/filecoin-project/go-state-types/network" + market0 "github.com/filecoin-project/specs-actors/actors/builtin/market" + miner0 "github.com/filecoin-project/specs-actors/actors/builtin/miner" + power0 "github.com/filecoin-project/specs-actors/actors/builtin/power" + verifreg0 "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" + builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" + market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market" + miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner" + verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg" + builtin3 "github.com/filecoin-project/specs-actors/v3/actors/builtin" + market3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/market" + miner3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/miner" + verifreg3 "github.com/filecoin-project/specs-actors/v3/actors/builtin/verifreg" + builtin4 "github.com/filecoin-project/specs-actors/v4/actors/builtin" + market4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/market" + miner4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/miner" + verifreg4 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg" + builtin5 "github.com/filecoin-project/specs-actors/v5/actors/builtin" + market5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/market" + miner5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/miner" + verifreg5 "github.com/filecoin-project/specs-actors/v5/actors/builtin/verifreg" + builtin6 "github.com/filecoin-project/specs-actors/v6/actors/builtin" + market6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/market" + miner6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/miner" + verifreg6 "github.com/filecoin-project/specs-actors/v6/actors/builtin/verifreg" + builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" + market7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/market" + miner7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/miner" + verifreg7 "github.com/filecoin-project/specs-actors/v7/actors/builtin/verifreg" ) const ( diff --git a/chain/state/statetree.go b/chain/state/statetree.go index ff921a04d..ef1cb3b3a 100644 --- a/chain/state/statetree.go +++ b/chain/state/statetree.go @@ -158,7 +158,7 @@ func VersionForNetwork(ver network.Version) (types.StateTreeVersion, error) { /* inline-gen start */ - case network.Version13, network.Version14, network.Version15, network.Version16, network.Version17: + case network.Version13, network.Version14, network.Version15, network.Version16, network.Version17, network.Version18: /* inline-gen end */ return types.StateTreeVersion4, nil diff --git a/documentation/en/api-v0-methods-miner.md b/documentation/en/api-v0-methods-miner.md index 7971c05f6..d85a98ae7 100644 --- a/documentation/en/api-v0-methods-miner.md +++ b/documentation/en/api-v0-methods-miner.md @@ -473,7 +473,7 @@ Inputs: ], "Bw==", 10101, - 17 + 18 ] ``` diff --git a/documentation/en/api-v0-methods.md b/documentation/en/api-v0-methods.md index 7ee6ceaa9..91ca37a27 100644 --- a/documentation/en/api-v0-methods.md +++ b/documentation/en/api-v0-methods.md @@ -4672,7 +4672,7 @@ Perms: read Inputs: ```json [ - 17 + 18 ] ``` @@ -4687,7 +4687,7 @@ Perms: read Inputs: ```json [ - 17 + 18 ] ``` @@ -6371,7 +6371,7 @@ Inputs: ] ``` -Response: `17` +Response: `18` ### StateReadState StateReadState returns the indicated actor's state. diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 5f96eddd4..b78fcdb5d 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -5104,7 +5104,7 @@ Perms: read Inputs: ```json [ - 17 + 18 ] ``` @@ -5119,7 +5119,7 @@ Perms: read Inputs: ```json [ - 17 + 18 ] ``` @@ -6889,7 +6889,7 @@ Inputs: ] ``` -Response: `17` +Response: `18` ### StateReadState StateReadState returns the indicated actor's state. diff --git a/itests/kit/ensemble_opts_nv.go b/itests/kit/ensemble_opts_nv.go index 64bed559b..67dcbfd2e 100644 --- a/itests/kit/ensemble_opts_nv.go +++ b/itests/kit/ensemble_opts_nv.go @@ -49,12 +49,12 @@ func LatestActorsAt(upgradeHeight abi.ChainEpoch) EnsembleOpt { }) /* inline-gen start */ return UpgradeSchedule(stmgr.Upgrade{ - Network: network.Version16, + Network: network.Version17, Height: -1, }, stmgr.Upgrade{ - Network: network.Version17, + Network: network.Version18, Height: upgradeHeight, - Migration: filcns.UpgradeActorsV9, + Migration: filcns.UpgradeActorsV10, }) /* inline-gen end */ } From 3af22d307458fd2afe752d76e708e9b53636de19 Mon Sep 17 00:00:00 2001 From: vyzo Date: Mon, 7 Nov 2022 17:50:24 +0200 Subject: [PATCH 11/45] pack bundle for v10 pack.sh v10 dev/20221108.1-m2 --- build/actors/v10.tar.zst | Bin 0 -> 1200577 bytes build/builtin_actors_gen.go | 147 ++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 build/actors/v10.tar.zst diff --git a/build/actors/v10.tar.zst b/build/actors/v10.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..6748162a0f69fe068a665df31fd5f3317348944f GIT binary patch literal 1200577 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νMMCm7X>m(_MOfyWq2vmpWQFdsm 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