- Add contract CLI handlers (list, deploy, call, verify) in cli/handlers/contract.py - Register contract parser in cli/parsers/contract.py - Add contract command handlers to unified_cli.py - Add RPC endpoints for contract operations in blockchain RPC router - Update Stage 2 training script to use correct contract CLI syntax - Contract commands now work without warnings in Stage 2 training Contract operations: - contract list: List deployed contracts - contract deploy: Deploy new smart contract (supports zk-verifier type) - contract call: Call contract method - contract verify: Verify ZK proof against contract
41 lines
2.6 KiB
Python
41 lines
2.6 KiB
Python
"""Contract command registration for the unified CLI."""
|
|
|
|
import argparse
|
|
|
|
from parser_context import ParserContext
|
|
|
|
|
|
def register(subparsers: argparse._SubParsersAction, ctx: ParserContext) -> None:
|
|
contract_parser = subparsers.add_parser("contract", help="Smart contract operations")
|
|
contract_parser.set_defaults(handler=lambda parsed, parser=contract_parser: parser.print_help())
|
|
contract_subparsers = contract_parser.add_subparsers(dest="contract_action")
|
|
|
|
contract_list_parser = contract_subparsers.add_parser("list", help="List deployed contracts")
|
|
contract_list_parser.add_argument("--rpc-url", default=ctx.default_rpc_url)
|
|
contract_list_parser.set_defaults(handler=ctx.handle_contract_list)
|
|
|
|
contract_deploy_parser = contract_subparsers.add_parser("deploy", help="Deploy a smart contract")
|
|
contract_deploy_parser.add_argument("--name", required=True, help="Contract name")
|
|
contract_deploy_parser.add_argument("--type", default="zk-verifier", help="Contract type (default: zk-verifier)")
|
|
contract_deploy_parser.add_argument("--password", help="Wallet password")
|
|
contract_deploy_parser.add_argument("--password-file", help="Wallet password file")
|
|
contract_deploy_parser.add_argument("--rpc-url", default=ctx.default_rpc_url)
|
|
contract_deploy_parser.set_defaults(handler=ctx.handle_contract_deploy)
|
|
|
|
contract_call_parser = contract_subparsers.add_parser("call", help="Call a contract method")
|
|
contract_call_parser.add_argument("--address", required=True, help="Contract address")
|
|
contract_call_parser.add_argument("--method", required=True, help="Method name")
|
|
contract_call_parser.add_argument("--params", help="Method parameters (JSON)")
|
|
contract_call_parser.add_argument("--password", help="Wallet password")
|
|
contract_call_parser.add_argument("--password-file", help="Wallet password file")
|
|
contract_call_parser.add_argument("--rpc-url", default=ctx.default_rpc_url)
|
|
contract_call_parser.set_defaults(handler=ctx.handle_contract_call)
|
|
|
|
contract_verify_parser = contract_subparsers.add_parser("verify", help="Verify a ZK proof against a contract")
|
|
contract_verify_parser.add_argument("--address", required=True, help="Contract address")
|
|
contract_verify_parser.add_argument("--proof-file", help="Proof data file (JSON)")
|
|
contract_verify_parser.add_argument("--password", help="Wallet password")
|
|
contract_verify_parser.add_argument("--password-file", help="Wallet password file")
|
|
contract_verify_parser.add_argument("--rpc-url", default=ctx.default_rpc_url)
|
|
contract_verify_parser.set_defaults(handler=ctx.handle_contract_verify)
|