diff --git a/.circleci/config.yml b/.circleci/config.yml index f46a7f174c8..88635ab2c33 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -912,11 +912,6 @@ workflows: - test-conformance: suite: conformance target: "./conformance" - - test-conformance: - name: test-conformance-bleeding-edge - suite: conformance-bleeding-edge - target: "./conformance" - vectors-branch: specs-actors-v7 release: jobs: diff --git a/.circleci/template.yml b/.circleci/template.yml index 7bef6ae4158..724571ac2d3 100644 --- a/.circleci/template.yml +++ b/.circleci/template.yml @@ -527,11 +527,6 @@ workflows: - test-conformance: suite: conformance target: "./conformance" - - test-conformance: - name: test-conformance-bleeding-edge - suite: conformance-bleeding-edge - target: "./conformance" - vectors-branch: specs-actors-v7 release: jobs: diff --git a/chain/consensus/filcns/compute_state.go b/chain/consensus/filcns/compute_state.go index c44f2e08bbc..13dbc2069ad 100644 --- a/chain/consensus/filcns/compute_state.go +++ b/chain/consensus/filcns/compute_state.go @@ -91,11 +91,11 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context, }() ctx = blockstore.WithHotView(ctx) - makeVmWithBaseStateAndEpoch := func(base cid.Cid, e abi.ChainEpoch) (vm.Interface, error) { + makeVm := func(base cid.Cid, e abi.ChainEpoch, timestamp uint64) (vm.Interface, error) { vmopt := &vm.VMOpts{ StateBase: base, Epoch: e, - Timestamp: ts.MinTimestamp(), + Timestamp: timestamp, Rand: r, Bstore: sm.ChainStore().StateBlockstore(), Actors: NewActorRegistry(), @@ -141,10 +141,22 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context, return nil } + // May get filled with the genesis block header if there are null rounds + // for which to backfill cron execution. + var genesis *types.BlockHeader + + // There were null rounds in between the current epoch and the parent epoch. for i := parentEpoch; i < epoch; i++ { var err error if i > parentEpoch { - vmCron, err := makeVmWithBaseStateAndEpoch(pstate, i) + if genesis == nil { + if genesis, err = sm.ChainStore().GetGenesis(ctx); err != nil { + return cid.Undef, cid.Undef, xerrors.Errorf("failed to get genesis when backfilling null rounds: %w", err) + } + } + + ts := genesis.Timestamp + build.BlockDelaySecs*(uint64(i)) + vmCron, err := makeVm(pstate, i, ts) if err != nil { return cid.Undef, cid.Undef, xerrors.Errorf("making cron vm: %w", err) } @@ -171,7 +183,7 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context, partDone() partDone = metrics.Timer(ctx, metrics.VMApplyMessages) - vmi, err := makeVmWithBaseStateAndEpoch(pstate, epoch) + vmi, err := makeVm(pstate, epoch, ts.MinTimestamp()) if err != nil { return cid.Undef, cid.Undef, xerrors.Errorf("making vm: %w", err) } diff --git a/extern/test-vectors b/extern/test-vectors index d9a75a7873a..28b0c45eab4 160000 --- a/extern/test-vectors +++ b/extern/test-vectors @@ -1 +1 @@ -Subproject commit d9a75a7873aee0db28b87e3970d2ea16a2f37c6a +Subproject commit 28b0c45eab4c302864af0aeaaff813625cfafe97