Skip to content

Instantly share code, notes, and snippets.

@nounderline
Created May 31, 2024 16:26
Show Gist options
  • Save nounderline/6dd490ea541b680087e70aa719556ef3 to your computer and use it in GitHub Desktop.
Save nounderline/6dd490ea541b680087e70aa719556ef3 to your computer and use it in GitHub Desktop.
Daimo Shovel transfer indexing for Base Sepolia
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install httpx polars connectorx pyarrow plotly pandas kaleido"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from collections import namedtuple\n",
"import os\n",
"import httpx\n",
"import polars as pl\n",
"from functools import lru_cache\n",
"from datetime import datetime\n",
"\n",
"BlockInfo = namedtuple(\n",
" \"BlockInfo\",\n",
" \"blockNumber timeStamp blockMiner blockReward uncles uncleInclusionReward\",\n",
")\n",
"\n",
"\n",
"@lru_cache\n",
"def fetch_block(block_number, api_key=\"YourApiKeyToken\"):\n",
" url = f\"https://api-sepolia.basescan.org/api?module=block&action=getblockreward&blockno={block_number}&apikey={api_key}\"\n",
" response = httpx.get(url)\n",
" data = response.json()\n",
" result = data.get(\"result\", {})\n",
" timestamp = datetime.utcfromtimestamp(int(result.get(\"timeStamp\")))\n",
" return BlockInfo(\n",
" blockNumber=int(result.get(\"blockNumber\")),\n",
" timeStamp=timestamp,\n",
" blockMiner=result.get(\"blockMiner\"),\n",
" blockReward=result.get(\"blockReward\"),\n",
" uncles=result.get(\"uncles\"),\n",
" uncleInclusionReward=result.get(\"uncleInclusionReward\"),\n",
" )\n",
"\n",
"\n",
"def fetch_block_sample(last_block, length):\n",
" return [fetch_block(n) for n in range(last_block - length, last_block)]\n",
"\n",
"\n",
"def read_recent_shovel_indexed_transfer(limit=100):\n",
" return pl.read_database_uri(\n",
" f\"\"\"\n",
"select distinct src_num, insert_at\n",
"from shovel.task_updates\n",
"where\n",
"ig_name = 'transfers'\n",
"order by src_num desc\n",
"limit {limit}\n",
"\"\"\",\n",
" os.environ[\"SHOVEL_DATABASE_URL\"],\n",
" schema_overrides={\"src_num\": int, \"insert_at\": pl.Datetime(\"us\")},\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"recent_transfers = read_recent_shovel_indexed_transfer(limit=500)\n",
"samples = pl.DataFrame([fetch_block(n) for n in recent_transfers[\"src_num\"]])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (208, 6)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>src_num</th><th>insert_at</th><th>produced_at</th><th>blockNumber</th><th>delay</th><th>delay_ms</th></tr><tr><td>i64</td><td>datetime[μs]</td><td>datetime[μs]</td><td>i64</td><td>duration[μs]</td><td>i64</td></tr></thead><tbody><tr><td>10702054</td><td>2024-05-31 16:19:57.865408</td><td>2024-05-31 16:19:56</td><td>10702054</td><td>1s 865408µs</td><td>1865</td></tr><tr><td>10702053</td><td>2024-05-31 16:19:55.844295</td><td>2024-05-31 16:19:54</td><td>10702053</td><td>1s 844295µs</td><td>1844</td></tr><tr><td>10702052</td><td>2024-05-31 16:19:53.823442</td><td>2024-05-31 16:19:52</td><td>10702052</td><td>1s 823442µs</td><td>1823</td></tr><tr><td>10702051</td><td>2024-05-31 16:19:51.803134</td><td>2024-05-31 16:19:50</td><td>10702051</td><td>1s 803134µs</td><td>1803</td></tr><tr><td>10702050</td><td>2024-05-31 16:19:49.783076</td><td>2024-05-31 16:19:48</td><td>10702050</td><td>1s 783076µs</td><td>1783</td></tr><tr><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td><td>&hellip;</td></tr><tr><td>10701850</td><td>2024-05-31 16:13:10.120021</td><td>2024-05-31 16:13:08</td><td>10701850</td><td>2s 120021µs</td><td>2120</td></tr><tr><td>10701849</td><td>2024-05-31 16:13:08.100132</td><td>2024-05-31 16:13:06</td><td>10701849</td><td>2s 100132µs</td><td>2100</td></tr><tr><td>10701848</td><td>2024-05-31 16:13:06.078958</td><td>2024-05-31 16:13:04</td><td>10701848</td><td>2s 78958µs</td><td>2078</td></tr><tr><td>10701847</td><td>2024-05-31 16:13:04.058651</td><td>2024-05-31 16:13:02</td><td>10701847</td><td>2s 58651µs</td><td>2058</td></tr><tr><td>10701846</td><td>2024-05-31 16:13:02.037693</td><td>2024-05-31 16:13:00</td><td>10701846</td><td>2s 37693µs</td><td>2037</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (208, 6)\n",
"┌──────────┬─────────────────┬─────────────────────┬─────────────┬──────────────┬──────────┐\n",
"│ src_num ┆ insert_at ┆ produced_at ┆ blockNumber ┆ delay ┆ delay_ms │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ i64 ┆ datetime[μs] ┆ datetime[μs] ┆ i64 ┆ duration[μs] ┆ i64 │\n",
"╞══════════╪═════════════════╪═════════════════════╪═════════════╪══════════════╪══════════╡\n",
"│ 10702054 ┆ 2024-05-31 ┆ 2024-05-31 16:19:56 ┆ 10702054 ┆ 1s 865408µs ┆ 1865 │\n",
"│ ┆ 16:19:57.865408 ┆ ┆ ┆ ┆ │\n",
"│ 10702053 ┆ 2024-05-31 ┆ 2024-05-31 16:19:54 ┆ 10702053 ┆ 1s 844295µs ┆ 1844 │\n",
"│ ┆ 16:19:55.844295 ┆ ┆ ┆ ┆ │\n",
"│ 10702052 ┆ 2024-05-31 ┆ 2024-05-31 16:19:52 ┆ 10702052 ┆ 1s 823442µs ┆ 1823 │\n",
"│ ┆ 16:19:53.823442 ┆ ┆ ┆ ┆ │\n",
"│ 10702051 ┆ 2024-05-31 ┆ 2024-05-31 16:19:50 ┆ 10702051 ┆ 1s 803134µs ┆ 1803 │\n",
"│ ┆ 16:19:51.803134 ┆ ┆ ┆ ┆ │\n",
"│ 10702050 ┆ 2024-05-31 ┆ 2024-05-31 16:19:48 ┆ 10702050 ┆ 1s 783076µs ┆ 1783 │\n",
"│ ┆ 16:19:49.783076 ┆ ┆ ┆ ┆ │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 10701850 ┆ 2024-05-31 ┆ 2024-05-31 16:13:08 ┆ 10701850 ┆ 2s 120021µs ┆ 2120 │\n",
"│ ┆ 16:13:10.120021 ┆ ┆ ┆ ┆ │\n",
"│ 10701849 ┆ 2024-05-31 ┆ 2024-05-31 16:13:06 ┆ 10701849 ┆ 2s 100132µs ┆ 2100 │\n",
"│ ┆ 16:13:08.100132 ┆ ┆ ┆ ┆ │\n",
"│ 10701848 ┆ 2024-05-31 ┆ 2024-05-31 16:13:04 ┆ 10701848 ┆ 2s 78958µs ┆ 2078 │\n",
"│ ┆ 16:13:06.078958 ┆ ┆ ┆ ┆ │\n",
"│ 10701847 ┆ 2024-05-31 ┆ 2024-05-31 16:13:02 ┆ 10701847 ┆ 2s 58651µs ┆ 2058 │\n",
"│ ┆ 16:13:04.058651 ┆ ┆ ┆ ┆ │\n",
"│ 10701846 ┆ 2024-05-31 ┆ 2024-05-31 16:13:00 ┆ 10701846 ┆ 2s 37693µs ┆ 2037 │\n",
"│ ┆ 16:13:02.037693 ┆ ┆ ┆ ┆ │\n",
"└──────────┴─────────────────┴─────────────────────┴─────────────┴──────────────┴──────────┘"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joined_blocks = recent_transfers.with_columns(\n",
" samples[\"timeStamp\"].alias(\"produced_at\"), samples[\"blockNumber\"]\n",
").with_columns(\n",
" (pl.col(\"insert_at\") - pl.col(\"produced_at\")).alias(\"delay\"),\n",
" ((pl.col(\"insert_at\") - pl.col(\"produced_at\")).dt.total_milliseconds()).alias(\n",
" \"delay_ms\"\n",
" ),\n",
")\n",
"\n",
"joined_blocks"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ECAQLWDwRp9XOAIECBAgQIAAAYNXBwgQIECAAAECBKIFDN7o8wpHgAABAgQIECBg8OoAAQIECBAgQIBAtIDBG31e4QgQIECAAAECBAxeHSBAgAABAgQIEIgWMHijzyscAQIECBAgQICAwasDBAgQIECAAAEC0QIGb/R5hSNAgAABAgQIEDB4dYAAAQIECBAgQCBawOCNPq9wBAgQIECAAAECBq8OECBAgAABAgQIRAsYvNHnFY4AAQIECBAgQMDg1QECBAgQIECAAIFoAYM3+rzCESBAgAABAgQIGLw6QIAAAQIECBAgEC1g8EafVzgCBAgQIECAAAGDVwcIECBAgAABAgSiBQze6PMKR4AAAQIECBAgYPDqAAECBAgQIECAQLSAwRt9XuEIECBAgAABAgQMXh0gQIAAAQIECBCIFjB4o88rHAECBAgQIECAgMGrAwQIECBAgAABAtECBm/0eYUjQIAAAQIECBAweHWAAAECBAgQIEAgWsDgjT6vcAQIECBAgAABAgavDhAgQIAAAQIECEQLGLzR5xWOAAECBAgQIEDA4NUBAgQIECBAgACBaIFvcC7Ux+0cBiEAAAAASUVORK5CYII="
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import plotly.express as px\n",
"\n",
"df = joined_blocks.to_pandas()\n",
"fig = px.histogram(\n",
" df,\n",
" x=\"delay_ms\",\n",
" nbins=100,\n",
" title=\"Indexing transfer delay histogram (last 500 blocks, bin=100ms)\",\n",
")\n",
"fig.show(\"png\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment