From c75be57146c584e9322d65bb9c49f668a0df80af Mon Sep 17 00:00:00 2001 From: nikugogoi Date: Wed, 1 Dec 2021 16:18:38 +0530 Subject: [PATCH] Get block size using JSON RPC API from ipld-eth-server (#68) --- .../src/templates/checkpoint-template.handlebars | 2 +- .../src/templates/export-state-template.handlebars | 2 +- .../codegen/src/templates/fill-template.handlebars | 2 +- .../src/templates/import-state-template.handlebars | 2 +- .../src/templates/inspect-cid-template.handlebars | 2 +- .../src/templates/job-runner-template.handlebars | 2 +- .../src/templates/reset-state-template.handlebars | 2 +- .../codegen/src/templates/server-template.handlebars | 2 +- .../src/templates/watch-contract-template.handlebars | 2 +- packages/eden-watcher/src/cli/checkpoint.ts | 2 +- packages/eden-watcher/src/cli/export-state.ts | 2 +- packages/eden-watcher/src/cli/import-state.ts | 2 +- packages/eden-watcher/src/cli/inspect-cid.ts | 2 +- packages/eden-watcher/src/cli/reset-cmds/state.ts | 2 +- packages/eden-watcher/src/cli/watch-contract.ts | 2 +- packages/eden-watcher/src/fill.ts | 2 +- packages/eden-watcher/src/job-runner.ts | 2 +- packages/eden-watcher/src/server.ts | 2 +- packages/graph-node/src/utils.ts | 3 ++- packages/graph-node/src/watcher.ts | 10 ++++++---- packages/graph-test-watcher/src/cli/checkpoint.ts | 2 +- packages/graph-test-watcher/src/cli/export-state.ts | 2 +- packages/graph-test-watcher/src/cli/import-state.ts | 2 +- packages/graph-test-watcher/src/cli/inspect-cid.ts | 2 +- .../graph-test-watcher/src/cli/reset-cmds/state.ts | 2 +- .../graph-test-watcher/src/cli/watch-contract.ts | 2 +- packages/graph-test-watcher/src/fill.ts | 2 +- packages/graph-test-watcher/src/job-runner.ts | 2 +- packages/graph-test-watcher/src/server.ts | 2 +- packages/util/src/misc.ts | 12 ++++++++---- 30 files changed, 43 insertions(+), 36 deletions(-) diff --git a/packages/codegen/src/templates/checkpoint-template.handlebars b/packages/codegen/src/templates/checkpoint-template.handlebars index 5d48dacd..2f2b3c86 100644 --- a/packages/codegen/src/templates/checkpoint-template.handlebars +++ b/packages/codegen/src/templates/checkpoint-template.handlebars @@ -48,7 +48,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/codegen/src/templates/export-state-template.handlebars b/packages/codegen/src/templates/export-state-template.handlebars index 73b6e624..f2ae170a 100644 --- a/packages/codegen/src/templates/export-state-template.handlebars +++ b/packages/codegen/src/templates/export-state-template.handlebars @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/codegen/src/templates/fill-template.handlebars b/packages/codegen/src/templates/fill-template.handlebars index 0c3a5408..1c6b6ee6 100644 --- a/packages/codegen/src/templates/fill-template.handlebars +++ b/packages/codegen/src/templates/fill-template.handlebars @@ -51,7 +51,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/codegen/src/templates/import-state-template.handlebars b/packages/codegen/src/templates/import-state-template.handlebars index b98e5997..b8985490 100644 --- a/packages/codegen/src/templates/import-state-template.handlebars +++ b/packages/codegen/src/templates/import-state-template.handlebars @@ -50,7 +50,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/codegen/src/templates/inspect-cid-template.handlebars b/packages/codegen/src/templates/inspect-cid-template.handlebars index 7c91e59d..501ad8ac 100644 --- a/packages/codegen/src/templates/inspect-cid-template.handlebars +++ b/packages/codegen/src/templates/inspect-cid-template.handlebars @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/codegen/src/templates/job-runner-template.handlebars b/packages/codegen/src/templates/job-runner-template.handlebars index 18953153..a0231d5d 100644 --- a/packages/codegen/src/templates/job-runner-template.handlebars +++ b/packages/codegen/src/templates/job-runner-template.handlebars @@ -133,7 +133,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/codegen/src/templates/reset-state-template.handlebars b/packages/codegen/src/templates/reset-state-template.handlebars index b9dbdeeb..023fd22e 100644 --- a/packages/codegen/src/templates/reset-state-template.handlebars +++ b/packages/codegen/src/templates/reset-state-template.handlebars @@ -42,7 +42,7 @@ export const handler = async (argv: any): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/codegen/src/templates/server-template.handlebars b/packages/codegen/src/templates/server-template.handlebars index aec430ec..cd277f19 100644 --- a/packages/codegen/src/templates/server-template.handlebars +++ b/packages/codegen/src/templates/server-template.handlebars @@ -46,7 +46,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/codegen/src/templates/watch-contract-template.handlebars b/packages/codegen/src/templates/watch-contract-template.handlebars index 8b80c586..431f2c33 100644 --- a/packages/codegen/src/templates/watch-contract-template.handlebars +++ b/packages/codegen/src/templates/watch-contract-template.handlebars @@ -60,7 +60,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const indexer = new Indexer(config.server, db, ethClient, postgraphileClient, ethProvider, graphWatcher); diff --git a/packages/eden-watcher/src/cli/checkpoint.ts b/packages/eden-watcher/src/cli/checkpoint.ts index f6f03b32..8d8af876 100644 --- a/packages/eden-watcher/src/cli/checkpoint.ts +++ b/packages/eden-watcher/src/cli/checkpoint.ts @@ -49,7 +49,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/cli/export-state.ts b/packages/eden-watcher/src/cli/export-state.ts index 9a7c3249..fd76075c 100644 --- a/packages/eden-watcher/src/cli/export-state.ts +++ b/packages/eden-watcher/src/cli/export-state.ts @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/cli/import-state.ts b/packages/eden-watcher/src/cli/import-state.ts index aa2426c6..515e1c7a 100644 --- a/packages/eden-watcher/src/cli/import-state.ts +++ b/packages/eden-watcher/src/cli/import-state.ts @@ -50,7 +50,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/eden-watcher/src/cli/inspect-cid.ts b/packages/eden-watcher/src/cli/inspect-cid.ts index 14c1ebf2..60271cf8 100644 --- a/packages/eden-watcher/src/cli/inspect-cid.ts +++ b/packages/eden-watcher/src/cli/inspect-cid.ts @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/cli/reset-cmds/state.ts b/packages/eden-watcher/src/cli/reset-cmds/state.ts index 3f60696d..3025f631 100644 --- a/packages/eden-watcher/src/cli/reset-cmds/state.ts +++ b/packages/eden-watcher/src/cli/reset-cmds/state.ts @@ -56,7 +56,7 @@ export const handler = async (argv: any): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/cli/watch-contract.ts b/packages/eden-watcher/src/cli/watch-contract.ts index c58a4785..a42dd2c9 100644 --- a/packages/eden-watcher/src/cli/watch-contract.ts +++ b/packages/eden-watcher/src/cli/watch-contract.ts @@ -62,7 +62,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/fill.ts b/packages/eden-watcher/src/fill.ts index 24069259..325d611f 100644 --- a/packages/eden-watcher/src/fill.ts +++ b/packages/eden-watcher/src/fill.ts @@ -51,7 +51,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/job-runner.ts b/packages/eden-watcher/src/job-runner.ts index fbc029be..8f600ecc 100644 --- a/packages/eden-watcher/src/job-runner.ts +++ b/packages/eden-watcher/src/job-runner.ts @@ -130,7 +130,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/eden-watcher/src/server.ts b/packages/eden-watcher/src/server.ts index acc268f0..b4992cb4 100644 --- a/packages/eden-watcher/src/server.ts +++ b/packages/eden-watcher/src/server.ts @@ -46,7 +46,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/graph-node/src/utils.ts b/packages/graph-node/src/utils.ts index 15afe8a3..b8077ef9 100644 --- a/packages/graph-node/src/utils.ts +++ b/packages/graph-node/src/utils.ts @@ -39,6 +39,7 @@ export interface Block { gasLimit: string; gasUsed: string; author: string; + size: string; } export interface EventData { @@ -333,7 +334,7 @@ export const createBlock = async (instanceExports: any, blockData: Block): Promi const authorStringPtr = await __newString(blockData.author); const authorPtr = await Address.fromString(authorStringPtr); - const sizePtr = await __newString('0'); + const sizePtr = await __newString(blockData.size); const size = await BigInt.fromString(sizePtr); // Missing fields from watcher in block data: diff --git a/packages/graph-node/src/watcher.ts b/packages/graph-node/src/watcher.ts index db175811..38b765ab 100644 --- a/packages/graph-node/src/watcher.ts +++ b/packages/graph-node/src/watcher.ts @@ -7,7 +7,7 @@ import 'reflect-metadata'; import debug from 'debug'; import path from 'path'; import fs from 'fs'; -import { ContractInterface, utils } from 'ethers'; +import { ContractInterface, utils, providers } from 'ethers'; import { ResultObject } from '@vulcanize/assemblyscript/lib/loader'; import { EthClient } from '@vulcanize/ipld-eth-client'; @@ -28,6 +28,7 @@ export class GraphWatcher { _database: Database; _indexer?: IndexerInterface; _postgraphileClient: EthClient; + _ethProvider: providers.BaseProvider; _subgraphPath: string; _dataSources: any[] = []; _dataSourceMap: { [key: string]: DataSource } = {}; @@ -36,9 +37,10 @@ export class GraphWatcher { event: {} } - constructor (database: Database, postgraphileClient: EthClient, subgraphPath: string) { + constructor (database: Database, postgraphileClient: EthClient, ethProvider: providers.BaseProvider, subgraphPath: string) { this._database = database; this._postgraphileClient = postgraphileClient; + this._ethProvider = ethProvider; this._subgraphPath = subgraphPath; } @@ -109,7 +111,7 @@ export class GraphWatcher { const { contract, event, eventSignature, block, tx, eventIndex } = eventData; // TODO: Use blockData fetched in handleBlock. - const blockData = await getFullBlock(this._postgraphileClient, block.hash); + const blockData = await getFullBlock(this._postgraphileClient, this._ethProvider, block.hash); this._context.event.block = blockData; @@ -148,7 +150,7 @@ export class GraphWatcher { } async handleBlock (blockHash: string) { - const blockData = await getFullBlock(this._postgraphileClient, blockHash); + const blockData = await getFullBlock(this._postgraphileClient, this._ethProvider, blockHash); this._context.event.block = blockData; diff --git a/packages/graph-test-watcher/src/cli/checkpoint.ts b/packages/graph-test-watcher/src/cli/checkpoint.ts index f6f03b32..8d8af876 100644 --- a/packages/graph-test-watcher/src/cli/checkpoint.ts +++ b/packages/graph-test-watcher/src/cli/checkpoint.ts @@ -49,7 +49,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/cli/export-state.ts b/packages/graph-test-watcher/src/cli/export-state.ts index 9a7c3249..fd76075c 100644 --- a/packages/graph-test-watcher/src/cli/export-state.ts +++ b/packages/graph-test-watcher/src/cli/export-state.ts @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/cli/import-state.ts b/packages/graph-test-watcher/src/cli/import-state.ts index aa2426c6..515e1c7a 100644 --- a/packages/graph-test-watcher/src/cli/import-state.ts +++ b/packages/graph-test-watcher/src/cli/import-state.ts @@ -50,7 +50,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/graph-test-watcher/src/cli/inspect-cid.ts b/packages/graph-test-watcher/src/cli/inspect-cid.ts index 14c1ebf2..60271cf8 100644 --- a/packages/graph-test-watcher/src/cli/inspect-cid.ts +++ b/packages/graph-test-watcher/src/cli/inspect-cid.ts @@ -46,7 +46,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/cli/reset-cmds/state.ts b/packages/graph-test-watcher/src/cli/reset-cmds/state.ts index 955293c9..0db95a8e 100644 --- a/packages/graph-test-watcher/src/cli/reset-cmds/state.ts +++ b/packages/graph-test-watcher/src/cli/reset-cmds/state.ts @@ -44,7 +44,7 @@ export const handler = async (argv: any): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/cli/watch-contract.ts b/packages/graph-test-watcher/src/cli/watch-contract.ts index c58a4785..a42dd2c9 100644 --- a/packages/graph-test-watcher/src/cli/watch-contract.ts +++ b/packages/graph-test-watcher/src/cli/watch-contract.ts @@ -62,7 +62,7 @@ const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/fill.ts b/packages/graph-test-watcher/src/fill.ts index 24069259..325d611f 100644 --- a/packages/graph-test-watcher/src/fill.ts +++ b/packages/graph-test-watcher/src/fill.ts @@ -51,7 +51,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/job-runner.ts b/packages/graph-test-watcher/src/job-runner.ts index fbc029be..8f600ecc 100644 --- a/packages/graph-test-watcher/src/job-runner.ts +++ b/packages/graph-test-watcher/src/job-runner.ts @@ -130,7 +130,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); const jobQueueConfig = config.jobQueue; assert(jobQueueConfig, 'Missing job queue config'); diff --git a/packages/graph-test-watcher/src/server.ts b/packages/graph-test-watcher/src/server.ts index acc268f0..b4992cb4 100644 --- a/packages/graph-test-watcher/src/server.ts +++ b/packages/graph-test-watcher/src/server.ts @@ -46,7 +46,7 @@ export const main = async (): Promise => { const graphDb = new GraphDatabase(config.database, path.resolve(__dirname, 'entity/*')); await graphDb.init(); - const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, config.server.subgraphPath); + const graphWatcher = new GraphWatcher(graphDb, postgraphileClient, ethProvider, config.server.subgraphPath); // Note: In-memory pubsub works fine for now, as each watcher is a single process anyway. // Later: https://www.apollographql.com/docs/apollo-server/data/subscriptions/#production-pubsub-libraries diff --git a/packages/util/src/misc.ts b/packages/util/src/misc.ts index 93b753b2..299c2d19 100644 --- a/packages/util/src/misc.ts +++ b/packages/util/src/misc.ts @@ -173,7 +173,7 @@ class CustomFormatter extends providers.Formatter { } } -export const getFullBlock = async (ethClient: EthClient, blockHash: string): Promise => { +export const getFullBlock = async (ethClient: EthClient, ethProvider: providers.BaseProvider, blockHash: string): Promise => { const { allEthHeaderCids: { nodes: [ @@ -188,8 +188,11 @@ export const getFullBlock = async (ethClient: EthClient, blockHash: string): Pro const header = EthDecoder.decodeHeader(EthDecoder.decodeData(fullBlock.blockByMhKey.data)); assert(header); - // TODO: - // 1. Calculate size + // TODO: Calculate size from rlp encoded data provided by postgraphile. + // Get block info from JSON RPC API provided by ipld-eth-server. + const provider = ethProvider as providers.JsonRpcProvider; + const { size } = await provider.send('eth_getBlockByHash', [blockHash, false]); + return { cid: fullBlock.cid, blockNumber: fullBlock.blockNumber, @@ -204,6 +207,7 @@ export const getFullBlock = async (ethClient: EthClient, blockHash: string): Pro difficulty: header.Difficulty.toString(), gasLimit: header.GasLimit.toString(), gasUsed: header.GasUsed.toString(), - author: header.Beneficiary + author: header.Beneficiary, + size: BigInt(size).toString() }; };