2020-09-02 19:41:05 +00:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
|
|
)
|
|
|
|
|
|
|
|
var defaultEIP150Hash = common.Hash{}.String()
|
|
|
|
|
|
|
|
func TestChainConfigValidate(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
name string
|
|
|
|
config ChainConfig
|
|
|
|
expError bool
|
|
|
|
}{
|
|
|
|
{"default", DefaultChainConfig(), false},
|
|
|
|
{
|
|
|
|
"valid",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.OneInt(),
|
|
|
|
MuirGlacierBlock: sdk.OneInt(),
|
2021-05-10 16:34:00 +00:00
|
|
|
YoloV3Block: sdk.OneInt(),
|
2020-09-02 19:41:05 +00:00
|
|
|
EWASMBlock: sdk.OneInt(),
|
2021-05-10 16:34:00 +00:00
|
|
|
CatalystBlock: sdk.OneInt(),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"empty",
|
|
|
|
ChainConfig{},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid HomesteadBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid DAOForkBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP150Block",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP150Hash",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: " ",
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP155Block",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP158Block",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid ByzantiumBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid ConstantinopleBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid PetersburgBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid IstanbulBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid MuirGlacierBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.OneInt(),
|
|
|
|
MuirGlacierBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
2020-11-16 16:11:15 +00:00
|
|
|
"invalid YoloV2Block",
|
2020-09-02 19:41:05 +00:00
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.OneInt(),
|
|
|
|
MuirGlacierBlock: sdk.OneInt(),
|
2021-05-10 16:34:00 +00:00
|
|
|
YoloV3Block: sdk.Int{},
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EWASMBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.OneInt(),
|
|
|
|
MuirGlacierBlock: sdk.OneInt(),
|
2021-05-10 16:34:00 +00:00
|
|
|
YoloV3Block: sdk.OneInt(),
|
2020-09-02 19:41:05 +00:00
|
|
|
EWASMBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
2021-05-10 16:34:00 +00:00
|
|
|
{
|
|
|
|
"invalid CatalystBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: sdk.OneInt(),
|
|
|
|
DAOForkBlock: sdk.OneInt(),
|
|
|
|
EIP150Block: sdk.OneInt(),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: sdk.OneInt(),
|
|
|
|
EIP158Block: sdk.OneInt(),
|
|
|
|
ByzantiumBlock: sdk.OneInt(),
|
|
|
|
ConstantinopleBlock: sdk.OneInt(),
|
|
|
|
PetersburgBlock: sdk.OneInt(),
|
|
|
|
IstanbulBlock: sdk.OneInt(),
|
|
|
|
MuirGlacierBlock: sdk.OneInt(),
|
|
|
|
YoloV3Block: sdk.OneInt(),
|
|
|
|
EWASMBlock: sdk.OneInt(),
|
|
|
|
CatalystBlock: sdk.Int{},
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
2020-09-02 19:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range testCases {
|
|
|
|
err := tc.config.Validate()
|
|
|
|
|
|
|
|
if tc.expError {
|
|
|
|
require.Error(t, err, tc.name)
|
|
|
|
} else {
|
|
|
|
require.NoError(t, err, tc.name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|