erigon-pulse/cmd/ef-tests-cl/consensus_tests/fork.go
2023-04-20 22:47:58 +02:00

55 lines
1.2 KiB
Go

package consensustests
import (
"fmt"
"os"
"github.com/ledgerwatch/erigon/cl/clparams"
)
func forkTest(context testContext) error {
prevContext := context
prevContext.version--
preState, err := decodeStateFromFile(prevContext, "pre.ssz_snappy")
if err != nil {
return err
}
postState, err := decodeStateFromFile(context, "post.ssz_snappy")
expectedError := os.IsNotExist(err)
if err != nil && !expectedError {
return err
}
if preState.Version() == clparams.Phase0Version {
if err := preState.UpgradeToAltair(); err != nil {
return err
}
} else if preState.Version() == clparams.AltairVersion {
if err := preState.UpgradeToBellatrix(); err != nil {
return err
}
} else if preState.Version() == clparams.BellatrixVersion {
if err := preState.UpgradeToCapella(); err != nil {
return err
}
}
if expectedError {
return fmt.Errorf("expected error")
}
root, err := preState.HashSSZ()
if err != nil {
return err
}
expectedRoot, err := postState.HashSSZ()
if err != nil {
return err
}
if root != expectedRoot {
return fmt.Errorf("mismatching state roots")
}
if context.version == clparams.AltairVersion {
return nil
}
return nil
}