wormhole-explorer/blockchain-watcher/src/domain/repositories.ts

59 lines
1.8 KiB
TypeScript
Raw Normal View History

import { RunPollingJob } from "./actions/RunPollingJob";
import {
EvmBlock,
EvmLog,
EvmLogFilter,
EvmTag,
Handler,
JobDefinition,
ReceiptTransaction,
solana,
} from "./entities";
[Blockchain Watcher] Emit LogMessagePublished for Solana (#809) * adding gen-relayer watcher code to branch * folder rename * adding some new abstract types for processor redesign * added first cut of new process manager logic * large refactoring to environment configuration * Add basic default config * prettier run * modifying event handler interface * abstract handler typing changes * Blockchain watcher: adding domain and infra layers (#786) * reorg domain-infra * watch evm blocks action * adding evm log parser * wider prettier * renaming watch action * adding doc * persist latest metadata * gh action for blockchain-watcher * adding log-message-published mapper * deps: remove peers and nodemon * adding handler for LogMessagePublished * added parser for log message published --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> * Blockchain Watcher: ethereum -> sns implementation (#790) * evm block repo implementation * adding sns publisher * adding external config and initial runner * fix: start from latest if no fromBlock configured * feat: add dryRun option * fix: handler filtering and eth_getLogs filter payload * local e2e * actual sns arns for testnet * smaller docker image * deployment changes * [Blockchain Watcher] Apply missing formatting for log message published (#791) * Apply missing formatting for log message published * keep extracting * emitterAddress -> emitter * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * [Blockchain watcher] Adding light observability (#793) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * better error logs * wait when no block available * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * group actions per platform * [Blockchain Watcher] Add StartJob action + rate limit handling (#799) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * adding poll solana txs action * adding solana repo implementation * solana: mapping to logmsgpublished * fixing solana mapper test * updating readme * adding some metrics * adding solana worker * adding finality param to get solana block * minor changes - using confirmed for solana log extraction * updating version * add solana env var * [Blockchain Watcher] Feature-813/fix-coverage-report (#815) * Fix coverage report * Run prettier * Rollback global coverage value * Set global coverage value to 55 * Add github PR template * Run prettier * Rename github template file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * private solana urls as secret * adding prod cfg files * Change repository name and cretae error foulder (#819) * Change repository name and cretae error foulder * Rename SolanaFailure file * Rename SolanaFailure file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * passing node_options for solana * adding missing envs templates * cru * ratelimited solana client + increase coverage * [Blockchain Watcher] Feature 817/add hexagonal prefix (#824) * Put hexadecimal prefix * Create id variable * Add error log * Add error log * Remove bigint in getBlock params --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * fix never ending solana jobs * adding job counter metric * solana: add retry handling for 429s * cleanup * remove duplicated tests * cru + item count * minor readme update + do not use private solana rpc * fix items counter * fix solana job programID for devnet * log basic repo info * solana: passing finality everywhere * delete unnecesary files * adjusting solana cfgs * [Blockchain Watcher] Fix/re order some files (#828) * fix/re-order-some-files * run prettier * Run prettier * Resolve comment in PR * Remove import * Resolve comment * Remove prefix in sns log --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Julian <52217955+julianmerlo95@users.noreply.github.com> Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local>
2023-11-30 07:05:43 -08:00
import { ConfirmedSignatureInfo } from "./entities/solana";
import { Fallible, SolanaFailure } from "./errors";
export interface EvmBlockRepository {
getBlockHeight(chain: string, finality: string): Promise<bigint>;
getBlocks(chain: string, blockNumbers: Set<bigint>): Promise<Record<string, EvmBlock>>;
getFilteredLogs(chain: string, filter: EvmLogFilter): Promise<EvmLog[]>;
getTransactionReceipt(
chain: string,
hashNumbers: Set<string>
): Promise<Record<string, ReceiptTransaction>>;
getBlock(
chain: string,
blockNumberOrTag: EvmTag | bigint,
isTransactionsPresent: boolean
): Promise<EvmBlock>;
}
[Blockchain Watcher] Emit LogMessagePublished for Solana (#809) * adding gen-relayer watcher code to branch * folder rename * adding some new abstract types for processor redesign * added first cut of new process manager logic * large refactoring to environment configuration * Add basic default config * prettier run * modifying event handler interface * abstract handler typing changes * Blockchain watcher: adding domain and infra layers (#786) * reorg domain-infra * watch evm blocks action * adding evm log parser * wider prettier * renaming watch action * adding doc * persist latest metadata * gh action for blockchain-watcher * adding log-message-published mapper * deps: remove peers and nodemon * adding handler for LogMessagePublished * added parser for log message published --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> * Blockchain Watcher: ethereum -> sns implementation (#790) * evm block repo implementation * adding sns publisher * adding external config and initial runner * fix: start from latest if no fromBlock configured * feat: add dryRun option * fix: handler filtering and eth_getLogs filter payload * local e2e * actual sns arns for testnet * smaller docker image * deployment changes * [Blockchain Watcher] Apply missing formatting for log message published (#791) * Apply missing formatting for log message published * keep extracting * emitterAddress -> emitter * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * [Blockchain watcher] Adding light observability (#793) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * better error logs * wait when no block available * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * group actions per platform * [Blockchain Watcher] Add StartJob action + rate limit handling (#799) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * adding poll solana txs action * adding solana repo implementation * solana: mapping to logmsgpublished * fixing solana mapper test * updating readme * adding some metrics * adding solana worker * adding finality param to get solana block * minor changes - using confirmed for solana log extraction * updating version * add solana env var * [Blockchain Watcher] Feature-813/fix-coverage-report (#815) * Fix coverage report * Run prettier * Rollback global coverage value * Set global coverage value to 55 * Add github PR template * Run prettier * Rename github template file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * private solana urls as secret * adding prod cfg files * Change repository name and cretae error foulder (#819) * Change repository name and cretae error foulder * Rename SolanaFailure file * Rename SolanaFailure file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * passing node_options for solana * adding missing envs templates * cru * ratelimited solana client + increase coverage * [Blockchain Watcher] Feature 817/add hexagonal prefix (#824) * Put hexadecimal prefix * Create id variable * Add error log * Add error log * Remove bigint in getBlock params --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * fix never ending solana jobs * adding job counter metric * solana: add retry handling for 429s * cleanup * remove duplicated tests * cru + item count * minor readme update + do not use private solana rpc * fix items counter * fix solana job programID for devnet * log basic repo info * solana: passing finality everywhere * delete unnecesary files * adjusting solana cfgs * [Blockchain Watcher] Fix/re order some files (#828) * fix/re-order-some-files * run prettier * Run prettier * Resolve comment in PR * Remove import * Resolve comment * Remove prefix in sns log --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Julian <52217955+julianmerlo95@users.noreply.github.com> Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local>
2023-11-30 07:05:43 -08:00
export interface SolanaSlotRepository {
getLatestSlot(commitment: string): Promise<number>;
getBlock(slot: number, finality?: string): Promise<Fallible<solana.Block, SolanaFailure>>;
getSignaturesForAddress(
address: string,
beforeSig: string,
afterSig: string,
limit: number,
finality?: string
): Promise<ConfirmedSignatureInfo[]>;
getTransactions(sigs: ConfirmedSignatureInfo[], finality?: string): Promise<solana.Transaction[]>;
}
export interface MetadataRepository<Metadata> {
get(id: string): Promise<Metadata | undefined>;
save(id: string, metadata: Metadata): Promise<void>;
}
export interface StatRepository {
[Blockchain Watcher] Emit LogMessagePublished for Solana (#809) * adding gen-relayer watcher code to branch * folder rename * adding some new abstract types for processor redesign * added first cut of new process manager logic * large refactoring to environment configuration * Add basic default config * prettier run * modifying event handler interface * abstract handler typing changes * Blockchain watcher: adding domain and infra layers (#786) * reorg domain-infra * watch evm blocks action * adding evm log parser * wider prettier * renaming watch action * adding doc * persist latest metadata * gh action for blockchain-watcher * adding log-message-published mapper * deps: remove peers and nodemon * adding handler for LogMessagePublished * added parser for log message published --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> * Blockchain Watcher: ethereum -> sns implementation (#790) * evm block repo implementation * adding sns publisher * adding external config and initial runner * fix: start from latest if no fromBlock configured * feat: add dryRun option * fix: handler filtering and eth_getLogs filter payload * local e2e * actual sns arns for testnet * smaller docker image * deployment changes * [Blockchain Watcher] Apply missing formatting for log message published (#791) * Apply missing formatting for log message published * keep extracting * emitterAddress -> emitter * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * [Blockchain watcher] Adding light observability (#793) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * better error logs * wait when no block available * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * group actions per platform * [Blockchain Watcher] Add StartJob action + rate limit handling (#799) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * adding poll solana txs action * adding solana repo implementation * solana: mapping to logmsgpublished * fixing solana mapper test * updating readme * adding some metrics * adding solana worker * adding finality param to get solana block * minor changes - using confirmed for solana log extraction * updating version * add solana env var * [Blockchain Watcher] Feature-813/fix-coverage-report (#815) * Fix coverage report * Run prettier * Rollback global coverage value * Set global coverage value to 55 * Add github PR template * Run prettier * Rename github template file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * private solana urls as secret * adding prod cfg files * Change repository name and cretae error foulder (#819) * Change repository name and cretae error foulder * Rename SolanaFailure file * Rename SolanaFailure file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * passing node_options for solana * adding missing envs templates * cru * ratelimited solana client + increase coverage * [Blockchain Watcher] Feature 817/add hexagonal prefix (#824) * Put hexadecimal prefix * Create id variable * Add error log * Add error log * Remove bigint in getBlock params --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * fix never ending solana jobs * adding job counter metric * solana: add retry handling for 429s * cleanup * remove duplicated tests * cru + item count * minor readme update + do not use private solana rpc * fix items counter * fix solana job programID for devnet * log basic repo info * solana: passing finality everywhere * delete unnecesary files * adjusting solana cfgs * [Blockchain Watcher] Fix/re order some files (#828) * fix/re-order-some-files * run prettier * Run prettier * Resolve comment in PR * Remove import * Resolve comment * Remove prefix in sns log --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Julian <52217955+julianmerlo95@users.noreply.github.com> Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local>
2023-11-30 07:05:43 -08:00
count(id: string, labels: Record<string, any>, increase?: number): void;
measure(id: string, value: bigint, labels: Record<string, any>): void;
report: () => Promise<string>;
}
export interface JobRepository {
getJobDefinitions(): Promise<JobDefinition[]>;
getSource(jobDef: JobDefinition): RunPollingJob;
getHandlers(jobDef: JobDefinition): Promise<Handler[]>;
}