Skip to main content

Enclave SDK Test Script

This script demonstrates how to interact with the Enclave SDK using Web3 to create a smart account, compute quotes, and submit transactions on the Optimism network.

Prerequisites

Before running the script, ensure you have the following:

  • Python 3.x
  • Required packages:
    • web3
    • python-dotenv
    • eth-account

You can install the required packages using pip:

pip install web3 python-dotenv eth-account

Environment Variables

Create a .env file in the same directory as your script and set the following environment variables:

ALCHEMY_KEY=<your_alchemy_key>
ENCLAVE_KEY=<your_enclave_key>
PRIVATE_KEY=<your_private_key>

Usage

  1. Create a new instance of Web3: Connect to the Optimism network using an Alchemy HTTP provider.

    from web3 import Web3
    import os
    
    w3 = Web3(Web3.HTTPProvider(f"https://opt-mainnet.g.alchemy.com/v2/{os.getenv('ALCHEMY_KEY')}"))
    
  2. Create a new instance of Enclave: Initialize the Enclave client with your Enclave key.

    from app import Enclave
    from dotenv import load_dotenv
    
    load_dotenv()
    client = Enclave(os.getenv("ENCLAVE_KEY"))
    
  3. Generate a new Ethereum account: Use your private key to generate an Ethereum account.

    eoa = w3.eth.account.from_key(os.getenv("PRIVATE_KEY"))
    
  4. Create an Enclave Smart Contract Wallet: Create a smart account for the generated Ethereum account.

    account = client.create_smart_account(eoa.address)
    
  5. Get balance for the Enclave Account: Retrieve and display the balance of the smart account.

    balance = client.get_smart_balance(account.wallet.scw_address)
    print('Smart Account Balance:', balance['netBalance'])
    
  6. Compute a quote: Compute a transaction quote based on the user's willingness to spend.

    quote = client.compute_quote(account.wallet.scw_address, network=10, amount=0.1 * 1e6, quote_type='AMOUNT_IN')
    
  7. Define transaction details: Set up the recipient address and amount to transfer.

    usdc_on_optimism = '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85' 
    recipient_address = '0x4E2ef45077FB15Ef5f0FfF9E86B38991aA4bAe5C'  # Replace with the recipient's address
    credit_amount = int(quote['total_credit']) + int(quote['userWithdrawal'])
    
  8. Build and sign the transaction: Build and sign the transaction using the user's Ethereum account.

    transaction_details = [{
        'encodedData': usdc_contract.encode_abi("transfer", args=[recipient_address, credit_amount]),
        'targetContractAddress': usdc_on_optimism,
        'value': 0
    }]
    order_data = {'amount': str(int(amount)), 'type': 'AMOUNT_IN'}
    built_txn = client.build_transaction(transaction_details, 10, account.wallet.scw_address, order_data, None, 1)
    
    signature = eoa.sign_message(encode_defunct(hexstr=built_txn.message_to_sign))
    
  9. Submit the transaction: Submit the transaction to the network.

    response = client.submit_transaction("0x" + signature.signature.hex(), user_op_serializable, 10, account.wallet.scw_address, 1)
    print('Transaction submitted successfully:', response)
    

Conclusion

This script serves as a basic example of how to use the Enclave SDK to interact with the Ethereum blockchain on the Optimism network. Make sure to replace the placeholder values in the environment variables with your actual keys before running the script.

Release files for enclave-py-sdk 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for enclave-py-sdk 0.1.8
File Size Uploaded
enclave_py_sdk-0.1.8.tar.gz 9.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for enclave-py-sdk 0.1.8
File Interpreter ABI Platform
enclave_py_sdk-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / enclave_py_sdk-0.1.8.tar.gz

Download URL enclave_py_sdk-0.1.8.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
39ffd8049883a0c7be9a6bed43be61fc96926127e74ca7c78bdc9f50d6b2c65a
BLAKE2b-256 checksum
How to use checksums
8e5d86136266d242a3585fb2cd9c93246f22ca3b47e60a756f5b1cf26f15e43f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.12.4 Darwin/23.1.0

Release files / enclave_py_sdk-0.1.8-py3-none-any.whl

Download URL enclave_py_sdk-0.1.8-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d57a2e247aebf5389c4e184d5107ab5e736205fa8c03ccbfe8b69d4f2cc36a4
BLAKE2b-256 checksum
How to use checksums
1fdaec1e231942e336db1d49cd9a74750bffeaade76f0920dab9356ec2a568ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.12.4 Darwin/23.1.0

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page