Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "testnet", "Set up, start and control local testnets")
    subparsers = parser.add_subparsers()

    help_config_file = "An optional configuration file describing the testnet"

    # Prerequisites
    sub = cli_shared.add_command_subparser(
        subparsers, "testnet", "prerequisites",
        "Download and verify the prerequisites for running a testnet")
    sub.add_argument("--configfile",
                     type=str,
                     required=False,
                     default=None,
                     help=help_config_file)
    sub.set_defaults(func=testnet_prerequisites)

    # Start
    sub = cli_shared.add_command_subparser(subparsers, "testnet", "start",
                                           "Start a testnet")
    sub.add_argument("--configfile",
                     type=str,
                     required=False,
                     default=None,
                     help=help_config_file)
    sub.set_defaults(func=testnet_start)

    # Stop
    sub = cli_shared.add_command_subparser(subparsers, "testnet", "stop",
                                           "Stop a running testnet")
    sub.add_argument("--configfile",
                     type=str,
                     required=False,
                     default=None,
                     help=help_config_file)
    sub.set_defaults(func=testnet_stop)

    # Config
    sub = cli_shared.add_command_subparser(
        subparsers, "testnet", "config",
        "Configure a testnet (required before starting it the first time or after clean)"
    )
    sub.add_argument("--configfile",
                     type=str,
                     required=False,
                     default=None,
                     help=help_config_file)
    sub.set_defaults(func=testnet_config)

    # Clean
    sub = cli_shared.add_command_subparser(
        subparsers, "testnet", "clean",
        "Erase the currently configured testnet (must be already stopped)")
    sub.add_argument("--configfile",
                     type=str,
                     required=False,
                     default=None,
                     help=help_config_file)
    sub.set_defaults(func=testnet_clean)
