Amp ยท by Edge & Node
Amp is a blockchain-native database
A high performance, SQL-native, blockchain-specific database, integrating any chain's data with all your existing systems, and supporting realtime and analytics use-cases.
Own the pipeline
You control the extraction and every step after it, end to end, on infrastructure you choose.
Integrate with your stack
Standard SQL over Arrow Flight, plus export jobs into Snowflake and Postgres, and more!
Scale across chains and use cases
Any EVM chain plus Solana, with more chains added all the time. The same tables serve realtime and analytics workloads.
Pull any chain into the tools you already run.
Amp extracts every block, transaction, and log from the chains you point it at, keeps them as Parquet in your bucket, and serves them as SQL to whatever you query with today.
Is it for me?
Pick your team and see what Amp does for it.
How does it work? From a chain to the tools you run
Connect your data sources
A provider tells Amp where to read a chain from: your own node or an RPC vendor. Credentials stay with the operator as ${VAR} references, and a provider can be swapped without touching anything downstream.
kind = "evm-rpc"network = "mainnet"url = "${ETH_RPC_URL}"ampctl provider register mainnet_rpc ./mainnet.tomlIndex raw chain data
A raw dataset extracts every block, transaction, and log into Parquet, backfills from a start block, then follows the chain head under a second behind it, correct through reorgs.
ampctl manifest generate --kind evm-rpc --network mainnet --out eth_mainnet.jsonampctl dataset register acme/eth_mainnet ./eth_mainnet.json --tag 1.0.0ampctl dataset deploy acme/eth_mainnet@1.0.0+------------------+-------------------------------+| column_name | data_type |+------------------+-------------------------------+| block_num | UInt64 || timestamp | Timestamp(Nanosecond, +00:00) || hash | FixedSizeBinary(32) || parent_hash | FixedSizeBinary(32) || miner | FixedSizeBinary(20) || gas_used | UInt64 || base_fee_per_gas | Decimal128(38, 0) |+------------------+-------------------------------+19 more columns, plus transactions and logsTransform it with SQL
A derived dataset is a SQL query Amp keeps updated block by block. Decode events, join, aggregate, and version the result like any other dataset.
SELECT l.block_num, l.timestamp, t.symbol, evm_decode_hex(dec['from']) AS sender, evm_decode_hex(dec['to']) AS receiver, dec['value']::double / pow(10, t.decimals) AS amountFROM ( SELECT *, evm_decode(topic1, topic2, topic3, data, 'Transfer(address indexed from, address indexed to, uint256 value)') AS dec FROM "acme/eth_mainnet".logs WHERE topic0 = evm_topic('Transfer(address indexed from, address indexed to, uint256 value)')) lJOIN "acme/stablecoins".tokens t ON t.address = l.address+-----------+--------+-------------+-------------+-----------+| block_num | symbol | sender | receiver | amount |+-----------+--------+-------------+-------------+-----------+| 25931398 | USDC | 0x28c6โฆ21a4 | 0x7a25โฆ0f91 | 250000.00 || 25931398 | USDT | 0xf977โฆ9ff9 | 0x1ab4โฆce10 | 18400.50 || 25931399 | USDC | 0x4d9fโฆ77c4 | 0x28c6โฆ21a4 | 999.99 |+-----------+--------+-------------+-------------+-----------+Connect your internal systems
Join chain data with the reference data you already hold, and deliver the result to Snowflake or Postgres through an ADBC export job, exactly once, reorgs included.
Query and visualize
Standard SQL over Arrow Flight, from a console, a notebook, a BI tool, or Polars. Swap the LIMIT for SETTINGS stream = true and the same statement streams in block order.
Monitor freshness and performance
Sync progress, distance to the chain head, storage, and job health come from the Admin API. ampctl shows the same numbers in the terminal, and OpenTelemetry carries them into Grafana.
ampctl dataset status acme/eth_mainnet@1.0.0Status: RunningKind: RawDataset: acme/eth_mainnet@1.0.0 Table Synced through Distance to head Storageblocks 25931403 1 block 18.2 GiBtransactions 25931403 1 block 211.6 GiBlogs 25931403 1 block 164.9 GiB- Chain agnostic
- Any EVM chain plus Solana, with more chains added all the time. A provider is one TOML file.
- SQL-first
- Standard SQL over Arrow Flight, with ABI, Borsh, SCALE, and XDR decoded at query time.
- Integrate with your stack
- Arrow in Polars, export jobs into Snowflake and Postgres, and any client that speaks Arrow Flight SQL.
- Self-host or run it with us
- Run it in your cloud or on-prem, or the same binary run for you by Edge & Node.
- Low latency
- Under a second behind the chain head, correct through reorgs.
- Minimal footprint
- Two services to run besides
ampd. Parquet at rest is 10ร smaller than BigQuery's Solana dataset.
Correct through forks, bad data, and time.
Forks roll back on their own
Hash-linked ranges detect the fork, drop the orphaned blocks, and replay the canonical ones.
Bad RPC data never lands
With --verify, Amp recomputes header hashes and Merkle roots. A bad RPC response fails instead of landing in a table.
Last quarter's number, every time
Datasets are immutable revisions. Query as of a pinned revision and get the same answer every time.
Learn more
Plugs into the stack you already run.
Snowflake, BigQuery, ClickHouse, Postgres, Kafka, and the rest of the tools your data team works in.
- Snowflake
- BigQuery
- ClickHouse
- Postgres
- Apache Iceberg
- Delta Lake
- Amazon S3
- Power BI
- Tableau
- Databricks
- LangChain
- Apache Kafka
- Redis
- CDC / Debezium
- Datadog
- Grafana
- Splunk