Merge pull request #10189 from filecoin-project/raulk/timestamp-null-rounds
fix: null rounds: pass correct timestamp to the FVM.
This commit is contained in:
commit
37e9fe90ae
@ -912,11 +912,6 @@ workflows:
|
|||||||
- test-conformance:
|
- test-conformance:
|
||||||
suite: conformance
|
suite: conformance
|
||||||
target: "./conformance"
|
target: "./conformance"
|
||||||
- test-conformance:
|
|
||||||
name: test-conformance-bleeding-edge
|
|
||||||
suite: conformance-bleeding-edge
|
|
||||||
target: "./conformance"
|
|
||||||
vectors-branch: specs-actors-v7
|
|
||||||
|
|
||||||
release:
|
release:
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -527,11 +527,6 @@ workflows:
|
|||||||
- test-conformance:
|
- test-conformance:
|
||||||
suite: conformance
|
suite: conformance
|
||||||
target: "./conformance"
|
target: "./conformance"
|
||||||
- test-conformance:
|
|
||||||
name: test-conformance-bleeding-edge
|
|
||||||
suite: conformance-bleeding-edge
|
|
||||||
target: "./conformance"
|
|
||||||
vectors-branch: specs-actors-v7
|
|
||||||
|
|
||||||
release:
|
release:
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -91,11 +91,11 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
ctx = blockstore.WithHotView(ctx)
|
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{
|
vmopt := &vm.VMOpts{
|
||||||
StateBase: base,
|
StateBase: base,
|
||||||
Epoch: e,
|
Epoch: e,
|
||||||
Timestamp: ts.MinTimestamp(),
|
Timestamp: timestamp,
|
||||||
Rand: r,
|
Rand: r,
|
||||||
Bstore: sm.ChainStore().StateBlockstore(),
|
Bstore: sm.ChainStore().StateBlockstore(),
|
||||||
Actors: NewActorRegistry(),
|
Actors: NewActorRegistry(),
|
||||||
@ -141,10 +141,22 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
|
|||||||
return nil
|
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++ {
|
for i := parentEpoch; i < epoch; i++ {
|
||||||
var err error
|
var err error
|
||||||
if i > parentEpoch {
|
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 {
|
if err != nil {
|
||||||
return cid.Undef, cid.Undef, xerrors.Errorf("making cron vm: %w", err)
|
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()
|
||||||
partDone = metrics.Timer(ctx, metrics.VMApplyMessages)
|
partDone = metrics.Timer(ctx, metrics.VMApplyMessages)
|
||||||
|
|
||||||
vmi, err := makeVmWithBaseStateAndEpoch(pstate, epoch)
|
vmi, err := makeVm(pstate, epoch, ts.MinTimestamp())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, cid.Undef, xerrors.Errorf("making vm: %w", err)
|
return cid.Undef, cid.Undef, xerrors.Errorf("making vm: %w", err)
|
||||||
}
|
}
|
||||||
|
2
extern/test-vectors
vendored
2
extern/test-vectors
vendored
@ -1 +1 @@
|
|||||||
Subproject commit d9a75a7873aee0db28b87e3970d2ea16a2f37c6a
|
Subproject commit 28b0c45eab4c302864af0aeaaff813625cfafe97
|
Loading…
Reference in New Issue
Block a user