def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "account", "Get Account data (nonce, balance) from the Network") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser( subparsers, "account", "get", "Query account details (nonce, balance etc.)") cli_shared.add_proxy_arg(sub) _add_address_arg(sub) mutex = sub.add_mutually_exclusive_group() mutex.add_argument("--balance", action="store_true", help="whether to only fetch the balance") mutex.add_argument("--nonce", action="store_true", help="whether to only fetch the nonce") mutex.add_argument("--username", action="store_true", help="whether to only fetch the username") cli_shared.add_omit_fields_arg(sub) sub.set_defaults(func=get_account) sub = cli_shared.add_command_subparser(subparsers, "account", "get-transactions", "Query account transactions") cli_shared.add_proxy_arg(sub) cli_shared.add_outfile_arg(sub) _add_address_arg(sub) sub.set_defaults(func=get_account_transactions) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def _add_common_arguments(sub: Any): cli_shared.add_proxy_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False, with_estimate_gas=True) cli_shared.add_outfile_arg(sub, what="signed transaction, hash")
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser(subparsers, "hyperblock", "Get Hyperblock from the Network") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "hyperblock", "get", "Get hyperblock") cli_shared.add_proxy_arg(sub) sub.add_argument("--key", required=True, help="the hash or the nonce of the hyperblock") sub.set_defaults(func=get_hyperblock)
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "network", "Get Network parameters, such as number of shards, chain identifier etc." ) subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "network", "num-shards", "Get the number of shards.") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=get_num_shards) sub = cli_shared.add_command_subparser( subparsers, "network", "block-nonce", "Get the latest block nonce, by shard.") cli_shared.add_proxy_arg(sub) sub.add_argument("--shard", required=True, help="the shard ID (use 4294967295 for metachain)") sub.set_defaults(func=get_last_block_nonce) sub = cli_shared.add_command_subparser(subparsers, "network", "chain", "Get the chain identifier.") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=get_chain_id) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "tx", "Create and broadcast Transactions") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "tx", "new", "Create a new transaction") _add_common_arguments(sub) cli_shared.add_outfile_arg(sub, what="signed transaction, hash") cli_shared.add_broadcast_args(sub, relay=True) cli_shared.add_proxy_arg(sub) sub.set_defaults(func=create_transaction) sub = cli_shared.add_command_subparser( subparsers, "tx", "send", "Send a previously saved transaction") cli_shared.add_infile_arg(sub, what="a previously saved transaction") cli_shared.add_outfile_arg(sub, what="the hash") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=send_transaction) sub = cli_shared.add_command_subparser(subparsers, "tx", "get", "Get a transaction") sub.add_argument("--hash", required=True, help="the hash") sub.add_argument("--sender", required=False, help="the sender address") sub.add_argument("--with-results", action="store_true", help="will also return the results of transaction") cli_shared.add_proxy_arg(sub) cli_shared.add_omit_fields_arg(sub) sub.set_defaults(func=get_transaction) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "dispatcher", "Enqueue transactions, then bulk dispatch them") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "enqueue", "Enqueue a transaction") cli_shared.add_tx_args(sub, with_nonce=False) sub.set_defaults(func=enqueue_transaction) sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "dispatch", "Dispatch queued transactions") cli_shared.add_proxy_arg(sub) cli_shared.add_wallet_args(sub) sub.set_defaults(func=dispatch_transactions) sub = cli_shared.add_command_subparser( subparsers, "dispatcher", "dispatch-continuously", "Continuously dispatch queued transactions") cli_shared.add_proxy_arg(sub) cli_shared.add_wallet_args(sub) sub.add_argument( "--interval", required=True, help="the interval to retrieve transactions from the queue, in seconds" ) sub.set_defaults(func=dispatch_transactions_continuously) sub = cli_shared.add_command_subparser(subparsers, "dispatcher", "clean", "Clear queue of transactions") sub.set_defaults(func=clean_transactions_queue) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser(subparsers, "cost", "Estimate cost of Transactions") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "cost", "gas-price", "Query minimum gas price") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=get_gas_price) sub = cli_shared.add_command_subparser( subparsers, "cost", "tx-transfer", "Query cost of regular transaction (transfer)") cli_shared.add_proxy_arg(sub) sub.add_argument( "--data", required=True, help="a transaction payload, required to estimate the cost") sub.set_defaults(func=lambda args: get_transaction_cost( args, proxy.TxTypes.MOVE_BALANCE)) sub = cli_shared.add_command_subparser( subparsers, "cost", "sc-deploy", "Query cost of Smart Contract deploy transaction") cli_shared.add_proxy_arg(sub) cli_contracts._add_project_or_bytecode_arg(sub) cli_contracts._add_arguments_arg(sub) sub.set_defaults( func=lambda args: get_transaction_cost(args, proxy.TxTypes.SC_DEPLOY)) sub = cli_shared.add_command_subparser( subparsers, "cost", "sc-call", "Query cost of Smart Contract call transaction") cli_shared.add_proxy_arg(sub) cli_contracts._add_contract_arg(sub) cli_contracts._add_function_arg(sub) cli_contracts._add_arguments_arg(sub) sub.set_defaults( func=lambda args: get_transaction_cost(args, proxy.TxTypes.SC_CALL)) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "dns", "Operations related to the Domain Name Service") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser( subparsers, "dns", "register", "Send a register transaction to the appropriate DNS contract from given user and with given name" ) cli_shared.add_outfile_arg(sub) cli_shared.add_broadcast_args(sub, relay=True) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) sub.add_argument("--name", help="the name to register") sub.set_defaults(func=register) sub = cli_shared.add_command_subparser(subparsers, "dns", "resolve", "Find the address for a name") _add_name_arg(sub) cli_shared.add_proxy_arg(sub) sub.set_defaults(func=dns_resolve) sub = cli_shared.add_command_subparser( subparsers, "dns", "validate-name", "Asks one of the DNS contracts to validate a name. Can be useful before registering it." ) _add_name_arg(sub) sub.add_argument( "--shard-id", default=0, help="shard id of the contract to call (default: %(default)s)") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=dns_validate_name) sub = cli_shared.add_command_subparser( subparsers, "dns", "name-hash", "The hash of a name, as computed by a DNS smart contract") _add_name_arg(sub) sub.set_defaults(func=get_name_hash) sub = cli_shared.add_command_subparser( subparsers, "dns", "registration-cost", "Gets the registration cost from a DNS smart contract, by default the one with shard id 0." ) sub.add_argument( "--shard-id", default=0, help="shard id of the contract to call (default: %(default)s)") cli_shared.add_proxy_arg(sub) sub.set_defaults(func=get_registration_cost) sub = cli_shared.add_command_subparser( subparsers, "dns", "version", "Asks the contract for its version") sub.add_argument( "--shard-id", default=0, help="shard id of the contract to call (default: %(default)s)") sub.add_argument( "--all", action="store_true", default=False, help= "prints a list of all DNS contracts and their current versions (default: %(default)s)" ) cli_shared.add_proxy_arg(sub) sub.set_defaults(func=get_version) sub = cli_shared.add_command_subparser( subparsers, "dns", "dns-addresses", "Lists all 256 DNS contract addresses") sub.set_defaults(func=print_dns_addresses_table) sub = cli_shared.add_command_subparser( subparsers, "dns", "dns-address-for-name", "DNS contract address (bech32) that corresponds to a name") _add_name_arg(sub) sub.set_defaults(func=get_dns_address_for_name) sub = cli_shared.add_command_subparser( subparsers, "dns", "dns-address-for-name-hex", "DNS contract address (hex) that corresponds to a name") _add_name_arg(sub) sub.set_defaults(func=get_dns_address_for_name_hex) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "contract", "Build, deploy and interact with Smart Contracts") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser( subparsers, "contract", "new", "Create a new Smart Contract project based on a template.") sub.add_argument("name") sub.add_argument("--template", required=True, help="the template to use") sub.add_argument( "--directory", type=str, default=os.getcwd(), help= "🗀 the parent directory of the project (default: current directory)" ) sub.set_defaults(func=create) sub = cli_shared.add_command_subparser( subparsers, "contract", "templates", "List the available Smart Contract templates.") sub.set_defaults(func=list_templates) sub = cli_shared.add_command_subparser( subparsers, "contract", "build", "Build a Smart Contract project using the appropriate buildchain.") _add_project_arg(sub) sub.add_argument("--debug", action="store_true", default=False, help="set debug flag (default: %(default)s)") sub.add_argument( "--no-optimization", action="store_true", default=False, help="bypass optimizations (for clang) (default: %(default)s)") sub.add_argument("--cargo-target-dir", type=str, help="for rust projects, forward the parameter to Cargo") sub.add_argument( "--wasm-symbols", action="store_true", default=False, help= "for rust projects, does not strip the symbols from the wasm output. Useful for analysing the bytecode. Creates larger wasm files. Avoid in production (default: %(default)s)" ) sub.add_argument( "--wasm-name", type=str, help= "for rust projects, optionally specify the name of the wasm bytecode output file" ) sub.set_defaults(func=build) sub = cli_shared.add_command_subparser(subparsers, "contract", "clean", "Clean a Smart Contract project.") _add_project_arg(sub) sub.set_defaults(func=clean) sub = cli_shared.add_command_subparser(subparsers, "contract", "test", "Run Mandos tests.") _add_project_arg(sub) sub.add_argument( "--directory", default="mandos", help="🗀 the directory containing the tests (default: %(default)s)") sub.add_argument("--wildcard", required=False, help="wildcard to match only specific test files") sub.set_defaults(func=run_tests) sub = cli_shared.add_command_subparser(subparsers, "contract", "deploy", "Deploy a Smart Contract.") _add_project_or_bytecode_arg(sub) _add_metadata_arg(sub) cli_shared.add_outfile_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_arguments_arg(sub) cli_shared.add_broadcast_args(sub) sub.set_defaults(func=deploy) sub = cli_shared.add_command_subparser( subparsers, "contract", "call", "Interact with a Smart Contract (execute function).") _add_contract_arg(sub) cli_shared.add_outfile_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_function_arg(sub) _add_arguments_arg(sub) sub.add_argument( "--wait-result", action="store_true", default=False, help= "signal to wait for the transaction result - only valid if --send is set" ) sub.add_argument("--timeout", default=100, help="max num of seconds to wait for result" " - only valid if --wait-result is set") cli_shared.add_broadcast_args(sub, relay=True) sub.set_defaults(func=call) sub = cli_shared.add_command_subparser( subparsers, "contract", "upgrade", "Upgrade a previously-deployed Smart Contract") _add_contract_arg(sub) cli_shared.add_outfile_arg(sub) _add_project_or_bytecode_arg(sub) _add_metadata_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_arguments_arg(sub) cli_shared.add_broadcast_args(sub) sub.set_defaults(func=upgrade) sub = cli_shared.add_command_subparser( subparsers, "contract", "query", "Query a Smart Contract (call a pure function)") _add_contract_arg(sub) cli_shared.add_proxy_arg(sub) _add_function_arg(sub) _add_arguments_arg(sub) sub.set_defaults(func=query) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser(subparsers, "contract", "Build, deploy and interact with Smart Contracts") subparsers = parser.add_subparsers() sub = cli_shared.add_command_subparser(subparsers, "contract", "new", "Create a new Smart Contract project based on a template.") sub.add_argument("name") sub.add_argument("--template", required=True, help="the template to use") sub.add_argument("--directory", type=str, default=os.getcwd(), help="🗀 the parent directory of the project (default: current directory)") sub.set_defaults(func=create) sub = cli_shared.add_command_subparser(subparsers, "contract", "templates", "List the available Smart Contract templates.") sub.set_defaults(func=list_templates) sub = cli_shared.add_command_subparser(subparsers, "contract", "build", "Build a Smart Contract project using the appropriate buildchain.") _add_project_arg(sub) sub.add_argument("--debug", action="store_true", default=False, help="set debug flag (default: %(default)s)") sub.add_argument("--no-optimization", action="store_true", default=False, help="bypass optimizations (for clang) (default: %(default)s)") sub.set_defaults(func=build) sub = cli_shared.add_command_subparser(subparsers, "contract", "clean", "Clean a Smart Contract project.") _add_project_arg(sub) sub.set_defaults(func=clean) sub = cli_shared.add_command_subparser(subparsers, "contract", "test", "Run Mandos tests.") _add_project_arg(sub) sub.add_argument("--directory", default="mandos", help="🗀 the directory containing the tests (default: %(default)s)") sub.add_argument("--wildcard", required=False, help="wildcard to match only specific test files") sub.set_defaults(func=run_tests) sub = cli_shared.add_command_subparser(subparsers, "contract", "deploy", "Deploy a Smart Contract.") _add_project_or_bytecode_arg(sub) _add_metadata_arg(sub) cli_shared.add_outfile_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_arguments_arg(sub) cli_shared.add_broadcast_args(sub) sub.set_defaults(func=deploy) sub = cli_shared.add_command_subparser(subparsers, "contract", "call", "Interact with a Smart Contract (execute function).") _add_contract_arg(sub) cli_shared.add_outfile_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_function_arg(sub) _add_arguments_arg(sub) cli_shared.add_broadcast_args(sub) sub.set_defaults(func=call) sub = cli_shared.add_command_subparser(subparsers, "contract", "upgrade", "Upgrade a previously-deployed Smart Contract") _add_contract_arg(sub) cli_shared.add_outfile_arg(sub) _add_project_or_bytecode_arg(sub) _add_metadata_arg(sub) cli_shared.add_wallet_args(sub) cli_shared.add_proxy_arg(sub) cli_shared.add_tx_args(sub, with_receiver=False, with_data=False) _add_arguments_arg(sub) cli_shared.add_broadcast_args(sub) sub.set_defaults(func=upgrade) sub = cli_shared.add_command_subparser(subparsers, "contract", "query", "Query a Smart Contract (call a pure function)") _add_contract_arg(sub) cli_shared.add_proxy_arg(sub) _add_function_arg(sub) _add_arguments_arg(sub) sub.set_defaults(func=query) parser.epilog = cli_shared.build_group_epilog(subparsers) return subparsers
def setup_parser(subparsers: Any) -> Any: parser = cli_shared.add_group_subparser( subparsers, "staking-provider", "Create New Delegation Contract " "and some more staking-provider related " "options") subparsers = parser.add_subparsers() # create new delegation contract sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "create-new-delegation-contract", "Create a new delegation system smart contract, transferred value must be" "greater than baseIssuingCost + min deposit value") _add_common_arguments(sub) sub.add_argument("--total-delegation-cap", required=True, help="the total delegation contract capacity") sub.add_argument("--service-fee", required=True, help="the delegation contract service fee") sub.set_defaults(func=do_create_delegation_contract) # get contract address sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "get-contract-address", "Get create contract address by transaction hash") sub.add_argument("--create-tx-hash", required=True, help="the hash") sub.add_argument("--sender", required=False, help="the sender address") cli_shared.add_proxy_arg(sub) cli_shared.add_omit_fields_arg(sub) sub.set_defaults(func=get_contract_address_by_deploy_tx_hash) # add a new node sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "add-nodes", "Add new nodes must be called by the contract owner") sub.add_argument("--validators-file", required=True, help="a JSON file describing the Nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=add_new_nodes) # remove nodes sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "remove-nodes", "Remove nodes must be called by the contract owner") sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=remove_nodes) # stake nodes sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "stake-nodes", "Stake nodes must be called by the contract owner") sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=stake_nodes) # unbond nodes sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "unbond-nodes", "Unbond nodes must be called by the contract owner") sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=unbond_nodes) # unstake nodes sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "unstake-nodes", "Unstake nodes must be called by the contract owner") sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=unstake_nodes) # unjail nodes sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "unjail-nodes", "Unjail nodes must be called by the contract owner") sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=unjail_nodes) # change service fee sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "change-service-fee", "Change service fee must be called by the contract owner") sub.add_argument("--service-fee", required=True, help="new service fee value") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=change_service_fee) # modify total delegation cap sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "modify-delegation-cap", "Modify delegation cap must be called by the contract owner") sub.add_argument("--delegation-cap", required=True, help="new delegation contract capacity") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=modify_delegation_cap) # set automatic activation sub = cli_shared.add_command_subparser( subparsers, "staking-provider", "automatic-activation", "Automatic activation must be called by the contract owner") sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present("--unset", sys.argv)), help="set automatic activation True") sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present("--set", sys.argv)), help="set automatic activation False") sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract") _add_common_arguments(sub) sub.set_defaults(func=automatic_activation)