Xian Network Python Contracting Engine
Project description
xian-contracting
xian-contracting is the contract compiler, artifact builder, local test
harness, and standard-library bridge for Xian. Network execution is defined by
the Xian VM (xian_vm_v1).
The published PyPI package is xian-tech-contracting. The import package
remains contracting. Side packages under packages/ (deterministic runtime
types, accounts, fast-path validator, VM crates, zk tooling)
are released independently and consumed by xian-abci, xian-py, and the
node runtime.
Package Shape
flowchart LR
Source["Authored contract source"] --> Compiler["Compiler and linter"]
Compiler --> Artifact["Deployment artifacts"]
Artifact --> VM["xian_vm_v1 execution target"]
Artifact --> Executor["Local harness"]
Executor --> Storage["Deterministic storage"]
Executor --> Stdlib["Stdlib bridge"]
Executor --> Events["LogEvent output"]
Packages["Side packages"] --> VM
Packages --> ZK["xian-zk"]
Quick Start
Install the package:
uv add xian-tech-contracting
Optional zk helpers are kept off the default install:
uv add 'xian-tech-contracting[zk]'
Compile deployment artifacts:
from contracting.artifacts import build_contract_artifacts
artifacts = build_contract_artifacts(
module_name="con_token",
source=contract_source,
)
Run a contract in the local harness:
from contracting.local import ContractingClient
client = ContractingClient()
client.submit(name="con_token", code=contract_source)
token = client.get_contract_proxy("con_token")
token.transfer(amount=100, to="bob")
Use the storage driver directly:
from contracting.storage.driver import Driver
driver = Driver()
driver.set("example.key", "value")
print(driver.get("example.key"))
Principles
- Contracts use Python syntax, but are not general Python. Execution rules are consensus-sensitive and intentionally narrower than the host language.
- Consensus parity comes first. Metering, storage encoding, import restrictions, and runtime helpers must stay version-aligned across all validators.
- The Xian VM is the execution target. The local harness is for contract tests and developer ergonomics; the deployable artifact is source plus Xian VM IR.
- Compiler and harness stay distinct. SDKs and CLI deployment flows consume deployment artifacts. The local harness may derive transient proxies for testing, but those are not chain artifacts.
- Stay scoped. Built-in helpers serve the execution model. They do not grow into a general convenience framework.
- No node orchestration here. Operator workflow, genesis distribution, and
container lifecycle belong in
xian-abci,xian-cli, andxian-stack. - Security-sensitive. Favor small, well-tested changes. If a fix changes execution semantics, add regression tests in the same change.
Key Directories
src/contracting/— compiler, artifacts, local harness, storage, and stdlib bridge.artifacts/— public deployment artifact builder and validator.compilation/— parser, compiler, linter, and whitelist logic.compiler/— public compiler import surface.execution/— runtime, executor, module loading, and tracing.local/— high-levelContractingClientfor local tests and tooling.storage/— drivers, ORM helpers, encoder, and LMDB-backed state.contracts/— package-local contract assets (e.g. the built-in submission contract).stdlib/— contract-side standard-library bridge.
packages/— independently released sibling packages:xian-accounts,xian-compiler-core,xian-contract-tools,xian-fastpath-core,xian-runtime-types,xian-vm-core,xian-zk.scripts/— audit and fixture-generation tools used by VM/runtime work.tests/—unit/,integration/,security/,performance/coverage.examples/— notebook walk-throughs and a non-Jupyter validation script.docs/— architecture, backlog, current-state notes, and active design drafts.
What This Runtime Covers
- compilation and linting of contract source
- local harness execution, metering, and import restrictions
- storage drivers and encoding
- contract-side runtime helpers (
stdlibbridge) - speculative parallel batch execution primitives
- native zero-knowledge verifier building blocks
- Xian VM IR generation, validation, parity fixtures, and early native VM work
Validation
Default CI path (pure-Python, no Rust extensions):
uv sync --group dev
uv run ruff check .
uv run ruff format --check .
uv run pytest --cov=contracting --cov-report=term-missing --cov-report=xml
The default pytest config deselects tests marked optional_native; those
tests require heavier Rust extension packages beyond the required compiler
core.
Native / release CI path:
./scripts/validate-release.sh
validate-release.sh runs the default suite plus compiler-core, zk, and VM
checks, the WASM compiler package build, optional-native parity and fuzz
coverage, and the Rust-side package checks used by release CI. It is the gate
for tagging a release.
If you change metering, tracing, storage encoding, or import restrictions,
treat the change as consensus-sensitive and run the relevant tests/security/
and tests/integration/ paths explicitly.
Related Docs
- AGENTS.md — repo-specific guidance for AI agents and contributors
- docs/README.md — index of internal design notes
- docs/ARCHITECTURE.md — major components and dependency direction
- docs/BACKLOG.md — open work and follow-ups
- docs/COMPILER_RELEASE.md — compiler package validation and publish order
- docs/SAFETY_INVARIANTS.md — invariants the runtime must preserve
- docs/PARALLEL_EXECUTION.md — speculative parallel batch execution model
- docs/COMPILE_TIME_EXTENDS.md — contract import / extends model
- docs/EXECUTION_BACKLOG.md — execution-engine follow-ups
- docs/SHIELDED_STATE_REDESIGN_V2.md — shielded-state model
- docs/ZK_PRIVACY_OPTIMIZATION_PLAN.md — zk privacy roadmap
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xian_tech_contracting-1.0.9.tar.gz.
File metadata
- Download URL: xian_tech_contracting-1.0.9.tar.gz
- Upload date:
- Size: 83.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a69661cdf26433bf2e51c61718cd753d7f19ea8faa6a43ba77ed59972d5eaf5b
|
|
| MD5 |
5efe9104644059d8acc3875b6036be12
|
|
| BLAKE2b-256 |
927176f71840947f4ef9ba9996c459246f3eaf48d9261ac828b8c71ba2269fdc
|
Provenance
The following attestation bundles were made for xian_tech_contracting-1.0.9.tar.gz:
Publisher:
release.yml on xian-technology/xian-contracting
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xian_tech_contracting-1.0.9.tar.gz -
Subject digest:
a69661cdf26433bf2e51c61718cd753d7f19ea8faa6a43ba77ed59972d5eaf5b - Sigstore transparency entry: 1675590357
- Sigstore integration time:
-
Permalink:
xian-technology/xian-contracting@d3b6b60155a46596df68ee12ee47dc0dedf5a257 -
Branch / Tag:
refs/tags/contracting-v1.0.9 - Owner: https://github.com/xian-technology
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d3b6b60155a46596df68ee12ee47dc0dedf5a257 -
Trigger Event:
push
-
Statement type:
File details
Details for the file xian_tech_contracting-1.0.9-py3-none-any.whl.
File metadata
- Download URL: xian_tech_contracting-1.0.9-py3-none-any.whl
- Upload date:
- Size: 95.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2fde0c65e9fbb8ef4e2717913026ea08ea9e386308f2dc35bf354781abc0a00
|
|
| MD5 |
a087eb5a696ad19719ace1ab7afb86be
|
|
| BLAKE2b-256 |
c480f33acdc00d036dd0089dfc596b322e65a80a9eac9a102f30d304708dcda2
|
Provenance
The following attestation bundles were made for xian_tech_contracting-1.0.9-py3-none-any.whl:
Publisher:
release.yml on xian-technology/xian-contracting
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xian_tech_contracting-1.0.9-py3-none-any.whl -
Subject digest:
c2fde0c65e9fbb8ef4e2717913026ea08ea9e386308f2dc35bf354781abc0a00 - Sigstore transparency entry: 1675590374
- Sigstore integration time:
-
Permalink:
xian-technology/xian-contracting@d3b6b60155a46596df68ee12ee47dc0dedf5a257 -
Branch / Tag:
refs/tags/contracting-v1.0.9 - Owner: https://github.com/xian-technology
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d3b6b60155a46596df68ee12ee47dc0dedf5a257 -
Trigger Event:
push
-
Statement type: