Shared ARC76 (PBKDF2-HMAC-SHA256) seed derivation used by the per-chain arc76-* packages (arc76-algorand, arc76-ethereum, arc76-bitcoin, arc76-bitcoincash, arc76-solana). https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0076.md
Project description
arc76-core
Shared ARC76 seed
derivation (PBKDF2-HMAC-SHA256, 999,999 iterations, 32-byte output) used internally by the
per-chain arc76-* packages (arc76-algorand, arc76-ethereum, arc76-bitcoin,
arc76-bitcoincash, arc76-solana).
Most consumers should install a chain-specific package instead of this one directly — this package is only useful if you're implementing ARC76 support for a new chain yourself.
Zero third-party dependencies: PBKDF2 is computed with the standard library's
hashlib.pbkdf2_hmac,
which delegates to OpenSSL's PKCS5_PBKDF2_HMAC — the same audited implementation the
cryptography package itself relies on — falling back to a pure-Python implementation only if
OpenSSL is unavailable. There is no bespoke PBKDF2 code in this package.
Usage
pip install arc76-core
from arc76.core import derive_seed, derive_seed_with_email
seed = derive_seed(password) # bytes, 32 bytes, slot 0
seed1 = derive_seed(password, 1) # slot 1
email_seed = derive_seed_with_email(email, password) # slot 0
Password must be at least 16 characters (raises ValueError otherwise) — production passwords
should be much longer (≥ 50 characters recommended).
derive_seed/derive_seed_with_email are synchronous, unlike the TypeScript package's async
functions — Python's hashlib.pbkdf2_hmac is a synchronous, CPU-bound OpenSSL call with no
natural async form (the TypeScript package is async only because browsers' WebCrypto
subtle.deriveBits is async-only).
⚠️ Same-curve chains share the literal same key material. From the same password/email/slot,
arc76-bitcoin/arc76-bitcoincash/arc76-ethereumderive the identical secp256k1 private key, andarc76-algorand/arc76-solanaderive the identical Ed25519 keypair — leaking one chain's key leaks every other chain sharing its curve. Use a different password (orslot) per chain if you need isolation.
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 arc76_core-1.2.2026080407.tar.gz.
File metadata
- Download URL: arc76_core-1.2.2026080407.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86b2f3d45699aebfdb432001bfc220c541c79315e094ca1d665ec93e6ea19635
|
|
| MD5 |
7e1b8b09040fe0ba7b2ce8f8a512261c
|
|
| BLAKE2b-256 |
952d436504a7ceb946c5599f3d9d1b032b8f85ea91d07fdf014c47b5d2769435
|
Provenance
The following attestation bundles were made for arc76_core-1.2.2026080407.tar.gz:
Publisher:
publish-pypi.yml on scholtz/ARC76Account
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arc76_core-1.2.2026080407.tar.gz -
Subject digest:
86b2f3d45699aebfdb432001bfc220c541c79315e094ca1d665ec93e6ea19635 - Sigstore transparency entry: 2339311538
- Sigstore integration time:
-
Permalink:
scholtz/ARC76Account@707d15acdbd71422686265911fc5ade472c02201 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/scholtz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@707d15acdbd71422686265911fc5ade472c02201 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arc76_core-1.2.2026080407-py3-none-any.whl.
File metadata
- Download URL: arc76_core-1.2.2026080407-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f20a5e8be8b393ac44f6f48cb9f2f6b5aa1474e940f2e2a2e41e4afaa4652cb3
|
|
| MD5 |
fd0dfd30d8509f6703c06418fd071a35
|
|
| BLAKE2b-256 |
b56bb6a4beb683f376ccd986fab34caee374bc2349beed34b037a7528516a89c
|
Provenance
The following attestation bundles were made for arc76_core-1.2.2026080407-py3-none-any.whl:
Publisher:
publish-pypi.yml on scholtz/ARC76Account
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arc76_core-1.2.2026080407-py3-none-any.whl -
Subject digest:
f20a5e8be8b393ac44f6f48cb9f2f6b5aa1474e940f2e2a2e41e4afaa4652cb3 - Sigstore transparency entry: 2339311547
- Sigstore integration time:
-
Permalink:
scholtz/ARC76Account@707d15acdbd71422686265911fc5ade472c02201 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/scholtz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@707d15acdbd71422686265911fc5ade472c02201 -
Trigger Event:
push
-
Statement type: