github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/cli/initialize/initialize.go (about) 1 package initialize 2 3 import ( 4 "fmt" 5 "math/big" 6 7 "github.com/ChainSafe/chainbridge-core/chains/evm/calls" 8 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmclient" 9 evmgaspricer "github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmgaspricer" 10 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor" 11 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/prepare" 12 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/signAndSend" 13 "github.com/ChainSafe/chainbridge-core/crypto/secp256k1" 14 "github.com/rs/zerolog/log" 15 ) 16 17 func InitializeClient( 18 url string, 19 senderKeyPair *secp256k1.Keypair, 20 ) (*evmclient.EVMClient, error) { 21 ethClient, err := evmclient.NewEVMClient(url, senderKeyPair) 22 if err != nil { 23 log.Error().Err(fmt.Errorf("eth client initialization error: %v", err)) 24 return nil, err 25 } 26 return ethClient, nil 27 } 28 29 // Initialize transactor which is used for contract calls 30 // if --prepare flag value is set as true (from CLI) call data is outputted to stdout 31 // which can be used for multisig contract calls 32 func InitializeTransactor( 33 gasPrice *big.Int, 34 txFabric calls.TxFabric, 35 client *evmclient.EVMClient, 36 prepareFlag bool, 37 ) (transactor.Transactor, error) { 38 var trans transactor.Transactor 39 if prepareFlag { 40 trans = prepare.NewPrepareTransactor() 41 } else { 42 gasPricer := evmgaspricer.NewLondonGasPriceClient( 43 client, 44 &evmgaspricer.GasPricerOpts{UpperLimitFeePerGas: gasPrice}, 45 ) 46 trans = signAndSend.NewSignAndSendTransactor(txFabric, gasPricer, client) 47 } 48 49 return trans, nil 50 }