github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/benchmarks/sequencer/scripts/common/environment/init.go (about) 1 package environment 2 3 import ( 4 "context" 5 "math/big" 6 "strconv" 7 "strings" 8 9 "github.com/0xPolygon/supernets2-node/db" 10 "github.com/0xPolygon/supernets2-node/log" 11 "github.com/0xPolygon/supernets2-node/pool/pgpoolstorage" 12 "github.com/0xPolygon/supernets2-node/state" 13 "github.com/0xPolygon/supernets2-node/test/benchmarks/sequencer/common/params" 14 "github.com/ethereum/go-ethereum/accounts/abi/bind" 15 "github.com/ethereum/go-ethereum/crypto" 16 "github.com/ethereum/go-ethereum/ethclient" 17 ) 18 19 var ( 20 maxConnections = 10 21 bitSize = 64 22 ) 23 24 // Init sets up the environment for the benchmark 25 func Init() (context.Context, *pgpoolstorage.PostgresPoolStorage, *state.PostgresStorage, *ethclient.Client, *bind.TransactOpts) { 26 ctx := context.Background() 27 pl, err := pgpoolstorage.NewPostgresPoolStorage(db.Config{ 28 Name: poolDbName, 29 User: poolDbUser, 30 Password: poolDbPass, 31 Host: poolDbHost, 32 Port: poolDbPort, 33 EnableLog: false, 34 MaxConns: maxConnections, 35 }) 36 if err != nil { 37 panic(err) 38 } 39 40 l2Client, err := ethclient.Dial(l2NetworkRPCURL) 41 if err != nil { 42 panic(err) 43 } 44 // PrivateKey is the private key of the sender 45 privateKey, err := crypto.HexToECDSA(strings.TrimPrefix(PrivateKey, "0x")) 46 if err != nil { 47 panic(err) 48 } 49 chainId, err := strconv.ParseUint(L2ChainId, IntBase, bitSize) 50 if err != nil { 51 panic(err) 52 } 53 log.Infof("L2ChainId: %d", chainId) 54 // Auth is the auth of the sender 55 auth, err := bind.NewKeyedTransactorWithChainID(privateKey, new(big.Int).SetUint64(chainId)) 56 if err != nil { 57 panic(err) 58 } 59 // Print Info before send 60 senderBalance, err := l2Client.BalanceAt(ctx, auth.From, nil) 61 if err != nil { 62 panic(err) 63 } 64 senderNonce, err := l2Client.PendingNonceAt(ctx, auth.From) 65 if err != nil { 66 panic(err) 67 } 68 69 // Print Initial Stats 70 log.Infof("Receiver Addr: %v", params.To.String()) 71 log.Infof("Sender Addr: %v", auth.From.String()) 72 log.Infof("Sender Balance: %v", senderBalance.String()) 73 log.Infof("Sender Nonce: %v", senderNonce) 74 75 gasPrice, err := l2Client.SuggestGasPrice(ctx) 76 if err != nil { 77 panic(err) 78 } 79 auth.GasPrice = gasPrice 80 stateDbCfg := db.Config{ 81 User: stateDbUser, 82 Password: stateDbPass, 83 Name: stateDbName, 84 Host: stateDbHost, 85 Port: stateDbPort, 86 EnableLog: true, 87 MaxConns: maxConnections, 88 } 89 stateDb, err := db.NewSQLDB(stateDbCfg) 90 if err != nil { 91 panic(err) 92 } 93 stateStorage := state.NewPostgresStorage(stateDb) 94 auth.Nonce = new(big.Int).SetUint64(senderNonce) 95 96 return ctx, pl, stateStorage, l2Client, auth 97 }