func (f *Forks) SetTestNetFork() {
	f.SetFork("ForkChainParamV1", 110000)
	f.SetFork("ForkChainParamV2", 1692674)
	f.SetFork("ForkCheckTxDup", 75260)
	f.SetFork("ForkBlockHash", 209186)
	f.SetFork("ForkMinerTime", 350000)
	f.SetFork("ForkTransferExec", 408400)
	f.SetFork("ForkExecKey", 408400)
	f.SetFork("ForkWithdraw", 480000)
	f.SetFork("ForkTxGroup", 408400)
	f.SetFork("ForkResetTx0", 453400)
	f.SetFork("ForkExecRollback", 706531)
	f.SetFork("ForkTxHeight", 806578)
	f.SetFork("ForkCheckBlockTime", 1200000)
	f.SetFork("ForkMultiSignAddress", 1298600)
	f.SetFork("ForkStateDBSet", 1572391)
	f.SetFork("ForkBlockCheck", 1560000)
	f.SetFork("ForkLocalDBAccess", 1572391)
	f.SetFork("ForkTxGroupPara", 1687250)
	f.SetFork("ForkBase58AddressCheck", 1800000)
	f.SetFork("ForkEnableParaRegExec", 0)
	f.SetFork("ForkCacheDriver", 2580000)
	f.SetFork("ForkTicketFundAddrV1", 3350000)
	f.SetFork("ForkRootHash", 4500000)
}
SetTestNetFork bityuan test net fork
package types
import (
	"strings"
)
const MaxHeight = 10000000000000000
type Forks struct {
	forks map[string]int64
}
func checkKey(key string) {
	if strings.Contains(key, ".") {
		panic("name must not have dot")
	}
}
func (f *Forks) SetFork(key string, height int64) {
	checkKey(key)
	f.setFork(key, height)
}
func (f *Forks) ReplaceFork(key string, height int64) {
	checkKey(key)
	f.replaceFork(key, height)
}
func (f *Forks) SetDappFork(dapp, key string, height int64) {
	checkKey(key)
	f.setFork(dapp+"."+key, height)
}
func (f *Forks) ReplaceDappFork(dapp, key string, height int64) {
	checkKey(key)
	f.replaceFork(dapp+"."+key, height)
}
func (f *Forks) replaceFork(key string, height int64) {
	if f.forks == nil {
		f.forks = make(map[string]int64)
	}
	if _, ok := f.forks[key]; !ok {
		panic("replace a not exist key " + " " + key)
	}
	f.forks[key] = height
}
func (f *Forks) setFork(key string, height int64) {
	if f.forks == nil {
		f.forks = make(map[string]int64)
	}
	f.forks[key] = height
}
func (f *Forks) GetFork(key string) int64 {
	height, ok := f.forks[key]
	if !ok {
		tlog.Error("get fork key not exisit -> " + key)
		return MaxHeight
	}
	return height
}
func (f *Forks) HasFork(key string) bool {
	_, ok := f.forks[key]
	return ok
}
func (f *Forks) GetDappFork(app string, key string) int64 {
	return f.GetFork(app + "." + key)
}
func (f *Forks) SetAllFork(height int64) {
	for k := range f.forks {
		f.forks[k] = height
	}
}
func (f *Forks) GetAll() map[string]int64 {
	return f.forks
}
func (f *Forks) IsFork(height int64, fork string) bool {
	ifork := f.GetFork(fork)
	if height == -1 || height >= ifork {
		return true
	}
	return false
}
func (f *Forks) IsDappFork(height int64, dapp, fork string) bool {
	return f.IsFork(height, dapp+"."+fork)
}