2022-12-16 09:48:38 +00:00
// Copyright 2021 Evmos Foundation
// This file is part of Evmos' Ethermint library.
//
// The Ethermint library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The Ethermint library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
2021-08-16 09:45:10 +00:00
package flags
2021-07-28 09:47:29 +00:00
import (
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
2022-08-05 13:01:20 +00:00
// Tendermint/cosmos-sdk full-node start flags
2021-08-16 09:45:10 +00:00
const (
WithTendermint = "with-tendermint"
Address = "address"
Transport = "transport"
TraceStore = "trace-store"
CPUProfile = "cpu-profile"
2022-08-05 13:01:20 +00:00
// The type of database for application and snapshots databases
AppDBBackend = "app-db-backend"
2021-08-16 09:45:10 +00:00
)
// GRPC-related flags.
const (
2022-10-19 09:47:34 +00:00
GRPCOnly = "grpc-only"
2021-08-16 09:45:10 +00:00
GRPCEnable = "grpc.enable"
GRPCAddress = "grpc.address"
GRPCWebEnable = "grpc-web.enable"
GRPCWebAddress = "grpc-web.address"
)
2022-03-15 19:59:31 +00:00
// Cosmos API flags
2022-01-17 18:08:02 +00:00
const (
2022-03-15 19:59:31 +00:00
RPCEnable = "api.enable"
EnabledUnsafeCors = "api.enabled-unsafe-cors"
2022-01-17 18:08:02 +00:00
)
2021-08-16 09:45:10 +00:00
// JSON-RPC flags
const (
2022-06-22 10:50:36 +00:00
JSONRPCEnable = "json-rpc.enable"
JSONRPCAPI = "json-rpc.api"
JSONRPCAddress = "json-rpc.address"
JSONWsAddress = "json-rpc.ws-address"
JSONRPCGasCap = "json-rpc.gas-cap"
JSONRPCEVMTimeout = "json-rpc.evm-timeout"
JSONRPCTxFeeCap = "json-rpc.txfee-cap"
JSONRPCFilterCap = "json-rpc.filter-cap"
JSONRPCLogsCap = "json-rpc.logs-cap"
JSONRPCBlockRangeCap = "json-rpc.block-range-cap"
JSONRPCHTTPTimeout = "json-rpc.http-timeout"
JSONRPCHTTPIdleTimeout = "json-rpc.http-idle-timeout"
JSONRPCAllowUnprotectedTxs = "json-rpc.allow-unprotected-txs"
2022-08-10 12:26:51 +00:00
JSONRPCMaxOpenConnections = "json-rpc.max-open-connections"
2022-08-11 20:49:05 +00:00
JSONRPCEnableIndexer = "json-rpc.enable-indexer"
2022-10-14 22:50:01 +00:00
// JSONRPCEnableMetrics enables EVM RPC metrics server.
// Set to `metrics` which is hardcoded flag from go-ethereum.
// https://github.com/ethereum/go-ethereum/blob/master/metrics/metrics.go#L35-L55
JSONRPCEnableMetrics = "metrics"
2021-08-16 09:45:10 +00:00
)
// EVM flags
const (
2022-03-21 09:01:21 +00:00
EVMTracer = "evm.tracer"
EVMMaxTxGasWanted = "evm.max-tx-gas-wanted"
2021-08-16 09:45:10 +00:00
)
2021-09-28 11:33:54 +00:00
// TLS flags
const (
TLSCertPath = "tls.certificate-path"
TLSKeyPath = "tls.key-path"
)
2021-07-28 09:47:29 +00:00
// AddTxFlags adds common flags for commands to post tx
2021-11-25 15:12:57 +00:00
func AddTxFlags ( cmd * cobra . Command ) ( * cobra . Command , error ) {
2021-07-28 09:47:29 +00:00
cmd . PersistentFlags ( ) . String ( flags . FlagChainID , "testnet" , "Specify Chain ID for sending Tx" )
cmd . PersistentFlags ( ) . String ( flags . FlagFrom , "" , "Name or address of private key with which to sign" )
cmd . PersistentFlags ( ) . String ( flags . FlagFees , "" , "Fees to pay along with transaction; eg: 10aphoton" )
cmd . PersistentFlags ( ) . String ( flags . FlagGasPrices , "" , "Gas prices to determine the transaction fee (e.g. 10aphoton)" )
2022-08-26 10:30:55 +00:00
cmd . PersistentFlags ( ) . String ( flags . FlagNode , "tcp://localhost:26657" , "<host>:<port> to tendermint rpc interface for this chain" ) //nolint:lll
cmd . PersistentFlags ( ) . Float64 ( flags . FlagGasAdjustment , flags . DefaultGasAdjustment , "adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored " ) //nolint:lll
2021-07-28 09:47:29 +00:00
cmd . PersistentFlags ( ) . StringP ( flags . FlagBroadcastMode , "b" , flags . BroadcastSync , "Transaction broadcasting mode (sync|async|block)" )
2021-09-13 10:36:21 +00:00
cmd . PersistentFlags ( ) . String ( flags . FlagKeyringBackend , keyring . BackendOS , "Select keyring's backend" )
2021-07-28 09:47:29 +00:00
// --gas can accept integers and "simulate"
// cmd.PersistentFlags().Var(&flags.GasFlagVar, "gas", fmt.Sprintf(
// "gas limit to set per-transaction; set to %q to calculate required gas automatically (default %d)",
// flags.GasFlagAuto, flags.DefaultGasLimit,
// ))
// viper.BindPFlag(flags.FlagTrustNode, cmd.Flags().Lookup(flags.FlagTrustNode))
2021-11-25 15:12:57 +00:00
if err := viper . BindPFlag ( flags . FlagNode , cmd . PersistentFlags ( ) . Lookup ( flags . FlagNode ) ) ; err != nil {
return nil , err
}
if err := viper . BindPFlag ( flags . FlagKeyringBackend , cmd . PersistentFlags ( ) . Lookup ( flags . FlagKeyringBackend ) ) ; err != nil {
return nil , err
}
return cmd , nil
2021-07-28 09:47:29 +00:00
}