github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/cli/admin/unpause.go (about) 1 package admin 2 3 import ( 4 "fmt" 5 6 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/contracts/bridge" 7 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/evmtransaction" 8 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor" 9 "github.com/ChainSafe/chainbridge-core/chains/evm/cli/initialize" 10 "github.com/ChainSafe/chainbridge-core/util" 11 12 "github.com/ChainSafe/chainbridge-core/chains/evm/cli/flags" 13 "github.com/ChainSafe/chainbridge-core/chains/evm/cli/logger" 14 "github.com/ethereum/go-ethereum/common" 15 "github.com/rs/zerolog/log" 16 "github.com/spf13/cobra" 17 ) 18 19 var unpauseCmd = &cobra.Command{ 20 Use: "unpause", 21 Short: "Unpause deposits and proposals", 22 Long: "The unpause subcommand unpauses deposits and proposals", 23 PreRun: func(cmd *cobra.Command, args []string) { 24 logger.LoggerMetadata(cmd.Name(), cmd.Flags()) 25 }, 26 PersistentPreRunE: func(cmd *cobra.Command, args []string) error { 27 return util.CallPersistentPreRun(cmd, args) 28 }, 29 RunE: func(cmd *cobra.Command, args []string) error { 30 c, err := initialize.InitializeClient(url, senderKeyPair) 31 if err != nil { 32 return err 33 } 34 t, err := initialize.InitializeTransactor(gasPrice, evmtransaction.NewTransaction, c, prepare) 35 if err != nil { 36 return err 37 } 38 return UnpauseCmd(cmd, args, bridge.NewBridgeContract(c, BridgeAddr, t)) 39 }, 40 Args: func(cmd *cobra.Command, args []string) error { 41 err := ValidateUnpauseFlags(cmd, args) 42 if err != nil { 43 return err 44 } 45 46 ProcessUnpauseFlags(cmd, args) 47 48 return nil 49 }, 50 } 51 52 func BindUnpauseFlags(cmd *cobra.Command) { 53 cmd.Flags().StringVar(&Bridge, "bridge", "", "Bridge contract address") 54 flags.MarkFlagsAsRequired(cmd, "bridge") 55 } 56 57 func init() { 58 BindUnpauseFlags(unpauseCmd) 59 } 60 61 func ValidateUnpauseFlags(cmd *cobra.Command, args []string) error { 62 if !common.IsHexAddress(Bridge) { 63 return fmt.Errorf("invalid bridge address: %s", Bridge) 64 } 65 return nil 66 } 67 68 func ProcessUnpauseFlags(cmd *cobra.Command, args []string) { 69 BridgeAddr = common.HexToAddress(Bridge) 70 } 71 72 func UnpauseCmd(cmd *cobra.Command, args []string, contract *bridge.BridgeContract) error { 73 hash, err := contract.Unpause(transactor.TransactOptions{GasLimit: gasLimit}) 74 if err != nil { 75 log.Error().Err(fmt.Errorf("admin unpause error: %v", err)) 76 return err 77 } 78 79 log.Info().Msgf("successfully unpaused bridge: %s; tx hash: %s", Bridge, hash.Hex()) 80 return nil 81 82 }