github.com/klaytn/klaytn@v1.10.2/cmd/homi/setup/flags.go (about)

     1  // Copyright 2018 The klaytn Authors
     2  // Copyright 2017 AMIS Technologies
     3  // This file is part of the go-ethereum library.
     4  //
     5  // The go-ethereum library is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU Lesser General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // The go-ethereum library is distributed in the hope that it will be useful,
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    13  // GNU Lesser General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU Lesser General Public License
    16  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    17  
    18  package setup
    19  
    20  import (
    21  	"github.com/klaytn/klaytn/params"
    22  	"gopkg.in/urfave/cli.v1"
    23  )
    24  
    25  var (
    26  	dockerImageId string
    27  	outputPath    string
    28  )
    29  
    30  var (
    31  	homiYamlFlag = cli.StringFlag{
    32  		Name:  "homi-yaml",
    33  		Usage: "Import homi.yaml to generate the config files to run the nodes",
    34  	}
    35  	genTypeFlag = cli.StringFlag{
    36  		Name:  "gen-type",
    37  		Usage: "Generate environment files according to the type (docker, local, remote, deploy)",
    38  		Value: "docker",
    39  	}
    40  	genesisTypeFlag = cli.StringFlag{
    41  		Name:  "genesis-type",
    42  		Usage: "Set the type of genesis.json to generate (cypress-test, cypress, baobab-test, baobab, clique, servicechain, servicechain-test, istanbul)",
    43  	}
    44  	cypressTestFlag = cli.BoolFlag{
    45  		Name:  "cypress-test",
    46  		Usage: "Generate genesis.json similar to the one used for Cypress with shorter intervals for testing",
    47  	}
    48  
    49  	cypressFlag = cli.BoolFlag{
    50  		Name:  "cypress",
    51  		Usage: "Generate genesis.json similar to the one used for Cypress",
    52  	}
    53  
    54  	baobabTestFlag = cli.BoolFlag{
    55  		Name:  "baobab-test",
    56  		Usage: "Generate genesis.json similar to the one used for Baobab with shorter intervals for testing",
    57  	}
    58  
    59  	baobabFlag = cli.BoolFlag{
    60  		Name:  "baobab",
    61  		Usage: "Generate genesis.json similar to the one used for Baobab",
    62  	}
    63  
    64  	serviceChainFlag = cli.BoolFlag{
    65  		Name:  "servicechain",
    66  		Usage: "Generate genesis.json similar to the one used for Serivce Chain",
    67  	}
    68  
    69  	serviceChainTestFlag = cli.BoolFlag{
    70  		Name:  "servicechain-test",
    71  		Usage: "Generate genesis.json similar to the one used for Serivce Chain with shorter intervals for testing",
    72  	}
    73  
    74  	cliqueFlag = cli.BoolFlag{
    75  		Name:  "clique",
    76  		Usage: "Use Clique consensus",
    77  	}
    78  
    79  	numOfCNsFlag = cli.IntFlag{
    80  		Name:  "cn-num",
    81  		Usage: "Number of consensus nodes",
    82  		Value: 0,
    83  	}
    84  
    85  	numOfValidatorsFlag = cli.IntFlag{
    86  		Name:  "validators-num",
    87  		Usage: "Number of validators. If not set, it will be set the number of option cn-num",
    88  		Value: 0,
    89  	}
    90  
    91  	numOfPNsFlag = cli.IntFlag{
    92  		Name:  "pn-num",
    93  		Usage: "Number of proxy node",
    94  		Value: 0,
    95  	}
    96  
    97  	numOfENsFlag = cli.IntFlag{
    98  		Name:  "en-num",
    99  		Usage: "Number of end-point node",
   100  		Value: 0,
   101  	}
   102  
   103  	numOfSCNsFlag = cli.IntFlag{
   104  		Name:  "scn-num",
   105  		Usage: "Number of service chain nodes",
   106  		Value: 0,
   107  	}
   108  
   109  	numOfSPNsFlag = cli.IntFlag{
   110  		Name:  "spn-num",
   111  		Usage: "Number of service chain proxy nodes",
   112  		Value: 0,
   113  	}
   114  
   115  	numOfSENsFlag = cli.IntFlag{
   116  		Name:  "sen-num",
   117  		Usage: "Number of service chain end-point nodes",
   118  		Value: 0,
   119  	}
   120  
   121  	numOfTestKeyFlag = cli.IntFlag{
   122  		Name:  "test-num",
   123  		Usage: "Number of test key",
   124  		Value: 0,
   125  	}
   126  
   127  	chainIDFlag = cli.Uint64Flag{
   128  		Name:  "chainID",
   129  		Usage: "ChainID",
   130  		Value: 1000,
   131  	}
   132  
   133  	serviceChainIDFlag = cli.Uint64Flag{
   134  		Name:  "serviceChainID",
   135  		Usage: "Service Chain ID",
   136  		Value: 1001,
   137  	}
   138  
   139  	unitPriceFlag = cli.Uint64Flag{
   140  		Name:  "unitPrice",
   141  		Usage: "Price of unit",
   142  		Value: 0,
   143  	}
   144  
   145  	deriveShaImplFlag = cli.IntFlag{
   146  		Name:  "deriveShaImpl",
   147  		Usage: "Implementation of DeriveSha [0:Original, 1:Simple, 2:Concat]",
   148  		Value: 0,
   149  	}
   150  
   151  	outputPathFlag = cli.StringFlag{
   152  		Name:        "output, o",
   153  		Usage:       "homi's result saved at this output folder",
   154  		Value:       "homi-output",
   155  		Destination: &outputPath,
   156  	}
   157  
   158  	fundingAddrFlag = cli.StringFlag{
   159  		Name:  "funding-addr",
   160  		Value: "",
   161  		Usage: "Give initial fund to the given addr",
   162  	}
   163  
   164  	patchAddressBookFlag = cli.BoolFlag{
   165  		Name:  "patch-address-book",
   166  		Usage: "Patch genesis AddressBook's constructContract function",
   167  	}
   168  
   169  	patchAddressBookAddrFlag = cli.StringFlag{
   170  		Name:  "patch-address-book-addr",
   171  		Usage: "The address to inject in AddressBook's constructContract function [default: first CN's address]",
   172  		Value: "",
   173  	}
   174  
   175  	addressBookMockFlag = cli.BoolFlag{
   176  		Name:  "address-book-mock",
   177  		Usage: "Allocate an AddressBookMock at the genesis block",
   178  	}
   179  
   180  	dockerImageIdFlag = cli.StringFlag{
   181  		Name:        "docker-image-id",
   182  		Value:       "klaytn/klaytn:latest", // https://hub.docker.com/r/klaytn/klaytn
   183  		Usage:       "Base docker image ID (Image[:tag]), e.g., klaytn/klaytn:v1.5.3",
   184  		Destination: &dockerImageId,
   185  	}
   186  
   187  	subGroupSizeFlag = cli.IntFlag{
   188  		Name:  "subgroup-size",
   189  		Usage: "CN's Subgroup size",
   190  		Value: 21,
   191  	}
   192  
   193  	fasthttpFlag = cli.BoolFlag{
   194  		Name:  "fasthttp",
   195  		Usage: "(docker only) Use High performance http module",
   196  	}
   197  
   198  	networkIdFlag = cli.IntFlag{
   199  		Name:  "network-id",
   200  		Usage: "(docker only) network identifier (default : 2018)",
   201  		Value: 2018,
   202  	}
   203  
   204  	nografanaFlag = cli.BoolFlag{
   205  		Name:  "no-grafana",
   206  		Usage: "(docker only) Do not make grafana container",
   207  	}
   208  
   209  	useTxGenFlag = cli.BoolFlag{
   210  		Name:  "txgen",
   211  		Usage: "(docker only) Add txgen container",
   212  	}
   213  
   214  	txGenRateFlag = cli.IntFlag{
   215  		Name:  "txgen-rate",
   216  		Usage: "(docker only) txgen's rate option [default : 2000]",
   217  		Value: 2000,
   218  	}
   219  
   220  	txGenConnFlag = cli.IntFlag{
   221  		Name:  "txgen-conn",
   222  		Usage: "(docker only) txgen's connection size option [default : 100]",
   223  		Value: 100,
   224  	}
   225  
   226  	txGenDurFlag = cli.StringFlag{
   227  		Name:  "txgen-dur",
   228  		Usage: "(docker only) txgen's duration option [default : 1m]",
   229  		Value: "1m",
   230  	}
   231  
   232  	txGenThFlag = cli.IntFlag{
   233  		Name:  "txgen-th",
   234  		Usage: "(docker-only) txgen's thread size option [default : 2]",
   235  		Value: 2,
   236  	}
   237  
   238  	rpcPortFlag = cli.IntFlag{
   239  		Name:  "rpc-port",
   240  		Usage: "klay.conf - Klaytn node's rpc port [default: 8551] ",
   241  		Value: 8551,
   242  	}
   243  
   244  	wsPortFlag = cli.IntFlag{
   245  		Name:  "ws-port",
   246  		Usage: "klay.conf - Klaytn node's ws port [default: 8552]",
   247  		Value: 8552,
   248  	}
   249  
   250  	p2pPortFlag = cli.IntFlag{
   251  		Name:  "p2p-port",
   252  		Usage: "klay.conf - Klaytn node's p2p port [default: 32323]",
   253  		Value: 32323,
   254  	}
   255  
   256  	dataDirFlag = cli.StringFlag{
   257  		Name:  "data-dir",
   258  		Usage: "klay.conf - Klaytn node's data directory path [default : /var/klay/data]",
   259  		Value: "/var/klay/data",
   260  	}
   261  
   262  	logDirFlag = cli.StringFlag{
   263  		Name:  "log-dir",
   264  		Usage: "klay.conf - Klaytn node's log directory path [default : /var/klay/log]",
   265  		Value: "/var/klay/log",
   266  	}
   267  
   268  	// Governance flags
   269  	governanceFlag = cli.BoolFlag{
   270  		Name:  "governance",
   271  		Usage: "governance field is added in the genesis file if this flag is set",
   272  	}
   273  
   274  	govModeFlag = cli.StringFlag{
   275  		Name:  "gov-mode",
   276  		Usage: "governance mode (none, single, ballot) [default: none]",
   277  		Value: params.DefaultGovernanceMode,
   278  	}
   279  
   280  	governingNodeFlag = cli.StringFlag{
   281  		Name:  "governing-node",
   282  		Usage: "the governing node [default: 0x0000000000000000000000000000000000000000]",
   283  		Value: params.DefaultGoverningNode,
   284  	}
   285  
   286  	govParamContractFlag = cli.StringFlag{
   287  		Name:  "gov-param-contract",
   288  		Usage: "the GovParam contract address [default: 0x0000000000000000000000000000000000000000]",
   289  		Value: params.DefaultGovParamContract,
   290  	}
   291  
   292  	rewardMintAmountFlag = cli.StringFlag{
   293  		Name:  "reward-mint-amount",
   294  		Usage: "governance minting amount",
   295  		Value: "9600000000000000000",
   296  	}
   297  
   298  	rewardRatioFlag = cli.StringFlag{
   299  		Name:  "reward-ratio",
   300  		Usage: "governance ratio [default: 100/0/0]",
   301  		Value: params.DefaultRatio,
   302  	}
   303  
   304  	rewardKip82RatioFlag = cli.StringFlag{
   305  		Name:  "reward-kip82-ratio",
   306  		Usage: "kip82 ratio [default: 20/80]",
   307  		Value: params.DefaultKip82Ratio,
   308  	}
   309  
   310  	rewardGiniCoeffFlag = cli.BoolFlag{
   311  		Name:  "reward-gini-coeff",
   312  		Usage: "governance gini-coefficient",
   313  	}
   314  
   315  	rewardDeferredTxFeeFlag = cli.BoolFlag{
   316  		Name:  "reward-deferred-tx",
   317  		Usage: "governance deferred transaction",
   318  	}
   319  
   320  	rewardStakingFlag = cli.Uint64Flag{
   321  		Name:  "reward-staking-interval",
   322  		Usage: "reward staking update interval flag",
   323  		Value: 86400,
   324  	}
   325  
   326  	rewardProposerFlag = cli.Uint64Flag{
   327  		Name:  "reward-proposer-interval",
   328  		Usage: "reward proposer update interval flag",
   329  		Value: 3600,
   330  	}
   331  
   332  	rewardMinimumStakeFlag = cli.StringFlag{
   333  		Name:  "reward-minimum-stake",
   334  		Usage: "reward minimum stake flag",
   335  		Value: "2000000",
   336  	}
   337  
   338  	magmaLowerBoundBaseFeeFlag = cli.Uint64Flag{
   339  		Name:  "lower-bound-base-fee",
   340  		Usage: "lower bound base fee flag",
   341  		Value: params.DefaultLowerBoundBaseFee,
   342  	}
   343  
   344  	magmaUpperBoundBaseFeeFlag = cli.Uint64Flag{
   345  		Name:  "upper-bound-base-fee",
   346  		Usage: "upper bound base fee flag",
   347  		Value: params.DefaultUpperBoundBaseFee,
   348  	}
   349  
   350  	magmaGasTarget = cli.Uint64Flag{
   351  		Name:  "gas-target",
   352  		Usage: "gas target flag",
   353  		Value: params.DefaultGasTarget,
   354  	}
   355  
   356  	magmaMaxBlockGasUsedForBaseFee = cli.Uint64Flag{
   357  		Name:  "block-gas-limit",
   358  		Usage: "block gas limit flag",
   359  		Value: params.DefaultMaxBlockGasUsedForBaseFee,
   360  	}
   361  
   362  	magmaBaseFeeDenominator = cli.Uint64Flag{
   363  		Name:  "base-fee-denominator",
   364  		Usage: "base fee denominator flag",
   365  		Value: params.DefaultBaseFeeDenominator,
   366  	}
   367  
   368  	istEpochFlag = cli.Uint64Flag{
   369  		Name:  "ist-epoch",
   370  		Usage: "governance epoch [default: 604800]",
   371  		Value: params.DefaultEpoch,
   372  	}
   373  
   374  	istProposerPolicyFlag = cli.Uint64Flag{
   375  		Name:  "ist-proposer-policy",
   376  		Usage: "governance proposer policy (0: RoundRobin, 1: Sticky, 2: WeightedRandom) [default: 0]",
   377  		Value: params.DefaultProposerPolicy,
   378  	}
   379  
   380  	istSubGroupFlag = cli.Uint64Flag{
   381  		Name:  "ist-subgroup",
   382  		Usage: "governance subgroup size [default: 21]",
   383  		Value: params.DefaultSubGroupSize,
   384  	}
   385  
   386  	cliqueEpochFlag = cli.Uint64Flag{
   387  		Name:  "clique-epoch",
   388  		Usage: "clique epoch",
   389  		Value: params.DefaultEpoch,
   390  	}
   391  
   392  	cliquePeriodFlag = cli.Uint64Flag{
   393  		Name:  "clique-period",
   394  		Usage: "clique period",
   395  		Value: params.DefaultPeriod,
   396  	}
   397  
   398  	istanbulCompatibleBlockNumberFlag = cli.Int64Flag{
   399  		Name:  "istanbul-compatible-blocknumber",
   400  		Usage: "istanbulCompatible blockNumber",
   401  		Value: 0,
   402  	}
   403  
   404  	londonCompatibleBlockNumberFlag = cli.Int64Flag{
   405  		Name:  "london-compatible-blocknumber",
   406  		Usage: "londonCompatible blockNumber",
   407  		Value: 0,
   408  	}
   409  
   410  	ethTxTypeCompatibleBlockNumberFlag = cli.Int64Flag{
   411  		Name:  "eth-tx-type-compatible-blocknumber",
   412  		Usage: "ethTxTypeCompatible blockNumber",
   413  		Value: 0,
   414  	}
   415  
   416  	magmaCompatibleBlockNumberFlag = cli.Int64Flag{
   417  		Name:  "magma-compatible-blocknumber",
   418  		Usage: "magmaCompatible blockNumber",
   419  		Value: 0,
   420  	}
   421  
   422  	koreCompatibleBlockNumberFlag = cli.Int64Flag{
   423  		Name:  "kore-compatible-blocknumber",
   424  		Usage: "koreCompatible blockNumber",
   425  		Value: 0,
   426  	}
   427  
   428  	kip103CompatibleBlockNumberFlag = cli.Int64Flag{
   429  		Name:  "kip103-compatible-blocknumber",
   430  		Usage: "kip103Compatible blockNumber",
   431  	}
   432  
   433  	kip103ContractAddressFlag = cli.StringFlag{
   434  		Name:  "kip103-contract-address",
   435  		Usage: "kip103 contract address",
   436  	}
   437  )