x402aff - Python
The x402aff kit (Python): an installable x402aff package with the one-object
Affiliation facade on top. This is the
implementation validated end-to-end on Base mainnet.
Install
pip install x402aff # from PyPI
pip install 'x402aff[cdp]' # with the CDP discovery extra
Or from a checkout / straight from git, to track unreleased changes:
pip install ./python # from a clone, at the repo root
pip install '.[cdp]' # from inside python/, with the CDP extra
pip install 'x402aff[cdp] @ git+https://github.com/MiroShark/x402aff@main#subdirectory=python'
The cdp extra adds cdp-sdk, needed only for the CDP-index discovery path
(monitor, aff.scan() / pending() / splits_payload()). Without it the
request-time payTo and payout-calldata paths work fine.
Vendoring instead of installing works too - copy python/x402aff/ into your
project as a subpackage; the modules import each other relatively, so nothing
needs rewriting and none of the generic names (split, monitor, resolver)
leak into your top-level namespace.
Use
from x402aff import Affiliation
aff = Affiliation(app_code="bc_yourcode", seller_payout="0xYourWallet")
# on your x402 route:
# pay_to=aff.pay_to per-request split, from the X-Builder-Code header
# extensions=aff.extensions declares your app code `a`
# release payouts, later (permissionless):
calls, balance = aff.release("bc_alice")
Full integration guide (money path, trust model, wiring, caveats):
../docs/INTEGRATION.md. The TypeScript port lives in
../ts/ and resolves the identical split address.
Modules
| File | Role |
|---|---|
__init__.py |
The package's public surface (from x402aff import Affiliation, …). |
affiliation.py |
Start here. The Affiliation facade wrapping everything below. |
builder_code.py |
Declare a; decode a/s/w off a settle tx. |
resolver.py |
Builder code → registered payout address (one eth_call). |
split.py |
Builder code + price → the split plan (recipients + bps). |
push_split.py |
The plan → 0xSplits calldata + counterfactual address. |
payto.py |
Request-time payTo resolver. Cached, never raises. |
distribute.py |
The (deploy + distribute) calldata to release a funded split. |
monitor.py |
Which splits hold distributable funds (via CDP's index). |
buyer_client.py |
Buyer-side extension that attaches s (via marked_service_codes). |
cdp_sql.py · queries.sql |
CDP SQL API client + attribution queries. |
Develop
pip install -e '.[cdp,dev]' # editable install with the CDP + test extras
pytest # runs tests/ against the x402aff package
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 x402aff-0.2.0.tar.gz.
File metadata
- Download URL: x402aff-0.2.0.tar.gz
- Upload date:
- Size: 46.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf7bb963a82bd66dc4715f31c86e1869d50f389e4b73f977448678e06c9dcfe8
|
|
| MD5 |
94436111bbb02dd4bd3c99c7d00d7753
|
|
| BLAKE2b-256 |
f21e1ed3871ba7c02fed7785e4a6e750508563a12d5b51045cc5c8e9c6e0c99c
|
File details
Details for the file x402aff-0.2.0-py3-none-any.whl.
File metadata
- Download URL: x402aff-0.2.0-py3-none-any.whl
- Upload date:
- Size: 39.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f068becbb486902b9df074dda00a8c203b13d28ebdd93c9231945d5c38ac6b3f
|
|
| MD5 |
b860a52daf53a421a4005713999d08a5
|
|
| BLAKE2b-256 |
9a561b1ebc50419cd30004556d964f09f1780fb592ee1c85208c42a93a33cc72
|