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 )