2019-08-26 18:23:11 +00:00
|
|
|
package build
|
|
|
|
|
2019-10-16 07:07:16 +00:00
|
|
|
import (
|
|
|
|
"math/big"
|
|
|
|
)
|
2019-09-27 21:42:12 +00:00
|
|
|
|
2019-08-26 18:23:11 +00:00
|
|
|
// Core network constants
|
|
|
|
|
2019-09-24 11:16:05 +00:00
|
|
|
// /////
|
|
|
|
// Storage
|
|
|
|
|
2019-08-26 18:23:11 +00:00
|
|
|
const UnixfsChunkSize uint64 = 1 << 20
|
2019-08-27 22:10:23 +00:00
|
|
|
const UnixfsLinksPerLevel = 1024
|
|
|
|
|
2019-10-16 07:07:16 +00:00
|
|
|
var SectorSizes = []uint64{
|
2019-11-26 02:43:43 +00:00
|
|
|
1 << 10,
|
2019-10-16 07:07:16 +00:00
|
|
|
16 << 20,
|
2019-10-16 07:09:08 +00:00
|
|
|
256 << 20,
|
2019-10-16 07:07:16 +00:00
|
|
|
1 << 30,
|
|
|
|
}
|
|
|
|
|
|
|
|
func SupportedSectorSize(ssize uint64) bool {
|
|
|
|
for _, ss := range SectorSizes {
|
|
|
|
if ssize == ss {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
2019-08-26 18:23:11 +00:00
|
|
|
|
2019-09-24 11:16:05 +00:00
|
|
|
// /////
|
|
|
|
// Payments
|
|
|
|
|
2019-09-19 16:17:49 +00:00
|
|
|
// Blocks
|
2019-09-09 13:55:06 +00:00
|
|
|
const PaymentChannelClosingDelay = 6 * 60 * 2 // six hours
|
|
|
|
|
2019-09-24 11:16:05 +00:00
|
|
|
// /////
|
|
|
|
// Consensus / Network
|
|
|
|
|
|
|
|
// Seconds
|
2019-11-15 00:20:39 +00:00
|
|
|
const BlockDelay = 12
|
2019-09-24 11:16:05 +00:00
|
|
|
|
|
|
|
// Seconds
|
|
|
|
const AllowableClockDrift = BlockDelay * 2
|
|
|
|
|
2019-09-19 16:17:49 +00:00
|
|
|
// Blocks
|
2019-11-15 00:20:39 +00:00
|
|
|
const ForkLengthThreshold = Finality
|
2019-09-19 16:17:49 +00:00
|
|
|
|
2019-10-13 01:18:59 +00:00
|
|
|
// Blocks (e)
|
2019-11-09 00:18:15 +00:00
|
|
|
const BlocksPerEpoch = 5
|
2019-10-13 01:18:59 +00:00
|
|
|
|
2019-10-28 17:14:24 +00:00
|
|
|
// Blocks
|
|
|
|
const Finality = 500
|
|
|
|
|
2019-11-09 00:18:15 +00:00
|
|
|
// constants for Weight calculation
|
|
|
|
// The ratio of weight contributed by short-term vs long-term factors in a given round
|
|
|
|
const WRatioNum = int64(1)
|
|
|
|
const WRatioDen = 2
|
|
|
|
|
2019-09-24 11:16:05 +00:00
|
|
|
// /////
|
2019-10-28 08:15:08 +00:00
|
|
|
// Proofs
|
2019-09-24 11:16:05 +00:00
|
|
|
|
2019-09-19 16:17:49 +00:00
|
|
|
// Blocks
|
2019-11-15 00:20:39 +00:00
|
|
|
const ProvingPeriodDuration uint64 = 300
|
2019-09-03 17:45:55 +00:00
|
|
|
|
2019-10-28 08:15:08 +00:00
|
|
|
// PoStChallangeTime sets the window in which post computation should happen
|
2019-09-19 16:17:49 +00:00
|
|
|
// Blocks
|
2019-10-28 18:25:24 +00:00
|
|
|
const PoStChallangeTime = ProvingPeriodDuration - 6
|
2019-10-28 08:15:08 +00:00
|
|
|
|
|
|
|
// 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
|
|
|
|
|
2019-10-28 17:14:24 +00:00
|
|
|
// Blocks
|
|
|
|
const SealRandomnessLookback = Finality
|
|
|
|
|
2019-11-05 16:15:52 +00:00
|
|
|
// Blocks
|
|
|
|
const SealRandomnessLookbackLimit = SealRandomnessLookback + 2000
|
|
|
|
|
2019-11-25 16:16:18 +00:00
|
|
|
// 1 / n
|
|
|
|
const SectorChallengeRatioDiv = 25
|
|
|
|
|
2019-10-28 08:15:08 +00:00
|
|
|
// /////
|
|
|
|
// Mining
|
2019-09-24 11:16:05 +00:00
|
|
|
|
|
|
|
// Blocks
|
2019-10-28 08:15:08 +00:00
|
|
|
const EcRandomnessLookback = 300
|
2019-09-19 13:32:00 +00:00
|
|
|
|
2019-11-25 04:45:13 +00:00
|
|
|
const FallbackPoStBegin = 1000
|
2019-11-26 15:15:32 +00:00
|
|
|
const SlashablePowerDelay = 2000
|
2019-11-25 04:45:13 +00:00
|
|
|
|
2019-10-17 00:43:38 +00:00
|
|
|
const PowerCollateralProportion = 5
|
|
|
|
const PerCapitaCollateralProportion = 1
|
|
|
|
const CollateralPrecision = 1000
|
2019-09-12 23:48:03 +00:00
|
|
|
|
2019-10-24 13:39:13 +00:00
|
|
|
// Blocks
|
|
|
|
const InteractivePoRepDelay = 10
|
|
|
|
|
2019-09-24 11:16:05 +00:00
|
|
|
// /////
|
|
|
|
// Devnet settings
|
|
|
|
|
2019-11-08 08:40:02 +00:00
|
|
|
const TotalFilecoin = 2_000_000_000
|
|
|
|
const MiningRewardTotal = 1_400_000_000
|
2019-09-26 22:33:38 +00:00
|
|
|
|
2019-09-28 16:29:10 +00:00
|
|
|
const InitialRewardStr = "153856861913558700202"
|
2019-09-27 21:42:12 +00:00
|
|
|
|
2019-09-27 22:02:02 +00:00
|
|
|
var InitialReward *big.Int
|
2019-09-26 22:33:38 +00:00
|
|
|
|
2019-11-08 08:40:02 +00:00
|
|
|
const FilecoinPrecision = 1_000_000_000_000_000_000
|
2019-09-12 04:12:35 +00:00
|
|
|
|
2019-09-21 00:22:28 +00:00
|
|
|
// six years
|
2019-09-27 20:47:10 +00:00
|
|
|
// Blocks
|
2019-09-21 00:22:28 +00:00
|
|
|
const HalvingPeriodBlocks = 6 * 365 * 24 * 60 * 2
|
|
|
|
|
2019-08-26 18:23:11 +00:00
|
|
|
// TODO: Move other important consts here
|
2019-09-27 21:42:12 +00:00
|
|
|
|
|
|
|
func init() {
|
2019-09-27 22:02:02 +00:00
|
|
|
InitialReward = new(big.Int)
|
2019-09-27 21:42:12 +00:00
|
|
|
|
|
|
|
var ok bool
|
2019-09-27 22:02:02 +00:00
|
|
|
InitialReward, ok = InitialReward.
|
|
|
|
SetString(InitialRewardStr, 10)
|
2019-09-27 21:42:12 +00:00
|
|
|
if !ok {
|
2019-09-27 22:02:02 +00:00
|
|
|
panic("could not parse InitialRewardStr")
|
2019-09-27 21:42:12 +00:00
|
|
|
}
|
|
|
|
}
|
2019-10-09 12:55:27 +00:00
|
|
|
|
|
|
|
// Sync
|
2019-11-11 22:37:34 +00:00
|
|
|
const BadBlockCacheSize = 1 << 15
|
2019-11-12 07:16:42 +00:00
|
|
|
|
|
|
|
// assuming 4000 blocks per round, this lets us not lose any messages across a
|
2019-11-11 22:37:34 +00:00
|
|
|
// 10 block reorg.
|
2019-11-12 07:16:42 +00:00
|
|
|
const BlsSignatureCacheSize = 40000
|