Merge pull request #10397 from filecoin-project/asr/fix-genesis-state-compute
fix: state: short-circuit genesis state computation
This commit is contained in:
commit
b88ecb7896
@ -235,7 +235,7 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
|
|||||||
}
|
}
|
||||||
rErr := t.reward(ctx, vmi, em, epoch, ts, params)
|
rErr := t.reward(ctx, vmi, em, epoch, ts, params)
|
||||||
if rErr != nil {
|
if rErr != nil {
|
||||||
return cid.Undef, cid.Undef, xerrors.Errorf("error applying reward: %w", err)
|
return cid.Undef, cid.Undef, xerrors.Errorf("error applying reward: %w", rErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,6 +308,14 @@ func (t *TipSetExecutor) ExecuteTipSet(ctx context.Context,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ts.Height() == 0 {
|
||||||
|
// NB: This is here because the process that executes blocks requires that the
|
||||||
|
// block miner reference a valid miner in the state tree. Unless we create some
|
||||||
|
// magical genesis miner, this won't work properly, so we short circuit here
|
||||||
|
// This avoids the question of 'who gets paid the genesis block reward'
|
||||||
|
return blks[0].ParentStateRoot, blks[0].ParentMessageReceipts, nil
|
||||||
|
}
|
||||||
|
|
||||||
var parentEpoch abi.ChainEpoch
|
var parentEpoch abi.ChainEpoch
|
||||||
pstate := blks[0].ParentStateRoot
|
pstate := blks[0].ParentStateRoot
|
||||||
if blks[0].Height > 0 {
|
if blks[0].Height > 0 {
|
||||||
|
@ -52,14 +52,6 @@ func (sm *StateManager) TipSetState(ctx context.Context, ts *types.TipSet) (st c
|
|||||||
|
|
||||||
sm.stlk.Unlock()
|
sm.stlk.Unlock()
|
||||||
|
|
||||||
if ts.Height() == 0 {
|
|
||||||
// NB: This is here because the process that executes blocks requires that the
|
|
||||||
// block miner reference a valid miner in the state tree. Unless we create some
|
|
||||||
// magical genesis miner, this won't work properly, so we short circuit here
|
|
||||||
// This avoids the question of 'who gets paid the genesis block reward'
|
|
||||||
return ts.Blocks()[0].ParentStateRoot, ts.Blocks()[0].ParentMessageReceipts, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
st, rec, err = sm.tsExec.ExecuteTipSet(ctx, sm, ts, sm.tsExecMonitor, false)
|
st, rec, err = sm.tsExec.ExecuteTipSet(ctx, sm, ts, sm.tsExecMonitor, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, cid.Undef, err
|
return cid.Undef, cid.Undef, err
|
||||||
|
Loading…
Reference in New Issue
Block a user