forked from cerc-io/laconicd-deprecated
delete old migration files
This commit is contained in:
parent
050cfa2836
commit
121567ca0b
@ -1,167 +0,0 @@
|
|||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"math/big"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
sdkmath "cosmossdk.io/math"
|
|
||||||
|
|
||||||
errorsmod "cosmossdk.io/errors"
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
|
||||||
"github.com/ethereum/go-ethereum/params"
|
|
||||||
|
|
||||||
"github.com/cerc-io/laconicd/x/evm/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
// EthereumConfig returns an Ethereum ChainConfig for EVM state transitions.
|
|
||||||
// All the negative or nil values are converted to nil
|
|
||||||
func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
|
||||||
return ¶ms.ChainConfig{
|
|
||||||
ChainID: chainID,
|
|
||||||
HomesteadBlock: getBlockValue(cc.HomesteadBlock),
|
|
||||||
DAOForkBlock: getBlockValue(cc.DAOForkBlock),
|
|
||||||
DAOForkSupport: cc.DAOForkSupport,
|
|
||||||
EIP150Block: getBlockValue(cc.EIP150Block),
|
|
||||||
EIP150Hash: common.HexToHash(cc.EIP150Hash),
|
|
||||||
EIP155Block: getBlockValue(cc.EIP155Block),
|
|
||||||
EIP158Block: getBlockValue(cc.EIP158Block),
|
|
||||||
ByzantiumBlock: getBlockValue(cc.ByzantiumBlock),
|
|
||||||
ConstantinopleBlock: getBlockValue(cc.ConstantinopleBlock),
|
|
||||||
PetersburgBlock: getBlockValue(cc.PetersburgBlock),
|
|
||||||
IstanbulBlock: getBlockValue(cc.IstanbulBlock),
|
|
||||||
MuirGlacierBlock: getBlockValue(cc.MuirGlacierBlock),
|
|
||||||
BerlinBlock: getBlockValue(cc.BerlinBlock),
|
|
||||||
LondonBlock: getBlockValue(cc.LondonBlock),
|
|
||||||
ArrowGlacierBlock: getBlockValue(cc.ArrowGlacierBlock),
|
|
||||||
MergeNetsplitBlock: getBlockValue(cc.MergeForkBlock),
|
|
||||||
TerminalTotalDifficulty: nil,
|
|
||||||
Ethash: nil,
|
|
||||||
Clique: nil,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// DefaultChainConfig returns default evm parameters.
|
|
||||||
func DefaultChainConfig() ChainConfig {
|
|
||||||
homesteadBlock := sdk.ZeroInt()
|
|
||||||
daoForkBlock := sdk.ZeroInt()
|
|
||||||
eip150Block := sdk.ZeroInt()
|
|
||||||
eip155Block := sdk.ZeroInt()
|
|
||||||
eip158Block := sdk.ZeroInt()
|
|
||||||
byzantiumBlock := sdk.ZeroInt()
|
|
||||||
constantinopleBlock := sdk.ZeroInt()
|
|
||||||
petersburgBlock := sdk.ZeroInt()
|
|
||||||
istanbulBlock := sdk.ZeroInt()
|
|
||||||
muirGlacierBlock := sdk.ZeroInt()
|
|
||||||
berlinBlock := sdk.ZeroInt()
|
|
||||||
londonBlock := sdk.ZeroInt()
|
|
||||||
arrowGlacierBlock := sdk.ZeroInt()
|
|
||||||
mergeForkBlock := sdk.ZeroInt()
|
|
||||||
|
|
||||||
return ChainConfig{
|
|
||||||
HomesteadBlock: &homesteadBlock,
|
|
||||||
DAOForkBlock: &daoForkBlock,
|
|
||||||
DAOForkSupport: true,
|
|
||||||
EIP150Block: &eip150Block,
|
|
||||||
EIP150Hash: common.Hash{}.String(),
|
|
||||||
EIP155Block: &eip155Block,
|
|
||||||
EIP158Block: &eip158Block,
|
|
||||||
ByzantiumBlock: &byzantiumBlock,
|
|
||||||
ConstantinopleBlock: &constantinopleBlock,
|
|
||||||
PetersburgBlock: &petersburgBlock,
|
|
||||||
IstanbulBlock: &istanbulBlock,
|
|
||||||
MuirGlacierBlock: &muirGlacierBlock,
|
|
||||||
BerlinBlock: &berlinBlock,
|
|
||||||
LondonBlock: &londonBlock,
|
|
||||||
ArrowGlacierBlock: &arrowGlacierBlock,
|
|
||||||
MergeForkBlock: &mergeForkBlock,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getBlockValue(block *sdkmath.Int) *big.Int {
|
|
||||||
if block == nil || block.IsNegative() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return block.BigInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate performs a basic validation of the ChainConfig params. The function will return an error
|
|
||||||
// if any of the block values is uninitialized (i.e nil) or if the EIP150Hash is an invalid hash.
|
|
||||||
func (cc ChainConfig) Validate() error {
|
|
||||||
if err := validateBlock(cc.HomesteadBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "homesteadBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.DAOForkBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "daoForkBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP150Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip150Block")
|
|
||||||
}
|
|
||||||
if err := validateHash(cc.EIP150Hash); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP155Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip155Block")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP158Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip158Block")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ByzantiumBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "byzantiumBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ConstantinopleBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "constantinopleBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.PetersburgBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "petersburgBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.IstanbulBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "istanbulBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.MuirGlacierBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "muirGlacierBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.BerlinBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "berlinBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.LondonBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "londonBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ArrowGlacierBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "arrowGlacierBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.MergeForkBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "mergeForkBlock")
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: chain ID is not needed to check config order
|
|
||||||
if err := cc.EthereumConfig(nil).CheckConfigForkOrder(); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "invalid config fork order")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateHash(hex string) error {
|
|
||||||
if hex != "" && strings.TrimSpace(hex) == "" {
|
|
||||||
return errorsmod.Wrap(types.ErrInvalidChainConfig, "hash cannot be blank")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateBlock(block *sdkmath.Int) error {
|
|
||||||
// nil value means that the fork has not yet been applied
|
|
||||||
if block == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if block.IsNegative() {
|
|
||||||
return errorsmod.Wrapf(
|
|
||||||
types.ErrInvalidChainConfig, "block value cannot be negative: %s", block,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
@ -1,166 +0,0 @@
|
|||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"math/big"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
sdkmath "cosmossdk.io/math"
|
|
||||||
|
|
||||||
"github.com/cerc-io/laconicd/x/evm/types"
|
|
||||||
|
|
||||||
errorsmod "cosmossdk.io/errors"
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
|
||||||
"github.com/ethereum/go-ethereum/params"
|
|
||||||
)
|
|
||||||
|
|
||||||
// EthereumConfig returns an Ethereum ChainConfig for EVM state transitions.
|
|
||||||
// All the negative or nil values are converted to nil
|
|
||||||
func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
|
||||||
return ¶ms.ChainConfig{
|
|
||||||
ChainID: chainID,
|
|
||||||
HomesteadBlock: getBlockValue(cc.HomesteadBlock),
|
|
||||||
DAOForkBlock: getBlockValue(cc.DAOForkBlock),
|
|
||||||
DAOForkSupport: cc.DAOForkSupport,
|
|
||||||
EIP150Block: getBlockValue(cc.EIP150Block),
|
|
||||||
EIP150Hash: common.HexToHash(cc.EIP150Hash),
|
|
||||||
EIP155Block: getBlockValue(cc.EIP155Block),
|
|
||||||
EIP158Block: getBlockValue(cc.EIP158Block),
|
|
||||||
ByzantiumBlock: getBlockValue(cc.ByzantiumBlock),
|
|
||||||
ConstantinopleBlock: getBlockValue(cc.ConstantinopleBlock),
|
|
||||||
PetersburgBlock: getBlockValue(cc.PetersburgBlock),
|
|
||||||
IstanbulBlock: getBlockValue(cc.IstanbulBlock),
|
|
||||||
MuirGlacierBlock: getBlockValue(cc.MuirGlacierBlock),
|
|
||||||
BerlinBlock: getBlockValue(cc.BerlinBlock),
|
|
||||||
LondonBlock: getBlockValue(cc.LondonBlock),
|
|
||||||
ArrowGlacierBlock: getBlockValue(cc.ArrowGlacierBlock),
|
|
||||||
TerminalTotalDifficulty: nil,
|
|
||||||
Ethash: nil,
|
|
||||||
Clique: nil,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// DefaultChainConfig returns default evm parameters.
|
|
||||||
func DefaultChainConfig() ChainConfig {
|
|
||||||
homesteadBlock := sdk.ZeroInt()
|
|
||||||
daoForkBlock := sdk.ZeroInt()
|
|
||||||
eip150Block := sdk.ZeroInt()
|
|
||||||
eip155Block := sdk.ZeroInt()
|
|
||||||
eip158Block := sdk.ZeroInt()
|
|
||||||
byzantiumBlock := sdk.ZeroInt()
|
|
||||||
constantinopleBlock := sdk.ZeroInt()
|
|
||||||
petersburgBlock := sdk.ZeroInt()
|
|
||||||
istanbulBlock := sdk.ZeroInt()
|
|
||||||
muirGlacierBlock := sdk.ZeroInt()
|
|
||||||
berlinBlock := sdk.ZeroInt()
|
|
||||||
londonBlock := sdk.ZeroInt()
|
|
||||||
arrowGlacierBlock := sdk.ZeroInt()
|
|
||||||
mergeForkBlock := sdk.ZeroInt()
|
|
||||||
|
|
||||||
return ChainConfig{
|
|
||||||
HomesteadBlock: &homesteadBlock,
|
|
||||||
DAOForkBlock: &daoForkBlock,
|
|
||||||
DAOForkSupport: true,
|
|
||||||
EIP150Block: &eip150Block,
|
|
||||||
EIP150Hash: common.Hash{}.String(),
|
|
||||||
EIP155Block: &eip155Block,
|
|
||||||
EIP158Block: &eip158Block,
|
|
||||||
ByzantiumBlock: &byzantiumBlock,
|
|
||||||
ConstantinopleBlock: &constantinopleBlock,
|
|
||||||
PetersburgBlock: &petersburgBlock,
|
|
||||||
IstanbulBlock: &istanbulBlock,
|
|
||||||
MuirGlacierBlock: &muirGlacierBlock,
|
|
||||||
BerlinBlock: &berlinBlock,
|
|
||||||
LondonBlock: &londonBlock,
|
|
||||||
ArrowGlacierBlock: &arrowGlacierBlock,
|
|
||||||
MergeForkBlock: &mergeForkBlock,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getBlockValue(block *sdkmath.Int) *big.Int {
|
|
||||||
if block == nil || block.IsNegative() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return block.BigInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate performs a basic validation of the ChainConfig params. The function will return an error
|
|
||||||
// if any of the block values is uninitialized (i.e nil) or if the EIP150Hash is an invalid hash.
|
|
||||||
func (cc ChainConfig) Validate() error {
|
|
||||||
if err := validateBlock(cc.HomesteadBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "homesteadBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.DAOForkBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "daoForkBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP150Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip150Block")
|
|
||||||
}
|
|
||||||
if err := validateHash(cc.EIP150Hash); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP155Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip155Block")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.EIP158Block); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "eip158Block")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ByzantiumBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "byzantiumBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ConstantinopleBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "constantinopleBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.PetersburgBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "petersburgBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.IstanbulBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "istanbulBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.MuirGlacierBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "muirGlacierBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.BerlinBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "berlinBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.LondonBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "londonBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.ArrowGlacierBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "arrowGlacierBlock")
|
|
||||||
}
|
|
||||||
if err := validateBlock(cc.MergeForkBlock); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "mergeForkBlock")
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: chain ID is not needed to check config order
|
|
||||||
if err := cc.EthereumConfig(nil).CheckConfigForkOrder(); err != nil {
|
|
||||||
return errorsmod.Wrap(err, "invalid config fork order")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateHash(hex string) error {
|
|
||||||
if hex != "" && strings.TrimSpace(hex) == "" {
|
|
||||||
return errorsmod.Wrap(types.ErrInvalidChainConfig, "hash cannot be blank")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateBlock(block *sdkmath.Int) error {
|
|
||||||
// nil value means that the fork has not yet been applied
|
|
||||||
if block == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if block.IsNegative() {
|
|
||||||
return errorsmod.Wrapf(
|
|
||||||
types.ErrInvalidChainConfig, "block value cannot be negative: %s", block,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user