From 99a7b0a164f3e59edf0dd06647c42d9e645b0795 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Wed, 10 Apr 2024 16:58:13 -0700 Subject: [PATCH 01/20] add investor wallet to OGN/OGV tracking --- src/shared/processors/erc20s.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shared/processors/erc20s.ts b/src/shared/processors/erc20s.ts index cebfe76d..4d355dc2 100644 --- a/src/shared/processors/erc20s.ts +++ b/src/shared/processors/erc20s.ts @@ -24,6 +24,7 @@ const tracks: Record[0]> = { address: tokens.OGN, accountFilter: [ '0x2eae0cae2323167abf78462e0c0686865c67a655', // Origin: Team Distribution (starts at block 15350225) + '0xfe730b3cf80ca7b31905f70241f7c786baf443e3', // Origin: Investor Wallet ], intervalTracking: true, }, @@ -32,6 +33,7 @@ const tracks: Record[0]> = { address: tokens.OGV, accountFilter: [ '0x2eae0cae2323167abf78462e0c0686865c67a655', // Origin: Team Distribution (starts at block 15350225) + '0xfe730b3cf80ca7b31905f70241f7c786baf443e3', // Origin: Investor Wallet ], intervalTracking: true, }, From 6116085502fc9528f9b13b868a641ba12b6f74c8 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 11 Apr 2024 10:11:42 -0700 Subject: [PATCH 02/20] bps -> blockRate --- src/processor.ts | 7 ++++--- src/utils/blockFrequencyUpdater.ts | 13 ++++++++----- .../{calculateBPS.ts => calculateBlockRate.ts} | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) rename src/utils/{calculateBPS.ts => calculateBlockRate.ts} (93%) diff --git a/src/processor.ts b/src/processor.ts index eda2e939..4d396c9b 100644 --- a/src/processor.ts +++ b/src/processor.ts @@ -11,7 +11,7 @@ import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' import utc from 'dayjs/plugin/utc' -import { calculateBPS } from './utils/calculateBPS' +import { calculateBlockRate } from './utils/calculateBlockRate' dayjs.extend(duration) dayjs.extend(utc) @@ -126,7 +126,7 @@ export const run = ({ try { ctx.__state = new Map() if (ctx.blocks.length > 1) { - ctx.bps = await calculateBPS(ctx) + ctx.blockRate = await calculateBlockRate(ctx) // ctx.log.info({ bps: ctx.bps, length: ctx.blocks.length }) } @@ -223,7 +223,8 @@ export type Fields = EvmBatchProcessorFields< ReturnType > export type Context = DataHandlerContext & { - bps: number + chain: Chain + blockRate: number __state: Map } export type Block = Context['blocks']['0'] diff --git a/src/utils/blockFrequencyUpdater.ts b/src/utils/blockFrequencyUpdater.ts index 4912294b..538e57ee 100644 --- a/src/utils/blockFrequencyUpdater.ts +++ b/src/utils/blockFrequencyUpdater.ts @@ -48,8 +48,8 @@ export const blockFrequencyTracker = (params: { from: number }) => { } return (ctx: Context, block: Block) => { if (block.header.height < params.from) return - const { bps } = ctx - const frequency: number = getFrequency(bps, block.header.timestamp) + const { blockRate } = ctx + const frequency: number = getFrequency(blockRate, block.header.timestamp) return shouldProcess(block, frequency) } } @@ -65,15 +65,18 @@ export const blockFrequencyUpdater = (params: { from: number }) => { ) => { if (!ctx.blocks.length) return // If we're not at head, determine our frequency and then process. - const { bps } = ctx - let frequency: number = getFrequency(bps, ctx.blocks[0].header.timestamp) + const { blockRate } = ctx + let frequency: number = getFrequency( + blockRate, + ctx.blocks[0].header.timestamp, + ) for (let i = 0; i < ctx.blocks.length; i += frequency) { const block = ctx.blocks[i] if (!shouldProcess(block)) continue await fn(ctx, block) nextBlockToProcess = Math.floor((block.header.height + frequency) / frequency) * frequency - frequency = getFrequency(bps, block.header.timestamp) + frequency = getFrequency(blockRate, block.header.timestamp) } } } diff --git a/src/utils/calculateBPS.ts b/src/utils/calculateBlockRate.ts similarity index 93% rename from src/utils/calculateBPS.ts rename to src/utils/calculateBlockRate.ts index 1ad14b1f..3729edd1 100644 --- a/src/utils/calculateBPS.ts +++ b/src/utils/calculateBlockRate.ts @@ -5,7 +5,7 @@ import { Context } from '../processor' let lastBpsFrom = 0 let lastResult = 0 -export const calculateBPS = async (ctx: Context) => { +export const calculateBlockRate = async (ctx: Context) => { const lastBlockNumber = ctx.blocks[ctx.blocks.length - 1].header.height const bpsTestRange = 100_000 const bpsFrom = Math.max( From 915ec02e962389f6537a04e254993dd0946a521b Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 11 Apr 2024 11:59:13 -0700 Subject: [PATCH 03/20] wip multichain erc20 processing --- README.md | 2 +- commands.json | 8 +-- ...81391762-Data.js => 1712860524081-Data.js} | 40 +++++++---- package.json | 7 +- schema-general.graphql | 18 ++++- schema-oeth.graphql | 13 ---- schema.graphql | 31 ++++---- squid.yaml | 2 +- src/arbitrum/erc20.ts | 11 +++ src/arbitrum/index.ts | 1 + src/main-arbitrum.ts | 8 +-- src/{main-other.ts => main-mainnet.ts} | 18 +---- src/main.ts | 30 ++------ src/model/generated/erc20.model.ts | 7 +- src/model/generated/erc20Balance.model.ts | 4 ++ src/model/generated/erc20Holder.model.ts | 6 +- src/model/generated/erc20State.model.ts | 4 ++ ...istory.model.ts => erc20Transfer.model.ts} | 31 ++++---- src/model/generated/index.ts | 2 +- src/oeth/processors/ccip.ts | 8 +-- src/oeth/processors/oeth.ts | 2 - src/processor.ts | 35 ++++++--- src/shared/processor-templates/erc20/erc20.ts | 48 +++++++++---- .../processor-templates/otoken/otoken.ts | 47 +----------- src/shared/processors/erc20s.ts | 71 ++++++++++--------- src/shared/validators/validate-shared.ts | 64 +++++++++++------ src/utils/addresses.ts | 3 + 27 files changed, 284 insertions(+), 237 deletions(-) rename db/migrations/{1712281391762-Data.js => 1712860524081-Data.js} (95%) create mode 100644 src/arbitrum/erc20.ts create mode 100644 src/arbitrum/index.ts rename src/{main-other.ts => main-mainnet.ts} (67%) rename src/model/generated/{woethHistory.model.ts => erc20Transfer.model.ts} (69%) diff --git a/README.md b/README.md index cbfda715..d096a1d3 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ sqd down # Bring down squid container sqd up # Bring up squid container sqd process:oeth # Run OETH processor sqd process:ousd # Run OUSD processor -sqd process:other # Run misc processor +sqd process:mainnet # Run misc processor sqd migration:generate # Generate migration (sqd down && sqd up first) ``` diff --git a/commands.json b/commands.json index 4a263a9c..bf740682 100644 --- a/commands.json +++ b/commands.json @@ -144,7 +144,7 @@ "lib/main-ogv.js" ] }, - "process:other": { + "process:mainnet": { "description": "Load .env and start the squid processor", "deps": [ "build" @@ -152,7 +152,7 @@ "cmd": [ "node", "--require=dotenv/config", - "lib/main-other.js" + "lib/main-mainnet.js" ] }, "process:arbitrum:prod": { @@ -199,14 +199,14 @@ ], "hidden": true }, - "process:other:prod": { + "process:mainnet:prod": { "description": "Start the squid processor", "deps": [ "migration:apply" ], "cmd": [ "node", - "lib/main-other.js" + "lib/main-mainnet.js" ], "hidden": true }, diff --git a/db/migrations/1712281391762-Data.js b/db/migrations/1712860524081-Data.js similarity index 95% rename from db/migrations/1712281391762-Data.js rename to db/migrations/1712860524081-Data.js index fca5972d..898ed5c4 100644 --- a/db/migrations/1712281391762-Data.js +++ b/db/migrations/1712860524081-Data.js @@ -1,5 +1,5 @@ -module.exports = class Data1712281391762 { - name = 'Data1712281391762' +module.exports = class Data1712860524081 { + name = 'Data1712860524081' async up(db) { await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) @@ -18,14 +18,24 @@ module.exports = class Data1712281391762 { await db.query(`CREATE TABLE "native_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "account" text NOT NULL, "balance" numeric NOT NULL, CONSTRAINT "PK_62f6bdfe058e52d1914d0c2c1ce" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_45fb48f831ccadcf29f404824a" ON "native_balance" ("timestamp") `) await db.query(`CREATE INDEX "IDX_82d827c3b96fb3c5ab43068502" ON "native_balance" ("block_number") `) - await db.query(`CREATE TABLE "erc20" ("id" character varying NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "decimals" integer NOT NULL, "symbol" text NOT NULL, CONSTRAINT "PK_8d43ce15401ba044c55a72a8ceb" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "erc20_holder" ("id" character varying NOT NULL, "address" text NOT NULL, "account" text NOT NULL, CONSTRAINT "PK_3adce7edbac4bcb03c662c3a1ac" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "erc20_state" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "total_supply" numeric NOT NULL, "holder_count" integer NOT NULL, CONSTRAINT "PK_eac1124b07bbdedafd4fff2f7b7" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "erc20" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "decimals" integer NOT NULL, "symbol" text NOT NULL, CONSTRAINT "PK_8d43ce15401ba044c55a72a8ceb" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_905ff854e6782fc32dc4268a25" ON "erc20" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_40fd11c1a0d0f2562824894e85" ON "erc20" ("address") `) + await db.query(`CREATE TABLE "erc20_holder" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, CONSTRAINT "PK_3adce7edbac4bcb03c662c3a1ac" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_51b9e7c44702ef3a6f05d3702e" ON "erc20_holder" ("chain_id") `) + await db.query(`CREATE TABLE "erc20_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "total_supply" numeric NOT NULL, "holder_count" integer NOT NULL, CONSTRAINT "PK_eac1124b07bbdedafd4fff2f7b7" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_2b69abb250c647c7a4b5a5a715" ON "erc20_state" ("chain_id") `) await db.query(`CREATE INDEX "IDX_c3d08eb2dafe4b5b188924d835" ON "erc20_state" ("timestamp") `) await db.query(`CREATE INDEX "IDX_29e8edc6ba8cc37c0c16ff0baf" ON "erc20_state" ("block_number") `) - await db.query(`CREATE TABLE "erc20_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "balance" numeric NOT NULL, CONSTRAINT "PK_069b6549e7a9938cc89f32063a6" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "erc20_balance" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "balance" numeric NOT NULL, CONSTRAINT "PK_069b6549e7a9938cc89f32063a6" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_bb6a884e702f2887037d5a7eec" ON "erc20_balance" ("chain_id") `) await db.query(`CREATE INDEX "IDX_c9fbe21a3411d93ea586af2a4c" ON "erc20_balance" ("timestamp") `) await db.query(`CREATE INDEX "IDX_d1f50dc39003331b76fad8a640" ON "erc20_balance" ("block_number") `) + await db.query(`CREATE TABLE "erc20_transfer" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "to" text NOT NULL, "value" numeric NOT NULL, CONSTRAINT "PK_12764843146818a31e3d28fc577" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_f914d2e140eb88375a5a2ef6c7" ON "erc20_transfer" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_6350ddb2def19c1e3a06d8b3ec" ON "erc20_transfer" ("address") `) + await db.query(`CREATE INDEX "IDX_eca70565083880d00e9110b000" ON "erc20_transfer" ("from") `) + await db.query(`CREATE INDEX "IDX_9fdc9d58b6ae0cb13b9c7f8226" ON "erc20_transfer" ("to") `) await db.query(`CREATE TABLE "curve_pool" ("id" character varying NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "token_count" integer NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "token2" text, CONSTRAINT "PK_c04bba36a8aa877d6efa4eafd6c" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_76c9202c1160ce818f7a29d131" ON "curve_pool" ("address") `) await db.query(`CREATE TABLE "curve_pool_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "balance0" numeric NOT NULL, "balance1" numeric NOT NULL, "balance2" numeric NOT NULL, CONSTRAINT "PK_40412750bb910ca560aa084dd88" PRIMARY KEY ("id"))`) @@ -73,10 +83,6 @@ module.exports = class Data1712281391762 { await db.query(`CREATE INDEX "IDX_96956b1c8d29eb7066a97d5ea7" ON "oeth_history" ("block_number") `) await db.query(`CREATE INDEX "IDX_b14170bdb7fbc0775bf55df15d" ON "oeth_history" ("tx_hash") `) await db.query(`CREATE TABLE "oeth_address" ("id" character varying NOT NULL, "is_contract" boolean NOT NULL, "rebasing_option" character varying(6) NOT NULL, "balance" numeric NOT NULL, "earned" numeric NOT NULL, "credits" numeric NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_92a966afe47d584af73ce77a1cd" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "woeth_history" ("id" character varying NOT NULL, "address" text NOT NULL, "value" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "type" character varying(8) NOT NULL, CONSTRAINT "PK_078ca80778522886c3ce9dcf1cf" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_2b694747dde9f6915fc2106862" ON "woeth_history" ("address") `) - await db.query(`CREATE INDEX "IDX_a5642ab77eff35d76c2a9584e7" ON "woeth_history" ("block_number") `) - await db.query(`CREATE INDEX "IDX_49c09d8924e121e762ba96e5f3" ON "woeth_history" ("tx_hash") `) await db.query(`CREATE TABLE "oethapy" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "apy7_day_avg" numeric NOT NULL, "apy14_day_avg" numeric NOT NULL, "apy30_day_avg" numeric NOT NULL, "rebasing_credits_per_token" numeric NOT NULL, CONSTRAINT "PK_8dbb4d04591848361200f18f62a" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_b1a448045d1ed9d655b679a371" ON "oethapy" ("timestamp") `) await db.query(`CREATE INDEX "IDX_6b8a7a706a0701e659a7d81508" ON "oethapy" ("block_number") `) @@ -251,13 +257,23 @@ module.exports = class Data1712281391762 { await db.query(`DROP INDEX "public"."IDX_45fb48f831ccadcf29f404824a"`) await db.query(`DROP INDEX "public"."IDX_82d827c3b96fb3c5ab43068502"`) await db.query(`DROP TABLE "erc20"`) + await db.query(`DROP INDEX "public"."IDX_905ff854e6782fc32dc4268a25"`) + await db.query(`DROP INDEX "public"."IDX_40fd11c1a0d0f2562824894e85"`) await db.query(`DROP TABLE "erc20_holder"`) + await db.query(`DROP INDEX "public"."IDX_51b9e7c44702ef3a6f05d3702e"`) await db.query(`DROP TABLE "erc20_state"`) + await db.query(`DROP INDEX "public"."IDX_2b69abb250c647c7a4b5a5a715"`) await db.query(`DROP INDEX "public"."IDX_c3d08eb2dafe4b5b188924d835"`) await db.query(`DROP INDEX "public"."IDX_29e8edc6ba8cc37c0c16ff0baf"`) await db.query(`DROP TABLE "erc20_balance"`) + await db.query(`DROP INDEX "public"."IDX_bb6a884e702f2887037d5a7eec"`) await db.query(`DROP INDEX "public"."IDX_c9fbe21a3411d93ea586af2a4c"`) await db.query(`DROP INDEX "public"."IDX_d1f50dc39003331b76fad8a640"`) + await db.query(`DROP TABLE "erc20_transfer"`) + await db.query(`DROP INDEX "public"."IDX_f914d2e140eb88375a5a2ef6c7"`) + await db.query(`DROP INDEX "public"."IDX_6350ddb2def19c1e3a06d8b3ec"`) + await db.query(`DROP INDEX "public"."IDX_eca70565083880d00e9110b000"`) + await db.query(`DROP INDEX "public"."IDX_9fdc9d58b6ae0cb13b9c7f8226"`) await db.query(`DROP TABLE "curve_pool"`) await db.query(`DROP INDEX "public"."IDX_76c9202c1160ce818f7a29d131"`) await db.query(`DROP TABLE "curve_pool_balance"`) @@ -305,10 +321,6 @@ module.exports = class Data1712281391762 { await db.query(`DROP INDEX "public"."IDX_96956b1c8d29eb7066a97d5ea7"`) await db.query(`DROP INDEX "public"."IDX_b14170bdb7fbc0775bf55df15d"`) await db.query(`DROP TABLE "oeth_address"`) - await db.query(`DROP TABLE "woeth_history"`) - await db.query(`DROP INDEX "public"."IDX_2b694747dde9f6915fc2106862"`) - await db.query(`DROP INDEX "public"."IDX_a5642ab77eff35d76c2a9584e7"`) - await db.query(`DROP INDEX "public"."IDX_49c09d8924e121e762ba96e5f3"`) await db.query(`DROP TABLE "oethapy"`) await db.query(`DROP INDEX "public"."IDX_b1a448045d1ed9d655b679a371"`) await db.query(`DROP INDEX "public"."IDX_6b8a7a706a0701e659a7d81508"`) diff --git a/package.json b/package.json index 4dfb3e8f..688e205e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "private": true, "scripts": { "codegen": "echo '# GENERATED, DO NOT MODIFY\n' > schema.graphql && cat schema-*.graphql >> schema.graphql && sqd codegen && git add src/model/generated/*", - "migration:generate": "sqd down && sqd up && sqd migration:generate", + "migration:generate": "sqd down && sqd up && sqd migration:generate && git add db/migrations/*", + "generate": "npm-run-all codegen migration:generate", "build": "rm -rf lib && tsc", "prettier-check": "prettier --check **/*.ts **/*.json", "prettier-fix": "prettier --write **/*.ts **/*.json", @@ -13,8 +14,8 @@ "process:oeth": "sqd process:oeth", "process:ousd": "sqd process:ousd", "process:ogv": "sqd process:ogv", - "process:other": "sqd process:other", - "process": "npm-run-all --parallel process:arbitrum process:oeth process:ousd process:ogv process:other" + "process:mainnet": "sqd process:mainnet", + "process": "sqd process" }, "dependencies": { "@subsquid/archive-registry": "^3.3.0", diff --git a/schema-general.graphql b/schema-general.graphql index ad74035a..e0cb11e3 100644 --- a/schema-general.graphql +++ b/schema-general.graphql @@ -93,7 +93,8 @@ type ERC20 @entity { Format: 'address' """ id: ID! - address: String! + chainId: Int! @index + address: String! @index name: String! decimals: Int! symbol: String! @@ -104,6 +105,7 @@ type ERC20Holder @entity { Format: 'address:account' """ id: ID! + chainId: Int! @index address: String! account: String! } @@ -113,6 +115,7 @@ type ERC20State @entity { Format: 'address:blockNumber' """ id: ID! + chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index address: String! @@ -125,6 +128,7 @@ type ERC20Balance @entity { Format: 'address:account:blockNumber' """ id: ID! + chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index address: String! @@ -132,6 +136,18 @@ type ERC20Balance @entity { balance: BigInt! } +type ERC20Transfer @entity { + id: ID! + chainId: Int! @index + txHash: String! + blockNumber: Int! + timestamp: DateTime! + address: String! @index + from: String! @index + to: String! @index + value: BigInt! +} + type CurvePool @entity { id: ID! address: String! @index diff --git a/schema-oeth.graphql b/schema-oeth.graphql index 95bffdae..30900392 100644 --- a/schema-oeth.graphql +++ b/schema-oeth.graphql @@ -44,19 +44,6 @@ type OETHHistory @entity { type: HistoryType! } -""" -The History entity tracks events that change the balance of OETH for an address. -""" -type WOETHHistory @entity { - id: ID! - address: String! @index - value: BigInt! - timestamp: DateTime! - blockNumber: Int! @index - txHash: String! @index - type: HistoryType! -} - """ The Rebase entity tracks historical rebase events on the OETH contract. """ diff --git a/schema.graphql b/schema.graphql index 0634314b..d2f39816 100644 --- a/schema.graphql +++ b/schema.graphql @@ -95,7 +95,8 @@ type ERC20 @entity { Format: 'address' """ id: ID! - address: String! + chainId: Int! @index + address: String! @index name: String! decimals: Int! symbol: String! @@ -106,6 +107,7 @@ type ERC20Holder @entity { Format: 'address:account' """ id: ID! + chainId: Int! @index address: String! account: String! } @@ -115,6 +117,7 @@ type ERC20State @entity { Format: 'address:blockNumber' """ id: ID! + chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index address: String! @@ -127,6 +130,7 @@ type ERC20Balance @entity { Format: 'address:account:blockNumber' """ id: ID! + chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index address: String! @@ -134,6 +138,18 @@ type ERC20Balance @entity { balance: BigInt! } +type ERC20Transfer @entity { + id: ID! + chainId: Int! @index + txHash: String! + blockNumber: Int! + timestamp: DateTime! + address: String! @index + from: String! @index + to: String! @index + value: BigInt! +} + type CurvePool @entity { id: ID! address: String! @index @@ -306,19 +322,6 @@ type OETHHistory @entity { type: HistoryType! } -""" -The History entity tracks events that change the balance of OETH for an address. -""" -type WOETHHistory @entity { - id: ID! - address: String! @index - value: BigInt! - timestamp: DateTime! - blockNumber: Int! @index - txHash: String! @index - type: HistoryType! -} - """ The Rebase entity tracks historical rebase events on the OETH contract. """ diff --git a/squid.yaml b/squid.yaml index bde7258b..9d346c31 100644 --- a/squid.yaml +++ b/squid.yaml @@ -35,7 +35,7 @@ deploy: env: RPC_ENV: RPC_ENDPOINT_RETH - name: other-processor - cmd: [ "sqd", "process:other:prod" ] + cmd: [ "sqd", "process:mainnet:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH api: diff --git a/src/arbitrum/erc20.ts b/src/arbitrum/erc20.ts new file mode 100644 index 00000000..5f9f79a5 --- /dev/null +++ b/src/arbitrum/erc20.ts @@ -0,0 +1,11 @@ +import { createERC20Tracker } from '../shared/processor-templates/erc20' +import { WOETH_ARBITRUM_ADDRESS } from '../utils/addresses' + +const woethTransferProcessor = createERC20Tracker({ + from: 178662968, + address: WOETH_ARBITRUM_ADDRESS, +}) + +export const from = woethTransferProcessor.from +export const setup = woethTransferProcessor.setup +export const process = woethTransferProcessor.process diff --git a/src/arbitrum/index.ts b/src/arbitrum/index.ts new file mode 100644 index 00000000..c72dcbc8 --- /dev/null +++ b/src/arbitrum/index.ts @@ -0,0 +1 @@ +export * as transfers from './erc20' diff --git a/src/main-arbitrum.ts b/src/main-arbitrum.ts index 33264d46..10a33c73 100644 --- a/src/main-arbitrum.ts +++ b/src/main-arbitrum.ts @@ -1,13 +1,13 @@ -import { KnownArchives } from '@subsquid/archive-registry/lib/chains' +import { arbitrum } from 'viem/chains' +import { transfers } from './arbitrum' import { ccip } from './oeth/processors/ccip' import { run } from './processor' export const processor = { - archive: 'arbitrum' as KnownArchives, - rpcEnv: process.env.RPC_ARBITRUM_ENV, + chainId: arbitrum.id, stateSchema: 'arbitrum-processor', - processors: [ccip({ chainId: 42161 })], + processors: [transfers, ccip({ chainId: arbitrum.id })], postProcessors: [], validators: [], } diff --git a/src/main-other.ts b/src/main-mainnet.ts similarity index 67% rename from src/main-other.ts rename to src/main-mainnet.ts index 865ab8a6..bd3a250e 100644 --- a/src/main-other.ts +++ b/src/main-mainnet.ts @@ -5,26 +5,14 @@ import { processStatus } from './shared/processor-templates/processor-status' import * as balancer from './shared/processors/balancer' import * as curve from './shared/processors/curve' import { erc20s } from './shared/processors/erc20s' -import * as liquiditySources from './shared/processors/liquidity-sources' import * as maverick from './shared/processors/maverick' import * as native from './shared/processors/native' -import * as sushiswap from './shared/processors/sushiswap' -import * as uniswap from './shared/processors/uniswap' import * as validate from './shared/validators/validate-shared' - -sushiswap.initialize() -uniswap.initialize() +import { WOETH_ADDRESS } from './utils/addresses' export const processor = { - stateSchema: 'other-processor', - processors: [ - balancer, - curve, - maverick, - native, - ...erc20s(), - liquiditySources, - ], + stateSchema: 'mainnet-processor', + processors: [balancer, curve, maverick, native, ...erc20s()], postProcessors: [exchangeRates, liquidity, processStatus('other')], validators: [validate], } diff --git a/src/main.ts b/src/main.ts index d912d582..fc30977e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,28 +1,12 @@ -import { uniq } from 'lodash' - +import arbitrum from './main-arbitrum' +import mainnet from './main-mainnet' import oeth from './main-oeth' import ogv from './main-ogv' -import other from './main-other' import ousd from './main-ousd' import { run } from './processor' -run({ - processors: uniq([ - ...oeth.processors, - ...ousd.processors, - ...ogv.processors, - ...other.processors, - ]), - postProcessors: uniq([ - ...oeth.postProcessors, - ...ousd.postProcessors, - ...ogv.postProcessors, - ...other.postProcessors, - ]), - validators: uniq([ - ...oeth.validators, - ...ousd.validators, - ...ogv.validators, - ...other.validators, - ]), -}) +run(mainnet) +// run(oeth) +// run(ogv) +// run(ousd) +// run(arbitrum) diff --git a/src/model/generated/erc20.model.ts b/src/model/generated/erc20.model.ts index 35530660..37998202 100644 --- a/src/model/generated/erc20.model.ts +++ b/src/model/generated/erc20.model.ts @@ -1,4 +1,4 @@ -import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_} from "typeorm" +import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_} from "typeorm" @Entity_() export class ERC20 { @@ -12,6 +12,11 @@ export class ERC20 { @PrimaryColumn_() id!: string + @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + + @Index_() @Column_("text", {nullable: false}) address!: string diff --git a/src/model/generated/erc20Balance.model.ts b/src/model/generated/erc20Balance.model.ts index f78a6524..cba53f3d 100644 --- a/src/model/generated/erc20Balance.model.ts +++ b/src/model/generated/erc20Balance.model.ts @@ -13,6 +13,10 @@ export class ERC20Balance { @PrimaryColumn_() id!: string + @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + @Index_() @Column_("timestamp with time zone", {nullable: false}) timestamp!: Date diff --git a/src/model/generated/erc20Holder.model.ts b/src/model/generated/erc20Holder.model.ts index c39d5612..8515f6f7 100644 --- a/src/model/generated/erc20Holder.model.ts +++ b/src/model/generated/erc20Holder.model.ts @@ -1,4 +1,4 @@ -import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_} from "typeorm" +import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_} from "typeorm" @Entity_() export class ERC20Holder { @@ -12,6 +12,10 @@ export class ERC20Holder { @PrimaryColumn_() id!: string + @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + @Column_("text", {nullable: false}) address!: string diff --git a/src/model/generated/erc20State.model.ts b/src/model/generated/erc20State.model.ts index 3d2dd72d..8e1ac6b5 100644 --- a/src/model/generated/erc20State.model.ts +++ b/src/model/generated/erc20State.model.ts @@ -13,6 +13,10 @@ export class ERC20State { @PrimaryColumn_() id!: string + @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + @Index_() @Column_("timestamp with time zone", {nullable: false}) timestamp!: Date diff --git a/src/model/generated/woethHistory.model.ts b/src/model/generated/erc20Transfer.model.ts similarity index 69% rename from src/model/generated/woethHistory.model.ts rename to src/model/generated/erc20Transfer.model.ts index 2686e34c..268efbcd 100644 --- a/src/model/generated/woethHistory.model.ts +++ b/src/model/generated/erc20Transfer.model.ts @@ -1,13 +1,9 @@ import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_} from "typeorm" import * as marshal from "./marshal" -import {HistoryType} from "./_historyType" -/** - * The History entity tracks events that change the balance of OETH for an address. - */ @Entity_() -export class WOETHHistory { - constructor(props?: Partial) { +export class ERC20Transfer { + constructor(props?: Partial) { Object.assign(this, props) } @@ -15,23 +11,30 @@ export class WOETHHistory { id!: string @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + @Column_("text", {nullable: false}) - address!: string + txHash!: string - @Column_("numeric", {transformer: marshal.bigintTransformer, nullable: false}) - value!: bigint + @Column_("int4", {nullable: false}) + blockNumber!: number @Column_("timestamp with time zone", {nullable: false}) timestamp!: Date @Index_() - @Column_("int4", {nullable: false}) - blockNumber!: number + @Column_("text", {nullable: false}) + address!: string @Index_() @Column_("text", {nullable: false}) - txHash!: string + from!: string - @Column_("varchar", {length: 8, nullable: false}) - type!: HistoryType + @Index_() + @Column_("text", {nullable: false}) + to!: string + + @Column_("numeric", {transformer: marshal.bigintTransformer, nullable: false}) + value!: bigint } diff --git a/src/model/generated/index.ts b/src/model/generated/index.ts index 59bf54e3..4ca4dcce 100644 --- a/src/model/generated/index.ts +++ b/src/model/generated/index.ts @@ -8,6 +8,7 @@ export * from "./erc20.model" export * from "./erc20Holder.model" export * from "./erc20State.model" export * from "./erc20Balance.model" +export * from "./erc20Transfer.model" export * from "./curvePool.model" export * from "./curvePoolBalance.model" export * from "./curvePoolRate.model" @@ -27,7 +28,6 @@ export * from "./oethAddress.model" export * from "./_rebasingOption" export * from "./oethHistory.model" export * from "./_historyType" -export * from "./woethHistory.model" export * from "./oethRebase.model" export * from "./oethRebaseOption.model" export * from "./oethapy.model" diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index c0897e86..0ee00fb9 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -108,17 +108,17 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { state: data.state, }) result.bridgeTransferStates.set(state.id, state) - console.log(state) + // console.log(state) } if (transfersToLockReleasePool.matches(log)) { - console.log('match transfersToOnramp') + // console.log('match transfersToOnramp') const logSendRequested = block.logs.find( (l) => log.transactionHash === l.transactionHash && ccipSendRequested.matches(l), ) if (logSendRequested) { - console.log('match ccipSendRequested') + // console.log('match ccipSendRequested') const data = ccipOnRampAbi.events.CCIPSendRequested.decode(logSendRequested) const message = data.message @@ -146,7 +146,7 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { sender: message.sender.toLowerCase(), receiver: message.receiver.toLowerCase(), }) - console.log(transfer) + // console.log(transfer) result.transfers.set(transfer.id, transfer) } } diff --git a/src/oeth/processors/oeth.ts b/src/oeth/processors/oeth.ts index 60fa8a6d..00257adc 100644 --- a/src/oeth/processors/oeth.ts +++ b/src/oeth/processors/oeth.ts @@ -7,7 +7,6 @@ import { OETHHistory, OETHRebase, OETHRebaseOption, - WOETHHistory, } from '../../model' import { createOTokenProcessor, @@ -56,7 +55,6 @@ export const process = createOTokenProcessor({ OTokenAsset: OETHAsset, OTokenAddress: OETHAddress, OTokenHistory: OETHHistory, - WOTokenHistory: WOETHHistory, OTokenAPY: OETHAPY, OTokenRebase: OETHRebase, OTokenRebaseOption: OETHRebaseOption, diff --git a/src/processor.ts b/src/processor.ts index 4d396c9b..441da498 100644 --- a/src/processor.ts +++ b/src/processor.ts @@ -10,6 +10,8 @@ import assert from 'assert' import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' import utc from 'dayjs/plugin/utc' +import { Chain } from 'viem' +import { arbitrum, mainnet } from 'viem/chains' import { calculateBlockRate } from './utils/calculateBlockRate' @@ -74,22 +76,36 @@ interface Processor { name?: string from?: number initialize?: (ctx: Context) => Promise // To only be run once per `sqd process`. - setup?: (p: ReturnType) => void + setup?: (p: ReturnType, chain: Chain) => void process: (ctx: Context) => Promise } let initialized = false +const chainConfigs: Record< + number, + { chain: Chain; archive: KnownArchives; rpcEnv: string } | undefined +> = { + [mainnet.id]: { + chain: mainnet, + archive: 'eth-mainnet', + rpcEnv: process.env.RPC_ENV ?? 'RPC_ENDPOINT', + }, + [arbitrum.id]: { + chain: arbitrum, + archive: 'arbitrum', + rpcEnv: process.env.RPC_ARBITRUM_ENV ?? 'RPC_ARBITRUM_ENDPOINT', + }, +} + export const run = ({ - archive, - rpcEnv, + chainId = 1, stateSchema, processors, postProcessors, validators, }: { - archive?: KnownArchives - rpcEnv?: string + chainId?: number stateSchema?: string processors: Processor[] postProcessors?: Processor[] @@ -100,7 +116,9 @@ export const run = ({ 'All processors must have a `from` defined', ) - const processor = createSquidProcessor(archive, rpcEnv) + const config = chainConfigs[chainId] + if (!config) throw new Error('No chain configuration found.') + const processor = createSquidProcessor(config.archive, config.rpcEnv) processor.setBlockRange({ from: process.env.BLOCK_FROM @@ -113,8 +131,8 @@ export const run = ({ ), to: process.env.BLOCK_TO ? Number(process.env.BLOCK_TO) : undefined, }) - processors.forEach((p) => p.setup?.(processor)) - postProcessors?.forEach((p) => p.setup?.(processor)) + processors.forEach((p) => p.setup?.(processor, config.chain)) + postProcessors?.forEach((p) => p.setup?.(processor, config.chain)) processor.run( new TypeormDatabase({ stateSchema, @@ -124,6 +142,7 @@ export const run = ({ async (_ctx) => { const ctx = _ctx as Context try { + ctx.chain = config.chain ctx.__state = new Map() if (ctx.blocks.length > 1) { ctx.blockRate = await calculateBlockRate(ctx) diff --git a/src/shared/processor-templates/erc20/erc20.ts b/src/shared/processor-templates/erc20/erc20.ts index bace1848..52b270e6 100644 --- a/src/shared/processor-templates/erc20/erc20.ts +++ b/src/shared/processor-templates/erc20/erc20.ts @@ -1,7 +1,13 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import * as abi from '../../../abi/erc20' -import { ERC20, ERC20Balance, ERC20Holder, ERC20State } from '../../../model' +import { + ERC20, + ERC20Balance, + ERC20Holder, + ERC20State, + ERC20Transfer, +} from '../../../model' import { Context } from '../../../processor' import { ADDRESS_ZERO, TokenAddress } from '../../../utils/addresses' import { blockFrequencyTracker } from '../../../utils/blockFrequencyUpdater' @@ -69,7 +75,8 @@ export const createERC20Tracker = ({ contract.decimals(), ]) erc20 = new ERC20({ - id: address, + id: `${ctx.chain.id}-${address}`, + chainId: ctx.chain.id, address, name, symbol, @@ -106,6 +113,7 @@ export const createERC20Tracker = ({ const result = { states: new Map(), balances: new Map(), + transfers: new Map(), newHolders: new Map(), removedHolders: new Set(), } @@ -113,10 +121,11 @@ export const createERC20Tracker = ({ if (block.header.height < from) continue const contract = new abi.Contract(ctx, block.header, address) const updateState = async () => { - const id = `${block.header.height}:${address}` + const id = `${ctx.chain.id}-${block.header.height}-${address}` const totalSupply = await contract.totalSupply() const state = new ERC20State({ id, + chainId: ctx.chain.id, address, timestamp: new Date(block.header.timestamp), blockNumber: block.header.height, @@ -143,9 +152,10 @@ export const createERC20Tracker = ({ accounts.forEach((account, i) => { if (account === ADDRESS_ZERO) return account = account.toLowerCase() - const id = `${block.header.height}:${address}:${account}` + const id = `${ctx.chain.id}-${block.header.height}-${address}-${account}` const balance = new ERC20Balance({ id, + chainId: ctx.chain.id, timestamp: new Date(block.header.timestamp), blockNumber: block.header.height, address, @@ -156,11 +166,12 @@ export const createERC20Tracker = ({ if (balance.balance === 0n) { doStateUpdate = true holders.delete(account) - result.newHolders.delete(`${address}:${account}`) - result.removedHolders.add(`${address}:${account}`) + result.newHolders.delete(account) + result.removedHolders.add(account) } else if (!holders.has(account)) { const newHolder = new ERC20Holder({ - id: `${address}:${account}`, + id: `${ctx.chain.id}-${address}-${account}`, + chainId: ctx.chain.id, address, account, }) @@ -168,8 +179,8 @@ export const createERC20Tracker = ({ doStateUpdate = true holders.add(account) } - result.newHolders.set(`${address}:${account}`, newHolder) - result.removedHolders.delete(`${address}:${account}`) + result.newHolders.set(newHolder.account, newHolder) + result.removedHolders.delete(newHolder.account) } }) } @@ -186,9 +197,21 @@ export const createERC20Tracker = ({ for (const log of block.logs) { const isTransferLog = transferLogFilters.find((l) => l.matches(log)) if (isTransferLog) { - const transfer = abi.events.Transfer.decode(log) - accounts.add(transfer.from.toLowerCase()) - accounts.add(transfer.to.toLowerCase()) + const data = abi.events.Transfer.decode(log) + accounts.add(data.from.toLowerCase()) + accounts.add(data.to.toLowerCase()) + const transfer = new ERC20Transfer({ + id: `${ctx.chain.id}-${log.id}`, + chainId: ctx.chain.id, + txHash: log.transactionHash, + blockNumber: block.header.height, + timestamp: new Date(block.header.timestamp), + address: log.address, + from: data.from.toLowerCase(), + to: data.to.toLowerCase(), + value: data.value, + }) + result.transfers.set(transfer.id, transfer) } const isRebaseLog = rebaseFilters.find((l) => l.matches(log)) if (isRebaseLog) { @@ -207,6 +230,7 @@ export const createERC20Tracker = ({ ctx.store.upsert([...result.newHolders.values()]), ctx.store.insert([...result.states.values()]), ctx.store.insert([...result.balances.values()]), + ctx.store.insert([...result.transfers.values()]), ctx.store.remove( [...result.removedHolders.values()].map( (id) => new ERC20Holder({ id }), diff --git a/src/shared/processor-templates/otoken/otoken.ts b/src/shared/processor-templates/otoken/otoken.ts index 8469f82c..b3c65e73 100644 --- a/src/shared/processor-templates/otoken/otoken.ts +++ b/src/shared/processor-templates/otoken/otoken.ts @@ -1,6 +1,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { groupBy } from 'lodash' import { GetTransactionReceiptReturnType } from 'viem' +import { mainnet } from 'viem/chains' import * as erc20 from '../../../abi/erc20' import * as otoken from '../../../abi/otoken' @@ -24,7 +25,6 @@ import { OUSDRebase, OUSDRebaseOption, RebasingOption, - WOETHHistory, } from '../../../model' import { Context } from '../../../processor' import { type Transaction, activityFromTx } from '../../../utils/activityFromTx' @@ -46,7 +46,6 @@ type OTokenAPY = EntityClassT | EntityClassT type OTokenActivity = EntityClassT | EntityClassT type OTokenAddress = EntityClassT | EntityClassT type OTokenHistory = EntityClassT | EntityClassT -type WOTokenHistory = EntityClassT type OTokenRebase = EntityClassT | EntityClassT type OTokenRebaseOption = | EntityClassT @@ -115,7 +114,6 @@ export const createOTokenProcessor = (params: { OTokenAPY: OTokenAPY OTokenAddress: OTokenAddress OTokenHistory: OTokenHistory - WOTokenHistory?: WOTokenHistory OTokenActivity: OTokenActivity OTokenRebase: OTokenRebase OTokenRebaseOption: OTokenRebaseOption @@ -126,7 +124,6 @@ export const createOTokenProcessor = (params: { otokens: InstanceTypeOfConstructor[] assets: InstanceTypeOfConstructor[] history: InstanceTypeOfConstructor[] - wrappedHistory: InstanceTypeOfConstructor[] rebases: InstanceTypeOfConstructor[] rebaseOptions: InstanceTypeOfConstructor[] apies: InstanceTypeOfConstructor[] @@ -184,7 +181,6 @@ export const createOTokenProcessor = (params: { otokens: [], assets: [], history: [], - wrappedHistory: [], rebases: [], rebaseOptions: [], apies: [], @@ -197,7 +193,6 @@ export const createOTokenProcessor = (params: { } for (const log of block.logs) { await processTransfer(ctx, result, block, log) - await processTransferWOETH(ctx, result, block, log) await processYieldDistribution(ctx, result, block, log) await processTotalSupplyUpdatedHighres(ctx, result, block, log) await processRebaseOptEvent(ctx, result, block, log) @@ -213,7 +208,6 @@ export const createOTokenProcessor = (params: { ctx.store.insert(result.otokens), ctx.store.insert(result.assets), ctx.store.insert(result.history), - ctx.store.insert(result.wrappedHistory), ctx.store.insert(result.rebases), ctx.store.insert(result.rebaseOptions), ctx.store.insert(result.activity), @@ -360,45 +354,6 @@ export const createOTokenProcessor = (params: { } } - const processTransferWOETH = async ( - ctx: Context, - result: ProcessResult, - block: Context['blocks']['0'], - log: Context['blocks']['0']['logs']['0'], - ) => { - if (!params.WOTokenHistory) return - if (log.address !== params.WOTOKEN_ADDRESS) return - if (log.topics[0] === otoken.events.Transfer.topic) { - const dataRaw = otoken.events.Transfer.decode(log) - const data = { - from: dataRaw.from.toLowerCase(), - to: dataRaw.to.toLowerCase(), - value: dataRaw.value, - } - - result.wrappedHistory.push( - new params.WOTokenHistory({ - id: getUniqueId(`${log.id}-${params.WOTOKEN_ADDRESS}`), - address: data.from, - value: -data.value, - timestamp: new Date(block.header.timestamp), - blockNumber: block.header.height, - txHash: log.transactionHash, - type: HistoryType.Sent, - }), - new params.WOTokenHistory({ - id: getUniqueId(`${log.id}-${params.WOTOKEN_ADDRESS}`), - address: data.to, - value: data.value, - timestamp: new Date(block.header.timestamp), - blockNumber: block.header.height, - txHash: log.transactionHash, - type: HistoryType.Received, - }), - ) - } - } - const processActivity = async ( ctx: Context, result: ProcessResult, diff --git a/src/shared/processors/erc20s.ts b/src/shared/processors/erc20s.ts index 4d355dc2..2ab21991 100644 --- a/src/shared/processors/erc20s.ts +++ b/src/shared/processors/erc20s.ts @@ -5,6 +5,7 @@ import { OETH_VAULT_ADDRESS, OUSD_VAULT_ADDRESS, TokenSymbol, + WOETH_ADDRESS, oethStrategyArray, ousdStrategyArray, tokens, @@ -49,6 +50,10 @@ const tracks: Record[0]> = { }), ], }, + wOETH: { + from: 16933090, + address: WOETH_ADDRESS, + }, // OUSD Related USDT: { from: 11362821, @@ -96,39 +101,39 @@ const tracks: Record[0]> = { ], intervalTracking: true, }, - rETH: { - from: 16933090, // oeth deploy date - address: tokens.rETH, - accountFilter: [ - ...oethStrategyArray, - OETH_VAULT_ADDRESS, - '0xa4e0faA58465A2D369aa21B3e42d43374c6F9613', // Uniswap rETH/WETH - '0x553e9c493678d8606d6a5ba284643db2110df823', // Uniswap rETH/WETH - ], - intervalTracking: true, - }, - wstETH: { - from: 16933090, // oeth deploy date - address: tokens.wstETH, - accountFilter: [ - ...oethStrategyArray, - OETH_VAULT_ADDRESS, - '0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa', // Uniswap wstETH/WETH - ], - intervalTracking: true, - }, - stETH: { - from: 16933090, // oeth deploy date - address: tokens.stETH, - accountFilter: [...oethStrategyArray, OETH_VAULT_ADDRESS], - intervalTracking: true, - }, - frxETH: { - from: 16933090, // oeth deploy date - address: tokens.frxETH, - accountFilter: [...oethStrategyArray, OETH_VAULT_ADDRESS], - intervalTracking: true, - }, + // rETH: { + // from: 16933090, // oeth deploy date + // address: tokens.rETH, + // accountFilter: [ + // ...oethStrategyArray, + // OETH_VAULT_ADDRESS, + // '0xa4e0faA58465A2D369aa21B3e42d43374c6F9613', // Uniswap rETH/WETH + // '0x553e9c493678d8606d6a5ba284643db2110df823', // Uniswap rETH/WETH + // ], + // intervalTracking: true, + // }, + // wstETH: { + // from: 16933090, // oeth deploy date + // address: tokens.wstETH, + // accountFilter: [ + // ...oethStrategyArray, + // OETH_VAULT_ADDRESS, + // '0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa', // Uniswap wstETH/WETH + // ], + // intervalTracking: true, + // }, + // stETH: { + // from: 16933090, // oeth deploy date + // address: tokens.stETH, + // accountFilter: [...oethStrategyArray, OETH_VAULT_ADDRESS], + // intervalTracking: true, + // }, + // frxETH: { + // from: 16933090, // oeth deploy date + // address: tokens.frxETH, + // accountFilter: [...oethStrategyArray, OETH_VAULT_ADDRESS], + // intervalTracking: true, + // }, } // This is a function to allow others to subscribe to balance tracking diff --git a/src/shared/validators/validate-shared.ts b/src/shared/validators/validate-shared.ts index 1f7cc0f3..193ca707 100644 --- a/src/shared/validators/validate-shared.ts +++ b/src/shared/validators/validate-shared.ts @@ -94,89 +94,100 @@ const e = (arr: any[]) => { const expectations = { erc20States: e([ { + chainId: 1, address: '0x6b175474e89094c44da98b954eedeac495271d0f', blockNumber: 11367184, holderCount: 0, - id: '11367184:0x6b175474e89094c44da98b954eedeac495271d0f', + id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f', timestamp: '2020-12-01T14:22:02.000000Z', totalSupply: '692399822445745145525155198', }, { + chainId: 1, address: '0xdac17f958d2ee523a2206206994597c13d831ec7', blockNumber: 11401000, holderCount: 2, - id: '11401000:0xdac17f958d2ee523a2206206994597c13d831ec7', + id: '1-11401000-0xdac17f958d2ee523a2206206994597c13d831ec7', timestamp: '2020-12-06T19:20:45.000000Z', totalSupply: '12442213561495551', }, { + chainId: 1, address: '0x6b175474e89094c44da98b954eedeac495271d0f', blockNumber: 12964450, holderCount: 3, - id: '12964450:0x6b175474e89094c44da98b954eedeac495271d0f', + id: '1-12964450-0x6b175474e89094c44da98b954eedeac495271d0f', timestamp: '2021-08-05T10:27:01.000000Z', totalSupply: '5445306543169379254918394333', }, { + chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', blockNumber: 12964450, holderCount: 3, - id: '12964450:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + id: '1-12964450-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', timestamp: '2021-08-05T10:27:01.000000Z', totalSupply: '26720553335039550', }, { + chainId: 1, address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', blockNumber: 17296080, holderCount: 90, - id: '17296080:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', + id: '1-17296080-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', timestamp: '2023-05-19T21:05:35.000000Z', totalSupply: '3528560797966319884732', }, { + chainId: 1, address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', blockNumber: 17296257, holderCount: 90, - id: '17296257:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', + id: '1-17296257-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', timestamp: '2023-05-19T21:40:59.000000Z', totalSupply: '3529563347644033413431', }, { + chainId: 1, address: '0x5e8422345238f34275888049021821e8e08caa1f', blockNumber: 17979735, holderCount: 0, - id: '17979735:0x5e8422345238f34275888049021821e8e08caa1f', + id: '1-17979735-0x5e8422345238f34275888049021821e8e08caa1f', timestamp: '2023-08-23T20:16:11.000000Z', totalSupply: '254108641082873082034663', }, { + chainId: 1, address: '0x5e8422345238f34275888049021821e8e08caa1f', blockNumber: 17986884, holderCount: 0, - id: '17986884:0x5e8422345238f34275888049021821e8e08caa1f', + id: '1-17986884-0x5e8422345238f34275888049021821e8e08caa1f', timestamp: '2023-08-24T20:16:59.000000Z', totalSupply: '254331703007023082033663', }, { + chainId: 1, address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', blockNumber: 18388340, - holderCount: 499, - id: '18388340:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', + holderCount: 500, + id: '1-18388340-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', timestamp: '2023-10-20T01:44:59.000000Z', totalSupply: '38214229823673500371847', }, { + chainId: 1, address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', blockNumber: 18389908, - holderCount: 499, - id: '18389908:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', + holderCount: 500, + id: '1-18389908-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', timestamp: '2023-10-20T06:59:47.000000Z', totalSupply: '38217047513690199318528', }, ]), erc20Balances: e([ { - id: '11362821:0xdac17f958d2ee523a2206206994597c13d831ec7:0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', + id: '1-11362821-0xdac17f958d2ee523a2206206994597c13d831ec7-0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', + chainId: 1, timestamp: '2020-11-30T22:20:30.000000Z', blockNumber: 11362821, balance: '11457161992607', @@ -184,7 +195,8 @@ const expectations = { account: '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', }, { - id: '11367184:0x6b175474e89094c44da98b954eedeac495271d0f:0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', + id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f-0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', + chainId: 1, timestamp: '2020-12-01T14:22:02.000000Z', blockNumber: 11367184, balance: '0', @@ -192,7 +204,8 @@ const expectations = { account: '0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', }, { - id: '11367184:0x6b175474e89094c44da98b954eedeac495271d0f:0x5e3646a1db86993f73e6b74a57d8640b69f7e259', + id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f-0x5e3646a1db86993f73e6b74a57d8640b69f7e259', + chainId: 1, timestamp: '2020-12-01T14:22:02.000000Z', blockNumber: 11367184, balance: '0', @@ -200,7 +213,8 @@ const expectations = { account: '0x5e3646a1db86993f73e6b74a57d8640b69f7e259', }, { - id: '17149230:0x6b175474e89094c44da98b954eedeac495271d0f:0x7a192dd9cc4ea9bdedec9992df74f1da55e60a19', + id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x7a192dd9cc4ea9bdedec9992df74f1da55e60a19', + chainId: 1, timestamp: '2023-04-29T03:58:35.000000Z', blockNumber: 17149230, balance: '0', @@ -208,7 +222,8 @@ const expectations = { account: '0x7a192dd9cc4ea9bdedec9992df74f1da55e60a19', }, { - id: '17149230:0x6b175474e89094c44da98b954eedeac495271d0f:0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70', + id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70', + chainId: 1, timestamp: '2023-04-29T03:58:35.000000Z', blockNumber: 17149230, balance: '556620480436222718976', @@ -216,7 +231,8 @@ const expectations = { account: '0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70', }, { - id: '17149230:0x6b175474e89094c44da98b954eedeac495271d0f:0x028171bca77440897b824ca71d1c56cac55b68a3', + id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x028171bca77440897b824ca71d1c56cac55b68a3', + chainId: 1, timestamp: '2023-04-29T03:58:35.000000Z', blockNumber: 17149230, balance: '29859949254086282250927323', @@ -224,7 +240,8 @@ const expectations = { account: '0x028171bca77440897b824ca71d1c56cac55b68a3', }, { - id: '17149230:0x6b175474e89094c44da98b954eedeac495271d0f:0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', + id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', + chainId: 1, timestamp: '2023-04-29T03:58:35.000000Z', blockNumber: 17149230, balance: '175900582068662134551795199', @@ -232,7 +249,8 @@ const expectations = { account: '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', }, { - id: '17156244:0x6b175474e89094c44da98b954eedeac495271d0f:0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', + id: '1-17156244-0x6b175474e89094c44da98b954eedeac495271d0f-0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', + chainId: 1, timestamp: '2023-04-30T03:38:59.000000Z', blockNumber: 17156244, balance: '0', @@ -240,7 +258,8 @@ const expectations = { account: '0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', }, { - id: '17904321:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3:0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b', + id: '1-17904321-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3-0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b', + chainId: 1, timestamp: '2023-08-13T07:02:47.000000Z', blockNumber: 17904321, balance: '4081205214585785457', @@ -248,7 +267,8 @@ const expectations = { account: '0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b', }, { - id: '17904321:0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3:0x46d13d72db5d05bd2671312e321867ab8b30d9f6', + id: '1-17904321-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3-0x46d13d72db5d05bd2671312e321867ab8b30d9f6', + chainId: 1, timestamp: '2023-08-13T07:02:47.000000Z', blockNumber: 17904321, balance: '4081198559585393770', diff --git a/src/utils/addresses.ts b/src/utils/addresses.ts index 99ba0fbb..5a752de5 100644 --- a/src/utils/addresses.ts +++ b/src/utils/addresses.ts @@ -21,6 +21,8 @@ export const OETH_HARVESTER_ADDRESS = `0x0d017afa83eace9f10a8ec5b6e13941664a6785 export const OETH_ZAPPER_ADDRESS = '0x9858e47bcbbe6fbac040519b02d7cd4b2c470c66' export const OETH_DRIPPER_ADDRESS = '0xc0f42f73b8f01849a2dd99753524d4ba14317eb3' export const WOETH_ADDRESS = '0xdcee70654261af21c44c093c300ed3bb97b78192' +export const WOETH_ARBITRUM_ADDRESS = + '0xd8724322f44e5c58d7a815f542036fb17dbbf839' export const WETH_ADDRESS = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' export const STETH_ADDRESS = '0xae7ab96520de3a18e5e111b5eaab095312d7fe84' @@ -84,6 +86,7 @@ export const tokens = { OETH: OETH_ADDRESS, OUSD: OUSD_ADDRESS, wOETH: WOETH_ADDRESS, + wOETH_arbitrum: WOETH_ARBITRUM_ADDRESS, // Dollar DAI: DAI_ADDRESS, From 51a785a6f3754c18ac4aef97b968aa3c6468e424 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Fri, 12 Apr 2024 17:31:52 -0700 Subject: [PATCH 04/20] erc20 transfers, multichain, remove things likely no longer needed --- ...60524081-Data.js => 1712960154611-Data.js} | 4 +- src/arbitrum/index.ts | 2 +- src/main-arbitrum.ts | 4 +- src/main-mainnet.ts | 4 +- src/main.ts | 2 +- src/processor.ts | 25 +-- src/shared/processors/balancer/balancer.ts | 120 +++++------ src/shared/processors/curve/curve.ts | 134 ++++++------- src/shared/processors/erc20s.ts | 19 +- src/shared/processors/maverick.ts | 36 ++-- src/shared/processors/native.ts | 10 +- src/shared/validators/validate-shared.ts | 186 +----------------- src/utils/blockFrequencyUpdater.ts | 69 +++---- src/utils/multicall.ts | 22 ++- 14 files changed, 234 insertions(+), 403 deletions(-) rename db/migrations/{1712860524081-Data.js => 1712960154611-Data.js} (99%) diff --git a/db/migrations/1712860524081-Data.js b/db/migrations/1712960154611-Data.js similarity index 99% rename from db/migrations/1712860524081-Data.js rename to db/migrations/1712960154611-Data.js index 898ed5c4..12eebf5c 100644 --- a/db/migrations/1712860524081-Data.js +++ b/db/migrations/1712960154611-Data.js @@ -1,5 +1,5 @@ -module.exports = class Data1712860524081 { - name = 'Data1712860524081' +module.exports = class Data1712960154611 { + name = 'Data1712960154611' async up(db) { await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) diff --git a/src/arbitrum/index.ts b/src/arbitrum/index.ts index c72dcbc8..de35cab2 100644 --- a/src/arbitrum/index.ts +++ b/src/arbitrum/index.ts @@ -1 +1 @@ -export * as transfers from './erc20' +export * as erc20 from './erc20' diff --git a/src/main-arbitrum.ts b/src/main-arbitrum.ts index 10a33c73..260cd34a 100644 --- a/src/main-arbitrum.ts +++ b/src/main-arbitrum.ts @@ -1,13 +1,13 @@ import { arbitrum } from 'viem/chains' -import { transfers } from './arbitrum' +import { erc20 } from './arbitrum' import { ccip } from './oeth/processors/ccip' import { run } from './processor' export const processor = { chainId: arbitrum.id, stateSchema: 'arbitrum-processor', - processors: [transfers, ccip({ chainId: arbitrum.id })], + processors: [erc20, ccip({ chainId: arbitrum.id })], postProcessors: [], validators: [], } diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index bd3a250e..fdaa9e22 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -12,8 +12,8 @@ import { WOETH_ADDRESS } from './utils/addresses' export const processor = { stateSchema: 'mainnet-processor', - processors: [balancer, curve, maverick, native, ...erc20s()], - postProcessors: [exchangeRates, liquidity, processStatus('other')], + processors: [curve, ...erc20s()], + postProcessors: [exchangeRates, processStatus('other')], validators: [validate], } export default processor diff --git a/src/main.ts b/src/main.ts index fc30977e..0fe54d35 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import ousd from './main-ousd' import { run } from './processor' run(mainnet) +run(arbitrum) // run(oeth) // run(ogv) // run(ousd) -// run(arbitrum) diff --git a/src/processor.ts b/src/processor.ts index 441da498..ca2a62ab 100644 --- a/src/processor.ts +++ b/src/processor.ts @@ -25,23 +25,14 @@ export const createSquidProcessor = ( const url = process.env[rpc_env] || 'http://localhost:8545' console.log(`RPC URL: ${url}`) return new EvmBatchProcessor() - .setDataSource({ - // Change the Archive endpoints for run the squid - // against the other EVM networks - // For a full list of supported networks and config options - // see https://docs.subsquid.io/evm-indexing/ - archive: lookupArchive(archive), - - // Must be set for RPC ingestion (https://docs.subsquid.io/evm-indexing/evm-processor/) - // OR to enable contract state queries (https://docs.subsquid.io/evm-indexing/query-state/) - // chain: 'https://rpc.ankr.com/eth', - // chain: "https://mainnet.infura.io/v3/03b96dfbb4904c5c89c04680dd480064", - chain: { - url, - // Alchemy is deprecating `eth_getBlockReceipts` https://docs.alchemy.com/reference/eth-getblockreceipts - // so we need to set `maxBatchCallSize` 1 to avoid using this method - maxBatchCallSize: url.includes('alchemy.com') ? 1 : 10, - }, + .setGateway(lookupArchive(archive)) + .setRpcEndpoint({ + url, + maxBatchCallSize: url.includes('alchemy.com') ? 1 : 10, + }) + .setRpcDataIngestionSettings({ + disabled: archive === 'arbitrum', + headPollInterval: 30000, }) .setFinalityConfirmation(10) .setFields({ diff --git a/src/shared/processors/balancer/balancer.ts b/src/shared/processors/balancer/balancer.ts index 45e3f18d..9e81cc01 100644 --- a/src/shared/processors/balancer/balancer.ts +++ b/src/shared/processors/balancer/balancer.ts @@ -25,66 +25,66 @@ const pools: { | [string, string, string, string] rates?: [CurrencyAddress, CurrencyAddress][] }[] = [ - { - name: 'Balancer rETH Stable Pool', - poolSymbol: 'B-rETH-STABLE', - poolType: 'MetaStable', - poolAddress: '0x1e19cf2d73a72ef1332c882f20534b6519be0276', - poolId: - '0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112', - tokens: [tokens.rETH, tokens.WETH], - from: Math.max(13850000, oethDeployFrom), - }, - { - name: 'wstETH-rETH-sfrxETH-BPT', - poolSymbol: 'wstETH-rETH-sfrxETH-BPT', - poolType: 'ComposableStable', - poolAddress: '0x42ed016f826165c2e5976fe5bc3df540c5ad0af7', - poolId: - '0x42ed016f826165c2e5976fe5bc3df540c5ad0af700000000000000000000058b', - tokens: [ - '0x42ed016f826165c2e5976fe5bc3df540c5ad0af7', - tokens.wstETH, - tokens.sfrxETH, - tokens.rETH, - ], - from: Math.max(17680000, oethDeployFrom), - }, - { - name: 'Balancer wstETH-WETH Stable Pool', - poolSymbol: 'wstETH-WETH-BPT', - poolType: 'ComposableStable', - poolAddress: '0x93d199263632a4ef4bb438f1feb99e57b4b5f0bd', - poolId: - '0x93d199263632a4ef4bb438f1feb99e57b4b5f0bd0000000000000000000005c2', - tokens: [ - tokens.wstETH, - '0x93d199263632a4EF4Bb438F1feB99e57b4b5f0BD', - tokens.WETH, - ], - from: Math.max(17920000, oethDeployFrom), - }, - { - name: 'Balancer 80 BAL 20 WETH', - poolSymbol: 'B-80BAL-20WETH', - poolType: 'Weighted', - poolAddress: '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56', - poolId: - '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014', - from: Math.max(12370000, oethDeployFrom), - tokens: [tokens.BAL, tokens.WETH], - rates: [[tokens.BAL, tokens.ETH] as [CurrencyAddress, CurrencyAddress]], - }, - { - name: 'Gyroscope ECLP wstETH/wETH', - poolSymbol: 'ECLP-wstETH-wETH', - poolAddress: '0xf01b0684c98cd7ada480bfdf6e43876422fa1fc1', - poolId: - '0xf01b0684c98cd7ada480bfdf6e43876422fa1fc10002000000000000000005de', - poolType: 'Gyroscope', - from: Math.max(18015100, oethDeployFrom), - tokens: [tokens.wstETH, tokens.WETH], - }, + // { + // name: 'Balancer rETH Stable Pool', + // poolSymbol: 'B-rETH-STABLE', + // poolType: 'MetaStable', + // poolAddress: '0x1e19cf2d73a72ef1332c882f20534b6519be0276', + // poolId: + // '0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112', + // tokens: [tokens.rETH, tokens.WETH], + // from: Math.max(13850000, oethDeployFrom), + // }, + // { + // name: 'wstETH-rETH-sfrxETH-BPT', + // poolSymbol: 'wstETH-rETH-sfrxETH-BPT', + // poolType: 'ComposableStable', + // poolAddress: '0x42ed016f826165c2e5976fe5bc3df540c5ad0af7', + // poolId: + // '0x42ed016f826165c2e5976fe5bc3df540c5ad0af700000000000000000000058b', + // tokens: [ + // '0x42ed016f826165c2e5976fe5bc3df540c5ad0af7', + // tokens.wstETH, + // tokens.sfrxETH, + // tokens.rETH, + // ], + // from: Math.max(17680000, oethDeployFrom), + // }, + // { + // name: 'Balancer wstETH-WETH Stable Pool', + // poolSymbol: 'wstETH-WETH-BPT', + // poolType: 'ComposableStable', + // poolAddress: '0x93d199263632a4ef4bb438f1feb99e57b4b5f0bd', + // poolId: + // '0x93d199263632a4ef4bb438f1feb99e57b4b5f0bd0000000000000000000005c2', + // tokens: [ + // tokens.wstETH, + // '0x93d199263632a4EF4Bb438F1feB99e57b4b5f0BD', + // tokens.WETH, + // ], + // from: Math.max(17920000, oethDeployFrom), + // }, + // { + // name: 'Balancer 80 BAL 20 WETH', + // poolSymbol: 'B-80BAL-20WETH', + // poolType: 'Weighted', + // poolAddress: '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56', + // poolId: + // '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014', + // from: Math.max(12370000, oethDeployFrom), + // tokens: [tokens.BAL, tokens.WETH], + // rates: [[tokens.BAL, tokens.ETH] as [CurrencyAddress, CurrencyAddress]], + // }, + // { + // name: 'Gyroscope ECLP wstETH/wETH', + // poolSymbol: 'ECLP-wstETH-wETH', + // poolAddress: '0xf01b0684c98cd7ada480bfdf6e43876422fa1fc1', + // poolId: + // '0xf01b0684c98cd7ada480bfdf6e43876422fa1fc10002000000000000000005de', + // poolType: 'Gyroscope', + // from: Math.max(18015100, oethDeployFrom), + // tokens: [tokens.wstETH, tokens.WETH], + // }, ] export const from = Math.min(...pools.map((p) => p.from)) diff --git a/src/shared/processors/curve/curve.ts b/src/shared/processors/curve/curve.ts index b85ee935..46b1e0ee 100644 --- a/src/shared/processors/curve/curve.ts +++ b/src/shared/processors/curve/curve.ts @@ -36,73 +36,73 @@ const pools: (Parameters['0'] & }, // Curve (OETH) - { - name: 'factory-v2-298: ETH/OETH', - address: '0x94B17476A93b3262d87B9a326965D1E91f9c13E7'.toLowerCase(), - from: Math.max(17130500, oethDeployFrom), - tokens: [tokens.ETH, tokens.OETH], - ratesToPull: [{ i: 1n, j: 0n, dx: 1000000000000000000n }], - }, - { - name: 'factory-crvusd-15: WETH/frxETH', - address: '0x9c3b46c0ceb5b9e304fcd6d88fc50f7dd24b31bc', - from: Math.max(17922938, oethDeployFrom), - tokens: [tokens.WETH, tokens.frxETH], - }, - { - name: 'steth: ETH/stETH', - address: '0xdc24316b9ae028f1497c275eb9192a3ea0f67022', - from: Math.max(11592551, oethDeployFrom), - tokens: [tokens.ETH, tokens.stETH], - }, - { - name: 'stETH-ng: ETH/stETH', - address: '0x21e27a5e5513d6e65c4f830167390997aa84843a', - from: Math.max(17272519, oethDeployFrom), - tokens: [tokens.ETH, tokens.stETH], - }, - { - name: 'frxeth: ETH/frxETH', - address: '0xa1f8a6807c402e4a15ef4eba36528a3fed24e577', - from: Math.max(15741010, oethDeployFrom), - tokens: [tokens.ETH, tokens.frxETH], - }, - { - name: 'factory-crypto-210: ETH/rETH', - address: '0x0f3159811670c117c372428d4e69ac32325e4d0f', - from: Math.max(16615906, oethDeployFrom), - tokens: [tokens.ETH, tokens.rETH], - }, - { - name: 'factory-v2-274: stETH/frxETH', - address: '0x4d9f9d15101eec665f77210cb999639f760f831e', - from: Math.max(16683219, oethDeployFrom), - tokens: [tokens.stETH, tokens.frxETH], - }, - { - name: 'factory-v2-117: WETH/stETH', - address: '0x828b154032950c8ff7cf8085d841723db2696056', - from: Math.max(14759666, oethDeployFrom), - tokens: [tokens.WETH, tokens.stETH], - }, - { - name: 'factory-v2-89: rETH/wstETH', - address: '0x447ddd4960d9fdbf6af9a790560d0af76795cb08', - from: Math.max(14258216, oethDeployFrom), - tokens: [tokens.rETH, tokens.wstETH], - }, - { - name: 'factory-crypto-218: rETH/frxETH', - address: '0xe7c6e0a739021cdba7aac21b4b728779eef974d9', - from: Math.max(16684327, oethDeployFrom), - tokens: [tokens.rETH, tokens.frxETH], - }, - { - name: 'factory-tricrypto-14: wstETH/rETH/sfrxETH', - address: '0x2570f1bd5d2735314fc102eb12fc1afe9e6e7193', - from: Math.max(18084222, oethDeployFrom), - tokens: [tokens.wstETH, tokens.rETH, tokens.sfrxETH], - }, + // { + // name: 'factory-v2-298: ETH/OETH', + // address: '0x94B17476A93b3262d87B9a326965D1E91f9c13E7'.toLowerCase(), + // from: Math.max(17130500, oethDeployFrom), + // tokens: [tokens.ETH, tokens.OETH], + // ratesToPull: [{ i: 1n, j: 0n, dx: 1000000000000000000n }], + // }, + // { + // name: 'factory-crvusd-15: WETH/frxETH', + // address: '0x9c3b46c0ceb5b9e304fcd6d88fc50f7dd24b31bc', + // from: Math.max(17922938, oethDeployFrom), + // tokens: [tokens.WETH, tokens.frxETH], + // }, + // { + // name: 'steth: ETH/stETH', + // address: '0xdc24316b9ae028f1497c275eb9192a3ea0f67022', + // from: Math.max(11592551, oethDeployFrom), + // tokens: [tokens.ETH, tokens.stETH], + // }, + // { + // name: 'stETH-ng: ETH/stETH', + // address: '0x21e27a5e5513d6e65c4f830167390997aa84843a', + // from: Math.max(17272519, oethDeployFrom), + // tokens: [tokens.ETH, tokens.stETH], + // }, + // { + // name: 'frxeth: ETH/frxETH', + // address: '0xa1f8a6807c402e4a15ef4eba36528a3fed24e577', + // from: Math.max(15741010, oethDeployFrom), + // tokens: [tokens.ETH, tokens.frxETH], + // }, + // { + // name: 'factory-crypto-210: ETH/rETH', + // address: '0x0f3159811670c117c372428d4e69ac32325e4d0f', + // from: Math.max(16615906, oethDeployFrom), + // tokens: [tokens.ETH, tokens.rETH], + // }, + // { + // name: 'factory-v2-274: stETH/frxETH', + // address: '0x4d9f9d15101eec665f77210cb999639f760f831e', + // from: Math.max(16683219, oethDeployFrom), + // tokens: [tokens.stETH, tokens.frxETH], + // }, + // { + // name: 'factory-v2-117: WETH/stETH', + // address: '0x828b154032950c8ff7cf8085d841723db2696056', + // from: Math.max(14759666, oethDeployFrom), + // tokens: [tokens.WETH, tokens.stETH], + // }, + // { + // name: 'factory-v2-89: rETH/wstETH', + // address: '0x447ddd4960d9fdbf6af9a790560d0af76795cb08', + // from: Math.max(14258216, oethDeployFrom), + // tokens: [tokens.rETH, tokens.wstETH], + // }, + // { + // name: 'factory-crypto-218: rETH/frxETH', + // address: '0xe7c6e0a739021cdba7aac21b4b728779eef974d9', + // from: Math.max(16684327, oethDeployFrom), + // tokens: [tokens.rETH, tokens.frxETH], + // }, + // { + // name: 'factory-tricrypto-14: wstETH/rETH/sfrxETH', + // address: '0x2570f1bd5d2735314fc102eb12fc1afe9e6e7193', + // from: Math.max(18084222, oethDeployFrom), + // tokens: [tokens.wstETH, tokens.rETH, tokens.sfrxETH], + // }, ] export const setup = (processor: EvmBatchProcessor) => { diff --git a/src/shared/processors/erc20s.ts b/src/shared/processors/erc20s.ts index 2ab21991..f2bf2bb4 100644 --- a/src/shared/processors/erc20s.ts +++ b/src/shared/processors/erc20s.ts @@ -21,7 +21,8 @@ let initialized = false const tracks: Record[0]> = { // Origin Specific OGN: { - from: 15350225, // 6436154, + // from: 15350225, // 6436154, + from: 16933090, // oeth deploy date address: tokens.OGN, accountFilter: [ '0x2eae0cae2323167abf78462e0c0686865c67a655', // Origin: Team Distribution (starts at block 15350225) @@ -30,7 +31,8 @@ const tracks: Record[0]> = { intervalTracking: true, }, OGV: { - from: 15350225, // 14439231, + // from: 15350225, // 14439231, + from: 16933090, // oeth deploy date address: tokens.OGV, accountFilter: [ '0x2eae0cae2323167abf78462e0c0686865c67a655', // Origin: Team Distribution (starts at block 15350225) @@ -56,7 +58,8 @@ const tracks: Record[0]> = { }, // OUSD Related USDT: { - from: 11362821, + // from: 11362821, + from: 16933090, // oeth deploy date address: tokens.USDT, accountFilter: [ ...ousdStrategyArray, @@ -67,7 +70,8 @@ const tracks: Record[0]> = { intervalTracking: true, }, USDC: { - from: 11367200, + // from: 11367200, + from: 16933090, // oeth deploy date address: tokens.USDC, accountFilter: [ ...ousdStrategyArray, @@ -78,7 +82,8 @@ const tracks: Record[0]> = { intervalTracking: true, }, DAI: { - from: 11367184, + // from: 11367184, + from: 16933090, // oeth deploy date address: tokens.DAI, accountFilter: [ ...ousdStrategyArray, @@ -96,8 +101,8 @@ const tracks: Record[0]> = { ...oethStrategyArray, OETH_VAULT_ADDRESS, OETH_DRIPPER_ADDRESS, - '0xa4e0faA58465A2D369aa21B3e42d43374c6F9613', // Uniswap wstETH/WETH - '0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa', // Uniswap rETH/WETH + // '0xa4e0faA58465A2D369aa21B3e42d43374c6F9613', // Uniswap wstETH/WETH + // '0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa', // Uniswap rETH/WETH ], intervalTracking: true, }, diff --git a/src/shared/processors/maverick.ts b/src/shared/processors/maverick.ts index d6fbee79..ef793b5d 100644 --- a/src/shared/processors/maverick.ts +++ b/src/shared/processors/maverick.ts @@ -14,24 +14,24 @@ export const from = Math.min(oethDeployFrom) const pools: (Parameters['0'] & Parameters['0'])[] = [ - { - name: 'wstETH-ETH', - address: '0x0eb1c92f9f5ec9d817968afddb4b46c564cdedbe', - from: Math.max(17216724, oethDeployFrom), - tokens: [tokens.wstETH, tokens.ETH], - }, - { - name: 'rETH-ETH', - address: '0xeb061a4e1ad3f1983655281cb8019ebbf8b30b29', - from: Math.max(17216790, oethDeployFrom), - tokens: [tokens.rETH, tokens.ETH], - }, - { - name: 'OETH-ETH', - address: '0xa51822839bfa4685b27ad60305264a37eae28a68', - from: Math.max(17444830, oethDeployFrom), - tokens: [tokens.OETH, tokens.ETH], - }, + // { + // name: 'wstETH-ETH', + // address: '0x0eb1c92f9f5ec9d817968afddb4b46c564cdedbe', + // from: Math.max(17216724, oethDeployFrom), + // tokens: [tokens.wstETH, tokens.ETH], + // }, + // { + // name: 'rETH-ETH', + // address: '0xeb061a4e1ad3f1983655281cb8019ebbf8b30b29', + // from: Math.max(17216790, oethDeployFrom), + // tokens: [tokens.rETH, tokens.ETH], + // }, + // { + // name: 'OETH-ETH', + // address: '0xa51822839bfa4685b27ad60305264a37eae28a68', + // from: Math.max(17444830, oethDeployFrom), + // tokens: [tokens.OETH, tokens.ETH], + // }, ] export const setup = (processor: EvmBatchProcessor) => { diff --git a/src/shared/processors/native.ts b/src/shared/processors/native.ts index 70be1433..1898df70 100644 --- a/src/shared/processors/native.ts +++ b/src/shared/processors/native.ts @@ -21,10 +21,10 @@ const tracks = [ { from: 19072024, // As of this block, none of these addresses have ever held ETH. addresses: [ - ...ousdStrategyArray, - OUSD_VAULT_ADDRESS, - ...oethStrategyArray, - OETH_VAULT_ADDRESS, + // ...ousdStrategyArray, + // OUSD_VAULT_ADDRESS, + // ...oethStrategyArray, + // OETH_VAULT_ADDRESS, ], }, ] @@ -32,11 +32,13 @@ const tracks = [ export const from = minBy(tracks, 'from')?.from ?? 19072024 export const setup = (processor: EvmBatchProcessor) => { + if (!tracks.length) return processor.includeAllBlocks({ from }) } const updater = blockFrequencyUpdater({ from }) export const process = async (ctx: Context) => { + if (!tracks.length) return const results: NativeBalance[] = [] await updater(ctx, async (ctx: Context, block: Context['blocks'][number]) => { const addresses = tracks diff --git a/src/shared/validators/validate-shared.ts b/src/shared/validators/validate-shared.ts index 193ca707..f2b6d842 100644 --- a/src/shared/validators/validate-shared.ts +++ b/src/shared/validators/validate-shared.ts @@ -92,188 +92,6 @@ const e = (arr: any[]) => { } const expectations = { - erc20States: e([ - { - chainId: 1, - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - blockNumber: 11367184, - holderCount: 0, - id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f', - timestamp: '2020-12-01T14:22:02.000000Z', - totalSupply: '692399822445745145525155198', - }, - { - chainId: 1, - address: '0xdac17f958d2ee523a2206206994597c13d831ec7', - blockNumber: 11401000, - holderCount: 2, - id: '1-11401000-0xdac17f958d2ee523a2206206994597c13d831ec7', - timestamp: '2020-12-06T19:20:45.000000Z', - totalSupply: '12442213561495551', - }, - { - chainId: 1, - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - blockNumber: 12964450, - holderCount: 3, - id: '1-12964450-0x6b175474e89094c44da98b954eedeac495271d0f', - timestamp: '2021-08-05T10:27:01.000000Z', - totalSupply: '5445306543169379254918394333', - }, - { - chainId: 1, - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - blockNumber: 12964450, - holderCount: 3, - id: '1-12964450-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - timestamp: '2021-08-05T10:27:01.000000Z', - totalSupply: '26720553335039550', - }, - { - chainId: 1, - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - blockNumber: 17296080, - holderCount: 90, - id: '1-17296080-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - timestamp: '2023-05-19T21:05:35.000000Z', - totalSupply: '3528560797966319884732', - }, - { - chainId: 1, - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - blockNumber: 17296257, - holderCount: 90, - id: '1-17296257-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - timestamp: '2023-05-19T21:40:59.000000Z', - totalSupply: '3529563347644033413431', - }, - { - chainId: 1, - address: '0x5e8422345238f34275888049021821e8e08caa1f', - blockNumber: 17979735, - holderCount: 0, - id: '1-17979735-0x5e8422345238f34275888049021821e8e08caa1f', - timestamp: '2023-08-23T20:16:11.000000Z', - totalSupply: '254108641082873082034663', - }, - { - chainId: 1, - address: '0x5e8422345238f34275888049021821e8e08caa1f', - blockNumber: 17986884, - holderCount: 0, - id: '1-17986884-0x5e8422345238f34275888049021821e8e08caa1f', - timestamp: '2023-08-24T20:16:59.000000Z', - totalSupply: '254331703007023082033663', - }, - { - chainId: 1, - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - blockNumber: 18388340, - holderCount: 500, - id: '1-18388340-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - timestamp: '2023-10-20T01:44:59.000000Z', - totalSupply: '38214229823673500371847', - }, - { - chainId: 1, - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - blockNumber: 18389908, - holderCount: 500, - id: '1-18389908-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - timestamp: '2023-10-20T06:59:47.000000Z', - totalSupply: '38217047513690199318528', - }, - ]), - erc20Balances: e([ - { - id: '1-11362821-0xdac17f958d2ee523a2206206994597c13d831ec7-0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', - chainId: 1, - timestamp: '2020-11-30T22:20:30.000000Z', - blockNumber: 11362821, - balance: '11457161992607', - address: '0xdac17f958d2ee523a2206206994597c13d831ec7', - account: '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', - }, - { - id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f-0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', - chainId: 1, - timestamp: '2020-12-01T14:22:02.000000Z', - blockNumber: 11367184, - balance: '0', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', - }, - { - id: '1-11367184-0x6b175474e89094c44da98b954eedeac495271d0f-0x5e3646a1db86993f73e6b74a57d8640b69f7e259', - chainId: 1, - timestamp: '2020-12-01T14:22:02.000000Z', - blockNumber: 11367184, - balance: '0', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x5e3646a1db86993f73e6b74a57d8640b69f7e259', - }, - { - id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x7a192dd9cc4ea9bdedec9992df74f1da55e60a19', - chainId: 1, - timestamp: '2023-04-29T03:58:35.000000Z', - blockNumber: 17149230, - balance: '0', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x7a192dd9cc4ea9bdedec9992df74f1da55e60a19', - }, - { - id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70', - chainId: 1, - timestamp: '2023-04-29T03:58:35.000000Z', - blockNumber: 17149230, - balance: '556620480436222718976', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70', - }, - { - id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x028171bca77440897b824ca71d1c56cac55b68a3', - chainId: 1, - timestamp: '2023-04-29T03:58:35.000000Z', - blockNumber: 17149230, - balance: '29859949254086282250927323', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x028171bca77440897b824ca71d1c56cac55b68a3', - }, - { - id: '1-17149230-0x6b175474e89094c44da98b954eedeac495271d0f-0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', - chainId: 1, - timestamp: '2023-04-29T03:58:35.000000Z', - blockNumber: 17149230, - balance: '175900582068662134551795199', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', - }, - { - id: '1-17156244-0x6b175474e89094c44da98b954eedeac495271d0f-0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', - chainId: 1, - timestamp: '2023-04-30T03:38:59.000000Z', - blockNumber: 17156244, - balance: '0', - address: '0x6b175474e89094c44da98b954eedeac495271d0f', - account: '0x89eb88fedc50fc77ae8a18aad1ca0ac27f777a90', - }, - { - id: '1-17904321-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3-0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b', - chainId: 1, - timestamp: '2023-08-13T07:02:47.000000Z', - blockNumber: 17904321, - balance: '4081205214585785457', - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - account: '0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b', - }, - { - id: '1-17904321-0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3-0x46d13d72db5d05bd2671312e321867ab8b30d9f6', - chainId: 1, - timestamp: '2023-08-13T07:02:47.000000Z', - blockNumber: 17904321, - balance: '4081198559585393770', - address: '0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3', - account: '0x46d13d72db5d05bd2671312e321867ab8b30d9f6', - }, - ]), + erc20States: e([]), // TODO: Fill me up? + erc20Balances: e([]), } as const diff --git a/src/utils/blockFrequencyUpdater.ts b/src/utils/blockFrequencyUpdater.ts index 538e57ee..2425a678 100644 --- a/src/utils/blockFrequencyUpdater.ts +++ b/src/utils/blockFrequencyUpdater.ts @@ -17,66 +17,69 @@ const oneMonthAgo = dayjs.utc().subtract(1, 'month').valueOf() const oneWeekAgo = dayjs.utc().subtract(1, 'week').valueOf() const oneDayAgo = dayjs.utc().subtract(1, 'day').valueOf() const oneHourAgo = dayjs.utc().subtract(1, 'hour').valueOf() +const fifteenMinutesAgo = dayjs.utc().subtract(15, 'minutes').valueOf() -const getFrequency = (bps: number, timestamp: number) => { - let frequency = 1 +const getFrequency = (blockRate: number, timestamp: number) => { if (timestamp < oneYearAgo) { - frequency = (SECONDS_PER_WEEK / bps) ^ 0 // Older than one year ago + return (SECONDS_PER_WEEK / blockRate) ^ 0 // Older than one year ago } else if (timestamp < oneMonthAgo) { - frequency = (SECONDS_PER_DAY / bps) ^ 0 // Older than one month ago + return (SECONDS_PER_DAY / blockRate) ^ 0 // Older than one month ago } else if (timestamp < oneWeekAgo) { - frequency = (SECONDS_PER_DAY / bps / 4) ^ 0 // Older than one week ago + return (SECONDS_PER_DAY / blockRate / 4) ^ 0 // Older than one week ago } else if (timestamp < oneDayAgo) { - frequency = (SECONDS_PER_DAY / bps / 24) ^ 0 // Older than one day ago + return (SECONDS_PER_DAY / blockRate / 12) ^ 0 // Older than one day ago } else if (timestamp < oneHourAgo) { - frequency = ((SECONDS_PER_MINUTE * 5) / bps) ^ 0 // Older than one hour ago + return ((SECONDS_PER_MINUTE * 30) / blockRate) ^ 0 // Older than one hour ago + } else if (timestamp < fifteenMinutesAgo) { + return ((SECONDS_PER_MINUTE * 5) / blockRate) ^ 0 // Older than 15 minutes ago } else { - frequency = (SECONDS_PER_MINUTE / bps) ^ 0 + return (SECONDS_PER_MINUTE / blockRate) ^ 0 } - return frequency || 1 } export const blockFrequencyTracker = (params: { from: number }) => { - let nextBlockToProcess = params.from - const shouldProcess = (b: Block, frequency: number) => { - let result = b.header.height >= nextBlockToProcess - if (result) { - nextBlockToProcess = - Math.floor((b.header.height + frequency) / frequency) * frequency - } - return result - } return (ctx: Context, block: Block) => { if (block.header.height < params.from) return - const { blockRate } = ctx - const frequency: number = getFrequency(blockRate, block.header.timestamp) - return shouldProcess(block, frequency) + const frequency: number = getFrequency( + ctx.blockRate, + block.header.timestamp, + ) + return block.header.height % frequency === 0 } } export const blockFrequencyUpdater = (params: { from: number }) => { - let nextBlockToProcess = params.from - const shouldProcess = (b: Block) => { - return b.header.height >= nextBlockToProcess - } return async ( ctx: Context, fn: (ctx: Context, block: Block) => Promise, ) => { if (!ctx.blocks.length) return - // If we're not at head, determine our frequency and then process. - const { blockRate } = ctx + if (ctx.blocks[ctx.blocks.length - 1].header.height < params.from) { + // No applicable blocks in current context. + return + } let frequency: number = getFrequency( - blockRate, + ctx.blockRate, ctx.blocks[0].header.timestamp, ) - for (let i = 0; i < ctx.blocks.length; i += frequency) { + for ( + let i = ctx.blocks.findIndex( + (b) => + b.header.height % frequency === 0 && b.header.height >= params.from, + ); + i < ctx.blocks.length; + i += frequency + ) { const block = ctx.blocks[i] - if (!shouldProcess(block)) continue + if (!block) break + if (block.header.height % frequency !== 0) { + throw new Error( + 'This should never happen. Ensure you are passing all blocks through here.', + ) + } await fn(ctx, block) - nextBlockToProcess = - Math.floor((block.header.height + frequency) / frequency) * frequency - frequency = getFrequency(blockRate, block.header.timestamp) + frequency = getFrequency(ctx.blockRate, block.header.timestamp) + i -= ctx.blocks[i].header.height % frequency } } } diff --git a/src/utils/multicall.ts b/src/utils/multicall.ts index eaa6b5c0..afde85bd 100644 --- a/src/utils/multicall.ts +++ b/src/utils/multicall.ts @@ -1,12 +1,23 @@ import { toHex } from 'viem' +import { arbitrum, mainnet } from 'viem/chains' import { Func } from '../abi/abi.support' import { Multicall } from '../abi/multicall' import { Block, Context } from '../processor' -const MULTICALL_CONTRACT = '0x5ba1e12693dc8f9c48aad8770482f4739beed696' -const from = 12336033 - +const MULTICALL_CONTRACTS: Record< + number, + undefined | { from: number; address: string } +> = { + [mainnet.id]: { + from: 12336033, + address: '0x5ba1e12693dc8f9c48aad8770482f4739beed696', + }, + [arbitrum.id]: { + from: 821923, + address: '0x842ec2c7d803033edf55e478f461fc547bc54eb2', + }, +} export const multicall = async ( ctx: Context, header: Block['header'], @@ -14,8 +25,9 @@ export const multicall = async ( address: string, calls: Args[], ) => { - if (header.height >= from) { - const multicall = new Multicall(ctx, header, MULTICALL_CONTRACT) + const multicallContract = MULTICALL_CONTRACTS[ctx.chain.id] + if (multicallContract && header.height >= multicallContract.from) { + const multicall = new Multicall(ctx, header, multicallContract.address) return multicall.aggregate(func, address, calls) } const batchCalls = calls.map((fnParams) => ({ From c29c88cad1cdad322aa7c00c08c3630fafeac863 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Mon, 15 Apr 2024 15:19:43 -0700 Subject: [PATCH 05/20] separate squid manifest/deploy for ousd --- squid-ousd.yaml | 38 +++++++++++++++++++ squid.yaml | 4 -- src/main-mainnet.ts | 8 +--- src/main-ousd.ts | 4 +- src/ousd/processors/curve/curve.ts | 55 ++++++++++++++++++++++++++++ src/ousd/processors/curve/index.ts | 1 + src/ousd/processors/erc20s.ts | 49 +++++++++++++++++++++++++ src/shared/processors/curve/curve.ts | 20 ---------- src/shared/processors/erc20s.ts | 37 ------------------- 9 files changed, 147 insertions(+), 69 deletions(-) create mode 100644 squid-ousd.yaml create mode 100644 src/ousd/processors/curve/curve.ts create mode 100644 src/ousd/processors/curve/index.ts create mode 100644 src/ousd/processors/erc20s.ts diff --git a/squid-ousd.yaml b/squid-ousd.yaml new file mode 100644 index 00000000..56e2ca8d --- /dev/null +++ b/squid-ousd.yaml @@ -0,0 +1,38 @@ +manifestVersion: subsquid.io/v0.1 +name: origin-ousd +version: 999 +description: 'Origin OUSD 🦑' +build: +deploy: + addons: + postgres: + secrets: + - RPC_ENDPOINT + - RPC_ENDPOINT_999 + - RPC_ENDPOINT_RETH + - RPC_BACKUP + - RPC_ARBITRUM_ENDPOINT + - RPC_ARBITRUM_ENV + processor: + - name: ousd-processor + cmd: [ "sqd", "process:ousd:prod" ] + env: + RPC_ENV: RPC_ENDPOINT_RETH + api: + cmd: + - npx + - squid-graphql-server + - '--dumb-cache' + - in-memory + - '--dumb-cache-ttl' + - '1000' + - '--dumb-cache-size' + - '100' + - '--dumb-cache-max-age' + - '1000' +scale: + dedicated: true + addons: + postgres: + storage: 20G + profile: medium diff --git a/squid.yaml b/squid.yaml index 9d346c31..13da135c 100644 --- a/squid.yaml +++ b/squid.yaml @@ -26,10 +26,6 @@ deploy: cmd: [ "sqd", "process:oeth:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH - - name: ousd-processor - cmd: [ "sqd", "process:ousd:prod" ] - env: - RPC_ENV: RPC_ENDPOINT_RETH - name: ogv-processor cmd: [ "sqd", "process:ogv:prod" ] env: diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index fdaa9e22..66ed7c62 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -1,18 +1,12 @@ import { run } from './processor' import * as exchangeRates from './shared/post-processors/exchange-rates' -import * as liquidity from './shared/post-processors/liquidity' import { processStatus } from './shared/processor-templates/processor-status' -import * as balancer from './shared/processors/balancer' -import * as curve from './shared/processors/curve' import { erc20s } from './shared/processors/erc20s' -import * as maverick from './shared/processors/maverick' -import * as native from './shared/processors/native' import * as validate from './shared/validators/validate-shared' -import { WOETH_ADDRESS } from './utils/addresses' export const processor = { stateSchema: 'mainnet-processor', - processors: [curve, ...erc20s()], + processors: [...erc20s()], postProcessors: [exchangeRates, processStatus('other')], validators: [validate], } diff --git a/src/main-ousd.ts b/src/main-ousd.ts index 1b3edac6..d68890f9 100644 --- a/src/main-ousd.ts +++ b/src/main-ousd.ts @@ -1,4 +1,6 @@ import * as dailyStats from './ousd/post-processors/daily-stats' +import * as curve from './ousd/processors/curve' +import { erc20s } from './ousd/processors/erc20s' import * as ousd from './ousd/processors/ousd' import * as strategies from './ousd/processors/strategies/strategies' import * as validateOusd from './ousd/validators/validate-ousd' @@ -8,7 +10,7 @@ import { processStatus } from './shared/processor-templates/processor-status' export const processor = { stateSchema: 'ousd-processor', - processors: [ousd, strategies], + processors: [ousd, strategies, curve, ...erc20s], postProcessors: [exchangeRates, dailyStats, processStatus('ousd')], validators: [validateOusd], } diff --git a/src/ousd/processors/curve/curve.ts b/src/ousd/processors/curve/curve.ts new file mode 100644 index 00000000..eb5e6982 --- /dev/null +++ b/src/ousd/processors/curve/curve.ts @@ -0,0 +1,55 @@ +import { EvmBatchProcessor } from '@subsquid/evm-processor' + +import { Context } from '../../../processor' +import { + createCurveInitializer, + createCurveProcessor, + createCurveSetup, +} from '../../../shared/processor-templates/curve' +import { tokens } from '../../../utils/addresses' + +const ousdResetFrom = 11585978 +const oethDeployFrom = 16933090 + +export const from = Math.min(ousdResetFrom, oethDeployFrom) + +const pools: (Parameters['0'] & + Parameters['0'])[] = [ + // Curve (OUSD) + { + name: 'ThreePool', + address: '0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7'.toLowerCase(), + from: Math.max(10809473, ousdResetFrom), + tokens: [tokens.DAI, tokens.USDC, tokens.USDT], + }, + { + name: 'OUSDMetapool', + address: '0x87650d7bbfc3a9f10587d7778206671719d9910d'.toLowerCase(), + from: Math.max(12860905, ousdResetFrom), + tokens: [tokens.OUSD, tokens.CRV3], + }, + { + name: 'LUSDMetapool', + address: '0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca'.toLowerCase(), + from: Math.max(12184843, ousdResetFrom), + tokens: [tokens.LUSD, tokens.CRV3], + }, +] + +export const setup = (processor: EvmBatchProcessor) => { + for (const pool of pools) { + createCurveSetup(pool.from, processor) + } +} + +const initializers = pools.map((pool) => createCurveInitializer(pool)) + +export const initialize = async (ctx: Context) => { + await Promise.all(initializers.map((p) => p(ctx))) +} + +const processors = pools.map((pool) => createCurveProcessor(pool)) + +export const process = async (ctx: Context) => { + await Promise.all(processors.map((p) => p(ctx))) +} diff --git a/src/ousd/processors/curve/index.ts b/src/ousd/processors/curve/index.ts new file mode 100644 index 00000000..e039a951 --- /dev/null +++ b/src/ousd/processors/curve/index.ts @@ -0,0 +1 @@ +export * from './curve' diff --git a/src/ousd/processors/erc20s.ts b/src/ousd/processors/erc20s.ts new file mode 100644 index 00000000..0c40595d --- /dev/null +++ b/src/ousd/processors/erc20s.ts @@ -0,0 +1,49 @@ +import { createERC20Tracker } from '../../shared/processor-templates/erc20' +import { + OUSD_VAULT_ADDRESS, + ousdStrategyArray, + tokens, +} from '../../utils/addresses' + +const tracks: Record[0]> = { + // OUSD Related + USDT: { + // from: 11362821, + from: 16933090, // oeth deploy date + address: tokens.USDT, + accountFilter: [ + ...ousdStrategyArray, + OUSD_VAULT_ADDRESS, + '0x3ed3b47dd13ec9a98b44e6204a523e766b225811', // aUSDT + '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', // cUSDT + ], + intervalTracking: true, + }, + USDC: { + // from: 11367200, + from: 16933090, // oeth deploy date + address: tokens.USDC, + accountFilter: [ + ...ousdStrategyArray, + OUSD_VAULT_ADDRESS, + '0xbcca60bb61934080951369a648fb03df4f96263c', // aUSDC + '0x39aa39c021dfbae8fac545936693ac917d5e7563', // cUSDC + ], + intervalTracking: true, + }, + DAI: { + // from: 11367184, + from: 16933090, // oeth deploy date + address: tokens.DAI, + accountFilter: [ + ...ousdStrategyArray, + OUSD_VAULT_ADDRESS, + '0x028171bca77440897b824ca71d1c56cac55b68a3', // aDAI + '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', // cDAI + ], + intervalTracking: true, + }, +} + +// This is a function to allow others to subscribe to balance tracking +export const erc20s = Object.values(tracks).map(createERC20Tracker) diff --git a/src/shared/processors/curve/curve.ts b/src/shared/processors/curve/curve.ts index 46b1e0ee..11b061f8 100644 --- a/src/shared/processors/curve/curve.ts +++ b/src/shared/processors/curve/curve.ts @@ -15,26 +15,6 @@ export const from = Math.min(ousdResetFrom, oethDeployFrom) const pools: (Parameters['0'] & Parameters['0'])[] = [ - // Curve (OUSD) - { - name: 'ThreePool', - address: '0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7'.toLowerCase(), - from: Math.max(10809473, ousdResetFrom), - tokens: [tokens.DAI, tokens.USDC, tokens.USDT], - }, - { - name: 'OUSDMetapool', - address: '0x87650d7bbfc3a9f10587d7778206671719d9910d'.toLowerCase(), - from: Math.max(12860905, ousdResetFrom), - tokens: [tokens.OUSD, tokens.CRV3], - }, - { - name: 'LUSDMetapool', - address: '0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca'.toLowerCase(), - from: Math.max(12184843, ousdResetFrom), - tokens: [tokens.LUSD, tokens.CRV3], - }, - // Curve (OETH) // { // name: 'factory-v2-298: ETH/OETH', diff --git a/src/shared/processors/erc20s.ts b/src/shared/processors/erc20s.ts index f2bf2bb4..e52b69da 100644 --- a/src/shared/processors/erc20s.ts +++ b/src/shared/processors/erc20s.ts @@ -56,43 +56,6 @@ const tracks: Record[0]> = { from: 16933090, address: WOETH_ADDRESS, }, - // OUSD Related - USDT: { - // from: 11362821, - from: 16933090, // oeth deploy date - address: tokens.USDT, - accountFilter: [ - ...ousdStrategyArray, - OUSD_VAULT_ADDRESS, - '0x3ed3b47dd13ec9a98b44e6204a523e766b225811', // aUSDT - '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', // cUSDT - ], - intervalTracking: true, - }, - USDC: { - // from: 11367200, - from: 16933090, // oeth deploy date - address: tokens.USDC, - accountFilter: [ - ...ousdStrategyArray, - OUSD_VAULT_ADDRESS, - '0xbcca60bb61934080951369a648fb03df4f96263c', // aUSDC - '0x39aa39c021dfbae8fac545936693ac917d5e7563', // cUSDC - ], - intervalTracking: true, - }, - DAI: { - // from: 11367184, - from: 16933090, // oeth deploy date - address: tokens.DAI, - accountFilter: [ - ...ousdStrategyArray, - OUSD_VAULT_ADDRESS, - '0x028171bca77440897b824ca71d1c56cac55b68a3', // aDAI - '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', // cDAI - ], - intervalTracking: true, - }, // OETH Related WETH: { from: 16933090, // oeth deploy date From f3cb1fa5802e7534e7031214b23cd85dc51198d6 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Mon, 15 Apr 2024 15:50:46 -0700 Subject: [PATCH 06/20] move most of `shared` into `mainnet` --- src/arbitrum/erc20.ts | 2 +- src/main-mainnet.ts | 6 ++-- src/main-oeth.ts | 2 +- src/main-ogv.ts | 2 +- src/main-ousd.ts | 2 +- .../processors/balancer/balancer.ts | 6 ++-- .../processors}/balancer/index.ts | 0 .../processors/curve/curve.ts | 3 +- .../processors}/curve/index.ts | 0 src/{shared => mainnet}/processors/erc20s.ts | 2 +- .../processors/liquidity-sources.ts | 0 .../processors/maverick.ts | 4 +-- src/{shared => mainnet}/processors/native.ts | 0 .../processors/sushiswap.ts | 0 src/{shared => mainnet}/processors/uniswap.ts | 0 .../validators/validate-shared.ts | 0 src/oeth/processors/balancer-meta-pool.ts | 2 +- src/oeth/processors/oeth.ts | 2 +- src/oeth/processors/strategies/strategies.ts | 6 ++-- src/ousd/processors/curve/curve.ts | 2 +- src/ousd/processors/erc20s.ts | 2 +- src/ousd/processors/ousd/ousd.ts | 2 +- .../processors/strategies/aave-strategy.ts | 2 +- .../strategies/convex-meta-strategy.ts | 4 +-- .../processors/strategies/flux-strategy.ts | 2 +- .../strategies/maker-dsr-strategy.ts | 2 +- src/ousd/processors/strategies/morpho-aave.ts | 2 +- .../processors/strategies/morpho-compound.ts | 2 +- src/ousd/processors/strategies/strategies.ts | 4 +-- .../processor-templates/balancer/balancer.ts | 26 +++++++-------- .../balancer/index.ts | 0 .../processor-templates/curve/curve.ts | 14 ++++---- .../curve/index.ts | 0 .../processor-templates/erc20/erc20.ts | 14 ++++---- .../processor-templates/erc20/index.ts | 0 .../processor-templates/maverick/index.ts | 0 .../processor-templates/maverick/maverick.ts | 12 +++---- .../processor-templates/otoken/index.ts | 0 .../processor-templates/otoken/otoken.ts | 27 ++++++++------- .../processor-templates/otoken/utils.ts | 8 ++--- .../processor-status/index.ts | 0 .../processor-status/processor-status.ts | 4 +-- .../strategy-rewards/index.ts | 0 .../strategy-rewards/strategy-rewards.ts | 8 ++--- .../processor-templates/strategy/index.ts | 0 .../strategy/strategy-balancer.ts | 16 ++++----- .../strategy/strategy-curve-amo.ts | 14 ++++---- .../strategy/strategy-daily-earnings.ts | 8 ++--- .../strategy/strategy-earnings.ts | 33 +++++++++---------- .../strategy/strategy-generic.ts | 12 +++---- .../strategy/strategy-vault.ts | 10 +++--- .../processor-templates/strategy/strategy.ts | 15 ++++----- 52 files changed, 139 insertions(+), 145 deletions(-) rename src/{shared => mainnet}/processors/balancer/balancer.ts (96%) rename src/{shared/processor-templates => mainnet/processors}/balancer/index.ts (100%) rename src/{shared => mainnet}/processors/curve/curve.ts (97%) rename src/{shared/processor-templates => mainnet/processors}/curve/index.ts (100%) rename src/{shared => mainnet}/processors/erc20s.ts (98%) rename src/{shared => mainnet}/processors/liquidity-sources.ts (100%) rename src/{shared => mainnet}/processors/maverick.ts (97%) rename src/{shared => mainnet}/processors/native.ts (100%) rename src/{shared => mainnet}/processors/sushiswap.ts (100%) rename src/{shared => mainnet}/processors/uniswap.ts (100%) rename src/{shared => mainnet}/validators/validate-shared.ts (100%) rename src/{shared => }/processor-templates/balancer/balancer.ts (86%) rename src/{shared/processors => processor-templates}/balancer/index.ts (100%) rename src/{shared => }/processor-templates/curve/curve.ts (88%) rename src/{shared/processors => processor-templates}/curve/index.ts (100%) rename src/{shared => }/processor-templates/erc20/erc20.ts (95%) rename src/{shared => }/processor-templates/erc20/index.ts (100%) rename src/{shared => }/processor-templates/maverick/index.ts (100%) rename src/{shared => }/processor-templates/maverick/maverick.ts (86%) rename src/{shared => }/processor-templates/otoken/index.ts (100%) rename src/{shared => }/processor-templates/otoken/otoken.ts (96%) rename src/{shared => }/processor-templates/otoken/utils.ts (96%) rename src/{shared => }/processor-templates/processor-status/index.ts (100%) rename src/{shared => }/processor-templates/processor-status/processor-status.ts (85%) rename src/{shared => }/processor-templates/strategy-rewards/index.ts (100%) rename src/{shared => }/processor-templates/strategy-rewards/strategy-rewards.ts (87%) rename src/{shared => }/processor-templates/strategy/index.ts (100%) rename src/{shared => }/processor-templates/strategy/strategy-balancer.ts (87%) rename src/{shared => }/processor-templates/strategy/strategy-curve-amo.ts (90%) rename src/{shared => }/processor-templates/strategy/strategy-daily-earnings.ts (95%) rename src/{shared => }/processor-templates/strategy/strategy-earnings.ts (95%) rename src/{shared => }/processor-templates/strategy/strategy-generic.ts (85%) rename src/{shared => }/processor-templates/strategy/strategy-vault.ts (89%) rename src/{shared => }/processor-templates/strategy/strategy.ts (85%) diff --git a/src/arbitrum/erc20.ts b/src/arbitrum/erc20.ts index 5f9f79a5..9b83104d 100644 --- a/src/arbitrum/erc20.ts +++ b/src/arbitrum/erc20.ts @@ -1,4 +1,4 @@ -import { createERC20Tracker } from '../shared/processor-templates/erc20' +import { createERC20Tracker } from '../processor-templates/erc20' import { WOETH_ARBITRUM_ADDRESS } from '../utils/addresses' const woethTransferProcessor = createERC20Tracker({ diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index 66ed7c62..84cb9d52 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -1,8 +1,8 @@ +import { erc20s } from './mainnet/processors/erc20s' +import * as validate from './mainnet/validators/validate-shared' import { run } from './processor' +import { processStatus } from './processor-templates/processor-status' import * as exchangeRates from './shared/post-processors/exchange-rates' -import { processStatus } from './shared/processor-templates/processor-status' -import { erc20s } from './shared/processors/erc20s' -import * as validate from './shared/validators/validate-shared' export const processor = { stateSchema: 'mainnet-processor', diff --git a/src/main-oeth.ts b/src/main-oeth.ts index e916ca2d..6ee63280 100644 --- a/src/main-oeth.ts +++ b/src/main-oeth.ts @@ -11,8 +11,8 @@ import * as strategies from './oeth/processors/strategies' import * as vault from './oeth/processors/vault' import * as validateOeth from './oeth/validators/validate-oeth' import { run } from './processor' +import { processStatus } from './processor-templates/processor-status' import * as exchangeRatesPostProcessor from './shared/post-processors/exchange-rates' -import { processStatus } from './shared/processor-templates/processor-status' export const processor = { stateSchema: 'oeth-processor', diff --git a/src/main-ogv.ts b/src/main-ogv.ts index 753d66b7..4c844063 100644 --- a/src/main-ogv.ts +++ b/src/main-ogv.ts @@ -3,7 +3,7 @@ import * as governance from './ogv/post-processors/governance' import * as ogv from './ogv/processors/ogv' import * as ogvSupply from './ogv/processors/ogv-supply' import { run } from './processor' -import { processStatus } from './shared/processor-templates/processor-status' +import { processStatus } from './processor-templates/processor-status' export const processor = { stateSchema: 'ogv-processor', diff --git a/src/main-ousd.ts b/src/main-ousd.ts index d68890f9..44abf3ca 100644 --- a/src/main-ousd.ts +++ b/src/main-ousd.ts @@ -5,8 +5,8 @@ import * as ousd from './ousd/processors/ousd' import * as strategies from './ousd/processors/strategies/strategies' import * as validateOusd from './ousd/validators/validate-ousd' import { run } from './processor' +import { processStatus } from './processor-templates/processor-status' import * as exchangeRates from './shared/post-processors/exchange-rates' -import { processStatus } from './shared/processor-templates/processor-status' export const processor = { stateSchema: 'ousd-processor', diff --git a/src/shared/processors/balancer/balancer.ts b/src/mainnet/processors/balancer/balancer.ts similarity index 96% rename from src/shared/processors/balancer/balancer.ts rename to src/mainnet/processors/balancer/balancer.ts index 9e81cc01..8c435ff1 100644 --- a/src/shared/processors/balancer/balancer.ts +++ b/src/mainnet/processors/balancer/balancer.ts @@ -1,13 +1,13 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { Context } from '../../../processor' -import { tokens } from '../../../utils/addresses' -import { CurrencyAddress } from '../../post-processors/exchange-rates/currencies' import { createBalancerInitializer, createBalancerProcessor, createBalancerSetup, -} from '../../processor-templates/balancer' +} from '../../../processor-templates/balancer' +import { CurrencyAddress } from '../../../shared/post-processors/exchange-rates/currencies' +import { tokens } from '../../../utils/addresses' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/shared/processor-templates/balancer/index.ts b/src/mainnet/processors/balancer/index.ts similarity index 100% rename from src/shared/processor-templates/balancer/index.ts rename to src/mainnet/processors/balancer/index.ts diff --git a/src/shared/processors/curve/curve.ts b/src/mainnet/processors/curve/curve.ts similarity index 97% rename from src/shared/processors/curve/curve.ts rename to src/mainnet/processors/curve/curve.ts index 11b061f8..dbdc8403 100644 --- a/src/shared/processors/curve/curve.ts +++ b/src/mainnet/processors/curve/curve.ts @@ -1,12 +1,11 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { Context } from '../../../processor' -import { tokens } from '../../../utils/addresses' import { createCurveInitializer, createCurveProcessor, createCurveSetup, -} from '../../processor-templates/curve' +} from '../../../processor-templates/curve' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/shared/processor-templates/curve/index.ts b/src/mainnet/processors/curve/index.ts similarity index 100% rename from src/shared/processor-templates/curve/index.ts rename to src/mainnet/processors/curve/index.ts diff --git a/src/shared/processors/erc20s.ts b/src/mainnet/processors/erc20s.ts similarity index 98% rename from src/shared/processors/erc20s.ts rename to src/mainnet/processors/erc20s.ts index e52b69da..f247be1b 100644 --- a/src/shared/processors/erc20s.ts +++ b/src/mainnet/processors/erc20s.ts @@ -1,4 +1,5 @@ import * as otoken from '../../abi/otoken' +import { createERC20Tracker } from '../../processor-templates/erc20' import { OETH_ADDRESS, OETH_DRIPPER_ADDRESS, @@ -11,7 +12,6 @@ import { tokens, } from '../../utils/addresses' import { logFilter } from '../../utils/logFilter' -import { createERC20Tracker } from '../processor-templates/erc20' // TODO: Would be nice if interested parties could register their desires here from other parts of the code, // allowing multiple declarations of need without issue. diff --git a/src/shared/processors/liquidity-sources.ts b/src/mainnet/processors/liquidity-sources.ts similarity index 100% rename from src/shared/processors/liquidity-sources.ts rename to src/mainnet/processors/liquidity-sources.ts diff --git a/src/shared/processors/maverick.ts b/src/mainnet/processors/maverick.ts similarity index 97% rename from src/shared/processors/maverick.ts rename to src/mainnet/processors/maverick.ts index ef793b5d..4832b7ce 100644 --- a/src/shared/processors/maverick.ts +++ b/src/mainnet/processors/maverick.ts @@ -1,12 +1,12 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { Context } from '../../processor' -import { tokens } from '../../utils/addresses' import { createMaverickInitializer, createMaverickProcessor, createMaverickSetup, -} from '../processor-templates/maverick' +} from '../../processor-templates/maverick' +import { tokens } from '../../utils/addresses' const oethDeployFrom = 16933090 diff --git a/src/shared/processors/native.ts b/src/mainnet/processors/native.ts similarity index 100% rename from src/shared/processors/native.ts rename to src/mainnet/processors/native.ts diff --git a/src/shared/processors/sushiswap.ts b/src/mainnet/processors/sushiswap.ts similarity index 100% rename from src/shared/processors/sushiswap.ts rename to src/mainnet/processors/sushiswap.ts diff --git a/src/shared/processors/uniswap.ts b/src/mainnet/processors/uniswap.ts similarity index 100% rename from src/shared/processors/uniswap.ts rename to src/mainnet/processors/uniswap.ts diff --git a/src/shared/validators/validate-shared.ts b/src/mainnet/validators/validate-shared.ts similarity index 100% rename from src/shared/validators/validate-shared.ts rename to src/mainnet/validators/validate-shared.ts diff --git a/src/oeth/processors/balancer-meta-pool.ts b/src/oeth/processors/balancer-meta-pool.ts index cc501b75..d5a01a0d 100644 --- a/src/oeth/processors/balancer-meta-pool.ts +++ b/src/oeth/processors/balancer-meta-pool.ts @@ -5,8 +5,8 @@ import * as metaStablePool from '../../abi/balancer-meta-stable-pool' import * as baseRewardPool4626 from '../../abi/base-reward-pool-4626' import { OETHBalancerMetaPoolStrategy } from '../../model' import { Context } from '../../processor' +import { getBalancerStrategyHoldings } from '../../processor-templates/strategy/strategy-balancer' import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' -import { getBalancerStrategyHoldings } from '../../shared/processor-templates/strategy/strategy-balancer' import { RETH_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' import { getLatestEntity } from '../../utils/utils' import { oethStrategies } from './strategies' diff --git a/src/oeth/processors/oeth.ts b/src/oeth/processors/oeth.ts index 00257adc..6ba8ed6a 100644 --- a/src/oeth/processors/oeth.ts +++ b/src/oeth/processors/oeth.ts @@ -11,7 +11,7 @@ import { import { createOTokenProcessor, createOTokenSetup, -} from '../../shared/processor-templates/otoken' +} from '../../processor-templates/otoken' import { ETH_ADDRESS, FRXETH_ADDRESS, diff --git a/src/oeth/processors/strategies/strategies.ts b/src/oeth/processors/strategies/strategies.ts index 843b66ec..7b8937c9 100644 --- a/src/oeth/processors/strategies/strategies.ts +++ b/src/oeth/processors/strategies/strategies.ts @@ -2,16 +2,16 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETHRewardTokenCollected } from '../../../model' import { Context } from '../../../processor' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' import { IStrategyData, createStrategyProcessor, createStrategySetup, -} from '../../../shared/processor-templates/strategy' +} from '../../../processor-templates/strategy' import { createStrategyRewardProcessor, createStrategyRewardSetup, -} from '../../../shared/processor-templates/strategy-rewards' +} from '../../../processor-templates/strategy-rewards' +import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' import { ETH_ADDRESS, FRXETH_ADDRESS, diff --git a/src/ousd/processors/curve/curve.ts b/src/ousd/processors/curve/curve.ts index eb5e6982..3a63e188 100644 --- a/src/ousd/processors/curve/curve.ts +++ b/src/ousd/processors/curve/curve.ts @@ -5,7 +5,7 @@ import { createCurveInitializer, createCurveProcessor, createCurveSetup, -} from '../../../shared/processor-templates/curve' +} from '../../../processor-templates/curve' import { tokens } from '../../../utils/addresses' const ousdResetFrom = 11585978 diff --git a/src/ousd/processors/erc20s.ts b/src/ousd/processors/erc20s.ts index 0c40595d..10d55693 100644 --- a/src/ousd/processors/erc20s.ts +++ b/src/ousd/processors/erc20s.ts @@ -1,4 +1,4 @@ -import { createERC20Tracker } from '../../shared/processor-templates/erc20' +import { createERC20Tracker } from '../../processor-templates/erc20' import { OUSD_VAULT_ADDRESS, ousdStrategyArray, diff --git a/src/ousd/processors/ousd/ousd.ts b/src/ousd/processors/ousd/ousd.ts index 86caeded..9bc659cf 100644 --- a/src/ousd/processors/ousd/ousd.ts +++ b/src/ousd/processors/ousd/ousd.ts @@ -11,7 +11,7 @@ import { import { createOTokenProcessor, createOTokenSetup, -} from '../../../shared/processor-templates/otoken' +} from '../../../processor-templates/otoken' import { DAI_ADDRESS, OUSD_ADDRESS, diff --git a/src/ousd/processors/strategies/aave-strategy.ts b/src/ousd/processors/strategies/aave-strategy.ts index 2e490571..2f76ce90 100644 --- a/src/ousd/processors/strategies/aave-strategy.ts +++ b/src/ousd/processors/strategies/aave-strategy.ts @@ -1,8 +1,8 @@ import { pad as viemPad } from 'viem' import * as aaveLendingPool from '../../../abi/aave-lending-pool' +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' import { logFilter } from '../../../utils/logFilter' import { DAI, USDT } from './const' diff --git a/src/ousd/processors/strategies/convex-meta-strategy.ts b/src/ousd/processors/strategies/convex-meta-strategy.ts index 4f2dd8ee..3cfa3f4a 100644 --- a/src/ousd/processors/strategies/convex-meta-strategy.ts +++ b/src/ousd/processors/strategies/convex-meta-strategy.ts @@ -1,9 +1,7 @@ -import * as erc20 from '../../../abi/erc20' import * as abstractStrategyAbi from '../../../abi/initializable-abstract-strategy' +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' -import { logFilter } from '../../../utils/logFilter' import { traceFilter } from '../../../utils/traceFilter' import { DAI, USDC, USDT } from './const' diff --git a/src/ousd/processors/strategies/flux-strategy.ts b/src/ousd/processors/strategies/flux-strategy.ts index 6fcad6b0..9aae46f2 100644 --- a/src/ousd/processors/strategies/flux-strategy.ts +++ b/src/ousd/processors/strategies/flux-strategy.ts @@ -1,5 +1,5 @@ +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' import { DAI, USDC, USDT } from './const' diff --git a/src/ousd/processors/strategies/maker-dsr-strategy.ts b/src/ousd/processors/strategies/maker-dsr-strategy.ts index 94b75c6e..64df8d70 100644 --- a/src/ousd/processors/strategies/maker-dsr-strategy.ts +++ b/src/ousd/processors/strategies/maker-dsr-strategy.ts @@ -1,5 +1,5 @@ +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' import { DAI, USDC, USDT } from './const' diff --git a/src/ousd/processors/strategies/morpho-aave.ts b/src/ousd/processors/strategies/morpho-aave.ts index 4c0d3863..f5058942 100644 --- a/src/ousd/processors/strategies/morpho-aave.ts +++ b/src/ousd/processors/strategies/morpho-aave.ts @@ -1,5 +1,5 @@ +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' import { DAI, USDC, USDT } from './const' diff --git a/src/ousd/processors/strategies/morpho-compound.ts b/src/ousd/processors/strategies/morpho-compound.ts index c21e6809..eedac655 100644 --- a/src/ousd/processors/strategies/morpho-compound.ts +++ b/src/ousd/processors/strategies/morpho-compound.ts @@ -1,5 +1,5 @@ +import { IStrategyData } from '../../../processor-templates/strategy' import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { IStrategyData } from '../../../shared/processor-templates/strategy' import { OUSD_ADDRESS } from '../../../utils/addresses' import { DAI, USDC, USDT } from './const' diff --git a/src/ousd/processors/strategies/strategies.ts b/src/ousd/processors/strategies/strategies.ts index dd04f90f..f6787306 100644 --- a/src/ousd/processors/strategies/strategies.ts +++ b/src/ousd/processors/strategies/strategies.ts @@ -6,11 +6,11 @@ import { IStrategyData, createStrategyProcessor, createStrategySetup, -} from '../../../shared/processor-templates/strategy' +} from '../../../processor-templates/strategy' import { createStrategyRewardProcessor, createStrategyRewardSetup, -} from '../../../shared/processor-templates/strategy-rewards' +} from '../../../processor-templates/strategy-rewards' import { aaveStrategy } from './aave-strategy' import { convexMetaStrategy } from './convex-meta-strategy' import { fluxStrategy } from './flux-strategy' diff --git a/src/shared/processor-templates/balancer/balancer.ts b/src/processor-templates/balancer/balancer.ts similarity index 86% rename from src/shared/processor-templates/balancer/balancer.ts rename to src/processor-templates/balancer/balancer.ts index 9ea91ca5..82080493 100644 --- a/src/shared/processor-templates/balancer/balancer.ts +++ b/src/processor-templates/balancer/balancer.ts @@ -1,24 +1,24 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as balancerComposableStablePool from '../../../abi/balancer-composable-stable-pool' -import * as balancerMetaStablePoolAbi from '../../../abi/balancer-meta-stable-pool' -import * as balancerRateProvider from '../../../abi/balancer-rate-provider' -import * as balancerVaultAbi from '../../../abi/balancer-vault' -import * as balancerWeightedPool from '../../../abi/balancer-weighted-pool-2-token' +import * as balancerComposableStablePool from '../../abi/balancer-composable-stable-pool' +import * as balancerMetaStablePoolAbi from '../../abi/balancer-meta-stable-pool' +import * as balancerRateProvider from '../../abi/balancer-rate-provider' +import * as balancerVaultAbi from '../../abi/balancer-vault' +import * as balancerWeightedPool from '../../abi/balancer-weighted-pool-2-token' +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { BalancerPool, BalancerPoolBalance, BalancerPoolRate, LiquiditySource, LiquiditySourceType, -} from '../../../model' -import { Context } from '../../../processor' -import { ADDRESS_ZERO, BALANCER_VAULT } from '../../../utils/addresses' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { ensureExchangeRates } from '../../post-processors/exchange-rates' -import { Currency } from '../../post-processors/exchange-rates/currencies' -import { updateLiquidityBalances } from '../../post-processors/liquidity' -import { registerLiquiditySource } from '../../processors/liquidity-sources' +} from '../../model' +import { Context } from '../../processor' +import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' +import { Currency } from '../../shared/post-processors/exchange-rates/currencies' +import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' +import { ADDRESS_ZERO, BALANCER_VAULT } from '../../utils/addresses' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' const eth1 = BigInt('1000000000000000000') diff --git a/src/shared/processors/balancer/index.ts b/src/processor-templates/balancer/index.ts similarity index 100% rename from src/shared/processors/balancer/index.ts rename to src/processor-templates/balancer/index.ts diff --git a/src/shared/processor-templates/curve/curve.ts b/src/processor-templates/curve/curve.ts similarity index 88% rename from src/shared/processor-templates/curve/curve.ts rename to src/processor-templates/curve/curve.ts index 913efc60..ab83613d 100644 --- a/src/shared/processor-templates/curve/curve.ts +++ b/src/processor-templates/curve/curve.ts @@ -1,17 +1,17 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as curveLpToken from '../../../abi/curve-lp-token' +import * as curveLpToken from '../../abi/curve-lp-token' +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { CurvePool, CurvePoolBalance, CurvePoolRate, LiquiditySourceType, -} from '../../../model' -import { Context } from '../../../processor' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { range } from '../../../utils/range' -import { updateLiquidityBalances } from '../../post-processors/liquidity' -import { registerLiquiditySource } from '../../processors/liquidity-sources' +} from '../../model' +import { Context } from '../../processor' +import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' +import { range } from '../../utils/range' interface ProcessResult { curvePoolBalances: CurvePoolBalance[] diff --git a/src/shared/processors/curve/index.ts b/src/processor-templates/curve/index.ts similarity index 100% rename from src/shared/processors/curve/index.ts rename to src/processor-templates/curve/index.ts diff --git a/src/shared/processor-templates/erc20/erc20.ts b/src/processor-templates/erc20/erc20.ts similarity index 95% rename from src/shared/processor-templates/erc20/erc20.ts rename to src/processor-templates/erc20/erc20.ts index 52b270e6..6f53d003 100644 --- a/src/shared/processor-templates/erc20/erc20.ts +++ b/src/processor-templates/erc20/erc20.ts @@ -1,18 +1,18 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as abi from '../../../abi/erc20' +import * as abi from '../../abi/erc20' import { ERC20, ERC20Balance, ERC20Holder, ERC20State, ERC20Transfer, -} from '../../../model' -import { Context } from '../../../processor' -import { ADDRESS_ZERO, TokenAddress } from '../../../utils/addresses' -import { blockFrequencyTracker } from '../../../utils/blockFrequencyUpdater' -import { LogFilter, logFilter } from '../../../utils/logFilter' -import { multicall } from '../../../utils/multicall' +} from '../../model' +import { Context } from '../../processor' +import { ADDRESS_ZERO, TokenAddress } from '../../utils/addresses' +import { blockFrequencyTracker } from '../../utils/blockFrequencyUpdater' +import { LogFilter, logFilter } from '../../utils/logFilter' +import { multicall } from '../../utils/multicall' const duplicateTracker = new Set() diff --git a/src/shared/processor-templates/erc20/index.ts b/src/processor-templates/erc20/index.ts similarity index 100% rename from src/shared/processor-templates/erc20/index.ts rename to src/processor-templates/erc20/index.ts diff --git a/src/shared/processor-templates/maverick/index.ts b/src/processor-templates/maverick/index.ts similarity index 100% rename from src/shared/processor-templates/maverick/index.ts rename to src/processor-templates/maverick/index.ts diff --git a/src/shared/processor-templates/maverick/maverick.ts b/src/processor-templates/maverick/maverick.ts similarity index 86% rename from src/shared/processor-templates/maverick/maverick.ts rename to src/processor-templates/maverick/maverick.ts index 94beb1fb..dc427b23 100644 --- a/src/shared/processor-templates/maverick/maverick.ts +++ b/src/processor-templates/maverick/maverick.ts @@ -1,17 +1,17 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { add } from 'lodash' -import * as maverickPool from '../../../abi/maverick-pool' +import * as maverickPool from '../../abi/maverick-pool' +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { LiquiditySource, LiquiditySourceType, MaverickPool, MaverickPoolBalance, -} from '../../../model' -import { Context } from '../../../processor' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { updateLiquidityBalances } from '../../post-processors/liquidity' -import { registerLiquiditySource } from '../../processors/liquidity-sources' +} from '../../model' +import { Context } from '../../processor' +import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' // Maverick Pool Reference: https://docs.mav.xyz/guides/technical-reference/pool diff --git a/src/shared/processor-templates/otoken/index.ts b/src/processor-templates/otoken/index.ts similarity index 100% rename from src/shared/processor-templates/otoken/index.ts rename to src/processor-templates/otoken/index.ts diff --git a/src/shared/processor-templates/otoken/otoken.ts b/src/processor-templates/otoken/otoken.ts similarity index 96% rename from src/shared/processor-templates/otoken/otoken.ts rename to src/processor-templates/otoken/otoken.ts index b3c65e73..bf8dcd5f 100644 --- a/src/shared/processor-templates/otoken/otoken.ts +++ b/src/processor-templates/otoken/otoken.ts @@ -1,11 +1,10 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { groupBy } from 'lodash' import { GetTransactionReceiptReturnType } from 'viem' -import { mainnet } from 'viem/chains' -import * as erc20 from '../../../abi/erc20' -import * as otoken from '../../../abi/otoken' -import * as otokenVault from '../../../abi/otoken-vault' +import * as erc20 from '../../abi/erc20' +import * as otoken from '../../abi/otoken' +import * as otokenVault from '../../abi/otoken-vault' import { HistoryType, OETH, @@ -25,19 +24,19 @@ import { OUSDRebase, OUSDRebaseOption, RebasingOption, -} from '../../../model' -import { Context } from '../../../processor' -import { type Transaction, activityFromTx } from '../../../utils/activityFromTx' -import { ADDRESS_ZERO } from '../../../utils/addresses' -import { DECIMALS_18 } from '../../../utils/constants' -import { multicall } from '../../../utils/multicall' -import { EntityClassT, InstanceTypeOfConstructor } from '../../../utils/type' -import { getLatestEntity } from '../../../utils/utils' -import { ensureExchangeRate } from '../../post-processors/exchange-rates' +} from '../../model' +import { Context } from '../../processor' +import { ensureExchangeRate } from '../../shared/post-processors/exchange-rates' import { CurrencyAddress, CurrencySymbol, -} from '../../post-processors/exchange-rates/currencies' +} from '../../shared/post-processors/exchange-rates/currencies' +import { type Transaction, activityFromTx } from '../../utils/activityFromTx' +import { ADDRESS_ZERO } from '../../utils/addresses' +import { DECIMALS_18 } from '../../utils/constants' +import { multicall } from '../../utils/multicall' +import { EntityClassT, InstanceTypeOfConstructor } from '../../utils/type' +import { getLatestEntity } from '../../utils/utils' import { createAddress, createRebaseAPY } from './utils' type OToken = EntityClassT | EntityClassT diff --git a/src/shared/processor-templates/otoken/utils.ts b/src/processor-templates/otoken/utils.ts similarity index 96% rename from src/shared/processor-templates/otoken/utils.ts rename to src/processor-templates/otoken/utils.ts index 272525ad..c0a4788a 100644 --- a/src/shared/processor-templates/otoken/utils.ts +++ b/src/processor-templates/otoken/utils.ts @@ -2,7 +2,7 @@ import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' import { LessThan, MoreThanOrEqual } from 'typeorm' -import * as otoken from '../../../abi/otoken' +import * as otoken from '../../abi/otoken' import { ExchangeRate, OETHAPY, @@ -12,9 +12,9 @@ import { OUSDAddress, OUSDRebase, RebasingOption, -} from '../../../model' -import { Context } from '../../../processor' -import { calculateAPY } from '../../../utils/calculateAPY' +} from '../../model' +import { Context } from '../../processor' +import { calculateAPY } from '../../utils/calculateAPY' dayjs.extend(utc) diff --git a/src/shared/processor-templates/processor-status/index.ts b/src/processor-templates/processor-status/index.ts similarity index 100% rename from src/shared/processor-templates/processor-status/index.ts rename to src/processor-templates/processor-status/index.ts diff --git a/src/shared/processor-templates/processor-status/processor-status.ts b/src/processor-templates/processor-status/processor-status.ts similarity index 85% rename from src/shared/processor-templates/processor-status/processor-status.ts rename to src/processor-templates/processor-status/processor-status.ts index dec2abd2..31339239 100644 --- a/src/shared/processor-templates/processor-status/processor-status.ts +++ b/src/processor-templates/processor-status/processor-status.ts @@ -1,5 +1,5 @@ -import { ProcessingStatus } from '../../../model' -import { Context } from '../../../processor' +import { ProcessingStatus } from '../../model' +import { Context } from '../../processor' const processorIds = new Set() diff --git a/src/shared/processor-templates/strategy-rewards/index.ts b/src/processor-templates/strategy-rewards/index.ts similarity index 100% rename from src/shared/processor-templates/strategy-rewards/index.ts rename to src/processor-templates/strategy-rewards/index.ts diff --git a/src/shared/processor-templates/strategy-rewards/strategy-rewards.ts b/src/processor-templates/strategy-rewards/strategy-rewards.ts similarity index 87% rename from src/shared/processor-templates/strategy-rewards/strategy-rewards.ts rename to src/processor-templates/strategy-rewards/strategy-rewards.ts index 7b655253..f8305ee0 100644 --- a/src/shared/processor-templates/strategy-rewards/strategy-rewards.ts +++ b/src/processor-templates/strategy-rewards/strategy-rewards.ts @@ -1,9 +1,9 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as iat from '../../../abi/initializable-abstract-strategy' -import { OETHRewardTokenCollected } from '../../../model' -import { Context } from '../../../processor' -import { EntityClassT } from '../../../utils/type' +import * as iat from '../../abi/initializable-abstract-strategy' +import { OETHRewardTokenCollected } from '../../model' +import { Context } from '../../processor' +import { EntityClassT } from '../../utils/type' export const createStrategyRewardSetup = ({ address, diff --git a/src/shared/processor-templates/strategy/index.ts b/src/processor-templates/strategy/index.ts similarity index 100% rename from src/shared/processor-templates/strategy/index.ts rename to src/processor-templates/strategy/index.ts diff --git a/src/shared/processor-templates/strategy/strategy-balancer.ts b/src/processor-templates/strategy/strategy-balancer.ts similarity index 87% rename from src/shared/processor-templates/strategy/strategy-balancer.ts rename to src/processor-templates/strategy/strategy-balancer.ts index 09334248..78088233 100644 --- a/src/shared/processor-templates/strategy/strategy-balancer.ts +++ b/src/processor-templates/strategy/strategy-balancer.ts @@ -1,18 +1,18 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as balancerMetaStablePoolStrategyAbi from '../../../abi/balancer-meta-pool-strategy' -import * as balancerRateProvider from '../../../abi/balancer-rate-provider' -import * as balancerVaultAbi from '../../../abi/balancer-vault' -import { StrategyBalance } from '../../../model' -import { Context } from '../../../processor' +import * as balancerMetaStablePoolStrategyAbi from '../../abi/balancer-meta-pool-strategy' +import * as balancerRateProvider from '../../abi/balancer-rate-provider' +import * as balancerVaultAbi from '../../abi/balancer-vault' +import { StrategyBalance } from '../../model' +import { Context } from '../../processor' +import { getBalancePoolRateProviders } from '../../shared/post-processors/exchange-rates/price-routing' import { ADDRESS_ZERO, BALANCER_VAULT, ETH_ADDRESS, WETH_ADDRESS, -} from '../../../utils/addresses' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { getBalancePoolRateProviders } from '../../post-processors/exchange-rates/price-routing' +} from '../../utils/addresses' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/shared/processor-templates/strategy/strategy-curve-amo.ts b/src/processor-templates/strategy/strategy-curve-amo.ts similarity index 90% rename from src/shared/processor-templates/strategy/strategy-curve-amo.ts rename to src/processor-templates/strategy/strategy-curve-amo.ts index 073161cc..e95dace4 100644 --- a/src/shared/processor-templates/strategy/strategy-curve-amo.ts +++ b/src/processor-templates/strategy/strategy-curve-amo.ts @@ -1,12 +1,12 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as curvePool from '../../../abi/curve-lp-token' -import * as erc20 from '../../../abi/erc20' -import * as abstractStrategyAbi from '../../../abi/initializable-abstract-strategy' -import { StrategyBalance } from '../../../model' -import { Block, Context } from '../../../processor' -import { ETH_ADDRESS, WETH_ADDRESS } from '../../../utils/addresses' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' +import * as curvePool from '../../abi/curve-lp-token' +import * as erc20 from '../../abi/erc20' +import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' +import { StrategyBalance } from '../../model' +import { Block, Context } from '../../processor' +import { ETH_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/shared/processor-templates/strategy/strategy-daily-earnings.ts b/src/processor-templates/strategy/strategy-daily-earnings.ts similarity index 95% rename from src/shared/processor-templates/strategy/strategy-daily-earnings.ts rename to src/processor-templates/strategy/strategy-daily-earnings.ts index b136541e..8a095d21 100644 --- a/src/shared/processor-templates/strategy/strategy-daily-earnings.ts +++ b/src/processor-templates/strategy/strategy-daily-earnings.ts @@ -2,10 +2,10 @@ import dayjs from 'dayjs' import { Between, LessThan, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' -import { StrategyDailyYield, StrategyYield } from '../../../model' -import { Block, Context } from '../../../processor' -import { calculateAPY } from '../../../utils/calculateAPY' -import { lastExcept, max } from '../../../utils/utils' +import { StrategyDailyYield, StrategyYield } from '../../model' +import { Block, Context } from '../../processor' +import { calculateAPY } from '../../utils/calculateAPY' +import { lastExcept, max } from '../../utils/utils' import { IStrategyData } from './strategy' const eth1 = 1000000000000000000n diff --git a/src/shared/processor-templates/strategy/strategy-earnings.ts b/src/processor-templates/strategy/strategy-earnings.ts similarity index 95% rename from src/shared/processor-templates/strategy/strategy-earnings.ts rename to src/processor-templates/strategy/strategy-earnings.ts index 0470c965..ecd4064a 100644 --- a/src/shared/processor-templates/strategy/strategy-earnings.ts +++ b/src/processor-templates/strategy/strategy-earnings.ts @@ -1,15 +1,19 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import dayjs from 'dayjs' import { LessThan } from 'typeorm' -import { formatEther, pad } from 'viem' - -import * as baseRewardPool from '../../../abi/base-reward-pool' -import * as erc20 from '../../../abi/erc20' -import * as abstractStrategyAbi from '../../../abi/initializable-abstract-strategy' -import { StrategyYield } from '../../../model' -import { Block, Context } from '../../../processor' +import { formatEther } from 'viem' + +import * as baseRewardPool from '../../abi/base-reward-pool' +import * as erc20 from '../../abi/erc20' +import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' +import { StrategyYield } from '../../model' +import { Block, Context } from '../../processor' +import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' +import { + Currency, + convertRate, +} from '../../shared/post-processors/exchange-rates/currencies' import { - AURA_REWARDS_POOL_ADDRESS, OETH_ADDRESS, OETH_DRIPPER_ADDRESS, OETH_HARVESTER_ADDRESS, @@ -18,15 +22,10 @@ import { OUSD_HARVESTER_ADDRESS, USDT_ADDRESS, WETH_ADDRESS, -} from '../../../utils/addresses' -import { blockFrequencyTracker } from '../../../utils/blockFrequencyUpdater' -import { logFilter } from '../../../utils/logFilter' -import { convertDecimals, lastExcept } from '../../../utils/utils' -import { ensureExchangeRates } from '../../post-processors/exchange-rates' -import { - Currency, - convertRate, -} from '../../post-processors/exchange-rates/currencies' +} from '../../utils/addresses' +import { blockFrequencyTracker } from '../../utils/blockFrequencyUpdater' +import { logFilter } from '../../utils/logFilter' +import { convertDecimals, lastExcept } from '../../utils/utils' import { IStrategyData } from './strategy' import { processStrategyDailyEarnings } from './strategy-daily-earnings' diff --git a/src/shared/processor-templates/strategy/strategy-generic.ts b/src/processor-templates/strategy/strategy-generic.ts similarity index 85% rename from src/shared/processor-templates/strategy/strategy-generic.ts rename to src/processor-templates/strategy/strategy-generic.ts index d5132ca3..2a7a22d7 100644 --- a/src/shared/processor-templates/strategy/strategy-generic.ts +++ b/src/processor-templates/strategy/strategy-generic.ts @@ -1,11 +1,11 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as abstractStrategyAbi from '../../../abi/initializable-abstract-strategy' -import { StrategyBalance } from '../../../model' -import { Block, Context } from '../../../processor' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { ensureExchangeRates } from '../../post-processors/exchange-rates' -import { CurrencyAddress } from '../../post-processors/exchange-rates/currencies' +import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' +import { StrategyBalance } from '../../model' +import { Block, Context } from '../../processor' +import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' +import { CurrencyAddress } from '../../shared/post-processors/exchange-rates/currencies' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/shared/processor-templates/strategy/strategy-vault.ts b/src/processor-templates/strategy/strategy-vault.ts similarity index 89% rename from src/shared/processor-templates/strategy/strategy-vault.ts rename to src/processor-templates/strategy/strategy-vault.ts index 5e4416a8..1fcc73e1 100644 --- a/src/shared/processor-templates/strategy/strategy-vault.ts +++ b/src/processor-templates/strategy/strategy-vault.ts @@ -1,10 +1,10 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import * as erc20 from '../../../abi/erc20' -import { StrategyBalance } from '../../../model' -import { Block, Context } from '../../../processor' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { convertDecimals } from '../../../utils/utils' +import * as erc20 from '../../abi/erc20' +import { StrategyBalance } from '../../model' +import { Block, Context } from '../../processor' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' +import { convertDecimals } from '../../utils/utils' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/shared/processor-templates/strategy/strategy.ts b/src/processor-templates/strategy/strategy.ts similarity index 85% rename from src/shared/processor-templates/strategy/strategy.ts rename to src/processor-templates/strategy/strategy.ts index 5cdc8a9f..5bd9b6b2 100644 --- a/src/shared/processor-templates/strategy/strategy.ts +++ b/src/processor-templates/strategy/strategy.ts @@ -1,13 +1,12 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' -import durationPlugin from 'dayjs/plugin/duration' -import { Context } from '../../../processor' -import { OETH_ADDRESS, OUSD_ADDRESS } from '../../../utils/addresses' -import { blockFrequencyUpdater } from '../../../utils/blockFrequencyUpdater' -import { LogFilter } from '../../../utils/logFilter' -import { TraceFilter } from '../../../utils/traceFilter' -import { ensureExchangeRates } from '../../post-processors/exchange-rates' -import { CurrencyAddress } from '../../post-processors/exchange-rates/currencies' +import { Context } from '../../processor' +import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' +import { CurrencyAddress } from '../../shared/post-processors/exchange-rates/currencies' +import { OETH_ADDRESS, OUSD_ADDRESS } from '../../utils/addresses' +import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' +import { LogFilter } from '../../utils/logFilter' +import { TraceFilter } from '../../utils/traceFilter' import * as strategyBalancer from './strategy-balancer' import * as strategyCurveAMO from './strategy-curve-amo' import * as strategyGeneric from './strategy-generic' From d3f6976194575e5abbba5791e73e3ba5c2b97964 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Mon, 15 Apr 2024 15:54:10 -0700 Subject: [PATCH 07/20] move most of `shared` into `mainnet` --- src/{processor-templates => templates}/balancer/balancer.ts | 0 src/{processor-templates => templates}/balancer/index.ts | 0 src/{processor-templates => templates}/curve/curve.ts | 0 src/{processor-templates => templates}/curve/index.ts | 0 src/{processor-templates => templates}/erc20/erc20.ts | 0 src/{processor-templates => templates}/erc20/index.ts | 0 src/{processor-templates => templates}/maverick/index.ts | 0 src/{processor-templates => templates}/maverick/maverick.ts | 0 src/{processor-templates => templates}/otoken/index.ts | 0 src/{processor-templates => templates}/otoken/otoken.ts | 0 src/{processor-templates => templates}/otoken/utils.ts | 0 .../processor-status/index.ts | 0 .../processor-status/processor-status.ts | 0 .../strategy-rewards/index.ts | 0 .../strategy-rewards/strategy-rewards.ts | 0 src/{processor-templates => templates}/strategy/index.ts | 0 .../strategy/strategy-balancer.ts | 0 .../strategy/strategy-curve-amo.ts | 0 .../strategy/strategy-daily-earnings.ts | 0 .../strategy/strategy-earnings.ts | 0 .../strategy/strategy-generic.ts | 0 .../strategy/strategy-vault.ts | 0 src/{processor-templates => templates}/strategy/strategy.ts | 2 +- 23 files changed, 1 insertion(+), 1 deletion(-) rename src/{processor-templates => templates}/balancer/balancer.ts (100%) rename src/{processor-templates => templates}/balancer/index.ts (100%) rename src/{processor-templates => templates}/curve/curve.ts (100%) rename src/{processor-templates => templates}/curve/index.ts (100%) rename src/{processor-templates => templates}/erc20/erc20.ts (100%) rename src/{processor-templates => templates}/erc20/index.ts (100%) rename src/{processor-templates => templates}/maverick/index.ts (100%) rename src/{processor-templates => templates}/maverick/maverick.ts (100%) rename src/{processor-templates => templates}/otoken/index.ts (100%) rename src/{processor-templates => templates}/otoken/otoken.ts (100%) rename src/{processor-templates => templates}/otoken/utils.ts (100%) rename src/{processor-templates => templates}/processor-status/index.ts (100%) rename src/{processor-templates => templates}/processor-status/processor-status.ts (100%) rename src/{processor-templates => templates}/strategy-rewards/index.ts (100%) rename src/{processor-templates => templates}/strategy-rewards/strategy-rewards.ts (100%) rename src/{processor-templates => templates}/strategy/index.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-balancer.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-curve-amo.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-daily-earnings.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-earnings.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-generic.ts (100%) rename src/{processor-templates => templates}/strategy/strategy-vault.ts (100%) rename src/{processor-templates => templates}/strategy/strategy.ts (97%) diff --git a/src/processor-templates/balancer/balancer.ts b/src/templates/balancer/balancer.ts similarity index 100% rename from src/processor-templates/balancer/balancer.ts rename to src/templates/balancer/balancer.ts diff --git a/src/processor-templates/balancer/index.ts b/src/templates/balancer/index.ts similarity index 100% rename from src/processor-templates/balancer/index.ts rename to src/templates/balancer/index.ts diff --git a/src/processor-templates/curve/curve.ts b/src/templates/curve/curve.ts similarity index 100% rename from src/processor-templates/curve/curve.ts rename to src/templates/curve/curve.ts diff --git a/src/processor-templates/curve/index.ts b/src/templates/curve/index.ts similarity index 100% rename from src/processor-templates/curve/index.ts rename to src/templates/curve/index.ts diff --git a/src/processor-templates/erc20/erc20.ts b/src/templates/erc20/erc20.ts similarity index 100% rename from src/processor-templates/erc20/erc20.ts rename to src/templates/erc20/erc20.ts diff --git a/src/processor-templates/erc20/index.ts b/src/templates/erc20/index.ts similarity index 100% rename from src/processor-templates/erc20/index.ts rename to src/templates/erc20/index.ts diff --git a/src/processor-templates/maverick/index.ts b/src/templates/maverick/index.ts similarity index 100% rename from src/processor-templates/maverick/index.ts rename to src/templates/maverick/index.ts diff --git a/src/processor-templates/maverick/maverick.ts b/src/templates/maverick/maverick.ts similarity index 100% rename from src/processor-templates/maverick/maverick.ts rename to src/templates/maverick/maverick.ts diff --git a/src/processor-templates/otoken/index.ts b/src/templates/otoken/index.ts similarity index 100% rename from src/processor-templates/otoken/index.ts rename to src/templates/otoken/index.ts diff --git a/src/processor-templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts similarity index 100% rename from src/processor-templates/otoken/otoken.ts rename to src/templates/otoken/otoken.ts diff --git a/src/processor-templates/otoken/utils.ts b/src/templates/otoken/utils.ts similarity index 100% rename from src/processor-templates/otoken/utils.ts rename to src/templates/otoken/utils.ts diff --git a/src/processor-templates/processor-status/index.ts b/src/templates/processor-status/index.ts similarity index 100% rename from src/processor-templates/processor-status/index.ts rename to src/templates/processor-status/index.ts diff --git a/src/processor-templates/processor-status/processor-status.ts b/src/templates/processor-status/processor-status.ts similarity index 100% rename from src/processor-templates/processor-status/processor-status.ts rename to src/templates/processor-status/processor-status.ts diff --git a/src/processor-templates/strategy-rewards/index.ts b/src/templates/strategy-rewards/index.ts similarity index 100% rename from src/processor-templates/strategy-rewards/index.ts rename to src/templates/strategy-rewards/index.ts diff --git a/src/processor-templates/strategy-rewards/strategy-rewards.ts b/src/templates/strategy-rewards/strategy-rewards.ts similarity index 100% rename from src/processor-templates/strategy-rewards/strategy-rewards.ts rename to src/templates/strategy-rewards/strategy-rewards.ts diff --git a/src/processor-templates/strategy/index.ts b/src/templates/strategy/index.ts similarity index 100% rename from src/processor-templates/strategy/index.ts rename to src/templates/strategy/index.ts diff --git a/src/processor-templates/strategy/strategy-balancer.ts b/src/templates/strategy/strategy-balancer.ts similarity index 100% rename from src/processor-templates/strategy/strategy-balancer.ts rename to src/templates/strategy/strategy-balancer.ts diff --git a/src/processor-templates/strategy/strategy-curve-amo.ts b/src/templates/strategy/strategy-curve-amo.ts similarity index 100% rename from src/processor-templates/strategy/strategy-curve-amo.ts rename to src/templates/strategy/strategy-curve-amo.ts diff --git a/src/processor-templates/strategy/strategy-daily-earnings.ts b/src/templates/strategy/strategy-daily-earnings.ts similarity index 100% rename from src/processor-templates/strategy/strategy-daily-earnings.ts rename to src/templates/strategy/strategy-daily-earnings.ts diff --git a/src/processor-templates/strategy/strategy-earnings.ts b/src/templates/strategy/strategy-earnings.ts similarity index 100% rename from src/processor-templates/strategy/strategy-earnings.ts rename to src/templates/strategy/strategy-earnings.ts diff --git a/src/processor-templates/strategy/strategy-generic.ts b/src/templates/strategy/strategy-generic.ts similarity index 100% rename from src/processor-templates/strategy/strategy-generic.ts rename to src/templates/strategy/strategy-generic.ts diff --git a/src/processor-templates/strategy/strategy-vault.ts b/src/templates/strategy/strategy-vault.ts similarity index 100% rename from src/processor-templates/strategy/strategy-vault.ts rename to src/templates/strategy/strategy-vault.ts diff --git a/src/processor-templates/strategy/strategy.ts b/src/templates/strategy/strategy.ts similarity index 97% rename from src/processor-templates/strategy/strategy.ts rename to src/templates/strategy/strategy.ts index 5bd9b6b2..25d78ebe 100644 --- a/src/processor-templates/strategy/strategy.ts +++ b/src/templates/strategy/strategy.ts @@ -1,7 +1,7 @@ +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' import { CurrencyAddress } from '../../shared/post-processors/exchange-rates/currencies' import { OETH_ADDRESS, OUSD_ADDRESS } from '../../utils/addresses' import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' From 09d8407f2ba83c8838a9953c83c8287089a7a3f6 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Mon, 15 Apr 2024 16:25:19 -0700 Subject: [PATCH 08/20] simplify imports for abi, model, shared, templates, and utils --- src/arbitrum/erc20.ts | 4 +- src/main-mainnet.ts | 5 ++- src/main-oeth.ts | 5 ++- src/main-ogv.ts | 3 +- src/main-ousd.ts | 5 ++- src/mainnet/processors/balancer/balancer.ts | 10 ++--- src/mainnet/processors/curve/curve.ts | 6 +-- src/mainnet/processors/erc20s.ts | 8 ++-- src/mainnet/processors/liquidity-sources.ts | 3 +- src/mainnet/processors/maverick.ts | 8 ++-- src/mainnet/processors/native.ts | 14 +++---- src/mainnet/processors/sushiswap.ts | 5 ++- src/mainnet/processors/uniswap.ts | 5 ++- src/mainnet/validators/validate-shared.ts | 6 +-- .../daily-stats/daily-stats.ts | 24 +++++------ src/oeth/processors/balancer-meta-pool.ts | 16 ++++---- src/oeth/processors/ccip.ts | 12 +++--- src/oeth/processors/curve-lp.ts | 16 ++++---- src/oeth/processors/dripper.ts | 12 +++--- src/oeth/processors/exchange-rates.ts | 4 +- src/oeth/processors/frax-staking.ts | 11 ++--- src/oeth/processors/morpho-aave.ts | 10 ++--- src/oeth/processors/oeth.ts | 9 ++--- src/oeth/processors/strategies/strategies.ts | 14 +++---- src/oeth/processors/vault.ts | 18 ++++----- .../validators/validate-oeth/validate-oeth.ts | 14 +++---- src/ogv/post-processors/daily-stats.ts | 4 +- src/ogv/post-processors/governance.ts | 14 +++---- src/ogv/processors/ogv-supply.ts | 8 ++-- src/ogv/processors/ogv.ts | 12 +++--- .../daily-stats/daily-stats.ts | 24 +++++------ src/ousd/processors/curve/curve.ts | 8 ++-- src/ousd/processors/erc20s.ts | 8 +--- src/ousd/processors/ousd/ousd.ts | 9 ++--- .../processors/strategies/aave-strategy.ts | 10 ++--- .../strategies/convex-meta-strategy.ts | 11 ++--- .../processors/strategies/flux-strategy.ts | 7 ++-- .../strategies/maker-dsr-strategy.ts | 7 ++-- src/ousd/processors/strategies/morpho-aave.ts | 7 ++-- .../processors/strategies/morpho-compound.ts | 7 ++-- src/ousd/processors/strategies/strategies.ts | 10 ++--- src/ousd/processors/vault.ts | 14 +++---- .../validators/validate-ousd/validate-ousd.ts | 6 +-- src/server-extension/ogn-stats.ts | 6 +-- .../exchange-rates/currencies.ts | 3 +- .../exchange-rates/exchange-rates.ts | 4 +- .../exchange-rates/price-routing.ts | 16 ++++---- src/shared/post-processors/liquidity.ts | 4 +- src/templates/balancer/balancer.ts | 28 ++++++------- src/templates/curve/curve.ts | 16 ++++---- src/templates/erc20/erc20.ts | 16 ++++---- src/templates/maverick/maverick.ts | 16 ++++---- src/templates/otoken/otoken.ts | 40 +++++++++---------- src/templates/otoken/utils.ts | 14 +++---- .../processor-status/processor-status.ts | 3 +- .../strategy-rewards/strategy-rewards.ts | 6 +-- src/templates/strategy/strategy-balancer.ts | 20 +++++----- src/templates/strategy/strategy-curve-amo.ts | 12 +++--- .../strategy/strategy-daily-earnings.ts | 6 +-- src/templates/strategy/strategy-earnings.ts | 36 ++++++++--------- src/templates/strategy/strategy-generic.ts | 10 ++--- src/templates/strategy/strategy-vault.ts | 8 ++-- src/templates/strategy/strategy.ts | 10 ++--- src/utils/activityFromTx.ts | 10 ++--- src/utils/coingecko.ts | 4 +- src/utils/multicall.ts | 4 +- src/utils/utils.ts | 2 +- tsconfig.json | 20 +++++++++- 68 files changed, 372 insertions(+), 355 deletions(-) diff --git a/src/arbitrum/erc20.ts b/src/arbitrum/erc20.ts index 9b83104d..73cd287e 100644 --- a/src/arbitrum/erc20.ts +++ b/src/arbitrum/erc20.ts @@ -1,5 +1,5 @@ -import { createERC20Tracker } from '../processor-templates/erc20' -import { WOETH_ARBITRUM_ADDRESS } from '../utils/addresses' +import { createERC20Tracker } from '@templates/erc20' +import { WOETH_ARBITRUM_ADDRESS } from '@utils/addresses' const woethTransferProcessor = createERC20Tracker({ from: 178662968, diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index 84cb9d52..76d51c70 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -1,8 +1,9 @@ +import * as exchangeRates from '@shared/post-processors/exchange-rates' +import { processStatus } from '@templates/processor-status' + import { erc20s } from './mainnet/processors/erc20s' import * as validate from './mainnet/validators/validate-shared' import { run } from './processor' -import { processStatus } from './processor-templates/processor-status' -import * as exchangeRates from './shared/post-processors/exchange-rates' export const processor = { stateSchema: 'mainnet-processor', diff --git a/src/main-oeth.ts b/src/main-oeth.ts index 6ee63280..2f2edf38 100644 --- a/src/main-oeth.ts +++ b/src/main-oeth.ts @@ -1,3 +1,6 @@ +import * as exchangeRatesPostProcessor from '@shared/post-processors/exchange-rates' +import { processStatus } from '@templates/processor-status' + import * as dailyStats from './oeth/post-processors/daily-stats' import * as oeth from './oeth/processors' import * as balancerMetaPoolStrategy from './oeth/processors/balancer-meta-pool' @@ -11,8 +14,6 @@ import * as strategies from './oeth/processors/strategies' import * as vault from './oeth/processors/vault' import * as validateOeth from './oeth/validators/validate-oeth' import { run } from './processor' -import { processStatus } from './processor-templates/processor-status' -import * as exchangeRatesPostProcessor from './shared/post-processors/exchange-rates' export const processor = { stateSchema: 'oeth-processor', diff --git a/src/main-ogv.ts b/src/main-ogv.ts index 4c844063..710505a1 100644 --- a/src/main-ogv.ts +++ b/src/main-ogv.ts @@ -1,9 +1,10 @@ +import { processStatus } from '@templates/processor-status' + import * as dailyStats from './ogv/post-processors/daily-stats' import * as governance from './ogv/post-processors/governance' import * as ogv from './ogv/processors/ogv' import * as ogvSupply from './ogv/processors/ogv-supply' import { run } from './processor' -import { processStatus } from './processor-templates/processor-status' export const processor = { stateSchema: 'ogv-processor', diff --git a/src/main-ousd.ts b/src/main-ousd.ts index 44abf3ca..697eabb3 100644 --- a/src/main-ousd.ts +++ b/src/main-ousd.ts @@ -1,3 +1,6 @@ +import * as exchangeRates from '@shared/post-processors/exchange-rates' +import { processStatus } from '@templates/processor-status' + import * as dailyStats from './ousd/post-processors/daily-stats' import * as curve from './ousd/processors/curve' import { erc20s } from './ousd/processors/erc20s' @@ -5,8 +8,6 @@ import * as ousd from './ousd/processors/ousd' import * as strategies from './ousd/processors/strategies/strategies' import * as validateOusd from './ousd/validators/validate-ousd' import { run } from './processor' -import { processStatus } from './processor-templates/processor-status' -import * as exchangeRates from './shared/post-processors/exchange-rates' export const processor = { stateSchema: 'ousd-processor', diff --git a/src/mainnet/processors/balancer/balancer.ts b/src/mainnet/processors/balancer/balancer.ts index 8c435ff1..7e0383b5 100644 --- a/src/mainnet/processors/balancer/balancer.ts +++ b/src/mainnet/processors/balancer/balancer.ts @@ -1,13 +1,13 @@ +import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { Context } from '../../../processor' import { createBalancerInitializer, createBalancerProcessor, createBalancerSetup, -} from '../../../processor-templates/balancer' -import { CurrencyAddress } from '../../../shared/post-processors/exchange-rates/currencies' -import { tokens } from '../../../utils/addresses' +} from '@templates/balancer' +import { tokens } from '@utils/addresses' + +import { Context } from '../../../processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/curve/curve.ts b/src/mainnet/processors/curve/curve.ts index dbdc8403..9c8a93dc 100644 --- a/src/mainnet/processors/curve/curve.ts +++ b/src/mainnet/processors/curve/curve.ts @@ -1,11 +1,11 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { Context } from '../../../processor' import { createCurveInitializer, createCurveProcessor, createCurveSetup, -} from '../../../processor-templates/curve' +} from '@templates/curve' + +import { Context } from '../../../processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/erc20s.ts b/src/mainnet/processors/erc20s.ts index f247be1b..d1111cf6 100644 --- a/src/mainnet/processors/erc20s.ts +++ b/src/mainnet/processors/erc20s.ts @@ -1,5 +1,5 @@ -import * as otoken from '../../abi/otoken' -import { createERC20Tracker } from '../../processor-templates/erc20' +import * as otoken from '@abi/otoken' +import { createERC20Tracker } from '@templates/erc20' import { OETH_ADDRESS, OETH_DRIPPER_ADDRESS, @@ -10,8 +10,8 @@ import { oethStrategyArray, ousdStrategyArray, tokens, -} from '../../utils/addresses' -import { logFilter } from '../../utils/logFilter' +} from '@utils/addresses' +import { logFilter } from '@utils/logFilter' // TODO: Would be nice if interested parties could register their desires here from other parts of the code, // allowing multiple declarations of need without issue. diff --git a/src/mainnet/processors/liquidity-sources.ts b/src/mainnet/processors/liquidity-sources.ts index a1761ea9..26bd3dc7 100644 --- a/src/mainnet/processors/liquidity-sources.ts +++ b/src/mainnet/processors/liquidity-sources.ts @@ -1,4 +1,5 @@ -import { LiquiditySource, LiquiditySourceType } from '../../model' +import { LiquiditySource, LiquiditySourceType } from '@model' + import { Context } from '../../processor' const sources = new Map() diff --git a/src/mainnet/processors/maverick.ts b/src/mainnet/processors/maverick.ts index 4832b7ce..4fd44efa 100644 --- a/src/mainnet/processors/maverick.ts +++ b/src/mainnet/processors/maverick.ts @@ -1,12 +1,12 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { Context } from '../../processor' import { createMaverickInitializer, createMaverickProcessor, createMaverickSetup, -} from '../../processor-templates/maverick' -import { tokens } from '../../utils/addresses' +} from '@templates/maverick' +import { tokens } from '@utils/addresses' + +import { Context } from '../../processor' const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/native.ts b/src/mainnet/processors/native.ts index 1898df70..41fe258c 100644 --- a/src/mainnet/processors/native.ts +++ b/src/mainnet/processors/native.ts @@ -1,16 +1,16 @@ +import { NativeBalance } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { minBy } from 'lodash' - -import { NativeBalance } from '../../model' -import { Context } from '../../processor' import { OETH_VAULT_ADDRESS, OUSD_VAULT_ADDRESS, oethStrategyArray, ousdStrategyArray, -} from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' -import { getNativeBalances } from '../../utils/nativeBalance' +} from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' +import { getNativeBalances } from '@utils/nativeBalance' +import { minBy } from 'lodash' + +import { Context } from '../../processor' /** * We end up with a lot of initial 0 balance entities. diff --git a/src/mainnet/processors/sushiswap.ts b/src/mainnet/processors/sushiswap.ts index d2536831..d5168aed 100644 --- a/src/mainnet/processors/sushiswap.ts +++ b/src/mainnet/processors/sushiswap.ts @@ -1,5 +1,6 @@ -import { LiquiditySourceType } from '../../model' -import { addresses } from '../../utils/addresses' +import { LiquiditySourceType } from '@model' +import { addresses } from '@utils/addresses' + import { addERC20Processing } from './erc20s' import { registerLiquiditySource } from './liquidity-sources' diff --git a/src/mainnet/processors/uniswap.ts b/src/mainnet/processors/uniswap.ts index 74b2a79c..3c7d2ccd 100644 --- a/src/mainnet/processors/uniswap.ts +++ b/src/mainnet/processors/uniswap.ts @@ -1,5 +1,6 @@ -import { LiquiditySourceType } from '../../model' -import { addresses } from '../../utils/addresses' +import { LiquiditySourceType } from '@model' +import { addresses } from '@utils/addresses' + import { addERC20Processing } from './erc20s' import { registerLiquiditySource } from './liquidity-sources' diff --git a/src/mainnet/validators/validate-shared.ts b/src/mainnet/validators/validate-shared.ts index f2b6d842..f825ef8e 100644 --- a/src/mainnet/validators/validate-shared.ts +++ b/src/mainnet/validators/validate-shared.ts @@ -1,11 +1,11 @@ +import { ERC20Balance, ERC20State } from '@model' import { Entity, EntityClass } from '@subsquid/typeorm-store' +import { env } from '@utils/env' +import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' -import { ERC20Balance, ERC20State } from '../../model' import { Block, Context } from '../../processor' -import { env } from '../../utils/env' -import { jsonify } from '../../utils/jsonify' export const name = 'validate-shared' diff --git a/src/oeth/post-processors/daily-stats/daily-stats.ts b/src/oeth/post-processors/daily-stats/daily-stats.ts index 9cb62063..c197f944 100644 --- a/src/oeth/post-processors/daily-stats/daily-stats.ts +++ b/src/oeth/post-processors/daily-stats/daily-stats.ts @@ -1,13 +1,3 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { - EntityManager, - FindOptionsOrderValue, - LessThanOrEqual, - MoreThanOrEqual, -} from 'typeorm' - import { ExchangeRate, OETH, @@ -24,9 +14,19 @@ import { OETHStrategyDailyStat, OETHStrategyHoldingDailyStat, OETHVault, -} from '../../../model' +} from '@model' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { applyCoingeckoData } from '@utils/coingecko' +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { + EntityManager, + FindOptionsOrderValue, + LessThanOrEqual, + MoreThanOrEqual, +} from 'typeorm' + import { Context } from '../../../processor' -import { applyCoingeckoData } from '../../../utils/coingecko' dayjs.extend(utc) diff --git a/src/oeth/processors/balancer-meta-pool.ts b/src/oeth/processors/balancer-meta-pool.ts index d5a01a0d..204cedfb 100644 --- a/src/oeth/processors/balancer-meta-pool.ts +++ b/src/oeth/processors/balancer-meta-pool.ts @@ -1,14 +1,14 @@ +import * as balancerMetaPoolStrategy from '@abi/balancer-meta-pool-strategy' +import * as metaStablePool from '@abi/balancer-meta-stable-pool' +import * as baseRewardPool4626 from '@abi/base-reward-pool-4626' +import { OETHBalancerMetaPoolStrategy } from '@model' +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { getBalancerStrategyHoldings } from '@templates/strategy/strategy-balancer' +import { RETH_ADDRESS, WETH_ADDRESS } from '@utils/addresses' +import { getLatestEntity } from '@utils/utils' -import * as balancerMetaPoolStrategy from '../../abi/balancer-meta-pool-strategy' -import * as metaStablePool from '../../abi/balancer-meta-stable-pool' -import * as baseRewardPool4626 from '../../abi/base-reward-pool-4626' -import { OETHBalancerMetaPoolStrategy } from '../../model' import { Context } from '../../processor' -import { getBalancerStrategyHoldings } from '../../processor-templates/strategy/strategy-balancer' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' -import { RETH_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' -import { getLatestEntity } from '../../utils/utils' import { oethStrategies } from './strategies' const strategyDeployBlock = 18156219 diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index 0ee00fb9..e4b03b7e 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -1,12 +1,12 @@ +import * as ccipOffRampAbi from '@abi/ccip-evm2evmofframp' +import * as ccipOnRampAbi from '@abi/ccip-evm2evmonramp' +import * as ccipRouter from '@abi/ccip-router' +import * as erc20Abi from '@abi/erc20' +import { BridgeTransfer, BridgeTransferState } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { logFilter } from '@utils/logFilter' -import * as ccipOffRampAbi from '../../abi/ccip-evm2evmofframp' -import * as ccipOnRampAbi from '../../abi/ccip-evm2evmonramp' -import * as ccipRouter from '../../abi/ccip-router' -import * as erc20Abi from '../../abi/erc20' -import { BridgeTransfer, BridgeTransferState } from '../../model' import { Context } from '../../processor' -import { logFilter } from '../../utils/logFilter' // Code Reference: https://github.com/smartcontractkit/smart-contract-examples/tree/main/ccip-offchain // https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip-offchain/typescript/src/get-status.ts diff --git a/src/oeth/processors/curve-lp.ts b/src/oeth/processors/curve-lp.ts index 06920a24..6795578f 100644 --- a/src/oeth/processors/curve-lp.ts +++ b/src/oeth/processors/curve-lp.ts @@ -1,16 +1,16 @@ +import * as baseRewardPool from '@abi/base-reward-pool' +import * as curveLpToken from '@abi/curve-lp-token' +import { OETHCurveLP } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { pad } from 'viem' - -import * as baseRewardPool from '../../abi/base-reward-pool' -import * as curveLpToken from '../../abi/curve-lp-token' -import { OETHCurveLP } from '../../model' -import { Context } from '../../processor' import { OETH_CONVEX_ADDRESS, OETH_CURVE_LP_ADDRESS, OETH_CURVE_REWARD_LP_ADDRESS, -} from '../../utils/addresses' -import { getLatestEntity } from '../../utils/utils' +} from '@utils/addresses' +import { getLatestEntity } from '@utils/utils' +import { pad } from 'viem' + +import { Context } from '../../processor' interface ProcessResult { curveLPs: OETHCurveLP[] diff --git a/src/oeth/processors/dripper.ts b/src/oeth/processors/dripper.ts index 871cd257..cc83a671 100644 --- a/src/oeth/processors/dripper.ts +++ b/src/oeth/processors/dripper.ts @@ -1,13 +1,13 @@ +import * as dripperAbi from '@abi/dripper' +import * as erc20 from '@abi/erc20' +import { OETHDripper } from '@model' +import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { OETH_DRIPPER_ADDRESS, WETH_ADDRESS } from '@utils/addresses' +import { getLatestEntity, trackAddressBalances } from '@utils/utils' import { pad } from 'viem' -import * as dripperAbi from '../../abi/dripper' -import * as erc20 from '../../abi/erc20' -import { OETHDripper } from '../../model' import { Context } from '../../processor' -import { ensureExchangeRate } from '../../shared/post-processors/exchange-rates' -import { OETH_DRIPPER_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' -import { getLatestEntity, trackAddressBalances } from '../../utils/utils' interface ProcessResult { drippers: OETHDripper[] diff --git a/src/oeth/processors/exchange-rates.ts b/src/oeth/processors/exchange-rates.ts index 3750a5c3..3fe9c40a 100644 --- a/src/oeth/processors/exchange-rates.ts +++ b/src/oeth/processors/exchange-rates.ts @@ -1,8 +1,8 @@ +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' export const from = 16933090 // OETH Deploy diff --git a/src/oeth/processors/frax-staking.ts b/src/oeth/processors/frax-staking.ts index 9ad73378..8daec3bb 100644 --- a/src/oeth/processors/frax-staking.ts +++ b/src/oeth/processors/frax-staking.ts @@ -1,14 +1,11 @@ +import * as sfrxETH from '@abi/sfrx-eth' +import { OETHFraxStaking } from '@model' +import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { OETH_FRAX_STAKING_ADDRESS, SFRXETH_ADDRESS } from '@utils/addresses' import { pad } from 'viem' -import * as sfrxETH from '../../abi/sfrx-eth' -import { OETHFraxStaking } from '../../model' import { Context } from '../../processor' -import { ensureExchangeRate } from '../../shared/post-processors/exchange-rates' -import { - OETH_FRAX_STAKING_ADDRESS, - SFRXETH_ADDRESS, -} from '../../utils/addresses' interface ProcessResult { fraxStakings: OETHFraxStaking[] diff --git a/src/oeth/processors/morpho-aave.ts b/src/oeth/processors/morpho-aave.ts index 41a1d8c8..e337d3a8 100644 --- a/src/oeth/processors/morpho-aave.ts +++ b/src/oeth/processors/morpho-aave.ts @@ -1,12 +1,12 @@ +import * as erc20 from '@abi/erc20' +import * as initializableAbstractStrategy from '@abi/initializable-abstract-strategy' +import { OETHMorphoAave } from '@model' +import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { OETH_MORPHO_AAVE_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { pad } from 'viem' -import * as erc20 from '../../abi/erc20' -import * as initializableAbstractStrategy from '../../abi/initializable-abstract-strategy' -import { OETHMorphoAave } from '../../model' import { Context } from '../../processor' -import { ensureExchangeRate } from '../../shared/post-processors/exchange-rates' -import { OETH_MORPHO_AAVE_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' interface ProcessResult { morphoAaves: OETHMorphoAave[] diff --git a/src/oeth/processors/oeth.ts b/src/oeth/processors/oeth.ts index 6ba8ed6a..b33c93cc 100644 --- a/src/oeth/processors/oeth.ts +++ b/src/oeth/processors/oeth.ts @@ -7,11 +7,8 @@ import { OETHHistory, OETHRebase, OETHRebaseOption, -} from '../../model' -import { - createOTokenProcessor, - createOTokenSetup, -} from '../../processor-templates/otoken' +} from '@model' +import { createOTokenProcessor, createOTokenSetup } from '@templates/otoken' import { ETH_ADDRESS, FRXETH_ADDRESS, @@ -23,7 +20,7 @@ import { WETH_ADDRESS, WOETH_ADDRESS, WSTETH_ADDRESS, -} from '../../utils/addresses' +} from '@utils/addresses' export const from = 16933090 // https://etherscan.io/tx/0x3b4ece4f5fef04bf7ceaec4f6c6edf700540d7597589f8da0e3a8c94264a3b50 diff --git a/src/oeth/processors/strategies/strategies.ts b/src/oeth/processors/strategies/strategies.ts index 7b8937c9..0c074176 100644 --- a/src/oeth/processors/strategies/strategies.ts +++ b/src/oeth/processors/strategies/strategies.ts @@ -1,17 +1,15 @@ +import { OETHRewardTokenCollected } from '@model' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { OETHRewardTokenCollected } from '../../../model' -import { Context } from '../../../processor' import { IStrategyData, createStrategyProcessor, createStrategySetup, -} from '../../../processor-templates/strategy' +} from '@templates/strategy' import { createStrategyRewardProcessor, createStrategyRewardSetup, -} from '../../../processor-templates/strategy-rewards' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' +} from '@templates/strategy-rewards' import { ETH_ADDRESS, FRXETH_ADDRESS, @@ -21,7 +19,9 @@ import { STETH_ADDRESS, WETH_ADDRESS, addresses, -} from '../../../utils/addresses' +} from '@utils/addresses' + +import { Context } from '../../../processor' export const oethStrategies: readonly IStrategyData[] = [ { diff --git a/src/oeth/processors/vault.ts b/src/oeth/processors/vault.ts index d5be4be4..dc41a1a7 100644 --- a/src/oeth/processors/vault.ts +++ b/src/oeth/processors/vault.ts @@ -1,11 +1,8 @@ +import * as erc20 from '@abi/erc20' +import * as lido from '@abi/lido' +import { OETHVault } from '@model' +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { pad } from 'viem' - -import * as erc20 from '../../abi/erc20' -import * as lido from '../../abi/lido' -import { OETHVault } from '../../model' -import { Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' import { FRXETH_ADDRESS, OETH_VAULT_ADDRESS, @@ -13,8 +10,11 @@ import { RETH_ADDRESS, STETH_ADDRESS, WETH_ADDRESS, -} from '../../utils/addresses' -import { getLatestEntity, trackAddressBalances } from '../../utils/utils' +} from '@utils/addresses' +import { getLatestEntity, trackAddressBalances } from '@utils/utils' +import { pad } from 'viem' + +import { Context } from '../../processor' interface ProcessResult { vaults: OETHVault[] diff --git a/src/oeth/validators/validate-oeth/validate-oeth.ts b/src/oeth/validators/validate-oeth/validate-oeth.ts index f7c118ba..5827d0fa 100644 --- a/src/oeth/validators/validate-oeth/validate-oeth.ts +++ b/src/oeth/validators/validate-oeth/validate-oeth.ts @@ -1,7 +1,3 @@ -import { Entity, EntityClass } from '@subsquid/typeorm-store' -import assert from 'assert' -import { sortBy } from 'lodash' - import { OETHAPY, OETHHistory, @@ -9,10 +5,14 @@ import { OETHRebase, OETHVault, StrategyBalance, -} from '../../../model' +} from '@model' +import { Entity, EntityClass } from '@subsquid/typeorm-store' +import { env } from '@utils/env' +import { jsonify } from '@utils/jsonify' +import assert from 'assert' +import { sortBy } from 'lodash' + import { Block, Context } from '../../../processor' -import { env } from '../../../utils/env' -import { jsonify } from '../../../utils/jsonify' export const name = 'validate-oeth' diff --git a/src/ogv/post-processors/daily-stats.ts b/src/ogv/post-processors/daily-stats.ts index 57328330..35292edd 100644 --- a/src/ogv/post-processors/daily-stats.ts +++ b/src/ogv/post-processors/daily-stats.ts @@ -1,4 +1,6 @@ +import { OGV, OGVAddress, OGVDailyStat } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { applyCoingeckoData } from '@utils/coingecko' import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' import { @@ -7,9 +9,7 @@ import { MoreThanOrEqual, } from 'typeorm' -import { OGV, OGVAddress, OGVDailyStat } from '../../model' import { Context } from '../../processor' -import { applyCoingeckoData } from '../../utils/coingecko' dayjs.extend(utc) diff --git a/src/ogv/post-processors/governance.ts b/src/ogv/post-processors/governance.ts index c6183057..b883f123 100644 --- a/src/ogv/post-processors/governance.ts +++ b/src/ogv/post-processors/governance.ts @@ -1,7 +1,4 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { formatEther } from 'viem' - -import * as governanceAbi from '../../abi/governance' +import * as governanceAbi from '@abi/governance' import { OGVAddress, OGVProposal, @@ -10,10 +7,13 @@ import { OGVProposalTxLog, OGVProposalVote, OGVVoteType, -} from '../../model' +} from '@model' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { GOVERNANCE_ADDRESS } from '@utils/addresses' +import { env } from '@utils/env' +import { formatEther } from 'viem' + import { Block, Context, Log } from '../../processor' -import { GOVERNANCE_ADDRESS } from '../../utils/addresses' -import { env } from '../../utils/env' export const from = 15491391 // https://etherscan.io/tx/0x0e04e429248c384e6b36229edf8eb5a77bec7023c58808c21b702edfcbc0e0d6 diff --git a/src/ogv/processors/ogv-supply.ts b/src/ogv/processors/ogv-supply.ts index a8796bef..7e357761 100644 --- a/src/ogv/processors/ogv-supply.ts +++ b/src/ogv/processors/ogv-supply.ts @@ -1,10 +1,10 @@ +import * as erc20Abi from '@abi/erc20' +import { OGV } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import * as erc20Abi from '../../abi/erc20' -import { OGV } from '../../model' import { Context } from '../../processor' -import { OGV_ADDRESS, VEOGV_ADDRESS } from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 diff --git a/src/ogv/processors/ogv.ts b/src/ogv/processors/ogv.ts index e0b2a456..8fb73b05 100644 --- a/src/ogv/processors/ogv.ts +++ b/src/ogv/processors/ogv.ts @@ -1,15 +1,15 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import * as erc20Abi from '../../abi/erc20' -import * as veogvAbi from '../../abi/veogv' +import * as erc20Abi from '@abi/erc20' +import * as veogvAbi from '@abi/veogv' import { OGVAddress, OGVLockup, OGVLockupEventType, OGVLockupTxLog, -} from '../../model' +} from '@model' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { ADDRESS_ZERO, OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' + import { Block, Context, Log } from '../../processor' -import { ADDRESS_ZERO, OGV_ADDRESS, VEOGV_ADDRESS } from '../../utils/addresses' export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 export const veogvFrom = 15089597 // https://etherscan.io/tx/0x70c582e56ea1c49b7e9df70a0b40ddbfac9362b8b172cb527c329c2302d7d48a diff --git a/src/ousd/post-processors/daily-stats/daily-stats.ts b/src/ousd/post-processors/daily-stats/daily-stats.ts index c2413b3f..c1f80c47 100644 --- a/src/ousd/post-processors/daily-stats/daily-stats.ts +++ b/src/ousd/post-processors/daily-stats/daily-stats.ts @@ -1,13 +1,3 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { - EntityManager, - FindOptionsOrderValue, - LessThanOrEqual, - MoreThanOrEqual, -} from 'typeorm' - import { OUSD, OUSDAPY, @@ -19,9 +9,19 @@ import { OUSDStrategyDailyStat, OUSDStrategyHoldingDailyStat, OUSDVault, -} from '../../../model' +} from '@model' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { applyCoingeckoData } from '@utils/coingecko' +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { + EntityManager, + FindOptionsOrderValue, + LessThanOrEqual, + MoreThanOrEqual, +} from 'typeorm' + import { Context } from '../../../processor' -import { applyCoingeckoData } from '../../../utils/coingecko' dayjs.extend(utc) diff --git a/src/ousd/processors/curve/curve.ts b/src/ousd/processors/curve/curve.ts index 3a63e188..9aa67bc5 100644 --- a/src/ousd/processors/curve/curve.ts +++ b/src/ousd/processors/curve/curve.ts @@ -1,12 +1,12 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { Context } from '../../../processor' import { createCurveInitializer, createCurveProcessor, createCurveSetup, -} from '../../../processor-templates/curve' -import { tokens } from '../../../utils/addresses' +} from '@templates/curve' +import { tokens } from '@utils/addresses' + +import { Context } from '../../../processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/ousd/processors/erc20s.ts b/src/ousd/processors/erc20s.ts index 10d55693..de74dbf3 100644 --- a/src/ousd/processors/erc20s.ts +++ b/src/ousd/processors/erc20s.ts @@ -1,9 +1,5 @@ -import { createERC20Tracker } from '../../processor-templates/erc20' -import { - OUSD_VAULT_ADDRESS, - ousdStrategyArray, - tokens, -} from '../../utils/addresses' +import { createERC20Tracker } from '@templates/erc20' +import { OUSD_VAULT_ADDRESS, ousdStrategyArray, tokens } from '@utils/addresses' const tracks: Record[0]> = { // OUSD Related diff --git a/src/ousd/processors/ousd/ousd.ts b/src/ousd/processors/ousd/ousd.ts index 9bc659cf..d11cd77b 100644 --- a/src/ousd/processors/ousd/ousd.ts +++ b/src/ousd/processors/ousd/ousd.ts @@ -7,18 +7,15 @@ import { OUSDHistory, OUSDRebase, OUSDRebaseOption, -} from '../../../model' -import { - createOTokenProcessor, - createOTokenSetup, -} from '../../../processor-templates/otoken' +} from '@model' +import { createOTokenProcessor, createOTokenSetup } from '@templates/otoken' import { DAI_ADDRESS, OUSD_ADDRESS, OUSD_VAULT_ADDRESS, USDC_ADDRESS, USDT_ADDRESS, -} from '../../../utils/addresses' +} from '@utils/addresses' // export const from = 10884563 // https://etherscan.io/tx/0x9141921f5ebf072e58c00fe56332b6bee0c02f0ae4f54c42999b8a3a88662681 export const from = 11585978 // OUSDReset diff --git a/src/ousd/processors/strategies/aave-strategy.ts b/src/ousd/processors/strategies/aave-strategy.ts index 2f76ce90..b40ebd44 100644 --- a/src/ousd/processors/strategies/aave-strategy.ts +++ b/src/ousd/processors/strategies/aave-strategy.ts @@ -1,10 +1,10 @@ +import * as aaveLendingPool from '@abi/aave-lending-pool' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' +import { logFilter } from '@utils/logFilter' import { pad as viemPad } from 'viem' -import * as aaveLendingPool from '../../../abi/aave-lending-pool' -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' -import { logFilter } from '../../../utils/logFilter' import { DAI, USDT } from './const' export const aaveStrategy: IStrategyData = { diff --git a/src/ousd/processors/strategies/convex-meta-strategy.ts b/src/ousd/processors/strategies/convex-meta-strategy.ts index 3cfa3f4a..0db880d4 100644 --- a/src/ousd/processors/strategies/convex-meta-strategy.ts +++ b/src/ousd/processors/strategies/convex-meta-strategy.ts @@ -1,8 +1,9 @@ -import * as abstractStrategyAbi from '../../../abi/initializable-abstract-strategy' -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' -import { traceFilter } from '../../../utils/traceFilter' +import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' +import { traceFilter } from '@utils/traceFilter' + import { DAI, USDC, USDT } from './const' const from = 15896478 diff --git a/src/ousd/processors/strategies/flux-strategy.ts b/src/ousd/processors/strategies/flux-strategy.ts index 9aae46f2..898b340a 100644 --- a/src/ousd/processors/strategies/flux-strategy.ts +++ b/src/ousd/processors/strategies/flux-strategy.ts @@ -1,6 +1,7 @@ -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' + import { DAI, USDC, USDT } from './const' export const fluxStrategy: IStrategyData = { diff --git a/src/ousd/processors/strategies/maker-dsr-strategy.ts b/src/ousd/processors/strategies/maker-dsr-strategy.ts index 64df8d70..ac4bc463 100644 --- a/src/ousd/processors/strategies/maker-dsr-strategy.ts +++ b/src/ousd/processors/strategies/maker-dsr-strategy.ts @@ -1,6 +1,7 @@ -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' + import { DAI, USDC, USDT } from './const' export const makerDsrStrategy: IStrategyData = { diff --git a/src/ousd/processors/strategies/morpho-aave.ts b/src/ousd/processors/strategies/morpho-aave.ts index f5058942..ca843be7 100644 --- a/src/ousd/processors/strategies/morpho-aave.ts +++ b/src/ousd/processors/strategies/morpho-aave.ts @@ -1,6 +1,7 @@ -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' + import { DAI, USDC, USDT } from './const' export const morphoAave: IStrategyData = { diff --git a/src/ousd/processors/strategies/morpho-compound.ts b/src/ousd/processors/strategies/morpho-compound.ts index eedac655..7463a998 100644 --- a/src/ousd/processors/strategies/morpho-compound.ts +++ b/src/ousd/processors/strategies/morpho-compound.ts @@ -1,6 +1,7 @@ -import { IStrategyData } from '../../../processor-templates/strategy' -import { currencies } from '../../../shared/post-processors/exchange-rates/currencies' -import { OUSD_ADDRESS } from '../../../utils/addresses' +import { currencies } from '@shared/post-processors/exchange-rates/currencies' +import { IStrategyData } from '@templates/strategy' +import { OUSD_ADDRESS } from '@utils/addresses' + import { DAI, USDC, USDT } from './const' export const morphoCompound: IStrategyData = { diff --git a/src/ousd/processors/strategies/strategies.ts b/src/ousd/processors/strategies/strategies.ts index f6787306..97213b7b 100644 --- a/src/ousd/processors/strategies/strategies.ts +++ b/src/ousd/processors/strategies/strategies.ts @@ -1,16 +1,16 @@ +import { OETHRewardTokenCollected } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import { OETHRewardTokenCollected } from '../../../model' -import { Context } from '../../../processor' import { IStrategyData, createStrategyProcessor, createStrategySetup, -} from '../../../processor-templates/strategy' +} from '@templates/strategy' import { createStrategyRewardProcessor, createStrategyRewardSetup, -} from '../../../processor-templates/strategy-rewards' +} from '@templates/strategy-rewards' + +import { Context } from '../../../processor' import { aaveStrategy } from './aave-strategy' import { convexMetaStrategy } from './convex-meta-strategy' import { fluxStrategy } from './flux-strategy' diff --git a/src/ousd/processors/vault.ts b/src/ousd/processors/vault.ts index 4c9737f4..607aad5b 100644 --- a/src/ousd/processors/vault.ts +++ b/src/ousd/processors/vault.ts @@ -1,17 +1,17 @@ +import * as erc20 from '@abi/erc20' +import { OUSDVault } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { pad } from 'viem' - -import * as erc20 from '../../abi/erc20' -import { OUSDVault } from '../../model' -import { Context } from '../../processor' import { DAI_ADDRESS, OUSD_VAULT_ADDRESS, OUSD_VAULT_ERC20_ADDRESSES, USDC_ADDRESS, USDT_ADDRESS, -} from '../../utils/addresses' -import { getLatestEntity, trackAddressBalances } from '../../utils/utils' +} from '@utils/addresses' +import { getLatestEntity, trackAddressBalances } from '@utils/utils' +import { pad } from 'viem' + +import { Context } from '../../processor' interface ProcessResult { vaults: OUSDVault[] diff --git a/src/ousd/validators/validate-ousd/validate-ousd.ts b/src/ousd/validators/validate-ousd/validate-ousd.ts index df84071a..a5ea0656 100644 --- a/src/ousd/validators/validate-ousd/validate-ousd.ts +++ b/src/ousd/validators/validate-ousd/validate-ousd.ts @@ -1,11 +1,11 @@ +import { StrategyYield } from '@model' import { Entity, EntityClass } from '@subsquid/typeorm-store' +import { env } from '@utils/env' +import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' -import { StrategyYield } from '../../../model' import { Block, Context } from '../../../processor' -import { env } from '../../../utils/env' -import { jsonify } from '../../../utils/jsonify' export const name = 'validate-ousd' diff --git a/src/server-extension/ogn-stats.ts b/src/server-extension/ogn-stats.ts index e35b985d..fb6906d6 100644 --- a/src/server-extension/ogn-stats.ts +++ b/src/server-extension/ogn-stats.ts @@ -1,4 +1,5 @@ -import './fetch-polyfill' +import * as Erc20ABI from '@abi/erc20.abi' +import { OGN_ADDRESS } from '@utils/addresses' import { GraphQLResolveInfo } from 'graphql' import 'reflect-metadata' import { Field, Info, ObjectType, Query, Resolver } from 'type-graphql' @@ -13,8 +14,7 @@ import { } from 'viem' import { mainnet } from 'viem/chains' -import * as Erc20ABI from '../abi/erc20.abi' -import { OGN_ADDRESS } from '../utils/addresses' +import './fetch-polyfill' const publicClient = createPublicClient({ chain: mainnet, diff --git a/src/shared/post-processors/exchange-rates/currencies.ts b/src/shared/post-processors/exchange-rates/currencies.ts index a502743d..8cb17e62 100644 --- a/src/shared/post-processors/exchange-rates/currencies.ts +++ b/src/shared/post-processors/exchange-rates/currencies.ts @@ -1,7 +1,6 @@ +import { ExchangeRate } from '@model' import { invert, mapKeys } from 'lodash' -import { ExchangeRate } from '../../../model' - export const currencies = { USD: '0x0000000000000000000000000000000000000348', // Chainlink Denominations.USD DAI: '0x6b175474e89094c44da98b954eedeac495271d0f', diff --git a/src/shared/post-processors/exchange-rates/exchange-rates.ts b/src/shared/post-processors/exchange-rates/exchange-rates.ts index c1a547cc..8f10744e 100644 --- a/src/shared/post-processors/exchange-rates/exchange-rates.ts +++ b/src/shared/post-processors/exchange-rates/exchange-rates.ts @@ -1,9 +1,9 @@ +import { ExchangeRate } from '@model' +import { useProcessorState } from '@utils/state' import { compact } from 'lodash' import { Between } from 'typeorm' -import { ExchangeRate } from '../../../model' import { Block, Context } from '../../../processor' -import { useProcessorState } from '../../../utils/state' import { Currency, currenciesByAddress } from './currencies' import { getPrice } from './price-routing' diff --git a/src/shared/post-processors/exchange-rates/price-routing.ts b/src/shared/post-processors/exchange-rates/price-routing.ts index 3b1141ba..77e7d556 100644 --- a/src/shared/post-processors/exchange-rates/price-routing.ts +++ b/src/shared/post-processors/exchange-rates/price-routing.ts @@ -1,14 +1,14 @@ +import * as balancerMetaStablePoolAbi from '@abi/balancer-meta-stable-pool' +import * as balancerRateProvider from '@abi/balancer-rate-provider' +import * as chainlinkFeedRegistry from '@abi/chainlink-feed-registry' +import * as frxEthFraxOracle from '@abi/frx-eth-frax-oracle' +import * as oethOracleRouter from '@abi/oeth-oracle-router' +import * as stakedFraxEth from '@abi/sfrx-eth' +import * as woethAbi from '@abi/woeth' +import { STETH_ADDRESS } from '@utils/addresses' import { memoize } from 'lodash' -import * as balancerMetaStablePoolAbi from '../../../abi/balancer-meta-stable-pool' -import * as balancerRateProvider from '../../../abi/balancer-rate-provider' -import * as chainlinkFeedRegistry from '../../../abi/chainlink-feed-registry' -import * as frxEthFraxOracle from '../../../abi/frx-eth-frax-oracle' -import * as oethOracleRouter from '../../../abi/oeth-oracle-router' -import * as stakedFraxEth from '../../../abi/sfrx-eth' -import * as woethAbi from '../../../abi/woeth' import { Context } from '../../../processor' -import { STETH_ADDRESS } from '../../../utils/addresses' import { Currency, CurrencySymbol, currencies } from './currencies' export const getPrice = async ( diff --git a/src/shared/post-processors/liquidity.ts b/src/shared/post-processors/liquidity.ts index 8bdde1eb..8aafbc5b 100644 --- a/src/shared/post-processors/liquidity.ts +++ b/src/shared/post-processors/liquidity.ts @@ -1,8 +1,8 @@ +import { LiquidityDailyBalance } from '@model' +import { useProcessorState } from '@utils/state' import dayjs from 'dayjs' -import { LiquidityDailyBalance } from '../../model' import { Context } from '../../processor' -import { useProcessorState } from '../../utils/state' const useLiquidityDailyBalance = (ctx: Context) => useProcessorState( diff --git a/src/templates/balancer/balancer.ts b/src/templates/balancer/balancer.ts index 82080493..9bf3d561 100644 --- a/src/templates/balancer/balancer.ts +++ b/src/templates/balancer/balancer.ts @@ -1,24 +1,24 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import * as balancerComposableStablePool from '../../abi/balancer-composable-stable-pool' -import * as balancerMetaStablePoolAbi from '../../abi/balancer-meta-stable-pool' -import * as balancerRateProvider from '../../abi/balancer-rate-provider' -import * as balancerVaultAbi from '../../abi/balancer-vault' -import * as balancerWeightedPool from '../../abi/balancer-weighted-pool-2-token' -import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' +import * as balancerComposableStablePool from '@abi/balancer-composable-stable-pool' +import * as balancerMetaStablePoolAbi from '@abi/balancer-meta-stable-pool' +import * as balancerRateProvider from '@abi/balancer-rate-provider' +import * as balancerVaultAbi from '@abi/balancer-vault' +import * as balancerWeightedPool from '@abi/balancer-weighted-pool-2-token' import { BalancerPool, BalancerPoolBalance, BalancerPoolRate, LiquiditySource, LiquiditySourceType, -} from '../../model' +} from '@model' +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' +import { Currency } from '@shared/post-processors/exchange-rates/currencies' +import { updateLiquidityBalances } from '@shared/post-processors/liquidity' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { ADDRESS_ZERO, BALANCER_VAULT } from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' + +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' -import { Currency } from '../../shared/post-processors/exchange-rates/currencies' -import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' -import { ADDRESS_ZERO, BALANCER_VAULT } from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' const eth1 = BigInt('1000000000000000000') diff --git a/src/templates/curve/curve.ts b/src/templates/curve/curve.ts index ab83613d..a1fc1747 100644 --- a/src/templates/curve/curve.ts +++ b/src/templates/curve/curve.ts @@ -1,17 +1,17 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import * as curveLpToken from '../../abi/curve-lp-token' -import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' +import * as curveLpToken from '@abi/curve-lp-token' import { CurvePool, CurvePoolBalance, CurvePoolRate, LiquiditySourceType, -} from '../../model' +} from '@model' +import { updateLiquidityBalances } from '@shared/post-processors/liquidity' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' +import { range } from '@utils/range' + +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { Context } from '../../processor' -import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' -import { range } from '../../utils/range' interface ProcessResult { curvePoolBalances: CurvePoolBalance[] diff --git a/src/templates/erc20/erc20.ts b/src/templates/erc20/erc20.ts index 6f53d003..ae87a0c6 100644 --- a/src/templates/erc20/erc20.ts +++ b/src/templates/erc20/erc20.ts @@ -1,18 +1,18 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import * as abi from '../../abi/erc20' +import * as abi from '@abi/erc20' import { ERC20, ERC20Balance, ERC20Holder, ERC20State, ERC20Transfer, -} from '../../model' +} from '@model' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { ADDRESS_ZERO, TokenAddress } from '@utils/addresses' +import { blockFrequencyTracker } from '@utils/blockFrequencyUpdater' +import { LogFilter, logFilter } from '@utils/logFilter' +import { multicall } from '@utils/multicall' + import { Context } from '../../processor' -import { ADDRESS_ZERO, TokenAddress } from '../../utils/addresses' -import { blockFrequencyTracker } from '../../utils/blockFrequencyUpdater' -import { LogFilter, logFilter } from '../../utils/logFilter' -import { multicall } from '../../utils/multicall' const duplicateTracker = new Set() diff --git a/src/templates/maverick/maverick.ts b/src/templates/maverick/maverick.ts index dc427b23..55a0291d 100644 --- a/src/templates/maverick/maverick.ts +++ b/src/templates/maverick/maverick.ts @@ -1,17 +1,17 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { add } from 'lodash' - -import * as maverickPool from '../../abi/maverick-pool' -import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' +import * as maverickPool from '@abi/maverick-pool' import { LiquiditySource, LiquiditySourceType, MaverickPool, MaverickPoolBalance, -} from '../../model' +} from '@model' +import { updateLiquidityBalances } from '@shared/post-processors/liquidity' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' +import { add } from 'lodash' + +import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' import { Context } from '../../processor' -import { updateLiquidityBalances } from '../../shared/post-processors/liquidity' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' // Maverick Pool Reference: https://docs.mav.xyz/guides/technical-reference/pool diff --git a/src/templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts index bf8dcd5f..c0b9163c 100644 --- a/src/templates/otoken/otoken.ts +++ b/src/templates/otoken/otoken.ts @@ -1,10 +1,6 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { groupBy } from 'lodash' -import { GetTransactionReceiptReturnType } from 'viem' - -import * as erc20 from '../../abi/erc20' -import * as otoken from '../../abi/otoken' -import * as otokenVault from '../../abi/otoken-vault' +import * as erc20 from '@abi/erc20' +import * as otoken from '@abi/otoken' +import * as otokenVault from '@abi/otoken-vault' import { HistoryType, OETH, @@ -24,19 +20,23 @@ import { OUSDRebase, OUSDRebaseOption, RebasingOption, -} from '../../model' -import { Context } from '../../processor' -import { ensureExchangeRate } from '../../shared/post-processors/exchange-rates' +} from '@model' +import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { CurrencyAddress, CurrencySymbol, -} from '../../shared/post-processors/exchange-rates/currencies' -import { type Transaction, activityFromTx } from '../../utils/activityFromTx' -import { ADDRESS_ZERO } from '../../utils/addresses' -import { DECIMALS_18 } from '../../utils/constants' -import { multicall } from '../../utils/multicall' -import { EntityClassT, InstanceTypeOfConstructor } from '../../utils/type' -import { getLatestEntity } from '../../utils/utils' +} from '@shared/post-processors/exchange-rates/currencies' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { type Transaction, activityFromTx } from '@utils/activityFromTx' +import { ADDRESS_ZERO } from '@utils/addresses' +import { DECIMALS_18 } from '@utils/constants' +import { multicall } from '@utils/multicall' +import { EntityClassT, InstanceTypeOfConstructor } from '@utils/type' +import { getLatestEntity } from '@utils/utils' +import { groupBy } from 'lodash' +import { GetTransactionReceiptReturnType } from 'viem' + +import { Context } from '../../processor' import { createAddress, createRebaseAPY } from './utils' type OToken = EntityClassT | EntityClassT @@ -424,7 +424,7 @@ export const createOTokenProcessor = (params: { } // Rebase events - let rebase = createRebaseAPY( + const rebase = createRebaseAPY( params.OTokenAPY, params.OTokenRebase, ctx, @@ -517,7 +517,7 @@ export const createOTokenProcessor = (params: { owners!.set(address, owner) } - let rebaseOption = new params.OTokenRebaseOption({ + const rebaseOption = new params.OTokenRebaseOption({ id: getUniqueId(`${trace.transaction?.hash!}-${owner.id}`), timestamp, blockNumber, @@ -588,7 +588,7 @@ export const createOTokenProcessor = (params: { owners!.set(address, owner) } - let rebaseOption = new params.OTokenRebaseOption({ + const rebaseOption = new params.OTokenRebaseOption({ id: getUniqueId(`${log.transactionHash!}-${owner.id}`), timestamp, blockNumber, diff --git a/src/templates/otoken/utils.ts b/src/templates/otoken/utils.ts index c0a4788a..7f7f71d9 100644 --- a/src/templates/otoken/utils.ts +++ b/src/templates/otoken/utils.ts @@ -1,8 +1,4 @@ -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { LessThan, MoreThanOrEqual } from 'typeorm' - -import * as otoken from '../../abi/otoken' +import * as otoken from '@abi/otoken' import { ExchangeRate, OETHAPY, @@ -12,9 +8,13 @@ import { OUSDAddress, OUSDRebase, RebasingOption, -} from '../../model' +} from '@model' +import { calculateAPY } from '@utils/calculateAPY' +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { LessThan, MoreThanOrEqual } from 'typeorm' + import { Context } from '../../processor' -import { calculateAPY } from '../../utils/calculateAPY' dayjs.extend(utc) diff --git a/src/templates/processor-status/processor-status.ts b/src/templates/processor-status/processor-status.ts index 31339239..fcf80d51 100644 --- a/src/templates/processor-status/processor-status.ts +++ b/src/templates/processor-status/processor-status.ts @@ -1,4 +1,5 @@ -import { ProcessingStatus } from '../../model' +import { ProcessingStatus } from '@model' + import { Context } from '../../processor' const processorIds = new Set() diff --git a/src/templates/strategy-rewards/strategy-rewards.ts b/src/templates/strategy-rewards/strategy-rewards.ts index f8305ee0..d8635336 100644 --- a/src/templates/strategy-rewards/strategy-rewards.ts +++ b/src/templates/strategy-rewards/strategy-rewards.ts @@ -1,9 +1,9 @@ +import * as iat from '@abi/initializable-abstract-strategy' +import { OETHRewardTokenCollected } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { EntityClassT } from '@utils/type' -import * as iat from '../../abi/initializable-abstract-strategy' -import { OETHRewardTokenCollected } from '../../model' import { Context } from '../../processor' -import { EntityClassT } from '../../utils/type' export const createStrategyRewardSetup = ({ address, diff --git a/src/templates/strategy/strategy-balancer.ts b/src/templates/strategy/strategy-balancer.ts index 78088233..71224f04 100644 --- a/src/templates/strategy/strategy-balancer.ts +++ b/src/templates/strategy/strategy-balancer.ts @@ -1,18 +1,18 @@ +import * as balancerMetaStablePoolStrategyAbi from '@abi/balancer-meta-pool-strategy' +import * as balancerRateProvider from '@abi/balancer-rate-provider' +import * as balancerVaultAbi from '@abi/balancer-vault' +import { StrategyBalance } from '@model' +import { getBalancePoolRateProviders } from '@shared/post-processors/exchange-rates/price-routing' import { EvmBatchProcessor } from '@subsquid/evm-processor' - -import * as balancerMetaStablePoolStrategyAbi from '../../abi/balancer-meta-pool-strategy' -import * as balancerRateProvider from '../../abi/balancer-rate-provider' -import * as balancerVaultAbi from '../../abi/balancer-vault' -import { StrategyBalance } from '../../model' -import { Context } from '../../processor' -import { getBalancePoolRateProviders } from '../../shared/post-processors/exchange-rates/price-routing' import { ADDRESS_ZERO, BALANCER_VAULT, ETH_ADDRESS, WETH_ADDRESS, -} from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' +} from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' + +import { Context } from '../../processor' import { IStrategyData } from './index' import { processStrategyEarnings, @@ -104,7 +104,7 @@ export const getBalancerStrategyHoldings = async ( block, BALANCER_VAULT, ) - let [poolAssets, balances] = await balancerVault.getPoolTokens(poolId) + const [poolAssets, balances] = await balancerVault.getPoolTokens(poolId) const totalStrategyBalance = await strategy['checkBalance()']() // in WETH const eth1 = BigInt('1000000000000000000') diff --git a/src/templates/strategy/strategy-curve-amo.ts b/src/templates/strategy/strategy-curve-amo.ts index e95dace4..cfb317bd 100644 --- a/src/templates/strategy/strategy-curve-amo.ts +++ b/src/templates/strategy/strategy-curve-amo.ts @@ -1,12 +1,12 @@ +import * as curvePool from '@abi/curve-lp-token' +import * as erc20 from '@abi/erc20' +import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' +import { StrategyBalance } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { ETH_ADDRESS, WETH_ADDRESS } from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import * as curvePool from '../../abi/curve-lp-token' -import * as erc20 from '../../abi/erc20' -import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' -import { StrategyBalance } from '../../model' import { Block, Context } from '../../processor' -import { ETH_ADDRESS, WETH_ADDRESS } from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-daily-earnings.ts b/src/templates/strategy/strategy-daily-earnings.ts index 8a095d21..0f5062e8 100644 --- a/src/templates/strategy/strategy-daily-earnings.ts +++ b/src/templates/strategy/strategy-daily-earnings.ts @@ -1,11 +1,11 @@ +import { StrategyDailyYield, StrategyYield } from '@model' +import { calculateAPY } from '@utils/calculateAPY' +import { lastExcept, max } from '@utils/utils' import dayjs from 'dayjs' import { Between, LessThan, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' -import { StrategyDailyYield, StrategyYield } from '../../model' import { Block, Context } from '../../processor' -import { calculateAPY } from '../../utils/calculateAPY' -import { lastExcept, max } from '../../utils/utils' import { IStrategyData } from './strategy' const eth1 = 1000000000000000000n diff --git a/src/templates/strategy/strategy-earnings.ts b/src/templates/strategy/strategy-earnings.ts index ecd4064a..c014e8b2 100644 --- a/src/templates/strategy/strategy-earnings.ts +++ b/src/templates/strategy/strategy-earnings.ts @@ -1,18 +1,13 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import dayjs from 'dayjs' -import { LessThan } from 'typeorm' -import { formatEther } from 'viem' - -import * as baseRewardPool from '../../abi/base-reward-pool' -import * as erc20 from '../../abi/erc20' -import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' -import { StrategyYield } from '../../model' -import { Block, Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' +import * as baseRewardPool from '@abi/base-reward-pool' +import * as erc20 from '@abi/erc20' +import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' +import { StrategyYield } from '@model' +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { Currency, convertRate, -} from '../../shared/post-processors/exchange-rates/currencies' +} from '@shared/post-processors/exchange-rates/currencies' +import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_ADDRESS, OETH_DRIPPER_ADDRESS, @@ -22,10 +17,15 @@ import { OUSD_HARVESTER_ADDRESS, USDT_ADDRESS, WETH_ADDRESS, -} from '../../utils/addresses' -import { blockFrequencyTracker } from '../../utils/blockFrequencyUpdater' -import { logFilter } from '../../utils/logFilter' -import { convertDecimals, lastExcept } from '../../utils/utils' +} from '@utils/addresses' +import { blockFrequencyTracker } from '@utils/blockFrequencyUpdater' +import { logFilter } from '@utils/logFilter' +import { convertDecimals, lastExcept } from '@utils/utils' +import dayjs from 'dayjs' +import { LessThan } from 'typeorm' +import { formatEther } from 'viem' + +import { Block, Context } from '../../processor' import { IStrategyData } from './strategy' import { processStrategyDailyEarnings } from './strategy-daily-earnings' @@ -499,7 +499,7 @@ const getLatest = async ( results = [] resultMap.set(asset, results) } - let latest = + const latest = lastExcept(resultMap.get(asset), id) ?? (await ctx.store.findOne(StrategyYield, { order: { blockNumber: 'desc' }, @@ -509,6 +509,6 @@ const getLatest = async ( asset, }, })) - let current = resultMap.get(asset)?.find((l) => l.id === id) + const current = resultMap.get(asset)?.find((l) => l.id === id) return { latest, current, results } } diff --git a/src/templates/strategy/strategy-generic.ts b/src/templates/strategy/strategy-generic.ts index 2a7a22d7..30fc83ea 100644 --- a/src/templates/strategy/strategy-generic.ts +++ b/src/templates/strategy/strategy-generic.ts @@ -1,11 +1,11 @@ +import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' +import { StrategyBalance } from '@model' +import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' +import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import * as abstractStrategyAbi from '../../abi/initializable-abstract-strategy' -import { StrategyBalance } from '../../model' import { Block, Context } from '../../processor' -import { ensureExchangeRates } from '../../shared/post-processors/exchange-rates' -import { CurrencyAddress } from '../../shared/post-processors/exchange-rates/currencies' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-vault.ts b/src/templates/strategy/strategy-vault.ts index 1fcc73e1..348bab0e 100644 --- a/src/templates/strategy/strategy-vault.ts +++ b/src/templates/strategy/strategy-vault.ts @@ -1,10 +1,10 @@ +import * as erc20 from '@abi/erc20' +import { StrategyBalance } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' +import { convertDecimals } from '@utils/utils' -import * as erc20 from '../../abi/erc20' -import { StrategyBalance } from '../../model' import { Block, Context } from '../../processor' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' -import { convertDecimals } from '../../utils/utils' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy.ts b/src/templates/strategy/strategy.ts index 25d78ebe..79ff13d5 100644 --- a/src/templates/strategy/strategy.ts +++ b/src/templates/strategy/strategy.ts @@ -1,12 +1,12 @@ import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' +import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { OETH_ADDRESS, OUSD_ADDRESS } from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' +import { LogFilter } from '@utils/logFilter' +import { TraceFilter } from '@utils/traceFilter' import { Context } from '../../processor' -import { CurrencyAddress } from '../../shared/post-processors/exchange-rates/currencies' -import { OETH_ADDRESS, OUSD_ADDRESS } from '../../utils/addresses' -import { blockFrequencyUpdater } from '../../utils/blockFrequencyUpdater' -import { LogFilter } from '../../utils/logFilter' -import { TraceFilter } from '../../utils/traceFilter' import * as strategyBalancer from './strategy-balancer' import * as strategyCurveAMO from './strategy-curve-amo' import * as strategyGeneric from './strategy-generic' diff --git a/src/utils/activityFromTx.ts b/src/utils/activityFromTx.ts index 21141d14..d99a6b60 100644 --- a/src/utils/activityFromTx.ts +++ b/src/utils/activityFromTx.ts @@ -1,3 +1,8 @@ +import * as balancerVaultAbi from '@abi/balancer-vault.abi' +import * as curveLpAbi from '@abi/curve-lp-token.abi' +import * as oethZapperAbi from '@abi/oeth-zapper.abi' +import * as oethAbi from '@abi/oeth.abi' +import * as oethVaultAbi from '@abi/otoken-vault.abi' import { compact } from 'lodash' import { GetTransactionReceiptReturnType, @@ -6,11 +11,6 @@ import { parseAbi, } from 'viem' -import * as balancerVaultAbi from '../abi/balancer-vault.abi' -import * as curveLpAbi from '../abi/curve-lp-token.abi' -import * as oethZapperAbi from '../abi/oeth-zapper.abi' -import * as oethAbi from '../abi/oeth.abi' -import * as oethVaultAbi from '../abi/otoken-vault.abi' import { OETH_ADDRESS, OETH_VAULT_ADDRESS, diff --git a/src/utils/coingecko.ts b/src/utils/coingecko.ts index 0936f2d7..3af28ce9 100644 --- a/src/utils/coingecko.ts +++ b/src/utils/coingecko.ts @@ -1,9 +1,9 @@ +import { OETHDailyStat, OGVDailyStat, OUSDDailyStat } from '@model' +import { EntityClassT } from '@utils/type' import { Between, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' -import { OETHDailyStat, OGVDailyStat, OUSDDailyStat } from '../model' import { Context } from '../processor' -import { EntityClassT } from '../utils/type' type DailyStat = | EntityClassT diff --git a/src/utils/multicall.ts b/src/utils/multicall.ts index afde85bd..b79e91c0 100644 --- a/src/utils/multicall.ts +++ b/src/utils/multicall.ts @@ -1,8 +1,8 @@ +import { Func } from '@abi/abi.support' +import { Multicall } from '@abi/multicall' import { toHex } from 'viem' import { arbitrum, mainnet } from 'viem/chains' -import { Func } from '../abi/abi.support' -import { Multicall } from '../abi/multicall' import { Block, Context } from '../processor' const MULTICALL_CONTRACTS: Record< diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 0a1aed23..d0f625b4 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -1,8 +1,8 @@ +import * as erc20 from '@abi/erc20' import { Entity, EntityClass } from '@subsquid/typeorm-store' import { LessThanOrEqual } from 'typeorm' import { pad } from 'viem' -import * as erc20 from '../abi/erc20' import { Context } from '../processor' export const max = (values: bigint[], start = 0n) => { diff --git a/tsconfig.json b/tsconfig.json index e59d8d66..cc89f594 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,25 @@ "experimentalDecorators": true, "emitDecoratorMetadata": true, "skipLibCheck": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "baseUrl": "./src/", + "paths": { + "@abi/*": [ + "abi/*" + ], + "@model": [ + "model" + ], + "@shared/*": [ + "shared/*" + ], + "@templates/*": [ + "templates/*" + ], + "@utils/*": [ + "utils/*" + ] + } }, "include": [ "src" From ff4a930a50d5baa3b8b450016fa23d9bf6b88242 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Mon, 15 Apr 2024 20:09:46 -0700 Subject: [PATCH 09/20] use tsconfig-paths for import issues --- commands.json | 11 ++++++++ package-lock.json | 36 +++++++++++++++++++++++++ package.json | 1 + src/main.ts | 2 +- src/server-extension/resolvers/index.ts | 4 +++ 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/commands.json b/commands.json index bf740682..b7c85b2a 100644 --- a/commands.json +++ b/commands.json @@ -97,6 +97,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main.js" ] }, @@ -108,6 +109,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main-arbitrum.js" ] }, @@ -119,6 +121,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main-oeth.js" ] }, @@ -130,6 +133,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main-ousd.js" ] }, @@ -141,6 +145,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main-ogv.js" ] }, @@ -152,6 +157,7 @@ "cmd": [ "node", "--require=dotenv/config", + "--require=tsconfig-paths/register", "lib/main-mainnet.js" ] }, @@ -162,6 +168,7 @@ ], "cmd": [ "node", + "--require=tsconfig-paths/register", "lib/main-arbitrum.js" ], "hidden": true @@ -173,6 +180,7 @@ ], "cmd": [ "node", + "--require=tsconfig-paths/register", "lib/main-oeth.js" ], "hidden": true @@ -184,6 +192,7 @@ ], "cmd": [ "node", + "--require=tsconfig-paths/register", "lib/main-ousd.js" ], "hidden": true @@ -195,6 +204,7 @@ ], "cmd": [ "node", + "--require=tsconfig-paths/register", "lib/main-ogv.js" ], "hidden": true @@ -206,6 +216,7 @@ ], "cmd": [ "node", + "--require=tsconfig-paths/register", "lib/main-mainnet.js" ], "hidden": true diff --git a/package-lock.json b/package-lock.json index 22efe451..534df53e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "@types/uuid": "^9.0.2", "npm-run-all": "^4.1.5", "prettier": "^3.0.3", + "tsconfig-paths": "^4.2.0", "typescript": "~5.1.3" } }, @@ -4082,6 +4083,18 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4244,6 +4257,15 @@ "node": ">=10" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/mkdirp": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", @@ -5432,6 +5454,20 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", diff --git a/package.json b/package.json index 688e205e..1cb22aaa 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@types/uuid": "^9.0.2", "npm-run-all": "^4.1.5", "prettier": "^3.0.3", + "tsconfig-paths": "^4.2.0", "typescript": "~5.1.3" } } diff --git a/src/main.ts b/src/main.ts index 0fe54d35..edb97a06 100644 --- a/src/main.ts +++ b/src/main.ts @@ -7,6 +7,6 @@ import { run } from './processor' run(mainnet) run(arbitrum) -// run(oeth) +run(oeth) // run(ogv) // run(ousd) diff --git a/src/server-extension/resolvers/index.ts b/src/server-extension/resolvers/index.ts index 725de5e1..f7ab0a10 100644 --- a/src/server-extension/resolvers/index.ts +++ b/src/server-extension/resolvers/index.ts @@ -1 +1,5 @@ +import 'tsconfig-paths/register' + +process.env.TS_NODE_BASEURL = './lib' + export { OGNStatsResolver } from '../ogn-stats' From e0f7643a117f6d3f888253cd58682ddaa47aa332 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Tue, 16 Apr 2024 13:16:43 -0700 Subject: [PATCH 10/20] fix rebase fk not found issue --- src/templates/otoken/otoken.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts index c0b9163c..86eb4807 100644 --- a/src/templates/otoken/otoken.ts +++ b/src/templates/otoken/otoken.ts @@ -27,7 +27,7 @@ import { CurrencySymbol, } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { type Transaction, activityFromTx } from '@utils/activityFromTx' +import { activityFromTx, type Transaction } from '@utils/activityFromTx' import { ADDRESS_ZERO } from '@utils/addresses' import { DECIMALS_18 } from '@utils/constants' import { multicall } from '@utils/multicall' @@ -36,7 +36,7 @@ import { getLatestEntity } from '@utils/utils' import { groupBy } from 'lodash' import { GetTransactionReceiptReturnType } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' import { createAddress, createRebaseAPY } from './utils' type OToken = EntityClassT | EntityClassT @@ -202,8 +202,8 @@ export const createOTokenProcessor = (params: { if (owners) { await ctx.store.upsert([...owners.values()]) } + await ctx.store.upsert(result.apies) await Promise.all([ - ctx.store.upsert(result.apies), ctx.store.insert(result.otokens), ctx.store.insert(result.assets), ctx.store.insert(result.history), From 733b08a72b849a5c2c1f1d83d358b0a6effbe237 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Tue, 16 Apr 2024 14:37:02 -0700 Subject: [PATCH 11/20] more work on imports, prettier sort order --- .prettierrc | 14 +- dev.env | 1 + package-lock.json | 272 ++++++++++-------- squid-ousd.yaml | 3 + squid.yaml | 6 + src/main-arbitrum.ts | 4 +- src/main-mainnet.ts | 4 +- src/main-oeth.ts | 4 +- src/main-ogv.ts | 4 +- src/main-ousd.ts | 4 +- src/main.ts | 10 +- src/mainnet/processors/balancer/balancer.ts | 3 +- src/mainnet/processors/curve/curve.ts | 2 +- src/mainnet/processors/liquidity-sources.ts | 2 +- src/mainnet/processors/maverick.ts | 3 +- src/mainnet/processors/native.ts | 8 +- src/mainnet/validators/validate-shared.ts | 2 +- .../daily-stats/daily-stats.ts | 2 +- src/oeth/processors/balancer-meta-pool.ts | 2 +- src/oeth/processors/ccip.ts | 2 +- src/oeth/processors/curve-lp.ts | 2 +- src/oeth/processors/dripper.ts | 2 +- src/oeth/processors/exchange-rates.ts | 2 +- src/oeth/processors/frax-staking.ts | 2 +- src/oeth/processors/morpho-aave.ts | 2 +- src/oeth/processors/strategies/strategies.ts | 2 +- src/oeth/processors/vault.ts | 2 +- .../validators/validate-oeth/validate-oeth.ts | 2 +- src/ogv/post-processors/daily-stats.ts | 2 +- src/ogv/post-processors/governance.ts | 2 +- src/ogv/processors/ogv-supply.ts | 2 +- src/ogv/processors/ogv.ts | 2 +- .../daily-stats/daily-stats.ts | 2 +- src/ousd/processors/curve/curve.ts | 2 +- src/ousd/processors/strategies/strategies.ts | 2 +- src/ousd/processors/vault.ts | 2 +- .../validators/validate-ousd/validate-ousd.ts | 2 +- src/processor.ts | 16 +- src/server-extension/resolvers/index.ts | 2 - .../exchange-rates/exchange-rates.ts | 2 +- .../exchange-rates/price-routing.ts | 2 +- src/shared/post-processors/liquidity.ts | 2 +- src/templates/balancer/balancer.ts | 3 +- src/templates/curve/curve.ts | 2 +- src/templates/erc20/erc20.ts | 2 +- src/templates/maverick/maverick.ts | 10 +- src/templates/otoken/utils.ts | 2 +- .../processor-status/processor-status.ts | 2 +- .../strategy-rewards/strategy-rewards.ts | 2 +- src/templates/strategy/strategy-balancer.ts | 2 +- src/templates/strategy/strategy-curve-amo.ts | 2 +- .../strategy/strategy-daily-earnings.ts | 2 +- src/templates/strategy/strategy-earnings.ts | 2 +- src/templates/strategy/strategy-generic.ts | 2 +- src/templates/strategy/strategy-vault.ts | 2 +- src/templates/strategy/strategy.ts | 2 +- src/types.d.ts | 1 + src/utils/blockFrequencyUpdater.ts | 2 +- src/utils/calculateBlockRate.ts | 2 +- src/utils/coingecko.ts | 2 +- src/utils/logFilter.ts | 2 +- src/utils/multicall.ts | 2 +- src/utils/nativeBalance.ts | 2 +- src/utils/state.ts | 2 +- src/utils/traceFilter.ts | 2 +- src/utils/utils.ts | 2 +- tsconfig.json | 3 + 67 files changed, 261 insertions(+), 208 deletions(-) create mode 100644 src/types.d.ts diff --git a/.prettierrc b/.prettierrc index 1a68d900..a54d96c6 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,9 +3,17 @@ "trailingComma": "all", "tabWidth": 2, "semi": false, - "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], + "importOrder": [ + "", + "^@", + "^[./]" + ], "importOrderSeparation": true, "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "plugins": ["@trivago/prettier-plugin-sort-imports"] + "importOrderParserPlugins": [ + "typescript" + ], + "plugins": [ + "@trivago/prettier-plugin-sort-imports" + ] } diff --git a/dev.env b/dev.env index 7fa52100..6c1a68d4 100644 --- a/dev.env +++ b/dev.env @@ -1,3 +1,4 @@ +TS_NODE_BASEURL=./lib DB_NAME=squid DB_PORT=23798 GQL_PORT=4350 diff --git a/package-lock.json b/package-lock.json index 534df53e..840c5b7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -234,14 +234,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -252,7 +251,6 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -263,24 +261,36 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" @@ -291,7 +301,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -299,12 +308,25 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -312,47 +334,58 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz", - "integrity": "sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -373,35 +406,47 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -410,27 +455,39 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/traverse/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -447,18 +504,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -916,36 +970,33 @@ "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -954,15 +1005,13 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1544,15 +1593,14 @@ "integrity": "sha512-DVUnuiWAX7/4ZvbzuHENUShEEV4G0M38mQ/+R8DpHxwpCSrtEaSRaUMwdyUSn/WVqR7wo9+jkLCxFjE5feCURQ==" }, "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.0.tgz", - "integrity": "sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@babel/generator": "7.17.7", "@babel/parser": "^7.20.5", - "@babel/traverse": "7.17.3", + "@babel/traverse": "7.23.2", "@babel/types": "7.17.0", "javascript-natural-sort": "0.7.1", "lodash": "^4.17.21" @@ -1567,20 +1615,6 @@ } } }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@types/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", @@ -3373,7 +3407,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -4037,15 +4070,13 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -4063,7 +4094,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -4725,6 +4755,12 @@ "split2": "^4.1.0" } }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/pidtree": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", @@ -5185,7 +5221,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5435,7 +5470,6 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } diff --git a/squid-ousd.yaml b/squid-ousd.yaml index 56e2ca8d..5fc2e7dc 100644 --- a/squid-ousd.yaml +++ b/squid-ousd.yaml @@ -18,7 +18,10 @@ deploy: cmd: [ "sqd", "process:ousd:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' api: + env: + TS_NODE_BASEURL: './lib' cmd: - npx - squid-graphql-server diff --git a/squid.yaml b/squid.yaml index 13da135c..d824e1ef 100644 --- a/squid.yaml +++ b/squid.yaml @@ -22,19 +22,25 @@ deploy: cmd: [ "sqd", "process:arbitrum:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' - name: oeth-processor cmd: [ "sqd", "process:oeth:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' - name: ogv-processor cmd: [ "sqd", "process:ogv:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' - name: other-processor cmd: [ "sqd", "process:mainnet:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' api: + env: + TS_NODE_BASEURL: './lib' cmd: - npx - squid-graphql-server diff --git a/src/main-arbitrum.ts b/src/main-arbitrum.ts index 260cd34a..70642e4f 100644 --- a/src/main-arbitrum.ts +++ b/src/main-arbitrum.ts @@ -1,8 +1,10 @@ +import 'tsconfig-paths/register' import { arbitrum } from 'viem/chains' + +import { run } from '@processor' import { erc20 } from './arbitrum' import { ccip } from './oeth/processors/ccip' -import { run } from './processor' export const processor = { chainId: arbitrum.id, diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index 76d51c70..b01ba91c 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -1,9 +1,11 @@ +import 'tsconfig-paths/register' + +import { run } from '@processor' import * as exchangeRates from '@shared/post-processors/exchange-rates' import { processStatus } from '@templates/processor-status' import { erc20s } from './mainnet/processors/erc20s' import * as validate from './mainnet/validators/validate-shared' -import { run } from './processor' export const processor = { stateSchema: 'mainnet-processor', diff --git a/src/main-oeth.ts b/src/main-oeth.ts index 2f2edf38..5aebb80d 100644 --- a/src/main-oeth.ts +++ b/src/main-oeth.ts @@ -1,3 +1,6 @@ +import 'tsconfig-paths/register' + +import { run } from '@processor' import * as exchangeRatesPostProcessor from '@shared/post-processors/exchange-rates' import { processStatus } from '@templates/processor-status' @@ -13,7 +16,6 @@ import * as morphoAave from './oeth/processors/morpho-aave' import * as strategies from './oeth/processors/strategies' import * as vault from './oeth/processors/vault' import * as validateOeth from './oeth/validators/validate-oeth' -import { run } from './processor' export const processor = { stateSchema: 'oeth-processor', diff --git a/src/main-ogv.ts b/src/main-ogv.ts index 710505a1..18968b79 100644 --- a/src/main-ogv.ts +++ b/src/main-ogv.ts @@ -1,10 +1,12 @@ +import 'tsconfig-paths/register' + +import { run } from '@processor' import { processStatus } from '@templates/processor-status' import * as dailyStats from './ogv/post-processors/daily-stats' import * as governance from './ogv/post-processors/governance' import * as ogv from './ogv/processors/ogv' import * as ogvSupply from './ogv/processors/ogv-supply' -import { run } from './processor' export const processor = { stateSchema: 'ogv-processor', diff --git a/src/main-ousd.ts b/src/main-ousd.ts index 697eabb3..d2a1ca32 100644 --- a/src/main-ousd.ts +++ b/src/main-ousd.ts @@ -1,3 +1,6 @@ +import 'tsconfig-paths/register' + +import { run } from '@processor' import * as exchangeRates from '@shared/post-processors/exchange-rates' import { processStatus } from '@templates/processor-status' @@ -7,7 +10,6 @@ import { erc20s } from './ousd/processors/erc20s' import * as ousd from './ousd/processors/ousd' import * as strategies from './ousd/processors/strategies/strategies' import * as validateOusd from './ousd/validators/validate-ousd' -import { run } from './processor' export const processor = { stateSchema: 'ousd-processor', diff --git a/src/main.ts b/src/main.ts index edb97a06..f14b526b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,16 @@ +import 'tsconfig-paths/register' + +import { run } from '@processor' + import arbitrum from './main-arbitrum' import mainnet from './main-mainnet' import oeth from './main-oeth' import ogv from './main-ogv' -import ousd from './main-ousd' -import { run } from './processor' + +// import ousd from './main-ousd' run(mainnet) run(arbitrum) run(oeth) -// run(ogv) +run(ogv) // run(ousd) diff --git a/src/mainnet/processors/balancer/balancer.ts b/src/mainnet/processors/balancer/balancer.ts index 7e0383b5..f53cba66 100644 --- a/src/mainnet/processors/balancer/balancer.ts +++ b/src/mainnet/processors/balancer/balancer.ts @@ -5,9 +5,8 @@ import { createBalancerProcessor, createBalancerSetup, } from '@templates/balancer' -import { tokens } from '@utils/addresses' -import { Context } from '../../../processor' +import { Context } from '@processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/curve/curve.ts b/src/mainnet/processors/curve/curve.ts index 9c8a93dc..eb1c9ebb 100644 --- a/src/mainnet/processors/curve/curve.ts +++ b/src/mainnet/processors/curve/curve.ts @@ -5,7 +5,7 @@ import { createCurveSetup, } from '@templates/curve' -import { Context } from '../../../processor' +import { Context } from '@processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/liquidity-sources.ts b/src/mainnet/processors/liquidity-sources.ts index 26bd3dc7..3a9ad7a0 100644 --- a/src/mainnet/processors/liquidity-sources.ts +++ b/src/mainnet/processors/liquidity-sources.ts @@ -1,6 +1,6 @@ import { LiquiditySource, LiquiditySourceType } from '@model' -import { Context } from '../../processor' +import { Context } from '@processor' const sources = new Map() diff --git a/src/mainnet/processors/maverick.ts b/src/mainnet/processors/maverick.ts index 4fd44efa..b028b4b5 100644 --- a/src/mainnet/processors/maverick.ts +++ b/src/mainnet/processors/maverick.ts @@ -4,9 +4,8 @@ import { createMaverickProcessor, createMaverickSetup, } from '@templates/maverick' -import { tokens } from '@utils/addresses' -import { Context } from '../../processor' +import { Context } from '@processor' const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/native.ts b/src/mainnet/processors/native.ts index 41fe258c..0eeb4b97 100644 --- a/src/mainnet/processors/native.ts +++ b/src/mainnet/processors/native.ts @@ -1,16 +1,10 @@ import { NativeBalance } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { - OETH_VAULT_ADDRESS, - OUSD_VAULT_ADDRESS, - oethStrategyArray, - ousdStrategyArray, -} from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { getNativeBalances } from '@utils/nativeBalance' import { minBy } from 'lodash' -import { Context } from '../../processor' +import { Context } from '@processor' /** * We end up with a lot of initial 0 balance entities. diff --git a/src/mainnet/validators/validate-shared.ts b/src/mainnet/validators/validate-shared.ts index f825ef8e..225ed6b3 100644 --- a/src/mainnet/validators/validate-shared.ts +++ b/src/mainnet/validators/validate-shared.ts @@ -5,7 +5,7 @@ import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' export const name = 'validate-shared' diff --git a/src/oeth/post-processors/daily-stats/daily-stats.ts b/src/oeth/post-processors/daily-stats/daily-stats.ts index c197f944..97a6b59e 100644 --- a/src/oeth/post-processors/daily-stats/daily-stats.ts +++ b/src/oeth/post-processors/daily-stats/daily-stats.ts @@ -26,7 +26,7 @@ import { MoreThanOrEqual, } from 'typeorm' -import { Context } from '../../../processor' +import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/oeth/processors/balancer-meta-pool.ts b/src/oeth/processors/balancer-meta-pool.ts index 204cedfb..0df9c87b 100644 --- a/src/oeth/processors/balancer-meta-pool.ts +++ b/src/oeth/processors/balancer-meta-pool.ts @@ -2,13 +2,13 @@ import * as balancerMetaPoolStrategy from '@abi/balancer-meta-pool-strategy' import * as metaStablePool from '@abi/balancer-meta-stable-pool' import * as baseRewardPool4626 from '@abi/base-reward-pool-4626' import { OETHBalancerMetaPoolStrategy } from '@model' +import { Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { getBalancerStrategyHoldings } from '@templates/strategy/strategy-balancer' import { RETH_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { getLatestEntity } from '@utils/utils' -import { Context } from '../../processor' import { oethStrategies } from './strategies' const strategyDeployBlock = 18156219 diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index e4b03b7e..87e096f8 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -6,7 +6,7 @@ import { BridgeTransfer, BridgeTransferState } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { logFilter } from '@utils/logFilter' -import { Context } from '../../processor' +import { Context } from '@processor' // Code Reference: https://github.com/smartcontractkit/smart-contract-examples/tree/main/ccip-offchain // https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip-offchain/typescript/src/get-status.ts diff --git a/src/oeth/processors/curve-lp.ts b/src/oeth/processors/curve-lp.ts index 6795578f..af2ea5f2 100644 --- a/src/oeth/processors/curve-lp.ts +++ b/src/oeth/processors/curve-lp.ts @@ -10,7 +10,7 @@ import { import { getLatestEntity } from '@utils/utils' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { curveLPs: OETHCurveLP[] diff --git a/src/oeth/processors/dripper.ts b/src/oeth/processors/dripper.ts index cc83a671..399fba13 100644 --- a/src/oeth/processors/dripper.ts +++ b/src/oeth/processors/dripper.ts @@ -7,7 +7,7 @@ import { OETH_DRIPPER_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { getLatestEntity, trackAddressBalances } from '@utils/utils' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { drippers: OETHDripper[] diff --git a/src/oeth/processors/exchange-rates.ts b/src/oeth/processors/exchange-rates.ts index 3fe9c40a..80104b50 100644 --- a/src/oeth/processors/exchange-rates.ts +++ b/src/oeth/processors/exchange-rates.ts @@ -2,7 +2,7 @@ import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '../../processor' +import { Context } from '@processor' export const from = 16933090 // OETH Deploy diff --git a/src/oeth/processors/frax-staking.ts b/src/oeth/processors/frax-staking.ts index 8daec3bb..e4225bd9 100644 --- a/src/oeth/processors/frax-staking.ts +++ b/src/oeth/processors/frax-staking.ts @@ -5,7 +5,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_FRAX_STAKING_ADDRESS, SFRXETH_ADDRESS } from '@utils/addresses' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { fraxStakings: OETHFraxStaking[] diff --git a/src/oeth/processors/morpho-aave.ts b/src/oeth/processors/morpho-aave.ts index e337d3a8..9762390d 100644 --- a/src/oeth/processors/morpho-aave.ts +++ b/src/oeth/processors/morpho-aave.ts @@ -6,7 +6,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_MORPHO_AAVE_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { morphoAaves: OETHMorphoAave[] diff --git a/src/oeth/processors/strategies/strategies.ts b/src/oeth/processors/strategies/strategies.ts index 0c074176..4db9c3f2 100644 --- a/src/oeth/processors/strategies/strategies.ts +++ b/src/oeth/processors/strategies/strategies.ts @@ -21,7 +21,7 @@ import { addresses, } from '@utils/addresses' -import { Context } from '../../../processor' +import { Context } from '@processor' export const oethStrategies: readonly IStrategyData[] = [ { diff --git a/src/oeth/processors/vault.ts b/src/oeth/processors/vault.ts index dc41a1a7..5c17eb3c 100644 --- a/src/oeth/processors/vault.ts +++ b/src/oeth/processors/vault.ts @@ -14,7 +14,7 @@ import { import { getLatestEntity, trackAddressBalances } from '@utils/utils' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { vaults: OETHVault[] diff --git a/src/oeth/validators/validate-oeth/validate-oeth.ts b/src/oeth/validators/validate-oeth/validate-oeth.ts index 5827d0fa..1cafda76 100644 --- a/src/oeth/validators/validate-oeth/validate-oeth.ts +++ b/src/oeth/validators/validate-oeth/validate-oeth.ts @@ -12,7 +12,7 @@ import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' -import { Block, Context } from '../../../processor' +import { Block, Context } from '@processor' export const name = 'validate-oeth' diff --git a/src/ogv/post-processors/daily-stats.ts b/src/ogv/post-processors/daily-stats.ts index 35292edd..ca44ec19 100644 --- a/src/ogv/post-processors/daily-stats.ts +++ b/src/ogv/post-processors/daily-stats.ts @@ -9,7 +9,7 @@ import { MoreThanOrEqual, } from 'typeorm' -import { Context } from '../../processor' +import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/ogv/post-processors/governance.ts b/src/ogv/post-processors/governance.ts index b883f123..6af2bf07 100644 --- a/src/ogv/post-processors/governance.ts +++ b/src/ogv/post-processors/governance.ts @@ -13,7 +13,7 @@ import { GOVERNANCE_ADDRESS } from '@utils/addresses' import { env } from '@utils/env' import { formatEther } from 'viem' -import { Block, Context, Log } from '../../processor' +import { Block, Context, Log } from '@processor' export const from = 15491391 // https://etherscan.io/tx/0x0e04e429248c384e6b36229edf8eb5a77bec7023c58808c21b702edfcbc0e0d6 diff --git a/src/ogv/processors/ogv-supply.ts b/src/ogv/processors/ogv-supply.ts index 7e357761..9c05bcb4 100644 --- a/src/ogv/processors/ogv-supply.ts +++ b/src/ogv/processors/ogv-supply.ts @@ -4,7 +4,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '../../processor' +import { Context } from '@processor' export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 diff --git a/src/ogv/processors/ogv.ts b/src/ogv/processors/ogv.ts index 8fb73b05..10c2f0de 100644 --- a/src/ogv/processors/ogv.ts +++ b/src/ogv/processors/ogv.ts @@ -9,7 +9,7 @@ import { import { EvmBatchProcessor } from '@subsquid/evm-processor' import { ADDRESS_ZERO, OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' -import { Block, Context, Log } from '../../processor' +import { Block, Context, Log } from '@processor' export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 export const veogvFrom = 15089597 // https://etherscan.io/tx/0x70c582e56ea1c49b7e9df70a0b40ddbfac9362b8b172cb527c329c2302d7d48a diff --git a/src/ousd/post-processors/daily-stats/daily-stats.ts b/src/ousd/post-processors/daily-stats/daily-stats.ts index c1f80c47..ccc9b9c0 100644 --- a/src/ousd/post-processors/daily-stats/daily-stats.ts +++ b/src/ousd/post-processors/daily-stats/daily-stats.ts @@ -21,7 +21,7 @@ import { MoreThanOrEqual, } from 'typeorm' -import { Context } from '../../../processor' +import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/ousd/processors/curve/curve.ts b/src/ousd/processors/curve/curve.ts index 9aa67bc5..2a9660e1 100644 --- a/src/ousd/processors/curve/curve.ts +++ b/src/ousd/processors/curve/curve.ts @@ -6,7 +6,7 @@ import { } from '@templates/curve' import { tokens } from '@utils/addresses' -import { Context } from '../../../processor' +import { Context } from '@processor' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/ousd/processors/strategies/strategies.ts b/src/ousd/processors/strategies/strategies.ts index 97213b7b..2c416783 100644 --- a/src/ousd/processors/strategies/strategies.ts +++ b/src/ousd/processors/strategies/strategies.ts @@ -10,7 +10,7 @@ import { createStrategyRewardSetup, } from '@templates/strategy-rewards' -import { Context } from '../../../processor' +import { Context } from '@processor' import { aaveStrategy } from './aave-strategy' import { convexMetaStrategy } from './convex-meta-strategy' import { fluxStrategy } from './flux-strategy' diff --git a/src/ousd/processors/vault.ts b/src/ousd/processors/vault.ts index 607aad5b..3ba0df38 100644 --- a/src/ousd/processors/vault.ts +++ b/src/ousd/processors/vault.ts @@ -11,7 +11,7 @@ import { import { getLatestEntity, trackAddressBalances } from '@utils/utils' import { pad } from 'viem' -import { Context } from '../../processor' +import { Context } from '@processor' interface ProcessResult { vaults: OUSDVault[] diff --git a/src/ousd/validators/validate-ousd/validate-ousd.ts b/src/ousd/validators/validate-ousd/validate-ousd.ts index a5ea0656..77b69d58 100644 --- a/src/ousd/validators/validate-ousd/validate-ousd.ts +++ b/src/ousd/validators/validate-ousd/validate-ousd.ts @@ -5,7 +5,7 @@ import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' -import { Block, Context } from '../../../processor' +import { Block, Context } from '@processor' export const name = 'validate-ousd' diff --git a/src/processor.ts b/src/processor.ts index ca2a62ab..8a11c1ed 100644 --- a/src/processor.ts +++ b/src/processor.ts @@ -1,3 +1,10 @@ +import assert from 'assert' +import dayjs from 'dayjs' +import duration from 'dayjs/plugin/duration' +import utc from 'dayjs/plugin/utc' +import { Chain } from 'viem' +import { arbitrum, mainnet } from 'viem/chains' + import { lookupArchive } from '@subsquid/archive-registry' import { KnownArchives } from '@subsquid/archive-registry/lib/chains' import { @@ -6,14 +13,7 @@ import { EvmBatchProcessorFields, } from '@subsquid/evm-processor' import { Store, TypeormDatabase } from '@subsquid/typeorm-store' -import assert from 'assert' -import dayjs from 'dayjs' -import duration from 'dayjs/plugin/duration' -import utc from 'dayjs/plugin/utc' -import { Chain } from 'viem' -import { arbitrum, mainnet } from 'viem/chains' - -import { calculateBlockRate } from './utils/calculateBlockRate' +import { calculateBlockRate } from '@utils/calculateBlockRate' dayjs.extend(duration) dayjs.extend(utc) diff --git a/src/server-extension/resolvers/index.ts b/src/server-extension/resolvers/index.ts index f7ab0a10..88561fe4 100644 --- a/src/server-extension/resolvers/index.ts +++ b/src/server-extension/resolvers/index.ts @@ -1,5 +1,3 @@ import 'tsconfig-paths/register' -process.env.TS_NODE_BASEURL = './lib' - export { OGNStatsResolver } from '../ogn-stats' diff --git a/src/shared/post-processors/exchange-rates/exchange-rates.ts b/src/shared/post-processors/exchange-rates/exchange-rates.ts index 8f10744e..401736c2 100644 --- a/src/shared/post-processors/exchange-rates/exchange-rates.ts +++ b/src/shared/post-processors/exchange-rates/exchange-rates.ts @@ -3,7 +3,7 @@ import { useProcessorState } from '@utils/state' import { compact } from 'lodash' import { Between } from 'typeorm' -import { Block, Context } from '../../../processor' +import { Block, Context } from '@processor' import { Currency, currenciesByAddress } from './currencies' import { getPrice } from './price-routing' diff --git a/src/shared/post-processors/exchange-rates/price-routing.ts b/src/shared/post-processors/exchange-rates/price-routing.ts index 77e7d556..ca63a341 100644 --- a/src/shared/post-processors/exchange-rates/price-routing.ts +++ b/src/shared/post-processors/exchange-rates/price-routing.ts @@ -8,7 +8,7 @@ import * as woethAbi from '@abi/woeth' import { STETH_ADDRESS } from '@utils/addresses' import { memoize } from 'lodash' -import { Context } from '../../../processor' +import { Context } from '@processor' import { Currency, CurrencySymbol, currencies } from './currencies' export const getPrice = async ( diff --git a/src/shared/post-processors/liquidity.ts b/src/shared/post-processors/liquidity.ts index 8aafbc5b..682b6479 100644 --- a/src/shared/post-processors/liquidity.ts +++ b/src/shared/post-processors/liquidity.ts @@ -2,7 +2,7 @@ import { LiquidityDailyBalance } from '@model' import { useProcessorState } from '@utils/state' import dayjs from 'dayjs' -import { Context } from '../../processor' +import { Context } from '@processor' const useLiquidityDailyBalance = (ctx: Context) => useProcessorState( diff --git a/src/templates/balancer/balancer.ts b/src/templates/balancer/balancer.ts index 9bf3d561..be58447f 100644 --- a/src/templates/balancer/balancer.ts +++ b/src/templates/balancer/balancer.ts @@ -7,9 +7,9 @@ import { BalancerPool, BalancerPoolBalance, BalancerPoolRate, - LiquiditySource, LiquiditySourceType, } from '@model' +import { Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { Currency } from '@shared/post-processors/exchange-rates/currencies' import { updateLiquidityBalances } from '@shared/post-processors/liquidity' @@ -18,7 +18,6 @@ import { ADDRESS_ZERO, BALANCER_VAULT } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' -import { Context } from '../../processor' const eth1 = BigInt('1000000000000000000') diff --git a/src/templates/curve/curve.ts b/src/templates/curve/curve.ts index a1fc1747..87b63445 100644 --- a/src/templates/curve/curve.ts +++ b/src/templates/curve/curve.ts @@ -10,8 +10,8 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { range } from '@utils/range' +import { Context } from '@processor' import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' -import { Context } from '../../processor' interface ProcessResult { curvePoolBalances: CurvePoolBalance[] diff --git a/src/templates/erc20/erc20.ts b/src/templates/erc20/erc20.ts index ae87a0c6..60a57304 100644 --- a/src/templates/erc20/erc20.ts +++ b/src/templates/erc20/erc20.ts @@ -12,7 +12,7 @@ import { blockFrequencyTracker } from '@utils/blockFrequencyUpdater' import { LogFilter, logFilter } from '@utils/logFilter' import { multicall } from '@utils/multicall' -import { Context } from '../../processor' +import { Context } from '@processor' const duplicateTracker = new Set() diff --git a/src/templates/maverick/maverick.ts b/src/templates/maverick/maverick.ts index 55a0291d..4e9bae16 100644 --- a/src/templates/maverick/maverick.ts +++ b/src/templates/maverick/maverick.ts @@ -1,17 +1,11 @@ import * as maverickPool from '@abi/maverick-pool' -import { - LiquiditySource, - LiquiditySourceType, - MaverickPool, - MaverickPoolBalance, -} from '@model' +import { LiquiditySourceType, MaverickPool, MaverickPoolBalance } from '@model' import { updateLiquidityBalances } from '@shared/post-processors/liquidity' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { add } from 'lodash' +import { Context } from '@processor' import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' -import { Context } from '../../processor' // Maverick Pool Reference: https://docs.mav.xyz/guides/technical-reference/pool diff --git a/src/templates/otoken/utils.ts b/src/templates/otoken/utils.ts index 7f7f71d9..e46b258d 100644 --- a/src/templates/otoken/utils.ts +++ b/src/templates/otoken/utils.ts @@ -14,7 +14,7 @@ import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' import { LessThan, MoreThanOrEqual } from 'typeorm' -import { Context } from '../../processor' +import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/templates/processor-status/processor-status.ts b/src/templates/processor-status/processor-status.ts index fcf80d51..b4615aa0 100644 --- a/src/templates/processor-status/processor-status.ts +++ b/src/templates/processor-status/processor-status.ts @@ -1,6 +1,6 @@ import { ProcessingStatus } from '@model' -import { Context } from '../../processor' +import { Context } from '@processor' const processorIds = new Set() diff --git a/src/templates/strategy-rewards/strategy-rewards.ts b/src/templates/strategy-rewards/strategy-rewards.ts index d8635336..d3025afc 100644 --- a/src/templates/strategy-rewards/strategy-rewards.ts +++ b/src/templates/strategy-rewards/strategy-rewards.ts @@ -3,7 +3,7 @@ import { OETHRewardTokenCollected } from '@model' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { EntityClassT } from '@utils/type' -import { Context } from '../../processor' +import { Context } from '@processor' export const createStrategyRewardSetup = ({ address, diff --git a/src/templates/strategy/strategy-balancer.ts b/src/templates/strategy/strategy-balancer.ts index 71224f04..11e47e60 100644 --- a/src/templates/strategy/strategy-balancer.ts +++ b/src/templates/strategy/strategy-balancer.ts @@ -12,7 +12,7 @@ import { } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '../../processor' +import { Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-curve-amo.ts b/src/templates/strategy/strategy-curve-amo.ts index cfb317bd..b95be76e 100644 --- a/src/templates/strategy/strategy-curve-amo.ts +++ b/src/templates/strategy/strategy-curve-amo.ts @@ -6,7 +6,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { ETH_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-daily-earnings.ts b/src/templates/strategy/strategy-daily-earnings.ts index 0f5062e8..b6a0e5ad 100644 --- a/src/templates/strategy/strategy-daily-earnings.ts +++ b/src/templates/strategy/strategy-daily-earnings.ts @@ -5,7 +5,7 @@ import dayjs from 'dayjs' import { Between, LessThan, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' import { IStrategyData } from './strategy' const eth1 = 1000000000000000000n diff --git a/src/templates/strategy/strategy-earnings.ts b/src/templates/strategy/strategy-earnings.ts index c014e8b2..db4da1b5 100644 --- a/src/templates/strategy/strategy-earnings.ts +++ b/src/templates/strategy/strategy-earnings.ts @@ -25,7 +25,7 @@ import dayjs from 'dayjs' import { LessThan } from 'typeorm' import { formatEther } from 'viem' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' import { IStrategyData } from './strategy' import { processStrategyDailyEarnings } from './strategy-daily-earnings' diff --git a/src/templates/strategy/strategy-generic.ts b/src/templates/strategy/strategy-generic.ts index 30fc83ea..5251eacf 100644 --- a/src/templates/strategy/strategy-generic.ts +++ b/src/templates/strategy/strategy-generic.ts @@ -5,7 +5,7 @@ import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currenci import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-vault.ts b/src/templates/strategy/strategy-vault.ts index 348bab0e..20fb0892 100644 --- a/src/templates/strategy/strategy-vault.ts +++ b/src/templates/strategy/strategy-vault.ts @@ -4,7 +4,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { convertDecimals } from '@utils/utils' -import { Block, Context } from '../../processor' +import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy.ts b/src/templates/strategy/strategy.ts index 79ff13d5..08fff8d4 100644 --- a/src/templates/strategy/strategy.ts +++ b/src/templates/strategy/strategy.ts @@ -6,7 +6,7 @@ import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { LogFilter } from '@utils/logFilter' import { TraceFilter } from '@utils/traceFilter' -import { Context } from '../../processor' +import { Context } from '@processor' import * as strategyBalancer from './strategy-balancer' import * as strategyCurveAMO from './strategy-curve-amo' import * as strategyGeneric from './strategy-generic' diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 00000000..b20f78e2 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1 @@ +declare module 'tsconfig-paths/register' diff --git a/src/utils/blockFrequencyUpdater.ts b/src/utils/blockFrequencyUpdater.ts index 2425a678..b73134ea 100644 --- a/src/utils/blockFrequencyUpdater.ts +++ b/src/utils/blockFrequencyUpdater.ts @@ -2,7 +2,7 @@ import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' import utc from 'dayjs/plugin/utc' -import { Block, Context } from '../processor' +import { Block, Context } from '@processor' dayjs.extend(duration) dayjs.extend(utc) diff --git a/src/utils/calculateBlockRate.ts b/src/utils/calculateBlockRate.ts index 3729edd1..c3d2e8fb 100644 --- a/src/utils/calculateBlockRate.ts +++ b/src/utils/calculateBlockRate.ts @@ -1,6 +1,6 @@ import { hexToNumber, numberToHex } from 'viem' -import { Context } from '../processor' +import { Context } from '@processor' let lastBpsFrom = 0 let lastResult = 0 diff --git a/src/utils/coingecko.ts b/src/utils/coingecko.ts index 3af28ce9..733f68d7 100644 --- a/src/utils/coingecko.ts +++ b/src/utils/coingecko.ts @@ -3,7 +3,7 @@ import { EntityClassT } from '@utils/type' import { Between, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' -import { Context } from '../processor' +import { Context } from '@processor' type DailyStat = | EntityClassT diff --git a/src/utils/logFilter.ts b/src/utils/logFilter.ts index bb57657f..8bc668b3 100644 --- a/src/utils/logFilter.ts +++ b/src/utils/logFilter.ts @@ -1,7 +1,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { pad as viemPad } from 'viem' -import { Log } from '../processor' +import { Log } from '@processor' const pad = (hex: string) => viemPad(hex as `0x${string}`) const lower = (hex: string) => hex.toLowerCase() diff --git a/src/utils/multicall.ts b/src/utils/multicall.ts index b79e91c0..06c41f23 100644 --- a/src/utils/multicall.ts +++ b/src/utils/multicall.ts @@ -3,7 +3,7 @@ import { Multicall } from '@abi/multicall' import { toHex } from 'viem' import { arbitrum, mainnet } from 'viem/chains' -import { Block, Context } from '../processor' +import { Block, Context } from '@processor' const MULTICALL_CONTRACTS: Record< number, diff --git a/src/utils/nativeBalance.ts b/src/utils/nativeBalance.ts index df1c63d8..06f8ec72 100644 --- a/src/utils/nativeBalance.ts +++ b/src/utils/nativeBalance.ts @@ -1,6 +1,6 @@ import { hexToBigInt } from 'viem' -import { Context } from '../processor' +import { Context } from '@processor' export const getNativeBalance = async ( ctx: Context, diff --git a/src/utils/state.ts b/src/utils/state.ts index 1c8fd35a..ac257565 100644 --- a/src/utils/state.ts +++ b/src/utils/state.ts @@ -1,4 +1,4 @@ -import { Context } from '../processor' +import { Context } from '@processor' export const useProcessorState = ( ctx: Context, diff --git a/src/utils/traceFilter.ts b/src/utils/traceFilter.ts index 7ecb17a5..332072b9 100644 --- a/src/utils/traceFilter.ts +++ b/src/utils/traceFilter.ts @@ -1,7 +1,7 @@ import { EvmBatchProcessor } from '@subsquid/evm-processor' import { pad as viemPad } from 'viem' -import { Trace } from '../processor' +import { Trace } from '@processor' const pad = (hex: string) => viemPad(hex as `0x${string}`) const lower = (hex: string) => hex.toLowerCase() diff --git a/src/utils/utils.ts b/src/utils/utils.ts index d0f625b4..73a9dfe3 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -3,7 +3,7 @@ import { Entity, EntityClass } from '@subsquid/typeorm-store' import { LessThanOrEqual } from 'typeorm' import { pad } from 'viem' -import { Context } from '../processor' +import { Context } from '@processor' export const max = (values: bigint[], start = 0n) => { return values.reduce((max, v) => (max > v ? max : v), start) diff --git a/tsconfig.json b/tsconfig.json index cc89f594..2cb91563 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,6 +20,9 @@ "@model": [ "model" ], + "@processor": [ + "processor" + ], "@shared/*": [ "shared/*" ], From 5446378b4b917401a0efb0d68cc36b7a7e92ae5d Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Tue, 16 Apr 2024 14:46:58 -0700 Subject: [PATCH 12/20] prettier --- .prettierignore | 3 +++ .prettierrc | 3 ++- package.json | 4 ++-- src/main-arbitrum.ts | 2 +- src/mainnet/processors/balancer/balancer.ts | 3 +-- src/mainnet/processors/curve/curve.ts | 3 +-- src/mainnet/processors/liquidity-sources.ts | 1 - src/mainnet/processors/maverick.ts | 3 +-- src/mainnet/processors/native.ts | 6 +++--- src/mainnet/validators/validate-shared.ts | 8 ++++---- .../daily-stats/daily-stats.ts | 20 +++++++++---------- src/oeth/processors/ccip.ts | 3 +-- src/oeth/processors/curve-lp.ts | 6 +++--- src/oeth/processors/dripper.ts | 6 +++--- src/oeth/processors/exchange-rates.ts | 3 +-- src/oeth/processors/frax-staking.ts | 6 +++--- src/oeth/processors/morpho-aave.ts | 6 +++--- src/oeth/processors/strategies/strategies.ts | 3 +-- src/oeth/processors/vault.ts | 6 +++--- .../validators/validate-oeth/validate-oeth.ts | 8 ++++---- src/ogv/post-processors/daily-stats.ts | 6 +++--- src/ogv/post-processors/governance.ts | 6 +++--- src/ogv/processors/ogv-supply.ts | 3 +-- src/ogv/processors/ogv.ts | 3 +-- .../daily-stats/daily-stats.ts | 20 +++++++++---------- src/ousd/processors/curve/curve.ts | 3 +-- .../processors/strategies/aave-strategy.ts | 3 ++- src/ousd/processors/strategies/strategies.ts | 2 +- src/ousd/processors/vault.ts | 6 +++--- .../validators/validate-ousd/validate-ousd.ts | 8 ++++---- src/server-extension/ogn-stats.ts | 5 +++-- .../exchange-rates/currencies.ts | 3 ++- .../exchange-rates/exchange-rates.ts | 5 +++-- .../exchange-rates/price-routing.ts | 5 +++-- src/shared/post-processors/liquidity.ts | 4 ++-- src/templates/curve/curve.ts | 2 +- src/templates/erc20/erc20.ts | 3 +-- src/templates/maverick/maverick.ts | 2 +- src/templates/otoken/otoken.ts | 9 +++++---- src/templates/otoken/utils.ts | 10 +++++----- .../processor-status/processor-status.ts | 1 - .../strategy-rewards/strategy-rewards.ts | 3 +-- src/templates/strategy/strategy-balancer.ts | 2 +- src/templates/strategy/strategy-curve-amo.ts | 2 +- .../strategy/strategy-daily-earnings.ts | 7 ++++--- src/templates/strategy/strategy-earnings.ts | 9 +++++---- src/templates/strategy/strategy-generic.ts | 2 +- src/templates/strategy/strategy-vault.ts | 2 +- src/templates/strategy/strategy.ts | 2 +- src/utils/activityFromTx.ts | 11 +++------- src/utils/coingecko.ts | 4 ++-- src/utils/logFilter.ts | 2 +- src/utils/multicall.ts | 4 ++-- src/utils/traceFilter.ts | 2 +- src/utils/utils.ts | 4 ++-- 55 files changed, 131 insertions(+), 137 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..8499a6ea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +src/abi +src/model + diff --git a/.prettierrc b/.prettierrc index a54d96c6..6253f707 100644 --- a/.prettierrc +++ b/.prettierrc @@ -11,7 +11,8 @@ "importOrderSeparation": true, "importOrderSortSpecifiers": true, "importOrderParserPlugins": [ - "typescript" + "typescript", + "decorators-legacy" ], "plugins": [ "@trivago/prettier-plugin-sort-imports" diff --git a/package.json b/package.json index 1cb22aaa..ea4dee0e 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "migration:generate": "sqd down && sqd up && sqd migration:generate && git add db/migrations/*", "generate": "npm-run-all codegen migration:generate", "build": "rm -rf lib && tsc", - "prettier-check": "prettier --check **/*.ts **/*.json", - "prettier-fix": "prettier --write **/*.ts **/*.json", + "prettier-check": "prettier --check src", + "prettier-fix": "prettier --write src", "setup": "sqd down && sqd up && sleep 2 && sqd migration:apply", "serve": "sqd serve", "process:arbitrum": "sqd process:arbitrum", diff --git a/src/main-arbitrum.ts b/src/main-arbitrum.ts index 70642e4f..b9c72ad3 100644 --- a/src/main-arbitrum.ts +++ b/src/main-arbitrum.ts @@ -1,6 +1,6 @@ import 'tsconfig-paths/register' import { arbitrum } from 'viem/chains' - + import { run } from '@processor' import { erc20 } from './arbitrum' diff --git a/src/mainnet/processors/balancer/balancer.ts b/src/mainnet/processors/balancer/balancer.ts index f53cba66..1039d6a0 100644 --- a/src/mainnet/processors/balancer/balancer.ts +++ b/src/mainnet/processors/balancer/balancer.ts @@ -1,3 +1,4 @@ +import { Context } from '@processor' import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { @@ -6,8 +7,6 @@ import { createBalancerSetup, } from '@templates/balancer' -import { Context } from '@processor' - const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/curve/curve.ts b/src/mainnet/processors/curve/curve.ts index eb1c9ebb..c7aa2ab6 100644 --- a/src/mainnet/processors/curve/curve.ts +++ b/src/mainnet/processors/curve/curve.ts @@ -1,3 +1,4 @@ +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { createCurveInitializer, @@ -5,8 +6,6 @@ import { createCurveSetup, } from '@templates/curve' -import { Context } from '@processor' - const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/mainnet/processors/liquidity-sources.ts b/src/mainnet/processors/liquidity-sources.ts index 3a9ad7a0..3737b9a1 100644 --- a/src/mainnet/processors/liquidity-sources.ts +++ b/src/mainnet/processors/liquidity-sources.ts @@ -1,5 +1,4 @@ import { LiquiditySource, LiquiditySourceType } from '@model' - import { Context } from '@processor' const sources = new Map() diff --git a/src/mainnet/processors/maverick.ts b/src/mainnet/processors/maverick.ts index b028b4b5..51f08a7f 100644 --- a/src/mainnet/processors/maverick.ts +++ b/src/mainnet/processors/maverick.ts @@ -1,3 +1,4 @@ +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { createMaverickInitializer, @@ -5,8 +6,6 @@ import { createMaverickSetup, } from '@templates/maverick' -import { Context } from '@processor' - const oethDeployFrom = 16933090 export const from = Math.min(oethDeployFrom) diff --git a/src/mainnet/processors/native.ts b/src/mainnet/processors/native.ts index 0eeb4b97..067a77ff 100644 --- a/src/mainnet/processors/native.ts +++ b/src/mainnet/processors/native.ts @@ -1,10 +1,10 @@ +import { minBy } from 'lodash' + import { NativeBalance } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { getNativeBalances } from '@utils/nativeBalance' -import { minBy } from 'lodash' - -import { Context } from '@processor' /** * We end up with a lot of initial 0 balance entities. diff --git a/src/mainnet/validators/validate-shared.ts b/src/mainnet/validators/validate-shared.ts index 225ed6b3..64ff5c93 100644 --- a/src/mainnet/validators/validate-shared.ts +++ b/src/mainnet/validators/validate-shared.ts @@ -1,11 +1,11 @@ -import { ERC20Balance, ERC20State } from '@model' -import { Entity, EntityClass } from '@subsquid/typeorm-store' -import { env } from '@utils/env' -import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' +import { ERC20Balance, ERC20State } from '@model' import { Block, Context } from '@processor' +import { Entity, EntityClass } from '@subsquid/typeorm-store' +import { env } from '@utils/env' +import { jsonify } from '@utils/jsonify' export const name = 'validate-shared' diff --git a/src/oeth/post-processors/daily-stats/daily-stats.ts b/src/oeth/post-processors/daily-stats/daily-stats.ts index 97a6b59e..729417fe 100644 --- a/src/oeth/post-processors/daily-stats/daily-stats.ts +++ b/src/oeth/post-processors/daily-stats/daily-stats.ts @@ -1,3 +1,12 @@ +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { + EntityManager, + FindOptionsOrderValue, + LessThanOrEqual, + MoreThanOrEqual, +} from 'typeorm' + import { ExchangeRate, OETH, @@ -15,18 +24,9 @@ import { OETHStrategyHoldingDailyStat, OETHVault, } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { applyCoingeckoData } from '@utils/coingecko' -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { - EntityManager, - FindOptionsOrderValue, - LessThanOrEqual, - MoreThanOrEqual, -} from 'typeorm' - -import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index 87e096f8..a905148e 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -3,11 +3,10 @@ import * as ccipOnRampAbi from '@abi/ccip-evm2evmonramp' import * as ccipRouter from '@abi/ccip-router' import * as erc20Abi from '@abi/erc20' import { BridgeTransfer, BridgeTransferState } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { logFilter } from '@utils/logFilter' -import { Context } from '@processor' - // Code Reference: https://github.com/smartcontractkit/smart-contract-examples/tree/main/ccip-offchain // https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip-offchain/typescript/src/get-status.ts // Detect state changes on the off-ramp: diff --git a/src/oeth/processors/curve-lp.ts b/src/oeth/processors/curve-lp.ts index af2ea5f2..019ea1d9 100644 --- a/src/oeth/processors/curve-lp.ts +++ b/src/oeth/processors/curve-lp.ts @@ -1,6 +1,9 @@ +import { pad } from 'viem' + import * as baseRewardPool from '@abi/base-reward-pool' import * as curveLpToken from '@abi/curve-lp-token' import { OETHCurveLP } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_CONVEX_ADDRESS, @@ -8,9 +11,6 @@ import { OETH_CURVE_REWARD_LP_ADDRESS, } from '@utils/addresses' import { getLatestEntity } from '@utils/utils' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { curveLPs: OETHCurveLP[] diff --git a/src/oeth/processors/dripper.ts b/src/oeth/processors/dripper.ts index 399fba13..68e3d74d 100644 --- a/src/oeth/processors/dripper.ts +++ b/src/oeth/processors/dripper.ts @@ -1,13 +1,13 @@ +import { pad } from 'viem' + import * as dripperAbi from '@abi/dripper' import * as erc20 from '@abi/erc20' import { OETHDripper } from '@model' +import { Context } from '@processor' import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_DRIPPER_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { getLatestEntity, trackAddressBalances } from '@utils/utils' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { drippers: OETHDripper[] diff --git a/src/oeth/processors/exchange-rates.ts b/src/oeth/processors/exchange-rates.ts index 80104b50..39a22dd3 100644 --- a/src/oeth/processors/exchange-rates.ts +++ b/src/oeth/processors/exchange-rates.ts @@ -1,9 +1,8 @@ +import { Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '@processor' - export const from = 16933090 // OETH Deploy export const setup = (processor: EvmBatchProcessor) => { diff --git a/src/oeth/processors/frax-staking.ts b/src/oeth/processors/frax-staking.ts index e4225bd9..a37fd685 100644 --- a/src/oeth/processors/frax-staking.ts +++ b/src/oeth/processors/frax-staking.ts @@ -1,11 +1,11 @@ +import { pad } from 'viem' + import * as sfrxETH from '@abi/sfrx-eth' import { OETHFraxStaking } from '@model' +import { Context } from '@processor' import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_FRAX_STAKING_ADDRESS, SFRXETH_ADDRESS } from '@utils/addresses' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { fraxStakings: OETHFraxStaking[] diff --git a/src/oeth/processors/morpho-aave.ts b/src/oeth/processors/morpho-aave.ts index 9762390d..0c77cca2 100644 --- a/src/oeth/processors/morpho-aave.ts +++ b/src/oeth/processors/morpho-aave.ts @@ -1,12 +1,12 @@ +import { pad } from 'viem' + import * as erc20 from '@abi/erc20' import * as initializableAbstractStrategy from '@abi/initializable-abstract-strategy' import { OETHMorphoAave } from '@model' +import { Context } from '@processor' import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OETH_MORPHO_AAVE_ADDRESS, WETH_ADDRESS } from '@utils/addresses' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { morphoAaves: OETHMorphoAave[] diff --git a/src/oeth/processors/strategies/strategies.ts b/src/oeth/processors/strategies/strategies.ts index 4db9c3f2..21ab7f0d 100644 --- a/src/oeth/processors/strategies/strategies.ts +++ b/src/oeth/processors/strategies/strategies.ts @@ -1,4 +1,5 @@ import { OETHRewardTokenCollected } from '@model' +import { Context } from '@processor' import { currencies } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { @@ -21,8 +22,6 @@ import { addresses, } from '@utils/addresses' -import { Context } from '@processor' - export const oethStrategies: readonly IStrategyData[] = [ { from: 17249899, diff --git a/src/oeth/processors/vault.ts b/src/oeth/processors/vault.ts index 5c17eb3c..51405e84 100644 --- a/src/oeth/processors/vault.ts +++ b/src/oeth/processors/vault.ts @@ -1,6 +1,9 @@ +import { pad } from 'viem' + import * as erc20 from '@abi/erc20' import * as lido from '@abi/lido' import { OETHVault } from '@model' +import { Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { @@ -12,9 +15,6 @@ import { WETH_ADDRESS, } from '@utils/addresses' import { getLatestEntity, trackAddressBalances } from '@utils/utils' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { vaults: OETHVault[] diff --git a/src/oeth/validators/validate-oeth/validate-oeth.ts b/src/oeth/validators/validate-oeth/validate-oeth.ts index 1cafda76..1f647350 100644 --- a/src/oeth/validators/validate-oeth/validate-oeth.ts +++ b/src/oeth/validators/validate-oeth/validate-oeth.ts @@ -1,3 +1,6 @@ +import assert from 'assert' +import { sortBy } from 'lodash' + import { OETHAPY, OETHHistory, @@ -6,13 +9,10 @@ import { OETHVault, StrategyBalance, } from '@model' +import { Block, Context } from '@processor' import { Entity, EntityClass } from '@subsquid/typeorm-store' import { env } from '@utils/env' import { jsonify } from '@utils/jsonify' -import assert from 'assert' -import { sortBy } from 'lodash' - -import { Block, Context } from '@processor' export const name = 'validate-oeth' diff --git a/src/ogv/post-processors/daily-stats.ts b/src/ogv/post-processors/daily-stats.ts index ca44ec19..e201c4bd 100644 --- a/src/ogv/post-processors/daily-stats.ts +++ b/src/ogv/post-processors/daily-stats.ts @@ -1,6 +1,3 @@ -import { OGV, OGVAddress, OGVDailyStat } from '@model' -import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { applyCoingeckoData } from '@utils/coingecko' import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' import { @@ -9,7 +6,10 @@ import { MoreThanOrEqual, } from 'typeorm' +import { OGV, OGVAddress, OGVDailyStat } from '@model' import { Context } from '@processor' +import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { applyCoingeckoData } from '@utils/coingecko' dayjs.extend(utc) diff --git a/src/ogv/post-processors/governance.ts b/src/ogv/post-processors/governance.ts index 6af2bf07..cedb970b 100644 --- a/src/ogv/post-processors/governance.ts +++ b/src/ogv/post-processors/governance.ts @@ -1,3 +1,5 @@ +import { formatEther } from 'viem' + import * as governanceAbi from '@abi/governance' import { OGVAddress, @@ -8,12 +10,10 @@ import { OGVProposalVote, OGVVoteType, } from '@model' +import { Block, Context, Log } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { GOVERNANCE_ADDRESS } from '@utils/addresses' import { env } from '@utils/env' -import { formatEther } from 'viem' - -import { Block, Context, Log } from '@processor' export const from = 15491391 // https://etherscan.io/tx/0x0e04e429248c384e6b36229edf8eb5a77bec7023c58808c21b702edfcbc0e0d6 diff --git a/src/ogv/processors/ogv-supply.ts b/src/ogv/processors/ogv-supply.ts index 9c05bcb4..3a6fc182 100644 --- a/src/ogv/processors/ogv-supply.ts +++ b/src/ogv/processors/ogv-supply.ts @@ -1,11 +1,10 @@ import * as erc20Abi from '@abi/erc20' import { OGV } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '@processor' - export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 export const setup = (processor: EvmBatchProcessor) => { diff --git a/src/ogv/processors/ogv.ts b/src/ogv/processors/ogv.ts index 10c2f0de..2f71bcae 100644 --- a/src/ogv/processors/ogv.ts +++ b/src/ogv/processors/ogv.ts @@ -6,11 +6,10 @@ import { OGVLockupEventType, OGVLockupTxLog, } from '@model' +import { Block, Context, Log } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { ADDRESS_ZERO, OGV_ADDRESS, VEOGV_ADDRESS } from '@utils/addresses' -import { Block, Context, Log } from '@processor' - export const from = 14439231 // https://etherscan.io/tx/0x9295cac246169f06a3d4ec33fdbd87fced7a9e19ea61177cae75034e45ae66f4 export const veogvFrom = 15089597 // https://etherscan.io/tx/0x70c582e56ea1c49b7e9df70a0b40ddbfac9362b8b172cb527c329c2302d7d48a diff --git a/src/ousd/post-processors/daily-stats/daily-stats.ts b/src/ousd/post-processors/daily-stats/daily-stats.ts index ccc9b9c0..d2c689b2 100644 --- a/src/ousd/post-processors/daily-stats/daily-stats.ts +++ b/src/ousd/post-processors/daily-stats/daily-stats.ts @@ -1,3 +1,12 @@ +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { + EntityManager, + FindOptionsOrderValue, + LessThanOrEqual, + MoreThanOrEqual, +} from 'typeorm' + import { OUSD, OUSDAPY, @@ -10,18 +19,9 @@ import { OUSDStrategyHoldingDailyStat, OUSDVault, } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { applyCoingeckoData } from '@utils/coingecko' -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { - EntityManager, - FindOptionsOrderValue, - LessThanOrEqual, - MoreThanOrEqual, -} from 'typeorm' - -import { Context } from '@processor' dayjs.extend(utc) diff --git a/src/ousd/processors/curve/curve.ts b/src/ousd/processors/curve/curve.ts index 2a9660e1..18b48e0a 100644 --- a/src/ousd/processors/curve/curve.ts +++ b/src/ousd/processors/curve/curve.ts @@ -1,3 +1,4 @@ +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { createCurveInitializer, @@ -6,8 +7,6 @@ import { } from '@templates/curve' import { tokens } from '@utils/addresses' -import { Context } from '@processor' - const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 diff --git a/src/ousd/processors/strategies/aave-strategy.ts b/src/ousd/processors/strategies/aave-strategy.ts index b40ebd44..cbdd3876 100644 --- a/src/ousd/processors/strategies/aave-strategy.ts +++ b/src/ousd/processors/strategies/aave-strategy.ts @@ -1,9 +1,10 @@ +import { pad as viemPad } from 'viem' + import * as aaveLendingPool from '@abi/aave-lending-pool' import { currencies } from '@shared/post-processors/exchange-rates/currencies' import { IStrategyData } from '@templates/strategy' import { OUSD_ADDRESS } from '@utils/addresses' import { logFilter } from '@utils/logFilter' -import { pad as viemPad } from 'viem' import { DAI, USDT } from './const' diff --git a/src/ousd/processors/strategies/strategies.ts b/src/ousd/processors/strategies/strategies.ts index 2c416783..20354902 100644 --- a/src/ousd/processors/strategies/strategies.ts +++ b/src/ousd/processors/strategies/strategies.ts @@ -1,4 +1,5 @@ import { OETHRewardTokenCollected } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { IStrategyData, @@ -10,7 +11,6 @@ import { createStrategyRewardSetup, } from '@templates/strategy-rewards' -import { Context } from '@processor' import { aaveStrategy } from './aave-strategy' import { convexMetaStrategy } from './convex-meta-strategy' import { fluxStrategy } from './flux-strategy' diff --git a/src/ousd/processors/vault.ts b/src/ousd/processors/vault.ts index 3ba0df38..72b7675b 100644 --- a/src/ousd/processors/vault.ts +++ b/src/ousd/processors/vault.ts @@ -1,5 +1,8 @@ +import { pad } from 'viem' + import * as erc20 from '@abi/erc20' import { OUSDVault } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { DAI_ADDRESS, @@ -9,9 +12,6 @@ import { USDT_ADDRESS, } from '@utils/addresses' import { getLatestEntity, trackAddressBalances } from '@utils/utils' -import { pad } from 'viem' - -import { Context } from '@processor' interface ProcessResult { vaults: OUSDVault[] diff --git a/src/ousd/validators/validate-ousd/validate-ousd.ts b/src/ousd/validators/validate-ousd/validate-ousd.ts index 77b69d58..9377e7c7 100644 --- a/src/ousd/validators/validate-ousd/validate-ousd.ts +++ b/src/ousd/validators/validate-ousd/validate-ousd.ts @@ -1,11 +1,11 @@ -import { StrategyYield } from '@model' -import { Entity, EntityClass } from '@subsquid/typeorm-store' -import { env } from '@utils/env' -import { jsonify } from '@utils/jsonify' import assert from 'assert' import { sortBy } from 'lodash' +import { StrategyYield } from '@model' import { Block, Context } from '@processor' +import { Entity, EntityClass } from '@subsquid/typeorm-store' +import { env } from '@utils/env' +import { jsonify } from '@utils/jsonify' export const name = 'validate-ousd' diff --git a/src/server-extension/ogn-stats.ts b/src/server-extension/ogn-stats.ts index fb6906d6..b78694a4 100644 --- a/src/server-extension/ogn-stats.ts +++ b/src/server-extension/ogn-stats.ts @@ -1,5 +1,3 @@ -import * as Erc20ABI from '@abi/erc20.abi' -import { OGN_ADDRESS } from '@utils/addresses' import { GraphQLResolveInfo } from 'graphql' import 'reflect-metadata' import { Field, Info, ObjectType, Query, Resolver } from 'type-graphql' @@ -14,6 +12,9 @@ import { } from 'viem' import { mainnet } from 'viem/chains' +import * as Erc20ABI from '@abi/erc20.abi' +import { OGN_ADDRESS } from '@utils/addresses' + import './fetch-polyfill' const publicClient = createPublicClient({ diff --git a/src/shared/post-processors/exchange-rates/currencies.ts b/src/shared/post-processors/exchange-rates/currencies.ts index 8cb17e62..f22801fa 100644 --- a/src/shared/post-processors/exchange-rates/currencies.ts +++ b/src/shared/post-processors/exchange-rates/currencies.ts @@ -1,6 +1,7 @@ -import { ExchangeRate } from '@model' import { invert, mapKeys } from 'lodash' +import { ExchangeRate } from '@model' + export const currencies = { USD: '0x0000000000000000000000000000000000000348', // Chainlink Denominations.USD DAI: '0x6b175474e89094c44da98b954eedeac495271d0f', diff --git a/src/shared/post-processors/exchange-rates/exchange-rates.ts b/src/shared/post-processors/exchange-rates/exchange-rates.ts index 401736c2..6ece7568 100644 --- a/src/shared/post-processors/exchange-rates/exchange-rates.ts +++ b/src/shared/post-processors/exchange-rates/exchange-rates.ts @@ -1,9 +1,10 @@ -import { ExchangeRate } from '@model' -import { useProcessorState } from '@utils/state' import { compact } from 'lodash' import { Between } from 'typeorm' +import { ExchangeRate } from '@model' import { Block, Context } from '@processor' +import { useProcessorState } from '@utils/state' + import { Currency, currenciesByAddress } from './currencies' import { getPrice } from './price-routing' diff --git a/src/shared/post-processors/exchange-rates/price-routing.ts b/src/shared/post-processors/exchange-rates/price-routing.ts index ca63a341..0789d1d8 100644 --- a/src/shared/post-processors/exchange-rates/price-routing.ts +++ b/src/shared/post-processors/exchange-rates/price-routing.ts @@ -1,3 +1,5 @@ +import { memoize } from 'lodash' + import * as balancerMetaStablePoolAbi from '@abi/balancer-meta-stable-pool' import * as balancerRateProvider from '@abi/balancer-rate-provider' import * as chainlinkFeedRegistry from '@abi/chainlink-feed-registry' @@ -5,10 +7,9 @@ import * as frxEthFraxOracle from '@abi/frx-eth-frax-oracle' import * as oethOracleRouter from '@abi/oeth-oracle-router' import * as stakedFraxEth from '@abi/sfrx-eth' import * as woethAbi from '@abi/woeth' +import { Context } from '@processor' import { STETH_ADDRESS } from '@utils/addresses' -import { memoize } from 'lodash' -import { Context } from '@processor' import { Currency, CurrencySymbol, currencies } from './currencies' export const getPrice = async ( diff --git a/src/shared/post-processors/liquidity.ts b/src/shared/post-processors/liquidity.ts index 682b6479..4f9e62f8 100644 --- a/src/shared/post-processors/liquidity.ts +++ b/src/shared/post-processors/liquidity.ts @@ -1,8 +1,8 @@ -import { LiquidityDailyBalance } from '@model' -import { useProcessorState } from '@utils/state' import dayjs from 'dayjs' +import { LiquidityDailyBalance } from '@model' import { Context } from '@processor' +import { useProcessorState } from '@utils/state' const useLiquidityDailyBalance = (ctx: Context) => useProcessorState( diff --git a/src/templates/curve/curve.ts b/src/templates/curve/curve.ts index 87b63445..d995af74 100644 --- a/src/templates/curve/curve.ts +++ b/src/templates/curve/curve.ts @@ -5,12 +5,12 @@ import { CurvePoolRate, LiquiditySourceType, } from '@model' +import { Context } from '@processor' import { updateLiquidityBalances } from '@shared/post-processors/liquidity' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { range } from '@utils/range' -import { Context } from '@processor' import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' interface ProcessResult { diff --git a/src/templates/erc20/erc20.ts b/src/templates/erc20/erc20.ts index 60a57304..cc48c81b 100644 --- a/src/templates/erc20/erc20.ts +++ b/src/templates/erc20/erc20.ts @@ -6,14 +6,13 @@ import { ERC20State, ERC20Transfer, } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { ADDRESS_ZERO, TokenAddress } from '@utils/addresses' import { blockFrequencyTracker } from '@utils/blockFrequencyUpdater' import { LogFilter, logFilter } from '@utils/logFilter' import { multicall } from '@utils/multicall' -import { Context } from '@processor' - const duplicateTracker = new Set() export const createERC20Tracker = ({ diff --git a/src/templates/maverick/maverick.ts b/src/templates/maverick/maverick.ts index 4e9bae16..49c49608 100644 --- a/src/templates/maverick/maverick.ts +++ b/src/templates/maverick/maverick.ts @@ -1,10 +1,10 @@ import * as maverickPool from '@abi/maverick-pool' import { LiquiditySourceType, MaverickPool, MaverickPoolBalance } from '@model' +import { Context } from '@processor' import { updateLiquidityBalances } from '@shared/post-processors/liquidity' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '@processor' import { registerLiquiditySource } from '../../mainnet/processors/liquidity-sources' // Maverick Pool Reference: https://docs.mav.xyz/guides/technical-reference/pool diff --git a/src/templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts index 86eb4807..1f02d7cd 100644 --- a/src/templates/otoken/otoken.ts +++ b/src/templates/otoken/otoken.ts @@ -1,3 +1,6 @@ +import { groupBy } from 'lodash' +import { GetTransactionReceiptReturnType } from 'viem' + import * as erc20 from '@abi/erc20' import * as otoken from '@abi/otoken' import * as otokenVault from '@abi/otoken-vault' @@ -21,22 +24,20 @@ import { OUSDRebaseOption, RebasingOption, } from '@model' +import { Context } from '@processor' import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' import { CurrencyAddress, CurrencySymbol, } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' -import { activityFromTx, type Transaction } from '@utils/activityFromTx' +import { type Transaction, activityFromTx } from '@utils/activityFromTx' import { ADDRESS_ZERO } from '@utils/addresses' import { DECIMALS_18 } from '@utils/constants' import { multicall } from '@utils/multicall' import { EntityClassT, InstanceTypeOfConstructor } from '@utils/type' import { getLatestEntity } from '@utils/utils' -import { groupBy } from 'lodash' -import { GetTransactionReceiptReturnType } from 'viem' -import { Context } from '@processor' import { createAddress, createRebaseAPY } from './utils' type OToken = EntityClassT | EntityClassT diff --git a/src/templates/otoken/utils.ts b/src/templates/otoken/utils.ts index e46b258d..5ae18578 100644 --- a/src/templates/otoken/utils.ts +++ b/src/templates/otoken/utils.ts @@ -1,3 +1,7 @@ +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import { LessThan, MoreThanOrEqual } from 'typeorm' + import * as otoken from '@abi/otoken' import { ExchangeRate, @@ -9,12 +13,8 @@ import { OUSDRebase, RebasingOption, } from '@model' -import { calculateAPY } from '@utils/calculateAPY' -import dayjs from 'dayjs' -import utc from 'dayjs/plugin/utc' -import { LessThan, MoreThanOrEqual } from 'typeorm' - import { Context } from '@processor' +import { calculateAPY } from '@utils/calculateAPY' dayjs.extend(utc) diff --git a/src/templates/processor-status/processor-status.ts b/src/templates/processor-status/processor-status.ts index b4615aa0..a078eb89 100644 --- a/src/templates/processor-status/processor-status.ts +++ b/src/templates/processor-status/processor-status.ts @@ -1,5 +1,4 @@ import { ProcessingStatus } from '@model' - import { Context } from '@processor' const processorIds = new Set() diff --git a/src/templates/strategy-rewards/strategy-rewards.ts b/src/templates/strategy-rewards/strategy-rewards.ts index d3025afc..c40fab4c 100644 --- a/src/templates/strategy-rewards/strategy-rewards.ts +++ b/src/templates/strategy-rewards/strategy-rewards.ts @@ -1,10 +1,9 @@ import * as iat from '@abi/initializable-abstract-strategy' import { OETHRewardTokenCollected } from '@model' +import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { EntityClassT } from '@utils/type' -import { Context } from '@processor' - export const createStrategyRewardSetup = ({ address, from, diff --git a/src/templates/strategy/strategy-balancer.ts b/src/templates/strategy/strategy-balancer.ts index 11e47e60..0eb0aace 100644 --- a/src/templates/strategy/strategy-balancer.ts +++ b/src/templates/strategy/strategy-balancer.ts @@ -2,6 +2,7 @@ import * as balancerMetaStablePoolStrategyAbi from '@abi/balancer-meta-pool-stra import * as balancerRateProvider from '@abi/balancer-rate-provider' import * as balancerVaultAbi from '@abi/balancer-vault' import { StrategyBalance } from '@model' +import { Context } from '@processor' import { getBalancePoolRateProviders } from '@shared/post-processors/exchange-rates/price-routing' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { @@ -12,7 +13,6 @@ import { } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-curve-amo.ts b/src/templates/strategy/strategy-curve-amo.ts index b95be76e..3b684327 100644 --- a/src/templates/strategy/strategy-curve-amo.ts +++ b/src/templates/strategy/strategy-curve-amo.ts @@ -2,11 +2,11 @@ import * as curvePool from '@abi/curve-lp-token' import * as erc20 from '@abi/erc20' import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' import { StrategyBalance } from '@model' +import { Block, Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { ETH_ADDRESS, WETH_ADDRESS } from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-daily-earnings.ts b/src/templates/strategy/strategy-daily-earnings.ts index b6a0e5ad..c8bcc78f 100644 --- a/src/templates/strategy/strategy-daily-earnings.ts +++ b/src/templates/strategy/strategy-daily-earnings.ts @@ -1,11 +1,12 @@ -import { StrategyDailyYield, StrategyYield } from '@model' -import { calculateAPY } from '@utils/calculateAPY' -import { lastExcept, max } from '@utils/utils' import dayjs from 'dayjs' import { Between, LessThan, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' +import { StrategyDailyYield, StrategyYield } from '@model' import { Block, Context } from '@processor' +import { calculateAPY } from '@utils/calculateAPY' +import { lastExcept, max } from '@utils/utils' + import { IStrategyData } from './strategy' const eth1 = 1000000000000000000n diff --git a/src/templates/strategy/strategy-earnings.ts b/src/templates/strategy/strategy-earnings.ts index db4da1b5..a7267931 100644 --- a/src/templates/strategy/strategy-earnings.ts +++ b/src/templates/strategy/strategy-earnings.ts @@ -1,7 +1,12 @@ +import dayjs from 'dayjs' +import { LessThan } from 'typeorm' +import { formatEther } from 'viem' + import * as baseRewardPool from '@abi/base-reward-pool' import * as erc20 from '@abi/erc20' import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' import { StrategyYield } from '@model' +import { Block, Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { Currency, @@ -21,11 +26,7 @@ import { import { blockFrequencyTracker } from '@utils/blockFrequencyUpdater' import { logFilter } from '@utils/logFilter' import { convertDecimals, lastExcept } from '@utils/utils' -import dayjs from 'dayjs' -import { LessThan } from 'typeorm' -import { formatEther } from 'viem' -import { Block, Context } from '@processor' import { IStrategyData } from './strategy' import { processStrategyDailyEarnings } from './strategy-daily-earnings' diff --git a/src/templates/strategy/strategy-generic.ts b/src/templates/strategy/strategy-generic.ts index 5251eacf..9676094f 100644 --- a/src/templates/strategy/strategy-generic.ts +++ b/src/templates/strategy/strategy-generic.ts @@ -1,11 +1,11 @@ import * as abstractStrategyAbi from '@abi/initializable-abstract-strategy' import { StrategyBalance } from '@model' +import { Block, Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' -import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy-vault.ts b/src/templates/strategy/strategy-vault.ts index 20fb0892..b7e7c50c 100644 --- a/src/templates/strategy/strategy-vault.ts +++ b/src/templates/strategy/strategy-vault.ts @@ -1,10 +1,10 @@ import * as erc20 from '@abi/erc20' import { StrategyBalance } from '@model' +import { Block, Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { convertDecimals } from '@utils/utils' -import { Block, Context } from '@processor' import { IStrategyData } from './index' import { processStrategyEarnings, diff --git a/src/templates/strategy/strategy.ts b/src/templates/strategy/strategy.ts index 08fff8d4..53d715f3 100644 --- a/src/templates/strategy/strategy.ts +++ b/src/templates/strategy/strategy.ts @@ -1,3 +1,4 @@ +import { Context } from '@processor' import { ensureExchangeRates } from '@shared/post-processors/exchange-rates' import { CurrencyAddress } from '@shared/post-processors/exchange-rates/currencies' import { EvmBatchProcessor } from '@subsquid/evm-processor' @@ -6,7 +7,6 @@ import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { LogFilter } from '@utils/logFilter' import { TraceFilter } from '@utils/traceFilter' -import { Context } from '@processor' import * as strategyBalancer from './strategy-balancer' import * as strategyCurveAMO from './strategy-curve-amo' import * as strategyGeneric from './strategy-generic' diff --git a/src/utils/activityFromTx.ts b/src/utils/activityFromTx.ts index d99a6b60..3eaafdb1 100644 --- a/src/utils/activityFromTx.ts +++ b/src/utils/activityFromTx.ts @@ -1,15 +1,10 @@ +import { compact } from 'lodash' +import { GetTransactionReceiptReturnType, decodeEventLog, parseAbi } from 'viem' + import * as balancerVaultAbi from '@abi/balancer-vault.abi' import * as curveLpAbi from '@abi/curve-lp-token.abi' -import * as oethZapperAbi from '@abi/oeth-zapper.abi' import * as oethAbi from '@abi/oeth.abi' import * as oethVaultAbi from '@abi/otoken-vault.abi' -import { compact } from 'lodash' -import { - GetTransactionReceiptReturnType, - decodeEventLog, - decodeFunctionData, - parseAbi, -} from 'viem' import { OETH_ADDRESS, diff --git a/src/utils/coingecko.ts b/src/utils/coingecko.ts index 733f68d7..c2f73a7a 100644 --- a/src/utils/coingecko.ts +++ b/src/utils/coingecko.ts @@ -1,9 +1,9 @@ -import { OETHDailyStat, OGVDailyStat, OUSDDailyStat } from '@model' -import { EntityClassT } from '@utils/type' import { Between, LessThanOrEqual } from 'typeorm' import { parseEther } from 'viem' +import { OETHDailyStat, OGVDailyStat, OUSDDailyStat } from '@model' import { Context } from '@processor' +import { EntityClassT } from '@utils/type' type DailyStat = | EntityClassT diff --git a/src/utils/logFilter.ts b/src/utils/logFilter.ts index 8bc668b3..83b1df99 100644 --- a/src/utils/logFilter.ts +++ b/src/utils/logFilter.ts @@ -1,7 +1,7 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' import { pad as viemPad } from 'viem' import { Log } from '@processor' +import { EvmBatchProcessor } from '@subsquid/evm-processor' const pad = (hex: string) => viemPad(hex as `0x${string}`) const lower = (hex: string) => hex.toLowerCase() diff --git a/src/utils/multicall.ts b/src/utils/multicall.ts index 06c41f23..704f8c1d 100644 --- a/src/utils/multicall.ts +++ b/src/utils/multicall.ts @@ -1,8 +1,8 @@ -import { Func } from '@abi/abi.support' -import { Multicall } from '@abi/multicall' import { toHex } from 'viem' import { arbitrum, mainnet } from 'viem/chains' +import { Func } from '@abi/abi.support' +import { Multicall } from '@abi/multicall' import { Block, Context } from '@processor' const MULTICALL_CONTRACTS: Record< diff --git a/src/utils/traceFilter.ts b/src/utils/traceFilter.ts index 332072b9..f4789d2e 100644 --- a/src/utils/traceFilter.ts +++ b/src/utils/traceFilter.ts @@ -1,7 +1,7 @@ -import { EvmBatchProcessor } from '@subsquid/evm-processor' import { pad as viemPad } from 'viem' import { Trace } from '@processor' +import { EvmBatchProcessor } from '@subsquid/evm-processor' const pad = (hex: string) => viemPad(hex as `0x${string}`) const lower = (hex: string) => hex.toLowerCase() diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 73a9dfe3..6103fd1b 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -1,9 +1,9 @@ -import * as erc20 from '@abi/erc20' -import { Entity, EntityClass } from '@subsquid/typeorm-store' import { LessThanOrEqual } from 'typeorm' import { pad } from 'viem' +import * as erc20 from '@abi/erc20' import { Context } from '@processor' +import { Entity, EntityClass } from '@subsquid/typeorm-store' export const max = (values: bigint[], start = 0n) => { return values.reduce((max, v) => (max > v ? max : v), start) From d7e3d9fdcc72eaa07b4cd74ead4aa95a22a39dd6 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 10:32:22 -0700 Subject: [PATCH 13/20] use `txHashIn` and `txHashOut` on `BridgeTransfer` and add `state` there too --- ...60154611-Data.js => 1713394436715-Data.js} | 8 ++---- schema-general.graphql | 5 +++- schema.graphql | 4 ++- src/mainnet/processors/curve/curve.ts | 15 +++++----- src/model/generated/bridgeTransfer.model.ts | 9 ++++-- src/oeth/processors/ccip.ts | 28 ++++++++++++++++--- 6 files changed, 49 insertions(+), 20 deletions(-) rename db/migrations/{1712960154611-Data.js => 1713394436715-Data.js} (98%) diff --git a/db/migrations/1712960154611-Data.js b/db/migrations/1713394436715-Data.js similarity index 98% rename from db/migrations/1712960154611-Data.js rename to db/migrations/1713394436715-Data.js index 12eebf5c..27a45acc 100644 --- a/db/migrations/1712960154611-Data.js +++ b/db/migrations/1713394436715-Data.js @@ -1,5 +1,5 @@ -module.exports = class Data1712960154611 { - name = 'Data1712960154611' +module.exports = class Data1713394436715 { + name = 'Data1713394436715' async up(db) { await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) @@ -61,10 +61,9 @@ module.exports = class Data1712960154611 { await db.query(`CREATE TABLE "liquidity_daily_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "token" text NOT NULL, "balance" numeric NOT NULL, CONSTRAINT "PK_bf1de97f9815d851f7b4abca9ca" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_c5116bd4f5406fc2848552f0ba" ON "liquidity_daily_balance" ("timestamp") `) await db.query(`CREATE INDEX "IDX_58d14205a5e9ad1d05f94d7bb6" ON "liquidity_daily_balance" ("block_number") `) - await db.query(`CREATE TABLE "bridge_transfer" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "message_id" text NOT NULL, "bridge" text NOT NULL, "sender" text NOT NULL, "receiver" text NOT NULL, "chain_in" integer NOT NULL, "chain_out" integer NOT NULL, "token_in" text NOT NULL, "token_out" text NOT NULL, "amount_in" numeric NOT NULL, "amount_out" numeric NOT NULL, CONSTRAINT "PK_fab0727701656a3e6c320fca6e9" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "bridge_transfer" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash_in" text NOT NULL, "tx_hash_out" text, "message_id" text NOT NULL, "bridge" text NOT NULL, "sender" text NOT NULL, "receiver" text NOT NULL, "chain_in" integer NOT NULL, "chain_out" integer NOT NULL, "token_in" text NOT NULL, "token_out" text NOT NULL, "amount_in" numeric NOT NULL, "amount_out" numeric NOT NULL, "state" integer NOT NULL, CONSTRAINT "PK_fab0727701656a3e6c320fca6e9" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_aaedc42eda914e44a21e8eac72" ON "bridge_transfer" ("timestamp") `) await db.query(`CREATE INDEX "IDX_f8d8d410f058f0bae15eefbc81" ON "bridge_transfer" ("block_number") `) - await db.query(`CREATE INDEX "IDX_312166d6942ae27bf8459775ce" ON "bridge_transfer" ("tx_hash") `) await db.query(`CREATE INDEX "IDX_85994c1ee045b713bbcbcccc8b" ON "bridge_transfer" ("message_id") `) await db.query(`CREATE INDEX "IDX_7ff6ab2147f80a465d3752e79f" ON "bridge_transfer" ("bridge") `) await db.query(`CREATE INDEX "IDX_3cbd3eea30bc62ebc91c276e73" ON "bridge_transfer" ("sender") `) @@ -302,7 +301,6 @@ module.exports = class Data1712960154611 { await db.query(`DROP TABLE "bridge_transfer"`) await db.query(`DROP INDEX "public"."IDX_aaedc42eda914e44a21e8eac72"`) await db.query(`DROP INDEX "public"."IDX_f8d8d410f058f0bae15eefbc81"`) - await db.query(`DROP INDEX "public"."IDX_312166d6942ae27bf8459775ce"`) await db.query(`DROP INDEX "public"."IDX_85994c1ee045b713bbcbcccc8b"`) await db.query(`DROP INDEX "public"."IDX_7ff6ab2147f80a465d3752e79f"`) await db.query(`DROP INDEX "public"."IDX_3cbd3eea30bc62ebc91c276e73"`) diff --git a/schema-general.graphql b/schema-general.graphql index e0cb11e3..96c19e6a 100644 --- a/schema-general.graphql +++ b/schema-general.graphql @@ -256,7 +256,8 @@ type BridgeTransfer @entity { id: ID! # chain + log id timestamp: DateTime! @index blockNumber: Int! @index - txHash: String! @index + txHashIn: String! + txHashOut: String # Initially null messageId: String! @index bridge: String! @index sender: String! @index @@ -267,11 +268,13 @@ type BridgeTransfer @entity { tokenOut: String! amountIn: BigInt! amountOut: BigInt! + state: Int! } type BridgeTransferState @entity { id: ID! timestamp: DateTime! @index blockNumber: Int! @index + txHash: String! @index state: Int! } \ No newline at end of file diff --git a/schema.graphql b/schema.graphql index d2f39816..3400c422 100644 --- a/schema.graphql +++ b/schema.graphql @@ -258,7 +258,8 @@ type BridgeTransfer @entity { id: ID! # chain + log id timestamp: DateTime! @index blockNumber: Int! @index - txHash: String! @index + txHashIn: String! + txHashOut: String # Initially null messageId: String! @index bridge: String! @index sender: String! @index @@ -269,6 +270,7 @@ type BridgeTransfer @entity { tokenOut: String! amountIn: BigInt! amountOut: BigInt! + state: Int! } type BridgeTransferState @entity { diff --git a/src/mainnet/processors/curve/curve.ts b/src/mainnet/processors/curve/curve.ts index c7aa2ab6..ca6d84c3 100644 --- a/src/mainnet/processors/curve/curve.ts +++ b/src/mainnet/processors/curve/curve.ts @@ -5,6 +5,7 @@ import { createCurveProcessor, createCurveSetup, } from '@templates/curve' +import { tokens } from '@utils/addresses' const ousdResetFrom = 11585978 const oethDeployFrom = 16933090 @@ -14,13 +15,13 @@ export const from = Math.min(ousdResetFrom, oethDeployFrom) const pools: (Parameters['0'] & Parameters['0'])[] = [ // Curve (OETH) - // { - // name: 'factory-v2-298: ETH/OETH', - // address: '0x94B17476A93b3262d87B9a326965D1E91f9c13E7'.toLowerCase(), - // from: Math.max(17130500, oethDeployFrom), - // tokens: [tokens.ETH, tokens.OETH], - // ratesToPull: [{ i: 1n, j: 0n, dx: 1000000000000000000n }], - // }, + { + name: 'factory-v2-298: ETH/OETH', + address: '0x94B17476A93b3262d87B9a326965D1E91f9c13E7'.toLowerCase(), + from: Math.max(17130500, oethDeployFrom), + tokens: [tokens.ETH, tokens.OETH], + ratesToPull: [{ i: 1n, j: 0n, dx: 1000000000000000000n }], + }, // { // name: 'factory-crvusd-15: WETH/frxETH', // address: '0x9c3b46c0ceb5b9e304fcd6d88fc50f7dd24b31bc', diff --git a/src/model/generated/bridgeTransfer.model.ts b/src/model/generated/bridgeTransfer.model.ts index 0afbd902..bd17c25a 100644 --- a/src/model/generated/bridgeTransfer.model.ts +++ b/src/model/generated/bridgeTransfer.model.ts @@ -18,9 +18,11 @@ export class BridgeTransfer { @Column_("int4", {nullable: false}) blockNumber!: number - @Index_() @Column_("text", {nullable: false}) - txHash!: string + txHashIn!: string + + @Column_("text", {nullable: true}) + txHashOut!: string | undefined | null @Index_() @Column_("text", {nullable: false}) @@ -56,4 +58,7 @@ export class BridgeTransfer { @Column_("numeric", {transformer: marshal.bigintTransformer, nullable: false}) amountOut!: bigint + + @Column_("int4", {nullable: false}) + state!: number } diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index a905148e..dfecd467 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -107,6 +107,16 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { state: data.state, }) result.bridgeTransferStates.set(state.id, state) + + // A `BridgeTransfer` may already exist. If so, we should update it. + const bridgeTransfer = await ctx.store.findOneBy(BridgeTransfer, { + messageId: data.messageId, + }) + if (bridgeTransfer) { + bridgeTransfer.txHashOut = log.transactionHash + bridgeTransfer.state = data.state + result.transfers.set(state.id, bridgeTransfer) + } // console.log(state) } if (transfersToLockReleasePool.matches(log)) { @@ -125,12 +135,21 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { logSendRequested.transaction!.input, ) - for (const tokenAmount of message.tokenAmounts) { + // A `BridgeTransferState` may already exist. + // If so, we should pull the `state` for it. + const bridgeTransferState = await ctx.store.get( + BridgeTransferState, + message.messageId, + ) + + for (let i = 0; i < message.tokenAmounts.length; i++) { + const tokenAmount = message.tokenAmounts[i] const transfer = new BridgeTransfer({ - id: `${params.chainId}-${log.id}`, + id: `${message.messageId}-${i}`, blockNumber: block.header.height, timestamp: new Date(block.header.timestamp), - txHash: log.transactionHash, + txHashIn: log.transactionHash, + txHashOut: null, messageId: message.messageId, bridge: 'ccip', chainIn: params.chainId, @@ -144,6 +163,7 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { amountOut: tokenAmount.amount, sender: message.sender.toLowerCase(), receiver: message.receiver.toLowerCase(), + state: bridgeTransferState?.state ?? 0, }) // console.log(transfer) result.transfers.set(transfer.id, transfer) @@ -153,7 +173,7 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { } } - await ctx.store.insert([...result.transfers.values()]) + await ctx.store.upsert([...result.transfers.values()]) await ctx.store.upsert([...result.bridgeTransferStates.values()]) } From 84d1e46d8e30338e2ae2f47b34efd03dc7ad6cc8 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 10:32:35 -0700 Subject: [PATCH 14/20] keep native processing on --- src/mainnet/processors/native.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/mainnet/processors/native.ts b/src/mainnet/processors/native.ts index 067a77ff..c68c258c 100644 --- a/src/mainnet/processors/native.ts +++ b/src/mainnet/processors/native.ts @@ -3,6 +3,12 @@ import { minBy } from 'lodash' import { NativeBalance } from '@model' import { Context } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' +import { + OETH_VAULT_ADDRESS, + OUSD_VAULT_ADDRESS, + oethStrategyArray, + ousdStrategyArray, +} from '@utils/addresses' import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { getNativeBalances } from '@utils/nativeBalance' @@ -15,10 +21,10 @@ const tracks = [ { from: 19072024, // As of this block, none of these addresses have ever held ETH. addresses: [ - // ...ousdStrategyArray, - // OUSD_VAULT_ADDRESS, - // ...oethStrategyArray, - // OETH_VAULT_ADDRESS, + ...ousdStrategyArray, + OUSD_VAULT_ADDRESS, + ...oethStrategyArray, + OETH_VAULT_ADDRESS, ], }, ] From bc4f7073368432df4db1e188a49c8c3a0d668c3e Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 10:33:47 -0700 Subject: [PATCH 15/20] rename --- src/main-mainnet.ts | 2 +- .../validators/{validate-shared.ts => validate-mainnet.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/mainnet/validators/{validate-shared.ts => validate-mainnet.ts} (100%) diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index b01ba91c..a94a8bea 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -5,7 +5,7 @@ import * as exchangeRates from '@shared/post-processors/exchange-rates' import { processStatus } from '@templates/processor-status' import { erc20s } from './mainnet/processors/erc20s' -import * as validate from './mainnet/validators/validate-shared' +import * as validate from './mainnet/validators/validate-mainnet' export const processor = { stateSchema: 'mainnet-processor', diff --git a/src/mainnet/validators/validate-shared.ts b/src/mainnet/validators/validate-mainnet.ts similarity index 100% rename from src/mainnet/validators/validate-shared.ts rename to src/mainnet/validators/validate-mainnet.ts From 27c5b6677337a5076022e8ac0f85de707bedc1fd Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 11:14:04 -0700 Subject: [PATCH 16/20] pinpoint block frequency calc issue --- src/processor.ts | 2 +- src/utils/calculateBlockRate.ts | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/processor.ts b/src/processor.ts index 8a11c1ed..09898261 100644 --- a/src/processor.ts +++ b/src/processor.ts @@ -135,7 +135,7 @@ export const run = ({ try { ctx.chain = config.chain ctx.__state = new Map() - if (ctx.blocks.length > 1) { + if (ctx.blocks.length >= 1) { ctx.blockRate = await calculateBlockRate(ctx) // ctx.log.info({ bps: ctx.bps, length: ctx.blocks.length }) } diff --git a/src/utils/calculateBlockRate.ts b/src/utils/calculateBlockRate.ts index c3d2e8fb..a7f76f8a 100644 --- a/src/utils/calculateBlockRate.ts +++ b/src/utils/calculateBlockRate.ts @@ -2,34 +2,34 @@ import { hexToNumber, numberToHex } from 'viem' import { Context } from '@processor' -let lastBpsFrom = 0 +let lastRateFrom = 0 let lastResult = 0 export const calculateBlockRate = async (ctx: Context) => { const lastBlockNumber = ctx.blocks[ctx.blocks.length - 1].header.height - const bpsTestRange = 100_000 - const bpsFrom = Math.max( + const rateTestRange = 100_000 + const rateFrom = Math.max( 1, - Math.floor(lastBlockNumber / bpsTestRange) * bpsTestRange - bpsTestRange, + Math.floor(lastBlockNumber / rateTestRange) * rateTestRange - rateTestRange, ) - if (bpsFrom === lastBpsFrom) { + if (rateFrom === lastRateFrom) { return lastResult } - const bpsTo = bpsFrom + bpsTestRange - const [bpsBlockFrom, bpsBlockTo] = (await ctx._chain.client.batchCall([ + const rateTo = Math.min(rateFrom + rateTestRange, lastBlockNumber) + const [rateBlockFrom, rateBlockTo] = (await ctx._chain.client.batchCall([ { method: 'eth_getBlockByNumber', - params: [numberToHex(bpsFrom), false], + params: [numberToHex(rateFrom), false], }, { method: 'eth_getBlockByNumber', - params: [numberToHex(bpsTo), false], + params: [numberToHex(rateTo), false], }, ])) as { timestamp: `0x${string}` }[] const seconds = - hexToNumber(bpsBlockTo.timestamp) - hexToNumber(bpsBlockFrom.timestamp) - const result = seconds / bpsTestRange + hexToNumber(rateBlockTo.timestamp) - hexToNumber(rateBlockFrom.timestamp) + const result = seconds / rateTestRange lastResult = result return result } From a1f69e4531fdf897f0c9ec9cb9b00f7a06d74240 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 16:52:16 -0700 Subject: [PATCH 17/20] set specific block rates when at head --- src/utils/calculateBlockRate.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/utils/calculateBlockRate.ts b/src/utils/calculateBlockRate.ts index a7f76f8a..9f053863 100644 --- a/src/utils/calculateBlockRate.ts +++ b/src/utils/calculateBlockRate.ts @@ -1,11 +1,20 @@ import { hexToNumber, numberToHex } from 'viem' +import { arbitrum, mainnet } from 'viem/chains' import { Context } from '@processor' let lastRateFrom = 0 let lastResult = 0 +const blockRates: Record = { + [mainnet.id]: 12, + [arbitrum.id]: 0.26, +} + export const calculateBlockRate = async (ctx: Context) => { + if (ctx.isHead && blockRates[ctx.chain.id]) { + return blockRates[ctx.chain.id] + } const lastBlockNumber = ctx.blocks[ctx.blocks.length - 1].header.height const rateTestRange = 100_000 const rateFrom = Math.max( From 22e58919efea9e8b7d12398b0d3d3219f0ae5a18 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 18 Apr 2024 16:53:20 -0700 Subject: [PATCH 18/20] keep a single squid for now --- squid.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/squid.yaml b/squid.yaml index d824e1ef..e92b9221 100644 --- a/squid.yaml +++ b/squid.yaml @@ -14,10 +14,11 @@ deploy: - RPC_ARBITRUM_ENDPOINT - RPC_ARBITRUM_ENV processor: - # cmd: [ "node", "lib/main" ] - # env: - # RPC_ENV: RPC_ENDPOINT_999 - ################################ + - name: mainnet-processor + cmd: [ "sqd", "process:mainnet:prod" ] + env: + RPC_ENV: RPC_ENDPOINT_RETH + TS_NODE_BASEURL: './lib' - name: arbitrum-processor cmd: [ "sqd", "process:arbitrum:prod" ] env: @@ -33,8 +34,8 @@ deploy: env: RPC_ENV: RPC_ENDPOINT_RETH TS_NODE_BASEURL: './lib' - - name: other-processor - cmd: [ "sqd", "process:mainnet:prod" ] + - name: ousd-processor + cmd: [ "sqd", "process:ousd:prod" ] env: RPC_ENV: RPC_ENDPOINT_RETH TS_NODE_BASEURL: './lib' From 43185a80d168e274fdcd7c6c71f83896c77fdb56 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Fri, 19 Apr 2024 16:51:12 -0700 Subject: [PATCH 19/20] - pull vault totalValue - created schema-otoken.graphql to be the future home of a joined otoken schema across chains - txHash on `BridgeTransferState` --- ...94436715-Data.js => 1713570460723-Data.js} | 18 +++++++++-- graphql.config.yml | 5 +++ schema-general.graphql | 2 +- schema-oeth.graphql | 2 +- schema-ogv.graphql | 2 +- schema-otoken.graphql | 8 +++++ schema.graphql | 18 +++++++++-- src/main.ts | 2 +- .../generated/bridgeTransferState.model.ts | 4 +++ src/model/generated/index.ts | 1 + src/model/generated/oTokenVault.model.ts | 31 +++++++++++++++++++ src/oeth/processors/ccip.ts | 1 + src/oeth/processors/oeth.ts | 1 + src/ousd/processors/ousd/ousd.ts | 1 + src/templates/otoken/otoken.ts | 25 +++++++++++++++ 15 files changed, 111 insertions(+), 10 deletions(-) rename db/migrations/{1713394436715-Data.js => 1713570460723-Data.js} (97%) create mode 100644 schema-otoken.graphql create mode 100644 src/model/generated/oTokenVault.model.ts diff --git a/db/migrations/1713394436715-Data.js b/db/migrations/1713570460723-Data.js similarity index 97% rename from db/migrations/1713394436715-Data.js rename to db/migrations/1713570460723-Data.js index 27a45acc..09c25ae7 100644 --- a/db/migrations/1713394436715-Data.js +++ b/db/migrations/1713570460723-Data.js @@ -1,5 +1,5 @@ -module.exports = class Data1713394436715 { - name = 'Data1713394436715' +module.exports = class Data1713570460723 { + name = 'Data1713570460723' async up(db) { await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) @@ -69,9 +69,10 @@ module.exports = class Data1713394436715 { await db.query(`CREATE INDEX "IDX_3cbd3eea30bc62ebc91c276e73" ON "bridge_transfer" ("sender") `) await db.query(`CREATE INDEX "IDX_54f4abe8f2eb80204637ce328e" ON "bridge_transfer" ("receiver") `) await db.query(`CREATE INDEX "IDX_12fa326ec2496a964493f2a7bc" ON "bridge_transfer" ("chain_in") `) - await db.query(`CREATE TABLE "bridge_transfer_state" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "state" integer NOT NULL, CONSTRAINT "PK_00ca26906171755e6fc01882c68" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "bridge_transfer_state" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "state" integer NOT NULL, CONSTRAINT "PK_00ca26906171755e6fc01882c68" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_374659ae3bd149042388e132be" ON "bridge_transfer_state" ("timestamp") `) await db.query(`CREATE INDEX "IDX_74f93b10ec560e63792dcc877e" ON "bridge_transfer_state" ("block_number") `) + await db.query(`CREATE INDEX "IDX_df99bdbf11d4ed57bec0e6c511" ON "bridge_transfer_state" ("tx_hash") `) await db.query(`CREATE TABLE "oeth" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, CONSTRAINT "PK_de1d885501070dbd1ab6f8577ba" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_5b81a67229bac2d68e0dc92cc4" ON "oeth" ("timestamp") `) await db.query(`CREATE INDEX "IDX_408e5f79f83093aa5cf2b0ea32" ON "oeth" ("block_number") `) @@ -150,6 +151,11 @@ module.exports = class Data1713394436715 { await db.query(`CREATE TABLE "ogv_daily_stat" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "total_supply" numeric NOT NULL, "total_supply_usd" numeric NOT NULL, "total_staked" numeric NOT NULL, "trading_volume_usd" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "price_usd" numeric NOT NULL, "holders_over_threshold" integer NOT NULL, CONSTRAINT "PK_69bc6d866711151e2712481794c" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_c974bde87107cacae6d3654972" ON "ogv_daily_stat" ("block_number") `) await db.query(`CREATE INDEX "IDX_b62fa80951183bb0acf8a5e8b9" ON "ogv_daily_stat" ("timestamp") `) + await db.query(`CREATE TABLE "o_token_vault" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "total_value" numeric NOT NULL, CONSTRAINT "PK_90bb3a4df699017439cd6a44a0c" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_091cfbe0d977006e05144bd1fe" ON "o_token_vault" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_fa92b36d011441a02d9a231860" ON "o_token_vault" ("block_number") `) + await db.query(`CREATE INDEX "IDX_6990f4cd71ea8db6d9d27a0db5" ON "o_token_vault" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_3a2bfb2808c1d7cbb0a568910c" ON "o_token_vault" ("address") `) await db.query(`CREATE TABLE "ousd" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, CONSTRAINT "PK_acecae4a20bc14b22d9f6738d8d" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_c8d1e285213b445b088805ac7c" ON "ousd" ("timestamp") `) await db.query(`CREATE INDEX "IDX_806949dd853b7e8acab5d03b81" ON "ousd" ("block_number") `) @@ -309,6 +315,7 @@ module.exports = class Data1713394436715 { await db.query(`DROP TABLE "bridge_transfer_state"`) await db.query(`DROP INDEX "public"."IDX_374659ae3bd149042388e132be"`) await db.query(`DROP INDEX "public"."IDX_74f93b10ec560e63792dcc877e"`) + await db.query(`DROP INDEX "public"."IDX_df99bdbf11d4ed57bec0e6c511"`) await db.query(`DROP TABLE "oeth"`) await db.query(`DROP INDEX "public"."IDX_5b81a67229bac2d68e0dc92cc4"`) await db.query(`DROP INDEX "public"."IDX_408e5f79f83093aa5cf2b0ea32"`) @@ -387,6 +394,11 @@ module.exports = class Data1713394436715 { await db.query(`DROP TABLE "ogv_daily_stat"`) await db.query(`DROP INDEX "public"."IDX_c974bde87107cacae6d3654972"`) await db.query(`DROP INDEX "public"."IDX_b62fa80951183bb0acf8a5e8b9"`) + await db.query(`DROP TABLE "o_token_vault"`) + await db.query(`DROP INDEX "public"."IDX_091cfbe0d977006e05144bd1fe"`) + await db.query(`DROP INDEX "public"."IDX_fa92b36d011441a02d9a231860"`) + await db.query(`DROP INDEX "public"."IDX_6990f4cd71ea8db6d9d27a0db5"`) + await db.query(`DROP INDEX "public"."IDX_3a2bfb2808c1d7cbb0a568910c"`) await db.query(`DROP TABLE "ousd"`) await db.query(`DROP INDEX "public"."IDX_c8d1e285213b445b088805ac7c"`) await db.query(`DROP INDEX "public"."IDX_806949dd853b7e8acab5d03b81"`) diff --git a/graphql.config.yml b/graphql.config.yml index 54059e8c..c6964b92 100644 --- a/graphql.config.yml +++ b/graphql.config.yml @@ -5,6 +5,11 @@ projects: schema: schema-general.graphql include: - types.graphql + otoken: + schema: schema-otoken.graphql + include: + - schema-general.graphql + - types.graphql oeth: schema: schema-oeth.graphql include: diff --git a/schema-general.graphql b/schema-general.graphql index 96c19e6a..bd16f2b5 100644 --- a/schema-general.graphql +++ b/schema-general.graphql @@ -277,4 +277,4 @@ type BridgeTransferState @entity { blockNumber: Int! @index txHash: String! @index state: Int! -} \ No newline at end of file +} diff --git a/schema-oeth.graphql b/schema-oeth.graphql index 30900392..344d01fb 100644 --- a/schema-oeth.graphql +++ b/schema-oeth.graphql @@ -295,4 +295,4 @@ type OETHActivity @entity { fromSymbol: String toSymbol: String amount: BigInt -} \ No newline at end of file +} diff --git a/schema-ogv.graphql b/schema-ogv.graphql index 8a37fdba..fc39ed88 100644 --- a/schema-ogv.graphql +++ b/schema-ogv.graphql @@ -115,4 +115,4 @@ type OGVDailyStat @entity { marketCapUSD: Float! priceUSD: Float! holdersOverThreshold: Int! -} \ No newline at end of file +} diff --git a/schema-otoken.graphql b/schema-otoken.graphql new file mode 100644 index 00000000..74d6f95d --- /dev/null +++ b/schema-otoken.graphql @@ -0,0 +1,8 @@ +type OTokenVault @entity { + id: ID! + timestamp: DateTime! @index + blockNumber: Int! @index + chainId: Int! @index + address: String! @index + totalValue: BigInt! +} diff --git a/schema.graphql b/schema.graphql index 3400c422..330fcd34 100644 --- a/schema.graphql +++ b/schema.graphql @@ -277,8 +277,10 @@ type BridgeTransferState @entity { id: ID! timestamp: DateTime! @index blockNumber: Int! @index + txHash: String! @index state: Int! -}""" +} +""" The OETH entity tracks the change in total supply of OETH over time. """ type OETH @entity { @@ -575,7 +577,8 @@ type OETHActivity @entity { fromSymbol: String toSymbol: String amount: BigInt -}type OGV @entity { +} +type OGV @entity { id: ID! timestamp: DateTime! @index blockNumber: Int! @index @@ -692,7 +695,16 @@ type OGVDailyStat @entity { marketCapUSD: Float! priceUSD: Float! holdersOverThreshold: Int! -}""" +} +type OTokenVault @entity { + id: ID! + timestamp: DateTime! @index + blockNumber: Int! @index + chainId: Int! @index + address: String! @index + totalValue: BigInt! +} +""" The OUSD entity tracks the change in total supply of OUSD over time. """ type OUSD @entity { diff --git a/src/main.ts b/src/main.ts index f14b526b..6a10002e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,5 +12,5 @@ import ogv from './main-ogv' run(mainnet) run(arbitrum) run(oeth) -run(ogv) +// run(ogv) // run(ousd) diff --git a/src/model/generated/bridgeTransferState.model.ts b/src/model/generated/bridgeTransferState.model.ts index 933b4663..a9c7a829 100644 --- a/src/model/generated/bridgeTransferState.model.ts +++ b/src/model/generated/bridgeTransferState.model.ts @@ -17,6 +17,10 @@ export class BridgeTransferState { @Column_("int4", {nullable: false}) blockNumber!: number + @Index_() + @Column_("text", {nullable: false}) + txHash!: string + @Column_("int4", {nullable: false}) state!: number } diff --git a/src/model/generated/index.ts b/src/model/generated/index.ts index 4ca4dcce..a52ee4c9 100644 --- a/src/model/generated/index.ts +++ b/src/model/generated/index.ts @@ -55,6 +55,7 @@ export * from "./_ogvProposalState" export * from "./ogvProposalVote.model" export * from "./_ogvVoteType" export * from "./ogvDailyStat.model" +export * from "./oTokenVault.model" export * from "./ousd.model" export * from "./ousdAsset.model" export * from "./ousdAddress.model" diff --git a/src/model/generated/oTokenVault.model.ts b/src/model/generated/oTokenVault.model.ts new file mode 100644 index 00000000..9f45ec80 --- /dev/null +++ b/src/model/generated/oTokenVault.model.ts @@ -0,0 +1,31 @@ +import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_} from "typeorm" +import * as marshal from "./marshal" + +@Entity_() +export class OTokenVault { + constructor(props?: Partial) { + Object.assign(this, props) + } + + @PrimaryColumn_() + id!: string + + @Index_() + @Column_("timestamp with time zone", {nullable: false}) + timestamp!: Date + + @Index_() + @Column_("int4", {nullable: false}) + blockNumber!: number + + @Index_() + @Column_("int4", {nullable: false}) + chainId!: number + + @Index_() + @Column_("text", {nullable: false}) + address!: string + + @Column_("numeric", {transformer: marshal.bigintTransformer, nullable: false}) + totalValue!: bigint +} diff --git a/src/oeth/processors/ccip.ts b/src/oeth/processors/ccip.ts index dfecd467..35c6895b 100644 --- a/src/oeth/processors/ccip.ts +++ b/src/oeth/processors/ccip.ts @@ -104,6 +104,7 @@ export const ccip = (params: { chainId: 1 | 42161 }) => { id: data.messageId, blockNumber: block.header.height, timestamp: new Date(block.header.timestamp), + txHash: log.transactionHash, state: data.state, }) result.bridgeTransferStates.set(state.id, state) diff --git a/src/oeth/processors/oeth.ts b/src/oeth/processors/oeth.ts index b33c93cc..98cd003f 100644 --- a/src/oeth/processors/oeth.ts +++ b/src/oeth/processors/oeth.ts @@ -35,6 +35,7 @@ export const setup = createOTokenSetup({ }) export const process = createOTokenProcessor({ + from, OTOKEN_ADDRESS: OETH_ADDRESS, WOTOKEN_ADDRESS: WOETH_ADDRESS, OTOKEN_VAULT_ADDRESS: OETH_VAULT_ADDRESS, diff --git a/src/ousd/processors/ousd/ousd.ts b/src/ousd/processors/ousd/ousd.ts index d11cd77b..23754266 100644 --- a/src/ousd/processors/ousd/ousd.ts +++ b/src/ousd/processors/ousd/ousd.ts @@ -28,6 +28,7 @@ export const setup = createOTokenSetup({ }) export const process = createOTokenProcessor({ + from, Upgrade_CreditsBalanceOfHighRes: 13533937, // https://etherscan.io/tx/0xc9b6fc6a4fad18dad197ff7d0636f74bf066671d75656849a1c45122e00d54cf OTOKEN_ADDRESS: OUSD_ADDRESS, OTOKEN_VAULT_ADDRESS: OUSD_VAULT_ADDRESS, diff --git a/src/templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts index 1f02d7cd..2335b7b9 100644 --- a/src/templates/otoken/otoken.ts +++ b/src/templates/otoken/otoken.ts @@ -14,6 +14,7 @@ import { OETHHistory, OETHRebase, OETHRebaseOption, + OTokenVault, OUSD, OUSDAPY, OUSDActivity, @@ -33,6 +34,7 @@ import { import { EvmBatchProcessor } from '@subsquid/evm-processor' import { type Transaction, activityFromTx } from '@utils/activityFromTx' import { ADDRESS_ZERO } from '@utils/addresses' +import { blockFrequencyUpdater } from '@utils/blockFrequencyUpdater' import { DECIMALS_18 } from '@utils/constants' import { multicall } from '@utils/multicall' import { EntityClassT, InstanceTypeOfConstructor } from '@utils/type' @@ -104,6 +106,7 @@ export const createOTokenSetup = } export const createOTokenProcessor = (params: { + from: number Upgrade_CreditsBalanceOfHighRes?: number OTOKEN_ADDRESS: string WOTOKEN_ADDRESS?: string @@ -128,6 +131,7 @@ export const createOTokenProcessor = (params: { rebaseOptions: InstanceTypeOfConstructor[] apies: InstanceTypeOfConstructor[] activity: InstanceTypeOfConstructor[] + vaults: OTokenVault[] lastYieldDistributionEvent?: { fee: bigint yield: bigint @@ -144,6 +148,7 @@ export const createOTokenProcessor = (params: { idMap.set(partialId, nextId) return `${partialId}-${nextId}` } + const frequencyUpdate = blockFrequencyUpdater({ from: params.from }) const process = async (ctx: Context) => { idMap = new Map() @@ -185,6 +190,7 @@ export const createOTokenProcessor = (params: { rebaseOptions: [], apies: [], activity: [], + vaults: [], } for (const block of ctx.blocks) { @@ -200,6 +206,24 @@ export const createOTokenProcessor = (params: { await processActivity(ctx, result, block) } + await frequencyUpdate(ctx, async (ctx, block) => { + const vaultContract = new otokenVault.Contract( + ctx, + block.header, + params.OTOKEN_VAULT_ADDRESS, + ) + result.vaults.push( + new OTokenVault({ + id: `${ctx.chain.id}-${block.header.height}-${params.OTOKEN_VAULT_ADDRESS}`, + blockNumber: block.header.height, + timestamp: new Date(block.header.timestamp), + chainId: ctx.chain.id, + address: params.OTOKEN_VAULT_ADDRESS, + totalValue: await vaultContract.totalValue(), + }), + ) + }) + if (owners) { await ctx.store.upsert([...owners.values()]) } @@ -211,6 +235,7 @@ export const createOTokenProcessor = (params: { ctx.store.insert(result.rebases), ctx.store.insert(result.rebaseOptions), ctx.store.insert(result.activity), + ctx.store.insert(result.vaults), ]) } From 18f521c55873d9ccf4c99d791163a3e418f58114 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Sat, 20 Apr 2024 09:33:15 -0700 Subject: [PATCH 20/20] fix vault processing & add curve back --- src/main-mainnet.ts | 3 ++- src/oeth/processors/oeth.ts | 1 + src/ousd/processors/ousd/ousd.ts | 1 + src/templates/otoken/otoken.ts | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index a94a8bea..9effac7d 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -4,12 +4,13 @@ import { run } from '@processor' import * as exchangeRates from '@shared/post-processors/exchange-rates' import { processStatus } from '@templates/processor-status' +import * as curve from './mainnet/processors/curve' import { erc20s } from './mainnet/processors/erc20s' import * as validate from './mainnet/validators/validate-mainnet' export const processor = { stateSchema: 'mainnet-processor', - processors: [...erc20s()], + processors: [curve, ...erc20s()], postProcessors: [exchangeRates, processStatus('other')], validators: [validate], } diff --git a/src/oeth/processors/oeth.ts b/src/oeth/processors/oeth.ts index 98cd003f..f42e2218 100644 --- a/src/oeth/processors/oeth.ts +++ b/src/oeth/processors/oeth.ts @@ -36,6 +36,7 @@ export const setup = createOTokenSetup({ export const process = createOTokenProcessor({ from, + vaultFrom: 17084107, OTOKEN_ADDRESS: OETH_ADDRESS, WOTOKEN_ADDRESS: WOETH_ADDRESS, OTOKEN_VAULT_ADDRESS: OETH_VAULT_ADDRESS, diff --git a/src/ousd/processors/ousd/ousd.ts b/src/ousd/processors/ousd/ousd.ts index 23754266..0c852798 100644 --- a/src/ousd/processors/ousd/ousd.ts +++ b/src/ousd/processors/ousd/ousd.ts @@ -29,6 +29,7 @@ export const setup = createOTokenSetup({ export const process = createOTokenProcessor({ from, + vaultFrom: 11596942, Upgrade_CreditsBalanceOfHighRes: 13533937, // https://etherscan.io/tx/0xc9b6fc6a4fad18dad197ff7d0636f74bf066671d75656849a1c45122e00d54cf OTOKEN_ADDRESS: OUSD_ADDRESS, OTOKEN_VAULT_ADDRESS: OUSD_VAULT_ADDRESS, diff --git a/src/templates/otoken/otoken.ts b/src/templates/otoken/otoken.ts index 2335b7b9..0a60a6c3 100644 --- a/src/templates/otoken/otoken.ts +++ b/src/templates/otoken/otoken.ts @@ -107,6 +107,7 @@ export const createOTokenSetup = export const createOTokenProcessor = (params: { from: number + vaultFrom: number Upgrade_CreditsBalanceOfHighRes?: number OTOKEN_ADDRESS: string WOTOKEN_ADDRESS?: string @@ -148,7 +149,7 @@ export const createOTokenProcessor = (params: { idMap.set(partialId, nextId) return `${partialId}-${nextId}` } - const frequencyUpdate = blockFrequencyUpdater({ from: params.from }) + const frequencyUpdate = blockFrequencyUpdater({ from: params.vaultFrom }) const process = async (ctx: Context) => { idMap = new Map()