@@ -15,6 +15,7 @@ import (
15
15
ethtypes "github.com/ethereum/go-ethereum/core/types"
16
16
"github.com/ethereum/go-ethereum/core/vm"
17
17
"github.com/ethereum/go-ethereum/crypto"
18
+ "github.com/evmos/ethermint/crypto/ethsecp256k1"
18
19
"github.com/evmos/ethermint/tests"
19
20
"github.com/evmos/ethermint/x/evm/statedb"
20
21
"github.com/evmos/ethermint/x/evm/types"
@@ -420,12 +421,26 @@ func (suite *KeeperTestSuite) TestSuicide() {
420
421
suite .Require ().NoError (db .Commit ())
421
422
db = suite .StateDB ()
422
423
424
+ // Generate 2nd address
425
+ privkey , _ := ethsecp256k1 .GenerateKey ()
426
+ key , err := privkey .ToECDSA ()
427
+ suite .Require ().NoError (err )
428
+ addr2 := crypto .PubkeyToAddress (key .PublicKey )
429
+
430
+ // Add code and state to account 2
431
+ db .SetCode (addr2 , code )
432
+ suite .Require ().Equal (code , db .GetCode (addr2 ))
433
+ for i := 0 ; i < 5 ; i ++ {
434
+ db .SetState (addr2 , common .BytesToHash ([]byte (fmt .Sprintf ("key%d" , i ))), common .BytesToHash ([]byte (fmt .Sprintf ("value%d" , i ))))
435
+ }
436
+
423
437
// Call Suicide
424
438
suite .Require ().Equal (true , db .Suicide (suite .address ))
425
439
426
440
// Check suicided is marked
427
441
suite .Require ().Equal (true , db .HasSuicided (suite .address ))
428
442
443
+ // Commit state
429
444
suite .Require ().NoError (db .Commit ())
430
445
db = suite .StateDB ()
431
446
@@ -441,6 +456,10 @@ func (suite *KeeperTestSuite) TestSuicide() {
441
456
442
457
// Check account is deleted
443
458
suite .Require ().Equal (common.Hash {}, db .GetCodeHash (suite .address ))
459
+
460
+ // Check code is still present in addr2 and suicided is false
461
+ suite .Require ().NotNil (db .GetCode (addr2 ))
462
+ suite .Require ().Equal (false , db .HasSuicided (addr2 ))
444
463
}
445
464
446
465
func (suite * KeeperTestSuite ) TestExist () {
0 commit comments