Skip to main content

aleo-contract-abi-generator

Generates a JSON ABI from deployed Aleo bytecode, and checks one ABI against another for compatibility. Rust bindings around Leo's ABI generation with full snarkVM validation — a program that does not validate does not get an ABI. Everything runs locally; nothing touches the network.

The distribution is aleo-contract-abi-generator; the import module is aleo_abi.

import aleo_abi

abi_json = aleo_abi.generate_abi("simple.aleo", bytecode, "testnet", None)
violations = aleo_abi.check_compatibility(candidate_json, standard_json)

Install

pip install aleo-contract-abi-generator

Most callers want the friendlier hook in the main SDK instead — aleo.abi.generate_abi accepts a Program object or a raw bytecode string, infers the program name, and returns a dict:

from aleo import abi
from aleo.mainnet import Program

result = abi.generate_abi(Program.credits())
result["program"]        # "credits.aleo"

The hook imports this package lazily and raises ImportError with the install command if it is absent — the main SDK does not depend on it.

Generating an ABI

generate_abi(program_name, bytecode, network, imports) returns a pretty-printed JSON string describing the program: its structs, records, mappings, and functions, each field carrying a structured type ({"Primitive": {"Int": "I32"}}, record ownership, visibility).

snarkVM validation is contextual: a program that declares imports is rejected unless those imports are supplied. Pass them as (program_id, bytecode) pairs in topological order — dependencies before dependents:

abi_json = aleo_abi.generate_abi(
    "shield_swap.aleo", amm_bytecode, "testnet",
    [("shield_swap_multisig_core.aleo", multisig_bytecode),
     ("shield_swap_freezelist.aleo", freezelist_bytecode)],
)

network is "mainnet", "testnet", or "canary" — it selects the validation rules, not a connection.

Checking compatibility

check_compatibility(candidate_abi_json, standard_abi_json) returns a list of violation strings — empty means the candidate satisfies the standard. Use it to pin a deployed contract's surface and fail your CI when the deployment drifts, instead of your consumers:

violations = aleo_abi.check_compatibility(deployed_abi, pinned_abi)
assert not violations, "\n".join(violations)

This is how shield-swap-sdk's live drift test guards its committed bindings (codegen/regen-abi.sh regenerates the pin from the deployed program).

Downstream: generated Python bindings

The ABI JSON is the input format for the main SDK's aleo.codegen, which emits typed dataclasses and entrypoint stubs from it:

python -m aleo.codegen --abi shield_swap.abi.json --out _generated.py

Tests

cd sdk-abi && python -m pytest python/tests -v   # hermetic — no network

Fixtures and expected ABIs are vendored from Leo's own test suite, so the output shape is pinned to upstream.

Metadata

Release files for aleo-contract-abi-generator 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aleo-contract-abi-generator 0.5.1
File Size Uploaded
aleo_contract_abi_generator-0.5.1.tar.gz 32.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for aleo-contract-abi-generator 0.5.1
File
aleo_contract_abi_generator-0.5.1-cp37-abi3-win_amd64.whl CPython 3.7 abi3 Windows x86-64 Details
aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_x86_64.whl CPython 3.7 abi3 Linux glibc 2.28+ x86-64 Details
aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_aarch64.whl CPython 3.7 abi3 Linux glibc 2.28+ ARM64 Details
aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_11_0_arm64.whl CPython 3.7 abi3 macOS 11.0+ ARM64 Details
aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_10_12_x86_64.whl CPython 3.7 abi3 macOS 10.12+ x86-64 Details

Total release size: 12.5 MB

Release files / aleo_contract_abi_generator-0.5.1.tar.gz

Download URL aleo_contract_abi_generator-0.5.1.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9d9ad03427f2c179efba800571b8700d4c4db475bd6f74c691777c9500ea7dc8
BLAKE2b-256 checksum
How to use checksums
cad26e62a558095b691fc8e5f90a80ba87d44ee770a6f0adc38f87e983f701ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / aleo_contract_abi_generator-0.5.1-cp37-abi3-win_amd64.whl

Download URL aleo_contract_abi_generator-0.5.1-cp37-abi3-win_amd64.whl
Size 2.2 MB
Tags CPython 3.7 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
723206fe690223cf1a13e2cfc283fba4feca37b7992617238d08e4846dc432fb
BLAKE2b-256 checksum
How to use checksums
383bb4e79ced0f0abb84e5455a84aa34881ba621e87ddbd516064a001ccee70f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_x86_64.whl

Download URL aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_x86_64.whl
Size 2.6 MB
Tags CPython 3.7 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
2c375f5dcc27aa75a6d1f6beb6939819117f2444f4910a6ff7bf4278a8761084
BLAKE2b-256 checksum
How to use checksums
b9b6978ac335de9579e8f3efcb3e9a1f812c12df98e27ed5993e81a8271a901c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_aarch64.whl

Download URL aleo_contract_abi_generator-0.5.1-cp37-abi3-manylinux_2_28_aarch64.whl
Size 2.7 MB
Tags CPython 3.7 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
3171241efd7d1c7fbdab82d5631474ebbfaa6bb76d79cba27c4a852931f03332
BLAKE2b-256 checksum
How to use checksums
8a100b5bcb844aa7784ba74c2fddd7816fa41bf76a1d103351eb5c7525368011
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_11_0_arm64.whl

Download URL aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_11_0_arm64.whl
Size 2.4 MB
Tags CPython 3.7 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c122a6e5bd77c03ee2d561e44d5031fcf98e7afec31dfa98580ff9f6869997be
BLAKE2b-256 checksum
How to use checksums
992c4f6a78d3c13e4a8733e26d5cef7db27d3778a18b5e7063a8363590db3c46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_10_12_x86_64.whl

Download URL aleo_contract_abi_generator-0.5.1-cp37-abi3-macosx_10_12_x86_64.whl
Size 2.5 MB
Tags CPython 3.7 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
4081e3fd688e1a3ccce02a7ffcdf47154de30ee93f79db13f78a95e92f6a7a50
BLAKE2b-256 checksum
How to use checksums
d3c4e9f405c283820df1ff7f2e9e81a32eb838ec2b47feb378deb1a92dcf4d1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.1 This release

6 release files

0.5.0

6 release files

0.4.0

6 release files

0.3.0

6 release files

0.2.2

6 release files

0.2.1

6 release files

0.2.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page