45cd510da1
This PR introduces support for running multiple variants of a vector, each of which targets a unique protocol version. tvx tooling has been adapted to produce and parse the new version of the schema.
41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
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"},
|
|
// TODO there is some off-by-one trickery in GetNtwkVersion. Not sure if the
|
|
// protocol version really kicks in at the designated height, or at the
|
|
// following epoch.
|
|
{build.UpgradeBreezeHeight + 1, "breeze"},
|
|
{build.UpgradeSmokeHeight + 1, "smoke"},
|
|
{build.UpgradeIgnitionHeight + 1, "ignition"},
|
|
{build.UpgradeRefuelHeight + 1, "refuel"},
|
|
{build.UpgradeActorsV2Height + 1, "actorsv2"},
|
|
{build.UpgradeTapeHeight + 1, "tape"},
|
|
{build.UpgradeLiftoffHeight + 1, "liftoff"},
|
|
}
|
|
|
|
// 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
|
|
}
|