1
1
package app
2
2
3
3
import (
4
+ "crypto/sha256"
5
+ "encoding/hex"
4
6
stderrors "errors"
5
7
"fmt"
6
8
"io"
@@ -9,6 +11,7 @@ import (
9
11
"net/http"
10
12
"os"
11
13
"path/filepath"
14
+ "sort"
12
15
13
16
autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
14
17
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
@@ -175,6 +178,8 @@ const (
175
178
//
176
179
// NOTE: In the SDK, the default value is 255.
177
180
AddrLen = 20
181
+
182
+ FlagBlockedAddresses = "blocked-addresses"
178
183
)
179
184
180
185
var Forks = []Fork {}
@@ -918,6 +923,7 @@ func New(
918
923
app .SetEndBlocker (app .EndBlocker )
919
924
if err := app .setAnteHandler (encodingConfig .TxConfig ,
920
925
cast .ToUint64 (appOpts .Get (srvflags .EVMMaxTxGasWanted )),
926
+ cast .ToStringSlice (appOpts .Get (FlagBlockedAddresses )),
921
927
); err != nil {
922
928
panic (err )
923
929
}
@@ -965,7 +971,35 @@ func New(
965
971
}
966
972
967
973
// use Ethermint's custom AnteHandler
968
- func (app * App ) setAnteHandler (txConfig client.TxConfig , maxGasWanted uint64 ) error {
974
+ func (app * App ) setAnteHandler (txConfig client.TxConfig , maxGasWanted uint64 , blacklist []string ) error {
975
+ if len (blacklist ) > 0 {
976
+ sort .Strings (blacklist )
977
+ // hash blacklist concatenated
978
+ h := sha256 .New ()
979
+ for _ , addr := range blacklist {
980
+ _ , err := h .Write ([]byte (addr ))
981
+ if err != nil {
982
+ panic (err )
983
+ }
984
+ }
985
+ app .Logger ().Error ("Setting ante handler with blacklist" , "size" , len (blacklist ), "hash" , hex .EncodeToString (h .Sum (nil )))
986
+ for _ , addr := range blacklist {
987
+ app .Logger ().Error ("Blacklisted address" , "address" , addr )
988
+ }
989
+ } else {
990
+ app .Logger ().Error ("Setting ante handler without blacklist" )
991
+ }
992
+ blockedMap := make (map [string ]struct {}, len (blacklist ))
993
+ for _ , str := range blacklist {
994
+ addr , err := sdk .AccAddressFromBech32 (str )
995
+ if err != nil {
996
+ return fmt .Errorf ("invalid bech32 address: %s, err: %w" , str , err )
997
+ }
998
+
999
+ blockedMap [string (addr )] = struct {}{}
1000
+ }
1001
+ blockAddressDecorator := NewBlockAddressesDecorator (blockedMap )
1002
+
969
1003
options := evmante.HandlerOptions {
970
1004
AccountKeeper : app .AccountKeeper ,
971
1005
BankKeeper : app .BankKeeper ,
@@ -982,6 +1016,7 @@ func (app *App) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) er
982
1016
sdk .MsgTypeURL (& evmtypes.MsgEthereumTx {}),
983
1017
sdk .MsgTypeURL (& vestingtypes.MsgCreateVestingAccount {}),
984
1018
},
1019
+ ExtraDecorators : []sdk.AnteDecorator {blockAddressDecorator },
985
1020
}
986
1021
987
1022
anteHandler , err := evmante .NewAnteHandler (options )
0 commit comments