Skip to main content

Python SDK for Ethereum Attestation Service (EAS)

Project description

Ethereum Attestation Service (EAS) SDK

Overview

The EAS SDK is a Python library for seamlessly interacting with the Ethereum Attestation Service (EAS), enabling developers to create, manage, and verify on-chain and off-chain attestations across multiple blockchain networks.

Features

  • 🌐 Multi-chain support (Ethereum, Base, Sepolia, and more)
  • 🔒 Secure environment and input validation
  • 💡 Easy-to-use methods for creating attestations
  • 📝 On-chain and off-chain attestation support
  • 🚀 Batch attestation and revocation capabilities
  • 🕒 Flexible timestamping functionality
  • 🔄 Typed attestation data conversion from GraphQL to protobuf

Installation

Install the EAS SDK using pip:

pip install eas-sdk

Quick Start

Basic Initialization

from EAS import EAS

# Initialize EAS for a specific chain
eas = EAS.from_chain(
    chain='base-sepolia',
    private_key='YOUR_PRIVATE_KEY',
    from_account='YOUR_ETHEREUM_ADDRESS'
)

Creating an Attestation

# Register a schema first
schema_uid = eas.register_schema(
    schema="uint256 id,string name",
    network_name="base-sepolia"
)

# Create an attestation
result = eas.attest(
    schema_uid=schema_uid,
    recipient='0x1234...',
    data_values={
        'types': ['uint256', 'string'],
        'values': [42, 'John Doe']
    }
)

print(f"Attestation created: {result.tx_hash}")

Off-Chain Attestation

# Create an off-chain attestation
offchain_attestation = eas.attest_offchain({
    'schema': schema_uid,
    'recipient': '0x1234...',
    'data': b'Offchain data'
})

Batch Operations

# Batch attestation
eas.multi_attest([
    {
        'schema_uid': schema_uid,
        'attestations': [
            {
                'recipient': '0x1234...',
                'data': b'First attestation'
            },
            {
                'recipient': '0x5678...',
                'data': b'Second attestation'
            }
        ]
    }
])

# Batch revocation
eas.multi_revoke([
    {'uid': '0x...first_attestation_uid'},
    {'uid': '0x...second_attestation_uid'}
])

Configuration

Environment Variables

You can also configure EAS using environment variables:

export EAS_CHAIN=base-sepolia
export EAS_PRIVATE_KEY=your_private_key
export EAS_FROM_ACCOUNT=your_ethereum_address

Then initialize EAS without parameters:

eas = EAS.from_environment()

Advanced Configuration

Custom Network Support

# Use a custom RPC endpoint and contract address
eas = EAS.from_chain(
    chain='custom_network',
    private_key='your_private_key',
    from_account='your_address',
    rpc_url='https://custom-rpc.network',
    contract_address='0x..custom_contract_address'
)

Supported Chains

# List all supported chains
print(EAS.list_supported_chains())

# Get configuration for a specific chain
base_config = EAS.get_network_config('base')

Security Features

  • Input validation for all parameters
  • Secure environment variable handling
  • Comprehensive error logging
  • Contract address validation

Attestation Data Conversion

Convert EAS attestation data from GraphQL responses to strongly-typed protobuf messages:

from src.main.EAS.attestation_converter import AttestationConverter, from_graphql_json

# Convert GraphQL decodedDataJson to typed objects
converter = AttestationConverter(
    lambda data: YourProtobufType(
        domain=data.get("domain", ""),
        identifier=data.get("identifier", "")
    )
)

graphql_data = from_graphql_json('your_decoded_data_json')
typed_result = converter.convert(graphql_data)

For detailed usage examples and advanced patterns, see Attestation Converter Documentation.

Error Handling

The SDK provides detailed exceptions:

  • EASValidationError: Input validation failures
  • EASTransactionError: Blockchain interaction problems
  • SecurityError: Security-related issues

Performance Considerations

  • Uses gas estimation with a 20% buffer
  • Supports batch operations for gas efficiency
  • Provides fallback mechanisms for gas estimation

Contribution

Contributions are welcome! Please read our Contribution Guidelines before submitting a pull request.

License

[Insert your project's license here]

Support

For issues, questions, or support, please file an issue on our GitHub repository.

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

eas_sdk-0.1.3.tar.gz (61.6 kB view details)

Uploaded Source

Built Distribution

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

eas_sdk-0.1.3-py3-none-any.whl (63.6 kB view details)

Uploaded Python 3

File details

Details for the file eas_sdk-0.1.3.tar.gz.

File metadata

  • Download URL: eas_sdk-0.1.3.tar.gz
  • Upload date:
  • Size: 61.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eas_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7ac3d81066b83adbc6d7012ddf70369c4f9749ac016713db93bc8f4fdaeace0b
MD5 2961ab976fb7e470d68402d767cf82c2
BLAKE2b-256 9ba21917590bf93f1d70a6d0b5f886d944071d07f320766062a8dbc0f6834d90

See more details on using hashes here.

Provenance

The following attestation bundles were made for eas_sdk-0.1.3.tar.gz:

Publisher: publish.yml on cyberstorm-dev/eas-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eas_sdk-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: eas_sdk-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 63.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eas_sdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ee3b09973e9ca4ea744a844e127a0eded99bef1eb5eee423c910a033ddcb85cc
MD5 24d96b4e090f8431c7f361bbe17bafe5
BLAKE2b-256 fe51d70f4712b09ea2673b16a9e62a698013a6d424e9b523b87339c9624019a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for eas_sdk-0.1.3-py3-none-any.whl:

Publisher: publish.yml on cyberstorm-dev/eas-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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