Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge mainnets and testnets #44

Merged
merged 5 commits into from
May 29, 2024
Merged
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
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[*.md]
max_line_length = 80

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@ yarn-error.log*
# Ponder
/generated/
/.ponder/

/ponder.config.ts
*.local.*
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ RUN cd /app && \

WORKDIR /app

CMD ["yarn", "start"]
CMD ["/app/scripts/entrypoint.sh"]
14 changes: 14 additions & 0 deletions definition/mainnets/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@


export const listenRelayer = [
"0xaC2b224c2E1eD2E8663097a361A05a72d6671C7D",
"0xDD9622309aa2798D74CD39C772D289dfe3EEdaD5", // TWArBv4oRtVE4MAkqaEVHHiBQX1Wc7xDg6
];
export const listenOracle = [
"0x3f938756ceFa33665719Eb528E581FF3f460b7C6",
"0xf7A4217c2c372E50c19fdF68D86b3C7E493d2d21", // TYYcXSzzc8r4Q17xrYUtqWEMtKUNwNictu
];
export const listenSignature = [
"0xA72d283015c01807bc0788Bf22C1A774bDbFC8fA",
"0x152c6DdDD0A4cfD817af7Cf4cf5491D4AC44e886", // TBuAR5bP2KoJ6Thx4zFqGChSARNRYrknTD
];
File renamed without changes.
12 changes: 12 additions & 0 deletions definition/testnets/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
export const listenRelayer = [
"0xaC2b224c2E1eD2E8663097a361A05a72d6671C7D",
"0xaBFEBd81169de74f5a9Dbd7C1b5E349E835852E8", // TRediXQ8qcTqorMQqJ2jQgqnjUojWZo2qc
];
export const listenOracle = [
"0x3f938756ceFa33665719Eb528E581FF3f460b7C6",
"0x488116286B253D61FFd41F4948c288c3C672918F", // TGaaHxjof9QcfKwggnFVM3QwjGKzbuNzNk
];
export const listenSignature = [
"0xA72d283015c01807bc0788Bf22C1A774bDbFC8fA",
"0x841B6b2F3148131Ac161d88edFb2C11F146e189F", // TN1j3Ttt1c1mB3X2zdKkdMsUK6pZyLCxSr
];
157 changes: 157 additions & 0 deletions definition/testnets/ponder.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
import { createConfig } from "@ponder/core";
import { http } from "viem";

import { ORMPAbi as ORMPAbiV2 } from "./abis/v2/ORMPAbi";
import { SignaturePubAbi } from "./abis/v2/SignaturePubAbi";

// const INFURA_API_KEY = process.env.INFURA_API_KEY;
const INFURA_API_KEY = null;
const MAX_REQUESTS_PER_SECOND = 5;
const FAST_MAX_REQUESTS_PER_SECOND = 10;
const POLYGON_INFURA_API_KEY = process.env.INFURA_API_KEY;

