atto photon refactor (#503)
* atto photon refactor * update testnet command * fix test * changelog
This commit is contained in:
parent
b485542b0b
commit
1505ba89a1
@ -37,8 +37,13 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### API Breaking
|
||||||
|
|
||||||
|
* (types) [\#503](https://github.com/ChainSafe/ethermint/pull/503) The `types.DenomDefault` constant for `"aphoton"` has been renamed to `types.AttoPhoton`.
|
||||||
|
|
||||||
### Improvements
|
### Improvements
|
||||||
|
|
||||||
|
* (types) [\#503](https://github.com/ChainSafe/ethermint/pull/503) Add `--coin-denom` flag to testnet command that sets the given coin denomination to SDK and Ethermint parameters.
|
||||||
* (types) [\#502](https://github.com/ChainSafe/ethermint/pull/502) `EthAccount` now also exposes the Ethereum hex address in `string` format to clients.
|
* (types) [\#502](https://github.com/ChainSafe/ethermint/pull/502) `EthAccount` now also exposes the Ethereum hex address in `string` format to clients.
|
||||||
* (types) [\#494](https://github.com/ChainSafe/ethermint/pull/494) Update `EthAccount` public key JSON type to `string`.
|
* (types) [\#494](https://github.com/ChainSafe/ethermint/pull/494) Update `EthAccount` public key JSON type to `string`.
|
||||||
* (app) [\#471](https://github.com/ChainSafe/ethermint/pull/471) Add `x/upgrade` module for managing software updates.
|
* (app) [\#471](https://github.com/ChainSafe/ethermint/pull/471) Add `x/upgrade` module for managing software updates.
|
||||||
|
@ -257,7 +257,7 @@ func (suite *AnteTestSuite) TestEthInvalidMempoolFees() {
|
|||||||
suite.app.EvmKeeper.SetParams(suite.ctx, evmtypes.DefaultParams())
|
suite.app.EvmKeeper.SetParams(suite.ctx, evmtypes.DefaultParams())
|
||||||
|
|
||||||
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.EvmKeeper, suite.app.SupplyKeeper)
|
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.EvmKeeper, suite.app.SupplyKeeper)
|
||||||
suite.ctx = suite.ctx.WithMinGasPrices(sdk.NewDecCoins(sdk.NewDecCoin(types.DenomDefault, sdk.NewInt(500000))))
|
suite.ctx = suite.ctx.WithMinGasPrices(sdk.NewDecCoins(types.NewPhotonDecCoin(sdk.NewInt(500000))))
|
||||||
addr1, priv1 := newTestAddrKey()
|
addr1, priv1 := newTestAddrKey()
|
||||||
addr2, _ := newTestAddrKey()
|
addr2, _ := newTestAddrKey()
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/cosmos/ethermint/app"
|
"github.com/cosmos/ethermint/app"
|
||||||
ante "github.com/cosmos/ethermint/app/ante"
|
ante "github.com/cosmos/ethermint/app/ante"
|
||||||
"github.com/cosmos/ethermint/crypto"
|
"github.com/cosmos/ethermint/crypto"
|
||||||
emint "github.com/cosmos/ethermint/types"
|
ethermint "github.com/cosmos/ethermint/types"
|
||||||
evmtypes "github.com/cosmos/ethermint/x/evm/types"
|
evmtypes "github.com/cosmos/ethermint/x/evm/types"
|
||||||
|
|
||||||
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
||||||
@ -52,11 +52,11 @@ func newTestMsg(addrs ...sdk.AccAddress) *sdk.TestMsg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func newTestCoins() sdk.Coins {
|
func newTestCoins() sdk.Coins {
|
||||||
return sdk.NewCoins(sdk.NewInt64Coin(emint.DenomDefault, 500000000))
|
return sdk.NewCoins(ethermint.NewPhotonCoinInt64(500000000))
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTestStdFee() auth.StdFee {
|
func newTestStdFee() auth.StdFee {
|
||||||
return auth.NewStdFee(220000, sdk.NewCoins(sdk.NewInt64Coin(emint.DenomDefault, 150)))
|
return auth.NewStdFee(220000, sdk.NewCoins(ethermint.NewPhotonCoinInt64(150)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GenerateAddress generates an Ethereum address.
|
// GenerateAddress generates an Ethereum address.
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
|
|
||||||
"github.com/cosmos/ethermint/crypto"
|
"github.com/cosmos/ethermint/crypto"
|
||||||
"github.com/cosmos/ethermint/types"
|
"github.com/cosmos/ethermint/types"
|
||||||
|
evmtypes "github.com/cosmos/ethermint/x/evm/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -47,6 +48,7 @@ var (
|
|||||||
flagNodeDaemonHome = "node-daemon-home"
|
flagNodeDaemonHome = "node-daemon-home"
|
||||||
flagNodeCLIHome = "node-cli-home"
|
flagNodeCLIHome = "node-cli-home"
|
||||||
flagStartingIPAddress = "starting-ip-address"
|
flagStartingIPAddress = "starting-ip-address"
|
||||||
|
flagCoinDenom = "coin-denom"
|
||||||
flagKeyAlgo = "algo"
|
flagKeyAlgo = "algo"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -77,10 +79,11 @@ Note, strict routability for addresses is turned off in the config file.`,
|
|||||||
nodeCLIHome, _ := cmd.Flags().GetString(flagNodeCLIHome)
|
nodeCLIHome, _ := cmd.Flags().GetString(flagNodeCLIHome)
|
||||||
startingIPAddress, _ := cmd.Flags().GetString(flagStartingIPAddress)
|
startingIPAddress, _ := cmd.Flags().GetString(flagStartingIPAddress)
|
||||||
numValidators, _ := cmd.Flags().GetInt(flagNumValidators)
|
numValidators, _ := cmd.Flags().GetInt(flagNumValidators)
|
||||||
|
coinDenom, _ := cmd.Flags().GetString(flagCoinDenom)
|
||||||
algo, _ := cmd.Flags().GetString(flagKeyAlgo)
|
algo, _ := cmd.Flags().GetString(flagKeyAlgo)
|
||||||
|
|
||||||
return InitTestnet(
|
return InitTestnet(
|
||||||
cmd, config, cdc, mbm, genAccIterator, outputDir, chainID, minGasPrices,
|
cmd, config, cdc, mbm, genAccIterator, outputDir, chainID, coinDenom, minGasPrices,
|
||||||
nodeDirPrefix, nodeDaemonHome, nodeCLIHome, startingIPAddress, keyringBackend, algo, numValidators,
|
nodeDirPrefix, nodeDaemonHome, nodeCLIHome, startingIPAddress, keyringBackend, algo, numValidators,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@ -93,7 +96,8 @@ Note, strict routability for addresses is turned off in the config file.`,
|
|||||||
cmd.Flags().String(flagNodeCLIHome, "ethermintcli", "Home directory of the node's cli configuration")
|
cmd.Flags().String(flagNodeCLIHome, "ethermintcli", "Home directory of the node's cli configuration")
|
||||||
cmd.Flags().String(flagStartingIPAddress, "192.168.0.1", "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)")
|
cmd.Flags().String(flagStartingIPAddress, "192.168.0.1", "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)")
|
||||||
cmd.Flags().String(flags.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created")
|
cmd.Flags().String(flags.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created")
|
||||||
cmd.Flags().String(server.FlagMinGasPrices, fmt.Sprintf("0.000006%s", types.DenomDefault), "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01aphoton,0.001stake)")
|
cmd.Flags().String(flagCoinDenom, types.AttoPhoton, "Coin denomination used for staking, governance, mint, crisis and evm parameters")
|
||||||
|
cmd.Flags().String(server.FlagMinGasPrices, fmt.Sprintf("0.000006%s", types.AttoPhoton), "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01aphoton,0.001stake)")
|
||||||
cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)")
|
cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)")
|
||||||
cmd.Flags().String(flagKeyAlgo, string(crypto.EthSecp256k1), "Key signing algorithm to generate keys for")
|
cmd.Flags().String(flagKeyAlgo, string(crypto.EthSecp256k1), "Key signing algorithm to generate keys for")
|
||||||
return cmd
|
return cmd
|
||||||
@ -108,6 +112,7 @@ func InitTestnet(
|
|||||||
genAccIterator authtypes.GenesisAccountIterator,
|
genAccIterator authtypes.GenesisAccountIterator,
|
||||||
outputDir,
|
outputDir,
|
||||||
chainID,
|
chainID,
|
||||||
|
coinDenom,
|
||||||
minGasPrices,
|
minGasPrices,
|
||||||
nodeDirPrefix,
|
nodeDirPrefix,
|
||||||
nodeDaemonHome,
|
nodeDaemonHome,
|
||||||
@ -122,6 +127,10 @@ func InitTestnet(
|
|||||||
chainID = fmt.Sprintf("%d", tmrand.Int63())
|
chainID = fmt.Sprintf("%d", tmrand.Int63())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := sdk.ValidateDenom(coinDenom); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
nodeIDs := make([]string, numValidators)
|
nodeIDs := make([]string, numValidators)
|
||||||
valPubKeys := make([]tmcrypto.PubKey, numValidators)
|
valPubKeys := make([]tmcrypto.PubKey, numValidators)
|
||||||
|
|
||||||
@ -205,11 +214,9 @@ func InitTestnet(
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
accTokens := sdk.TokensFromConsensusPower(1000)
|
|
||||||
accStakingTokens := sdk.TokensFromConsensusPower(5000)
|
accStakingTokens := sdk.TokensFromConsensusPower(5000)
|
||||||
coins := sdk.NewCoins(
|
coins := sdk.NewCoins(
|
||||||
sdk.NewCoin(sdk.DefaultBondDenom, accTokens),
|
sdk.NewCoin(coinDenom, accStakingTokens),
|
||||||
sdk.NewCoin(types.DenomDefault, accStakingTokens),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
genAccounts = append(genAccounts, types.EthAccount{
|
genAccounts = append(genAccounts, types.EthAccount{
|
||||||
@ -221,7 +228,7 @@ func InitTestnet(
|
|||||||
msg := stakingtypes.NewMsgCreateValidator(
|
msg := stakingtypes.NewMsgCreateValidator(
|
||||||
sdk.ValAddress(addr),
|
sdk.ValAddress(addr),
|
||||||
valPubKeys[i],
|
valPubKeys[i],
|
||||||
sdk.NewCoin(types.DenomDefault, valTokens),
|
sdk.NewCoin(coinDenom, valTokens),
|
||||||
stakingtypes.NewDescription(nodeDirName, "", "", "", ""),
|
stakingtypes.NewDescription(nodeDirName, "", "", "", ""),
|
||||||
stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()),
|
stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()),
|
||||||
sdk.OneInt(),
|
sdk.OneInt(),
|
||||||
@ -251,7 +258,7 @@ func InitTestnet(
|
|||||||
srvconfig.WriteConfigFile(filepath.Join(nodeDir, "config/app.toml"), simappConfig)
|
srvconfig.WriteConfigFile(filepath.Join(nodeDir, "config/app.toml"), simappConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := initGenFiles(cdc, mbm, chainID, genAccounts, genFiles, numValidators); err != nil {
|
if err := initGenFiles(cdc, mbm, chainID, coinDenom, genAccounts, genFiles, numValidators); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,7 +275,8 @@ func InitTestnet(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func initGenFiles(
|
func initGenFiles(
|
||||||
cdc *codec.Codec, mbm module.BasicManager, chainID string,
|
cdc *codec.Codec, mbm module.BasicManager,
|
||||||
|
chainID, coinDenom string,
|
||||||
genAccounts []authexported.GenesisAccount,
|
genAccounts []authexported.GenesisAccount,
|
||||||
genFiles []string, numValidators int,
|
genFiles []string, numValidators int,
|
||||||
) error {
|
) error {
|
||||||
@ -285,27 +293,33 @@ func initGenFiles(
|
|||||||
var stakingGenState stakingtypes.GenesisState
|
var stakingGenState stakingtypes.GenesisState
|
||||||
cdc.MustUnmarshalJSON(appGenState[stakingtypes.ModuleName], &stakingGenState)
|
cdc.MustUnmarshalJSON(appGenState[stakingtypes.ModuleName], &stakingGenState)
|
||||||
|
|
||||||
stakingGenState.Params.BondDenom = types.DenomDefault
|
stakingGenState.Params.BondDenom = coinDenom
|
||||||
appGenState[stakingtypes.ModuleName] = cdc.MustMarshalJSON(stakingGenState)
|
appGenState[stakingtypes.ModuleName] = cdc.MustMarshalJSON(stakingGenState)
|
||||||
|
|
||||||
var govGenState govtypes.GenesisState
|
var govGenState govtypes.GenesisState
|
||||||
cdc.MustUnmarshalJSON(appGenState[govtypes.ModuleName], &govGenState)
|
cdc.MustUnmarshalJSON(appGenState[govtypes.ModuleName], &govGenState)
|
||||||
|
|
||||||
govGenState.DepositParams.MinDeposit[0].Denom = types.DenomDefault
|
govGenState.DepositParams.MinDeposit[0].Denom = coinDenom
|
||||||
appGenState[govtypes.ModuleName] = cdc.MustMarshalJSON(govGenState)
|
appGenState[govtypes.ModuleName] = cdc.MustMarshalJSON(govGenState)
|
||||||
|
|
||||||
var mintGenState mint.GenesisState
|
var mintGenState mint.GenesisState
|
||||||
cdc.MustUnmarshalJSON(appGenState[mint.ModuleName], &mintGenState)
|
cdc.MustUnmarshalJSON(appGenState[mint.ModuleName], &mintGenState)
|
||||||
|
|
||||||
mintGenState.Params.MintDenom = types.DenomDefault
|
mintGenState.Params.MintDenom = coinDenom
|
||||||
appGenState[mint.ModuleName] = cdc.MustMarshalJSON(mintGenState)
|
appGenState[mint.ModuleName] = cdc.MustMarshalJSON(mintGenState)
|
||||||
|
|
||||||
var crisisGenState crisis.GenesisState
|
var crisisGenState crisis.GenesisState
|
||||||
cdc.MustUnmarshalJSON(appGenState[crisis.ModuleName], &crisisGenState)
|
cdc.MustUnmarshalJSON(appGenState[crisis.ModuleName], &crisisGenState)
|
||||||
|
|
||||||
crisisGenState.ConstantFee.Denom = types.DenomDefault
|
crisisGenState.ConstantFee.Denom = coinDenom
|
||||||
appGenState[crisis.ModuleName] = cdc.MustMarshalJSON(crisisGenState)
|
appGenState[crisis.ModuleName] = cdc.MustMarshalJSON(crisisGenState)
|
||||||
|
|
||||||
|
var evmGenState evmtypes.GenesisState
|
||||||
|
cdc.MustUnmarshalJSON(appGenState[evmtypes.ModuleName], &evmGenState)
|
||||||
|
|
||||||
|
evmGenState.Params.EvmDenom = coinDenom
|
||||||
|
appGenState[evmtypes.ModuleName] = cdc.MustMarshalJSON(evmGenState)
|
||||||
|
|
||||||
appGenStateJSON, err := codec.MarshalJSONIndent(cdc, appGenState)
|
appGenStateJSON, err := codec.MarshalJSONIndent(cdc, appGenState)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -150,7 +150,7 @@ func createAndTestGenesis(t *testing.T, cms sdk.CommitMultiStore, ak auth.Accoun
|
|||||||
genAcc := ak.GetAccount(ctx, sdk.AccAddress(genInvestor.Bytes()))
|
genAcc := ak.GetAccount(ctx, sdk.AccAddress(genInvestor.Bytes()))
|
||||||
require.NotNil(t, genAcc)
|
require.NotNil(t, genAcc)
|
||||||
|
|
||||||
balance := sdk.NewCoin(types.DenomDefault, genAcc.GetCoins().AmountOf(types.DenomDefault))
|
balance := types.NewPhotonCoin(genAcc.GetCoins().AmountOf(types.AttoPhoton))
|
||||||
require.Equal(t, sdk.NewIntFromBigInt(b), balance.Amount)
|
require.Equal(t, sdk.NewIntFromBigInt(b), balance.Amount)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,20 +51,20 @@ func (acc EthAccount) EthAddress() ethcmn.Address {
|
|||||||
|
|
||||||
// Balance returns the balance of an account.
|
// Balance returns the balance of an account.
|
||||||
func (acc EthAccount) Balance() sdk.Int {
|
func (acc EthAccount) Balance() sdk.Int {
|
||||||
return acc.GetCoins().AmountOf(DenomDefault)
|
return acc.GetCoins().AmountOf(AttoPhoton)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetBalance sets an account's balance of aphotons
|
// SetBalance sets an account's balance of aphotons
|
||||||
func (acc *EthAccount) SetBalance(amt sdk.Int) {
|
func (acc *EthAccount) SetBalance(amt sdk.Int) {
|
||||||
coins := acc.GetCoins()
|
coins := acc.GetCoins()
|
||||||
diff := amt.Sub(coins.AmountOf(DenomDefault))
|
diff := amt.Sub(coins.AmountOf(AttoPhoton))
|
||||||
switch {
|
switch {
|
||||||
case diff.IsPositive():
|
case diff.IsPositive():
|
||||||
// Increase coins to amount
|
// Increase coins to amount
|
||||||
coins = coins.Add(sdk.NewCoin(DenomDefault, diff))
|
coins = coins.Add(NewPhotonCoin(diff))
|
||||||
case diff.IsNegative():
|
case diff.IsNegative():
|
||||||
// Decrease coins to amount
|
// Decrease coins to amount
|
||||||
coins = coins.Sub(sdk.NewCoins(sdk.NewCoin(DenomDefault, diff.Neg())))
|
coins = coins.Sub(sdk.NewCoins(NewPhotonCoin(diff.Neg())))
|
||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ func init() {
|
|||||||
func TestEthermintAccountJSON(t *testing.T) {
|
func TestEthermintAccountJSON(t *testing.T) {
|
||||||
pubkey := secp256k1.GenPrivKey().PubKey()
|
pubkey := secp256k1.GenPrivKey().PubKey()
|
||||||
addr := sdk.AccAddress(pubkey.Address())
|
addr := sdk.AccAddress(pubkey.Address())
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(DenomDefault, sdk.OneInt()))
|
balance := sdk.NewCoins(NewPhotonCoin(sdk.OneInt()))
|
||||||
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
||||||
ethAcc := EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
ethAcc := EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ func TestSecpPubKeyJSON(t *testing.T) {
|
|||||||
func TestEthermintAccount_String(t *testing.T) {
|
func TestEthermintAccount_String(t *testing.T) {
|
||||||
pubkey := secp256k1.GenPrivKey().PubKey()
|
pubkey := secp256k1.GenPrivKey().PubKey()
|
||||||
addr := sdk.AccAddress(pubkey.Address())
|
addr := sdk.AccAddress(pubkey.Address())
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(DenomDefault, sdk.OneInt()))
|
balance := sdk.NewCoins(NewPhotonCoin(sdk.OneInt()))
|
||||||
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
||||||
ethAcc := EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
ethAcc := EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ func TestEthermintAccount_String(t *testing.T) {
|
|||||||
func TestEthermintAccount_MarshalJSON(t *testing.T) {
|
func TestEthermintAccount_MarshalJSON(t *testing.T) {
|
||||||
pubkey := secp256k1.GenPrivKey().PubKey()
|
pubkey := secp256k1.GenPrivKey().PubKey()
|
||||||
addr := sdk.AccAddress(pubkey.Address())
|
addr := sdk.AccAddress(pubkey.Address())
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(DenomDefault, sdk.OneInt()))
|
balance := sdk.NewCoins(NewPhotonCoin(sdk.OneInt()))
|
||||||
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
baseAcc := auth.NewBaseAccount(addr, balance, pubkey, 10, 50)
|
||||||
ethAcc := &EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
ethAcc := &EthAccount{BaseAccount: baseAcc, CodeHash: []byte{1, 2}}
|
||||||
|
|
||||||
|
38
types/coin.go
Normal file
38
types/coin.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import (
|
||||||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// AttoPhoton defines the default coin denomination used in Ethermint in:
|
||||||
|
//
|
||||||
|
// - Staking parameters: denomination used as stake in the dPoS chain
|
||||||
|
// - Mint parameters: denomination minted due to fee distribution rewards
|
||||||
|
// - Governance parameters: denomination used for spam prevention in proposal deposits
|
||||||
|
// - Crisis parameters: constant fee denomination used for spam prevention to check broken invariant
|
||||||
|
// - EVM parameters: denomination used for running EVM state transitions in Ethermint.
|
||||||
|
AttoPhoton string = "aphoton"
|
||||||
|
|
||||||
|
// BaseDenomUnit defines the base denomination unit for Photons.
|
||||||
|
// 1 photon = 1x10^{BaseDenomUnit} aphoton
|
||||||
|
BaseDenomUnit = 18
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewPhotonCoin is a utility function that returns an "aphoton" coin with the given sdk.Int amount.
|
||||||
|
// The function will panic if the provided amount is negative.
|
||||||
|
func NewPhotonCoin(amount sdk.Int) sdk.Coin {
|
||||||
|
return sdk.NewCoin(AttoPhoton, amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewPhotonDecCoin is a utility function that returns an "aphoton" decimal coin with the given sdk.Int amount.
|
||||||
|
// The function will panic if the provided amount is negative.
|
||||||
|
func NewPhotonDecCoin(amount sdk.Int) sdk.DecCoin {
|
||||||
|
return sdk.NewDecCoin(AttoPhoton, amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewPhotonCoinInt64 is a utility function that returns an "aphoton" coin with the given int64 amount.
|
||||||
|
// The function will panic if the provided amount is negative.
|
||||||
|
func NewPhotonCoinInt64(amount int64) sdk.Coin {
|
||||||
|
return sdk.NewInt64Coin(AttoPhoton, amount)
|
||||||
|
}
|
@ -5,8 +5,4 @@ const (
|
|||||||
DefaultGasPrice = 20
|
DefaultGasPrice = 20
|
||||||
// DefaultRPCGasLimit is default gas limit for RPC call operations
|
// DefaultRPCGasLimit is default gas limit for RPC call operations
|
||||||
DefaultRPCGasLimit = 10000000
|
DefaultRPCGasLimit = 10000000
|
||||||
|
|
||||||
// DenomDefault defines the single coin type/denomination supported in
|
|
||||||
// Ethermint.
|
|
||||||
DenomDefault = "aphoton"
|
|
||||||
)
|
)
|
||||||
|
@ -46,7 +46,7 @@ func (suite *KeeperTestSuite) SetupTest() {
|
|||||||
suite.querier = keeper.NewQuerier(suite.app.EvmKeeper)
|
suite.querier = keeper.NewQuerier(suite.app.EvmKeeper)
|
||||||
suite.address = ethcmn.HexToAddress(addrHex)
|
suite.address = ethcmn.HexToAddress(addrHex)
|
||||||
|
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(ethermint.DenomDefault, sdk.NewInt(0)))
|
balance := sdk.NewCoins(ethermint.NewPhotonCoin(sdk.ZeroInt()))
|
||||||
acc := ðermint.EthAccount{
|
acc := ðermint.EthAccount{
|
||||||
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
||||||
CodeHash: ethcrypto.Keccak256(nil),
|
CodeHash: ethcrypto.Keccak256(nil),
|
||||||
|
@ -57,7 +57,7 @@ func (suite *JournalTestSuite) SetupTest() {
|
|||||||
suite.address = ethcmn.BytesToAddress(privkey.PubKey().Address().Bytes())
|
suite.address = ethcmn.BytesToAddress(privkey.PubKey().Address().Bytes())
|
||||||
suite.journal = newJournal()
|
suite.journal = newJournal()
|
||||||
|
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(ethermint.DenomDefault, sdk.NewInt(100)))
|
balance := sdk.NewCoins(ethermint.NewPhotonCoin(sdk.NewInt(100)))
|
||||||
acc := ðermint.EthAccount{
|
acc := ðermint.EthAccount{
|
||||||
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
||||||
CodeHash: ethcrypto.Keccak256(nil),
|
CodeHash: ethcrypto.Keccak256(nil),
|
||||||
|
@ -41,7 +41,7 @@ func NewParams(evmDenom string) Params {
|
|||||||
// DefaultParams returns default evm parameters
|
// DefaultParams returns default evm parameters
|
||||||
func DefaultParams() Params {
|
func DefaultParams() Params {
|
||||||
return Params{
|
return Params{
|
||||||
EvmDenom: ethermint.DenomDefault,
|
EvmDenom: ethermint.AttoPhoton,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ func (suite *StateDBTestSuite) TestTransitionDb() {
|
|||||||
suite.stateDB.SetNonce(suite.address, 123)
|
suite.stateDB.SetNonce(suite.address, 123)
|
||||||
|
|
||||||
addr := sdk.AccAddress(suite.address.Bytes())
|
addr := sdk.AccAddress(suite.address.Bytes())
|
||||||
balance := sdk.NewCoin(ethermint.DenomDefault, sdk.NewInt(5000))
|
balance := ethermint.NewPhotonCoin(sdk.NewInt(5000))
|
||||||
acc := suite.app.AccountKeeper.GetAccount(suite.ctx, addr)
|
acc := suite.app.AccountKeeper.GetAccount(suite.ctx, addr)
|
||||||
_ = acc.SetCoins(sdk.NewCoins(balance))
|
_ = acc.SetCoins(sdk.NewCoins(balance))
|
||||||
suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
|
suite.app.AccountKeeper.SetAccount(suite.ctx, acc)
|
||||||
@ -108,7 +108,7 @@ func (suite *StateDBTestSuite) TestTransitionDb() {
|
|||||||
"nil gas price",
|
"nil gas price",
|
||||||
func() {
|
func() {
|
||||||
invalidGas := sdk.DecCoins{
|
invalidGas := sdk.DecCoins{
|
||||||
{Denom: ethermint.DenomDefault},
|
{Denom: ethermint.AttoPhoton},
|
||||||
}
|
}
|
||||||
suite.ctx = suite.ctx.WithMinGasPrices(invalidGas)
|
suite.ctx = suite.ctx.WithMinGasPrices(invalidGas)
|
||||||
},
|
},
|
||||||
|
@ -48,7 +48,7 @@ func (suite *StateDBTestSuite) SetupTest() {
|
|||||||
|
|
||||||
suite.address = ethcmn.BytesToAddress(privkey.PubKey().Address().Bytes())
|
suite.address = ethcmn.BytesToAddress(privkey.PubKey().Address().Bytes())
|
||||||
|
|
||||||
balance := sdk.NewCoins(sdk.NewCoin(ethermint.DenomDefault, sdk.NewInt(0)))
|
balance := sdk.NewCoins(ethermint.NewPhotonCoin(sdk.ZeroInt()))
|
||||||
acc := ðermint.EthAccount{
|
acc := ðermint.EthAccount{
|
||||||
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
BaseAccount: auth.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), balance, nil, 0, 0),
|
||||||
CodeHash: ethcrypto.Keccak256(nil),
|
CodeHash: ethcrypto.Keccak256(nil),
|
||||||
|
Loading…
Reference in New Issue
Block a user