|  |  | @ -14,7 +14,6 @@ import ( | 
			
		
	
		
		
			
				
					
					|  |  |  | 	vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" |  |  |  | 	vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" | 
			
		
	
		
		
			
				
					
					|  |  |  | 	evmtypes "github.com/evmos/ethermint/x/evm/types" |  |  |  | 	evmtypes "github.com/evmos/ethermint/x/evm/types" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	"github.com/0glabs/0g-chain/chaincfg" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/keeper" |  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/keeper" | 
			
		
	
		
		
			
				
					
					|  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/testutil" |  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/testutil" | 
			
		
	
		
		
			
				
					
					|  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/types" |  |  |  | 	"github.com/0glabs/0g-chain/x/evmutil/types" | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -29,7 +28,7 @@ func (suite *evmBankKeeperTestSuite) SetupTest() { | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | func (suite *evmBankKeeperTestSuite) TestGetBalance_ReturnsSpendable() { |  |  |  | func (suite *evmBankKeeperTestSuite) TestGetBalance_ReturnsSpendable() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	startingCoins := sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10)) |  |  |  | 	startingCoins := sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10)) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	startingNeuron := sdkmath.NewInt(100) |  |  |  | 	startingNeuron := sdkmath.NewInt(100) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	now := tmtime.Now() |  |  |  | 	now := tmtime.Now() | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -43,16 +42,16 @@ func (suite *evmBankKeeperTestSuite) TestGetBalance_ReturnsSpendable() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	err = suite.Keeper.SetBalance(suite.Ctx, suite.Addrs[0], startingNeuron) |  |  |  | 	err = suite.Keeper.SetBalance(suite.Ctx, suite.Addrs[0], startingNeuron) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	suite.Require().NoError(err) |  |  |  | 	suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	coin := suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.BaseDenom) |  |  |  | 	coin := suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "neuron") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	suite.Require().Equal(startingNeuron, coin.Amount) |  |  |  | 	suite.Require().Equal(startingNeuron, coin.Amount) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	ctx := suite.Ctx.WithBlockTime(now.Add(12 * time.Hour)) |  |  |  | 	ctx := suite.Ctx.WithBlockTime(now.Add(12 * time.Hour)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	coin = suite.EvmBankKeeper.GetBalance(ctx, suite.Addrs[0], chaincfg.BaseDenom) |  |  |  | 	coin = suite.EvmBankKeeper.GetBalance(ctx, suite.Addrs[0], "neuron") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	suite.Require().Equal(sdkmath.NewIntFromUint64(5_000_000_000_000_000_100), coin.Amount) |  |  |  | 	suite.Require().Equal(sdkmath.NewIntFromUint64(5_000_000_000_100), coin.Amount) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | func (suite *evmBankKeeperTestSuite) TestGetBalance_NotEvmDenom() { |  |  |  | func (suite *evmBankKeeperTestSuite) TestGetBalance_NotEvmDenom() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	suite.Require().Panics(func() { |  |  |  | 	suite.Require().Panics(func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.DisplayDenom) |  |  |  | 		suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "ua0gi") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	}) |  |  |  | 	}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	suite.Require().Panics(func() { |  |  |  | 	suite.Require().Panics(func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "busd") |  |  |  | 		suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "busd") | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -65,41 +64,41 @@ func (suite *evmBankKeeperTestSuite) TestGetBalance() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		expAmount      sdkmath.Int |  |  |  | 		expAmount      sdkmath.Int | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"a0gi with neuron", |  |  |  | 			"ua0gi with neuron", | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 100), |  |  |  | 				sdk.NewInt64Coin("neuron", 100), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 10), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("10000000000000000100")), |  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("10000000000100")), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"just neuron", |  |  |  | 			"just neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 100), |  |  |  | 				sdk.NewInt64Coin("neuron", 100), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin("busd", 100), |  |  |  | 				sdk.NewInt64Coin("busd", 100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"just a0gi", |  |  |  | 			"just ua0gi", | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 10), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin("busd", 100), |  |  |  | 				sdk.NewInt64Coin("busd", 100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("10000000000000000000")), |  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("10000000000000")), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"no a0gi or neuron", |  |  |  | 			"no ua0gi or neuron", | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(), |  |  |  | 			sdk.NewCoins(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"with avaka that is more than 1 a0gi", |  |  |  | 			"with avaka that is more than 1 ua0gi", | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("20000000000000000220"))), |  |  |  | 				sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("20000000000220"))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 11), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 11), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("31000000000000000220")), |  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("31000000000220")), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -108,15 +107,15 @@ func (suite *evmBankKeeperTestSuite) TestGetBalance() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.SetupTest() |  |  |  | 			suite.SetupTest() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingAmount) |  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingAmount) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			coin := suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.BaseDenom) |  |  |  | 			coin := suite.EvmBankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "neuron") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expAmount, coin.Amount) |  |  |  | 			suite.Require().Equal(tt.expAmount, coin.Amount) | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | func (suite *evmBankKeeperTestSuite) TestSendCoinsFromModuleToAccount() { |  |  |  | func (suite *evmBankKeeperTestSuite) TestSendCoinsFromModuleToAccount() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	startingModuleCoins := sdk.NewCoins( |  |  |  | 	startingModuleCoins := sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 		sdk.NewInt64Coin(chaincfg.BaseDenom, 200), |  |  |  | 		sdk.NewInt64Coin("neuron", 200), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		sdk.NewInt64Coin(chaincfg.DisplayDenom, 100), |  |  |  | 		sdk.NewInt64Coin("ua0gi", 100), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	) |  |  |  | 	) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	tests := []struct { |  |  |  | 	tests := []struct { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		name           string |  |  |  | 		name           string | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -126,102 +125,102 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromModuleToAccount() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		hasErr         bool |  |  |  | 		hasErr         bool | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send more than 1 a0gi", |  |  |  | 			"send more than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12000000000000000010")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12000000000010")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 10), |  |  |  | 				sdk.NewInt64Coin("neuron", 10), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 12), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 12), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send less than 1 a0gi", |  |  |  | 			"send less than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 122)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 122)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 122), |  |  |  | 				sdk.NewInt64Coin("neuron", 122), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 0), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 0), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send an exact amount of a0gi", |  |  |  | 			"send an exact amount of ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("98000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("98000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 0), |  |  |  | 				sdk.NewInt64Coin("neuron", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 98), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 98), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send no neuron", |  |  |  | 			"send no neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 0), |  |  |  | 				sdk.NewInt64Coin("neuron", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 0), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 0), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if sending other coins", |  |  |  | 			"errors if sending other coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 500), sdk.NewInt64Coin("busd", 1000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 500), sdk.NewInt64Coin("busd", 1000)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough total neuron to cover", |  |  |  | 			"errors if not enough total neuron to cover", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("100000000000000001000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("100000000001000")))), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough a0gi to cover", |  |  |  | 			"errors if not enough ua0gi to cover", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("200000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("200000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts receiver's neuron to a0gi if there's enough neuron after the transfer", |  |  |  | 			"converts receiver's neuron to ua0gi if there's enough neuron after the transfer", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("99000000000200000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("99000000000200")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 999_999_999_900_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 999_999_999_900), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 1), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 1), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 100000000), |  |  |  | 				sdk.NewInt64Coin("neuron", 100), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 101), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 101), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts all of receiver's neuron to a0gi even if somehow receiver has more than 1a0gi of neuron", |  |  |  | 			"converts all of receiver's neuron to ua0gi even if somehow receiver has more than 1a0gi of neuron", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12000000000000000100")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12000000000100")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 5_999_999_999_999_999_990), |  |  |  | 				sdk.NewInt64Coin("neuron", 5_999_999_999_990), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 1), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 1), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 90), |  |  |  | 				sdk.NewInt64Coin("neuron", 90), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 19), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 19), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"swap 1 a0gi for neuron if module account doesn't have enough neuron", |  |  |  | 			"swap 1 ua0gi for neuron if module account doesn't have enough neuron", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("99000000000000001000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("99000000001000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 200), |  |  |  | 				sdk.NewInt64Coin("neuron", 200), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 1), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 1), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins( |  |  |  | 			sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 1200), |  |  |  | 				sdk.NewInt64Coin("neuron", 1200), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.DisplayDenom, 100), |  |  |  | 				sdk.NewInt64Coin("ua0gi", 100), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			), |  |  |  | 			), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -234,8 +233,8 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromModuleToAccount() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingAccBal) |  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingAccBal) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, startingModuleCoins) |  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, startingModuleCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// fund our module with some a0gi to account for converting extra neuron back to a0gi
 |  |  |  | 			// fund our module with some ua0gi to account for converting extra neuron back to ua0gi
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundModuleAccountWithZgChain(types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10))) |  |  |  | 			suite.FundModuleAccountWithZgChain(types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10))) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			err := suite.EvmBankKeeper.SendCoinsFromModuleToAccount(suite.Ctx, evmtypes.ModuleName, suite.Addrs[0], tt.sendCoins) |  |  |  | 			err := suite.EvmBankKeeper.SendCoinsFromModuleToAccount(suite.Ctx, evmtypes.ModuleName, suite.Addrs[0], tt.sendCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if tt.hasErr { |  |  |  | 			if tt.hasErr { | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -245,23 +244,23 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromModuleToAccount() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().NoError(err) |  |  |  | 				suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check a0gi
 |  |  |  | 			// check ua0gi
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			a0giSender := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.DisplayDenom) |  |  |  | 			a0giSender := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expAccBal.AmountOf(chaincfg.DisplayDenom).Int64(), a0giSender.Amount.Int64()) |  |  |  | 			suite.Require().Equal(tt.expAccBal.AmountOf("ua0gi").Int64(), a0giSender.Amount.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check neuron
 |  |  |  | 			// check neuron
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			actualNeuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) |  |  |  | 			actualNeuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expAccBal.AmountOf(chaincfg.BaseDenom).Int64(), actualNeuron.Int64()) |  |  |  | 			suite.Require().Equal(tt.expAccBal.AmountOf("neuron").Int64(), actualNeuron.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { |  |  |  | func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	startingAccCoins := sdk.NewCoins( |  |  |  | 	startingAccCoins := sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 		sdk.NewInt64Coin(chaincfg.BaseDenom, 200), |  |  |  | 		sdk.NewInt64Coin("neuron", 200), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		sdk.NewInt64Coin(chaincfg.DisplayDenom, 100), |  |  |  | 		sdk.NewInt64Coin("ua0gi", 100), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	) |  |  |  | 	) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	startingModuleCoins := sdk.NewCoins( |  |  |  | 	startingModuleCoins := sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 		sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_000), |  |  |  | 		sdk.NewInt64Coin("neuron", 100_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	) |  |  |  | 	) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	tests := []struct { |  |  |  | 	tests := []struct { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		name           string |  |  |  | 		name           string | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -271,36 +270,36 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		hasErr         bool |  |  |  | 		hasErr         bool | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send more than 1 a0gi", |  |  |  | 			"send more than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12000000000000000010")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12000000000010")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 190), sdk.NewInt64Coin(chaincfg.DisplayDenom, 88)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 190), sdk.NewInt64Coin("ua0gi", 88)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_010), sdk.NewInt64Coin(chaincfg.DisplayDenom, 12)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100_000_000_010), sdk.NewInt64Coin("ua0gi", 12)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send less than 1 a0gi", |  |  |  | 			"send less than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 122)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 122)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 78), sdk.NewInt64Coin(chaincfg.DisplayDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 78), sdk.NewInt64Coin("ua0gi", 100)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_122), sdk.NewInt64Coin(chaincfg.DisplayDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100_000_000_122), sdk.NewInt64Coin("ua0gi", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send an exact amount of a0gi", |  |  |  | 			"send an exact amount of ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("98000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("98000000000000")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 200), sdk.NewInt64Coin(chaincfg.DisplayDenom, 2)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 200), sdk.NewInt64Coin("ua0gi", 2)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_000), sdk.NewInt64Coin(chaincfg.DisplayDenom, 98)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100_000_000_000), sdk.NewInt64Coin("ua0gi", 98)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"send no neuron", |  |  |  | 			"send no neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 0)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 200), sdk.NewInt64Coin(chaincfg.DisplayDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 200), sdk.NewInt64Coin("ua0gi", 100)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_000), sdk.NewInt64Coin(chaincfg.DisplayDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100_000_000_000), sdk.NewInt64Coin("ua0gi", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if sending other coins", |  |  |  | 			"errors if sending other coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 500), sdk.NewInt64Coin("busd", 1000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 500), sdk.NewInt64Coin("busd", 1000)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -308,8 +307,8 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if have dup coins", |  |  |  | 			"errors if have dup coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{ |  |  |  | 			sdk.Coins{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 12_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 12_000_000_000_000), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 2_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 2_000_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			}, |  |  |  | 			}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -317,30 +316,30 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough total neuron to cover", |  |  |  | 			"errors if not enough total neuron to cover", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("100000000001000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("100000000001000")))), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough a0gi to cover", |  |  |  | 			"errors if not enough ua0gi to cover", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("200000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("200000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{}, |  |  |  | 			sdk.Coins{}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts 1 a0gi to neuron if not enough neuron to cover", |  |  |  | 			"converts 1 ua0gi to neuron if not enough neuron to cover", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("99001000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("99001000000000")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 999_000_000_000_000_200), sdk.NewInt64Coin(chaincfg.DisplayDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 999_000_000_200), sdk.NewInt64Coin("ua0gi", 0)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 1_000_100_000_000_000), sdk.NewInt64Coin(chaincfg.DisplayDenom, 99)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 101_000_000_000), sdk.NewInt64Coin("ua0gi", 99)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts receiver's neuron to a0gi if there's enough neuron after the transfer", |  |  |  | 			"converts receiver's neuron to ua0gi if there's enough neuron after the transfer", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 5_900_000_000_000_000_200)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 5_900_000_000_200)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100_000_000_000_000_000), sdk.NewInt64Coin(chaincfg.DisplayDenom, 94)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100_000_000_000), sdk.NewInt64Coin("ua0gi", 94)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 900_000_100_000_000_200), sdk.NewInt64Coin(chaincfg.DisplayDenom, 5)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 200), sdk.NewInt64Coin("ua0gi", 6)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -360,17 +359,17 @@ func (suite *evmBankKeeperTestSuite) TestSendCoinsFromAccountToModule() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check sender balance
 |  |  |  | 			// check sender balance
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			a0giSender := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.DisplayDenom) |  |  |  | 			a0giSender := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expSenderCoins.AmountOf(chaincfg.DisplayDenom).Int64(), a0giSender.Amount.Int64()) |  |  |  | 			suite.Require().Equal(tt.expSenderCoins.AmountOf("ua0gi").Int64(), a0giSender.Amount.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			actualNeuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) |  |  |  | 			actualNeuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expSenderCoins.AmountOf(chaincfg.BaseDenom).Int64(), actualNeuron.Int64()) |  |  |  | 			suite.Require().Equal(tt.expSenderCoins.AmountOf("neuron").Int64(), actualNeuron.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check module balance
 |  |  |  | 			// check module balance
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			moduleAddr := suite.AccountKeeper.GetModuleAddress(evmtypes.ModuleName) |  |  |  | 			moduleAddr := suite.AccountKeeper.GetModuleAddress(evmtypes.ModuleName) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			a0giSender = suite.BankKeeper.GetBalance(suite.Ctx, moduleAddr, chaincfg.DisplayDenom) |  |  |  | 			a0giSender = suite.BankKeeper.GetBalance(suite.Ctx, moduleAddr, "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expModuleCoins.AmountOf(chaincfg.DisplayDenom).Int64(), a0giSender.Amount.Int64()) |  |  |  | 			suite.Require().Equal(tt.expModuleCoins.AmountOf("ua0gi").Int64(), a0giSender.Amount.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			actualNeuron = suite.Keeper.GetBalance(suite.Ctx, moduleAddr) |  |  |  | 			actualNeuron = suite.Keeper.GetBalance(suite.Ctx, moduleAddr) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expModuleCoins.AmountOf(chaincfg.BaseDenom).Int64(), actualNeuron.Int64()) |  |  |  | 			suite.Require().Equal(tt.expModuleCoins.AmountOf("neuron").Int64(), actualNeuron.Int64()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -385,24 +384,24 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		neuronStart sdkmath.Int |  |  |  | 		neuronStart sdkmath.Int | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"burn more than 1 a0gi", |  |  |  | 			"burn more than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12021000000002000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12021000000002")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(88), |  |  |  | 			sdkmath.NewInt(88), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100_000_000_000_000_000), |  |  |  | 			sdkmath.NewInt(100_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("121000000002000000")), |  |  |  | 			sdk.NewIntFromBigInt(makeBigIntByString("121000000002")), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"burn less than 1 a0gi", |  |  |  | 			"burn less than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 122)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 122)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(878), |  |  |  | 			sdkmath.NewInt(878), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(1000), |  |  |  | 			sdkmath.NewInt(1000), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"burn an exact amount of a0gi", |  |  |  | 			"burn an exact amount of ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("98000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("98000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(2), |  |  |  | 			sdkmath.NewInt(2), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(10), |  |  |  | 			sdkmath.NewInt(10), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -410,7 +409,7 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"burn no neuron", |  |  |  | 			"burn no neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			startingA0gi, |  |  |  | 			startingA0gi, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -418,7 +417,7 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if burning other coins", |  |  |  | 			"errors if burning other coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 500), sdk.NewInt64Coin("busd", 1000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 500), sdk.NewInt64Coin("busd", 1000)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			startingA0gi, |  |  |  | 			startingA0gi, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -427,8 +426,8 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if have dup coins", |  |  |  | 			"errors if have dup coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{ |  |  |  | 			sdk.Coins{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 12_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 12_000_000_000_000), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 2_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 2_000_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			}, |  |  |  | 			}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			startingA0gi, |  |  |  | 			startingA0gi, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -437,7 +436,7 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if burn amount is negative", |  |  |  | 			"errors if burn amount is negative", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{sdk.Coin{Denom: chaincfg.BaseDenom, Amount: sdkmath.NewInt(-100)}}, |  |  |  | 			sdk.Coins{sdk.Coin{Denom: "neuron", Amount: sdkmath.NewInt(-100)}}, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			startingA0gi, |  |  |  | 			startingA0gi, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(50), |  |  |  | 			sdkmath.NewInt(50), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -445,27 +444,27 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough neuron to cover burn", |  |  |  | 			"errors if not enough neuron to cover burn", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("100999000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("100999000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(0), |  |  |  | 			sdkmath.NewInt(0), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(99_000_000_000_000_000), |  |  |  | 			sdkmath.NewInt(99_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(99_000_000_000_000_000), |  |  |  | 			sdkmath.NewInt(99_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if not enough a0gi to cover burn", |  |  |  | 			"errors if not enough ua0gi to cover burn", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("200000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("200000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts 1 a0gi to neuron if not enough neuron to cover", |  |  |  | 			"converts 1 ua0gi to neuron if not enough neuron to cover", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12021000000002000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12021000000002")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(87), |  |  |  | 			sdkmath.NewInt(87), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(980_000_000_000_000_000), |  |  |  | 			sdkmath.NewInt(980_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(1_000_000_002_000_000), |  |  |  | 			sdkmath.NewInt(1_000_000_002), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -473,8 +472,8 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.Run(tt.name, func() { |  |  |  | 		suite.Run(tt.name, func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.SetupTest() |  |  |  | 			suite.SetupTest() | 
			
		
	
		
		
			
				
					
					|  |  |  | 			startingCoins := sdk.NewCoins( |  |  |  | 			startingCoins := sdk.NewCoins( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewCoin(chaincfg.DisplayDenom, startingA0gi), |  |  |  | 				sdk.NewCoin("ua0gi", startingA0gi), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewCoin(chaincfg.BaseDenom, tt.neuronStart), |  |  |  | 				sdk.NewCoin("neuron", tt.neuronStart), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			) |  |  |  | 			) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, startingCoins) |  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, startingCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -486,8 +485,8 @@ func (suite *evmBankKeeperTestSuite) TestBurnCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().NoError(err) |  |  |  | 				suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check a0gi
 |  |  |  | 			// check ua0gi
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			a0giActual := suite.BankKeeper.GetBalance(suite.Ctx, suite.EvmModuleAddr, chaincfg.DisplayDenom) |  |  |  | 			a0giActual := suite.BankKeeper.GetBalance(suite.Ctx, suite.EvmModuleAddr, "ua0gi") | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expA0gi, a0giActual.Amount) |  |  |  | 			suite.Require().Equal(tt.expA0gi, a0giActual.Amount) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check neuron
 |  |  |  | 			// check neuron
 | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -500,30 +499,30 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	tests := []struct { |  |  |  | 	tests := []struct { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		name        string |  |  |  | 		name        string | 
			
		
	
		
		
			
				
					
					|  |  |  | 		mintCoins   sdk.Coins |  |  |  | 		mintCoins   sdk.Coins | 
			
		
	
		
		
			
				
					
					|  |  |  | 		a0gi        sdkmath.Int |  |  |  | 		ua0gi       sdkmath.Int | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		neuron      sdkmath.Int |  |  |  | 		neuron      sdkmath.Int | 
			
		
	
		
		
			
				
					
					|  |  |  | 		hasErr      bool |  |  |  | 		hasErr      bool | 
			
		
	
		
		
			
				
					
					|  |  |  | 		neuronStart sdkmath.Int |  |  |  | 		neuronStart sdkmath.Int | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"mint more than 1 a0gi", |  |  |  | 			"mint more than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12021000000002000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12021000000002")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(12), |  |  |  | 			sdkmath.NewInt(12), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(21_000_000_002_000_000), |  |  |  | 			sdkmath.NewInt(21_000_000_002), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"mint less than 1 a0gi", |  |  |  | 			"mint less than 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 901_000_000_001)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 901_000_000_001)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(901_000_000_001), |  |  |  | 			sdkmath.NewInt(901_000_000_001), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"mint an exact amount of a0gi", |  |  |  | 			"mint an exact amount of ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("123000000000000000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("123000000000000000")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(123_000), |  |  |  | 			sdkmath.NewInt(123_000), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -531,7 +530,7 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"mint no neuron", |  |  |  | 			"mint no neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -539,7 +538,7 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if minting other coins", |  |  |  | 			"errors if minting other coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 500), sdk.NewInt64Coin("busd", 1000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 500), sdk.NewInt64Coin("busd", 1000)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -548,8 +547,8 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if have dup coins", |  |  |  | 			"errors if have dup coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{ |  |  |  | 			sdk.Coins{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 12_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 12_000_000_000_000), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				sdk.NewInt64Coin(chaincfg.BaseDenom, 2_000_000_000_000), |  |  |  | 				sdk.NewInt64Coin("neuron", 2_000_000_000_000), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			}, |  |  |  | 			}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -558,7 +557,7 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"errors if mint amount is negative", |  |  |  | 			"errors if mint amount is negative", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{sdk.Coin{Denom: chaincfg.BaseDenom, Amount: sdkmath.NewInt(-100)}}, |  |  |  | 			sdk.Coins{sdk.Coin{Denom: "neuron", Amount: sdkmath.NewInt(-100)}}, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdk.ZeroInt(), |  |  |  | 			sdk.ZeroInt(), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(50), |  |  |  | 			sdkmath.NewInt(50), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -566,27 +565,27 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"adds to existing neuron balance", |  |  |  | 			"adds to existing neuron balance", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("12000000021000000002")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("12021000000002")))), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(12), |  |  |  | 			sdkmath.NewInt(12), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(21_000_000_102), |  |  |  | 			sdkmath.NewInt(21_000_000_102), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(100), |  |  |  | 			sdkmath.NewInt(100), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"convert neuron balance to a0gi if it exceeds 1 a0gi", |  |  |  | 			"convert neuron balance to ua0gi if it exceeds 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("10000000999000000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("10999000000000")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(11), |  |  |  | 			sdkmath.NewInt(12), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewInt(1_001_200_000_001), |  |  |  | 			sdkmath.NewInt(1_200_000_001), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdkmath.NewIntFromBigInt(makeBigIntByString("1000000002200000001")), |  |  |  | 			sdkmath.NewIntFromBigInt(makeBigIntByString("1002200000001")), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	for _, tt := range tests { |  |  |  | 	for _, tt := range tests { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.Run(tt.name, func() { |  |  |  | 		suite.Run(tt.name, func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.SetupTest() |  |  |  | 			suite.SetupTest() | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundModuleAccountWithZgChain(types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10))) |  |  |  | 			suite.FundModuleAccountWithZgChain(types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10))) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, sdk.NewCoins(sdk.NewCoin(chaincfg.BaseDenom, tt.neuronStart))) |  |  |  | 			suite.FundModuleAccountWithZgChain(evmtypes.ModuleName, sdk.NewCoins(sdk.NewCoin("neuron", tt.neuronStart))) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			err := suite.EvmBankKeeper.MintCoins(suite.Ctx, evmtypes.ModuleName, tt.mintCoins) |  |  |  | 			err := suite.EvmBankKeeper.MintCoins(suite.Ctx, evmtypes.ModuleName, tt.mintCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if tt.hasErr { |  |  |  | 			if tt.hasErr { | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -596,9 +595,9 @@ func (suite *evmBankKeeperTestSuite) TestMintCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().NoError(err) |  |  |  | 				suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check a0gi
 |  |  |  | 			// check ua0gi
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			a0giActual := suite.BankKeeper.GetBalance(suite.Ctx, suite.EvmModuleAddr, chaincfg.DisplayDenom) |  |  |  | 			a0giActual := suite.BankKeeper.GetBalance(suite.Ctx, suite.EvmModuleAddr, "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.a0gi, a0giActual.Amount) |  |  |  | 			suite.Require().Equal(tt.ua0gi, a0giActual.Amount) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// check neuron
 |  |  |  | 			// check neuron
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			neuronActual := suite.Keeper.GetBalance(suite.Ctx, suite.EvmModuleAddr) |  |  |  | 			neuronActual := suite.Keeper.GetBalance(suite.Ctx, suite.EvmModuleAddr) | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -615,22 +614,22 @@ func (suite *evmBankKeeperTestSuite) TestValidateEvmCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"valid coins", |  |  |  | 			"valid coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 500)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 500)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"dup coins", |  |  |  | 			"dup coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{sdk.NewInt64Coin(chaincfg.BaseDenom, 500), sdk.NewInt64Coin(chaincfg.BaseDenom, 500)}, |  |  |  | 			sdk.Coins{sdk.NewInt64Coin("neuron", 500), sdk.NewInt64Coin("neuron", 500)}, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"not evm coins", |  |  |  | 			"not evm coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 500)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 500)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"negative coins", |  |  |  | 			"negative coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.Coins{sdk.Coin{Denom: chaincfg.BaseDenom, Amount: sdkmath.NewInt(-500)}}, |  |  |  | 			sdk.Coins{sdk.Coin{Denom: "neuron", Amount: sdkmath.NewInt(-500)}}, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -655,21 +654,21 @@ func (suite *evmBankKeeperTestSuite) TestConvertOneA0giToNeuronIfNeeded() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		success       bool |  |  |  | 		success       bool | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"not enough a0gi for conversion", |  |  |  | 			"not enough ua0gi for conversion", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts 1 a0gi to neuron", |  |  |  | 			"converts 1 ua0gi to neuron", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), sdk.NewInt64Coin(chaincfg.BaseDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10), sdk.NewInt64Coin("neuron", 100)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 9), sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("1000000000000000100")))), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 9), sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("1000000000100")))), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"conversion not needed", |  |  |  | 			"conversion not needed", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), sdk.NewInt64Coin(chaincfg.BaseDenom, 200)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10), sdk.NewInt64Coin("neuron", 200)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), sdk.NewInt64Coin(chaincfg.BaseDenom, 200)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10), sdk.NewInt64Coin("neuron", 200)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -679,10 +678,10 @@ func (suite *evmBankKeeperTestSuite) TestConvertOneA0giToNeuronIfNeeded() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingCoins) |  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			err := suite.EvmBankKeeper.ConvertOneUa0giToNeuronIfNeeded(suite.Ctx, suite.Addrs[0], neuronNeeded) |  |  |  | 			err := suite.EvmBankKeeper.ConvertOneUa0giToNeuronIfNeeded(suite.Ctx, suite.Addrs[0], neuronNeeded) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			moduleZgChain := suite.BankKeeper.GetBalance(suite.Ctx, suite.AccountKeeper.GetModuleAddress(types.ModuleName), chaincfg.DisplayDenom) |  |  |  | 			moduleZgChain := suite.BankKeeper.GetBalance(suite.Ctx, suite.AccountKeeper.GetModuleAddress(types.ModuleName), "ua0gi") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			if tt.success { |  |  |  | 			if tt.success { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().NoError(err) |  |  |  | 				suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if tt.startingCoins.AmountOf(chaincfg.BaseDenom).LT(neuronNeeded) { |  |  |  | 				if tt.startingCoins.AmountOf("neuron").LT(neuronNeeded) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 					suite.Require().Equal(sdk.OneInt(), moduleZgChain.Amount) |  |  |  | 					suite.Require().Equal(sdk.OneInt(), moduleZgChain.Amount) | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} else { |  |  |  | 			} else { | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -691,9 +690,9 @@ func (suite *evmBankKeeperTestSuite) TestConvertOneA0giToNeuronIfNeeded() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			neuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) |  |  |  | 			neuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.BaseDenom), neuron) |  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf("neuron"), neuron) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			a0gi := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.DisplayDenom) |  |  |  | 			ua0gi := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.DisplayDenom), a0gi.Amount) |  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf("ua0gi"), ua0gi.Amount) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -704,34 +703,34 @@ func (suite *evmBankKeeperTestSuite) TestConvertNeuronToA0gi() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		expectedCoins sdk.Coins |  |  |  | 		expectedCoins sdk.Coins | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"not enough a0gi", |  |  |  | 			"not enough ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 100), sdk.NewInt64Coin(chaincfg.DisplayDenom, 0)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 100), sdk.NewInt64Coin("ua0gi", 0)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts neuron for 1 a0gi", |  |  |  | 			"converts neuron for 1 ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("1000000000003000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10), sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("1000000000003")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 11), sdk.NewInt64Coin(chaincfg.BaseDenom, 3_000_000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 11), sdk.NewInt64Coin("neuron", 3)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"converts more than 1 a0gi of neuron", |  |  |  | 			"converts more than 1 ua0gi of neuron", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10), sdk.NewCoin(chaincfg.BaseDenom, sdk.NewIntFromBigInt(makeBigIntByString("8000000000123000000")))), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10), sdk.NewCoin("neuron", sdk.NewIntFromBigInt(makeBigIntByString("8000000000123")))), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 18), sdk.NewInt64Coin(chaincfg.BaseDenom, 123_000_000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 18), sdk.NewInt64Coin("neuron", 123)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	for _, tt := range tests { |  |  |  | 	for _, tt := range tests { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.Run(tt.name, func() { |  |  |  | 		suite.Run(tt.name, func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.SetupTest() |  |  |  | 			suite.SetupTest() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			err := suite.App.FundModuleAccount(suite.Ctx, types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 10))) |  |  |  | 			err := suite.App.FundModuleAccount(suite.Ctx, types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 10))) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().NoError(err) |  |  |  | 			suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingCoins) |  |  |  | 			suite.FundAccountWithZgChain(suite.Addrs[0], tt.startingCoins) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			err = suite.EvmBankKeeper.ConvertNeuronToUa0gi(suite.Ctx, suite.Addrs[0]) |  |  |  | 			err = suite.EvmBankKeeper.ConvertNeuronToUa0gi(suite.Ctx, suite.Addrs[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().NoError(err) |  |  |  | 			suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			neuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) |  |  |  | 			neuron := suite.Keeper.GetBalance(suite.Ctx, suite.Addrs[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.BaseDenom), neuron) |  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf("neuron"), neuron) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			a0gi := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], chaincfg.DisplayDenom) |  |  |  | 			ua0gi := suite.BankKeeper.GetBalance(suite.Ctx, suite.Addrs[0], "ua0gi") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.DisplayDenom), a0gi.Amount) |  |  |  | 			suite.Require().Equal(tt.expectedCoins.AmountOf("ua0gi"), ua0gi.Amount) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -744,7 +743,7 @@ func (suite *evmBankKeeperTestSuite) TestSplitNeuronCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	}{ |  |  |  | 	}{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"invalid coins", |  |  |  | 			"invalid coins", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 500)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 500)), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			nil, |  |  |  | 			nil, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			true, |  |  |  | 			true, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -755,33 +754,33 @@ func (suite *evmBankKeeperTestSuite) TestSplitNeuronCoins() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"a0gi & neuron coins", |  |  |  | 			"ua0gi & neuron coins", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 8_000_000_000_000_000_123)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 8_000_000_000_123)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 8), sdk.NewInt64Coin(chaincfg.BaseDenom, 123)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 8), sdk.NewInt64Coin("neuron", 123)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"only neuron", |  |  |  | 			"only neuron", | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 10_123)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 10_123)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 10_123)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 10_123)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			"only a0gi", |  |  |  | 			"only ua0gi", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.BaseDenom, 5_000_000_000_000_000_000)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("neuron", 5_000_000_000_000)), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin(chaincfg.DisplayDenom, 5)), |  |  |  | 			sdk.NewCoins(sdk.NewInt64Coin("ua0gi", 5)), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			false, |  |  |  | 			false, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}, |  |  |  | 		}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	for _, tt := range tests { |  |  |  | 	for _, tt := range tests { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		suite.Run(tt.name, func() { |  |  |  | 		suite.Run(tt.name, func() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			a0gi, neuron, err := keeper.SplitNeuronCoins(tt.coins) |  |  |  | 			ua0gi, neuron, err := keeper.SplitNeuronCoins(tt.coins) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			if tt.shouldErr { |  |  |  | 			if tt.shouldErr { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().Error(err) |  |  |  | 				suite.Require().Error(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} else { |  |  |  | 			} else { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().NoError(err) |  |  |  | 				suite.Require().NoError(err) | 
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.DisplayDenom), a0gi.Amount) |  |  |  | 				suite.Require().Equal(tt.expectedCoins.AmountOf("ua0gi"), ua0gi.Amount) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				suite.Require().Equal(tt.expectedCoins.AmountOf(chaincfg.BaseDenom), neuron) |  |  |  | 				suite.Require().Equal(tt.expectedCoins.AmountOf("neuron"), neuron) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}) |  |  |  | 		}) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					
					|  |  | 
 |