Skip to main content

Use multiple rpc for reliability

Project description

solver-MultiRpc: Reliable Ethereum Interactions with Multiple RPCs

solver-MultiRpc is a Python package designed to enhance the reliability of Ethereum smart contract interactions by utilizing multiple RPC (Remote Procedure Call) endpoints. If one RPC fails, the system can fall back to another, ensuring a higher success rate for your operations.

Features

  • Multiple RPC Support: Seamlessly switch between different RPCs to ensure uninterrupted interactions.
  • Gas Management: Fetch gas prices from multiple sources to ensure transactions are sent with an appropriate fee.
  • Robust Error Handling: Designed to handle failures gracefully, increasing the reliability of your applications.
  • Easy-to-use API: Interact with Ethereum smart contracts using a simple and intuitive API.

Installation

Install solver-MultiRpc using pip:

pip install solver-multiRPC

Quick Start

Here's a quick example to get you started:

import asyncio
import json
from multirpc import MultiRpc
from src.multirpc.utils import NestedDict


async def main():
    rpcs = NestedDict({
        "view": {
            1: ['https://1rpc.io/ftm', 'https://rpcapi.fantom.network', 'https://rpc3.fantom.network'],
            2: ['https://rpc.fantom.network', 'https://rpc2.fantom.network', ],
            3: ['https://rpc.ankr.com/fantom'],
        },
        "transaction": {
            1: ['https://1rpc.io/ftm', 'https://rpcapi.fantom.network', 'https://rpc3.fantom.network'],
            2: ['https://rpc.fantom.network', 'https://rpc2.fantom.network', ],
            3: ['https://rpc.ankr.com/fantom'],
        }
    })
    with open("abi.json", "r") as f:
        abi = json.load(f)
    multi_rpc = MultiRpc(rpcs, 'YOUR_CONTRACT_ADDRESS', contract_abi=abi, enable_gas_estimation=True)

    await multi_rpc.setup()
    multi_rpc.set_account("YOUR_PUBLIC_ADDRESS", "YOUR_PRIVATE_KEY")
    result = await multi_rpc.functions.YOUR_FUNCTION().call()
    print(result)

asyncio.run(main())

Replace placeholders like YOUR_CONTRACT_ADDRESS, YOUR_PUBLIC_ADDRESS, YOUR_PRIVATE_KEY, and YOUR_FUNCTION with appropriate values.

Documentation

Initialization

Initialize the MultiRpc class with your RPC URLs, contract address, and contract ABI:

multi_rpc = MultiRpc(rpcs, contract_address='YOUR_CONTRACT_ADDRESS', contract_abi=abi)

Setup

Before making any calls, set up the connection to the provided RPCs:

await multi_rpc.setup()

Setting Account

Set the Ethereum account details (address and private key) for sending transactions:

multi_rpc.set_account("YOUR_PUBLIC_ADDRESS", "YOUR_PRIVATE_KEY")

Calling Contract Functions

Call a function from your contract:

result = await multi_rpc.functions.YOUR_FUNCTION().call()

Contributing

Contributions are welcome! Please open an issue or submit a pull request 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

solver-multiRPC-2.0.2.tar.gz (16.7 kB view details)

Uploaded Source

File details

Details for the file solver-multiRPC-2.0.2.tar.gz.

File metadata

  • Download URL: solver-multiRPC-2.0.2.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for solver-multiRPC-2.0.2.tar.gz
Algorithm Hash digest
SHA256 1699eba2306293ecc14ef4ed687390c847b39350ee288014ea154f422b1bd8b0
MD5 0c6e8ed483ddb2e891b84d80122f7545
BLAKE2b-256 3ffba5b17ba39fa66f9854f788fa376bac8617b9a7970d416a852f0b86a4cc1c

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