package shardingconfig import ( "math/big" "github.com/harmony-one/harmony/internal/genesis" ) const ( mainnetEpochBlock1 = 288888 fiveOne = 11111 ) // MainnetSchedule is the mainnet sharding configuration schedule. var MainnetSchedule mainnetSchedule type mainnetSchedule struct{} func (mainnetSchedule) InstanceForEpoch(epoch *big.Int) Instance { switch { //case epoch.Cmp(big.NewInt(1000)) >= 0: // return mainnet6400 //case epoch.Cmp(big.NewInt(100)) >= 0: // return mainnetV2 default: // genesis return mainnetV0 } } func (mainnetSchedule) BlocksPerEpoch() uint64 { return fiveOne } func (ms mainnetSchedule) CalcEpochNumber(blockNum uint64) *big.Int { blocks := ms.BlocksPerEpoch() switch { case blockNum >= mainnetEpochBlock1: return big.NewInt(int64((blockNum-mainnetEpochBlock1)/blocks) + 1) default: return big.NewInt(0) } } func (ms mainnetSchedule) IsLastBlock(blockNum uint64) bool { blocks := ms.BlocksPerEpoch() switch { case blockNum == mainnetEpochBlock1-1: return true default: return ((blockNum-mainnetEpochBlock1)%blocks == blocks-1) } } var mainnetReshardingEpoch = make([]*big.Int, 0) var mainnetV0 = MustNewInstance(4, 150, 112, genesis.HarmonyAccounts, genesis.FoundationalNodeAccounts, mainnetReshardingEpoch) //var mainnetV2 = MustNewInstance(8, 200, 100) //var mainnet6400 = MustNewInstance(16, 400, 50)