Set proving params matching the spec more closely
This commit is contained in:
parent
6511c280d6
commit
237f8e8018
@ -33,14 +33,6 @@ func SupportedSectorSize(ssize uint64) bool {
|
|||||||
// Blocks
|
// Blocks
|
||||||
const PaymentChannelClosingDelay = 6 * 60 * 2 // six hours
|
const PaymentChannelClosingDelay = 6 * 60 * 2 // six hours
|
||||||
|
|
||||||
// Blocks
|
|
||||||
const DealVoucherSkewLimit = 10
|
|
||||||
|
|
||||||
// Blocks
|
|
||||||
const MinDealVoucherIncrement = ProvingPeriodDuration
|
|
||||||
|
|
||||||
const MaxVouchersPerDeal = 768 // roughly one voucher per 10h over a year
|
|
||||||
|
|
||||||
// /////
|
// /////
|
||||||
// Consensus / Network
|
// Consensus / Network
|
||||||
|
|
||||||
@ -57,16 +49,27 @@ const ForkLengthThreshold = 100
|
|||||||
const BlocksPerEpoch = 1
|
const BlocksPerEpoch = 1
|
||||||
|
|
||||||
// /////
|
// /////
|
||||||
// Proofs / Mining
|
// Proofs
|
||||||
|
|
||||||
// Blocks
|
|
||||||
const RandomnessLookback = 20
|
|
||||||
|
|
||||||
// Blocks
|
// Blocks
|
||||||
const ProvingPeriodDuration = 40
|
const ProvingPeriodDuration = 40
|
||||||
|
|
||||||
|
// PoStChallangeTime sets the window in which post computation should happen
|
||||||
// Blocks
|
// Blocks
|
||||||
const PoSTChallangeTime = 35
|
const PoStChallangeTime = ProvingPeriodDuration - 5
|
||||||
|
|
||||||
|
// PoStRandomnessLookback is additional randomness lookback for PoSt computation
|
||||||
|
// To compute randomness epoch in a given proving period:
|
||||||
|
// RandH = PPE - PoStChallangeTime - PoStRandomnessLookback
|
||||||
|
//
|
||||||
|
// Blocks
|
||||||
|
const PoStRandomnessLookback = 1
|
||||||
|
|
||||||
|
// /////
|
||||||
|
// Mining
|
||||||
|
|
||||||
|
// Blocks
|
||||||
|
const EcRandomnessLookback = 300
|
||||||
|
|
||||||
const PowerCollateralProportion = 5
|
const PowerCollateralProportion = 5
|
||||||
const PerCapitaCollateralProportion = 1
|
const PerCapitaCollateralProportion = 1
|
||||||
|
@ -360,7 +360,7 @@ func (sma StorageMinerActor) SubmitPoSt(act *types.Actor, vmctx types.VMContext,
|
|||||||
|
|
||||||
var seed [sectorbuilder.CommLen]byte
|
var seed [sectorbuilder.CommLen]byte
|
||||||
{
|
{
|
||||||
randHeight := currentProvingPeriodEnd - build.PoSTChallangeTime
|
randHeight := currentProvingPeriodEnd - build.PoStChallangeTime - build.PoStRandomnessLookback
|
||||||
if vmctx.BlockHeight() <= randHeight {
|
if vmctx.BlockHeight() <= randHeight {
|
||||||
// TODO: spec, retcode
|
// TODO: spec, retcode
|
||||||
return nil, aerrors.Newf(1, "submit PoSt called outside submission window (%d < %d)", vmctx.BlockHeight(), randHeight)
|
return nil, aerrors.Newf(1, "submit PoSt called outside submission window (%d < %d)", vmctx.BlockHeight(), randHeight)
|
||||||
@ -658,7 +658,7 @@ func (sma StorageMinerActor) AddFaults(act *types.Actor, vmctx types.VMContext,
|
|||||||
return nil, aerr
|
return nil, aerr
|
||||||
}
|
}
|
||||||
|
|
||||||
challengeHeight := self.ProvingPeriodEnd - build.PoSTChallangeTime
|
challengeHeight := self.ProvingPeriodEnd - build.PoStChallangeTime
|
||||||
|
|
||||||
if vmctx.BlockHeight() < challengeHeight {
|
if vmctx.BlockHeight() < challengeHeight {
|
||||||
// TODO: optimized bitfield methods
|
// TODO: optimized bitfield methods
|
||||||
|
@ -399,7 +399,7 @@ func (mca mca) WalletSign(ctx context.Context, a address.Address, v []byte) (*ty
|
|||||||
}
|
}
|
||||||
|
|
||||||
func IsRoundWinner(ctx context.Context, ts *types.TipSet, ticks []*types.Ticket, miner address.Address, a MiningCheckAPI) (bool, types.ElectionProof, error) {
|
func IsRoundWinner(ctx context.Context, ts *types.TipSet, ticks []*types.Ticket, miner address.Address, a MiningCheckAPI) (bool, types.ElectionProof, error) {
|
||||||
r, err := a.ChainGetRandomness(ctx, ts, ticks, build.RandomnessLookback)
|
r, err := a.ChainGetRandomness(ctx, ts, ticks, build.EcRandomnessLookback)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil, xerrors.Errorf("chain get randomness: %w", err)
|
return false, nil, xerrors.Errorf("chain get randomness: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -495,7 +495,7 @@ func (syncer *Syncer) ValidateBlock(ctx context.Context, b *types.FullBlock) err
|
|||||||
return xerrors.Errorf("validating block tickets failed: %w", err)
|
return xerrors.Errorf("validating block tickets failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
rand, err := syncer.sm.ChainStore().GetRandomness(ctx, baseTs.Cids(), h.Tickets, build.RandomnessLookback)
|
rand, err := syncer.sm.ChainStore().GetRandomness(ctx, baseTs.Cids(), h.Tickets, build.EcRandomnessLookback)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("failed to get randomness for verifying election proof: %w", err)
|
return xerrors.Errorf("failed to get randomness for verifying election proof: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -44,12 +44,12 @@ func (m *Miner) beginPosting(ctx context.Context) {
|
|||||||
|
|
||||||
m.schedLk.Unlock()
|
m.schedLk.Unlock()
|
||||||
|
|
||||||
log.Infof("Scheduling post at height %d", ppe-build.PoSTChallangeTime)
|
log.Infof("Scheduling post at height %d", ppe-build.PoStChallangeTime)
|
||||||
err = m.events.ChainAt(m.computePost(m.schedPost), func(ts *types.TipSet) error { // Revert
|
err = m.events.ChainAt(m.computePost(m.schedPost), func(ts *types.TipSet) error { // Revert
|
||||||
// TODO: Cancel post
|
// TODO: Cancel post
|
||||||
log.Errorf("TODO: Cancel PoSt, re-run")
|
log.Errorf("TODO: Cancel PoSt, re-run")
|
||||||
return nil
|
return nil
|
||||||
}, PoStConfidence, ppe-build.PoSTChallangeTime)
|
}, PoStConfidence, ppe-build.PoStChallangeTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO: This is BAD, figure something out
|
// TODO: This is BAD, figure something out
|
||||||
log.Errorf("scheduling PoSt failed: %s", err)
|
log.Errorf("scheduling PoSt failed: %s", err)
|
||||||
@ -82,13 +82,13 @@ func (m *Miner) scheduleNextPost(ppe uint64) {
|
|||||||
m.schedPost = ppe
|
m.schedPost = ppe
|
||||||
m.schedLk.Unlock()
|
m.schedLk.Unlock()
|
||||||
|
|
||||||
log.Infow("scheduling PoSt", "post-height", ppe-build.PoSTChallangeTime,
|
log.Infow("scheduling PoSt", "post-height", ppe-build.PoStChallangeTime,
|
||||||
"height", ts.Height(), "ppe", ppe, "proving-period", provingPeriod)
|
"height", ts.Height(), "ppe", ppe, "proving-period", provingPeriod)
|
||||||
err = m.events.ChainAt(m.computePost(ppe), func(ts *types.TipSet) error { // Revert
|
err = m.events.ChainAt(m.computePost(ppe), func(ts *types.TipSet) error { // Revert
|
||||||
// TODO: Cancel post
|
// TODO: Cancel post
|
||||||
log.Errorf("TODO: Cancel PoSt, re-run")
|
log.Errorf("TODO: Cancel PoSt, re-run")
|
||||||
return nil
|
return nil
|
||||||
}, PoStConfidence, ppe-build.PoSTChallangeTime)
|
}, PoStConfidence, ppe-build.PoStChallangeTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO: This is BAD, figure something out
|
// TODO: This is BAD, figure something out
|
||||||
log.Errorf("scheduling PoSt failed: %+v", err)
|
log.Errorf("scheduling PoSt failed: %+v", err)
|
||||||
@ -113,13 +113,13 @@ func (m *Miner) computePost(ppe uint64) func(ts *types.TipSet, curH uint64) erro
|
|||||||
return xerrors.Errorf("failed to get proving set for miner: %w", err)
|
return xerrors.Errorf("failed to get proving set for miner: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
r, err := m.api.ChainGetRandomness(ctx, ts, nil, int(int64(ts.Height())-int64(ppe)+int64(build.PoSTChallangeTime))) // TODO: review: check math
|
r, err := m.api.ChainGetRandomness(ctx, ts, nil, int(int64(ts.Height())-int64(ppe)+int64(build.PoStChallangeTime)+int64(build.PoStRandomnessLookback))) // TODO: review: check math
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("failed to get chain randomness for post (ts=%d; ppe=%d): %w", ts.Height(), ppe, err)
|
return xerrors.Errorf("failed to get chain randomness for post (ts=%d; ppe=%d): %w", ts.Height(), ppe, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infow("running PoSt", "delayed-by",
|
log.Infow("running PoSt", "delayed-by",
|
||||||
int64(ts.Height())-(int64(ppe)-int64(build.PoSTChallangeTime)),
|
int64(ts.Height())-(int64(ppe)-int64(build.PoStChallangeTime)),
|
||||||
"chain-random", r, "ppe", ppe, "height", ts.Height())
|
"chain-random", r, "ppe", ppe, "height", ts.Height())
|
||||||
|
|
||||||
tsStart := time.Now()
|
tsStart := time.Now()
|
||||||
|
Loading…
Reference in New Issue
Block a user