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()
|
|
|
|
|
2021-07-14 09:13:55 +00:00
|
|
|
func newIntPtr(i int64) *sdk.Int {
|
|
|
|
v := sdk.NewInt(i)
|
|
|
|
return &v
|
|
|
|
}
|
|
|
|
|
2020-09-02 19:41:05 +00:00
|
|
|
func TestChainConfigValidate(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
name string
|
|
|
|
config ChainConfig
|
|
|
|
expError bool
|
|
|
|
}{
|
|
|
|
{"default", DefaultChainConfig(), false},
|
|
|
|
{
|
|
|
|
"valid",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(0),
|
|
|
|
BerlinBlock: newIntPtr(0),
|
|
|
|
YoloV3Block: newIntPtr(0),
|
|
|
|
EWASMBlock: newIntPtr(0),
|
|
|
|
CatalystBlock: newIntPtr(0),
|
|
|
|
},
|
|
|
|
false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"valid with nil values",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: nil,
|
|
|
|
DAOForkBlock: nil,
|
|
|
|
EIP150Block: nil,
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: nil,
|
|
|
|
EIP158Block: nil,
|
|
|
|
ByzantiumBlock: nil,
|
|
|
|
ConstantinopleBlock: nil,
|
|
|
|
PetersburgBlock: nil,
|
|
|
|
IstanbulBlock: nil,
|
|
|
|
MuirGlacierBlock: nil,
|
|
|
|
BerlinBlock: nil,
|
|
|
|
YoloV3Block: nil,
|
|
|
|
EWASMBlock: nil,
|
|
|
|
CatalystBlock: nil,
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"empty",
|
|
|
|
ChainConfig{},
|
2021-07-14 09:13:55 +00:00
|
|
|
false,
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid HomesteadBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid DAOForkBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP150Block",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP150Hash",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: " ",
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP155Block",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EIP158Block",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid ByzantiumBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid ConstantinopleBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid PetersburgBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid IstanbulBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid MuirGlacierBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
|
|
|
EIP150Hash: defaultEIP150Hash,
|
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(-1),
|
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid BerlinBlock",
|
|
|
|
ChainConfig{
|
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(0),
|
|
|
|
BerlinBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
2021-07-14 09:13:55 +00:00
|
|
|
"invalid YoloV3Block",
|
2020-09-02 19:41:05 +00:00
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(0),
|
|
|
|
BerlinBlock: newIntPtr(0),
|
|
|
|
YoloV3Block: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"invalid EWASMBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2020-09-02 19:41:05 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(0),
|
|
|
|
BerlinBlock: newIntPtr(0),
|
|
|
|
YoloV3Block: newIntPtr(0),
|
|
|
|
EWASMBlock: newIntPtr(-1),
|
2020-09-02 19:41:05 +00:00
|
|
|
},
|
|
|
|
true,
|
|
|
|
},
|
2021-05-10 16:34:00 +00:00
|
|
|
{
|
|
|
|
"invalid CatalystBlock",
|
|
|
|
ChainConfig{
|
2021-07-14 09:13:55 +00:00
|
|
|
HomesteadBlock: newIntPtr(0),
|
|
|
|
DAOForkBlock: newIntPtr(0),
|
|
|
|
EIP150Block: newIntPtr(0),
|
2021-05-10 16:34:00 +00:00
|
|
|
EIP150Hash: defaultEIP150Hash,
|
2021-07-14 09:13:55 +00:00
|
|
|
EIP155Block: newIntPtr(0),
|
|
|
|
EIP158Block: newIntPtr(0),
|
|
|
|
ByzantiumBlock: newIntPtr(0),
|
|
|
|
ConstantinopleBlock: newIntPtr(0),
|
|
|
|
PetersburgBlock: newIntPtr(0),
|
|
|
|
IstanbulBlock: newIntPtr(0),
|
|
|
|
MuirGlacierBlock: newIntPtr(0),
|
|
|
|
YoloV3Block: newIntPtr(0),
|
|
|
|
|
|
|
|
EWASMBlock: newIntPtr(0),
|
|
|
|
CatalystBlock: newIntPtr(-1),
|
2021-05-10 16:34:00 +00:00
|
|
|
},
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|