Querying Data
Ape has advanced features for querying large amounts of on-chain data. Ape provides this support through a number of standardized methods for working with data, routed through our query management system, which incorporates data from many sources in your set of installed plugins.
Getting Block Data
Use ape console
to connect to a network:
ape console --network ethereum:mainnet:infura
Run block queries:
# Query the first 20 blocks with all fields
df = chain.blocks.query("*", stop_block=20)
# Get specific fields from blocks
df = chain.blocks.query("number,timestamp,gas_used", start_block=16_000_000, stop_block=16_000_100)
# Access individual blocks
latest_block = chain.blocks[-1]
previous_block = chain.blocks[-2]
# Access transactions in a block
transactions = previous_block.transactions
Getting Account Transaction Data
Each account within Ape fetches and stores transactional data that you can query. To work with an account’s transaction history:
from ape import accounts, chain
# Query by ENS name
total_value = chain.history["example.eth"].query("value").sum() # All value sent by this address
# Query by account object
acct = accounts.load("harambe")
tx = acct.history[-1] # Last transaction `harambe` made
# Sum total fees paid
fees_paid = acct.history.query("total_fees_paid").sum() # Sum of ether paid for fees
Getting Contract Event Data
On a deployed contract, you can query event history:
# Query all fields from a specific event
df = contract_instance.FooHappened.query("*")
# Query specific event fields
df = contract_instance.Transfer.query("from_,to,value", start_block=-1000)
# Filter high-value transfers (example with ERC-20 token)
high_value_transfers = contract_instance.Transfer.query("from_,to,value").query("value > 1000000")
# Query by block range
events = contract_instance.FooHappened.query("*", start_block=15_000_000, stop_block=15_100_000)
Where contract_instance
is the return value of owner.deploy(MyContract)
or Contract("0x...")
See this guide for more information on how to deploy or load contracts.