export default createConfig({
networks: {
// testnets
arbitrum_sepolia: {
chainId: 421614,
transport: http(
INFURA_API_KEY
? `https://arbitrum-sepolia.infura.io/v3/${INFURA_API_KEY}`
// : "https://arbitrum-sepolia-hrpc.vercel.app/"
: "https://sepolia-rollup.arbitrum.io/rpc"
),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
pangolin: {
chainId: 43,
transport: http("http://g1.testnets.darwinia.network:9940"),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
pangoro: {
chainId: 45,
transport: http("https://fraa-flashbox-2871-rpc.a.stagenet.tanssi.network"),
maxRequestsPerSecond: FAST_MAX_REQUESTS_PER_SECOND,
},
sepolia: {
chainId: 11155111,
transport: http(
INFURA_API_KEY
? `https://sepolia.infura.io/v3/${INFURA_API_KEY}`
// : "https://sepolia-hrpc.vercel.app/"
: "https://rpc2.sepolia.org"
),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
taiko_hekla: {
chainId: 167009,
transport: http("https://rpc.hekla.taiko.xyz"),
maxRequestsPerSecond: FAST_MAX_REQUESTS_PER_SECOND,
},
tron_shasta: {
chainId: 2494104990,
transport: http("https://api.shasta.trongrid.io/jsonrpc"),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
// mainnets
arbitrum: {
chainId: 42161,
transport: http(
INFURA_API_KEY
? `https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}`
: "https://arb1.arbitrum.io/rpc"
// : "https://arbitrum-hrpc.vercel.app/"
),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
blast: {
chainId: 81457,
transport: http(
INFURA_API_KEY
? `https://blast-mainnet.infura.io/v3/${INFURA_API_KEY}`
: "https://rpc.blast.io"
),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
crab: {
chainId: 44,
transport: http("http://c2.crab-rpc.itering.io:9944/"),
// transport: http("https://crab-hrpc.vercel.app/"),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
darwinia: {
chainId: 46,
transport: http("http://c1.darwinia-rpc.itering.io:9944/"),
// transport: http("https://darwinia-hrpc.vercel.app/"),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
ethereum: {
chainId: 1,
transport: http(
// INFURA_API_KEY
// ? `https://mainnet.infura.io/v3/de35badc1ec7472da2967dd0248bd60c`

"https://eth-mainnet.public.blastapi.io"
),

maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
polygon: {
chainId: 137,
transport: http(
POLYGON_INFURA_API_KEY
? `https://polygon-mainnet.infura.io/v3/${POLYGON_INFURA_API_KEY}`
: "https://polygon-bor-rpc.publicnode.com"
// : "https://polygon-hrpc.vercel.app/"
),
maxRequestsPerSecond: MAX_REQUESTS_PER_SECOND,
},
},
contracts: {
// === V2
ORMPV2: {
abi: ORMPAbiV2,
address: "0xA72d283015c01807bc0788Bf22C1A774bDbFC8fA",
network: {
// testnets
pangolin: {
startBlock: 2936734,
},
pangoro: {
startBlock: 229000,
},
sepolia: {
startBlock: 5967541,
},
arbitrum_sepolia: {
startBlock: 47378439,
},
taiko_hekla: {
startBlock: 204774,
},
tron_shasta: {
startBlock: 44338539,
address: "0x841B6b2F3148131Ac161d88edFb2C11F146e189F", // TN1j3Ttt1c1mB3X2zdKkdMsUK6pZyLCxSr
},
// mainnets
},
filter: {
event: [
"MessageAccepted",
"MessageDispatched",
"MessageAssigned",
"HashImported",
],
},
},
SignaturePub: {
abi: SignaturePubAbi,
address: "0xb2aa34fde97ffdb6197dd5a2be23c2121405cc12",
network: {
darwinia: {
startBlock: 2761609,
},
},
},
},
});
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
"private": true,
"type": "module",
"scripts": {
"dev": "ponder dev",
"start": "ponder start",
"codegen": "ponder codegen",
"serve": "ponder serve",
"lint": "eslint .",
Expand All @@ -21,7 +19,8 @@
"@types/node": "^20.10.0",
"eslint": "^8.54.0",
"eslint-config-ponder": "^0.4.2",
"typescript": "^5.3.2"
"typescript": "^5.3.2",
"zx": "^8.1.2"
},
"engines": {
"node": ">=18.14"
Expand Down
13 changes: 13 additions & 0 deletions ponder.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
#

set -e


BIN_PATH=$(cd "$(dirname "$0")"; pwd -P)

cd ${BIN_PATH}

npx zx ${BIN_PATH}/scripts/init.mjs --group=$1

npx ponder $2
13 changes: 13 additions & 0 deletions scripts/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
#

set -e

BIN_PATH=$(cd "$(dirname "$0")"; pwd -P)
WORK_PATH=${BIN_PATH}/../

cd ${WORK_PATH}

npx zx ${WORK_PATH}/scripts/init.mjs $@

npx ponder start
45 changes: 45 additions & 0 deletions scripts/init.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@

$.verbose = true;

function _projectdir() {
return path.resolve(__dirname, '../')
}

function _lifecycle() {
return {
group: (argv['group'] || argv['g']) || $.env['ORMPONDER_GROUP'],
};
}

async function _check(lifecycle) {
const {group} = lifecycle;
if (!group) {
console.log(chalk.red('missing group, please add --group or set ORMPONDER_GROUP'));
process.exit(1)
}
const pathGroup = `${_projectdir()}/definition/${group}`;
if (!await fs.pathExists(pathGroup)) {
console.log(chalk.red(`not have this group. [path]: ${pathGroup}`))
process.exit(1)
}
}

async function _copy(lifecycle) {
const {group} = lifecycle;
const pathGroup = `${_projectdir()}/definition/${group}`;

await fs.copy(`${pathGroup}/ponder.config.ts`, `${_projectdir()}/ponder.config.ts`);
await fs.copy(`${pathGroup}/address.ts`, `${_projectdir()}/src/address.local.ts`);
console.log('definition file generated');
}


async function main() {
const lifecycle = _lifecycle();
await _check(lifecycle);
await _copy(lifecycle);
}


await main();

22 changes: 5 additions & 17 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
import { ponder } from "@/generated";

const listenRelayer = [
"0xaC2b224c2E1eD2E8663097a361A05a72d6671C7D",
"0xDD9622309aa2798D74CD39C772D289dfe3EEdaD5", // TWArBv4oRtVE4MAkqaEVHHiBQX1Wc7xDg6
];
const listenOracle = [
"0x3f938756ceFa33665719Eb528E581FF3f460b7C6",
"0xf7A4217c2c372E50c19fdF68D86b3C7E493d2d21", // TYYcXSzzc8r4Q17xrYUtqWEMtKUNwNictu
];
const listenSignature = [
"0xA72d283015c01807bc0788Bf22C1A774bDbFC8fA",
"0x152c6DdDD0A4cfD817af7Cf4cf5491D4AC44e886", // TBuAR5bP2KoJ6Thx4zFqGChSARNRYrknTD
];
import * as address from './address.local'

ponder.on("ORMPV2:MessageAccepted", async ({ event, context }) => {
const { MessageAcceptedV2 } = context.db;
Expand Down Expand Up @@ -75,7 +63,7 @@ ponder.on("ORMPV2:MessageAssigned", async ({ event, context }) => {
// context.network.name
// );
// filter other relayer
if (listenRelayer.includes(event.args.relayer)) {
if (address.listenRelayer.includes(event.args.relayer)) {
await MessageAcceptedV2.updateMany({
where: {
msgHash: {
Expand All @@ -96,7 +84,7 @@ ponder.on("ORMPV2:MessageAssigned", async ({ event, context }) => {
// context.network.name
// );
// filter other oracle
if (listenOracle.includes(event.args.oracle)) {
if (address.listenOracle.includes(event.args.oracle)) {
await MessageAcceptedV2.updateMany({
where: {
msgHash: {
Expand All @@ -116,7 +104,7 @@ ponder.on("ORMPV2:MessageAssigned", async ({ event, context }) => {
ponder.on("ORMPV2:HashImported", async ({ event, context }) => {
const { HashImportedV2 } = context.db;
// filter other oracle
if (listenOracle.includes(event.args.oracle)) {
if (address.listenOracle.includes(event.args.oracle)) {
await HashImportedV2.create({
id: `${context.network.chainId}-${event.block.number}-${event.log.transactionIndex}-${event.log.logIndex}`,
data: {
Expand All @@ -137,7 +125,7 @@ ponder.on("ORMPV2:HashImported", async ({ event, context }) => {
ponder.on("SignaturePub:SignatureSubmittion", async ({ event, context }) => {
const { SignatureSubmittion } = context.db;
// filter other channels
if (listenSignature.includes(event.args.channel)) {
if (address.listenSignature.includes(event.args.channel)) {
await SignatureSubmittion.create({
id: `${context.network.chainId}-${event.block.number}-${event.log.transactionIndex}-${event.log.logIndex}`,
data: {
Expand Down
Loading