A software development kit for creating and managing ERC-4337 smart contract accounts on ethereum and ethereum layer-2 blockchains.
Project description
abstract-wallet
A software development kit for creating and managing ERC-4337 smart contract accounts on ethereum and ethereum layer-2 blockchains.
Installation
pip install abstract_wallet
Quickstart
from abstract_wallet import AbstractWallet
seed_phrase = AbstractWallet.get_random_seed_phrase()
wallet = AbstractWallet(seed_phrase, {
"provider": "https://eth-mainnet.g.alchemy.com/v2/<YOUR API-KEY>",
"url": "https://api.pimlico.io/v2/1/rpc?apikey=<YOUR API-KEY>",
"entry_point": "0x0000000071727De22E5E9d8BAf0edAc6f37da032",
"factory": "0x9406Cc6185a346906296840746125a0E44976454"
})
account = wallet.get_account(0)
print(f"Address: {account.address}")
print(f"Balance: {account.get_balance()} wei")
Configuration
The BundlerConfig dictionary accepts the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
provider |
str |
Yes | URL of a JSON-RPC provider (e.g. Alchemy, Infura). |
url |
str |
Yes | URL of the ERC-4337 bundler (e.g. Pimlico, Stackup). |
entry_point |
str |
Yes | Address of the EntryPoint contract. |
factory |
str |
Yes | Address of a SimpleAccountFactory contract. |
paymaster |
str |
No | Address of a paymaster contract to sponsor operations. |
paymaster_data |
bytes |
No | Data to pass to the paymaster. |
Sending a user operation
hash = account.send_user_operation({
"to": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
"value": 0,
"data": b"..." # Encoded calldata
})
print(f"User operation hash: {hash}")
receipt = account.get_user_operation_receipt(hash)
Account discovery
The SDK implements the BIP-44 account discovery algorithm, scanning derivation paths until it finds a gap of 20 unused addresses:
accounts = wallet.get_accounts()
for path, account in accounts.items():
print(f"{path} -> {account.address}")
Examples
See the examples/ directory for complete, runnable scripts.
Documentation
Full API documentation is available in the docs/ directory. Open docs/index.html in your browser to browse it.
License
MIT - see LICENSE for details.
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 abstract_wallet-1.0.0b1.tar.gz.
File metadata
- Download URL: abstract_wallet-1.0.0b1.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3716a2128d42a7ad18c33fece64d24b8015497f9746d6c65868d8c7b6108b2a
|
|
| MD5 |
2fc5920f2b55e0414652954b4446ecf7
|
|
| BLAKE2b-256 |
0814d9efe5758370592ad37bffb0c55cfcbd575ea6a4130e652a9822ac439228
|
File details
Details for the file abstract_wallet-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: abstract_wallet-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28d3b615f104b0dcc197da9457ff337e7714e63b8f949d43ec7c52b4de883f86
|
|
| MD5 |
0a0ac2ac39e3d25342f2f7770e307f55
|
|
| BLAKE2b-256 |
dcb40ec0b58ee6626e341bd4600a707dc432445f9b31db36690d0cab22c949a3
|