forked from cerc-io/laconicd-deprecated
types: account balance fix (#507)
* fix hardcoded photon on account balance getter/setter * types: testing suite * balance test * update zero diff * add case for other coin * changelog * fix journal test
This commit is contained in:
@@ -232,7 +232,8 @@ func (ch suicideChange) revert(s *CommitStateDB) {
|
||||
so := s.getStateObject(*ch.account)
|
||||
if so != nil {
|
||||
so.suicided = ch.prev
|
||||
so.setBalance(ch.prevBalance)
|
||||
evmDenom := s.GetParams().EvmDenom
|
||||
so.setBalance(evmDenom, ch.prevBalance)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,7 +249,8 @@ func (ch touchChange) dirtied() *ethcmn.Address {
|
||||
}
|
||||
|
||||
func (ch balanceChange) revert(s *CommitStateDB) {
|
||||
s.getStateObject(*ch.account).setBalance(ch.prev)
|
||||
evmDenom := s.GetParams().EvmDenom
|
||||
s.getStateObject(*ch.account).setBalance(evmDenom, ch.prev)
|
||||
}
|
||||
|
||||
func (ch balanceChange) dirtied() *ethcmn.Address {
|
||||
|
||||
@@ -97,6 +97,8 @@ func (suite *JournalTestSuite) SetupTest() {
|
||||
// to maintain consistency with the Geth implementation.
|
||||
func (suite *JournalTestSuite) setup() {
|
||||
authKey := sdk.NewKVStoreKey(auth.StoreKey)
|
||||
paramsKey := sdk.NewKVStoreKey(params.StoreKey)
|
||||
paramsTKey := sdk.NewTransientStoreKey(params.TStoreKey)
|
||||
// bankKey := sdk.NewKVStoreKey(bank.StoreKey)
|
||||
storeKey := sdk.NewKVStoreKey(StoreKey)
|
||||
|
||||
@@ -107,25 +109,24 @@ func (suite *JournalTestSuite) setup() {
|
||||
|
||||
cms := store.NewCommitMultiStore(db)
|
||||
cms.MountStoreWithDB(authKey, sdk.StoreTypeIAVL, db)
|
||||
// cms.MountStoreWithDB(bankKey, sdk.StoreTypeIAVL, db)
|
||||
cms.MountStoreWithDB(paramsKey, sdk.StoreTypeIAVL, db)
|
||||
cms.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, db)
|
||||
cms.MountStoreWithDB(paramsTKey, sdk.StoreTypeTransient, db)
|
||||
|
||||
err := cms.LoadLatestVersion()
|
||||
suite.Require().NoError(err)
|
||||
|
||||
cdc := newTestCodec()
|
||||
|
||||
keyParams := sdk.NewKVStoreKey(params.StoreKey)
|
||||
tkeyParams := sdk.NewTransientStoreKey(params.TStoreKey)
|
||||
paramsKeeper := params.NewKeeper(cdc, keyParams, tkeyParams)
|
||||
paramsKeeper := params.NewKeeper(cdc, paramsKey, paramsTKey)
|
||||
|
||||
authSubspace := paramsKeeper.Subspace(auth.DefaultParamspace)
|
||||
evmSubspace := paramsKeeper.Subspace(types.DefaultParamspace)
|
||||
evmSubspace := paramsKeeper.Subspace(types.DefaultParamspace).WithKeyTable(ParamKeyTable())
|
||||
|
||||
ak := auth.NewAccountKeeper(cdc, authKey, authSubspace, ethermint.ProtoAccount)
|
||||
|
||||
suite.ctx = sdk.NewContext(cms, abci.Header{ChainID: "8"}, false, tmlog.NewNopLogger())
|
||||
suite.stateDB = NewCommitStateDB(suite.ctx, storeKey, evmSubspace, ak).WithContext(suite.ctx)
|
||||
suite.stateDB.SetParams(DefaultParams())
|
||||
}
|
||||
|
||||
func TestJournalTestSuite(t *testing.T) {
|
||||
|
||||
@@ -204,11 +204,11 @@ func (so *stateObject) SetBalance(amount *big.Int) {
|
||||
prev: so.account.GetCoins().AmountOf(evmDenom),
|
||||
})
|
||||
|
||||
so.setBalance(amt)
|
||||
so.setBalance(evmDenom, amt)
|
||||
}
|
||||
|
||||
func (so *stateObject) setBalance(amount sdk.Int) {
|
||||
so.account.SetBalance(amount)
|
||||
func (so *stateObject) setBalance(denom string, amount sdk.Int) {
|
||||
so.account.SetBalance(denom, amount)
|
||||
}
|
||||
|
||||
// SetNonce sets the state object's nonce (i.e sequence number of the account).
|
||||
@@ -295,7 +295,8 @@ func (so stateObject) Address() ethcmn.Address {
|
||||
|
||||
// Balance returns the state object's current balance.
|
||||
func (so *stateObject) Balance() *big.Int {
|
||||
balance := so.account.Balance().BigInt()
|
||||
evmDenom := so.stateDB.GetParams().EvmDenom
|
||||
balance := so.account.Balance(evmDenom).BigInt()
|
||||
if balance == nil {
|
||||
return zeroBalance
|
||||
}
|
||||
@@ -406,7 +407,8 @@ func (so *stateObject) deepCopy(db *CommitStateDB) *stateObject {
|
||||
|
||||
// empty returns whether the account is considered empty.
|
||||
func (so *stateObject) empty() bool {
|
||||
balace := so.account.Balance()
|
||||
evmDenom := so.stateDB.GetParams().EvmDenom
|
||||
balace := so.account.Balance(evmDenom)
|
||||
return so.account == nil ||
|
||||
(so.account != nil &&
|
||||
so.account.Sequence == 0 &&
|
||||
|
||||
@@ -693,7 +693,8 @@ func (csdb *CommitStateDB) Prepare(thash, bhash ethcmn.Hash, txi int) {
|
||||
func (csdb *CommitStateDB) CreateAccount(addr ethcmn.Address) {
|
||||
newobj, prevobj := csdb.createObject(addr)
|
||||
if prevobj != nil {
|
||||
newobj.setBalance(sdk.NewIntFromBigInt(prevobj.Balance()))
|
||||
evmDenom := csdb.GetParams().EvmDenom
|
||||
newobj.setBalance(evmDenom, sdk.NewIntFromBigInt(prevobj.Balance()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user