Files
aitbc/cli/parsers/contract.py
aitbc b2aa977197 feat: implement contract CLI commands for smart contract operations
- 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
2026-05-04 12:37:03 +02:00

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)