Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/cuddly-laws-unite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@eth-optimism/ponder-interop': patch
---

chore: update ponder dependency to 0.11
3 changes: 3 additions & 0 deletions apps/ponder-interop/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,12 @@ services:
context: ../../
dockerfile: Dockerfile
target: ponder-interop
args:
- DOCKER_TARGET=ponder-interop
env_file: .env
environment:
- DATABASE_URL=postgresql://local-db-user:@postgres:5432/ponder-interop
- VIEWS_SCHEMA=ponder-interop-views
volumes:
- ../../certs/extra-ca-certificates.crt:/usr/local/share/ca-certificates/extra-ca-certificates.crt
healthcheck:
Expand Down
6 changes: 3 additions & 3 deletions apps/ponder-interop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"docker:services:up": "docker compose --profile dependencies up -d",
"docker:up": "docker compose --profile dependencies --profile app up -d",
"docker:down": "docker compose down",
"start": "ponder start",
"start": "ponder start --views-schema=${VIEWS_SCHEMA}",
"start:devnet": "ponder start --config ponder.config.devnet.ts",
"start:alphanet": "ponder start --config ponder.config.alphanet.ts",
"db": "ponder db",
Expand All @@ -40,9 +40,9 @@
},
"dependencies": {
"@eth-optimism/viem": "workspace:*",
"drizzle-orm": "0.39.3",
"drizzle-orm": "0.41.0",
"hono": "^4.5.0",
"ponder": "^0.10.6",
"ponder": "0.11.1",
"viem": "^2.17.9",
"zod": "^3.24.2",
"zod-validation-error": "^3.4.0"
Expand Down
12 changes: 6 additions & 6 deletions apps/ponder-interop/ponder.config.alphanet.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { interopRcAlpha0, interopRcAlpha1 } from '@eth-optimism/viem/chains'
import { http } from 'viem'

import type { Endpoints } from '@/createPonderConfig.js'
import type { ChainConfigs } from '@/createPonderConfig.js'
import { createPonderConfig } from '@/createPonderConfig.js'

const endpoints: Endpoints = {
const endpoints: ChainConfigs = {
interopRcAlpha0: {
chainId: interopRcAlpha0.id,
transport: http(interopRcAlpha0.rpcUrls.default.http[0]),
id: interopRcAlpha0.id,
rpc: http(interopRcAlpha0.rpcUrls.default.http[0]),
},
interopRcAlpha1: {
chainId: interopRcAlpha1.id,
transport: http(interopRcAlpha1.rpcUrls.default.http[0]),
id: interopRcAlpha1.id,
rpc: http(interopRcAlpha1.rpcUrls.default.http[0]),
},
}

Expand Down
13 changes: 6 additions & 7 deletions apps/ponder-interop/ponder.config.devnet.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import { interopAlpha0, interopAlpha1 } from '@eth-optimism/viem/chains'
import { http } from 'viem'

import type { Endpoints } from '@/createPonderConfig.js'
import { createPonderConfig } from '@/createPonderConfig.js'
import { type ChainConfigs, createPonderConfig } from '@/createPonderConfig.js'

const endpoints: Endpoints = {
const endpoints: ChainConfigs = {
interopAlpha0: {
chainId: interopAlpha0.id,
transport: http(interopAlpha0.rpcUrls.default.http[0]),
id: interopAlpha0.id,
rpc: http(interopAlpha0.rpcUrls.default.http[0]),
},
interopAlpha1: {
chainId: interopAlpha1.id,
transport: http(interopAlpha1.rpcUrls.default.http[0]),
id: interopAlpha1.id,
rpc: http(interopAlpha1.rpcUrls.default.http[0]),
},
}

Expand Down
13 changes: 6 additions & 7 deletions apps/ponder-interop/ponder.config.supersim.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import { supersimL2A, supersimL2B } from '@eth-optimism/viem/chains'
import { http } from 'viem'

import type { Endpoints } from '@/createPonderConfig.js'
import { createPonderConfig } from '@/createPonderConfig.js'
import { type ChainConfigs, createPonderConfig } from '@/createPonderConfig.js'

const endpoints: Endpoints = {
const endpoints: ChainConfigs = {
supersimL2A: {
chainId: supersimL2A.id,
transport: http(supersimL2A.rpcUrls.default.http[0]),
id: supersimL2A.id,
rpc: http(supersimL2A.rpcUrls.default.http[0]),
disableCache: true,
},
supersimL2B: {
chainId: supersimL2B.id,
transport: http(supersimL2B.rpcUrls.default.http[0]),
id: supersimL2B.id,
rpc: http(supersimL2B.rpcUrls.default.http[0]),
disableCache: true,
},
}
Expand Down
17 changes: 8 additions & 9 deletions apps/ponder-interop/ponder.config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type { Transport } from 'viem'
import { http } from 'viem'
import { z } from 'zod'

import { createPonderConfig } from '@/createPonderConfig.js'
import { type ChainConfigs, createPonderConfig } from '@/createPonderConfig.js'

// Parse Endpoints from Environment
const endpoints: Record<string, { chainId: number; transport: Transport }> = {}
const chainConfigs: ChainConfigs = {}
for (const [key, value] of Object.entries(process.env)) {
if (!key.startsWith('PONDER_INTEROP_ENDPOINT_') || value === undefined) {
continue
Expand All @@ -26,16 +25,16 @@ for (const [key, value] of Object.entries(process.env)) {
throw new Error(`invalid endpoint url for ${key}: ${value}`)
}

endpoints[chainIdStr] = {
chainId: parseInt(chainIdStr),
transport: http(value),
chainConfigs[chainIdStr] = {
id: parseInt(chainIdStr),
rpc: http(value),
}
}

if (Object.keys(endpoints).length === 0) {
if (Object.keys(chainConfigs).length === 0) {
throw new Error(
'No endpoints in environment found. Please set `PONDER_INTEROP_ENDPOINT_<chainId>=<url>` urls for each chain to index.',
'No chain configs in environment found. Please set `PONDER_INTEROP_ENDPOINT_<chainId>=<url>` urls for each chain to index.',
)
}

export default createPonderConfig(endpoints)
export default createPonderConfig(chainConfigs)
22 changes: 8 additions & 14 deletions apps/ponder-interop/src/createPonderConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,31 @@ import {
contracts as addrs,
l2ToL2CrossDomainMessengerAbi,
} from '@eth-optimism/viem'
import type { ChainConfig } from 'ponder'
import { createConfig } from 'ponder'
import type { Transport } from 'viem'

export type Endpoint = {
chainId: number
transport: Transport
disableCache?: boolean
}

/**
* A map of name to {@link Endpoint}
*/
export type Endpoints = Record<string, Endpoint>
export type ChainConfigs = Record<string, ChainConfig>

/**
* Create a Ponder config for interop
* @param endpoints - Interoperable endpoints to index -- {@link Endpoints}
* @returns Ponder configuration
*/
export function createPonderConfig(endpoints: Endpoints) {
if (Object.keys(endpoints).length === 0) {
throw new Error('no endpoints provided')
export function createPonderConfig(chainConfigs: ChainConfigs) {
if (Object.keys(chainConfigs).length === 0) {
throw new Error('no chain configs provided')
}

// relevant interop contracts
const contracts = {
L2ToL2CDM: {
abi: l2ToL2CrossDomainMessengerAbi,
startBlock: 1,
network: Object.fromEntries(
Object.keys(endpoints).map((key) => [
chain: Object.fromEntries(
Object.keys(chainConfigs).map((key) => [
key,
{ address: addrs.l2ToL2CrossDomainMessenger.address },
]),
Expand All @@ -42,7 +36,7 @@ export function createPonderConfig(endpoints: Endpoints) {

return createConfig({
ordering: 'multichain',
networks: endpoints,
chains: chainConfigs,
contracts,
})
}
2 changes: 1 addition & 1 deletion apps/ponder-interop/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { hashMessageIdentifier } from '@/utils/hashMessageIdentifier.js'

ponder.on('L2ToL2CDM:SentMessage', async ({ event, context }) => {
const cdm = {
source: BigInt(context.network.chainId),
source: BigInt(context.chain.id),
destination: event.args.destination,
nonce: event.args.messageNonce,
sender: event.args.sender,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"commander": "^13.1.0",
"@hono/node-server": "^1.14.0",
"hono": "^4.5.0",
"ponder": "^0.10.6",
"ponder": "0.11.1",
"prom-client": "^15.1.0",
"zod": "^3.24.2",
"zod-validation-error": "^3.4.0"
Expand Down
Loading