A Python library to retrieve smart contract function metadata and data from EVM-compatible blockchains
Project description
🦉 Owl - Smart Contract Data Retrieval
A Python library to easily retrieve function metadata and data from any smart contract on EVM-compatible blockchains.
Installation
pip install -e .
Or install with dependencies:
pip install web3 requests
Quick Start
import owl
# Configure the library
owl.configure(
etherscan_api_key="YOUR_ETHERSCAN_API_KEY",
rpc_url="https://eth.public-rpc.com", # or your preferred RPC
chain="ethereum" # ethereum, polygon, bsc, arbitrum, etc.
)
# Get all functions from a contract (USDT example)
functions = owl.get_functions("0xdAC17F958D2ee523a2206206994597C13D831ec7")
for fn in functions:
print(f"📌 {fn['name']}")
print(f" Inputs: {fn['inputs']}")
print(f" Outputs: {fn['outputs']}")
# Call a function and get data
result = owl.get_data(
"0xdAC17F958D2ee523a2206206994597C13D831ec7",
"totalSupply",
[]
)
print(f"Total Supply: {result['result']}")
Environment Variables
Instead of calling configure(), you can set these environment variables:
export OWL_ETHERSCAN_API_KEY="your_key"
export OWL_RPC_URL="https://eth.public-rpc.com"
export OWL_CHAIN="ethereum"
API Reference
owl.get_functions(contract_address, abi=None, include_events=False, only_view=False)
Get all functions from a smart contract.
Parameters:
contract_address(str): The contract addressabi(list, optional): Provide custom ABI instead of fetchinginclude_events(bool): Include contract events (default: False)only_view(bool): Only return view/pure functions (default: False)
Returns: List of function definitions with signatures, inputs, and outputs.
owl.get_data(contract_address, function_name, inputs=None, start_date=None, end_date=None)
Call a contract function and get the result.
Parameters:
contract_address(str): The contract addressfunction_name(str): Name of the function to callinputs(list, optional): Input arguments for the functionstart_date(str, optional): Start date for historical data ("YYYY-MM-DD")end_date(str, optional): End date for historical data ("YYYY-MM-DD")
Returns:
- Without date range:
{"result": ..., "block": 12345, "timestamp": "..."} - With date range: List of results at sampled blocks
Supported Chains
| Chain | Explorer API |
|---|---|
| Ethereum | Etherscan |
| Polygon | Polygonscan |
| BSC | BscScan |
| Arbitrum | Arbiscan |
| Optimism | OP Etherscan |
| Avalanche | Snowtrace |
| Fantom | FTMScan |
| Base | BaseScan |
Error Handling
from owl.exceptions import (
OwlConfigurationError, # Missing API key or RPC
ContractNotFoundError, # Invalid contract address
ABINotFoundError, # Contract not verified
FunctionNotFoundError, # Function doesn't exist
InvalidInputError, # Wrong input parameters
HistoricalDataUnavailableError, # Archive node required
DateRangeError, # Invalid date format
)
try:
result = owl.get_data("0x...", "unknownFunc", [])
except FunctionNotFoundError as e:
print(f"Function not found! Available: {e.available_functions}")
License
MIT
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
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 owl_contracts-0.1.6.tar.gz.
File metadata
- Download URL: owl_contracts-0.1.6.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c96f5f8599da72733638cf9844e2d91e425de07a2bfeb9b05470047c5a7b003
|
|
| MD5 |
701398a2dd2719bac859749590d4ca3b
|
|
| BLAKE2b-256 |
bad4751967fa2f8370372c0e5c6cce8411c30b442afcafa1f27be9cd3f249343
|
File details
Details for the file owl_contracts-0.1.6-py3-none-any.whl.
File metadata
- Download URL: owl_contracts-0.1.6-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d24de03fe153fb06f3c8c0372d78a79a57910f2eee2b613467c591080a117774
|
|
| MD5 |
fcd7c8e2eb66eb726e56a7ce561b63ee
|
|
| BLAKE2b-256 |
a48c4bc9d941d6d31ca7d8719d06a4f0f8df6cf46f2e6315110db5e03ee58265
|