diff --git a/extern/filecoin-ffi b/extern/filecoin-ffi index e467d2992e..815fb3a20f 160000 --- a/extern/filecoin-ffi +++ b/extern/filecoin-ffi @@ -1 +1 @@ -Subproject commit e467d2992e3f9bd09beb71ecf84323b45d2a3511 +Subproject commit 815fb3a20fda47cad556ba2045b16021610cd02c diff --git a/fixtures/networks/butterfly.go b/fixtures/networks/butterfly.go index e2dd738941..7bfae19555 100644 --- a/fixtures/networks/butterfly.go +++ b/fixtures/networks/butterfly.go @@ -5,6 +5,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/venus/pkg/config" + "github.com/filecoin-project/venus/venus-shared/actors/builtin" "github.com/filecoin-project/venus/venus-shared/types" "github.com/ipfs/go-cid" ) @@ -32,37 +33,39 @@ func ButterflySnapNet() *NetworkConf { MinVerifiedDealSize: 1 << 20, PreCommitChallengeDelay: abi.ChainEpoch(150), ForkUpgradeParam: &config.ForkUpgradeConfig{ - BreezeGasTampingDuration: 120, - UpgradeBreezeHeight: -1, - UpgradeSmokeHeight: -2, - UpgradeIgnitionHeight: -3, - UpgradeRefuelHeight: -4, - UpgradeAssemblyHeight: -5, - UpgradeTapeHeight: -6, - UpgradeLiftoffHeight: -7, - UpgradeKumquatHeight: -8, - UpgradeCalicoHeight: -9, - UpgradePersianHeight: -10, - UpgradeOrangeHeight: -11, - UpgradeClausHeight: -12, - UpgradeTrustHeight: -13, - UpgradeNorwegianHeight: -14, - UpgradeTurboHeight: -15, - UpgradeHyperdriveHeight: -16, - UpgradeChocolateHeight: -17, - UpgradeOhSnapHeight: -18, - UpgradeSkyrHeight: -19, - UpgradeSharkHeight: -20, - UpgradeHyggeHeight: -21, - UpgradeLightningHeight: -22, - UpgradeThunderHeight: -23, - UpgradeWatermelonHeight: -24, - UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet - UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet - UpgradeDragonHeight: -25, - UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet - UpgradePhoenixHeight: -26, - UpgradeWaffleHeight: 100, + BreezeGasTampingDuration: 120, + UpgradeBreezeHeight: -1, + UpgradeSmokeHeight: -2, + UpgradeIgnitionHeight: -3, + UpgradeRefuelHeight: -4, + UpgradeAssemblyHeight: -5, + UpgradeTapeHeight: -6, + UpgradeLiftoffHeight: -7, + UpgradeKumquatHeight: -8, + UpgradeCalicoHeight: -9, + UpgradePersianHeight: -10, + UpgradeOrangeHeight: -11, + UpgradeClausHeight: -12, + UpgradeTrustHeight: -13, + UpgradeNorwegianHeight: -14, + UpgradeTurboHeight: -15, + UpgradeHyperdriveHeight: -16, + UpgradeChocolateHeight: -17, + UpgradeOhSnapHeight: -18, + UpgradeSkyrHeight: -19, + UpgradeSharkHeight: -20, + UpgradeHyggeHeight: -21, + UpgradeLightningHeight: -22, + UpgradeThunderHeight: -23, + UpgradeWatermelonHeight: -24, + UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet + UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet + UpgradeDragonHeight: -25, + UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet + UpgradePhoenixHeight: -26, + UpgradeWaffleHeight: -27, + UpgradeTuktukHeight: 9999999, + UpgradeTuktukPowerRampDurationEpochs: builtin.EpochsInYear, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: config.DrandQuicknet}, AddressNetwork: address.Testnet, diff --git a/fixtures/networks/calibration.go b/fixtures/networks/calibration.go index 79447e205a..2d1861cf36 100644 --- a/fixtures/networks/calibration.go +++ b/fixtures/networks/calibration.go @@ -6,6 +6,7 @@ import ( "github.com/filecoin-project/go-state-types/network" builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin" "github.com/filecoin-project/venus/pkg/config" + "github.com/filecoin-project/venus/venus-shared/actors/builtin" "github.com/filecoin-project/venus/venus-shared/types" "github.com/ipfs/go-cid" ) @@ -39,36 +40,38 @@ func Calibration() *NetworkConf { MinVerifiedDealSize: 1 << 20, PreCommitChallengeDelay: abi.ChainEpoch(150), ForkUpgradeParam: &config.ForkUpgradeConfig{ - BreezeGasTampingDuration: 120, - UpgradeBreezeHeight: -1, - UpgradeSmokeHeight: -2, - UpgradeIgnitionHeight: -3, - UpgradeRefuelHeight: -4, - UpgradeAssemblyHeight: 30, - UpgradeTapeHeight: 60, - UpgradeLiftoffHeight: -5, - UpgradeKumquatHeight: 90, - UpgradeCalicoHeight: 120, - UpgradePersianHeight: 120 + (builtin2.EpochsInHour * 1), - UpgradeClausHeight: 270, - UpgradeOrangeHeight: 300, - UpgradeTrustHeight: 330, - UpgradeNorwegianHeight: 360, - UpgradeTurboHeight: 390, - UpgradeHyperdriveHeight: 420, - UpgradeChocolateHeight: 450, - UpgradeOhSnapHeight: 480, - UpgradeSkyrHeight: 510, - UpgradeSharkHeight: 16800, - UpgradeHyggeHeight: 322354, // 2023-02-21T16:30:00Z - UpgradeLightningHeight: 489094, // 2023-04-20T14:00:00Z - UpgradeThunderHeight: 489094 + 3120, // 2023-04-21T16:00:00Z - UpgradeWatermelonHeight: 1013134, // 2023-10-19T13:00:00Z - UpgradeWatermelonFixHeight: 1070494, // 2023-11-07T13:00:00Z - UpgradeWatermelonFix2Height: 1108174, // 2023-11-21T13:00:00Z - UpgradeDragonHeight: 1427974, // 2024-03-11T14:00:00Z - UpgradeCalibrationDragonFixHeight: 1493854, // 2024-04-03T11:00:00Z - UpgradeWaffleHeight: 1779094, // 2024-07-11T12:00:00Z + BreezeGasTampingDuration: 120, + UpgradeBreezeHeight: -1, + UpgradeSmokeHeight: -2, + UpgradeIgnitionHeight: -3, + UpgradeRefuelHeight: -4, + UpgradeAssemblyHeight: 30, + UpgradeTapeHeight: 60, + UpgradeLiftoffHeight: -5, + UpgradeKumquatHeight: 90, + UpgradeCalicoHeight: 120, + UpgradePersianHeight: 120 + (builtin2.EpochsInHour * 1), + UpgradeClausHeight: 270, + UpgradeOrangeHeight: 300, + UpgradeTrustHeight: 330, + UpgradeNorwegianHeight: 360, + UpgradeTurboHeight: 390, + UpgradeHyperdriveHeight: 420, + UpgradeChocolateHeight: 450, + UpgradeOhSnapHeight: 480, + UpgradeSkyrHeight: 510, + UpgradeSharkHeight: 16800, + UpgradeHyggeHeight: 322354, // 2023-02-21T16:30:00Z + UpgradeLightningHeight: 489094, // 2023-04-20T14:00:00Z + UpgradeThunderHeight: 489094 + 3120, // 2023-04-21T16:00:00Z + UpgradeWatermelonHeight: 1013134, // 2023-10-19T13:00:00Z + UpgradeWatermelonFixHeight: 1070494, // 2023-11-07T13:00:00Z + UpgradeWatermelonFix2Height: 1108174, // 2023-11-21T13:00:00Z + UpgradeDragonHeight: 1427974, // 2024-03-11T14:00:00Z + UpgradeCalibrationDragonFixHeight: 1493854, // 2024-04-03T11:00:00Z + UpgradeWaffleHeight: 1779094, // 2024-07-11T12:00:00Z + UpgradeTuktukHeight: 99999999, + UpgradeTuktukPowerRampDurationEpochs: builtin.EpochsInDay * 3, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: 1}, AddressNetwork: address.Testnet, diff --git a/fixtures/networks/forcenet.go b/fixtures/networks/forcenet.go index 98009988cd..72aac1f28a 100644 --- a/fixtures/networks/forcenet.go +++ b/fixtures/networks/forcenet.go @@ -19,7 +19,7 @@ func ForceNet() *NetworkConf { Network: config.NetworkParamsConfig{ DevNet: true, NetworkType: types.NetworkForce, - GenesisNetworkVersion: network.Version22, + GenesisNetworkVersion: network.Version23, ReplaceProofTypes: []abi.RegisteredSealProof{ abi.RegisteredSealProof_StackedDrg8MiBV1, abi.RegisteredSealProof_StackedDrg512MiBV1, @@ -41,30 +41,32 @@ func ForceNet() *NetworkConf { // Miners, clients, developers, custodians all need time to prepare. // We still have upgrades and state changes to do, but can happen after signaling timing here. - UpgradeAssemblyHeight: -7, // critical: the network can bootstrap from v1 only - UpgradeKumquatHeight: -8, - UpgradeCalicoHeight: -9, - UpgradePersianHeight: -10, - UpgradeOrangeHeight: -11, - UpgradeClausHeight: -12, - UpgradeTrustHeight: -13, - UpgradeNorwegianHeight: -14, - UpgradeTurboHeight: -15, - UpgradeHyperdriveHeight: -16, - UpgradeChocolateHeight: -17, - UpgradeOhSnapHeight: -18, - UpgradeSkyrHeight: -19, - UpgradeSharkHeight: -20, - UpgradeHyggeHeight: -21, - UpgradeLightningHeight: -22, - UpgradeThunderHeight: -23, - UpgradeWatermelonHeight: -24, - UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet - UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet - UpgradeDragonHeight: -25, - UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet - UpgradePhoenixHeight: -26, - UpgradeWaffleHeight: 200, + UpgradeAssemblyHeight: -7, // critical: the network can bootstrap from v1 only + UpgradeKumquatHeight: -8, + UpgradeCalicoHeight: -9, + UpgradePersianHeight: -10, + UpgradeOrangeHeight: -11, + UpgradeClausHeight: -12, + UpgradeTrustHeight: -13, + UpgradeNorwegianHeight: -14, + UpgradeTurboHeight: -15, + UpgradeHyperdriveHeight: -16, + UpgradeChocolateHeight: -17, + UpgradeOhSnapHeight: -18, + UpgradeSkyrHeight: -19, + UpgradeSharkHeight: -20, + UpgradeHyggeHeight: -21, + UpgradeLightningHeight: -22, + UpgradeThunderHeight: -23, + UpgradeWatermelonHeight: -24, + UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet + UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet + UpgradeDragonHeight: -25, + UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet + UpgradePhoenixHeight: -26, + UpgradeWaffleHeight: -27, + UpgradeTuktukHeight: 200, + UpgradeTuktukPowerRampDurationEpochs: 200, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: config.DrandQuicknet}, AddressNetwork: address.Testnet, diff --git a/fixtures/networks/integrationtestnet.go b/fixtures/networks/integrationtestnet.go index 229275d4d3..42fa6f124a 100644 --- a/fixtures/networks/integrationtestnet.go +++ b/fixtures/networks/integrationtestnet.go @@ -57,6 +57,7 @@ func IntegrationNet() *NetworkConf { UpgradeDragonHeight: 3855360, UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet UpgradeWaffleHeight: 4154640, + UpgradeTuktukHeight: 999999999, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: 5, 51000: 1}, AddressNetwork: address.Testnet, diff --git a/fixtures/networks/interopnet.go b/fixtures/networks/interopnet.go index 9003964223..ee5fcbca4d 100644 --- a/fixtures/networks/interopnet.go +++ b/fixtures/networks/interopnet.go @@ -5,6 +5,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/venus/pkg/config" + "github.com/filecoin-project/venus/venus-shared/actors/builtin" "github.com/filecoin-project/venus/venus-shared/types" "github.com/ipfs/go-cid" ) @@ -32,37 +33,39 @@ func InteropNet() *NetworkConf { MinVerifiedDealSize: 256, PreCommitChallengeDelay: abi.ChainEpoch(10), ForkUpgradeParam: &config.ForkUpgradeConfig{ - BreezeGasTampingDuration: 0, - UpgradeBreezeHeight: -1, - UpgradeSmokeHeight: -2, - UpgradeIgnitionHeight: -3, - UpgradeRefuelHeight: -4, - UpgradeAssemblyHeight: -5, - UpgradeTapeHeight: -6, - UpgradeLiftoffHeight: -7, - UpgradeKumquatHeight: -8, - UpgradeCalicoHeight: -9, - UpgradePersianHeight: -10, - UpgradeOrangeHeight: -11, - UpgradeClausHeight: -12, - UpgradeTrustHeight: -13, - UpgradeNorwegianHeight: -14, - UpgradeTurboHeight: -15, - UpgradeHyperdriveHeight: -16, - UpgradeChocolateHeight: -17, - UpgradeOhSnapHeight: -18, - UpgradeSkyrHeight: -19, - UpgradeSharkHeight: -20, - UpgradeHyggeHeight: -21, - UpgradeLightningHeight: -22, - UpgradeThunderHeight: -23, - UpgradeWatermelonHeight: -24, - UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet - UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet - UpgradeDragonHeight: -25, - UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet - UpgradePhoenixHeight: -26, - UpgradeWaffleHeight: 50, + BreezeGasTampingDuration: 0, + UpgradeBreezeHeight: -1, + UpgradeSmokeHeight: -2, + UpgradeIgnitionHeight: -3, + UpgradeRefuelHeight: -4, + UpgradeAssemblyHeight: -5, + UpgradeTapeHeight: -6, + UpgradeLiftoffHeight: -7, + UpgradeKumquatHeight: -8, + UpgradeCalicoHeight: -9, + UpgradePersianHeight: -10, + UpgradeOrangeHeight: -11, + UpgradeClausHeight: -12, + UpgradeTrustHeight: -13, + UpgradeNorwegianHeight: -14, + UpgradeTurboHeight: -15, + UpgradeHyperdriveHeight: -16, + UpgradeChocolateHeight: -17, + UpgradeOhSnapHeight: -18, + UpgradeSkyrHeight: -19, + UpgradeSharkHeight: -20, + UpgradeHyggeHeight: -21, + UpgradeLightningHeight: -22, + UpgradeThunderHeight: -23, + UpgradeWatermelonHeight: -24, + UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet + UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet + UpgradeDragonHeight: -25, + UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet + UpgradePhoenixHeight: -26, + UpgradeWaffleHeight: -27, + UpgradeTuktukHeight: 50, + UpgradeTuktukPowerRampDurationEpochs: builtin.EpochsInYear, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: config.DrandQuicknet}, AddressNetwork: address.Testnet, diff --git a/fixtures/networks/mainnet.go b/fixtures/networks/mainnet.go index 62efbdab73..f8b5c95473 100644 --- a/fixtures/networks/mainnet.go +++ b/fixtures/networks/mainnet.go @@ -46,28 +46,30 @@ func Mainnet() *NetworkConf { // This signals our tentative epoch for mainnet launch. Can make it later, but not earlier. // Miners, clients, developers, custodians all need time to prepare. // We still have upgrades and state changes to do, but can happen after signaling timing here. - UpgradeKumquatHeight: 170000, - UpgradeCalicoHeight: 265200, - UpgradePersianHeight: 265200 + (builtin2.EpochsInHour * 60), - UpgradeOrangeHeight: 336458, - UpgradeClausHeight: 343200, // 2020-12-22T02:00:00Z - UpgradeTrustHeight: 550321, // 2021-03-04T00:00:30Z - UpgradeNorwegianHeight: 665280, // 2021-04-12T22:00:00Z - UpgradeTurboHeight: 712320, // 2021-04-29T06:00:00Z - UpgradeHyperdriveHeight: 892800, // 2021-06-30T22:00:00Z - UpgradeChocolateHeight: 1231620, - UpgradeOhSnapHeight: 1594680, // 2022-03-01T15:00:00Z - UpgradeSkyrHeight: 1960320, // 2022-07-06T14:00:00Z - UpgradeSharkHeight: 2383680, // 2022-11-30T14:00:00Z - UpgradeHyggeHeight: 2683348, // 2023-03-14T15:14:00Z - UpgradeLightningHeight: 2809800, // 2023-04-27T13:00:00Z - UpgradeThunderHeight: 2809800 + 2880*21, // 2023-05-18T13:00:00Z - UpgradeWatermelonHeight: 3469380, // 2023-12-12T13:30:00Z - UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet - UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet - UpgradeDragonHeight: 3855360, // 2024-04-24T14:00:00Z - UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet - UpgradeWaffleHeight: 4154640, // 2024-08-06T12:00:00Z + UpgradeKumquatHeight: 170000, + UpgradeCalicoHeight: 265200, + UpgradePersianHeight: 265200 + (builtin2.EpochsInHour * 60), + UpgradeOrangeHeight: 336458, + UpgradeClausHeight: 343200, // 2020-12-22T02:00:00Z + UpgradeTrustHeight: 550321, // 2021-03-04T00:00:30Z + UpgradeNorwegianHeight: 665280, // 2021-04-12T22:00:00Z + UpgradeTurboHeight: 712320, // 2021-04-29T06:00:00Z + UpgradeHyperdriveHeight: 892800, // 2021-06-30T22:00:00Z + UpgradeChocolateHeight: 1231620, + UpgradeOhSnapHeight: 1594680, // 2022-03-01T15:00:00Z + UpgradeSkyrHeight: 1960320, // 2022-07-06T14:00:00Z + UpgradeSharkHeight: 2383680, // 2022-11-30T14:00:00Z + UpgradeHyggeHeight: 2683348, // 2023-03-14T15:14:00Z + UpgradeLightningHeight: 2809800, // 2023-04-27T13:00:00Z + UpgradeThunderHeight: 2809800 + 2880*21, // 2023-05-18T13:00:00Z + UpgradeWatermelonHeight: 3469380, // 2023-12-12T13:30:00Z + UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet + UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet + UpgradeDragonHeight: 3855360, // 2024-04-24T14:00:00Z + UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet + UpgradeWaffleHeight: 4154640, // 2024-08-06T12:00:00Z + UpgradeTuktukHeight: 9999999, + UpgradeTuktukPowerRampDurationEpochs: builtin2.EpochsInYear, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: 5, 51000: 1}, AddressNetwork: address.Mainnet, diff --git a/fixtures/networks/net_2k.go b/fixtures/networks/net_2k.go index 5cba497cb6..fd1846a7b5 100644 --- a/fixtures/networks/net_2k.go +++ b/fixtures/networks/net_2k.go @@ -18,7 +18,7 @@ func Net2k() *NetworkConf { Network: config.NetworkParamsConfig{ DevNet: true, NetworkType: types.Network2k, - GenesisNetworkVersion: network.Version22, + GenesisNetworkVersion: network.Version23, ReplaceProofTypes: []abi.RegisteredSealProof{ abi.RegisteredSealProof_StackedDrg2KiBV1, abi.RegisteredSealProof_StackedDrg8MiBV1, @@ -28,37 +28,39 @@ func Net2k() *NetworkConf { MinVerifiedDealSize: 256, PreCommitChallengeDelay: abi.ChainEpoch(10), ForkUpgradeParam: &config.ForkUpgradeConfig{ - BreezeGasTampingDuration: 0, - UpgradeBreezeHeight: -1, - UpgradeSmokeHeight: -2, - UpgradeIgnitionHeight: -3, - UpgradeRefuelHeight: -4, - UpgradeTapeHeight: -5, - UpgradeAssemblyHeight: -6, - UpgradeLiftoffHeight: -7, - UpgradeKumquatHeight: -8, - UpgradeCalicoHeight: -9, - UpgradePersianHeight: -10, - UpgradeOrangeHeight: -11, - UpgradeClausHeight: -12, - UpgradeTrustHeight: -13, - UpgradeNorwegianHeight: -14, - UpgradeTurboHeight: -15, - UpgradeHyperdriveHeight: -16, - UpgradeChocolateHeight: -17, - UpgradeOhSnapHeight: -18, - UpgradeSkyrHeight: -19, - UpgradeSharkHeight: -20, - UpgradeHyggeHeight: -21, - UpgradeLightningHeight: -22, - UpgradeThunderHeight: -23, - UpgradeWatermelonHeight: -24, - UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet - UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet - UpgradeDragonHeight: -25, - UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet - UpgradePhoenixHeight: -26, - UpgradeWaffleHeight: 200, + BreezeGasTampingDuration: 0, + UpgradeBreezeHeight: -1, + UpgradeSmokeHeight: -2, + UpgradeIgnitionHeight: -3, + UpgradeRefuelHeight: -4, + UpgradeTapeHeight: -5, + UpgradeAssemblyHeight: -6, + UpgradeLiftoffHeight: -7, + UpgradeKumquatHeight: -8, + UpgradeCalicoHeight: -9, + UpgradePersianHeight: -10, + UpgradeOrangeHeight: -11, + UpgradeClausHeight: -12, + UpgradeTrustHeight: -13, + UpgradeNorwegianHeight: -14, + UpgradeTurboHeight: -15, + UpgradeHyperdriveHeight: -16, + UpgradeChocolateHeight: -17, + UpgradeOhSnapHeight: -18, + UpgradeSkyrHeight: -19, + UpgradeSharkHeight: -20, + UpgradeHyggeHeight: -21, + UpgradeLightningHeight: -22, + UpgradeThunderHeight: -23, + UpgradeWatermelonHeight: -24, + UpgradeWatermelonFixHeight: -100, // This fix upgrade only ran on calibrationnet + UpgradeWatermelonFix2Height: -101, // This fix upgrade only ran on calibrationnet + UpgradeDragonHeight: -25, + UpgradeCalibrationDragonFixHeight: -102, // This fix upgrade only ran on calibrationnet + UpgradePhoenixHeight: -26, + UpgradeWaffleHeight: -27, + UpgradeTuktukPowerRampDurationEpochs: 200, + UpgradeTuktukHeight: 200, }, DrandSchedule: map[abi.ChainEpoch]config.DrandEnum{0: config.DrandQuicknet}, AddressNetwork: address.Testnet, diff --git a/go.mod b/go.mod index 8acba2649e..b5d6c0f6c8 100644 --- a/go.mod +++ b/go.mod @@ -20,21 +20,21 @@ require ( github.com/etherlabsio/healthcheck/v2 v2.0.0 github.com/fatih/color v1.15.0 github.com/filecoin-project/filecoin-ffi v0.30.4-0.20200910194244-f640612a1a1f - github.com/filecoin-project/go-address v1.1.0 + github.com/filecoin-project/go-address v1.2.0 github.com/filecoin-project/go-amt-ipld/v4 v4.4.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 - github.com/filecoin-project/go-crypto v0.0.1 + github.com/filecoin-project/go-crypto v0.1.0 github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6 github.com/filecoin-project/go-f3 v0.7.0 - github.com/filecoin-project/go-fil-commcid v0.1.0 + github.com/filecoin-project/go-fil-commcid v0.2.0 github.com/filecoin-project/go-fil-markets v1.28.2 github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-paramfetch v0.0.4 - github.com/filecoin-project/go-state-types v0.15.0-dev + github.com/filecoin-project/go-state-types v0.15.0-rc1 github.com/filecoin-project/pubsub v1.0.0 - github.com/filecoin-project/specs-actors v0.9.15 + github.com/filecoin-project/specs-actors v0.9.15-0.20220514164640-94e0d5e123bd github.com/filecoin-project/specs-actors/v2 v2.3.6 github.com/filecoin-project/specs-actors/v3 v3.1.2 github.com/filecoin-project/specs-actors/v4 v4.0.2 @@ -104,12 +104,12 @@ require ( go.opentelemetry.io/otel/exporters/prometheus v0.50.0 go.opentelemetry.io/otel/sdk v1.28.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.25.0 + golang.org/x/crypto v0.27.0 golang.org/x/net v0.26.0 golang.org/x/oauth2 v0.21.0 golang.org/x/sync v0.8.0 - golang.org/x/sys v0.23.0 - golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 + golang.org/x/sys v0.25.0 + golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da gopkg.in/cheggaaa/pb.v1 v1.0.28 gorm.io/driver/mysql v1.1.1 gorm.io/gorm v1.21.12 @@ -152,6 +152,8 @@ require ( github.com/pion/webrtc/v3 v3.2.40 // indirect github.com/whyrusleeping/cbor v0.0.0-20171005072247-63513f603b11 // indirect github.com/whyrusleeping/go-logging v0.0.1 // indirect + gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect + gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e // indirect go.uber.org/mock v0.4.0 // indirect gonum.org/v1/gonum v0.15.0 // indirect @@ -248,7 +250,6 @@ require ( github.com/ipfs/go-verifcid v0.0.3 // indirect github.com/ipld/go-codec-dagpb v1.6.0 // indirect github.com/ipld/go-ipld-prime v0.21.0 - github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect @@ -341,8 +342,8 @@ require ( golang.org/x/arch v0.3.0 // indirect golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/api v0.81.0 // indirect diff --git a/go.sum b/go.sum index ce149e3158..5659906fb3 100644 --- a/go.sum +++ b/go.sum @@ -250,8 +250,9 @@ github.com/filecoin-project/dagstore v0.5.2 h1:Nd6oXdnolbbVhpMpkYT5PJHOjQp4OBSnt github.com/filecoin-project/dagstore v0.5.2/go.mod h1:mdqKzYrRBHf1pRMthYfMv3n37oOw0Tkx7+TxPt240M0= 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 v1.1.0 h1:ofdtUtEsNxkIxkDw67ecSmvtzaVSdcea4boAmLbnHfE= github.com/filecoin-project/go-address v1.1.0/go.mod h1:5t3z6qPmIADZBtuE9EIzi0EwzcRy2nVhpo0I/c1r0OA= +github.com/filecoin-project/go-address v1.2.0 h1:NHmWUE/J7Pi2JZX3gZt32XuY69o9StVZeJxdBodIwOE= +github.com/filecoin-project/go-address v1.2.0/go.mod h1:kQEQ4qZ99a51X7DjT9HiMT4yR6UwLJ9kznlxsOIeDAg= github.com/filecoin-project/go-amt-ipld/v2 v2.1.0/go.mod h1:nfFPoGyX0CU9SkXX8EoCcSuHN1XcbN0c6KBh7yvP5fs= github.com/filecoin-project/go-amt-ipld/v2 v2.1.1-0.20201006184820-924ee87a1349 h1:pIuR0dnMD0i+as8wNnjjHyQrnhP5O5bmba/lmgQeRgU= github.com/filecoin-project/go-amt-ipld/v2 v2.1.1-0.20201006184820-924ee87a1349/go.mod h1:vgmwKBkx+ca5OIeEvstiQgzAZnb7R6QaqE1oEDSqa6g= @@ -277,8 +278,9 @@ github.com/filecoin-project/go-commp-utils/nonffi v0.0.0-20220905160352-62059082 github.com/filecoin-project/go-commp-utils/v2 v2.1.0 h1:KWNRalUp2bhN1SW7STsJS2AHs9mnfGKk9LnQgzDe+gI= github.com/filecoin-project/go-commp-utils/v2 v2.1.0/go.mod h1:NbxJYlhxtWaNhlVCj/gysLNu26kYII83IV5iNrAO9iI= github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= -github.com/filecoin-project/go-crypto v0.0.1 h1:AcvpSGGCgjaY8y1az6AMfKQWreF/pWO2JJGLl6gCq6o= github.com/filecoin-project/go-crypto v0.0.1/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ= +github.com/filecoin-project/go-crypto v0.1.0 h1:Pob2MphoipMbe/ksxZOMcQvmBHAd3sI/WEqcbpIsGI0= +github.com/filecoin-project/go-crypto v0.1.0/go.mod h1:K9UFXvvoyAVvB+0Le7oGlKiT9mgA5FHOJdYQXEE8IhI= github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6 h1:EsbXTWsBKT764qtX4MMJBNXMHoEa+g5Xg01azMqxXX0= github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6/go.mod h1:cX1acvFVWC5EXnnmFPWEFXbO7nLUdSZa+nqgi1QpTpw= github.com/filecoin-project/go-ds-versioning v0.1.2 h1:to4pTadv3IeV1wvgbCbN6Vqd+fu+7tveXgv/rCEZy6w= @@ -286,8 +288,9 @@ github.com/filecoin-project/go-ds-versioning v0.1.2/go.mod h1:C9/l9PnB1+mwPa26BB github.com/filecoin-project/go-f3 v0.7.0 h1:JNo39SAELT5hEn+rmQZbSJQBJfmGJtp70RfyWJrIayY= github.com/filecoin-project/go-f3 v0.7.0/go.mod h1:QoxuoK4aktNZD1R/unlhNbhV6TnlNTAbA/QODCnAjak= github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= -github.com/filecoin-project/go-fil-commcid v0.1.0 h1:3R4ds1A9r6cr8mvZBfMYxTS88OqLYEo6roi+GiIeOh8= github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ= +github.com/filecoin-project/go-fil-commcid v0.2.0 h1:B+5UX8XGgdg/XsdUpST4pEBviKkFOw+Fvl2bLhSKGpI= +github.com/filecoin-project/go-fil-commcid v0.2.0/go.mod h1:8yigf3JDIil+/WpqR5zoKyP0jBPCOGtEqq/K1CcMy9Q= github.com/filecoin-project/go-fil-commp-hashhash v0.2.0 h1:HYIUugzjq78YvV3vC6rL95+SfC/aSTVSnZSZiDV5pCk= github.com/filecoin-project/go-fil-commp-hashhash v0.2.0/go.mod h1:VH3fAFOru4yyWar4626IoS5+VGE8SfZiBODJLUigEo4= github.com/filecoin-project/go-fil-markets v1.28.2 h1:Ev9o8BYow+lo97Bwc6oOmZ2OxdiHeIDCQsfF/w/Vldc= @@ -313,8 +316,8 @@ github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4 github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.14.0-rc1/go.mod h1:cHpOPup9H1g2T29dKHAjC2sc7/Ef5ypjuW9A3I+e9yY= -github.com/filecoin-project/go-state-types v0.15.0-dev h1:6lR4q5QSCUqOEfy2RWEsOLADd82T/K9CwGNMj27Fpwo= -github.com/filecoin-project/go-state-types v0.15.0-dev/go.mod h1:dMXsOsurh57in11qTmPpYyrhGQAOhVtHQXnyV0X+QQk= +github.com/filecoin-project/go-state-types v0.15.0-rc1 h1:tfXvhMAAo4jBQIEM1AjQzDCbwqvsxVMOLhIcDYf10fA= +github.com/filecoin-project/go-state-types v0.15.0-rc1/go.mod h1:YcWoJE/24XGEL6w9FjUoMBu7+eHEkgwKnkGZkTBX9TE= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v1.0.3 h1:N07o6alys+V1tNoSTi4WuuoeNC4erS/6jE74+NsgQuk= github.com/filecoin-project/go-statemachine v1.0.3/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= @@ -324,9 +327,8 @@ github.com/filecoin-project/go-statestore v0.2.0/go.mod h1:8sjBYbS35HwPzct7iT4lI github.com/filecoin-project/pubsub v1.0.0 h1:ZTmT27U07e54qV1mMiQo4HDr0buo8I1LDHBYLXlsNXM= github.com/filecoin-project/pubsub v1.0.0/go.mod h1:GkpB33CcUtUNrLPhJgfdy4FDx4OMNR9k+46DHx/Lqrg= github.com/filecoin-project/specs-actors v0.9.13/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= +github.com/filecoin-project/specs-actors v0.9.15-0.20220514164640-94e0d5e123bd h1:PoQ9+o9zjqD7gBMAvG0nwvpmmONo2lFajmjIfzlqeFc= github.com/filecoin-project/specs-actors v0.9.15-0.20220514164640-94e0d5e123bd/go.mod h1:pjGEe3QlWtK20ju/aFRsiArbMX6Cn8rqEhhsiCM9xYE= -github.com/filecoin-project/specs-actors v0.9.15 h1:3VpKP5/KaDUHQKAMOg4s35g/syDaEBueKLws0vbsjMc= -github.com/filecoin-project/specs-actors v0.9.15/go.mod h1:pjGEe3QlWtK20ju/aFRsiArbMX6Cn8rqEhhsiCM9xYE= github.com/filecoin-project/specs-actors/v2 v2.3.6 h1:UxnWTfQd7JsOae39/aHCK0m1IBjdcyymCJfqxuSkn+g= github.com/filecoin-project/specs-actors/v2 v2.3.6/go.mod h1:DJMpxVRXvev9t8P0XWA26RmTzN+MHiL9IlItVLT0zUc= github.com/filecoin-project/specs-actors/v3 v3.1.2 h1:Gq3gAbvdGLA/D0GKz1IJfewt9Fh7gA32TPt46Xv+1Cw= @@ -545,8 +547,9 @@ github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f h1:KMlcu9X58lhTA/KrfX8Bi1LQSO4pzoVjTiL3h4Jk+Zk= github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= +github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -771,7 +774,6 @@ github.com/ipni/go-libipni v0.0.7 h1:L0AnFQagedfJU5mJ7kz0H8P1452brJveOQeS6p3MmbA github.com/ipni/go-libipni v0.0.7/go.mod h1:TlGZaGMGIVpeb6fiwttfY1JgaMnH+HDVPzxgRJJPaQY= github.com/ipni/index-provider v0.12.0 h1:R3F6dxxKNv4XkE4GJZNLOG0bDEbBQ/S5iztXwSD8jhQ= github.com/ipni/index-provider v0.12.0/go.mod h1:GhyrADJp7n06fqoc1djzkvL4buZYHzV8SoWrlxEo5F4= -github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 h1:QG4CGBqCeuBo6aZlGAamSkxWdgWfZGeE49eUOWJPA4c= github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52/go.mod h1:fdg+/X9Gg4AsAIzWpEHwnqd+QY3b7lajxyjE1m4hkq4= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= @@ -1407,6 +1409,10 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= +gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= +gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= +gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= +gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= go.dedis.ch/fixbuf v1.0.3 h1:hGcV9Cd/znUxlusJ64eAlExS+5cJDIyTyEG+otu5wQs= go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw= go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e h1:BAGc1ommHzlhqHktWyRmoldVONj3QHMzdfGLW4ItltA= @@ -1514,8 +1520,8 @@ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1783,8 +1789,8 @@ golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1798,8 +1804,8 @@ golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1815,8 +1821,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1895,8 +1901,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 h1:LLhsEBxRTBLuKlQxFBYUOU8xyFgXv6cOTp2HASDlsDk= -golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= diff --git a/pkg/config/config.go b/pkg/config/config.go index 3db1d75b5b..876789f2eb 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -320,39 +320,40 @@ type NetworkParamsConfig struct { // ForkUpgradeConfig record upgrade parameters type ForkUpgradeConfig struct { - UpgradeSmokeHeight abi.ChainEpoch `json:"upgradeSmokeHeight"` - UpgradeBreezeHeight abi.ChainEpoch `json:"upgradeBreezeHeight"` - UpgradeIgnitionHeight abi.ChainEpoch `json:"upgradeIgnitionHeight"` - UpgradeLiftoffHeight abi.ChainEpoch `json:"upgradeLiftoffHeight"` - UpgradeAssemblyHeight abi.ChainEpoch `json:"upgradeActorsV2Height"` - UpgradeRefuelHeight abi.ChainEpoch `json:"upgradeRefuelHeight"` - UpgradeTapeHeight abi.ChainEpoch `json:"upgradeTapeHeight"` - UpgradeKumquatHeight abi.ChainEpoch `json:"upgradeKumquatHeight"` - UpgradePriceListOopsHeight abi.ChainEpoch `json:"upgradePriceListOopsHeight"` - BreezeGasTampingDuration abi.ChainEpoch `json:"breezeGasTampingDuration"` - UpgradeCalicoHeight abi.ChainEpoch `json:"upgradeCalicoHeight"` - UpgradePersianHeight abi.ChainEpoch `json:"upgradePersianHeight"` - UpgradeOrangeHeight abi.ChainEpoch `json:"upgradeOrangeHeight"` - UpgradeClausHeight abi.ChainEpoch `json:"upgradeClausHeight"` - UpgradeTrustHeight abi.ChainEpoch `json:"upgradeActorsV3Height"` - UpgradeNorwegianHeight abi.ChainEpoch `json:"upgradeNorwegianHeight"` - UpgradeTurboHeight abi.ChainEpoch `json:"upgradeActorsV4Height"` - UpgradeHyperdriveHeight abi.ChainEpoch `json:"upgradeHyperdriveHeight"` - UpgradeChocolateHeight abi.ChainEpoch `json:"upgradeChocolateHeight"` - UpgradeOhSnapHeight abi.ChainEpoch `json:"upgradeOhSnapHeight"` - UpgradeSkyrHeight abi.ChainEpoch `json:"upgradeSkyrHeight"` - UpgradeSharkHeight abi.ChainEpoch `json:"upgradeSharkHeight"` - UpgradeHyggeHeight abi.ChainEpoch `json:"upgradeHyggeHeight"` - UpgradeLightningHeight abi.ChainEpoch `json:"upgradeLightningHeight"` - UpgradeThunderHeight abi.ChainEpoch `json:"upgradeThunderHeight"` - UpgradeWatermelonHeight abi.ChainEpoch `json:"upgradeWatermelonHeight"` - UpgradeWatermelonFixHeight abi.ChainEpoch `json:"upgradeWatermelonFixHeight"` - UpgradeWatermelonFix2Height abi.ChainEpoch `json:"upgradeWatermelonFix2Height"` - UpgradeDragonHeight abi.ChainEpoch `json:"upgradeDragonHeight"` - UpgradePhoenixHeight abi.ChainEpoch `json:"upgradePhoenixHeight"` - UpgradeCalibrationDragonFixHeight abi.ChainEpoch `json:"upgradeCalibrationDragonFixHeight"` - UpgradeWaffleHeight abi.ChainEpoch `json:"upgradeWaffleHeight"` - UpgradeTuktukHeight abi.ChainEpoch `json:"UpgradeTuktukHeight"` + UpgradeSmokeHeight abi.ChainEpoch `json:"upgradeSmokeHeight"` + UpgradeBreezeHeight abi.ChainEpoch `json:"upgradeBreezeHeight"` + UpgradeIgnitionHeight abi.ChainEpoch `json:"upgradeIgnitionHeight"` + UpgradeLiftoffHeight abi.ChainEpoch `json:"upgradeLiftoffHeight"` + UpgradeAssemblyHeight abi.ChainEpoch `json:"upgradeActorsV2Height"` + UpgradeRefuelHeight abi.ChainEpoch `json:"upgradeRefuelHeight"` + UpgradeTapeHeight abi.ChainEpoch `json:"upgradeTapeHeight"` + UpgradeKumquatHeight abi.ChainEpoch `json:"upgradeKumquatHeight"` + UpgradePriceListOopsHeight abi.ChainEpoch `json:"upgradePriceListOopsHeight"` + BreezeGasTampingDuration abi.ChainEpoch `json:"breezeGasTampingDuration"` + UpgradeCalicoHeight abi.ChainEpoch `json:"upgradeCalicoHeight"` + UpgradePersianHeight abi.ChainEpoch `json:"upgradePersianHeight"` + UpgradeOrangeHeight abi.ChainEpoch `json:"upgradeOrangeHeight"` + UpgradeClausHeight abi.ChainEpoch `json:"upgradeClausHeight"` + UpgradeTrustHeight abi.ChainEpoch `json:"upgradeActorsV3Height"` + UpgradeNorwegianHeight abi.ChainEpoch `json:"upgradeNorwegianHeight"` + UpgradeTurboHeight abi.ChainEpoch `json:"upgradeActorsV4Height"` + UpgradeHyperdriveHeight abi.ChainEpoch `json:"upgradeHyperdriveHeight"` + UpgradeChocolateHeight abi.ChainEpoch `json:"upgradeChocolateHeight"` + UpgradeOhSnapHeight abi.ChainEpoch `json:"upgradeOhSnapHeight"` + UpgradeSkyrHeight abi.ChainEpoch `json:"upgradeSkyrHeight"` + UpgradeSharkHeight abi.ChainEpoch `json:"upgradeSharkHeight"` + UpgradeHyggeHeight abi.ChainEpoch `json:"upgradeHyggeHeight"` + UpgradeLightningHeight abi.ChainEpoch `json:"upgradeLightningHeight"` + UpgradeThunderHeight abi.ChainEpoch `json:"upgradeThunderHeight"` + UpgradeWatermelonHeight abi.ChainEpoch `json:"upgradeWatermelonHeight"` + UpgradeWatermelonFixHeight abi.ChainEpoch `json:"upgradeWatermelonFixHeight"` + UpgradeWatermelonFix2Height abi.ChainEpoch `json:"upgradeWatermelonFix2Height"` + UpgradeDragonHeight abi.ChainEpoch `json:"upgradeDragonHeight"` + UpgradePhoenixHeight abi.ChainEpoch `json:"upgradePhoenixHeight"` + UpgradeCalibrationDragonFixHeight abi.ChainEpoch `json:"upgradeCalibrationDragonFixHeight"` + UpgradeWaffleHeight abi.ChainEpoch `json:"upgradeWaffleHeight"` + UpgradeTuktukHeight abi.ChainEpoch `json:"upgradeTuktukHeight"` + UpgradeTuktukPowerRampDurationEpochs abi.ChainEpoch `json:"upgradeTuktukPowerRampDurationEpochs"` } func IsNearUpgrade(epoch, upgradeEpoch abi.ChainEpoch) bool { @@ -392,9 +393,10 @@ var DefaultForkUpgradeParam = &ForkUpgradeConfig{ UpgradeDragonHeight: 3855360, UpgradePhoenixHeight: 3855360 + 120, // This fix upgrade only ran on calibrationnet - UpgradeCalibrationDragonFixHeight: -3, - UpgradeWaffleHeight: 4154640, - UpgradeTuktukHeight: 999999999999999, + UpgradeCalibrationDragonFixHeight: -3, + UpgradeWaffleHeight: 4154640, + UpgradeTuktukHeight: 99999999999, + UpgradeTuktukPowerRampDurationEpochs: 200, } func newDefaultNetworkParamsConfig() *NetworkParamsConfig { diff --git a/pkg/fork/fork.go b/pkg/fork/fork.go index f612ab8fb7..d41e45713e 100644 --- a/pkg/fork/fork.go +++ b/pkg/fork/fork.go @@ -445,7 +445,8 @@ func DefaultUpgradeSchedule(cf *ChainFork, upgradeHeight *config.ForkUpgradeConf StopWithin: 10, }}, Expensive: true, - }, { + }, + { Height: upgradeHeight.UpgradeTuktukHeight, Network: network.Version24, Migration: cf.UpgradeActorsV15, @@ -3547,8 +3548,18 @@ func (c *ChainFork) upgradeActorsV15Common( } // Perform the migration - newHamtRoot, err := nv24.MigrateStateTree(ctx, adtStore, manifest, stateRoot.Actors, epoch, config, - migrationLogger{}, cache) + newHamtRoot, err := nv24.MigrateStateTree(ctx, + adtStore, + manifest, + stateRoot.Actors, + epoch, + // two FIP-0081 constants for this migration only + int64(c.forkUpgrade.UpgradeTuktukHeight), // powerRampStartEpoch + uint64(c.forkUpgrade.UpgradeTuktukPowerRampDurationEpochs), // powerRampDurationEpochs + config, + migrationLogger{}, + cache, + ) if err != nil { return cid.Undef, fmt.Errorf("upgrading to actors v15: %w", err) } diff --git a/pkg/vm/register/default.go b/pkg/vm/register/default.go index 57dc645f1c..8494915660 100644 --- a/pkg/vm/register/default.go +++ b/pkg/vm/register/default.go @@ -44,6 +44,7 @@ func GetDefaultActros() *dispatch.CodeLoader { DefaultActorBuilder.AddMany(actorstypes.Version12, dispatch.ActorsVersionPredicate(actorstypes.Version12), builtin.MakeRegistry(actorstypes.Version12)) DefaultActorBuilder.AddMany(actorstypes.Version13, dispatch.ActorsVersionPredicate(actorstypes.Version13), builtin.MakeRegistry(actorstypes.Version13)) DefaultActorBuilder.AddMany(actorstypes.Version14, dispatch.ActorsVersionPredicate(actorstypes.Version14), builtin.MakeRegistry(actorstypes.Version14)) + DefaultActorBuilder.AddMany(actorstypes.Version15, dispatch.ActorsVersionPredicate(actorstypes.Version15), builtin.MakeRegistry(actorstypes.Version15)) defaultActors = DefaultActorBuilder.Build() }) diff --git a/venus-devtool/go.mod b/venus-devtool/go.mod index b2753c9bdf..dfcc13257c 100644 --- a/venus-devtool/go.mod +++ b/venus-devtool/go.mod @@ -12,7 +12,7 @@ require ( github.com/filecoin-project/go-fil-markets v1.28.3 github.com/filecoin-project/go-jsonrpc v0.6.0 github.com/filecoin-project/go-state-types v0.15.0-rc1 - github.com/filecoin-project/lotus v1.28.2-0.20241008085723-a0d529263aae + github.com/filecoin-project/lotus v1.30.0-rc1 github.com/filecoin-project/venus v0.0.0-00010101000000-000000000000 github.com/google/uuid v1.6.0 github.com/ipfs/go-block-format v0.2.0 diff --git a/venus-devtool/go.sum b/venus-devtool/go.sum index da6b0e7c4d..8a6fa9592f 100644 --- a/venus-devtool/go.sum +++ b/venus-devtool/go.sum @@ -284,8 +284,8 @@ github.com/filecoin-project/go-statemachine v1.0.3/go.mod h1:jZdXXiHa61n4NmgWFG4 github.com/filecoin-project/go-statestore v0.1.0/go.mod h1:LFc9hD+fRxPqiHiaqUEZOinUJB4WARkRfNl10O7kTnI= github.com/filecoin-project/go-statestore v0.2.0 h1:cRRO0aPLrxKQCZ2UOQbzFGn4WDNdofHZoGPjfNaAo5Q= github.com/filecoin-project/go-statestore v0.2.0/go.mod h1:8sjBYbS35HwPzct7iT4lIXjLlYyPor80aU7t7a/Kspo= -github.com/filecoin-project/lotus v1.28.2-0.20241008085723-a0d529263aae h1:/uLRUBs4ZQl2j60BlbmQiwlrNoVkZy/degRi3auIbz4= -github.com/filecoin-project/lotus v1.28.2-0.20241008085723-a0d529263aae/go.mod h1:gXQFTK6OpJIjg2yWnYsf0awszREDffb/X+LPCDmZkwI= +github.com/filecoin-project/lotus v1.30.0-rc1 h1:cvieumxDhGffmugnvj5Xsvw26XJ9Xy/ck4PltJLmNpg= +github.com/filecoin-project/lotus v1.30.0-rc1/go.mod h1:gXQFTK6OpJIjg2yWnYsf0awszREDffb/X+LPCDmZkwI= github.com/filecoin-project/pubsub v1.0.0 h1:ZTmT27U07e54qV1mMiQo4HDr0buo8I1LDHBYLXlsNXM= github.com/filecoin-project/pubsub v1.0.0/go.mod h1:GkpB33CcUtUNrLPhJgfdy4FDx4OMNR9k+46DHx/Lqrg= github.com/filecoin-project/specs-actors v0.9.13/go.mod h1:TS1AW/7LbG+615j4NsjMK1qlpAwaFsG9w0V2tg2gSao= diff --git a/venus-devtool/inline-gen/inlinegen-data.json b/venus-devtool/inline-gen/inlinegen-data.json index 59112f2906..34f4bcea03 100644 --- a/venus-devtool/inline-gen/inlinegen-data.json +++ b/venus-devtool/inline-gen/inlinegen-data.json @@ -1,7 +1,7 @@ { "actorVersions": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], - "latestActorsVersion": 15, + "latestActorsVersion": 15, "networkVersions": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], - "latestNetworkVersion": 24 + "latestNetworkVersion": 24 } diff --git a/venus-shared/actors/builtin-actors-code/v15.tar.zst b/venus-shared/actors/builtin-actors-code/v15.tar.zst new file mode 100644 index 0000000000..76ca1a9d80 Binary files /dev/null and b/venus-shared/actors/builtin-actors-code/v15.tar.zst differ diff --git a/venus-shared/actors/builtin/account/actor.go b/venus-shared/actors/builtin/account/actor.go index 37ebc2a6bf..cdfbae825b 100644 --- a/venus-shared/actors/builtin/account/actor.go +++ b/venus-shared/actors/builtin/account/actor.go @@ -30,10 +30,10 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) -var Methods = builtin14.MethodsAccount +var Methods = builtin15.MethodsAccount func Load(store adt.Store, act *types.Actor) (State, error) { if name, av, ok := actors.GetActorMetaByCode(act.Code); ok { @@ -64,6 +64,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -140,6 +143,9 @@ func MakeState(store adt.Store, av actorstypes.Version, addr address.Address) (S case actorstypes.Version14: return make14(store, addr) + case actorstypes.Version15: + return make15(store, addr) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -171,5 +177,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/account/state.v15.go b/venus-shared/actors/builtin/account/state.v15.go new file mode 100644 index 0000000000..a37e11b4b4 --- /dev/null +++ b/venus-shared/actors/builtin/account/state.v15.go @@ -0,0 +1,65 @@ +// FETCHED FROM LOTUS: builtin/account/state.go.template + +package account + +import ( + "fmt" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + + "github.com/filecoin-project/go-address" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + account15 "github.com/filecoin-project/go-state-types/builtin/v15/account" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, addr address.Address) (State, error) { + out := state15{store: store} + out.State = account15.State{Address: addr} + return &out, nil +} + +type state15 struct { + account15.State + store adt.Store +} + +func (s *state15) PubkeyAddress() (address.Address, error) { + return s.Address, nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ActorKey() string { + return manifest.AccountKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/builtin.go b/venus-shared/actors/builtin/builtin.go index d010eaba5f..8f4abad11e 100644 --- a/venus-shared/actors/builtin/builtin.go +++ b/venus-shared/actors/builtin/builtin.go @@ -50,6 +50,7 @@ var ( const ( EpochDurationSeconds = builtin.EpochDurationSeconds EpochsInDay = builtin.EpochsInDay + EpochsInYear = builtin.EpochsInYear SecondsInDay = builtin.SecondsInDay ) diff --git a/venus-shared/actors/builtin/builtin.go.template b/venus-shared/actors/builtin/builtin.go.template index ae648d0781..b86182568a 100644 --- a/venus-shared/actors/builtin/builtin.go.template +++ b/venus-shared/actors/builtin/builtin.go.template @@ -42,6 +42,7 @@ var ( const ( EpochDurationSeconds = builtin.EpochDurationSeconds EpochsInDay = builtin.EpochsInDay + EpochsInYear = builtin.EpochsInYear SecondsInDay = builtin.SecondsInDay ) diff --git a/venus-shared/actors/builtin/cron/actor.go b/venus-shared/actors/builtin/cron/actor.go index e298204555..2214fc5de5 100644 --- a/venus-shared/actors/builtin/cron/actor.go +++ b/venus-shared/actors/builtin/cron/actor.go @@ -26,7 +26,7 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -58,6 +58,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -134,13 +137,16 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version14: return make14(store) + case actorstypes.Version15: + return make15(store) + } return nil, fmt.Errorf("unknown actor version %d", av) } var ( - Address = builtin14.CronActorAddr - Methods = builtin14.MethodsCron + Address = builtin15.CronActorAddr + Methods = builtin15.MethodsCron ) type State interface { @@ -167,5 +173,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/cron/state.v15.go b/venus-shared/actors/builtin/cron/state.v15.go new file mode 100644 index 0000000000..25fae1000b --- /dev/null +++ b/venus-shared/actors/builtin/cron/state.v15.go @@ -0,0 +1,59 @@ +// FETCHED FROM LOTUS: builtin/cron/state.go.template + +package cron + +import ( + "fmt" + + "github.com/ipfs/go-cid" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + cron15 "github.com/filecoin-project/go-state-types/builtin/v15/cron" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store) (State, error) { + out := state15{store: store} + out.State = *cron15.ConstructState(cron15.BuiltInEntries()) + return &out, nil +} + +type state15 struct { + cron15.State + store adt.Store +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ActorKey() string { + return manifest.CronKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/datacap/actor.go b/venus-shared/actors/builtin/datacap/actor.go index 64e2f4a599..c38557717c 100644 --- a/venus-shared/actors/builtin/datacap/actor.go +++ b/venus-shared/actors/builtin/datacap/actor.go @@ -10,7 +10,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" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/go-state-types/manifest" @@ -20,8 +20,8 @@ import ( ) var ( - Address = builtin14.DatacapActorAddr - Methods = builtin14.MethodsDatacap + Address = builtin15.DatacapActorAddr + Methods = builtin15.MethodsDatacap ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -50,6 +50,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -77,6 +80,9 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address case actorstypes.Version14: return make14(store, governor, bitwidth) + case actorstypes.Version15: + return make15(store, governor, bitwidth) + default: return nil, fmt.Errorf("datacap actor only valid for actors v9 and above, got %d", av) } @@ -103,5 +109,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/datacap/state.v15.go b/venus-shared/actors/builtin/datacap/state.v15.go new file mode 100644 index 0000000000..17d542fc12 --- /dev/null +++ b/venus-shared/actors/builtin/datacap/state.v15.go @@ -0,0 +1,84 @@ +// FETCHED FROM LOTUS: builtin/datacap/state.go.template + +package datacap + +import ( + "fmt" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + "github.com/ipfs/go-cid" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + datacap15 "github.com/filecoin-project/go-state-types/builtin/v15/datacap" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" + "github.com/filecoin-project/go-state-types/manifest" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, governor address.Address, bitwidth uint64) (State, error) { + out := state15{store: store} + s, err := datacap15.ConstructState(store, governor, bitwidth) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + datacap15.State + store adt.Store +} + +func (s *state15) Governor() (address.Address, error) { + return s.State.Governor, nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ForEachClient(cb func(addr address.Address, dcap abi.StoragePower) error) error { + return forEachClient(s.store, actors.Version15, s.verifiedClients, cb) +} + +func (s *state15) verifiedClients() (adt.Map, error) { + return adt15.AsMap(s.store, s.Token.Balances, int(s.Token.HamtBitWidth)) +} + +func (s *state15) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { + return getDataCap(s.store, actors.Version15, s.verifiedClients, addr) +} + +func (s *state15) ActorKey() string { + return manifest.DatacapKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/evm/actor.go b/venus-shared/actors/builtin/evm/actor.go index 56b45d03ba..0c431e0a13 100644 --- a/venus-shared/actors/builtin/evm/actor.go +++ b/venus-shared/actors/builtin/evm/actor.go @@ -17,10 +17,10 @@ import ( "github.com/filecoin-project/go-state-types/exitcode" "github.com/filecoin-project/go-state-types/manifest" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) -var Methods = builtin14.MethodsEVM +var Methods = builtin15.MethodsEVM // See https://github.com/filecoin-project/builtin-actors/blob/6e781444cee5965278c46ef4ffe1fb1970f18d7d/actors/evm/src/lib.rs#L35-L42 const ( @@ -57,6 +57,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -81,6 +84,9 @@ func MakeState(store adt.Store, av actorstypes.Version, bytecode cid.Cid) (State case actorstypes.Version14: return make14(store, bytecode) + case actorstypes.Version15: + return make15(store, bytecode) + default: return nil, fmt.Errorf("evm actor only valid for actors v10 and above, got %d", av) } diff --git a/venus-shared/actors/builtin/evm/state.v15.go b/venus-shared/actors/builtin/evm/state.v15.go new file mode 100644 index 0000000000..6e16254f1b --- /dev/null +++ b/venus-shared/actors/builtin/evm/state.v15.go @@ -0,0 +1,74 @@ +// FETCHED FROM LOTUS: builtin/evm/state.go.template + +package evm + +import ( + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + evm15 "github.com/filecoin-project/go-state-types/builtin/v15/evm" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, bytecode cid.Cid) (State, error) { + out := state15{store: store} + s, err := evm15.ConstructState(store, bytecode) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + evm15.State + store adt.Store +} + +func (s *state15) Nonce() (uint64, error) { + return s.State.Nonce, nil +} + +func (s *state15) IsAlive() (bool, error) { + return s.State.Tombstone == nil, nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) GetBytecodeCID() (cid.Cid, error) { + return s.State.Bytecode, nil +} + +func (s *state15) GetBytecodeHash() ([32]byte, error) { + return s.State.BytecodeHash, nil +} + +func (s *state15) GetBytecode() ([]byte, error) { + bc, err := s.GetBytecodeCID() + if err != nil { + return nil, err + } + + var byteCode abi.CborBytesTransparent + if err := s.store.Get(s.store.Context(), bc, &byteCode); err != nil { + return nil, err + } + + return byteCode, nil +} diff --git a/venus-shared/actors/builtin/init/actor.go b/venus-shared/actors/builtin/init/actor.go index af665234e1..1057f8f7c8 100644 --- a/venus-shared/actors/builtin/init/actor.go +++ b/venus-shared/actors/builtin/init/actor.go @@ -32,12 +32,12 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin14.InitActorAddr - Methods = builtin14.MethodsInit + Address = builtin15.InitActorAddr + Methods = builtin15.MethodsInit ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -69,6 +69,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -145,6 +148,9 @@ func MakeState(store adt.Store, av actorstypes.Version, networkName string) (Sta case actorstypes.Version14: return make14(store, networkName) + case actorstypes.Version15: + return make15(store, networkName) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -199,5 +205,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/init/state.v15.go b/venus-shared/actors/builtin/init/state.v15.go new file mode 100644 index 0000000000..636ac8ac63 --- /dev/null +++ b/venus-shared/actors/builtin/init/state.v15.go @@ -0,0 +1,148 @@ +// FETCHED FROM LOTUS: builtin/init/state.go.template + +package init + +import ( + "crypto/sha256" + "fmt" + + "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" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + "github.com/filecoin-project/go-state-types/manifest" + + builtin15 "github.com/filecoin-project/go-state-types/builtin" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, networkName string) (State, error) { + out := state15{store: store} + + s, err := init15.ConstructState(store, networkName) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + init15.State + store adt.Store +} + +func (s *state15) ResolveAddress(address address.Address) (address.Address, bool, error) { + return s.State.ResolveAddress(s.store, address) +} + +func (s *state15) MapAddressToNewID(address address.Address) (address.Address, error) { + return s.State.MapAddressToNewID(s.store, address) +} + +func (s *state15) ForEachActor(cb func(id abi.ActorID, address address.Address) error) error { + addrs, err := adt15.AsMap(s.store, s.State.AddressMap, builtin15.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 *state15) NetworkName() (string, error) { + return string(s.State.NetworkName), nil +} + +func (s *state15) SetNetworkName(name string) error { + s.State.NetworkName = name + return nil +} + +func (s *state15) SetNextID(id abi.ActorID) error { + s.State.NextID = id + return nil +} + +func (s *state15) Remove(addrs ...address.Address) (err error) { + m, err := adt15.AsMap(s.store, s.State.AddressMap, builtin15.DefaultHamtBitwidth) + if err != nil { + return err + } + for _, addr := range addrs { + if err = m.Delete(abi.AddrKey(addr)); err != nil { + return fmt.Errorf("failed to delete entry for address: %s; err: %w", addr, err) + } + } + amr, err := m.Root() + if err != nil { + return fmt.Errorf("failed to get address map root: %w", err) + } + s.State.AddressMap = amr + return nil +} + +func (s *state15) SetAddressMap(mcid cid.Cid) error { + s.State.AddressMap = mcid + return nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) AddressMap() (adt.Map, error) { + return adt15.AsMap(s.store, s.State.AddressMap, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) AddressMapBitWidth() int { + return builtin15.DefaultHamtBitwidth +} + +func (s *state15) AddressMapHashFunction() func(input []byte) []byte { + return func(input []byte) []byte { + res := sha256.Sum256(input) + return res[:] + } +} + +func (s *state15) ActorKey() string { + return manifest.InitKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/market/actor.go b/venus-shared/actors/builtin/market/actor.go index 54a64b44a5..a64eb5ba02 100644 --- a/venus-shared/actors/builtin/market/actor.go +++ b/venus-shared/actors/builtin/market/actor.go @@ -77,6 +77,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -153,6 +156,9 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version14: return make14(store) + case actorstypes.Version15: + return make15(store) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -257,6 +263,9 @@ func DecodePublishStorageDealsReturn(b []byte, nv network.Version) (PublishStora case actorstypes.Version14: return decodePublishStorageDealsReturn14(b) + case actorstypes.Version15: + return decodePublishStorageDealsReturn15(b) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -384,5 +393,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/market/state.v15.go b/venus-shared/actors/builtin/market/state.v15.go new file mode 100644 index 0000000000..53e6aae9c7 --- /dev/null +++ b/venus-shared/actors/builtin/market/state.v15.go @@ -0,0 +1,413 @@ +// FETCHED FROM LOTUS: builtin/market/state.go.template + +package market + +import ( + "bytes" + "fmt" + + "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-bitfield" + rlepluslazy "github.com/filecoin-project/go-bitfield/rle" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + verifregtypes "github.com/filecoin-project/venus/venus-shared/actors/builtin/verifreg" + "github.com/filecoin-project/venus/venus-shared/actors/types" + + market15 "github.com/filecoin-project/go-state-types/builtin/v15/market" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" + markettypes "github.com/filecoin-project/go-state-types/builtin/v9/market" + + "github.com/filecoin-project/go-state-types/builtin" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store) (State, error) { + out := state15{store: store} + + s, err := market15.ConstructState(store) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + market15.State + store adt.Store +} + +func (s *state15) TotalLocked() (abi.TokenAmount, error) { + fml := types.BigAdd(s.TotalClientLockedCollateral, s.TotalProviderLockedCollateral) + fml = types.BigAdd(fml, s.TotalClientStorageFee) + return fml, nil +} + +func (s *state15) BalancesChanged(otherState State) (bool, error) { + otherState15, ok := otherState.(*state15) + 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(otherState15.State.EscrowTable) || !s.State.LockedTable.Equals(otherState15.State.LockedTable), nil +} + +func (s *state15) StatesChanged(otherState State) (bool, error) { + otherState15, ok := otherState.(*state15) + 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(otherState15.State.States), nil +} + +func (s *state15) States() (DealStates, error) { + stateArray, err := adt15.AsArray(s.store, s.State.States, market15.StatesAmtBitwidth) + if err != nil { + return nil, err + } + return &dealStates15{stateArray}, nil +} + +func (s *state15) ProposalsChanged(otherState State) (bool, error) { + otherState15, ok := otherState.(*state15) + 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(otherState15.State.Proposals), nil +} + +func (s *state15) Proposals() (DealProposals, error) { + proposalArray, err := adt15.AsArray(s.store, s.State.Proposals, market15.ProposalsAmtBitwidth) + if err != nil { + return nil, err + } + return &dealProposals15{proposalArray}, nil +} + +func (s *state15) EscrowTable() (BalanceTable, error) { + bt, err := adt15.AsBalanceTable(s.store, s.State.EscrowTable) + if err != nil { + return nil, err + } + return &balanceTable15{bt}, nil +} + +func (s *state15) LockedTable() (BalanceTable, error) { + bt, err := adt15.AsBalanceTable(s.store, s.State.LockedTable) + if err != nil { + return nil, err + } + return &balanceTable15{bt}, nil +} + +func (s *state15) VerifyDealsForActivation( + minerAddr address.Address, deals []abi.DealID, currEpoch, sectorExpiry abi.ChainEpoch, +) (weight, verifiedWeight abi.DealWeight, err error) { + w, vw, _, err := market15.ValidateDealsForActivation(&s.State, s.store, deals, minerAddr, sectorExpiry, currEpoch) + return w, vw, err +} + +func (s *state15) NextID() (abi.DealID, error) { + return s.State.NextID, nil +} + +type balanceTable15 struct { + *adt15.BalanceTable +} + +func (bt *balanceTable15) ForEach(cb func(address.Address, abi.TokenAmount) error) error { + asMap := (*adt15.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 dealStates15 struct { + adt.Array +} + +func (s *dealStates15) Get(dealID abi.DealID) (DealState, bool, error) { + var deal15 market15.DealState + found, err := s.Array.Get(uint64(dealID), &deal15) + if err != nil { + return nil, false, err + } + if !found { + return nil, false, nil + } + deal := fromV15DealState(deal15) + return deal, true, nil +} + +func (s *dealStates15) ForEach(cb func(dealID abi.DealID, ds DealState) error) error { + var ds15 market15.DealState + return s.Array.ForEach(&ds15, func(idx int64) error { + return cb(abi.DealID(idx), fromV15DealState(ds15)) + }) +} + +func (s *dealStates15) decode(val *cbg.Deferred) (DealState, error) { + var ds15 market15.DealState + if err := ds15.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return nil, err + } + ds := fromV15DealState(ds15) + return ds, nil +} + +func (s *dealStates15) array() adt.Array { + return s.Array +} + +type dealStateV15 struct { + ds15 market15.DealState +} + +func (d dealStateV15) SectorNumber() abi.SectorNumber { + + return d.ds15.SectorNumber + +} + +func (d dealStateV15) SectorStartEpoch() abi.ChainEpoch { + return d.ds15.SectorStartEpoch +} + +func (d dealStateV15) LastUpdatedEpoch() abi.ChainEpoch { + return d.ds15.LastUpdatedEpoch +} + +func (d dealStateV15) SlashEpoch() abi.ChainEpoch { + return d.ds15.SlashEpoch +} + +func (d dealStateV15) Equals(other DealState) bool { + if ov15, ok := other.(dealStateV15); ok { + return d.ds15 == ov15.ds15 + } + + if d.SectorStartEpoch() != other.SectorStartEpoch() { + return false + } + if d.LastUpdatedEpoch() != other.LastUpdatedEpoch() { + return false + } + if d.SlashEpoch() != other.SlashEpoch() { + return false + } + + return true +} + +var _ DealState = (*dealStateV15)(nil) + +func fromV15DealState(v15 market15.DealState) DealState { + return dealStateV15{v15} +} + +type dealProposals15 struct { + adt.Array +} + +func (s *dealProposals15) Get(dealID abi.DealID) (*DealProposal, bool, error) { + var proposal15 market15.DealProposal + found, err := s.Array.Get(uint64(dealID), &proposal15) + if err != nil { + return nil, false, err + } + if !found { + return nil, false, nil + } + + proposal, err := fromV15DealProposal(proposal15) + if err != nil { + return nil, true, fmt.Errorf("decoding proposal: %w", err) + } + + return &proposal, true, nil +} + +func (s *dealProposals15) ForEach(cb func(dealID abi.DealID, dp DealProposal) error) error { + var dp15 market15.DealProposal + return s.Array.ForEach(&dp15, func(idx int64) error { + dp, err := fromV15DealProposal(dp15) + if err != nil { + return fmt.Errorf("decoding proposal: %w", err) + } + + return cb(abi.DealID(idx), dp) + }) +} + +func (s *dealProposals15) decode(val *cbg.Deferred) (*DealProposal, error) { + var dp15 market15.DealProposal + if err := dp15.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return nil, err + } + + dp, err := fromV15DealProposal(dp15) + if err != nil { + return nil, err + } + + return &dp, nil +} + +func (s *dealProposals15) array() adt.Array { + return s.Array +} + +func fromV15DealProposal(v15 market15.DealProposal) (DealProposal, error) { + + label, err := fromV15Label(v15.Label) + + if err != nil { + return DealProposal{}, fmt.Errorf("error setting deal label: %w", err) + } + + return DealProposal{ + PieceCID: v15.PieceCID, + PieceSize: v15.PieceSize, + VerifiedDeal: v15.VerifiedDeal, + Client: v15.Client, + Provider: v15.Provider, + + Label: label, + + StartEpoch: v15.StartEpoch, + EndEpoch: v15.EndEpoch, + StoragePricePerEpoch: v15.StoragePricePerEpoch, + + ProviderCollateral: v15.ProviderCollateral, + ClientCollateral: v15.ClientCollateral, + }, nil +} + +func fromV15Label(v15 market15.DealLabel) (DealLabel, error) { + if v15.IsString() { + str, err := v15.ToString() + if err != nil { + return markettypes.EmptyDealLabel, fmt.Errorf("failed to convert string label to string: %w", err) + } + return markettypes.NewLabelFromString(str) + } + + bs, err := v15.ToBytes() + if err != nil { + return markettypes.EmptyDealLabel, fmt.Errorf("failed to convert bytes label to bytes: %w", err) + } + return markettypes.NewLabelFromBytes(bs) +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +var _ PublishStorageDealsReturn = (*publishStorageDealsReturn15)(nil) + +func decodePublishStorageDealsReturn15(b []byte) (PublishStorageDealsReturn, error) { + var retval market15.PublishStorageDealsReturn + if err := retval.UnmarshalCBOR(bytes.NewReader(b)); err != nil { + return nil, fmt.Errorf("failed to unmarshal PublishStorageDealsReturn: %w", err) + } + + return &publishStorageDealsReturn15{retval}, nil +} + +type publishStorageDealsReturn15 struct { + market15.PublishStorageDealsReturn +} + +func (r *publishStorageDealsReturn15) 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 *publishStorageDealsReturn15) DealIDs() ([]abi.DealID, error) { + return r.IDs, nil +} + +func (s *state15) GetAllocationIdForPendingDeal(dealId abi.DealID) (verifregtypes.AllocationId, error) { + + allocations, err := adt15.AsMap(s.store, s.PendingDealAllocationIds, builtin.DefaultHamtBitwidth) + if err != nil { + return verifregtypes.NoAllocationID, fmt.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, fmt.Errorf("failed to load allocation id for %d: %w", dealId, err) + } + if !found { + return verifregtypes.NoAllocationID, nil + } + + return verifregtypes.AllocationId(allocationId), nil + +} + +func (s *state15) ActorKey() string { + return manifest.MarketKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/miner/actor.go b/venus-shared/actors/builtin/miner/actor.go index 9bd6ce5ccb..6f5c50ba93 100644 --- a/venus-shared/actors/builtin/miner/actor.go +++ b/venus-shared/actors/builtin/miner/actor.go @@ -68,6 +68,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -144,6 +147,9 @@ func MakeState(store adt.Store, av actors.Version) (State, error) { case actors.Version14: return make14(store) + case actors.Version15: + return make15(store) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -339,6 +345,7 @@ type SectorActivationManifest = minertypes13.SectorActivationManifest type ProveReplicaUpdates3Params = minertypes13.ProveReplicaUpdates3Params type SectorUpdateManifest = minertypes13.SectorUpdateManifest type SectorOnChainInfoFlags = minertypes13.SectorOnChainInfoFlags +type VerifiedAllocationKey = minertypes13.VerifiedAllocationKey var QAPowerMax = minertypes.QAPowerMax @@ -408,5 +415,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/miner/actor.go.template b/venus-shared/actors/builtin/miner/actor.go.template index e0e924473a..79062fbd50 100644 --- a/venus-shared/actors/builtin/miner/actor.go.template +++ b/venus-shared/actors/builtin/miner/actor.go.template @@ -259,6 +259,7 @@ type SectorActivationManifest = minertypes13.SectorActivationManifest type ProveReplicaUpdates3Params = minertypes13.ProveReplicaUpdates3Params type SectorUpdateManifest = minertypes13.SectorUpdateManifest type SectorOnChainInfoFlags = minertypes13.SectorOnChainInfoFlags +type VerifiedAllocationKey = minertypes13.VerifiedAllocationKey var QAPowerMax = minertypes.QAPowerMax diff --git a/venus-shared/actors/builtin/miner/state.v15.go b/venus-shared/actors/builtin/miner/state.v15.go new file mode 100644 index 0000000000..526cf73403 --- /dev/null +++ b/venus-shared/actors/builtin/miner/state.v15.go @@ -0,0 +1,596 @@ +// FETCHED FROM LOTUS: builtin/miner/state.go.template + +package miner + +import ( + "bytes" + "errors" + "fmt" + + "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" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + builtin15 "github.com/filecoin-project/go-state-types/builtin" + miner15 "github.com/filecoin-project/go-state-types/builtin/v15/miner" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store) (State, error) { + out := state15{store: store} + out.State = miner15.State{} + return &out, nil +} + +type state15 struct { + miner15.State + store adt.Store +} + +type deadline15 struct { + miner15.Deadline + store adt.Store +} + +type partition15 struct { + miner15.Partition + store adt.Store +} + +func (s *state15) AvailableBalance(bal abi.TokenAmount) (available abi.TokenAmount, err error) { + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("failed to get available balance: %v", r) + available = abi.NewTokenAmount(0) + } + }() + // this panics if the miner doesn't have enough funds to cover their locked pledge + available, err = s.GetAvailableBalance(bal) + return available, err +} + +func (s *state15) VestedFunds(epoch abi.ChainEpoch) (abi.TokenAmount, error) { + return s.CheckVestedFunds(s.store, epoch) +} + +func (s *state15) LockedFunds() (LockedFunds, error) { + return LockedFunds{ + VestingFunds: s.State.LockedFunds, + InitialPledgeRequirement: s.State.InitialPledge, + PreCommitDeposits: s.State.PreCommitDeposits, + }, nil +} + +func (s *state15) FeeDebt() (abi.TokenAmount, error) { + return s.State.FeeDebt, nil +} + +func (s *state15) InitialPledge() (abi.TokenAmount, error) { + return s.State.InitialPledge, nil +} + +func (s *state15) PreCommitDeposits() (abi.TokenAmount, error) { + return s.State.PreCommitDeposits, nil +} + +// Returns nil, nil if sector is not found +func (s *state15) GetSector(num abi.SectorNumber) (*SectorOnChainInfo, error) { + info, ok, err := s.State.GetSector(s.store, num) + if !ok || err != nil { + return nil, err + } + + ret := fromV15SectorOnChainInfo(*info) + return &ret, nil +} + +func (s *state15) 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 *state15) 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 *miner15.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 *state15) 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 *miner15.Deadline) error { + partitions, err := dl.PartitionsArray(s.store) + if err != nil { + return err + } + quant := s.State.QuantSpecForDeadline(dlIdx) + var part miner15.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 := miner15.LoadExpirationQueue(s.store, part.ExpirationsEpochs, quant, miner15.PartitionExpirationAmtBitwidth) + if err != nil { + return err + } + var exp miner15.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, fmt.Errorf("failed to find sector %d", num) + } + return &out, nil +} + +func (s *state15) GetPrecommittedSector(num abi.SectorNumber) (*SectorPreCommitOnChainInfo, error) { + info, ok, err := s.State.GetPrecommittedSector(s.store, num) + if !ok || err != nil { + return nil, err + } + + ret := fromV15SectorPreCommitOnChainInfo(*info) + + return &ret, nil +} + +func (s *state15) ForEachPrecommittedSector(cb func(SectorPreCommitOnChainInfo) error) error { + precommitted, err := adt15.AsMap(s.store, s.State.PreCommittedSectors, builtin15.DefaultHamtBitwidth) + if err != nil { + return err + } + + var info miner15.SectorPreCommitOnChainInfo + if err := precommitted.ForEach(&info, func(_ string) error { + return cb(fromV15SectorPreCommitOnChainInfo(info)) + }); err != nil { + return err + } + + return nil +} + +func (s *state15) LoadSectors(snos *bitfield.BitField) ([]*SectorOnChainInfo, error) { + sectors, err := miner15.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 info15 miner15.SectorOnChainInfo + if err := sectors.ForEach(&info15, func(_ int64) error { + info := fromV15SectorOnChainInfo(info15) + infos = append(infos, &info) + return nil + }); err != nil { + return nil, err + } + return infos, nil + } + + // Otherwise, load selected. + infos15, err := sectors.Load(*snos) + if err != nil { + return nil, err + } + infos := make([]*SectorOnChainInfo, len(infos15)) + for i, info15 := range infos15 { + info := fromV15SectorOnChainInfo(*info15) + infos[i] = &info + } + return infos, nil +} + +func (s *state15) loadAllocatedSectorNumbers() (bitfield.BitField, error) { + var allocatedSectors bitfield.BitField + err := s.store.Get(s.store.Context(), s.State.AllocatedSectors, &allocatedSectors) + return allocatedSectors, err +} + +func (s *state15) IsAllocated(num abi.SectorNumber) (bool, error) { + allocatedSectors, err := s.loadAllocatedSectorNumbers() + if err != nil { + return false, err + } + + return allocatedSectors.IsSet(uint64(num)) +} + +func (s *state15) GetProvingPeriodStart() (abi.ChainEpoch, error) { + return s.State.ProvingPeriodStart, nil +} + +func (s *state15) 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 *state15) 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 *state15) 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 &deadline15{*dl, s.store}, nil +} + +func (s *state15) 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 *miner15.Deadline) error { + return cb(i, &deadline15{*dl, s.store}) + }) +} + +func (s *state15) NumDeadlines() (uint64, error) { + return miner15.WPoStPeriodDeadlines, nil +} + +func (s *state15) DeadlinesChanged(other State) (bool, error) { + other15, ok := other.(*state15) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + + return !s.State.Deadlines.Equals(other15.Deadlines), nil +} + +func (s *state15) MinerInfoChanged(other State) (bool, error) { + other0, ok := other.(*state15) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.Info.Equals(other0.State.Info), nil +} + +func (s *state15) 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: BeneficiaryTerm(info.BeneficiaryTerm), + PendingBeneficiaryTerm: (*PendingBeneficiaryChange)(info.PendingBeneficiaryTerm), + } + + return mi, nil +} + +func (s *state15) DeadlineInfo(epoch abi.ChainEpoch) (*dline.Info, error) { + return s.State.RecordedDeadlineInfo(epoch), nil +} + +func (s *state15) DeadlineCronActive() (bool, error) { + return s.State.DeadlineCronActive, nil +} + +func (s *state15) sectors() (adt.Array, error) { + return adt15.AsArray(s.store, s.Sectors, miner15.SectorsAmtBitwidth) +} + +func (s *state15) decodeSectorOnChainInfo(val *cbg.Deferred) (SectorOnChainInfo, error) { + var si miner15.SectorOnChainInfo + err := si.UnmarshalCBOR(bytes.NewReader(val.Raw)) + if err != nil { + return SectorOnChainInfo{}, err + } + + return fromV15SectorOnChainInfo(si), nil +} + +func (s *state15) precommits() (adt.Map, error) { + return adt15.AsMap(s.store, s.PreCommittedSectors, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) decodeSectorPreCommitOnChainInfo(val *cbg.Deferred) (SectorPreCommitOnChainInfo, error) { + var sp miner15.SectorPreCommitOnChainInfo + err := sp.UnmarshalCBOR(bytes.NewReader(val.Raw)) + if err != nil { + return SectorPreCommitOnChainInfo{}, err + } + + return fromV15SectorPreCommitOnChainInfo(sp), nil +} + +func (s *state15) EraseAllUnproven() error { + + dls, err := s.State.LoadDeadlines(s.store) + if err != nil { + return err + } + + err = dls.ForEach(s.store, func(dindx uint64, dl *miner15.Deadline) error { + ps, err := dl.PartitionsArray(s.store) + if err != nil { + return err + } + + var part miner15.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 *deadline15) LoadPartition(idx uint64) (Partition, error) { + p, err := d.Deadline.LoadPartition(d.store, idx) + if err != nil { + return nil, err + } + return &partition15{*p, d.store}, nil +} + +func (d *deadline15) ForEachPartition(cb func(uint64, Partition) error) error { + ps, err := d.Deadline.PartitionsArray(d.store) + if err != nil { + return err + } + var part miner15.Partition + return ps.ForEach(&part, func(i int64) error { + return cb(uint64(i), &partition15{part, d.store}) + }) +} + +func (d *deadline15) PartitionsChanged(other Deadline) (bool, error) { + other15, ok := other.(*deadline15) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + + return !d.Deadline.Partitions.Equals(other15.Deadline.Partitions), nil +} + +func (d *deadline15) PartitionsPoSted() (bitfield.BitField, error) { + return d.Deadline.PartitionsPoSted, nil +} + +func (d *deadline15) DisputableProofCount() (uint64, error) { + + ops, err := d.OptimisticProofsSnapshotArray(d.store) + if err != nil { + return 0, err + } + + return ops.Length(), nil + +} + +func (p *partition15) AllSectors() (bitfield.BitField, error) { + return p.Partition.Sectors, nil +} + +func (p *partition15) FaultySectors() (bitfield.BitField, error) { + return p.Partition.Faults, nil +} + +func (p *partition15) RecoveringSectors() (bitfield.BitField, error) { + return p.Partition.Recoveries, nil +} + +func (p *partition15) UnprovenSectors() (bitfield.BitField, error) { + return p.Partition.Unproven, nil +} + +func fromV15SectorOnChainInfo(v15 miner15.SectorOnChainInfo) SectorOnChainInfo { + info := SectorOnChainInfo{ + SectorNumber: v15.SectorNumber, + SealProof: v15.SealProof, + SealedCID: v15.SealedCID, + DealIDs: v15.DealIDs, + Activation: v15.Activation, + Expiration: v15.Expiration, + DealWeight: v15.DealWeight, + VerifiedDealWeight: v15.VerifiedDealWeight, + InitialPledge: v15.InitialPledge, + ExpectedDayReward: v15.ExpectedDayReward, + ExpectedStoragePledge: v15.ExpectedStoragePledge, + + SectorKeyCID: v15.SectorKeyCID, + + PowerBaseEpoch: v15.PowerBaseEpoch, + ReplacedDayReward: v15.ReplacedDayReward, + Flags: SectorOnChainInfoFlags(v15.Flags), + } + return info +} + +func fromV15SectorPreCommitOnChainInfo(v15 miner15.SectorPreCommitOnChainInfo) SectorPreCommitOnChainInfo { + ret := SectorPreCommitOnChainInfo{ + Info: SectorPreCommitInfo{ + SealProof: v15.Info.SealProof, + SectorNumber: v15.Info.SectorNumber, + SealedCID: v15.Info.SealedCID, + SealRandEpoch: v15.Info.SealRandEpoch, + DealIDs: v15.Info.DealIDs, + Expiration: v15.Info.Expiration, + UnsealedCid: nil, + }, + PreCommitDeposit: v15.PreCommitDeposit, + PreCommitEpoch: v15.PreCommitEpoch, + } + + ret.Info.UnsealedCid = v15.Info.UnsealedCid + + return ret +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ActorKey() string { + return manifest.MinerKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/multisig/actor.go b/venus-shared/actors/builtin/multisig/actor.go index b9ef64771a..7faa742bf6 100644 --- a/venus-shared/actors/builtin/multisig/actor.go +++ b/venus-shared/actors/builtin/multisig/actor.go @@ -5,17 +5,17 @@ package multisig import ( "fmt" - actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/ipfs/go-cid" - - "github.com/minio/blake2b-simd" cbg "github.com/whyrusleeping/cbor-gen" "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" "github.com/filecoin-project/go-state-types/cbor" + "github.com/filecoin-project/go-state-types/manifest" - msig14 "github.com/filecoin-project/go-state-types/builtin/v14/multisig" + msig15 "github.com/filecoin-project/go-state-types/builtin/v15/multisig" builtin0 "github.com/filecoin-project/specs-actors/actors/builtin" @@ -31,9 +31,6 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtintypes "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/manifest" - "github.com/filecoin-project/venus/venus-shared/actors" "github.com/filecoin-project/venus/venus-shared/actors/adt" "github.com/filecoin-project/venus/venus-shared/actors/types" @@ -68,6 +65,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -144,6 +144,9 @@ func MakeState(store adt.Store, av actorstypes.Version, signers []address.Addres case actorstypes.Version14: return make14(store, signers, threshold, startEpoch, unlockDuration, initialBalance) + case actorstypes.Version15: + return make15(store, signers, threshold, startEpoch, unlockDuration, initialBalance) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -170,7 +173,7 @@ type State interface { GetState() interface{} } -type Transaction = msig14.Transaction +type Transaction = msig15.Transaction var Methods = builtintypes.MethodsMultisig @@ -218,6 +221,9 @@ func Message(version actorstypes.Version, from address.Address) MessageBuilder { case actorstypes.Version14: return message14{message0{from}} + + case actorstypes.Version15: + return message15{message0{from}} default: panic(fmt.Sprintf("unsupported actors version: %d", version)) } @@ -241,33 +247,10 @@ type MessageBuilder interface { } // this type is the same between v0 and v2 -type ProposalHashData = msig14.ProposalHashData -type ProposeReturn = msig14.ProposeReturn -type ProposeParams = msig14.ProposeParams -type ApproveReturn = msig14.ApproveReturn - -func txnParams(id uint64, data *ProposalHashData) ([]byte, error) { - params := msig14.TxnIDParams{ID: msig14.TxnID(id)} - if data != nil { - if data.Requester.Protocol() != address.ID { - return nil, fmt.Errorf("proposer address must be an ID address, was %s", data.Requester) - } - if data.Value.Sign() == -1 { - return nil, fmt.Errorf("proposal value must be non-negative, was %s", data.Value) - } - if data.To == address.Undef { - return nil, fmt.Errorf("proposed destination address must be set") - } - pser, err := data.Serialize() - if err != nil { - return nil, err - } - hash := blake2b.Sum256(pser) - params.ProposalHash = hash[:] - } - - return actors.SerializeParams(¶ms) -} +type ProposalHashData = msig15.ProposalHashData +type ProposeReturn = msig15.ProposeReturn +type ProposeParams = msig15.ProposeParams +type ApproveReturn = msig15.ApproveReturn func AllCodes() []cid.Cid { return []cid.Cid{ @@ -285,5 +268,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/multisig/actor.go.template b/venus-shared/actors/builtin/multisig/actor.go.template index 64bc89533b..1c204fc807 100644 --- a/venus-shared/actors/builtin/multisig/actor.go.template +++ b/venus-shared/actors/builtin/multisig/actor.go.template @@ -3,16 +3,17 @@ package multisig import ( - actorstypes "github.com/filecoin-project/go-state-types/actors" - "github.com/ipfs/go-cid" "fmt" - "github.com/minio/blake2b-simd" + "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" + actorstypes "github.com/filecoin-project/go-state-types/actors" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/cbor" + "github.com/filecoin-project/go-state-types/manifest" msig{{.latestVersion}} "github.com/filecoin-project/go-state-types/builtin{{import .latestVersion}}multisig" {{range .versions}} @@ -21,9 +22,6 @@ import ( {{end}} {{end}} - builtintypes "github.com/filecoin-project/go-state-types/builtin" - "github.com/filecoin-project/go-state-types/manifest" - "github.com/filecoin-project/venus/venus-shared/actors" "github.com/filecoin-project/venus/venus-shared/actors/adt" "github.com/filecoin-project/venus/venus-shared/actors/types" @@ -126,29 +124,6 @@ type ProposeReturn = msig{{.latestVersion}}.ProposeReturn type ProposeParams = msig{{.latestVersion}}.ProposeParams type ApproveReturn = msig{{.latestVersion}}.ApproveReturn -func txnParams(id uint64, data *ProposalHashData) ([]byte, error) { - params := msig{{.latestVersion}}.TxnIDParams{ID: msig{{.latestVersion}}.TxnID(id)} - if data != nil { - if data.Requester.Protocol() != address.ID { - return nil, fmt.Errorf("proposer address must be an ID address, was %s", data.Requester) - } - if data.Value.Sign() == -1 { - return nil, fmt.Errorf("proposal value must be non-negative, was %s", data.Value) - } - if data.To == address.Undef { - return nil, fmt.Errorf("proposed destination address must be set") - } - pser, err := data.Serialize() - if err != nil { - return nil, err - } - hash := blake2b.Sum256(pser) - params.ProposalHash = hash[:] - } - - return actors.SerializeParams(¶ms) -} - func AllCodes() []cid.Cid { return []cid.Cid{ {{range .versions}} (&state{{.}}{}).Code(), diff --git a/venus-shared/actors/builtin/multisig/message.sep.go.template b/venus-shared/actors/builtin/multisig/message.sep.go.template index fe533c1c1a..edcf8181f9 100644 --- a/venus-shared/actors/builtin/multisig/message.sep.go.template +++ b/venus-shared/actors/builtin/multisig/message.sep.go.template @@ -3,23 +3,27 @@ package multisig import ( +{{if (le .v 1)}} + "math" + "golang.org/x/crypto/blake2b" +{{end}} "fmt" "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" - {{if (le .v 7)}} - builtin{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin" - init{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/init" - multisig{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/multisig" - {{else}} - actorstypes "github.com/filecoin-project/go-state-types/actors" - multisig{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}multisig" - init{{.latestVersion}} "github.com/filecoin-project/go-state-types/builtin/v{{.latestVersion}}/init" - "github.com/filecoin-project/go-state-types/manifest" - {{end}} - - builtintypes "github.com/filecoin-project/go-state-types/builtin" +{{if (le .v 7)}} + builtin{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin" + init{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/init" + multisig{{.v}} "github.com/filecoin-project/specs-actors{{.import}}actors/builtin/multisig" +{{else}} + actorstypes "github.com/filecoin-project/go-state-types/actors" + multisig{{.v}} "github.com/filecoin-project/go-state-types/builtin{{.import}}multisig" + init{{.latestVersion}} "github.com/filecoin-project/go-state-types/builtin/v{{.latestVersion}}/init" + "github.com/filecoin-project/go-state-types/manifest" +{{end}} + + builtintypes "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/venus/venus-shared/actors" init_ "github.com/filecoin-project/venus/venus-shared/actors/builtin/init" "github.com/filecoin-project/venus/venus-shared/actors/types" @@ -166,4 +170,30 @@ func (m message0) Cancel(msig address.Address, txID uint64, hashData *ProposalHa Params: enc, }, nil } + +func txnParams(id uint64, data *ProposalHashData) ([]byte, error) { + if id > uint64(math.MaxInt64) { + return nil, fmt.Errorf("transaction ID %d is out of range for int64", id) + } + params := multisig0.TxnIDParams{ID: multisig0.TxnID(id)} + if data != nil { + if data.Requester.Protocol() != address.ID { + return nil, fmt.Errorf("proposer address must be an ID address, was %s", data.Requester) + } + if data.Value.Sign() == -1 { + return nil, fmt.Errorf("proposal value must be non-negative, was %s", data.Value) + } + if data.To == address.Undef { + return nil, fmt.Errorf("proposed destination address must be set") + } + pser, err := data.Serialize() + if err != nil { + return nil, err + } + hash := blake2b.Sum256(pser) + params.ProposalHash = hash[:] + } + + return actors.SerializeParams(¶ms) +} {{end}} diff --git a/venus-shared/actors/builtin/multisig/message.v0.go b/venus-shared/actors/builtin/multisig/message.v0.go index 84bc1f402a..ff6e240218 100644 --- a/venus-shared/actors/builtin/multisig/message.v0.go +++ b/venus-shared/actors/builtin/multisig/message.v0.go @@ -3,6 +3,10 @@ package multisig import ( + "math" + + "golang.org/x/crypto/blake2b" + "fmt" "github.com/filecoin-project/go-address" @@ -143,3 +147,29 @@ func (m message0) Cancel(msig address.Address, txID uint64, hashData *ProposalHa Params: enc, }, nil } + +func txnParams(id uint64, data *ProposalHashData) ([]byte, error) { + if id > uint64(math.MaxInt64) { + return nil, fmt.Errorf("transaction ID %d is out of range for int64", id) + } + params := multisig0.TxnIDParams{ID: multisig0.TxnID(id)} + if data != nil { + if data.Requester.Protocol() != address.ID { + return nil, fmt.Errorf("proposer address must be an ID address, was %s", data.Requester) + } + if data.Value.Sign() == -1 { + return nil, fmt.Errorf("proposal value must be non-negative, was %s", data.Value) + } + if data.To == address.Undef { + return nil, fmt.Errorf("proposed destination address must be set") + } + pser, err := data.Serialize() + if err != nil { + return nil, err + } + hash := blake2b.Sum256(pser) + params.ProposalHash = hash[:] + } + + return actors.SerializeParams(¶ms) +} diff --git a/venus-shared/actors/builtin/multisig/message.v10.go b/venus-shared/actors/builtin/multisig/message.v10.go index 61fa78e409..fe3f3184d9 100644 --- a/venus-shared/actors/builtin/multisig/message.v10.go +++ b/venus-shared/actors/builtin/multisig/message.v10.go @@ -10,7 +10,7 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" multisig10 "github.com/filecoin-project/go-state-types/builtin/v10/multisig" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" "github.com/filecoin-project/go-state-types/manifest" builtintypes "github.com/filecoin-project/go-state-types/builtin" @@ -60,7 +60,7 @@ func (m message10) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v11.go b/venus-shared/actors/builtin/multisig/message.v11.go index f4005de308..e3387c0168 100644 --- a/venus-shared/actors/builtin/multisig/message.v11.go +++ b/venus-shared/actors/builtin/multisig/message.v11.go @@ -10,7 +10,7 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" multisig11 "github.com/filecoin-project/go-state-types/builtin/v11/multisig" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" "github.com/filecoin-project/go-state-types/manifest" builtintypes "github.com/filecoin-project/go-state-types/builtin" @@ -60,7 +60,7 @@ func (m message11) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v12.go b/venus-shared/actors/builtin/multisig/message.v12.go index d3f93960c1..b4779a7279 100644 --- a/venus-shared/actors/builtin/multisig/message.v12.go +++ b/venus-shared/actors/builtin/multisig/message.v12.go @@ -10,7 +10,7 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" multisig12 "github.com/filecoin-project/go-state-types/builtin/v12/multisig" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" "github.com/filecoin-project/go-state-types/manifest" builtintypes "github.com/filecoin-project/go-state-types/builtin" @@ -60,7 +60,7 @@ func (m message12) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v13.go b/venus-shared/actors/builtin/multisig/message.v13.go index a6fe1ab3ed..136ff056e4 100644 --- a/venus-shared/actors/builtin/multisig/message.v13.go +++ b/venus-shared/actors/builtin/multisig/message.v13.go @@ -10,7 +10,7 @@ import ( actorstypes "github.com/filecoin-project/go-state-types/actors" multisig13 "github.com/filecoin-project/go-state-types/builtin/v13/multisig" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" "github.com/filecoin-project/go-state-types/manifest" builtintypes "github.com/filecoin-project/go-state-types/builtin" @@ -60,7 +60,7 @@ func (m message13) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v14.go b/venus-shared/actors/builtin/multisig/message.v14.go index 528b5009be..0ea9c8f61b 100644 --- a/venus-shared/actors/builtin/multisig/message.v14.go +++ b/venus-shared/actors/builtin/multisig/message.v14.go @@ -9,8 +9,8 @@ import ( "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" multisig14 "github.com/filecoin-project/go-state-types/builtin/v14/multisig" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" "github.com/filecoin-project/go-state-types/manifest" builtintypes "github.com/filecoin-project/go-state-types/builtin" @@ -60,7 +60,7 @@ func (m message14) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v15.go b/venus-shared/actors/builtin/multisig/message.v15.go new file mode 100644 index 0000000000..389090ab4d --- /dev/null +++ b/venus-shared/actors/builtin/multisig/message.v15.go @@ -0,0 +1,80 @@ +// FETCHED FROM LOTUS: builtin/multisig/message.go.template + +package multisig + +import ( + "fmt" + + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" + multisig15 "github.com/filecoin-project/go-state-types/builtin/v15/multisig" + "github.com/filecoin-project/go-state-types/manifest" + + builtintypes "github.com/filecoin-project/go-state-types/builtin" + "github.com/filecoin-project/venus/venus-shared/actors" + init_ "github.com/filecoin-project/venus/venus-shared/actors/builtin/init" + "github.com/filecoin-project/venus/venus-shared/actors/types" +) + +type message15 struct{ message0 } + +func (m message15) 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, fmt.Errorf("cannot require signing of more addresses than provided for multisig") + } + + if threshold == 0 { + threshold = lenAddrs + } + + if m.from == address.Undef { + return nil, fmt.Errorf("must provide source address") + } + + // Set up constructor parameters for multisig + msigParams := &multisig15.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.Version15, manifest.MultisigKey) + if !ok { + return nil, fmt.Errorf("failed to get multisig code ID") + } + + // new actors are created by invoking 'exec' on the init actor with the constructor params + execParams := &init15.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/venus-shared/actors/builtin/multisig/message.v8.go b/venus-shared/actors/builtin/multisig/message.v8.go index 1a981d3c5a..66458aca50 100644 --- a/venus-shared/actors/builtin/multisig/message.v8.go +++ b/venus-shared/actors/builtin/multisig/message.v8.go @@ -9,7 +9,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" multisig8 "github.com/filecoin-project/go-state-types/builtin/v8/multisig" "github.com/filecoin-project/go-state-types/manifest" @@ -60,7 +60,7 @@ func (m message8) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/message.v9.go b/venus-shared/actors/builtin/multisig/message.v9.go index 9195a9b9fe..9985ebc159 100644 --- a/venus-shared/actors/builtin/multisig/message.v9.go +++ b/venus-shared/actors/builtin/multisig/message.v9.go @@ -9,7 +9,7 @@ import ( "github.com/filecoin-project/go-state-types/abi" actorstypes "github.com/filecoin-project/go-state-types/actors" - init14 "github.com/filecoin-project/go-state-types/builtin/v14/init" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" multisig9 "github.com/filecoin-project/go-state-types/builtin/v9/multisig" "github.com/filecoin-project/go-state-types/manifest" @@ -60,7 +60,7 @@ func (m message9) Create( } // new actors are created by invoking 'exec' on the init actor with the constructor params - execParams := &init14.ExecParams{ + execParams := &init15.ExecParams{ CodeCID: code, ConstructorParams: enc, } diff --git a/venus-shared/actors/builtin/multisig/state.v15.go b/venus-shared/actors/builtin/multisig/state.v15.go new file mode 100644 index 0000000000..0649fa6f28 --- /dev/null +++ b/venus-shared/actors/builtin/multisig/state.v15.go @@ -0,0 +1,140 @@ +// FETCHED FROM LOTUS: builtin/multisig/state.go.template + +package multisig + +import ( + "bytes" + "encoding/binary" + "fmt" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + + "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-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + builtin15 "github.com/filecoin-project/go-state-types/builtin" + msig15 "github.com/filecoin-project/go-state-types/builtin/v15/multisig" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, signers []address.Address, threshold uint64, startEpoch abi.ChainEpoch, unlockDuration abi.ChainEpoch, initialBalance abi.TokenAmount) (State, error) { + out := state15{store: store} + out.State = msig15.State{} + out.State.Signers = signers + out.State.NumApprovalsThreshold = threshold + out.State.StartEpoch = startEpoch + out.State.UnlockDuration = unlockDuration + out.State.InitialBalance = initialBalance + + em, err := adt15.StoreEmptyMap(store, builtin15.DefaultHamtBitwidth) + if err != nil { + return nil, err + } + + out.State.PendingTxns = em + + return &out, nil +} + +type state15 struct { + msig15.State + store adt.Store +} + +func (s *state15) LockedBalance(currEpoch abi.ChainEpoch) (abi.TokenAmount, error) { + return s.State.AmountLocked(currEpoch - s.State.StartEpoch), nil +} + +func (s *state15) StartEpoch() (abi.ChainEpoch, error) { + return s.State.StartEpoch, nil +} + +func (s *state15) UnlockDuration() (abi.ChainEpoch, error) { + return s.State.UnlockDuration, nil +} + +func (s *state15) InitialBalance() (abi.TokenAmount, error) { + return s.State.InitialBalance, nil +} + +func (s *state15) Threshold() (uint64, error) { + return s.State.NumApprovalsThreshold, nil +} + +func (s *state15) Signers() ([]address.Address, error) { + return s.State.Signers, nil +} + +func (s *state15) ForEachPendingTxn(cb func(id int64, txn Transaction) error) error { + arr, err := adt15.AsMap(s.store, s.State.PendingTxns, builtin15.DefaultHamtBitwidth) + if err != nil { + return err + } + var out msig15.Transaction + return arr.ForEach(&out, func(key string) error { + txid, n := binary.Varint([]byte(key)) + if n <= 0 { + return fmt.Errorf("invalid pending transaction key: %v", key) + } + return cb(txid, (Transaction)(out)) //nolint:unconvert + }) +} + +func (s *state15) PendingTxnChanged(other State) (bool, error) { + other15, ok := other.(*state15) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.PendingTxns.Equals(other15.PendingTxns), nil +} + +func (s *state15) transactions() (adt.Map, error) { + return adt15.AsMap(s.store, s.PendingTxns, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) decodeTransaction(val *cbg.Deferred) (Transaction, error) { + var tx msig15.Transaction + if err := tx.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return Transaction{}, err + } + return Transaction(tx), nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ActorKey() string { + return manifest.MultisigKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/paych/actor.go b/venus-shared/actors/builtin/paych/actor.go index f22b8315d4..4c4383a9f0 100644 --- a/venus-shared/actors/builtin/paych/actor.go +++ b/venus-shared/actors/builtin/paych/actor.go @@ -68,6 +68,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -194,6 +197,9 @@ func Message(version actorstypes.Version, from address.Address) MessageBuilder { case actorstypes.Version14: return message14{from} + case actorstypes.Version15: + return message15{from} + default: panic(fmt.Sprintf("unsupported actors version: %d", version)) } @@ -238,5 +244,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/paych/message.v15.go b/venus-shared/actors/builtin/paych/message.v15.go new file mode 100644 index 0000000000..14f74d5164 --- /dev/null +++ b/venus-shared/actors/builtin/paych/message.v15.go @@ -0,0 +1,113 @@ +// FETCHED FROM LOTUS: builtin/paych/message.go.template + +package paych + +import ( + "fmt" + + "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" + builtin15 "github.com/filecoin-project/go-state-types/builtin" + init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" + paych15 "github.com/filecoin-project/go-state-types/builtin/v15/paych" + + "github.com/filecoin-project/venus/venus-shared/actors" + init_ "github.com/filecoin-project/venus/venus-shared/actors/builtin/init" + "github.com/filecoin-project/venus/venus-shared/actors/types" +) + +type message15 struct{ from address.Address } + +func (m message15) Create(to address.Address, initialAmount abi.TokenAmount) (*types.Message, error) { + + actorCodeID, ok := actors.GetActorCodeID(actorstypes.Version15, "paymentchannel") + if !ok { + return nil, fmt.Errorf("error getting actor paymentchannel code id for actor version %d", 15) + } + + params, aerr := actors.SerializeParams(&paych15.ConstructorParams{From: m.from, To: to}) + if aerr != nil { + return nil, aerr + } + enc, aerr := actors.SerializeParams(&init15.ExecParams{ + CodeCID: actorCodeID, + ConstructorParams: params, + }) + if aerr != nil { + return nil, aerr + } + + return &types.Message{ + To: init_.Address, + From: m.from, + Value: initialAmount, + Method: builtin15.MethodsInit.Exec, + Params: enc, + }, nil +} + +func (m message15) Update(paych address.Address, sv *paychtypes.SignedVoucher, secret []byte) (*types.Message, error) { + params, aerr := actors.SerializeParams(&paych15.UpdateChannelStateParams{ + + Sv: toV15SignedVoucher(*sv), + + Secret: secret, + }) + if aerr != nil { + return nil, aerr + } + + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin15.MethodsPaych.UpdateChannelState, + Params: params, + }, nil +} + +func toV15SignedVoucher(sv paychtypes.SignedVoucher) paych15.SignedVoucher { + merges := make([]paych15.Merge, len(sv.Merges)) + for i := range sv.Merges { + merges[i] = paych15.Merge{ + Lane: sv.Merges[i].Lane, + Nonce: sv.Merges[i].Nonce, + } + } + + return paych15.SignedVoucher{ + ChannelAddr: sv.ChannelAddr, + TimeLockMin: sv.TimeLockMin, + TimeLockMax: sv.TimeLockMax, + SecretHash: sv.SecretHash, + Extra: (*paych15.ModVerifyParams)(sv.Extra), + Lane: sv.Lane, + Nonce: sv.Nonce, + Amount: sv.Amount, + MinSettleHeight: sv.MinSettleHeight, + Merges: merges, + Signature: sv.Signature, + } +} + +func (m message15) Settle(paych address.Address) (*types.Message, error) { + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin15.MethodsPaych.Settle, + }, nil +} + +func (m message15) Collect(paych address.Address) (*types.Message, error) { + return &types.Message{ + To: paych, + From: m.from, + Value: abi.NewTokenAmount(0), + Method: builtin15.MethodsPaych.Collect, + }, nil +} diff --git a/venus-shared/actors/builtin/paych/state.v15.go b/venus-shared/actors/builtin/paych/state.v15.go new file mode 100644 index 0000000000..b37aef033f --- /dev/null +++ b/venus-shared/actors/builtin/paych/state.v15.go @@ -0,0 +1,138 @@ +// FETCHED FROM LOTUS: builtin/paych/state.go.template + +package paych + +import ( + "fmt" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "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/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + paych15 "github.com/filecoin-project/go-state-types/builtin/v15/paych" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store) (State, error) { + out := state15{store: store} + out.State = paych15.State{} + return &out, nil +} + +type state15 struct { + paych15.State + store adt.Store + lsAmt *adt15.Array +} + +// Channel owner, who has funded the actor +func (s *state15) From() (address.Address, error) { + return s.State.From, nil +} + +// Recipient of payouts from channel +func (s *state15) To() (address.Address, error) { + return s.State.To, nil +} + +// Height at which the channel can be `Collected` +func (s *state15) SettlingAt() (abi.ChainEpoch, error) { + return s.State.SettlingAt, nil +} + +// Amount successfully redeemed through the payment channel, paid out on `Collect()` +func (s *state15) ToSend() (abi.TokenAmount, error) { + return s.State.ToSend, nil +} + +func (s *state15) getOrLoadLsAmt() (*adt15.Array, error) { + if s.lsAmt != nil { + return s.lsAmt, nil + } + + // Get the lane state from the chain + lsamt, err := adt15.AsArray(s.store, s.State.LaneStates, paych15.LaneStatesAmtBitwidth) + if err != nil { + return nil, err + } + + s.lsAmt = lsamt + return lsamt, nil +} + +// Get total number of lanes +func (s *state15) LaneCount() (uint64, error) { + lsamt, err := s.getOrLoadLsAmt() + if err != nil { + return 0, err + } + return lsamt.Length(), nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +// Iterate lane states +func (s *state15) 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 paych15.LaneState + return lsamt.ForEach(&ls, func(i int64) error { + return cb(uint64(i), &laneState15{ls}) + }) +} + +type laneState15 struct { + paych15.LaneState +} + +func (ls *laneState15) Redeemed() (big.Int, error) { + return ls.LaneState.Redeemed, nil +} + +func (ls *laneState15) Nonce() (uint64, error) { + return ls.LaneState.Nonce, nil +} + +func (s *state15) ActorKey() string { + return manifest.PaychKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/power/actor.go b/venus-shared/actors/builtin/power/actor.go index b42fc8ad56..e4a2a25f86 100644 --- a/venus-shared/actors/builtin/power/actor.go +++ b/venus-shared/actors/builtin/power/actor.go @@ -34,12 +34,12 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin14.StoragePowerActorAddr - Methods = builtin14.MethodsPower + Address = builtin15.StoragePowerActorAddr + Methods = builtin15.MethodsPower ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -71,6 +71,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -147,6 +150,9 @@ func MakeState(store adt.Store, av actorstypes.Version) (State, error) { case actorstypes.Version14: return make14(store) + case actorstypes.Version15: + return make15(store) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -167,6 +173,18 @@ type State interface { // MinerCounts returns the number of miners. Participating is the number // with power above the minimum miner threshold. MinerCounts() (participating, total uint64, err error) + // RampStartEpoch returns the epoch at which the FIP0081 pledge calculation + // change begins. At and before RampStartEpoch, we use the old calculation. At + // RampStartEpoch + RampDurationEpochs, we use 70% old rules + 30% new + // calculation. + // + // This method always returns 0 prior to actors version 15. + RampStartEpoch() int64 + // RampDurationEpochs returns the number of epochs over which the new FIP0081 + // pledge calculation is ramped up. + // + // This method always returns 0 prior to actors version 15. + RampDurationEpochs() uint64 MinerPower(address.Address) (Claim, bool, error) MinerNominalPowerMeetsConsensusMinimum(address.Address) (bool, error) ListAllMiners() ([]address.Address, error) @@ -215,5 +233,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/power/actor.go.template b/venus-shared/actors/builtin/power/actor.go.template index 191549d3a4..df948170b6 100644 --- a/venus-shared/actors/builtin/power/actor.go.template +++ b/venus-shared/actors/builtin/power/actor.go.template @@ -86,6 +86,18 @@ type State interface { // MinerCounts returns the number of miners. Participating is the number // with power above the minimum miner threshold. MinerCounts() (participating, total uint64, err error) + // RampStartEpoch returns the epoch at which the FIP0081 pledge calculation + // change begins. At and before RampStartEpoch, we use the old calculation. At + // RampStartEpoch + RampDurationEpochs, we use 70% old rules + 30% new + // calculation. + // + // This method always returns 0 prior to actors version 15. + RampStartEpoch() int64 + // RampDurationEpochs returns the number of epochs over which the new FIP0081 + // pledge calculation is ramped up. + // + // This method always returns 0 prior to actors version 15. + RampDurationEpochs() uint64 MinerPower(address.Address) (Claim, bool, error) MinerNominalPowerMeetsConsensusMinimum(address.Address) (bool, error) ListAllMiners() ([]address.Address, error) diff --git a/venus-shared/actors/builtin/power/state.sep.go.template b/venus-shared/actors/builtin/power/state.sep.go.template index 723a1ee83f..b59e9c30cf 100644 --- a/venus-shared/actors/builtin/power/state.sep.go.template +++ b/venus-shared/actors/builtin/power/state.sep.go.template @@ -119,6 +119,14 @@ func (s *state{{.v}}) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state{{.v}}) RampStartEpoch() int64 { + return {{if (ge .v 15)}}s.State.RampStartEpoch{{else}}0{{end}} +} + +func (s *state{{.v}}) RampDurationEpochs() uint64 { + return {{if (ge .v 15)}}s.State.RampDurationEpochs{{else}}0{{end}} +} + func (s *state{{.v}}) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v0.go b/venus-shared/actors/builtin/power/state.v0.go index 9a9cc1ac5e..ecbf27c9a7 100644 --- a/venus-shared/actors/builtin/power/state.v0.go +++ b/venus-shared/actors/builtin/power/state.v0.go @@ -103,6 +103,14 @@ func (s *state0) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state0) RampStartEpoch() int64 { + return 0 +} + +func (s *state0) RampDurationEpochs() uint64 { + return 0 +} + func (s *state0) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v10.go b/venus-shared/actors/builtin/power/state.v10.go index 50717d2cc9..037e563b9e 100644 --- a/venus-shared/actors/builtin/power/state.v10.go +++ b/venus-shared/actors/builtin/power/state.v10.go @@ -99,6 +99,14 @@ func (s *state10) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state10) RampStartEpoch() int64 { + return 0 +} + +func (s *state10) RampDurationEpochs() uint64 { + return 0 +} + func (s *state10) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v11.go b/venus-shared/actors/builtin/power/state.v11.go index ea5fc35fd6..64bd6e3873 100644 --- a/venus-shared/actors/builtin/power/state.v11.go +++ b/venus-shared/actors/builtin/power/state.v11.go @@ -99,6 +99,14 @@ func (s *state11) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state11) RampStartEpoch() int64 { + return 0 +} + +func (s *state11) RampDurationEpochs() uint64 { + return 0 +} + func (s *state11) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v12.go b/venus-shared/actors/builtin/power/state.v12.go index 5495a39007..f4def5244c 100644 --- a/venus-shared/actors/builtin/power/state.v12.go +++ b/venus-shared/actors/builtin/power/state.v12.go @@ -99,6 +99,14 @@ func (s *state12) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state12) RampStartEpoch() int64 { + return 0 +} + +func (s *state12) RampDurationEpochs() uint64 { + return 0 +} + func (s *state12) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v13.go b/venus-shared/actors/builtin/power/state.v13.go index f7549f01ed..bc4a087141 100644 --- a/venus-shared/actors/builtin/power/state.v13.go +++ b/venus-shared/actors/builtin/power/state.v13.go @@ -99,6 +99,14 @@ func (s *state13) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state13) RampStartEpoch() int64 { + return 0 +} + +func (s *state13) RampDurationEpochs() uint64 { + return 0 +} + func (s *state13) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v14.go b/venus-shared/actors/builtin/power/state.v14.go index 7aad113843..0ebb0a1de6 100644 --- a/venus-shared/actors/builtin/power/state.v14.go +++ b/venus-shared/actors/builtin/power/state.v14.go @@ -99,6 +99,14 @@ func (s *state14) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state14) RampStartEpoch() int64 { + return 0 +} + +func (s *state14) RampDurationEpochs() uint64 { + return 0 +} + func (s *state14) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v15.go b/venus-shared/actors/builtin/power/state.v15.go new file mode 100644 index 0000000000..58c165da3a --- /dev/null +++ b/venus-shared/actors/builtin/power/state.v15.go @@ -0,0 +1,218 @@ +// FETCHED FROM LOTUS: builtin/power/state.go.template + +package power + +import ( + "bytes" + "fmt" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + + "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-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + "github.com/filecoin-project/venus/venus-shared/actors/builtin" + + builtin15 "github.com/filecoin-project/go-state-types/builtin" + power15 "github.com/filecoin-project/go-state-types/builtin/v15/power" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store) (State, error) { + out := state15{store: store} + + s, err := power15.ConstructState(store) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + power15.State + store adt.Store +} + +func (s *state15) TotalLocked() (abi.TokenAmount, error) { + return s.TotalPledgeCollateral, nil +} + +func (s *state15) 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 *state15) TotalCommitted() (Claim, error) { + return Claim{ + RawBytePower: s.TotalBytesCommitted, + QualityAdjPower: s.TotalQABytesCommitted, + }, nil +} + +func (s *state15) MinerPower(addr address.Address) (Claim, bool, error) { + claims, err := s.claims() + if err != nil { + return Claim{}, false, err + } + var claim power15.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 *state15) MinerNominalPowerMeetsConsensusMinimum(a address.Address) (bool, error) { + return s.State.MinerNominalPowerMeetsConsensusMinimum(s.store, a) +} + +func (s *state15) TotalPowerSmoothed() (builtin.FilterEstimate, error) { + return builtin.FilterEstimate(s.State.ThisEpochQAPowerSmoothed), nil +} + +func (s *state15) MinerCounts() (uint64, uint64, error) { + return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil +} + +func (s *state15) RampStartEpoch() int64 { + return s.State.RampStartEpoch +} + +func (s *state15) RampDurationEpochs() uint64 { + return s.State.RampDurationEpochs +} + +func (s *state15) 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 *state15) ForEachClaim(cb func(miner address.Address, claim Claim) error) error { + claims, err := s.claims() + if err != nil { + return err + } + + var claim power15.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 *state15) ClaimsChanged(other State) (bool, error) { + other15, ok := other.(*state15) + if !ok { + // treat an upgrade as a change, always + return true, nil + } + return !s.State.Claims.Equals(other15.State.Claims), nil +} + +func (s *state15) SetTotalQualityAdjPower(p abi.StoragePower) error { + s.State.TotalQualityAdjPower = p + return nil +} + +func (s *state15) SetTotalRawBytePower(p abi.StoragePower) error { + s.State.TotalRawBytePower = p + return nil +} + +func (s *state15) SetThisEpochQualityAdjPower(p abi.StoragePower) error { + s.State.ThisEpochQualityAdjPower = p + return nil +} + +func (s *state15) SetThisEpochRawBytePower(p abi.StoragePower) error { + s.State.ThisEpochRawBytePower = p + return nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) claims() (adt.Map, error) { + return adt15.AsMap(s.store, s.Claims, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) decodeClaim(val *cbg.Deferred) (Claim, error) { + var ci power15.Claim + if err := ci.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil { + return Claim{}, err + } + return fromV15Claim(ci), nil +} + +func fromV15Claim(v15 power15.Claim) Claim { + return Claim{ + RawBytePower: v15.RawBytePower, + QualityAdjPower: v15.QualityAdjPower, + } +} + +func (s *state15) ActorKey() string { + return manifest.PowerKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/power/state.v2.go b/venus-shared/actors/builtin/power/state.v2.go index ea77dd0074..eac10761c1 100644 --- a/venus-shared/actors/builtin/power/state.v2.go +++ b/venus-shared/actors/builtin/power/state.v2.go @@ -103,6 +103,14 @@ func (s *state2) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state2) RampStartEpoch() int64 { + return 0 +} + +func (s *state2) RampDurationEpochs() uint64 { + return 0 +} + func (s *state2) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v3.go b/venus-shared/actors/builtin/power/state.v3.go index 07bfd91759..72f31d09d2 100644 --- a/venus-shared/actors/builtin/power/state.v3.go +++ b/venus-shared/actors/builtin/power/state.v3.go @@ -100,6 +100,14 @@ func (s *state3) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state3) RampStartEpoch() int64 { + return 0 +} + +func (s *state3) RampDurationEpochs() uint64 { + return 0 +} + func (s *state3) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v4.go b/venus-shared/actors/builtin/power/state.v4.go index daa3967528..f851d38c0c 100644 --- a/venus-shared/actors/builtin/power/state.v4.go +++ b/venus-shared/actors/builtin/power/state.v4.go @@ -100,6 +100,14 @@ func (s *state4) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state4) RampStartEpoch() int64 { + return 0 +} + +func (s *state4) RampDurationEpochs() uint64 { + return 0 +} + func (s *state4) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v5.go b/venus-shared/actors/builtin/power/state.v5.go index 19256b97fc..743757a507 100644 --- a/venus-shared/actors/builtin/power/state.v5.go +++ b/venus-shared/actors/builtin/power/state.v5.go @@ -100,6 +100,14 @@ func (s *state5) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state5) RampStartEpoch() int64 { + return 0 +} + +func (s *state5) RampDurationEpochs() uint64 { + return 0 +} + func (s *state5) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v6.go b/venus-shared/actors/builtin/power/state.v6.go index fee1596cae..718c322816 100644 --- a/venus-shared/actors/builtin/power/state.v6.go +++ b/venus-shared/actors/builtin/power/state.v6.go @@ -100,6 +100,14 @@ func (s *state6) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state6) RampStartEpoch() int64 { + return 0 +} + +func (s *state6) RampDurationEpochs() uint64 { + return 0 +} + func (s *state6) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v7.go b/venus-shared/actors/builtin/power/state.v7.go index add7a59bf6..da1da21937 100644 --- a/venus-shared/actors/builtin/power/state.v7.go +++ b/venus-shared/actors/builtin/power/state.v7.go @@ -100,6 +100,14 @@ func (s *state7) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state7) RampStartEpoch() int64 { + return 0 +} + +func (s *state7) RampDurationEpochs() uint64 { + return 0 +} + func (s *state7) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v8.go b/venus-shared/actors/builtin/power/state.v8.go index 53429a270b..2f2c24e03e 100644 --- a/venus-shared/actors/builtin/power/state.v8.go +++ b/venus-shared/actors/builtin/power/state.v8.go @@ -99,6 +99,14 @@ func (s *state8) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state8) RampStartEpoch() int64 { + return 0 +} + +func (s *state8) RampDurationEpochs() uint64 { + return 0 +} + func (s *state8) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/power/state.v9.go b/venus-shared/actors/builtin/power/state.v9.go index 12389acaa6..0bd263992c 100644 --- a/venus-shared/actors/builtin/power/state.v9.go +++ b/venus-shared/actors/builtin/power/state.v9.go @@ -99,6 +99,14 @@ func (s *state9) MinerCounts() (uint64, uint64, error) { return uint64(s.State.MinerAboveMinPowerCount), uint64(s.State.MinerCount), nil } +func (s *state9) RampStartEpoch() int64 { + return 0 +} + +func (s *state9) RampDurationEpochs() uint64 { + return 0 +} + func (s *state9) ListAllMiners() ([]address.Address, error) { claims, err := s.claims() if err != nil { diff --git a/venus-shared/actors/builtin/registry.go b/venus-shared/actors/builtin/registry.go index 6aacf9b935..03fc8b6b51 100644 --- a/venus-shared/actors/builtin/registry.go +++ b/venus-shared/actors/builtin/registry.go @@ -133,6 +133,25 @@ import ( evm14 "github.com/filecoin-project/go-state-types/builtin/v14/evm" placeholder14 "github.com/filecoin-project/go-state-types/builtin/v14/placeholder" + account15 "github.com/filecoin-project/go-state-types/builtin/v15/account" + cron15 "github.com/filecoin-project/go-state-types/builtin/v15/cron" + _init15 "github.com/filecoin-project/go-state-types/builtin/v15/init" + market15 "github.com/filecoin-project/go-state-types/builtin/v15/market" + miner15 "github.com/filecoin-project/go-state-types/builtin/v15/miner" + multisig15 "github.com/filecoin-project/go-state-types/builtin/v15/multisig" + paych15 "github.com/filecoin-project/go-state-types/builtin/v15/paych" + power15 "github.com/filecoin-project/go-state-types/builtin/v15/power" + reward15 "github.com/filecoin-project/go-state-types/builtin/v15/reward" + system15 "github.com/filecoin-project/go-state-types/builtin/v15/system" + verifreg15 "github.com/filecoin-project/go-state-types/builtin/v15/verifreg" + + datacap15 "github.com/filecoin-project/go-state-types/builtin/v15/datacap" + + eam15 "github.com/filecoin-project/go-state-types/builtin/v15/eam" + ethaccount15 "github.com/filecoin-project/go-state-types/builtin/v15/ethaccount" + evm15 "github.com/filecoin-project/go-state-types/builtin/v15/evm" + placeholder15 "github.com/filecoin-project/go-state-types/builtin/v15/placeholder" + "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/cbor" "github.com/filecoin-project/go-state-types/manifest" @@ -877,6 +896,110 @@ func MakeRegistry(av actorstypes.Version) []RegistryEntry { } } + case actorstypes.Version15: + for key, codeID := range codeIDs { + switch key { + case manifest.AccountKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: account15.Methods, + state: new(account15.State), + }) + case manifest.CronKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: cron15.Methods, + state: new(cron15.State), + }) + case manifest.InitKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: _init15.Methods, + state: new(_init15.State), + }) + case manifest.MarketKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: market15.Methods, + state: new(market15.State), + }) + case manifest.MinerKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: miner15.Methods, + state: new(miner15.State), + }) + case manifest.MultisigKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: multisig15.Methods, + state: new(multisig15.State), + }) + case manifest.PaychKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: paych15.Methods, + state: new(paych15.State), + }) + case manifest.PowerKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: power15.Methods, + state: new(power15.State), + }) + case manifest.RewardKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: reward15.Methods, + state: new(reward15.State), + }) + case manifest.SystemKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: system15.Methods, + state: new(system15.State), + }) + case manifest.VerifregKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: verifreg15.Methods, + state: new(verifreg15.State), + }) + case manifest.DatacapKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: datacap15.Methods, + state: new(datacap15.State), + }) + + case manifest.EvmKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: evm15.Methods, + state: new(evm15.State), + }) + case manifest.EamKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: eam15.Methods, + state: nil, + }) + case manifest.PlaceholderKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: placeholder15.Methods, + state: nil, + }) + case manifest.EthAccountKey: + registry = append(registry, RegistryEntry{ + code: codeID, + methods: ethaccount15.Methods, + state: nil, + }) + + } + } + default: panic("expected version v8 and up only, use specs-actors for v0-7") } diff --git a/venus-shared/actors/builtin/reward/actor.go b/venus-shared/actors/builtin/reward/actor.go index 3c90b97813..ffcd3038e7 100644 --- a/venus-shared/actors/builtin/reward/actor.go +++ b/venus-shared/actors/builtin/reward/actor.go @@ -27,7 +27,7 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/manifest" "github.com/filecoin-project/venus/venus-shared/actors/adt" @@ -36,8 +36,8 @@ import ( ) var ( - Address = builtin14.RewardActorAddr - Methods = builtin14.MethodsReward + Address = builtin15.RewardActorAddr + Methods = builtin15.MethodsReward ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -69,6 +69,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -145,6 +148,9 @@ func MakeState(store adt.Store, av actorstypes.Version, currRealizedPower abi.St case actorstypes.Version14: return make14(store, currRealizedPower) + case actorstypes.Version15: + return make15(store, currRealizedPower) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -168,7 +174,14 @@ type State interface { CumsumBaseline() (abi.StoragePower, error) CumsumRealized() (abi.StoragePower, error) - InitialPledgeForPower(abi.StoragePower, abi.TokenAmount, *builtin.FilterEstimate, abi.TokenAmount) (abi.TokenAmount, error) + // InitialPledgeForPower computes the pledge requirement for committing new quality-adjusted power + // to the network, given the current network total and baseline power, per-epoch reward, and + // circulating token supply. + // + // Prior to actors version 15, the epochsSinceRampStart and rampDurationEpochs arguments have + // no effect. After actors version 15, these values can be derived from the power actor state + // properties RampStartEpoch and RampDurationEpochs. + InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) PreCommitDepositForPower(builtin.FilterEstimate, abi.StoragePower) (abi.TokenAmount, error) GetState() interface{} } @@ -191,5 +204,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/reward/actor.go.template b/venus-shared/actors/builtin/reward/actor.go.template index 1b96a5b6f4..0056121ecd 100644 --- a/venus-shared/actors/builtin/reward/actor.go.template +++ b/venus-shared/actors/builtin/reward/actor.go.template @@ -86,7 +86,14 @@ type State interface { CumsumBaseline() (abi.StoragePower, error) CumsumRealized() (abi.StoragePower, error) - InitialPledgeForPower(abi.StoragePower, abi.TokenAmount, *builtin.FilterEstimate, abi.TokenAmount) (abi.TokenAmount, error) + // InitialPledgeForPower computes the pledge requirement for committing new quality-adjusted power + // to the network, given the current network total and baseline power, per-epoch reward, and + // circulating token supply. + // + // Prior to actors version 15, the epochsSinceRampStart and rampDurationEpochs arguments have + // no effect. After actors version 15, these values can be derived from the power actor state + // properties RampStartEpoch and RampDurationEpochs. + InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) PreCommitDepositForPower(builtin.FilterEstimate, abi.StoragePower) (abi.TokenAmount, error) GetState() interface{} } diff --git a/venus-shared/actors/builtin/reward/state.sep.go.template b/venus-shared/actors/builtin/reward/state.sep.go.template index d34fcb13db..3d1bdc50e4 100644 --- a/venus-shared/actors/builtin/reward/state.sep.go.template +++ b/venus-shared/actors/builtin/reward/state.sep.go.template @@ -85,8 +85,8 @@ func (s *state{{.v}}) CumsumRealized() (reward{{.v}}.Spacetime, error) { return s.State.CumsumRealized, nil } {{if (ge .v 2)}} -func (s *state{{.v}}) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { - return miner{{.v}}.InitialPledgeForPower( +func (s *state{{.v}}) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { +{{if (ge .v 15)}}return miner{{.v}}.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, s.State.ThisEpochRewardSmoothed, @@ -95,10 +95,22 @@ func (s *state{{.v}}) InitialPledgeForPower(qaPower abi.StoragePower, networkTot VelocityEstimate: networkQAPower.VelocityEstimate, }, circSupply, + epochsSinceRampStart, + rampDurationEpochs, ), nil -} +{{else}}return miner{{.v}}.InitialPledgeForPower( + qaPower, + s.State.ThisEpochBaselinePower, + s.State.ThisEpochRewardSmoothed, + smoothing{{.v}}.FilterEstimate{ + PositionEstimate: networkQAPower.PositionEstimate, + VelocityEstimate: networkQAPower.VelocityEstimate, + }, + circSupply, + ), nil +{{end}}} {{else}} -func (s *state0) InitialPledgeForPower(sectorWeight abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state0) InitialPledgeForPower(sectorWeight abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, _ int64, _ uint64) (abi.TokenAmount, error) { return miner0.InitialPledgeForPower( sectorWeight, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v0.go b/venus-shared/actors/builtin/reward/state.v0.go index 92895e2401..8ed13d7ec5 100644 --- a/venus-shared/actors/builtin/reward/state.v0.go +++ b/venus-shared/actors/builtin/reward/state.v0.go @@ -75,7 +75,7 @@ func (s *state0) CumsumRealized() (reward0.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state0) InitialPledgeForPower(sectorWeight abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state0) InitialPledgeForPower(sectorWeight abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, _ int64, _ uint64) (abi.TokenAmount, error) { return miner0.InitialPledgeForPower( sectorWeight, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v10.go b/venus-shared/actors/builtin/reward/state.v10.go index 66556bef4b..03cbff63e7 100644 --- a/venus-shared/actors/builtin/reward/state.v10.go +++ b/venus-shared/actors/builtin/reward/state.v10.go @@ -78,7 +78,7 @@ 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) { +func (s *state10) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner10.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v11.go b/venus-shared/actors/builtin/reward/state.v11.go index 0aac8c9f5e..a1887ce5d4 100644 --- a/venus-shared/actors/builtin/reward/state.v11.go +++ b/venus-shared/actors/builtin/reward/state.v11.go @@ -78,7 +78,7 @@ func (s *state11) CumsumRealized() (reward11.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state11) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state11) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner11.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v12.go b/venus-shared/actors/builtin/reward/state.v12.go index 20702e514d..09e5f00a59 100644 --- a/venus-shared/actors/builtin/reward/state.v12.go +++ b/venus-shared/actors/builtin/reward/state.v12.go @@ -78,7 +78,7 @@ func (s *state12) CumsumRealized() (reward12.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state12) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state12) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner12.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v13.go b/venus-shared/actors/builtin/reward/state.v13.go index a628837f6d..bfeae41ccd 100644 --- a/venus-shared/actors/builtin/reward/state.v13.go +++ b/venus-shared/actors/builtin/reward/state.v13.go @@ -78,7 +78,7 @@ func (s *state13) CumsumRealized() (reward13.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state13) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state13) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner13.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v14.go b/venus-shared/actors/builtin/reward/state.v14.go index 1d5725b3a8..5f730be920 100644 --- a/venus-shared/actors/builtin/reward/state.v14.go +++ b/venus-shared/actors/builtin/reward/state.v14.go @@ -78,7 +78,7 @@ func (s *state14) CumsumRealized() (reward14.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state14) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state14) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner14.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v15.go b/venus-shared/actors/builtin/reward/state.v15.go new file mode 100644 index 0000000000..fa2f33946a --- /dev/null +++ b/venus-shared/actors/builtin/reward/state.v15.go @@ -0,0 +1,124 @@ +// FETCHED FROM LOTUS: builtin/reward/state.go.template + +package reward + +import ( + "fmt" + + "github.com/filecoin-project/go-state-types/abi" + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/go-state-types/manifest" + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + "github.com/filecoin-project/venus/venus-shared/actors/builtin" + + miner15 "github.com/filecoin-project/go-state-types/builtin/v15/miner" + reward15 "github.com/filecoin-project/go-state-types/builtin/v15/reward" + smoothing15 "github.com/filecoin-project/go-state-types/builtin/v15/util/smoothing" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, currRealizedPower abi.StoragePower) (State, error) { + out := state15{store: store} + out.State = *reward15.ConstructState(currRealizedPower) + return &out, nil +} + +type state15 struct { + reward15.State + store adt.Store +} + +func (s *state15) ThisEpochReward() (abi.TokenAmount, error) { + return s.State.ThisEpochReward, nil +} + +func (s *state15) ThisEpochRewardSmoothed() (builtin.FilterEstimate, error) { + + return builtin.FilterEstimate{ + PositionEstimate: s.State.ThisEpochRewardSmoothed.PositionEstimate, + VelocityEstimate: s.State.ThisEpochRewardSmoothed.VelocityEstimate, + }, nil + +} + +func (s *state15) ThisEpochBaselinePower() (abi.StoragePower, error) { + return s.State.ThisEpochBaselinePower, nil +} + +func (s *state15) TotalStoragePowerReward() (abi.TokenAmount, error) { + return s.State.TotalStoragePowerReward, nil +} + +func (s *state15) EffectiveBaselinePower() (abi.StoragePower, error) { + return s.State.EffectiveBaselinePower, nil +} + +func (s *state15) EffectiveNetworkTime() (abi.ChainEpoch, error) { + return s.State.EffectiveNetworkTime, nil +} + +func (s *state15) CumsumBaseline() (reward15.Spacetime, error) { + return s.State.CumsumBaseline, nil +} + +func (s *state15) CumsumRealized() (reward15.Spacetime, error) { + return s.State.CumsumRealized, nil +} + +func (s *state15) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { + return miner15.InitialPledgeForPower( + qaPower, + s.State.ThisEpochBaselinePower, + s.State.ThisEpochRewardSmoothed, + smoothing15.FilterEstimate{ + PositionEstimate: networkQAPower.PositionEstimate, + VelocityEstimate: networkQAPower.VelocityEstimate, + }, + circSupply, + epochsSinceRampStart, + rampDurationEpochs, + ), nil +} + +func (s *state15) PreCommitDepositForPower(networkQAPower builtin.FilterEstimate, sectorWeight abi.StoragePower) (abi.TokenAmount, error) { + return miner15.PreCommitDepositForPower(s.State.ThisEpochRewardSmoothed, + smoothing15.FilterEstimate{ + PositionEstimate: networkQAPower.PositionEstimate, + VelocityEstimate: networkQAPower.VelocityEstimate, + }, + sectorWeight), nil +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) ActorKey() string { + return manifest.RewardKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/reward/state.v2.go b/venus-shared/actors/builtin/reward/state.v2.go index 1b1d4f05dd..90c6cf91f8 100644 --- a/venus-shared/actors/builtin/reward/state.v2.go +++ b/venus-shared/actors/builtin/reward/state.v2.go @@ -78,7 +78,7 @@ func (s *state2) CumsumRealized() (reward2.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state2) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state2) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner2.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v3.go b/venus-shared/actors/builtin/reward/state.v3.go index 5e23f88f5d..0ca99c6d95 100644 --- a/venus-shared/actors/builtin/reward/state.v3.go +++ b/venus-shared/actors/builtin/reward/state.v3.go @@ -78,7 +78,7 @@ func (s *state3) CumsumRealized() (reward3.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state3) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state3) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner3.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v4.go b/venus-shared/actors/builtin/reward/state.v4.go index 274f85b790..6c8f148f61 100644 --- a/venus-shared/actors/builtin/reward/state.v4.go +++ b/venus-shared/actors/builtin/reward/state.v4.go @@ -78,7 +78,7 @@ func (s *state4) CumsumRealized() (reward4.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state4) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state4) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner4.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v5.go b/venus-shared/actors/builtin/reward/state.v5.go index 0fa51d4808..ca469b8f67 100644 --- a/venus-shared/actors/builtin/reward/state.v5.go +++ b/venus-shared/actors/builtin/reward/state.v5.go @@ -78,7 +78,7 @@ func (s *state5) CumsumRealized() (reward5.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state5) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state5) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner5.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v6.go b/venus-shared/actors/builtin/reward/state.v6.go index b5c74eddf5..9a4258c928 100644 --- a/venus-shared/actors/builtin/reward/state.v6.go +++ b/venus-shared/actors/builtin/reward/state.v6.go @@ -78,7 +78,7 @@ func (s *state6) CumsumRealized() (reward6.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state6) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state6) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner6.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v7.go b/venus-shared/actors/builtin/reward/state.v7.go index 5b4fa54819..2fc0ccbd98 100644 --- a/venus-shared/actors/builtin/reward/state.v7.go +++ b/venus-shared/actors/builtin/reward/state.v7.go @@ -78,7 +78,7 @@ func (s *state7) CumsumRealized() (reward7.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state7) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state7) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner7.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v8.go b/venus-shared/actors/builtin/reward/state.v8.go index 05e042741f..84522390c8 100644 --- a/venus-shared/actors/builtin/reward/state.v8.go +++ b/venus-shared/actors/builtin/reward/state.v8.go @@ -78,7 +78,7 @@ func (s *state8) CumsumRealized() (reward8.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state8) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state8) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner8.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/reward/state.v9.go b/venus-shared/actors/builtin/reward/state.v9.go index 019ab8f898..e8be2e78fd 100644 --- a/venus-shared/actors/builtin/reward/state.v9.go +++ b/venus-shared/actors/builtin/reward/state.v9.go @@ -78,7 +78,7 @@ func (s *state9) CumsumRealized() (reward9.Spacetime, error) { return s.State.CumsumRealized, nil } -func (s *state9) InitialPledgeForPower(qaPower abi.StoragePower, networkTotalPledge abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount) (abi.TokenAmount, error) { +func (s *state9) InitialPledgeForPower(qaPower abi.StoragePower, _ abi.TokenAmount, networkQAPower *builtin.FilterEstimate, circSupply abi.TokenAmount, epochsSinceRampStart int64, rampDurationEpochs uint64) (abi.TokenAmount, error) { return miner9.InitialPledgeForPower( qaPower, s.State.ThisEpochBaselinePower, diff --git a/venus-shared/actors/builtin/system/actor.go b/venus-shared/actors/builtin/system/actor.go index 14ccec8ae3..68cc67b5e3 100644 --- a/venus-shared/actors/builtin/system/actor.go +++ b/venus-shared/actors/builtin/system/actor.go @@ -26,11 +26,11 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" ) var ( - Address = builtin14.SystemActorAddr + Address = builtin15.SystemActorAddr ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -62,6 +62,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -138,6 +141,9 @@ func MakeState(store adt.Store, av actorstypes.Version, builtinActors cid.Cid) ( case actorstypes.Version14: return make14(store, builtinActors) + case actorstypes.Version15: + return make15(store, builtinActors) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -168,5 +174,6 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } diff --git a/venus-shared/actors/builtin/system/state.v15.go b/venus-shared/actors/builtin/system/state.v15.go new file mode 100644 index 0000000000..d7d0b0c392 --- /dev/null +++ b/venus-shared/actors/builtin/system/state.v15.go @@ -0,0 +1,75 @@ +// FETCHED FROM LOTUS: builtin/system/state.go.template + +package system + +import ( + "fmt" + + actorstypes "github.com/filecoin-project/go-state-types/actors" + "github.com/filecoin-project/go-state-types/manifest" + + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + system15 "github.com/filecoin-project/go-state-types/builtin/v15/system" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, builtinActors cid.Cid) (State, error) { + out := state15{store: store} + out.State = system15.State{ + BuiltinActors: builtinActors, + } + return &out, nil +} + +type state15 struct { + system15.State + store adt.Store +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) GetBuiltinActors() cid.Cid { + + return s.State.BuiltinActors + +} + +func (s *state15) SetBuiltinActors(c cid.Cid) error { + + s.State.BuiltinActors = c + return nil + +} + +func (s *state15) ActorKey() string { + return manifest.SystemKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin/verifreg/actor.go b/venus-shared/actors/builtin/verifreg/actor.go index b308d71fa7..5184588a6a 100644 --- a/venus-shared/actors/builtin/verifreg/actor.go +++ b/venus-shared/actors/builtin/verifreg/actor.go @@ -28,8 +28,9 @@ import ( builtin7 "github.com/filecoin-project/specs-actors/v7/actors/builtin" - builtin14 "github.com/filecoin-project/go-state-types/builtin" + builtin15 "github.com/filecoin-project/go-state-types/builtin" + verifregtypes12 "github.com/filecoin-project/go-state-types/builtin/v12/verifreg" verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" "github.com/filecoin-project/venus/venus-shared/actors" "github.com/filecoin-project/venus/venus-shared/actors/adt" @@ -37,8 +38,8 @@ import ( ) var ( - Address = builtin14.VerifiedRegistryActorAddr - Methods = builtin14.MethodsVerifiedRegistry + Address = builtin15.VerifiedRegistryActorAddr + Methods = builtin15.MethodsVerifiedRegistry ) func Load(store adt.Store, act *types.Actor) (State, error) { @@ -70,6 +71,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) { case actorstypes.Version14: return load14(store, act.Head) + case actorstypes.Version15: + return load15(store, act.Head) + } } @@ -146,6 +150,9 @@ func MakeState(store adt.Store, av actorstypes.Version, rootKeyAddress address.A case actorstypes.Version14: return make14(store, rootKeyAddress) + case actorstypes.Version15: + return make15(store, rootKeyAddress) + } return nil, fmt.Errorf("unknown actor version %d", av) } @@ -189,12 +196,25 @@ func AllCodes() []cid.Cid { (&state12{}).Code(), (&state13{}).Code(), (&state14{}).Code(), + (&state15{}).Code(), } } -type Allocation = verifregtypes.Allocation -type AllocationId = verifregtypes.AllocationId -type Claim = verifregtypes.Claim -type ClaimId = verifregtypes.ClaimId +type ( + Allocation = verifregtypes.Allocation + AllocationId = verifregtypes.AllocationId + Claim = verifregtypes.Claim + ClaimId = verifregtypes.ClaimId + AllocationRequest = verifregtypes12.AllocationRequest + AllocationRequests = verifregtypes12.AllocationRequests + RemoveExpiredAllocationsParams = verifregtypes12.RemoveExpiredAllocationsParams + AddVerifierParams = verifregtypes12.AddVerifierParams + AddVerifiedClientParams = verifregtypes12.AddVerifiedClientParams +) -const NoAllocationID = verifregtypes.NoAllocationID +const ( + NoAllocationID = verifregtypes.NoAllocationID + MinimumVerifiedAllocationTerm = verifregtypes12.MinimumVerifiedAllocationTerm + MaximumVerifiedAllocationTerm = verifregtypes12.MaximumVerifiedAllocationTerm + MaximumVerifiedAllocationExpiration = verifregtypes12.MaximumVerifiedAllocationExpiration +) diff --git a/venus-shared/actors/builtin/verifreg/actor.go.template b/venus-shared/actors/builtin/verifreg/actor.go.template index 4bdbe281d4..f1f74bc5fb 100644 --- a/venus-shared/actors/builtin/verifreg/actor.go.template +++ b/venus-shared/actors/builtin/verifreg/actor.go.template @@ -22,7 +22,8 @@ import ( "github.com/filecoin-project/venus/venus-shared/actors/adt" "github.com/filecoin-project/venus/venus-shared/actors" "github.com/filecoin-project/venus/venus-shared/actors/types" - verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + verifregtypes "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" + verifregtypes12 "github.com/filecoin-project/go-state-types/builtin/v12/verifreg" ) var ( @@ -98,9 +99,22 @@ func AllCodes() []cid.Cid { } } -type Allocation = verifregtypes.Allocation -type AllocationId = verifregtypes.AllocationId -type Claim = verifregtypes.Claim -type ClaimId = verifregtypes.ClaimId +type ( + Allocation = verifregtypes.Allocation + AllocationId = verifregtypes.AllocationId + Claim = verifregtypes.Claim + ClaimId = verifregtypes.ClaimId + AllocationRequest = verifregtypes12.AllocationRequest + AllocationRequests = verifregtypes12.AllocationRequests + RemoveExpiredAllocationsParams = verifregtypes12.RemoveExpiredAllocationsParams + AddVerifierParams = verifregtypes12.AddVerifierParams + AddVerifiedClientParams = verifregtypes12.AddVerifiedClientParams +) + +const ( + NoAllocationID = verifregtypes.NoAllocationID + MinimumVerifiedAllocationTerm = verifregtypes12.MinimumVerifiedAllocationTerm + MaximumVerifiedAllocationTerm = verifregtypes12.MaximumVerifiedAllocationTerm + MaximumVerifiedAllocationExpiration = verifregtypes12.MaximumVerifiedAllocationExpiration +) -const NoAllocationID = verifregtypes.NoAllocationID diff --git a/venus-shared/actors/builtin/verifreg/state.v15.go b/venus-shared/actors/builtin/verifreg/state.v15.go new file mode 100644 index 0000000000..d84349d71e --- /dev/null +++ b/venus-shared/actors/builtin/verifreg/state.v15.go @@ -0,0 +1,199 @@ +// FETCHED FROM LOTUS: builtin/verifreg/state.go.template + +package verifreg + +import ( + "fmt" + + "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/manifest" + "github.com/ipfs/go-cid" + + "github.com/filecoin-project/venus/venus-shared/actors" + "github.com/filecoin-project/venus/venus-shared/actors/adt" + + builtin15 "github.com/filecoin-project/go-state-types/builtin" + adt15 "github.com/filecoin-project/go-state-types/builtin/v15/util/adt" + verifreg15 "github.com/filecoin-project/go-state-types/builtin/v15/verifreg" + + "github.com/filecoin-project/go-state-types/big" + + verifreg9 "github.com/filecoin-project/go-state-types/builtin/v9/verifreg" +) + +var _ State = (*state15)(nil) + +func load15(store adt.Store, root cid.Cid) (State, error) { + out := state15{store: store} + err := store.Get(store.Context(), root, &out) + if err != nil { + return nil, err + } + return &out, nil +} + +func make15(store adt.Store, rootKeyAddress address.Address) (State, error) { + out := state15{store: store} + + s, err := verifreg15.ConstructState(store, rootKeyAddress) + if err != nil { + return nil, err + } + + out.State = *s + + return &out, nil +} + +type state15 struct { + verifreg15.State + store adt.Store +} + +func (s *state15) RootKey() (address.Address, error) { + return s.State.RootKey, nil +} + +func (s *state15) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) { + + return false, big.Zero(), fmt.Errorf("unsupported in actors v15") + +} + +func (s *state15) VerifierDataCap(addr address.Address) (bool, abi.StoragePower, error) { + return getDataCap(s.store, actors.Version15, s.verifiers, addr) +} + +func (s *state15) RemoveDataCapProposalID(verifier address.Address, client address.Address) (bool, uint64, error) { + return getRemoveDataCapProposalID(s.store, actors.Version15, s.removeDataCapProposalIDs, verifier, client) +} + +func (s *state15) ForEachVerifier(cb func(addr address.Address, dcap abi.StoragePower) error) error { + return forEachCap(s.store, actors.Version15, s.verifiers, cb) +} + +func (s *state15) ForEachClient(cb func(addr address.Address, dcap abi.StoragePower) error) error { + + return fmt.Errorf("unsupported in actors v15") + +} + +func (s *state15) verifiedClients() (adt.Map, error) { + + return nil, fmt.Errorf("unsupported in actors v15") + +} + +func (s *state15) verifiers() (adt.Map, error) { + return adt15.AsMap(s.store, s.Verifiers, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) removeDataCapProposalIDs() (adt.Map, error) { + return adt15.AsMap(s.store, s.RemoveDataCapProposalIDs, builtin15.DefaultHamtBitwidth) +} + +func (s *state15) GetState() interface{} { + return &s.State +} + +func (s *state15) GetAllocation(clientIdAddr address.Address, allocationId verifreg9.AllocationId) (*Allocation, bool, error) { + + alloc, ok, err := s.FindAllocation(s.store, clientIdAddr, verifreg15.AllocationId(allocationId)) + return (*Allocation)(alloc), ok, err +} + +func (s *state15) GetAllocations(clientIdAddr address.Address) (map[AllocationId]Allocation, error) { + + v15Map, err := s.LoadAllocationsToMap(s.store, clientIdAddr) + + retMap := make(map[AllocationId]Allocation, len(v15Map)) + for k, v := range v15Map { + retMap[AllocationId(k)] = Allocation(v) + } + + return retMap, err + +} + +func (s *state15) GetAllAllocations() (map[AllocationId]Allocation, error) { + + v15Map, err := s.State.GetAllAllocations(s.store) + + retMap := make(map[AllocationId]Allocation, len(v15Map)) + for k, v := range v15Map { + retMap[AllocationId(k)] = Allocation(v) + } + + return retMap, err + +} + +func (s *state15) GetClaim(providerIdAddr address.Address, claimId verifreg9.ClaimId) (*Claim, bool, error) { + + claim, ok, err := s.FindClaim(s.store, providerIdAddr, verifreg15.ClaimId(claimId)) + return (*Claim)(claim), ok, err + +} + +func (s *state15) GetClaims(providerIdAddr address.Address) (map[ClaimId]Claim, error) { + + v15Map, err := s.LoadClaimsToMap(s.store, providerIdAddr) + + retMap := make(map[ClaimId]Claim, len(v15Map)) + for k, v := range v15Map { + retMap[ClaimId(k)] = Claim(v) + } + + return retMap, err + +} + +func (s *state15) GetAllClaims() (map[ClaimId]Claim, error) { + + v15Map, err := s.State.GetAllClaims(s.store) + + retMap := make(map[ClaimId]Claim, len(v15Map)) + for k, v := range v15Map { + retMap[ClaimId(k)] = Claim(v) + } + + return retMap, err + +} + +func (s *state15) GetClaimIdsBySector(providerIdAddr address.Address) (map[abi.SectorNumber][]ClaimId, error) { + + v15Map, err := s.LoadClaimsToMap(s.store, providerIdAddr) + + retMap := make(map[abi.SectorNumber][]ClaimId) + for k, v := range v15Map { + claims, ok := retMap[v.Sector] + if !ok { + retMap[v.Sector] = []ClaimId{ClaimId(k)} + } else { + retMap[v.Sector] = append(claims, ClaimId(k)) + } + } + + return retMap, err + +} + +func (s *state15) ActorKey() string { + return manifest.VerifregKey +} + +func (s *state15) ActorVersion() actorstypes.Version { + return actorstypes.Version15 +} + +func (s *state15) Code() cid.Cid { + code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey()) + if !ok { + panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion())) + } + + return code +} diff --git a/venus-shared/actors/builtin_actors_gen.go b/venus-shared/actors/builtin_actors_gen.go index a5ed6d8fd8..64d7818309 100644 --- a/venus-shared/actors/builtin_actors_gen.go +++ b/venus-shared/actors/builtin_actors_gen.go @@ -162,6 +162,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacebbrs3dzgxwj43ztup7twz25xkbhhtmcbjjbscjvpsrpbwux3b32g"), "verifiedregistry": mustParseCid("bafk2bzacebj3znhdpxqjgvztrv3petqwdkvrefg4j6lrp3n7wfrkdoan4os42"), }, +}, { + Network: "butterflynet", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzacearjal5rsmzloz3ny7aoju2rgw66wgxdrydgg27thcsazbmf5qihq"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzaceapjxl4kobnxn267u42nh2feouubkxcm62vzrk2nrfkqmtz6rgfw4"), + "cron": mustParseCid("bafk2bzacediarrpbvwmkch4axjzxlu7lvpjmee5og7q2dxfqu4kkir2p2qusy"), + "datacap": mustParseCid("bafk2bzaceb4lpszr3axumf6f5ane5tlyj76zimptvt3lx7zpu5lx57zmua4dw"), + "eam": mustParseCid("bafk2bzaceaxjorcph7nmcgfgyv225s5y44xpswtp4b5744dm7kfxiztgf4ti4"), + "ethaccount": mustParseCid("bafk2bzacebz3y3vjqrfk2x2koj733cblhyjqajldc7dfiu7jud6g64b4bzqqc"), + "evm": mustParseCid("bafk2bzacedj7idaxudsiwwvmgluhzvzzvcr7u2r2cfymagjq7amegxfs3oyim"), + "init": mustParseCid("bafk2bzacedtpna72vpmt6yyqx5lxersccnmv2aq2odfp2f5v7o2cvl6zxgrtg"), + "multisig": mustParseCid("bafk2bzacebz3uwa4g5tyg5zb6nad24gnqwlplrlvakdwlytznqfqrnulpg7gm"), + "paymentchannel": mustParseCid("bafk2bzaceatyws2kngfwau6o7c74cl2ogcdm4aopdaozu7r76ymtvrhuk3a4k"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacecxt3jqyiyrqhbdr4eavgkmoijkoundxap7rdbw3g6j62t2hak23u"), + "storagemarket": mustParseCid("bafk2bzacecbx6yzird3wp3lkyroqizp3g5lsysh5qijstfwe4sjngbpo3lx3q"), + "storageminer": mustParseCid("bafk2bzaceb2jyz6tx5gdmu66smksb544wrhqwgub45tq3qltc3wiv64zsbqoa"), + "storagepower": mustParseCid("bafk2bzacebdwg62s5fwmctrtsoz77qx3qk3hj5eu45aiamryphhcak65od4xe"), + "system": mustParseCid("bafk2bzacebf6qpnaem4d3kku74hyizal7rfqmxvngvnerq3gxmyqvnib4ho22"), + "verifiedregistry": mustParseCid("bafk2bzacebxppwtgpstn55klmiux64pwekibcapv6v26nbfrrateth5zzsdic"), + }, }, { Network: "calibrationnet", Version: 8, @@ -314,6 +337,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacederl6tlpieldsn6mkndqwd4wj5orfoqgab6p2klswfn3cjagxwla"), "verifiedregistry": mustParseCid("bafk2bzaceczw2kp6gjjdcjbso7mewp7guik7gr525pal6dotdja2lrct6ok3c"), }, +}, { + Network: "calibrationnet", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzaceax5zkysst7vtyup4whdxwzlpnaya3qp34rnoi6gyt4pongps7obw"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzacecwdkoknhok52hlddoetdkqfwohhv4bx6csu3x6o7aduryv5ufssu"), + "cron": mustParseCid("bafk2bzacebjbuz7fjjsmt6zsuk724ief7yhkzm3b4ghgtasbe2zr4rrwr2qaw"), + "datacap": mustParseCid("bafk2bzacebxssfq5qpdahcvypgxk3o34npc7br5vd6dwe3zdelpql5hil7auq"), + "eam": mustParseCid("bafk2bzacebfllr37yrgvczflbncokmsoqzp5tpf3v4jhfcwz5x5bsieqvmf4c"), + "ethaccount": mustParseCid("bafk2bzacec6onad6awpg54l6d6dubjsncwauxrzrjq5lbxzpyzs5hthepwvmm"), + "evm": mustParseCid("bafk2bzaceabq3zagn4ee2wbagarxf7xgbrqgqgm55xydanxik2bifztqgynts"), + "init": mustParseCid("bafk2bzacedg7uw4z5gdzdlfzalc6xlmbqduawuk6gzrijtln35yas5yagn7s2"), + "multisig": mustParseCid("bafk2bzacean3scmnmvgvyxv44d775ssfwcwghyubqv4dul3ohkvlv3cm2bwui"), + "paymentchannel": mustParseCid("bafk2bzaceb3o3ayjxoi5dc3e6ysuyqtcwbas5cvl3mxhxn57ieackjah5dhe6"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacedcnokx43cbvma4kish3ujmgn7ku2epgfpcv73pzliqlquswu2ukw"), + "storagemarket": mustParseCid("bafk2bzacedifpoan54pgc3bpzpefdlvyigieyjyueiptv4keaeg7fspjjxe62"), + "storageminer": mustParseCid("bafk2bzacecal5j3xng2dlrx3vlieyzni4rvqpvjngxgpai5oarhcrb4wtaaf2"), + "storagepower": mustParseCid("bafk2bzaceclefusmffhuuvtggrmadr3cwpwsgphtlj2wb222ztwwv5mssu5ea"), + "system": mustParseCid("bafk2bzacecybufhea4ah2vwtp4pqxotdfk2lnrgu6cw63jstysjzzcegio4ps"), + "verifiedregistry": mustParseCid("bafk2bzacedbvfxhxsdktslf2rto5kyiumvppoen2avbmpgh7ijsmkxjyua3s4"), + }, }, { Network: "caterpillarnet", Version: 8, @@ -475,6 +521,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacea75k6agtdmjxdfnwbctzstc6pozdblpdevc5ixjevvuzcqwwuzrc"), "verifiedregistry": mustParseCid("bafk2bzacedxwgmgffeapq4nffplapb5mixkrm2vosmc2i3fxcye5dookiqubu"), }, +}, { + Network: "caterpillarnet", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzaceaw24gctg3dx6pzrymhggsp32c7mofjscwnylk4pzsqmilolygwhi"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzacecmm4ymqjjbonet2yxe7l4jqg3uphcxmiz6vwyza4d4tfiy7hu3j4"), + "cron": mustParseCid("bafk2bzaceavxtvwpeakmnjfzfrkoeaxj7olniuucih7ktkd2q5kuuetqaz3ra"), + "datacap": mustParseCid("bafk2bzacebwhd6ojy3v6yqmdg5yxegv5fwydrkorzps2wbfyvhnyse4xgz27u"), + "eam": mustParseCid("bafk2bzaceankzhowyxqpcqmmqwv53uy37hvpzgpe6npbi4kkcxfuryzfeykeg"), + "ethaccount": mustParseCid("bafk2bzaceai5kycpmi6eogph6qnpojtwpn3fxzou7nbdqbooud5ql2ru3zhvk"), + "evm": mustParseCid("bafk2bzacecqefgqxphgqar6tfroj7bfvbnwtbbqeypmkwlis5s2aycgu7cf3q"), + "init": mustParseCid("bafk2bzacedn364np7lgbuzxirktflnkhtt2aipj6u2m66lmhrpxmrsqtbre5o"), + "multisig": mustParseCid("bafk2bzacebhqbrqli6udo5bclkuj5gpaiedzuqisuvzpzdkfalh5lsvxiyqba"), + "paymentchannel": mustParseCid("bafk2bzaceancwwau6oyvwstcigo5l6nytm5q35z5jndy5pmekhpjcmmou3lzs"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacebomw2znawgbr5bf36i43vziblgk2fv5e5wro6xtj62gqfjnk7sg2"), + "storagemarket": mustParseCid("bafk2bzacecz47tblw4pnzpskivaeyazlvbarfh5wifjl7eyckijmjdwi5wqxq"), + "storageminer": mustParseCid("bafk2bzacecb5d2x4dmgqch3fakw54hzzrqg3z7qslb7b6yvoxn5ljftwne7qo"), + "storagepower": mustParseCid("bafk2bzacebz5j6alycdjtqrlsdsjmxdzoictvry43eihon7e5gtlxpq3dwv76"), + "system": mustParseCid("bafk2bzacecwyleco2r5bjjxdj3dp26bluua3f3u4mta4wmrrslfxscb2kz37o"), + "verifiedregistry": mustParseCid("bafk2bzacec4i7zpu6ca5zqcxsowiqqofqix7z5gh3k27mndpnm3wujbzuf2bk"), + }, }, { Network: "devnet", Version: 8, @@ -627,6 +696,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacea4rh5i36ucj23zb4mid4tw5ym2wqlfap4ejjaynvobengeuby4ja"), "verifiedregistry": mustParseCid("bafk2bzaceapbsihfuk3munfpcoevtxlwuenxeiiv7dp7v3t2yjs26hcpypexi"), }, +}, { + Network: "devnet", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzacedlusqjwf7chvl2ve2fum5noyqrtjzcrzkhpbzpkg7puiru7dj4ug"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzaceb7f7gjyz2fkzkbf6jlwttjinny4nci4zdoby7r246xuyc4e2n7me"), + "cron": mustParseCid("bafk2bzaceat32zil3qjywp7bfq4hbew3i6eiadcwjx54sqydw27an5wwzmkri"), + "datacap": mustParseCid("bafk2bzacechbefgwgnajqk3urksgiqw4kro7pankoaidajjobbryitzuhevrm"), + "eam": mustParseCid("bafk2bzaceb4koufzo3rkf7kw4l5zrahfdougmve6jgp72zp3wsvahhfxsmlmg"), + "ethaccount": mustParseCid("bafk2bzacebdovyvmzzssiaqkwl5kw65d72ki3am7p3uic6pzvude76cye5um6"), + "evm": mustParseCid("bafk2bzacebmv2k57q5atsj6jdpkyoa2wmap7hj3jmkuzwlycly44cudyfnwyu"), + "init": mustParseCid("bafk2bzaceaalaquld7f5qryyf2expe7hx7ooeyanybbwehleu2fdzraubknmu"), + "multisig": mustParseCid("bafk2bzacedzegnrtnjrei34cgzv73wgobtverwwkllhvfxpjovqfxs3mtbnpa"), + "paymentchannel": mustParseCid("bafk2bzacedxdsrba55q4isy3mge3hr3l7to6um5wcrmxficstvwpepwfufkda"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacebkzpb37wi7jwxtfnvoa2cpiebyrkq6plcpbzwjyvx7nzambptarq"), + "storagemarket": mustParseCid("bafk2bzacea7xxmmjcxl3vnfqrnbiv7rkq2tgorrsfbdkzcoqxkhmjtslsy5r6"), + "storageminer": mustParseCid("bafk2bzacedlej4t4igjn7nxudsvpvmijcd4oiwngbizcb4jytm7wyzfvgqfzy"), + "storagepower": mustParseCid("bafk2bzacec5auarmk46n2nourfxn34f75xnny63xe7kznnx6vqphawytnl6xs"), + "system": mustParseCid("bafk2bzacebkim7xhbjjuwyqmegclkftnfoz74735yreqdcwr2i6z2kbv767ae"), + "verifiedregistry": mustParseCid("bafk2bzacedd6hquizdv65nai6h5f2lfhkxgkrofn2zcrrwqi5cmbo2wotx6vm"), + }, }, { Network: "hyperspace", Version: 8, @@ -802,6 +894,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacecak4ow7tmauku42s3u2yydonk4hx6ov6ov542hy7lcbji3nhrrhs"), "verifiedregistry": mustParseCid("bafk2bzacebvyzjzmvmjvpypphqsumpy6rzxuugnehgum7grc6sv3yqxzrshb4"), }, +}, { + Network: "mainnet", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzaceakwje2hyinucrhgtsfo44p54iw4g6otbv5ghov65vajhxgntr53u"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzacecia5zacqt4gvd4z7275lnkhgraq75shy63cphakphhw6crf4joii"), + "cron": mustParseCid("bafk2bzacecbyx7utt3tkvhqnfk64kgtlt5jlvv56o2liwczikgzfowk2cvqvk"), + "datacap": mustParseCid("bafk2bzacecrypcpyzidphfl3sf3vhrjbiwzu7w3hoole45wsk2bqpverw4tni"), + "eam": mustParseCid("bafk2bzacebybq7keb45l6isqfaiwxy5oi5wlpknhggjheut7q6xwp7mbxxku4"), + "ethaccount": mustParseCid("bafk2bzaceajdy72edg3t2zcb6qwv2wgdsysfwdtczcklxcp4hlwh7pkxekja4"), + "evm": mustParseCid("bafk2bzaceandffodu45eyro7jr7bizxw7ibipaiskt36xbp4vpvsxtrpkyjfm"), + "init": mustParseCid("bafk2bzaceb5mjmy56ediswt2hvwqdfs2xzi4qw3cefkufoat57yyt3iwkg7kw"), + "multisig": mustParseCid("bafk2bzaced3csl3buj7chpunsubrhwhchtskx674fpukfen4u6pbpkcheueya"), + "paymentchannel": mustParseCid("bafk2bzacea3dpsfxw7cnj6zljmjnnaubp43a5kvuausigztmukektesg2flei"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzaceapkgue3gcxmwx7bvypn33okppa2nwpelcfp7oyo5yln3brixpjpm"), + "storagemarket": mustParseCid("bafk2bzaceaqrnikbxymygwhwa2rsvhnqj5kfch75pn5xawnx243brqlfglsl6"), + "storageminer": mustParseCid("bafk2bzacecnl2hqe3nozwo7al7kdznqgdrv2hbbbmpcbcwzh3yl4trog433hc"), + "storagepower": mustParseCid("bafk2bzacecb3tvvppxmktll3xehjc7mqbfilt6bd4gragbdwxn77hm5frkuac"), + "system": mustParseCid("bafk2bzacecvcqje6kcfqeayj66hezlwzfznytwqkxgw7p64xac5f5lcwjpbwe"), + "verifiedregistry": mustParseCid("bafk2bzacecudaqwbz6dukmdbfok7xuxcpjqighnizhxun4spdqvnqgftkupp2"), + }, }, { Network: "testing", Version: 8, @@ -954,6 +1069,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacechwe3ehay6h7x7tecaajgsxrvvmzcdul6omejfvzf4mpbzkuryhm"), "verifiedregistry": mustParseCid("bafk2bzacec66mmy7sj6qy5urqplwhbem7wbjrzna7mxh6qbdljdawhu3g5rao"), }, +}, { + Network: "testing", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzacedio6qbcgxduz3y2zksor5dgyt3ieiugnugvsz6k2jdzwvugwahag"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzaceabav73gljoyhtozycl5dqwomg4vviuy2jimte545yx3vgg3vfnyo"), + "cron": mustParseCid("bafk2bzacedsbgvf64up7gqlhh5bdvxgvnqvsbppp33assv5osluz46oqafibc"), + "datacap": mustParseCid("bafk2bzacea2ubiaxayu3tg7xpefj3ndbsfgqn5dnyvlwya2yik7kh6twx74ri"), + "eam": mustParseCid("bafk2bzacedykh5puyw66joxeuvobde36bfdiktutxve634b2tc2d2ydfj4fje"), + "ethaccount": mustParseCid("bafk2bzacecdgnwjqc3i2y6goz6d4a6auaxinkwub4eh7aqyntaazitisjhkka"), + "evm": mustParseCid("bafk2bzacecjfoi4jv5h3l5bnd2ewasawqiagahew5wz2377o6t5l2ahm6t4dm"), + "init": mustParseCid("bafk2bzaceau2csdeu3zaqnupnb6d3lor5e6laatvbdslyi3zsexoylpfruh6s"), + "multisig": mustParseCid("bafk2bzacedfkajtsx2i5pzesm7dgvzgeqpgrhlnplz4v2hxzczranmj6ujb4y"), + "paymentchannel": mustParseCid("bafk2bzaceagcnvbzecwryztsgnclpywakvsunzoxkwd5b7bgtgwe5k6dppqju"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacedxwzuvtooihiaq43ibfngg767zibxeygn67gjouwh6pkiat22igi"), + "storagemarket": mustParseCid("bafk2bzacecwnqpoxhhbu6ntiha3yz7x5apyceagbcu7v2togmrbsovajbg7my"), + "storageminer": mustParseCid("bafk2bzacednp3ii6leamsir5sh44spg3rlz7wo5sqocrlmgmh2poa5wm4d2bk"), + "storagepower": mustParseCid("bafk2bzacebigfazstagtjbx6ixzxzns3lza6mnrsw4lvhetej7b6dygiwsvxo"), + "system": mustParseCid("bafk2bzaceb7zn7sblfs3jterbvzm2cnp4g3ys5yfd3vhatkascrjsidyw74sq"), + "verifiedregistry": mustParseCid("bafk2bzaceafcnglgibjq5c26bzoyndzu77g6wdr7s3nnr3wjwhhtvfy7pb5dw"), + }, }, { Network: "testing-fake-proofs", Version: 8, @@ -1106,6 +1244,29 @@ var EmbeddedBuiltinActorsMetadata []*BuiltinActorsMetadata = []*BuiltinActorsMet "system": mustParseCid("bafk2bzacechwe3ehay6h7x7tecaajgsxrvvmzcdul6omejfvzf4mpbzkuryhm"), "verifiedregistry": mustParseCid("bafk2bzacec66mmy7sj6qy5urqplwhbem7wbjrzna7mxh6qbdljdawhu3g5rao"), }, +}, { + Network: "testing-fake-proofs", + Version: 15, + + ManifestCid: mustParseCid("bafy2bzacea3jtzs4jz75ht3ncdyvabef4spz7w375ja7spp36yy3zwp5ji2wi"), + Actors: map[string]cid.Cid{ + "account": mustParseCid("bafk2bzaceabav73gljoyhtozycl5dqwomg4vviuy2jimte545yx3vgg3vfnyo"), + "cron": mustParseCid("bafk2bzacedsbgvf64up7gqlhh5bdvxgvnqvsbppp33assv5osluz46oqafibc"), + "datacap": mustParseCid("bafk2bzacea2ubiaxayu3tg7xpefj3ndbsfgqn5dnyvlwya2yik7kh6twx74ri"), + "eam": mustParseCid("bafk2bzacedykh5puyw66joxeuvobde36bfdiktutxve634b2tc2d2ydfj4fje"), + "ethaccount": mustParseCid("bafk2bzacecdgnwjqc3i2y6goz6d4a6auaxinkwub4eh7aqyntaazitisjhkka"), + "evm": mustParseCid("bafk2bzacecjfoi4jv5h3l5bnd2ewasawqiagahew5wz2377o6t5l2ahm6t4dm"), + "init": mustParseCid("bafk2bzaceau2csdeu3zaqnupnb6d3lor5e6laatvbdslyi3zsexoylpfruh6s"), + "multisig": mustParseCid("bafk2bzaceclv7t7qu5pu4kwkkkxqknbpdtuaa57cdgoxaci6vfjfxpzbwb4h4"), + "paymentchannel": mustParseCid("bafk2bzaceagcnvbzecwryztsgnclpywakvsunzoxkwd5b7bgtgwe5k6dppqju"), + "placeholder": mustParseCid("bafk2bzacedfvut2myeleyq67fljcrw4kkmn5pb5dpyozovj7jpoez5irnc3ro"), + "reward": mustParseCid("bafk2bzacedxwzuvtooihiaq43ibfngg767zibxeygn67gjouwh6pkiat22igi"), + "storagemarket": mustParseCid("bafk2bzacecwnqpoxhhbu6ntiha3yz7x5apyceagbcu7v2togmrbsovajbg7my"), + "storageminer": mustParseCid("bafk2bzacecf3u77js4taapxfwasgwldq4auzrvxgasdqvf5afqgatfgdcvvhc"), + "storagepower": mustParseCid("bafk2bzacebigfazstagtjbx6ixzxzns3lza6mnrsw4lvhetej7b6dygiwsvxo"), + "system": mustParseCid("bafk2bzaceb7zn7sblfs3jterbvzm2cnp4g3ys5yfd3vhatkascrjsidyw74sq"), + "verifiedregistry": mustParseCid("bafk2bzaceafcnglgibjq5c26bzoyndzu77g6wdr7s3nnr3wjwhhtvfy7pb5dw"), + }, }} func mustParseCid(c string) cid.Cid { diff --git a/venus-shared/actors/manifest.go b/venus-shared/actors/manifest.go index 07a88af862..9f1ede6d9f 100644 --- a/venus-shared/actors/manifest.go +++ b/venus-shared/actors/manifest.go @@ -104,7 +104,7 @@ func GetActorCodeIDsFromManifest(av actorstypes.Version) (map[string]cid.Cid, bo return cids, ok } -// Given a Manifest CID, get the manifest from the store and Load data into its entries +// LoadManifest will get the manifest for a given Manifest CID from the store and Load data into its entries func LoadManifest(ctx context.Context, mfCid cid.Cid, adtStore adt.Store) (*manifest.Manifest, error) { var mf manifest.Manifest diff --git a/venus-shared/actors/policy/policy.go b/venus-shared/actors/policy/policy.go index 154c529f4e..2863c9da12 100644 --- a/venus-shared/actors/policy/policy.go +++ b/venus-shared/actors/policy/policy.go @@ -90,18 +90,23 @@ import ( miner14 "github.com/filecoin-project/go-state-types/builtin/v14/miner" verifreg14 "github.com/filecoin-project/go-state-types/builtin/v14/verifreg" - paych14 "github.com/filecoin-project/go-state-types/builtin/v14/paych" + builtin15 "github.com/filecoin-project/go-state-types/builtin" + market15 "github.com/filecoin-project/go-state-types/builtin/v15/market" + miner15 "github.com/filecoin-project/go-state-types/builtin/v15/miner" + verifreg15 "github.com/filecoin-project/go-state-types/builtin/v15/verifreg" + + paych15 "github.com/filecoin-project/go-state-types/builtin/v15/paych" ) const ( - ChainFinality = miner14.ChainFinality + ChainFinality = miner15.ChainFinality SealRandomnessLookback = ChainFinality - PaychSettleDelay = paych14.SettleDelay - MaxPreCommitRandomnessLookback = builtin14.EpochsInDay + SealRandomnessLookback + PaychSettleDelay = paych15.SettleDelay + MaxPreCommitRandomnessLookback = builtin15.EpochsInDay + SealRandomnessLookback ) var ( - MarketDefaultAllocationTermBuffer = market14.MarketDefaultAllocationTermBuffer + MarketDefaultAllocationTermBuffer = market15.MarketDefaultAllocationTermBuffer ) // SetSupportedProofTypes sets supported proof types, across all actor versions. @@ -220,11 +225,13 @@ func SetPreCommitChallengeDelay(delay abi.ChainEpoch) { miner14.PreCommitChallengeDelay = delay + miner15.PreCommitChallengeDelay = delay + } -// TODO: this function shouldn't really exist. Instead, the API should expose the precommit delay. func GetPreCommitChallengeDelay() abi.ChainEpoch { - return miner14.PreCommitChallengeDelay + // TODO: this function shouldn't really exist. Instead, the API should expose the precommit delay. + return miner15.PreCommitChallengeDelay } // SetConsensusMinerMinPower sets the minimum power of an individual miner must @@ -286,6 +293,10 @@ func SetConsensusMinerMinPower(p abi.StoragePower) { policy.ConsensusMinerMinPower = p } + for _, policy := range builtin15.PoStProofPolicies { + policy.ConsensusMinerMinPower = p + } + } // SetMinVerifiedDealSize sets the minimum size of a verified deal. This should @@ -320,6 +331,8 @@ func SetMinVerifiedDealSize(size abi.StoragePower) { verifreg14.MinVerifiedDealSize = size + verifreg15.MinVerifiedDealSize = size + } func GetMaxProveCommitDuration(ver actorstypes.Version, t abi.RegisteredSealProof) (abi.ChainEpoch, error) { @@ -381,6 +394,10 @@ func GetMaxProveCommitDuration(ver actorstypes.Version, t abi.RegisteredSealProo return miner14.MaxProveCommitDuration[t], nil + case actorstypes.Version15: + + return miner15.MaxProveCommitDuration[t], nil + default: return 0, fmt.Errorf("unsupported actors version") } @@ -456,6 +473,11 @@ func SetProviderCollateralSupplyTarget(num, denom big.Int) { Denominator: denom, } + market15.ProviderCollateralSupplyTarget = builtin15.BigFrac{ + Numerator: num, + Denominator: denom, + } + } func DealProviderCollateralBounds( @@ -539,17 +561,22 @@ func DealProviderCollateralBounds( min, max := market14.DealProviderCollateralBounds(size, verified, rawBytePower, qaPower, baselinePower, circulatingFil) return min, max, nil + case actorstypes.Version15: + + min, max := market15.DealProviderCollateralBounds(size, verified, rawBytePower, qaPower, baselinePower, circulatingFil) + return min, max, nil + default: return big.Zero(), big.Zero(), fmt.Errorf("unsupported actors version") } } func DealDurationBounds(pieceSize abi.PaddedPieceSize) (min, max abi.ChainEpoch) { - return market14.DealDurationBounds(pieceSize) + return market15.DealDurationBounds(pieceSize) } -// Sets the challenge window and scales the proving period to match (such that -// there are always 48 challenge windows in a proving period). +// SetWPoStChallengeWindow sets the challenge window and scales the proving period to match (such +// that there are always 48 challenge windows in a proving period). func SetWPoStChallengeWindow(period abi.ChainEpoch) { miner0.WPoStChallengeWindow = period @@ -642,6 +669,13 @@ func SetWPoStChallengeWindow(period abi.ChainEpoch) { // scale it if we're scaling the challenge period. miner14.WPoStDisputeWindow = period * 30 + miner15.WPoStChallengeWindow = period + miner15.WPoStProvingPeriod = period * abi.ChainEpoch(miner15.WPoStPeriodDeadlines) + + // by default, this is 2x finality which is 30 periods. + // scale it if we're scaling the challenge period. + miner15.WPoStDisputeWindow = period * 30 + } func GetWinningPoStSectorSetLookback(nwVer network.Version) abi.ChainEpoch { @@ -702,6 +736,9 @@ func GetMaxSectorExpirationExtension(nv network.Version) (abi.ChainEpoch, error) case actorstypes.Version14: return miner14.MaxSectorExpirationExtension, nil + case actorstypes.Version15: + return miner15.MaxSectorExpirationExtension, nil + default: return 0, fmt.Errorf("unsupported network version") } @@ -709,11 +746,11 @@ func GetMaxSectorExpirationExtension(nv network.Version) (abi.ChainEpoch, error) } func GetMinSectorExpiration() abi.ChainEpoch { - return miner14.MinSectorExpiration + return miner15.MinSectorExpiration } func GetMaxPoStPartitions(nv network.Version, p abi.RegisteredPoStProof) (int, error) { - sectorsPerPart, err := builtin14.PoStProofWindowPoStPartitionSectors(p) + sectorsPerPart, err := builtin15.PoStProofWindowPoStPartitionSectors(p) if err != nil { return 0, err } @@ -722,7 +759,7 @@ func GetMaxPoStPartitions(nv network.Version, p abi.RegisteredPoStProof) (int, e return 0, err } - return min(miner14.PoStedPartitionsMax, int(uint64(maxSectors)/sectorsPerPart)), nil + return min(miner15.PoStedPartitionsMax, int(uint64(maxSectors)/sectorsPerPart)), nil } func GetDefaultAggregationProof() abi.RegisteredAggregationProof { @@ -734,7 +771,7 @@ func GetSectorMaxLifetime(proof abi.RegisteredSealProof, nwVer network.Version) return builtin4.SealProofPoliciesV0[proof].SectorMaxLifetime } - return builtin14.SealProofPoliciesV11[proof].SectorMaxLifetime + return builtin15.SealProofPoliciesV11[proof].SectorMaxLifetime } func GetAddressedSectorsMax(nwVer network.Version) (int, error) { @@ -786,6 +823,9 @@ func GetAddressedSectorsMax(nwVer network.Version) (int, error) { case actorstypes.Version14: return miner14.AddressedSectorsMax, nil + case actorstypes.Version15: + return miner15.AddressedSectorsMax, nil + default: return 0, fmt.Errorf("unsupported network version") } @@ -855,6 +895,10 @@ func GetDeclarationsMax(nwVer network.Version) (int, error) { return miner14.DeclarationsMax, nil + case actorstypes.Version15: + + return miner15.DeclarationsMax, nil + default: return 0, fmt.Errorf("unsupported network version") } @@ -923,6 +967,10 @@ func AggregateProveCommitNetworkFee(nwVer network.Version, aggregateSize int, ba return miner14.AggregateProveCommitNetworkFee(aggregateSize, baseFee), nil + case actorstypes.Version15: + + return miner15.AggregateProveCommitNetworkFee(aggregateSize, baseFee), nil + default: return big.Zero(), fmt.Errorf("unsupported network version") } @@ -991,6 +1039,10 @@ func AggregatePreCommitNetworkFee(nwVer network.Version, aggregateSize int, base return miner14.AggregatePreCommitNetworkFee(aggregateSize, baseFee), nil + case actorstypes.Version15: + + return miner15.AggregatePreCommitNetworkFee(aggregateSize, baseFee), nil + default: return big.Zero(), fmt.Errorf("unsupported network version") } diff --git a/venus-shared/actors/policy/policy.go.template b/venus-shared/actors/policy/policy.go.template index 02a46c49b5..70029cd6d7 100644 --- a/venus-shared/actors/policy/policy.go.template +++ b/venus-shared/actors/policy/policy.go.template @@ -112,8 +112,8 @@ func SetPreCommitChallengeDelay(delay abi.ChainEpoch) { {{end}} } -// TODO: this function shouldn't really exist. Instead, the API should expose the precommit delay. func GetPreCommitChallengeDelay() abi.ChainEpoch { + // TODO: this function shouldn't really exist. Instead, the API should expose the precommit delay. return miner{{.latestVersion}}.PreCommitChallengeDelay } @@ -202,8 +202,8 @@ func DealDurationBounds(pieceSize abi.PaddedPieceSize) (min, max abi.ChainEpoch) return market{{.latestVersion}}.DealDurationBounds(pieceSize) } -// Sets the challenge window and scales the proving period to match (such that -// there are always 48 challenge windows in a proving period). +// SetWPoStChallengeWindow sets the challenge window and scales the proving period to match (such +// that there are always 48 challenge windows in a proving period). func SetWPoStChallengeWindow(period abi.ChainEpoch) { {{range .versions}} miner{{.}}.WPoStChallengeWindow = period diff --git a/venus-shared/compatible-checks/actor-sources.txt b/venus-shared/compatible-checks/actor-sources.txt index 5a74732f8a..903292804a 100644 --- a/venus-shared/compatible-checks/actor-sources.txt +++ b/venus-shared/compatible-checks/actor-sources.txt @@ -15,6 +15,7 @@ SOURCES IN chain/actors: builtin/account/v12.go builtin/account/v13.go builtin/account/v14.go + builtin/account/v15.go builtin/account/v2.go builtin/account/v3.go builtin/account/v4.go @@ -31,6 +32,7 @@ SOURCES IN chain/actors: builtin/cron/v12.go builtin/cron/v13.go builtin/cron/v14.go + builtin/cron/v15.go builtin/cron/v2.go builtin/cron/v3.go builtin/cron/v4.go @@ -46,6 +48,7 @@ SOURCES IN chain/actors: builtin/datacap/v12.go builtin/datacap/v13.go builtin/datacap/v14.go + builtin/datacap/v15.go builtin/datacap/v9.go builtin/evm/evm.go builtin/evm/v10.go @@ -53,6 +56,7 @@ SOURCES IN chain/actors: builtin/evm/v12.go builtin/evm/v13.go builtin/evm/v14.go + builtin/evm/v15.go builtin/init/diff.go builtin/init/init.go builtin/init/v0.go @@ -61,6 +65,7 @@ SOURCES IN chain/actors: builtin/init/v12.go builtin/init/v13.go builtin/init/v14.go + builtin/init/v15.go builtin/init/v2.go builtin/init/v3.go builtin/init/v4.go @@ -77,6 +82,7 @@ SOURCES IN chain/actors: builtin/market/v12.go builtin/market/v13.go builtin/market/v14.go + builtin/market/v15.go builtin/market/v2.go builtin/market/v3.go builtin/market/v4.go @@ -95,6 +101,7 @@ SOURCES IN chain/actors: builtin/miner/v12.go builtin/miner/v13.go builtin/miner/v14.go + builtin/miner/v15.go builtin/miner/v2.go builtin/miner/v3.go builtin/miner/v4.go @@ -110,6 +117,7 @@ SOURCES IN chain/actors: builtin/multisig/message12.go builtin/multisig/message13.go builtin/multisig/message14.go + builtin/multisig/message15.go builtin/multisig/message2.go builtin/multisig/message3.go builtin/multisig/message4.go @@ -125,6 +133,7 @@ SOURCES IN chain/actors: builtin/multisig/v12.go builtin/multisig/v13.go builtin/multisig/v14.go + builtin/multisig/v15.go builtin/multisig/v2.go builtin/multisig/v3.go builtin/multisig/v4.go @@ -139,6 +148,7 @@ SOURCES IN chain/actors: builtin/paych/message12.go builtin/paych/message13.go builtin/paych/message14.go + builtin/paych/message15.go builtin/paych/message2.go builtin/paych/message3.go builtin/paych/message4.go @@ -155,6 +165,7 @@ SOURCES IN chain/actors: builtin/paych/v12.go builtin/paych/v13.go builtin/paych/v14.go + builtin/paych/v15.go builtin/paych/v2.go builtin/paych/v3.go builtin/paych/v4.go @@ -171,6 +182,7 @@ SOURCES IN chain/actors: builtin/power/v12.go builtin/power/v13.go builtin/power/v14.go + builtin/power/v15.go builtin/power/v2.go builtin/power/v3.go builtin/power/v4.go @@ -187,6 +199,7 @@ SOURCES IN chain/actors: builtin/reward/v12.go builtin/reward/v13.go builtin/reward/v14.go + builtin/reward/v15.go builtin/reward/v2.go builtin/reward/v3.go builtin/reward/v4.go @@ -202,6 +215,7 @@ SOURCES IN chain/actors: builtin/system/v12.go builtin/system/v13.go builtin/system/v14.go + builtin/system/v15.go builtin/system/v2.go builtin/system/v3.go builtin/system/v4.go @@ -217,6 +231,7 @@ SOURCES IN chain/actors: builtin/verifreg/v12.go builtin/verifreg/v13.go builtin/verifreg/v14.go + builtin/verifreg/v15.go builtin/verifreg/v2.go builtin/verifreg/v3.go builtin/verifreg/v4.go diff --git a/venus-shared/compatible-checks/api-checksum.txt b/venus-shared/compatible-checks/api-checksum.txt index 8423894719..9e5f1e77ac 100644 --- a/venus-shared/compatible-checks/api-checksum.txt +++ b/venus-shared/compatible-checks/api-checksum.txt @@ -242,7 +242,9 @@ api.FullNode: EthGasPrice: In=1, Out=2, CheckSum=e2f5588dddfc36a9cdef0fad6f4db93e EthGetBalance: In=3, Out=2, CheckSum=80912669b93ebbd53024dbc6b4f39d94 EthGetBlockByHash: In=3, Out=2, CheckSum=606bca6c962d8e2d4e0b8bb14e8fa0a9 - EthGetBlockByNumber: In=3, Out=2, CheckSum=9d82b96bb03c2de85dc7a31e7d4c45d2 + EthGetBlockByNumber: In=3, Out=2, CheckSum=06d77a6c80b11ea456c9207a10459abe + EthGetBlockReceipts: In=2, Out=2, CheckSum=e2817ae4c1a093339a0fd251150de95a + EthGetBlockReceiptsLimited: In=3, Out=2, CheckSum=f5992631f35a54511e4a494b84e66b33 EthGetBlockTransactionCountByHash: In=2, Out=2, CheckSum=aea75f99eaccb878b97512a29568c204 EthGetBlockTransactionCountByNumber: In=2, Out=2, CheckSum=2c3bfb8fef7edce8563d84eab6e9bf4f EthGetCode: In=3, Out=2, CheckSum=a186786e31338dc69207e934b426cc67 @@ -265,9 +267,11 @@ api.FullNode: EthNewPendingTransactionFilter: In=1, Out=2, CheckSum=0b236ca49b91eef3180d6b4082640f0f EthProtocolVersion: In=1, Out=2, CheckSum=442f3dc12ea5a22b7b8fea633069692a EthSendRawTransaction: In=2, Out=2, CheckSum=f63e0b205164d628bc8022b6d5a496f5 + EthSendRawTransactionUntrusted: In=2, Out=2, CheckSum=f63e0b205164d628bc8022b6d5a496f5 EthSubscribe: In=2, Out=2, CheckSum=f63e0b205164d628bc8022b6d5a496f5 EthSyncing: In=1, Out=2, CheckSum=2c17cf64e376c0e9d0d56053d33c0722 EthTraceBlock: In=2, Out=2, CheckSum=87ad85d70d0a285fae530a47eee79d13 + EthTraceFilter: In=2, Out=2, CheckSum=eb8226fb11cf8fd4b9550df816e5ac93 EthTraceReplayBlockTransactions: In=3, Out=2, CheckSum=ec2c86340cf2a777bc64bab8d10e3fdb EthTraceTransaction: In=2, Out=2, CheckSum=5baa667f39dbbb1355663613b6e9cf3b EthUninstallFilter: In=2, Out=2, CheckSum=eaa6a477ffaae115413457bbdb11e339 @@ -276,8 +280,12 @@ api.FullNode: F3GetECPowerTable: In=2, Out=2, CheckSum=cbc0e8e30a005d936a4080aaf911c58f F3GetF3PowerTable: In=2, Out=2, CheckSum=cbc0e8e30a005d936a4080aaf911c58f F3GetLatestCertificate: In=1, Out=2, CheckSum=de551a11a224677fff1d64e2014932e6 - F3Participate: In=4, Out=2, CheckSum=8861bbda56cde25a0dd0cc7ae64ecf60 - FilecoinAddressToEthAddress: In=2, Out=2, CheckSum=13a0b5ce8f82604e17803a00c4086c4c + F3GetManifest: In=1, Out=2, CheckSum=082e48a67a9415757e16938ec8ba34e5 + F3GetOrRenewParticipationTicket: In=4, Out=2, CheckSum=f025742e52bb59e839db5182af1a829a + F3GetProgress: In=1, Out=2, CheckSum=47af12f74b39fcca4877ebed425b6558 + F3IsRunning: In=1, Out=2, CheckSum=de305c848673f2b095e6cfdecdaf85c3 + F3Participate: In=2, Out=2, CheckSum=a09f021cb508b413dddcfae6eb535db4 + FilecoinAddressToEthAddress: In=2, Out=2, CheckSum=59affa319c910c555ee5f1d194049f53 GasEstimateFeeCap: In=4, Out=2, CheckSum=0fcac02de1d21c9ac6e10696a6499eba GasEstimateGasLimit: In=3, Out=2, CheckSum=4d1bd57eef0ee90d4c2e89f097d0604d GasEstimateGasPremium: In=5, Out=2, CheckSum=550724ed37e2fdaa64e55147e82214b1 @@ -416,6 +424,7 @@ api.FullNode: StateMinerFaults: In=3, Out=2, CheckSum=9d26d848f93597964f751b43edd3d476 StateMinerInfo: In=3, Out=2, CheckSum=4ba684a8519aa97d4df405cee3496e7c StateMinerInitialPledgeCollateral: In=4, Out=2, CheckSum=b456dc2029fe2ac176ade895bda96dd5 + StateMinerInitialPledgeForSector: In=5, Out=2, CheckSum=b5edd5d06358a203455b9c3036445d21 StateMinerPartitions: In=4, Out=2, CheckSum=b3cba1da3bd87c433cb8f9df7f7edc09 StateMinerPower: In=3, Out=2, CheckSum=0e70a6360616c25624118181f764d7df StateMinerPreCommitDepositForPower: In=4, Out=2, CheckSum=b456dc2029fe2ac176ade895bda96dd5 diff --git a/venus-shared/compatible-checks/api-diff.txt b/venus-shared/compatible-checks/api-diff.txt index 2461ee94d3..470523c2f6 100644 --- a/venus-shared/compatible-checks/api-diff.txt +++ b/venus-shared/compatible-checks/api-diff.txt @@ -65,6 +65,7 @@ github.com/filecoin-project/venus/venus-shared/api/chain/v0.FullNode <> github.c - Shutdown - StateGetAllAllocations - StateGetAllClaims + > StateGetNetworkParams {[func(context.Context) (*types.NetworkParams, error) <> func(context.Context) (*api.NetworkParams, error)] base=func out type: #0 input; nested={[*types.NetworkParams <> *api.NetworkParams] base=pointed type; nested={[types.NetworkParams <> api.NetworkParams] base=struct field; nested={[types.NetworkParams <> api.NetworkParams] base=exported field type: #5 field named ForkUpgradeParams; nested={[types.ForkUpgradeParams <> api.ForkUpgradeParams] base=struct field; nested={[types.ForkUpgradeParams <> api.ForkUpgradeParams] base=exported fields count: 28 != 29; nested=nil}}}}}} + StateMinerSectorSize + StateMinerWorkerAddress - SyncCheckBad @@ -103,12 +104,13 @@ github.com/filecoin-project/venus/venus-shared/api/chain/v1.FullNode <> github.c + Concurrent - CreateBackup - Discover + > EthGetBlockByNumber {[func(context.Context, string, bool) (types.EthBlock, error) <> func(context.Context, string, bool) (*ethtypes.EthBlock, error)] base=func out type: #0 input; nested={[types.EthBlock <> *ethtypes.EthBlock] base=type kinds: struct != ptr; nested=nil}} + - EthGetBlockReceipts + - EthGetBlockReceiptsLimited + - EthSendRawTransactionUntrusted + - EthTraceFilter > EthTraceReplayBlockTransactions {[func(context.Context, string, []string) ([]*types.EthTraceReplayBlockTransaction, error) <> func(context.Context, string, []string) ([]*ethtypes.EthTraceReplayBlockTransaction, error)] base=func out type: #0 input; nested={[[]*types.EthTraceReplayBlockTransaction <> []*ethtypes.EthTraceReplayBlockTransaction] base=slice element; nested={[*types.EthTraceReplayBlockTransaction <> *ethtypes.EthTraceReplayBlockTransaction] base=pointed type; nested={[types.EthTraceReplayBlockTransaction <> ethtypes.EthTraceReplayBlockTransaction] base=struct field; nested={[types.EthTraceReplayBlockTransaction <> ethtypes.EthTraceReplayBlockTransaction] base=exported field name: #4 field, VMTrace != VmTrace; nested=nil}}}}} - + F3GetManifest - + F3GetOrRenewParticipationTicket - + F3GetProgress - + F3IsRunning - > F3Participate {[func(context.Context, types.F3ParticipationTicket) (types.F3ParticipationLease, error) <> func(context.Context, address.Address, time.Time, time.Time) (bool, error)] base=func in num: 2 != 4; nested=nil} + > FilecoinAddressToEthAddress {[func(context.Context, address.Address) (types.EthAddress, error) <> func(context.Context, jsonrpc.RawParams) (ethtypes.EthAddress, error)] base=func in type: #1 input; nested={[address.Address <> jsonrpc.RawParams] base=type kinds: struct != slice; nested=nil}} + GasBatchEstimateMessageGas > GasEstimateMessageGas {[func(context.Context, *types.Message, *types.MessageSendSpec, types.TipSetKey) (*types.Message, error) <> func(context.Context, *types.Message, *api.MessageSendSpec, types.TipSetKey) (*types.Message, error)] base=func in type: #2 input; nested={[*types.MessageSendSpec <> *api.MessageSendSpec] base=pointed type; nested={[types.MessageSendSpec <> api.MessageSendSpec] base=struct field; nested={[types.MessageSendSpec <> api.MessageSendSpec] base=exported field name: #1 field, GasOverEstimation != MsgUuid; nested=nil}}}} + GetActor @@ -163,6 +165,8 @@ github.com/filecoin-project/venus/venus-shared/api/chain/v1.FullNode <> github.c + SetConcurrent + SetPassword - Shutdown + > StateGetNetworkParams {[func(context.Context) (*types.NetworkParams, error) <> func(context.Context) (*api.NetworkParams, error)] base=func out type: #0 input; nested={[*types.NetworkParams <> *api.NetworkParams] base=pointed type; nested={[types.NetworkParams <> api.NetworkParams] base=struct field; nested={[types.NetworkParams <> api.NetworkParams] base=exported field type: #5 field named ForkUpgradeParams; nested={[types.ForkUpgradeParams <> api.ForkUpgradeParams] base=struct field; nested={[types.ForkUpgradeParams <> api.ForkUpgradeParams] base=exported fields count: 28 != 29; nested=nil}}}}}} + - StateMinerInitialPledgeForSector + StateMinerSectorSize + StateMinerWorkerAddress - SyncCheckBad diff --git a/venus-shared/compatible-checks/api-perm.txt b/venus-shared/compatible-checks/api-perm.txt index e486477183..1abfaa8248 100644 --- a/venus-shared/compatible-checks/api-perm.txt +++ b/venus-shared/compatible-checks/api-perm.txt @@ -67,10 +67,6 @@ v1: github.com/filecoin-project/venus/venus-shared/api/chain/v1 <> github.com/fi - IMinerState.StateMinerSectorSize - IMinerState.StateMinerWorkerAddress - EthSubscriber.EthSubscription - - IF3.F3GetManifest - - IF3.F3GetOrRenewParticipationTicket - - IF3.F3GetProgress - - IF3.F3IsRunning - IMessagePool.GasBatchEstimateMessageGas - IMessagePool.MpoolDeleteByAdress - IMessagePool.MpoolPublishByAddr diff --git a/venus-shared/types/state_types_gen.go b/venus-shared/types/state_types_gen.go index 326ad2f826..2a85479806 100755 --- a/venus-shared/types/state_types_gen.go +++ b/venus-shared/types/state_types_gen.go @@ -252,7 +252,6 @@ type ( AllocationRequest = verifreg.AllocationRequest AllocationRequests = verifreg.AllocationRequests AllocationsResponse = verifreg.AllocationsResponse - VerifregBatchReturn = verifreg.BatchReturn Claim = verifreg.Claim ClaimAllocationsParams = verifreg.ClaimAllocationsParams ClaimAllocationsReturn = verifreg.ClaimAllocationsReturn @@ -262,7 +261,6 @@ type ( DataCap = verifreg.DataCap ExtendClaimTermsParams = verifreg.ExtendClaimTermsParams ExtendClaimTermsReturn = verifreg.ExtendClaimTermsReturn - VerifregFailCode = verifreg.FailCode GetClaimsParams = verifreg.GetClaimsParams GetClaimsReturn = verifreg.GetClaimsReturn ReceiverType = verifreg.ReceiverType diff --git a/venus-shared/utils/method_map.go b/venus-shared/utils/method_map.go index 06196a4342..1f5d2c84f2 100644 --- a/venus-shared/utils/method_map.go +++ b/venus-shared/utils/method_map.go @@ -62,6 +62,7 @@ func loadMethodsMap() { actors = append(actors, actorsWithVersion{av: actorstypes.Version12, actors: builtin.MakeRegistry(actorstypes.Version12)}) actors = append(actors, actorsWithVersion{av: actorstypes.Version13, actors: builtin.MakeRegistry(actorstypes.Version13)}) actors = append(actors, actorsWithVersion{av: actorstypes.Version14, actors: builtin.MakeRegistry(actorstypes.Version14)}) + actors = append(actors, actorsWithVersion{av: actorstypes.Version15, actors: builtin.MakeRegistry(actorstypes.Version15)}) for _, awv := range actors { for _, actor := range awv.actors {