Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
013408b
build: bump snarkvm to 4.7.3, add mainnet/testnet feature seam
iamalwaysuncomfortable Jul 8, 2026
21d3db6
feat: drop coinbase/puzzle module (removed in snarkvm 4.x)
iamalwaysuncomfortable Jul 8, 2026
e515bb5
feat: cfg-select network in types.rs, migrate aliases to snarkvm 4.7.…
iamalwaysuncomfortable Jul 8, 2026
9c286d7
fix: cfg-gate network imports to keep both builds warning-free
iamalwaysuncomfortable Jul 8, 2026
12b4fb2
feat: two-build pymodule (_aleolib_mainnet/_testnet), drop coinbase c…
iamalwaysuncomfortable Jul 8, 2026
b6aa37e
feat: port algebra module to snarkvm 4.7.3
iamalwaysuncomfortable Jul 8, 2026
ba14103
feat: port credits and network modules to snarkvm 4.7.3
iamalwaysuncomfortable Jul 8, 2026
5f228ef
fix: drop Network.edition() — EDITION removed from snarkvm 4.x Networ…
iamalwaysuncomfortable Jul 8, 2026
79fbac8
feat: port account module to snarkvm 4.7.3 (record version, property …
iamalwaysuncomfortable Jul 8, 2026
bdcecdb
feat: port programs value/key/program/transaction types to snarkvm 4.7.3
iamalwaysuncomfortable Jul 8, 2026
0bf686e
feat: port process/trace/query/fee to snarkvm 4.7.3 fee+cost+proving …
iamalwaysuncomfortable Jul 8, 2026
35ce0e8
feat: expose aleo.mainnet re-export over _aleolib_mainnet
iamalwaysuncomfortable Jul 8, 2026
22ee01f
test: vendor TS-SDK known-answer vectors + pytest scaffolding
iamalwaysuncomfortable Jul 8, 2026
b8104cf
test: account key-derivation and sign/verify KATs
iamalwaysuncomfortable Jul 8, 2026
2f5701e
test: record decrypt KAT (version-aware Record)
iamalwaysuncomfortable Jul 8, 2026
00d3a36
test: algebra round-trip and arithmetic KATs
iamalwaysuncomfortable Jul 8, 2026
7da12e4
test: programs parse + authorize smoke tests
iamalwaysuncomfortable Jul 8, 2026
ccac109
ci: run pytest suite; drop legacy test.py; retarget type stubs
iamalwaysuncomfortable Jul 8, 2026
325e6bc
refactor: anti-viem audit — properties, dunders, explicit random()
iamalwaysuncomfortable Jul 8, 2026
01a44a5
docs: update usage for aleo.mainnet + snarkvm 4.7.3
iamalwaysuncomfortable Jul 8, 2026
3ae5ac1
fix: repair Encryptor property access, correct execution_cost stubs, …
iamalwaysuncomfortable Jul 8, 2026
b11ec13
test: make wrong-secret encryptor test fail on unexpected exception t…
iamalwaysuncomfortable Jul 8, 2026
cec9007
build: upgrade snarkvm to git tag v4.8.1
iamalwaysuncomfortable Jul 8, 2026
c81073c
test: cover execute/prove/verify, fee authorization, cost, transactio…
iamalwaysuncomfortable Jul 8, 2026
97d63a0
fix: prove_execution takes a locator string, matching native API and …
iamalwaysuncomfortable Jul 8, 2026
be568bd
ci: parallel GitHub Actions test workflow; drop unused openssl depend…
iamalwaysuncomfortable Jul 8, 2026
7196d4d
style: cargo fmt
iamalwaysuncomfortable Jul 8, 2026
5acd697
ci: scope pyright to the shipped package, exclude tests/venv/build dirs
iamalwaysuncomfortable Jul 8, 2026
fd7d648
ci: remove CircleCI (superseded by GitHub Actions test workflow)
iamalwaysuncomfortable Jul 8, 2026
c3e37de
ci: rebuild wheels pipeline — modern actions, native runners, smoke t…
iamalwaysuncomfortable Jul 8, 2026
809587a
ci: run maturin from sdk/ so cargo honors sdk/.cargo/config.toml
iamalwaysuncomfortable Jul 9, 2026
2939777
test: expand coverage with TS-SDK vectors (accounts, records, poseido…
iamalwaysuncomfortable Jul 9, 2026
f15f72e
test: strengthen foreign-record negatives, drop vacuous test (review …
iamalwaysuncomfortable Jul 9, 2026
2785b4f
feat: add hash algorithms module (BHP, Pedersen, Poseidon) with TS-SD…
iamalwaysuncomfortable Jul 9, 2026
3b391bc
feat: record-scanning parity — GraphKey, record commitments/tags/RVK,…
iamalwaysuncomfortable Jul 9, 2026
7e1c960
fix: complete Scalar convention — pow/negate twins + equivalence tests
iamalwaysuncomfortable Jul 9, 2026
e0b5ef1
feat: full wasm parity for account structs, Value, and Plaintext
iamalwaysuncomfortable Jul 9, 2026
96b4278
fix: mirror W4b surface into __init__.pyi; strengthen interop and los…
iamalwaysuncomfortable Jul 9, 2026
f57645c
feat: full wasm parity for Transaction, Transition, Execution, Author…
iamalwaysuncomfortable Jul 9, 2026
be2bec8
feat: full wasm parity for integer, boolean, field, group, scalar types
iamalwaysuncomfortable Jul 9, 2026
ed0e64b
fix: use stdlib checked ops for integer arithmetic — no panics, clean…
iamalwaysuncomfortable Jul 9, 2026
debe601
feat: add ProofNative, DynamicRecordNative, StatePathNative type aliases
iamalwaysuncomfortable Jul 9, 2026
36b7add
feat: add Proof type with from_string/from_bytes/bytes/__str__/__eq__
iamalwaysuncomfortable Jul 9, 2026
5d21b3b
feat: add DynamicRecord type with from_record/to_record/bytes/fields/…
iamalwaysuncomfortable Jul 9, 2026
8be0d9f
feat: add Metadata type with 15 credits statics and base_url
iamalwaysuncomfortable Jul 9, 2026
68a0c23
feat: add OfflineQuery type with KAT round-trip
iamalwaysuncomfortable Jul 9, 2026
2f5e26c
fix: Metadata verifier checksum parity with wasm; OfflineQuery/__eq__…
iamalwaysuncomfortable Jul 9, 2026
1213a0f
feat: add Program.has_function, get_function_inputs, get_mappings, ge…
iamalwaysuncomfortable Jul 9, 2026
e875eec
test: deepen Program introspection assertions (record/struct/mapping …
iamalwaysuncomfortable Jul 9, 2026
4e5c1e7
chore: remove accidentally committed .idea, gitignore it
iamalwaysuncomfortable Jul 9, 2026
95eb784
feat: add VerifyingKey.checksum, num_constraints, 16 credits statics,…
iamalwaysuncomfortable Jul 9, 2026
f8e436b
feat: add ProvingKey.checksum and 15 is_*_prover checkers
iamalwaysuncomfortable Jul 9, 2026
831518d
refactor: reuse metadata read_prover_checksum in ProvingKey checkers
iamalwaysuncomfortable Jul 9, 2026
ddef49b
feat: add Ciphertext.decrypt_with_transition_view_key and decrypt_wit…
iamalwaysuncomfortable Jul 9, 2026
b2a0092
test: cross-validate Ciphertext transition decrypt against Transition…
iamalwaysuncomfortable Jul 9, 2026
3293520
feat: update type stubs for Proof, DynamicRecord, Metadata, OfflineQu…
iamalwaysuncomfortable Jul 9, 2026
aab9dfa
fix: restore alphabetical class ordering in stubs (ComputeKey before …
iamalwaysuncomfortable Jul 9, 2026
0e1afd3
fix: repair .gitignore patterns; proving tests use v2 endpoint with 5…
iamalwaysuncomfortable Jul 9, 2026
4f27399
feat: ProvingRequest and ExecutionRequest for delegated proving
iamalwaysuncomfortable Jul 9, 2026
e4200ed
feat: AleoNetworkClient (sync+async) with delegated proving submission
iamalwaysuncomfortable Jul 9, 2026
cbe6a4d
fix: PEP 621 dependencies, honor transport param, async parity, DPS r…
iamalwaysuncomfortable Jul 9, 2026
b8dfa57
fix: run async DPS tests in default suite; real URL assertion in tran…
iamalwaysuncomfortable Jul 9, 2026
f7b2750
feat: RecordScanner (sync+async) for delegated record scanning
iamalwaysuncomfortable Jul 9, 2026
3cd8810
fix: add find_credits_records to AsyncRecordScanner for sync/async pa…
iamalwaysuncomfortable Jul 9, 2026
f5ecba1
feat: aleo-abi package — contract ABI generation from Leo's abi crate
iamalwaysuncomfortable Jul 9, 2026
97547c9
ci: test-abi lane builds and tests aleo-abi; guard hook tests; isolat…
iamalwaysuncomfortable Jul 9, 2026
603d486
ci: wheel installs must resolve runtime deps; pyright env gets packag…
iamalwaysuncomfortable Jul 9, 2026
eae64d8
fix: strict-pyright compliance for aleo.abi hook (generics, guarded o…
iamalwaysuncomfortable Jul 9, 2026
85a53ef
ci: scope pyright unknown-type rules off at untyped/optional third-pa…
iamalwaysuncomfortable Jul 9, 2026
583d497
ci: give sdk-abi its own pytest.ini; run test-abi suites from package…
iamalwaysuncomfortable Jul 9, 2026
f6f4a2e
fix: lazy per-network ProvingRequest import in submit_proving_request…
iamalwaysuncomfortable Jul 9, 2026
422f242
fix: make ProvingRequest import lazy (object path imports nothing)
iamalwaysuncomfortable Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions .circleci/config.yml

This file was deleted.

194 changes: 129 additions & 65 deletions .github/workflows/sdk-wheels.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# This file is autogenerated by maturin v1.3.1
# To update, run
#
# maturin generate-ci --platform linux --platform macos --platform windows --manifest-path ./sdk/Cargo.toml --output .github/workflows/sdk-wheels.yml github
#
name: SDK Wheels

on:
push:
paths:
- 'sdk/**'
- 'sdk-abi/**'
- '.github/workflows/sdk-wheels.yml'
- '.github/workflows/sdk.yml'
branches:
- main
- master
Expand All @@ -17,124 +15,190 @@ on:
pull_request:
paths:
- 'sdk/**'
- 'sdk-abi/**'
- '.github/workflows/sdk-wheels.yml'
- '.github/workflows/sdk.yml'
workflow_dispatch:

permissions:
contents: read

# The crate is abi3-py37, so each platform needs exactly one wheel that works
# on every CPython >= 3.7. 32-bit targets (i686/x86) are deliberately dropped:
# snarkvm 4.x and its aws-lc-sys dependency do not support them.
jobs:
tests:
uses: ./.github/workflows/sdk.yml
linux:

build:
name: build (${{ matrix.platform.name }})
needs: [tests]
runs-on: ubuntu-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
target: [x86_64, x86]
platform:
- name: linux-x86_64
runner: ubuntu-latest
target: x86_64
- name: linux-aarch64
# native arm runner — avoids cross-compiling aws-lc-sys C code
runner: ubuntu-24.04-arm
target: aarch64
- name: macos-x86_64
runner: macos-13
target: x86_64
- name: macos-aarch64
runner: macos-latest
target: aarch64
- name: windows-x64
runner: windows-latest
target: x64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheels
python-version: '3.12'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path ./sdk/Cargo.toml --features openssl/vendored
manylinux: auto
# Run from sdk/ so cargo picks up sdk/.cargo/config.toml (macOS
# needs its dynamic_lookup link flags; cargo resolves config from
# the working directory, not the manifest path).
working-directory: ./sdk
target: ${{ matrix.platform.target }}
args: --release --out dist --features mainnet
sccache: 'true'
manylinux: ${{ startsWith(matrix.platform.name, 'linux') && '2_28' || 'auto' }}
# The manylinux container needs git (snarkvm is a git dependency)
# and cmake + a C toolchain (aws-lc-sys builds C sources).
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
yum update -y && yum install -y perl-core libatomic

# If we're running on i686 we need to symlink libatomic
# in order to build openssl with -latomic flag.
if [[ ! -d "/usr/lib64" ]]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
if command -v dnf &> /dev/null; then
dnf install -y git cmake clang
elif command -v yum &> /dev/null; then
yum install -y git cmake3 clang && ln -sf "$(command -v cmake3)" /usr/local/bin/cmake
fi
- name: Upload wheels
uses: actions/upload-artifact@v3
# Every runner here matches its wheel's platform, so install and smoke
# test the actual artifact before it can ship.
- name: Smoke test wheel
shell: bash
run: |
pip install --find-links sdk/dist aleo
python -c "
from aleo.mainnet import PrivateKey
pk = PrivateKey.random()
assert str(pk).startswith('APrivateKey1')
assert str(pk.address).startswith('aleo1')
print('wheel ok:', pk.address)
"
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: wheels
path: dist
name: wheels-${{ matrix.platform.name }}
path: sdk/dist

windows:
build-abi:
name: abi-build (${{ matrix.platform.name }})
needs: [tests]
runs-on: windows-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
target: [x64, x86]
platform:
- name: linux-x86_64
runner: ubuntu-latest
target: x86_64
- name: linux-aarch64
runner: ubuntu-24.04-arm
target: aarch64
- name: macos-x86_64
runner: macos-13
target: x86_64
- name: macos-aarch64
runner: macos-latest
target: aarch64
- name: windows-x64
runner: windows-latest
target: x64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: ${{ matrix.target }}
- name: Build wheels
python-version: '3.12'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path ./sdk/Cargo.toml --features openssl/vendored
working-directory: ./sdk-abi
target: ${{ matrix.platform.target }}
args: --release --out dist
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
manylinux: ${{ startsWith(matrix.platform.name, 'linux') && '2_28' || 'auto' }}
before-script-linux: |
if command -v dnf &> /dev/null; then
dnf install -y git cmake clang
elif command -v yum &> /dev/null; then
yum install -y git cmake3 clang && ln -sf "$(command -v cmake3)" /usr/local/bin/cmake
fi
- name: Smoke test wheel
shell: bash
run: |
pip install --find-links sdk-abi/dist aleo-abi
python -c "import aleo_abi; print(aleo_abi.generate_abi.__name__)"
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: wheels
path: dist
name: abi-wheels-${{ matrix.platform.name }}
path: sdk-abi/dist

macos:
sdist:
needs: [tests]
runs-on: macos-latest
strategy:
matrix:
target: [x86_64, aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Build wheels
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path ./sdk/Cargo.toml --features openssl/vendored
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
working-directory: ./sdk
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels
path: dist
name: wheels-sdist
path: sdk/dist

sdist:
sdist-abi:
needs: [tests]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
working-directory: ./sdk-abi
command: sdist
args: --out dist --manifest-path ./sdk/Cargo.toml
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: wheels
path: dist
name: abi-wheels-sdist
path: sdk-abi/dist

release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, windows, macos, sdist]
needs: [build, sdist, build-abi, sdist-abi]
steps:
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: wheels
pattern: '*wheels-*'
merge-multiple: true
path: dist
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing *
args: --non-interactive --skip-existing dist/*
Loading
Loading