GraphQLReorganisationMonitor
Documentation for eth_defi.event_reader.reorganisation_monitor.GraphQLReorganisationMonitor Python class.
- class GraphQLReorganisationMonitor[source]
Watch blockchain for reorgs using GoEthereum /graphql API.
This is ~10x - 100x faster than using JSON-RPC API
See https://geth.ethereum.org/docs/interacting-with-geth/rpc/graphql for details
Attributes summary
check_depth
How many blocks we replay from the blockchain to detect any chain organisations
last_block_read
Last block served by
update_chain()
in the duty cyclemax_cycle_tries
How many times we try to re-read data from the blockchain in the case of reorganisation.
reorg_wait_seconds
How long we allow our node to catch up in the case there has been a change in the chain tip.
Methods summary
__init__
([graphql_url, provider])- param graphql_url
add_block
(record)Add new block to header tracking.
check_block_reorg
(block_number, block_hash)Check that newly read block matches our record.
fetch_block_data
(start_block, end_block)Read the new block headers.
figure_reorganisation_and_new_blocks
([max_range])Compare the local block database against the live data from chain.
get_block_by_number
(block_number)Get block header data for a specific block number from our memory buffer.
get_block_timestamp
(block_number)Return UNIX UTC timestamp of a block.
get_block_timestamp_as_pandas
(block_number)Return UNIX UTC timestamp of a block.
Get the chain tip using GraphQL.
get_last_block_read
()Get the number of the last block served by update_chain().
has_data
()Do we have any data available yet.
load_initial_block_headers
([block_count, ...])Get the initial block buffer filled up.
load_pandas
(df)Load block header data from Pandas data frame.
restore
(block_map)Restore the chain state from a saved data.
skip_to_block
(block_number)Skip scanning initial chain and directly start from a certain block.
to_pandas
([partition_size])Convert the data to Pandas DataFrame format for storing.
truncate
(latest_good_block)Delete data after a block number because chain reorg happened.
update_chain
()Update the internal memory buffer of block headers from the blockchain node.
- __init__(graphql_url=None, provider=None, **kwargs)[source]
- Parameters
graphql_url (Optional[str]) – Give this or existing HTTPProvider
provider (Optional[web3.providers.rpc.HTTPProvider]) – Give this or graphql_url
- get_last_block_live()[source]
Get the chain tip using GraphQL.
See https://geth.ethereum.org/docs/interacting-with-geth/rpc/graphql for details
- Return type