Ponder
/ponder-sh151
An open-source backend framework for crypto apps
https://ponder.sh/docs/indexing/call-traces#register-an-indexing-function how does this work if you're trying to index eth xfrs to an EOA (or CREATE2 address that hasn't been deployed)?
@typedarray.eth in what order do the events / call handlers execute in ponder?
biggest critique of ponder right now is the logging immediately jumps to the table and I can't scroll up to see any logs that I might have emitted from the indexing function bodies.
As a serial console.log debugger this is terrible 😩
As a serial console.log debugger this is terrible 😩
Should Ponder replace SQLite with PGlite (pglite.dev) as the dev database?
Pros:
1) Less magic/astonishment ("wait, what database am I using rn?")
2) Simpler schema definition API (currently stuck with the subset of stuff that both PG and SQLite support)
Pros:
1) Less magic/astonishment ("wait, what database am I using rn?")
2) Simpler schema definition API (currently stuck with the subset of stuff that both PG and SQLite support)
This is my favorite weird edge case in our codebase. If you manage to crash a Ponder app with this error, I'll give you $100.
github.com/ponder-sh/ponder/blob/c19358158d3be13e0c8bab8450ba16ab3f71011d/packages/core/src/sync-store/postgres/store.ts#L222-L230
github.com/ponder-sh/ponder/blob/c19358158d3be13e0c8bab8450ba16ab3f71011d/packages/core/src/sync-store/postgres/store.ts#L222-L230
You won't see it on GitHub, but it's a huge day here at Ponder HQ.
If you noticed "missing events" in your Ponder app recently, you may have been affected by this (rare) bug. Upgrade to 0.5.3 for the fix.
It's more common on low-throughput chains where bloom filters are mostly empty. S/o @kjs and Mateus - was a team effort!
https://x.com/devjoshstevens/status/1816567954521383339
It's more common on low-throughput chains where bloom filters are mostly empty. S/o @kjs and Mateus - was a team effort!
https://x.com/devjoshstevens/status/1816567954521383339
Introducing API functions
With today's 0.5.0 release, you can build custom API endpoints directly in your Ponder app.
Use cases
- Replace GraphQL with tRPC or REST
- Build SQL queries with Drizzle
- Merge onchain & offchain data
With today's 0.5.0 release, you can build custom API endpoints directly in your Ponder app.
Use cases
- Replace GraphQL with tRPC or REST
- Build SQL queries with Drizzle
- Merge onchain & offchain data
Anyone writing tests for your ponder indexer?
How are you doing it?
How are you doing it?
In solidity events uint256 types are returned as BigInts.
Is it best to convert these to strings when storing?
Not good to convert to int type?
Is it best to convert these to strings when storing?
Not good to convert to int type?
Just shipped a *very exciting* experimental feature in the Ponder telegram
Ponder is now 10-50x faster during historical indexing
0.4.37 introduces batched database writes & an in-memory cache for frequently accessed records
Apps that use a remote database will be much faster
0.4.37 introduces batched database writes & an in-memory cache for frequently accessed records
Apps that use a remote database will be much faster
Ponder 0.4.35 improves support for Foundry/Anvil
With a few lines of code, you can integrate Ponder with any Foundry development workflow using `forge script`
Build your indexer alongside your smart contracts, all on your local machine
With a few lines of code, you can integrate Ponder with any Foundry development workflow using `forge script`
Build your indexer alongside your smart contracts, all on your local machine
New in Ponder: JSON columns
Use p.json() for
1) Solidity structs
2) Storing raw log/trace/receipt objects alongside application data
3) Any schema-less KV data
Include a custom TypeScript type to enjoy autocomplete + type checking across your app.
Use p.json() for
1) Solidity structs
2) Storing raw log/trace/receipt objects alongside application data
3) Any schema-less KV data
Include a custom TypeScript type to enjoy autocomplete + type checking across your app.
Shipped: Call trace indexing
This was a top requested feature from teams looking to migrate their subgraphs to Ponder.
Why use call traces?
This was a top requested feature from teams looking to migrate their subgraphs to Ponder.
Why use call traces?
Ponder 0.4.16 introduces block indexing
Block indexing is great for cron / scheduled tasks:
- Read the latest price from an oracle contract every minute to build a price chart
- Aggregate data every hour to update protocol-wide statistics
Block indexing is great for cron / scheduled tasks:
- Read the latest price from an oracle contract every minute to build a price chart
- Aggregate data every hour to update protocol-wide statistics
Ponder 0.4.15 improves crash recovery behavior
Before, if a fully indexed app crashed (often due to a short-lived RPC reliability issue) it would need to reindex from scratch
Now, Ponder apps periodically checkpoint their indexing progress. After a crash, you can restart the app and it will pick up where it left off
Before, if a fully indexed app crashed (often due to a short-lived RPC reliability issue) it would need to reindex from scratch
Now, Ponder apps periodically checkpoint their indexing progress. After a crash, you can restart the app and it will pick up where it left off
In the next version of Ponder, error logs for SQL constraint violations are more human-friendly
0.4.9 adds support for transaction receipts and speeds up historical indexing by ~50%, thanks to @kjs
https://x.com/kyscott18/status/1782826942908997653
https://x.com/kyscott18/status/1782826942908997653