2019-08-26 18:23:11 +00:00
|
|
|
package build
|
|
|
|
|
2019-10-16 07:07:16 +00:00
|
|
|
import (
|
|
|
|
"math/big"
|
2020-05-12 17:58:12 +00:00
|
|
|
"sort"
|
2020-03-31 23:13:37 +00:00
|
|
|
|
|
|
|
"github.com/libp2p/go-libp2p-core/protocol"
|
|
|
|
|
2020-05-12 17:58:12 +00:00
|
|
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
|
|
|
"github.com/filecoin-project/specs-actors/actors/builtin"
|
|
|
|
"github.com/filecoin-project/specs-actors/actors/builtin/miner"
|
|
|
|
|
2020-03-31 23:13:37 +00:00
|
|
|
"github.com/filecoin-project/lotus/node/modules/dtypes"
|
2019-10-16 07:07:16 +00:00
|
|
|
)
|
2019-09-27 21:42:12 +00:00
|
|
|
|
2020-05-12 17:58:12 +00:00
|
|
|
func DefaultSectorSize() abi.SectorSize {
|
2020-05-12 18:33:46 +00:00
|
|
|
szs := make([]abi.SectorSize, 0, len(miner.SupportedProofTypes))
|
2020-05-12 17:58:12 +00:00
|
|
|
for spt := range miner.SupportedProofTypes {
|
|
|
|
ss, err := spt.SectorSize()
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
szs = append(szs, ss)
|
|
|
|
}
|
|
|
|
|
|
|
|
sort.Slice(szs, func(i, j int) bool {
|
2020-05-13 20:21:46 +00:00
|
|
|
return szs[i] < szs[j]
|
2020-05-12 17:58:12 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
return szs[0]
|
|
|
|
}
|
|
|
|
|
2019-08-26 18:23:11 +00:00
|
|
|
// Core network constants
|
|
|
|
|
2020-03-31 23:13:37 +00:00
|
|
|
func BlocksTopic(netName dtypes.NetworkName) string { return "/fil/blocks/" + string(netName) }
|
|
|
|
func MessagesTopic(netName dtypes.NetworkName) string { return "/fil/msgs/" + string(netName) }
|
|
|
|
func DhtProtocolName(netName dtypes.NetworkName) protocol.ID {
|
|
|
|
return protocol.ID("/fil/kad/" + string(netName))
|
|
|
|
}
|
2020-03-03 23:44:08 +00:00
|
|
|
|
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-09-24 11:16:05 +00:00
|
|
|
// /////
|
|
|
|
// Consensus / Network
|
|
|
|
|
|
|
|
// Seconds
|
2019-12-16 00:43:32 +00:00
|
|
|
const AllowableClockDrift = 1
|
2019-09-24 11:16:05 +00:00
|
|
|
|
2019-11-28 12:46:56 +00:00
|
|
|
// Epochs
|
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)
|
2020-05-12 17:58:12 +00:00
|
|
|
var BlocksPerEpoch = uint64(builtin.ExpectedLeadersPerEpoch)
|
2019-10-13 01:18:59 +00:00
|
|
|
|
2019-11-28 12:46:56 +00:00
|
|
|
// Epochs
|
2020-05-12 17:58:12 +00:00
|
|
|
const Finality = miner.ChainFinalityish
|
2020-06-03 19:38:37 +00:00
|
|
|
const MessageConfidence = 5
|
2019-10-28 17:14:24 +00:00
|
|
|
|
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-11-28 12:46:56 +00:00
|
|
|
// Epochs
|
2019-10-28 17:14:24 +00:00
|
|
|
const SealRandomnessLookback = Finality
|
|
|
|
|
2019-11-28 12:46:56 +00:00
|
|
|
// Epochs
|
2020-04-03 17:45:48 +00:00
|
|
|
const SealRandomnessLookbackLimit = SealRandomnessLookback + 2000 // TODO: Get from spec specs-actors
|
2019-11-05 16:15:52 +00:00
|
|
|
|
2020-01-08 21:40:51 +00:00
|
|
|
// Maximum lookback that randomness can be sourced from for a seal proof submission
|
2020-04-03 17:45:48 +00:00
|
|
|
const MaxSealLookback = SealRandomnessLookbackLimit + 2000 // TODO: Get from specs-actors
|
2020-01-08 21:40:51 +00:00
|
|
|
|
2019-10-28 08:15:08 +00:00
|
|
|
// /////
|
|
|
|
// Mining
|
2019-09-24 11:16:05 +00:00
|
|
|
|
2019-11-28 12:46:56 +00:00
|
|
|
// Epochs
|
2020-04-08 19:06:41 +00:00
|
|
|
const TicketRandomnessLookback = 1
|
2019-09-19 13:32:00 +00:00
|
|
|
|
2020-04-17 23:36:54 +00:00
|
|
|
const WinningPoStSectorSetLookback = 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-11-08 08:40:02 +00:00
|
|
|
const FilecoinPrecision = 1_000_000_000_000_000_000
|
2019-09-12 04:12:35 +00:00
|
|
|
|
2020-03-07 01:33:24 +00:00
|
|
|
var InitialRewardBalance *big.Int
|
|
|
|
|
2019-08-26 18:23:11 +00:00
|
|
|
// TODO: Move other important consts here
|
2019-09-27 21:42:12 +00:00
|
|
|
|
|
|
|
func init() {
|
2020-03-07 01:33:24 +00:00
|
|
|
InitialRewardBalance = big.NewInt(MiningRewardTotal)
|
|
|
|
InitialRewardBalance = InitialRewardBalance.Mul(InitialRewardBalance, big.NewInt(FilecoinPrecision))
|
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
|
|
|
|
2019-11-28 12:46:56 +00:00
|
|
|
// assuming 4000 messages 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
|
2020-01-07 20:41:26 +00:00
|
|
|
|
2020-05-15 17:56:38 +00:00
|
|
|
// Size of signature verification cache
|
|
|
|
// 32k keeps the cache around 10MB in size, max
|
|
|
|
const VerifSigCacheSize = 32000
|
|
|
|
|
2020-01-07 20:41:26 +00:00
|
|
|
// ///////
|
|
|
|
// Limits
|
|
|
|
|
2020-05-11 20:19:35 +00:00
|
|
|
// TODO: If this is gonna stay, it should move to specs-actors
|
2020-01-07 20:41:26 +00:00
|
|
|
const BlockMessageLimit = 512
|
2020-05-26 17:55:16 +00:00
|
|
|
const BlockGasLimit = 100_000_000_000
|
2020-04-14 20:34:44 +00:00
|
|
|
|
2020-05-27 12:09:04 +00:00
|
|
|
var DrandChain = `{"public_key":"922a2e93828ff83345bae533f5172669a26c02dc76d6bf59c80892e12ab1455c229211886f35bb56af6d5bea981024df","period":25,"genesis_time":1590445175,"hash":"138a324aa6540f93d0dad002aa89454b1bec2b6e948682cde6bd4db40f4b7c9b"}`
|