Ejemplo n.º 5
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "blockatlas", "Interact with an Block Atlas instance")
    subparsers = parser.add_subparsers()

    parser.add_argument("--url",
                        required=True,
                        help="🖧 URL of Block Atlas instance")
    parser.add_argument("--coin",
                        required=True,
                        help="coin identifier (e.g. erd, bnb)")

    sub = cli_shared.add_command_subparser(
        subparsers, "blockatlas", "current-block-number",
        "Get latest notarized metablock (number / nonce)")
    sub.set_defaults(func=blockatlas_get_current_block_number)

    sub = cli_shared.add_command_subparser(subparsers, "blockatlas",
                                           "block-by-number",
                                           "Get block by number (nonce)")
    sub.add_argument("--number", required=True, help="the number (nonce)")
    sub.set_defaults(func=blockatlas_get_block_by_number)

    sub = cli_shared.add_command_subparser(subparsers, "blockatlas",
                                           "transactions",
                                           "Get transactions by address")
    sub.add_argument("--address",
                     required=True,
                     help="🖄 the address to query")
    cli_shared.add_outfile_arg(sub)
    sub.set_defaults(func=blockatlas_get_txs_by_address)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 6
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "deps", "Manage dependencies or elrond-sdk modules")
    subparsers = parser.add_subparsers()

    choices = list(get_deps_dict().keys())

    sub = cli_shared.add_command_subparser(
        subparsers, "deps", "install",
        "Install dependencies or elrond-sdk modules.")
    sub.add_argument("name", choices=choices, help="the dependency to install")
    sub.add_argument("--overwrite",
                     action="store_true",
                     default=False,
                     help="whether to overwrite an existing installation")
    sub.add_argument("--tag", help="the tag or version to install")
    sub.set_defaults(func=install)

    sub = cli_shared.add_command_subparser(
        subparsers, "deps", "check",
        "Check whether a dependency is installed.")
    sub.add_argument("name", choices=choices, help="the dependency to check")
    sub.add_argument("--tag", help="the tag or version to check")
    sub.set_defaults(func=check)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 7
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers,
        "wallet",
        "Derive private key from mnemonic, bech32 address helpers etc."
    )
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(
        subparsers,
        "wallet",
        "derive",
        "Derive a PEM file from a mnemonic or generate a new PEM file (for tests only!)"
    )
    sub.add_argument("pem",
                     help="path of the output PEM file")
    sub.add_argument("--mnemonic", action="store_true",
                     help="whether to derive from an existing mnemonic")
    sub.add_argument("--index",
                     help="the account index", type=int, default=0)
    sub.set_defaults(func=generate_pem)

    sub = cli_shared.add_command_subparser(
        subparsers,
        "wallet",
        "bech32",
        "Helper for encoding and decoding bech32 addresses"
    )
    sub.add_argument("value",
                     help="the value to encode or decode")
    group = sub.add_mutually_exclusive_group(required=True)
    group.add_argument("--encode", action="store_true",
                       help="whether to encode")
    group.add_argument("--decode", action="store_true",
                       help="whether to decode")
    sub.set_defaults(func=do_bech32)

    sub = cli_shared.add_command_subparser(
        subparsers,
        "wallet",
        "pem-address",
        "Get the public address out of a PEM file as bech32"
    )
    sub.add_argument("pem", help="path to the PEM file")
    sub.add_argument("--pem-index", default=0, help="🔑 the index in the PEM file (default: %(default)s)")
    sub.set_defaults(func=pem_address)

    sub = cli_shared.add_command_subparser(
        subparsers,
        "wallet",
        "pem-address-hex",
        "Get the public address out of a PEM file as hex"
    )
    sub.add_argument("pem", help="path to the PEM file")
    sub.add_argument("--pem-index", default=0, help="🔑 the index in the PEM file (default: %(default)s)")
    sub.set_defaults(func=pem_address_hex)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "config", "Configure elrond-sdk (default values etc.)")
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(subparsers, "config", "dump",
                                           "Dumps configuration.")
    sub.set_defaults(func=dump)

    sub = cli_shared.add_command_subparser(subparsers, "config", "get",
                                           "Gets a configuration value.")
    _add_name_arg(sub)
    sub.set_defaults(func=get_value)

    sub = cli_shared.add_command_subparser(subparsers, "config", "set",
                                           "Sets a configuration value.")
    _add_name_arg(sub)
    sub.add_argument("value", help="the new value")
    sub.set_defaults(func=set_value)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(subparsers, "data", "Data manipulation omnitool")
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(subparsers, "data", "parse", "Parses values from a given file")
    sub.add_argument("--file", required=True, help="path of the file to parse")
    sub.add_argument("--expression", required=True, help="the Python-Dictionary expression to evaluate in order to extract the data")
    sub.set_defaults(func=parse)

    sub = cli_shared.add_command_subparser(subparsers, "data", "store", "Stores a key-value pair within a partition")
    sub.add_argument("--key", required=True, help="the key")
    sub.add_argument("--value", required=True, help="the value to save")
    sub.add_argument("--partition", default="*", help="the storage partition (default: %(default)s)")
    sub.add_argument("--use-global", action="store_true", default=False, help="use the global storage (default: %(default)s)")
    sub.set_defaults(func=store)

    sub = cli_shared.add_command_subparser(subparsers, "data", "load", "Loads a key-value pair from a storage partition")
    sub.add_argument("--key", required=True, help="the key")
    sub.add_argument("--partition", default="*", help="the storage partition (default: %(default)s)")
    sub.add_argument("--use-global", action="store_true", default=False, help="use the global storage (default: %(default)s)")
    sub.set_defaults(func=load)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 13
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "validator", "Stake, Unjail and other actions useful for "
        "Validators")
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(subparsers, "validator", "stake",
                                           "Stake value into the Network")
    _add_common_arguments(sub)
    sub.add_argument("--reward-address", default="", help="the reward address")
    sub.add_argument("--validators-file",
                     required=True,
                     help="a JSON file describing the Nodes")
    sub.set_defaults(func=do_stake)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unstake",
                                           "Unstake value")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unstake)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unjail",
                                           "Unjail a Validator Node")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unjail)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unbond",
                                           "Unbond")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unbond)

    sub = cli_shared.add_command_subparser(subparsers, "validator",
                                           "change-reward-address",
                                           "Change the reward address")
    _add_common_arguments(sub)
    sub.add_argument("--reward-address",
                     required=True,
                     help="the new reward address")
    sub.set_defaults(func=change_reward_address)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "claim",
                                           "Claim rewards")
    _add_common_arguments(sub)
    sub.set_defaults(func=do_claim)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 14
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(
        subparsers, "config", "Configure elrond-sdk (default values etc.)")
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(subparsers, "config", "dump",
                                           "Dumps configuration.")
    sub.set_defaults(func=dump)

    sub = cli_shared.add_command_subparser(subparsers, "config", "get",
                                           "Gets a configuration value.")
    _add_name_arg(sub)
    sub.set_defaults(func=get_value)

    sub = cli_shared.add_command_subparser(subparsers, "config", "set",
                                           "Sets a configuration value.")
    _add_name_arg(sub)
    sub.add_argument("value", help="the new value")
    sub.set_defaults(func=set_value)

    sub = cli_shared.add_command_subparser(subparsers, "config", "new",
                                           "Creates a new configuration.")
    _add_name_arg(sub)
    sub.add_argument("--template",
                     required=False,
                     help="template from which to create the new config")
    sub.set_defaults(func=new_config)

    sub = cli_shared.add_command_subparser(subparsers, "config", "switch",
                                           "Switch to a different config")
    _add_name_arg(sub)
    sub.set_defaults(func=switch_config)

    sub = cli_shared.add_command_subparser(subparsers, "config", "list",
                                           "List available configs")
    sub.set_defaults(func=list_configs)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
