Smart Contracts API Reference
The Contract module provides tools for interacting with Midnight Compact smart contracts, including ABI parsing and state management.
Compact Contract
noxipher.contract.compact
Compact smart contract interface.
Compact language
- TypeScript-like syntax
- Compiled by
compact compile→ ZK circuits + ABI JSON - compactc examples/counter/counter.compact --output-dir /tmp/out
CompactContract
Compiled Compact contract ready for deployment/interaction. Wraps contract ABI + ZK circuit files.
Source code in src/noxipher/contract/compact.py
abi
property
Contract ABI.
name
property
Contract name.
from_directory(circuit_dir)
classmethod
Load contract from compactc output directory.
Expected files
Source code in src/noxipher/contract/compact.py
get_circuit_path(circuit_id)
Get path to circuit file.
Source code in src/noxipher/contract/compact.py
ContractABI
Bases: BaseModel
Compact contract ABI — parsed from
⚠️ Schema needs verification from compactc output.
Source code in src/noxipher/contract/compact.py
from_json_file(path)
classmethod
Load ABI from compactc output JSON file.
Source code in src/noxipher/contract/compact.py
ContractEntryPoint
Bases: BaseModel
Contract entry point (function).
Source code in src/noxipher/contract/compact.py
Contract Instance
noxipher.contract.instance
ContractInstance — deployed contract interaction.
ContractInstance
Deployed contract on Midnight network. Allows calling contract entry points.
Source code in src/noxipher/contract/instance.py
address
property
Contract address.
call(entry_point, args=None, wallet=None)
async
Call contract entry point.
Impure calls → create transaction (requires wallet). Pure calls → query state (no wallet needed).
Source code in src/noxipher/contract/instance.py
Contract Service
noxipher.contract.service
ContractService — deploy and manage Compact contracts.
ContractService
Service for deploying and interacting with Compact contracts.
Source code in src/noxipher/contract/service.py
at_address(address, contract)
Create ContractInstance for an already-deployed contract.
deploy(contract, wallet, initial_state=None)
async
Deploy a contract to the network.
Returns: ContractInstance with deployed address.