package main import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/lotus/build" ) // ProtocolCodenames is a table that summarises the protocol codenames that // will be set on extracted vectors, depending on the original execution height. // // Implementers rely on these names to filter the vectors they can run through // their implementations, based on their support level var ProtocolCodenames = []struct { firstEpoch abi.ChainEpoch name string }{ {0, "genesis"}, {build.UpgradeBreezeHeight + 1, "breeze"}, {build.UpgradeSmokeHeight + 1, "smoke"}, {build.UpgradeIgnitionHeight + 1, "ignition"}, {build.UpgradeRefuelHeight + 1, "refuel"}, {build.UpgradeAssemblyHeight + 1, "actorsv2"}, {build.UpgradeTapeHeight + 1, "tape"}, {build.UpgradeLiftoffHeight + 1, "liftoff"}, {build.UpgradeKumquatHeight + 1, "postliftoff"}, {build.UpgradeCalicoHeight + 1, "calico"}, {build.UpgradePersianHeight + 1, "persian"}, {build.UpgradeOrangeHeight + 1, "orange"}, {build.UpgradeTrustHeight + 1, "trust"}, {build.UpgradeNorwegianHeight + 1, "norwegian"}, {build.UpgradeTurboHeight + 1, "turbo"}, {build.UpgradeHyperdriveHeight + 1, "hyperdrive"}, {build.UpgradeChocolateHeight + 1, "chocolate"}, {build.UpgradeOhSnapHeight + 1, "ohsnap"}, } // GetProtocolCodename gets the protocol codename associated with a height. func GetProtocolCodename(height abi.ChainEpoch) string { for i, v := range ProtocolCodenames { if height < v.firstEpoch { // found the cutoff, return previous. return ProtocolCodenames[i-1].name } } return ProtocolCodenames[len(ProtocolCodenames)-1].name }