def setup_parser(subparsers: Any) -> Any:
    parser = cli_shared.add_group_subparser(subparsers, "validator", "Stake, UnStake, UnBond, Unjail and other "
                                                                     "actions useful for "
                                                                     "Validators")
    subparsers = parser.add_subparsers()

    sub = cli_shared.add_command_subparser(subparsers, "validator", "stake", "Stake value into the Network")
    _add_common_arguments(sub)
    sub.add_argument("--reward-address", default="", help="the reward address")
    sub.add_argument("--validators-file", required=not (utils.is_arg_present("--top-up", sys.argv)),
                     help="a JSON file describing the Nodes")
    sub.add_argument("--top-up", action="store_true", default=False,
                     required=not (utils.is_arg_present("--validators-file", sys.argv)), help="Stake value for top up")
    sub.set_defaults(func=do_stake)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unstake", "Unstake value")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unstake)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unjail", "Unjail a Validator Node")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unjail)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unbond", "Unbond tokens for a bls key")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unbond)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "change-reward-address",
                                           "Change the reward address")
    _add_common_arguments(sub)
    sub.add_argument("--reward-address", required=True, help="the new reward address")
    sub.set_defaults(func=change_reward_address)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "claim", "Claim rewards")
    _add_common_arguments(sub)
    sub.set_defaults(func=do_claim)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unstake-nodes", "Unstake-nodes will unstake "
                                                                                     "nodes for provided bls keys")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unstake_nodes)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unstake-tokens", "This command will un-stake the "
                                                                                      "given amount (if value is "
                                                                                      "greater than the existing "
                                                                                      "topUp value, it will unStake "
                                                                                      "one or several nodes)")
    _add_common_arguments(sub)
    sub.add_argument("--unstake-value", default=0, help="the unstake value")
    sub.set_defaults(func=do_unstake_tokens)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unbond-nodes", "It will unBond nodes")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_unbond_nodes)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "unbond-tokens", "It will unBond tokens, if "
                                                                                     "provided value is bigger that "
                                                                                     "topUp value will unBond nodes")
    _add_common_arguments(sub)
    sub.add_argument("--unbond-value", default=0, help="the unbond value")
    sub.set_defaults(func=do_unbond_tokens)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "clean-registered-data", "Deletes duplicated keys "
                                                                                             "from registered data")
    _add_common_arguments(sub)
    sub.set_defaults(func=do_clean_registered_data)

    sub = cli_shared.add_command_subparser(subparsers, "validator", "restake-unstaked-nodes", "It will reStake UnStaked nodes")
    _add_common_arguments(sub)
    _add_nodes_arg(sub)
    sub.set_defaults(func=do_restake_unstaked_nodes)

    parser.epilog = cli_shared.build_group_epilog(subparsers)
    return subparsers
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
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)