Skip to main content

A software development kit for creating and managing ERC-4337 smart contract accounts on ethereum and ethereum layer-2 blockchains.

Project description

abstract-wallet

Python 3.13 License: MIT

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abstract_wallet-1.0.0b1.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abstract_wallet-1.0.0b1-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

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

Hashes for abstract_wallet-1.0.0b1.tar.gz
Algorithm Hash digest
SHA256 c3716a2128d42a7ad18c33fece64d24b8015497f9746d6c65868d8c7b6108b2a
MD5 2fc5920f2b55e0414652954b4446ecf7
BLAKE2b-256 0814d9efe5758370592ad37bffb0c55cfcbd575ea6a4130e652a9822ac439228

See more details on using hashes here.

File details

Details for the file abstract_wallet-1.0.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for abstract_wallet-1.0.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 28d3b615f104b0dcc197da9457ff337e7714e63b8f949d43ec7c52b4de883f86
MD5 0a0ac2ac39e3d25342f2f7770e307f55
BLAKE2b-256 dcb40ec0b58ee6626e341bd4600a707dc432445f9b31db36690d0cab22c949a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page