[Blockchain Watcher] (EVM) Improve redeem process (#1444)

* Improve redeem process

* Re factor process

* Improve implementation to process txs

* Change process

* Improve reedeem process

* Revert some changes

* Map target-events jobs

* Map new filters in pods

* Resolve test

* Map source filters on pods

* Remove sns change

* Remove config filters on handler

* Improve logs validation

* Improve logs

* Impelement strategy for transactions process

* Create strategy for transactions process

* Improve implentation

* Add error validations on logs filter

* Improve code with names and validations

* Improve evm process and add logs

* Improve code style

* Improve default process

* Improve DefaultProcess

* Improve NFT process and handler

* Re order pods

* Improve strategy code

* Improve default process

* Change celo batch

* Add strategy property on jobs

* Resolve test

* Improve filters method

* Remove contracts

* Resolve comment in PR

* Resolve comment in PR

---------

Co-authored-by: julian merlo <julianmerlo@julians-MacBook-Pro.local>
This commit is contained in:
Julian 2024-06-03 17:14:31 -03:00 committed by GitHub
parent b0f4f6e319
commit 64a29f3cab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 1889 additions and 2017 deletions

View File

@ -16,13 +16,7 @@
},
"bsc": {
"network": "mainnet",
"rpcs": [
"https://bscrpc.com",
"https://bsc-dataseed1.defibit.io",
"https://bsc-dataseed3.defibit.io",
"https://bsc-dataseed3.bnbchain.org",
"https://bsc-dataseed.bnbchain.org"
]
"rpcs": ["https://bscrpc.com"]
},
"polygon": {
"network": "mainnet",

View File

@ -1,5 +1,6 @@
import { EvmLog } from "../../entities";
import { EvmBlockRepository } from "../../repositories";
import { GetEvmOpts } from "./PollEvm";
import { EvmLog } from "../../entities";
import winston from "winston";
export class GetEvmLogs {
@ -12,28 +13,37 @@ export class GetEvmLogs {
}
async execute(range: Range, opts: GetEvmOpts): Promise<EvmLog[]> {
const fromBlock = range.fromBlock;
const toBlock = range.toBlock;
const { fromBlock, toBlock } = range;
const chain = opts.chain;
if (fromBlock > toBlock) {
this.logger.info(`[exec] Invalid range [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`);
this.logger.info(
`[${chain}][exec] Invalid range [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`
);
return [];
}
const logs = await this.blockRepo.getFilteredLogs(opts.chain, {
this.logger.info(
`[${chain}][exec] Processing blocks [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`
);
const logs = await this.blockRepo.getFilteredLogs(chain, {
fromBlock,
toBlock,
addresses: opts.addresses ?? [], // Works when sending multiple addresses, but not multiple topics.
topics: opts.topics?.flat() ?? [],
addresses: opts.filters[0].addresses ?? [], // At the moment, we only support one core contract per chain
topics: opts.filters[0].topics?.flat() ?? [], // At the moment, we only support one topic per chain linked to the core contract
});
const blockNumbers = new Set(logs.map((log) => log.blockNumber));
const blocks = await this.blockRepo.getBlocks(opts.chain, blockNumbers, false);
const blocks = await this.blockRepo.getBlocks(chain, blockNumbers, false);
logs.forEach((log) => {
const block = blocks[log.blockHash];
log.blockTime = block.timestamp;
});
this.logger.info(
`[${chain}][exec] Got ${logs.length} logs to process [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`
);
return logs;
}
}
@ -42,13 +52,3 @@ type Range = {
fromBlock: bigint;
toBlock: bigint;
};
export type TopicFilter = string | string[];
export type GetEvmOpts = {
addresses?: string[];
topics?: TopicFilter[];
chain: string;
chainId: number;
environment: string;
};

View File

@ -1,21 +1,27 @@
import { EvmBlock, EvmTransaction, ReceiptTransaction } from "../../entities";
import { GetTransactionsByLogFiltersStrategy } from "./strategy/GetTransactionsByLogFiltersStrategy";
import { GetTransactionsByBlocksStrategy } from "./strategy/GetTransactionsByBlocksStrategy";
import { EvmBlockRepository } from "../../repositories";
import { GetEvmOpts } from "./GetEvmLogs";
import { GetEvmOpts } from "./PollEvm";
import winston from "winston";
export class GetEvmTransactions {
private readonly blockRepo: EvmBlockRepository;
protected readonly logger: winston.Logger;
private strategies: GetTransactions[] = [];
constructor(blockRepo: EvmBlockRepository) {
this.logger = winston.child({ module: "GetEvmTransactions" });
this.blockRepo = blockRepo;
this.strategies = [
new GetTransactionsByLogFiltersStrategy(this.blockRepo),
new GetTransactionsByBlocksStrategy(this.blockRepo),
];
}
async execute(range: Range, opts: GetEvmOpts): Promise<EvmTransaction[]> {
const fromBlock = range.fromBlock;
const toBlock = range.toBlock;
const chain = opts.chain;
const { fromBlock, toBlock } = range;
const { chain, filters } = opts;
if (fromBlock > toBlock) {
this.logger.info(
@ -24,106 +30,67 @@ export class GetEvmTransactions {
return [];
}
let populatedTransactions: EvmTransaction[] = [];
const isTransactionsPresent = true;
this.logger.info(
`[${chain}][exec] Processing blocks [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`
);
const blockNumbers: Set<bigint> = new Set();
for (let block = fromBlock; block <= toBlock; block++) {
blockNumbers.add(block);
}
const evmBlocks = await this.blockRepo.getBlocks(chain, blockNumbers, isTransactionsPresent);
let populatedTransactions: EvmTransaction[] = [];
for (const blockKey in evmBlocks) {
const evmBlock = evmBlocks[blockKey];
const transactions = evmBlock.transactions ?? [];
// Only process transactions to the contract address configured
const transactionsByAddressConfigured = transactions.filter(
(transaction) =>
opts.addresses?.includes(String(transaction.from).toLowerCase()) ||
opts.addresses?.includes(String(transaction.to).toLowerCase())
);
if (transactionsByAddressConfigured.length > 0) {
const hashNumbers = new Set(transactionsByAddressConfigured.map((tx) => tx.hash));
const receiptTransactions = await this.blockRepo.getTransactionReceipt(chain, hashNumbers);
const filterTransactions = this.filterTransactions(
opts,
transactionsByAddressConfigured,
receiptTransactions
await Promise.all(
filters.map(async (filter) => {
await Promise.all(
this.strategies.map(async (strategy) => {
if (strategy.appliesTo(filter.strategy!)) {
const result = await strategy.execute(filter, fromBlock, toBlock, opts);
populatedTransactions.push(...result);
}
})
);
await this.populateTransaction(
opts,
evmBlock,
receiptTransactions,
filterTransactions,
populatedTransactions
);
}
}
})
);
this.logger.info(
`[${chain}][exec] Got ${
populatedTransactions?.length
} transactions to process for ${this.populateLog(opts, fromBlock, toBlock)}`
`[${chain}][exec] Got ${populatedTransactions?.length} transactions to process [fromBlock: ${fromBlock} - toBlock: ${toBlock}]`
);
return populatedTransactions;
}
private async populateTransaction(
opts: GetEvmOpts,
evmBlock: EvmBlock,
receiptTransactions: Record<string, ReceiptTransaction>,
filterTransactions: EvmTransaction[],
populatedTransactions: EvmTransaction[]
) {
filterTransactions.forEach((transaction) => {
transaction.status = receiptTransactions[transaction.hash].status;
transaction.timestamp = evmBlock.timestamp;
transaction.environment = opts.environment;
transaction.chainId = opts.chainId;
transaction.chain = opts.chain;
transaction.logs = receiptTransactions[transaction.hash].logs;
populatedTransactions.push(transaction);
});
}
/**
* This method filter the transactions in base your logs with the topic and address configured in the job
* For example: Redeemed or MintAndWithdraw transactions
*/
private filterTransactions(
opts: GetEvmOpts,
transactionsByAddressConfigured: EvmTransaction[],
receiptTransactions: Record<string, ReceiptTransaction>
): EvmTransaction[] {
return transactionsByAddressConfigured.filter((transaction) => {
const optsTopics = opts.topics || [];
const logs = receiptTransactions[transaction.hash]?.logs || [];
return optsTopics.some((topicsFilter) => {
// if the filter is an array, we need to check if all desired topics are present in the logs
if (Array.isArray(topicsFilter)) {
return topicsFilter.every((tf) => logs.some((log) => log.topics.some((t) => t === tf)));
}
// if the filter is a string, we need to check if it's present in any of the logs
return logs.some((log) => log.topics.some((t) => t === topicsFilter));
});
});
}
private populateLog(opts: GetEvmOpts, fromBlock: bigint, toBlock: bigint): string {
return `[addresses:${opts.addresses}][topics:${opts.topics}][blocks:${fromBlock} - ${toBlock}]`;
}
}
export function populateTransaction(
opts: GetEvmOpts,
evmBlocks: Record<string, EvmBlock>,
transactionReceipts: Record<string, ReceiptTransaction>,
filterTransactions: EvmTransaction[],
populatedTransactions: EvmTransaction[]
) {
filterTransactions.forEach((transaction) => {
transaction.status = transactionReceipts[transaction.hash].status;
transaction.timestamp = evmBlocks[transaction.blockHash].timestamp;
transaction.environment = opts.environment;
transaction.chainId = opts.chainId;
transaction.chain = opts.chain;
transaction.logs = transactionReceipts[transaction.hash].logs;
populatedTransactions.push(transaction);
});
}
// Interface for strategy pattern
export interface GetTransactions {
appliesTo(strategy: string): boolean;
execute(
filter: Filter,
fromBlock: bigint,
toBlock: bigint,
opts: GetEvmOpts
): Promise<EvmTransaction[]>;
}
export type Filter = {
addresses: string[];
topics: string[];
};
type Range = {
fromBlock: bigint;
toBlock: bigint;

View File

@ -29,8 +29,8 @@ export class HandleEvmLogs<T> {
const mappedItems = logs
.filter(
(log) =>
this.cfg.filter.addresses.includes(log.address.toLowerCase()) &&
this.cfg.filter.topics.includes(log.topics[0].toLowerCase())
this.cfg.filters[0].addresses.includes(log.address.toLowerCase()) &&
this.cfg.filters[0].topics.includes(log.topics[0].toLowerCase())
)
.map((log) => {
const iface = new ethers.utils.Interface([this.cfg.abi]);
@ -56,16 +56,18 @@ export class HandleEvmLogs<T> {
private normalizeCfg(cfg: HandleEvmLogsConfig): HandleEvmLogsConfig {
return {
filter: {
addresses: cfg.filter.addresses.map((addr) => addr.toLowerCase()),
topics: cfg.filter.topics.map((topic) => topic.toLowerCase()),
},
metricName: cfg.metricName,
commitment: cfg.commitment,
chainId: cfg.chainId,
chain: cfg.chain,
abi: cfg.abi,
id: cfg.id,
filters: cfg.filters.map((filter) => {
return {
addresses: filter.addresses.map((address) => address.toLowerCase()),
topics: filter.topics.map((topic) => topic.toLowerCase()),
};
}),
};
}
}

View File

@ -1,9 +1,10 @@
import { EvmBlockRepository, MetadataRepository, StatRepository } from "../../repositories";
import { EvmLog, EvmTransaction } from "../../entities";
import { GetEvmTransactions } from "./GetEvmTransactions";
import { RunPollingJob } from "../RunPollingJob";
import { GetEvmLogs } from "./GetEvmLogs";
import { EvmBlockRepository, MetadataRepository, StatRepository } from "../../repositories";
import { Filters } from "./types";
import winston from "winston";
import { GetEvmTransactions } from "./GetEvmTransactions";
const ID = "watch-evm-logs";
@ -72,8 +73,7 @@ export class PollEvm extends RunPollingJob {
const records = await this.getEvm.execute(range, {
chain: this.cfg.chain,
chainId: this.cfg.chainId,
addresses: this.cfg.addresses,
topics: this.cfg.topics,
filters: this.cfg.filters,
environment: this.cfg.environment,
});
@ -162,12 +162,11 @@ export interface PollEvmLogsConfigProps {
blockBatchSize?: number;
commitment?: string;
interval?: number;
addresses: string[];
topics: (string | string[])[];
id?: string;
chain: string;
chainId: number;
environment: string;
filters: Filters;
}
export class PollEvmLogsConfig {
@ -213,12 +212,14 @@ export class PollEvmLogsConfig {
return this.props.interval;
}
public get addresses() {
return this.props.addresses.map((address) => address.toLowerCase());
}
public get topics() {
return this.props.topics;
public get filters() {
return this.props.filters.map((filter) => {
return {
addresses: filter.addresses.map((address) => address.toLowerCase()),
strategy: filter.strategy,
topics: filter.topics.map((topic) => topic.toLowerCase()),
};
});
}
public get id() {
@ -241,10 +242,16 @@ export class PollEvmLogsConfig {
return new PollEvmLogsConfig({
chain,
fromBlock,
addresses: [],
topics: [],
filters: [{ addresses: [], topics: [], strategy: "" }],
environment: "",
chainId: 0,
});
}
}
export type GetEvmOpts = {
filters: Filters;
chain: string;
chainId: number;
environment: string;
};

View File

@ -0,0 +1,61 @@
import { GetTransactions, Filter, populateTransaction } from "../GetEvmTransactions";
import { EvmBlockRepository } from "../../../repositories";
import { EvmTransaction } from "../../../entities";
import { GetEvmOpts } from "../PollEvm";
export class GetTransactionsByBlocksStrategy implements GetTransactions {
private readonly blockRepo: EvmBlockRepository;
constructor(blockRepo: EvmBlockRepository) {
this.blockRepo = blockRepo;
}
appliesTo(strategy: string): boolean {
return strategy == GetTransactionsByBlocksStrategy.name;
}
async execute(
filter: Filter,
fromBlock: bigint,
toBlock: bigint,
opts: GetEvmOpts
): Promise<EvmTransaction[]> {
let populatedTransactions: EvmTransaction[] = [];
const blockNumbers: Set<bigint> = new Set();
const chain = opts.chain;
for (let block = fromBlock; block <= toBlock; block++) {
blockNumbers.add(block);
}
// Get blocks with your transactions
const evmBlocks = await this.blockRepo.getBlocks(chain, blockNumbers, true);
for (const blockKey in evmBlocks) {
const evmBlock = evmBlocks[blockKey];
const transactions = evmBlock.transactions ?? [];
// Only process transactions to the contract address configured
const transactionsByAddressConfigured = transactions.filter(
(transaction) =>
filter.addresses?.includes(String(transaction.from).toLowerCase()) ||
filter.addresses?.includes(String(transaction.to).toLowerCase())
);
if (transactionsByAddressConfigured.length > 0) {
// Get transaction details from blockchain
const hashNumbers = new Set(transactionsByAddressConfigured.map((tx) => tx.hash));
const transactionReceipts = await this.blockRepo.getTransactionReceipt(chain, hashNumbers);
populateTransaction(
opts,
evmBlocks,
transactionReceipts,
transactionsByAddressConfigured,
populatedTransactions
);
}
}
return populatedTransactions;
}
}

View File

@ -0,0 +1,72 @@
import { Filter, GetTransactions, populateTransaction } from "../GetEvmTransactions";
import { EvmBlockRepository } from "../../../repositories";
import { EvmTransaction } from "../../../entities";
import { GetEvmOpts } from "../PollEvm";
export class GetTransactionsByLogFiltersStrategy implements GetTransactions {
private readonly blockRepo: EvmBlockRepository;
constructor(blockRepo: EvmBlockRepository) {
this.blockRepo = blockRepo;
}
appliesTo(strategy: string): boolean {
return strategy == GetTransactionsByLogFiltersStrategy.name;
}
async execute(
filter: Filter,
fromBlock: bigint,
toBlock: bigint,
opts: GetEvmOpts
): Promise<EvmTransaction[]> {
const populatedTransactions: EvmTransaction[] = [];
const chain = opts.chain;
const logs = await this.blockRepo.getFilteredLogs(chain, {
fromBlock: fromBlock,
toBlock: toBlock,
addresses: filter.addresses,
topics: filter.topics,
});
if (logs.length > 0) {
const blockNumbers = new Set<bigint>();
const blockHashes = new Set<string>();
const txHashes = new Set<string>();
logs.forEach((log) => {
blockNumbers.add(log.blockNumber);
blockHashes.add(log.blockHash);
txHashes.add(log.transactionHash);
});
// Get blocks with your transactions
const evmBlocks = await this.blockRepo.getBlocks(chain, blockNumbers, true);
if (evmBlocks) {
const filterTransactions: EvmTransaction[] = [];
for (const blockHash of blockHashes) {
const transactions = evmBlocks[blockHash]?.transactions || [];
// Collect complete transactions from the block by hash
const filtered = transactions.filter((transaction) => txHashes.has(transaction.hash));
filterTransactions.push(...filtered);
}
// Get transaction details
const transactionReceipts = await this.blockRepo.getTransactionReceipt(chain, txHashes);
populateTransaction(
opts,
evmBlocks,
transactionReceipts,
filterTransactions,
populatedTransactions
);
}
}
return populatedTransactions;
}
}

View File

@ -1,5 +1,3 @@
import { EvmTopicFilter } from "../../entities";
export interface HandleEvmConfig {
metricName: string;
commitment: string;
@ -10,5 +8,11 @@ export interface HandleEvmConfig {
}
export interface HandleEvmLogsConfig extends HandleEvmConfig {
filter: EvmTopicFilter;
filters: Filters;
}
export type Filters = {
addresses: string[];
strategy?: string;
topics: string[];
}[];

View File

@ -50,11 +50,6 @@ export type EvmTransactionLog = { address: string; topics: string[]; data: strin
export type EvmTag = "finalized" | "latest" | "safe";
export type EvmTopicFilter = {
addresses: string[];
topics: string[];
};
export type EvmLogFilter = {
fromBlock: bigint | EvmTag;
toBlock: bigint | EvmTag;

View File

@ -16,7 +16,7 @@ export const findProtocol = (
address: string,
comparativeMethod: string | number,
hash: string
): Protocol | undefined => {
): Protocol => {
for (const contract of contractsMapperConfig.contracts) {
if (contract.chain === chain) {
const foundProtocol = contract.protocols.find((protocol) =>
@ -34,10 +34,14 @@ export const findProtocol = (
}
}
}
logger.warn(
`[${chain}] Protocol not found, [hash: ${hash}][address: ${address}][method: ${comparativeMethod}]`
);
return {
method: "unknown",
type: "unknown",
};
};
export interface ContractsMapperConfig {

View File

@ -724,6 +724,16 @@
"method": "MethodCompleteTransfer"
}
]
},
{
"addresses": ["0x63d02D6792449905C981e1dcED273Bd1007b4eA6"],
"type": "NTT",
"methods": [
{
"methodId": "0xf953cec7",
"method": "WormholeTransceiverReceiveMessage"
}
]
}
]
},
@ -1410,7 +1420,8 @@
{
"addresses": [
"0x79A1027a6A159502049F10906D333EC57E95F083",
"0x86f55a04690fd7815a3d802bd587e83ea888b239"
"0x86f55a04690fd7815a3d802bd587e83ea888b239",
"0x355b390658310d6fda26b9d67a2f652d21e5bc0d"
],
"type": "Token Bridge",
"methods": [
@ -1429,6 +1440,10 @@
{
"methodId": "0xf768441f",
"method": "MethodUpdateWrapped"
},
{
"methodId": "0x9e7e8327",
"method": "MethodRedeem"
}
]
},

View File

@ -28,11 +28,6 @@ export const evmRedeemedTransactionFoundMapper = (
first10Characters,
transaction.hash
);
if (!protocol) {
return undefined;
}
const { type: protocolType, method: protocolMethod } = protocol;
const vaaInformation = mappedVaaInformation(transaction.logs, transaction.input);

View File

@ -131,6 +131,7 @@ export class StaticJobRepository implements JobRepository {
const config = {
...(handler.config as any),
commitment: jobDef.source.config.commitment,
filters: jobDef.source.config.filters,
chainId: jobDef.chainId,
chain: jobDef.chain,
id: jobDef.id,

View File

@ -1,17 +1,17 @@
import {
EvmBlock,
EvmLogFilter,
EvmLog,
EvmTag,
ReceiptTransaction,
} from "../../../domain/entities";
import { EvmBlockRepository } from "../../../domain/repositories";
import winston from "../../log";
import { InstrumentedHttpProvider } from "../../rpc/http/InstrumentedHttpProvider";
import { EvmBlockRepository } from "../../../domain/repositories";
import { divideIntoBatches } from "../common/utils";
import { HttpClientError } from "../../errors/HttpClientError";
import { ChainRPCConfig } from "../../config";
import { divideIntoBatches } from "../common/utils";
import { ProviderPool } from "@xlabs/rpc-pool";
import winston from "../../log";
import {
ReceiptTransaction,
EvmLogFilter,
EvmBlock,
EvmLog,
EvmTag,
} from "../../../domain/entities";
/**
* EvmJsonRPCBlockRepository is a repository that uses a JSON RPC endpoint to fetch blocks.
@ -100,10 +100,7 @@ export class EvmJsonRPCBlockRepository implements EvmBlockRepository {
) => {
// Karura is getting 6969 errors for some blocks, so we'll just return empty blocks for those instead of throwing an error.
// We take the timestamp from the previous block, which is not ideal but should be fine.
if (
(response && response.result === null) ||
(response?.error && response.error?.code && response.error.code === 6969)
) {
if (response?.error && response.error?.code && response.error.code === 6969) {
return {
hash: "",
number: BigInt(response.id),
@ -151,13 +148,16 @@ export class EvmJsonRPCBlockRepository implements EvmBlockRepository {
}
async getFilteredLogs(chain: string, filter: EvmLogFilter): Promise<EvmLog[]> {
const parsedFilters = {
let parsedFilters: ParsedFilters = {
topics: filter.topics,
address: filter.addresses,
fromBlock: `${HEXADECIMAL_PREFIX}${filter.fromBlock.toString(16)}`,
toBlock: `${HEXADECIMAL_PREFIX}${filter.toBlock.toString(16)}`,
};
if (filter.addresses.length > 0) {
parsedFilters.address = filter.addresses;
}
const chainCfg = this.getCurrentChain(chain);
let response: { result: Log[]; error?: ErrorBlock };
try {
@ -174,22 +174,32 @@ export class EvmJsonRPCBlockRepository implements EvmBlockRepository {
throw e;
}
if (response.error) {
throw new Error(
`[${chain}][getFilteredLogs] Error fetching logs with message: ${
response.error.message
}. Filter: ${JSON.stringify(filter)}`
);
}
const logs = response?.result;
if (!logs || logs.length === 0) {
return [];
}
this.logger.info(
`[${chain}][getFilteredLogs] Got ${logs?.length} logs for ${this.describeFilter(
`[${chain}][getFilteredLogs] Got ${logs.length} logs for ${this.describeFilter(
filter
)} from ${chainCfg.rpc.hostname}`
);
return logs
? logs.map((log) => ({
...log,
blockNumber: BigInt(log.blockNumber),
transactionIndex: log.transactionIndex.toString(),
chainId: chainCfg.chainId,
chain,
}))
: [];
return logs.map((log) => ({
...log,
blockNumber: BigInt(log.blockNumber),
transactionIndex: log.transactionIndex.toString(),
chainId: chainCfg.chainId,
chain,
}));
}
private describeFilter(filter: EvmLogFilter): string {
@ -393,3 +403,10 @@ type ResultBlocks = {
result?: EvmBlock;
error?: ErrorBlock;
};
type ParsedFilters = {
fromBlock: string;
toBlock: string;
address?: string[];
topics: string[];
};

View File

@ -1,13 +1,13 @@
import { afterAll, afterEach, describe, it, expect, jest } from "@jest/globals";
import { GetEvmTransactions } from "../../../../src/domain/actions/evm/GetEvmTransactions";
import { EvmBlockRepository } from "../../../../src/domain/repositories";
import { randomBytes } from "crypto";
import {
ReceiptTransaction,
EvmTransaction,
EvmBlock,
EvmLog,
EvmTransaction,
ReceiptTransaction,
} from "../../../../src/domain/entities/evm";
import { randomBytes } from "crypto";
let getTransactionReceipt: jest.SpiedFunction<EvmBlockRepository["getTransactionReceipt"]>;
let getBlocksSpy: jest.SpiedFunction<EvmBlockRepository["getBlocks"]>;
@ -32,11 +32,16 @@ describe("GetEvmTransactions", () => {
};
const opts = {
addresses: [],
topics: [],
chain: "ethereum",
chainId: 1,
environment: "testnet",
filters: [
{
addresses: [],
topics: [],
strategy: "GetTransactionsByLogFiltersStrategy",
},
],
};
givenPollEvmLogs();
@ -56,11 +61,16 @@ describe("GetEvmTransactions", () => {
};
const opts = {
addresses: ["0x1ee18b2214aff97000d974cf647e7c545e8fa585"],
topics: [],
chain: "ethereum",
chainId: 1,
environment: "mainnet",
environment: "testnet",
filters: [
{
addresses: [],
topics: [],
strategy: "GetTransactionsByLogFiltersStrategy",
},
],
};
const blocks = {
@ -89,15 +99,27 @@ describe("GetEvmTransactions", () => {
};
const opts = {
addresses: ["0x3ee18b2214aff97000d974cf647e7c347e8fa585"],
topics: ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9a"],
chain: "ethereum",
chainId: 1,
environment: "mainnet",
environment: "testnet",
filters: [
{
addresses: [],
topics: ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
strategy: "GetTransactionsByLogFiltersStrategy",
},
],
};
const blocks = {
"0x01": new BlockBuilder().number(1n).txs([new TxBuilder().create()]).create(),
"0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea0551": new BlockBuilder()
.number(1n)
.txs([
new TxBuilder()
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b1")
.create(),
])
.create(),
};
givenEvmBlockRepository(range.fromBlock, range.toBlock, blocks);
@ -124,20 +146,25 @@ describe("GetEvmTransactions", () => {
};
const opts = {
addresses: ["0x3ee18b2214aff97000d974cf647e7c347e8fa585"],
topics: ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9a"],
chain: "ethereum",
chainId: 1,
environment: "mainnet",
environment: "testnet",
filters: [
{
addresses: [],
topics: ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
strategy: "GetTransactionsByLogFiltersStrategy",
},
],
};
const blocks = {
"0x01": new BlockBuilder()
"0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea0551": new BlockBuilder()
.number(1n)
.txs([
// different topic
new TxBuilder()
.hash("0x01")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b1")
.logs([
{
address: "0x3ee18b2214aff97000d974cf647e7c347e8fa585",
@ -148,7 +175,7 @@ describe("GetEvmTransactions", () => {
.create(),
// matches filters
new TxBuilder()
.hash("0x02")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b2")
.logs([
{
address: "0x3ee18b2214aff97000d974cf647e7c347e8fa585",
@ -159,7 +186,7 @@ describe("GetEvmTransactions", () => {
.create(),
// different to address
new TxBuilder()
.hash("0x03")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b4")
.to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2")
.logs([
{
@ -171,7 +198,7 @@ describe("GetEvmTransactions", () => {
.create(),
// different to address, but same log emitter
new TxBuilder()
.hash("0x04")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b6")
.to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2")
.logs([
{
@ -193,7 +220,9 @@ describe("GetEvmTransactions", () => {
// Then
expect(result.length).toEqual(1);
expect(result[0].hash).toEqual("0x02");
expect(result[0].hash).toEqual(
"0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b1"
);
expect(result[0].to).toEqual("0x3ee18b2214aff97000d974cf647e7c347e8fa585");
expect(getTransactionReceipt).toHaveReturnedTimes(1);
expect(getBlocksSpy).toHaveReturnedTimes(1);
@ -207,17 +236,16 @@ describe("GetEvmTransactions", () => {
};
const opts = {
addresses: [
"0x4cb69fae7e7af841e44e1a1c30af640739378bb2",
"0xBd3fa81B58Ba92a82136038B25aDec7066af3155",
],
topics: [
"0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6",
"0xf02867db6908ee5f81fd178573ae9385837f0a0a72553f8c08306759a7e0f00e",
],
chain: "ethereum",
chainId: 1,
environment: "mainnet",
environment: "testnet",
filters: [
{
addresses: [],
topics: ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
strategy: "GetTransactionsByLogFiltersStrategy",
},
],
};
const logs = [
@ -237,13 +265,25 @@ describe("GetEvmTransactions", () => {
];
const blocks = {
"0x01": new BlockBuilder()
"0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea0551": new BlockBuilder()
.number(1n)
.txs([new TxBuilder().logs(logs).to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2").create()])
.txs([
new TxBuilder()
.logs(logs)
.to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b1")
.create(),
])
.create(),
"0x02": new BlockBuilder()
"0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea0552": new BlockBuilder()
.number(2n)
.txs([new TxBuilder().logs(logs).to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2").create()])
.txs([
new TxBuilder()
.logs(logs)
.to("0x4cb69fae7e7af841e44e1a1c30af640739378bb2")
.hash("0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b2")
.create(),
])
.create(),
};
@ -259,96 +299,7 @@ describe("GetEvmTransactions", () => {
expect(result[0].status).toEqual("0x1");
expect(result[0].from).toEqual("0x3ee123456786797000d974cf647e7c347e8fa585");
expect(result[0].to).toEqual("0x4cb69fae7e7af841e44e1a1c30af640739378bb2");
expect(getTransactionReceipt).toHaveReturnedTimes(2);
expect(getBlocksSpy).toHaveReturnedTimes(1);
});
it("should apply a multiple topics filter", async () => {
// Given
const range = {
fromBlock: 1n,
toBlock: 2n,
};
const opts = {
addresses: ["0x7b1bd7a6b4e61c2a123ac6bc2cbfc614437d0470"],
topics: [
[
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e",
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
],
],
chain: "ethereum",
chainId: 1,
environment: "mainnet",
};
const logs = [
{
address: "0x00ac6efc189140b50a043b5e43c108cf571586d1",
topics: ["0xf557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475"],
data: "0xe9d6f4dbc1d568640ce3f6111b2d082e8282461feb9812135b30c9f7c1dcf300000000000000000000000000000000000000000000000000000000000000271200000000000000000000000055aaf4d9399c472b252e7c0b49408b5bc7d7328e",
},
{
address: "0xcc1ebd7a6661c0f6e19d2bbdb881b11f3b3f40ff",
topics: ["0x35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e5"],
data: "0xb20b3f32244182844595b9670c53aa82303829fe827af22c460458be9bbae85700000000000000000000000000ac6efc189140b50a043b5e43c108cf571586d10000000000000000000000000000000000000000000000000000000000000000",
},
{
address: "0xcc1ebd7a6661c0f6e19d2bbdb881b11f3b3f40ff",
topics: [
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
"0xb20b3f32244182844595b9670c53aa82303829fe827af22c460458be9bbae857",
],
data: "0x",
},
{
address: "0xb12c77938c09d81f1e9797d48501b5c4e338b45b",
topics: [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x000000000000000000000000e6990c7e206d418d62b9e50c8e61f59dc360183b",
],
data: "0x00000000000000000000000000000000000000000000000000354a6ba7a18000",
},
{
address: "0x7b1bd7a6b4e61c2a123ac6bc2cbfc614437d0470",
topics: [
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e",
"0x00000000000000000000000000ac6efc189140b50a043b5e43c108cf571586d1",
"0x0000000000000000000000000000000000000000000000000000000000002712",
"0x00000000000000000000000000000000000000000000000000000000000013ac",
],
data: "0xe9d6f4dbc1d568640ce3f6111b2d082e8282461feb9812135b30c9f7c1dcf3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dd05000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
},
];
const blocks = {
"0x01": new BlockBuilder()
.number(1n)
.txs([new TxBuilder().logs(logs).to("0x7b1bd7a6b4e61c2a123ac6bc2cbfc614437d0470").create()])
.create(),
"0x02": new BlockBuilder()
.number(2n)
.txs([
new TxBuilder().logs([logs[4]]).to("0x7b1bd7a6b4e61c2a123ac6bc2cbfc614437d0470").create(),
])
.create(),
};
givenEvmBlockRepository(range.fromBlock, range.toBlock, blocks);
givenPollEvmLogs();
// When
const result = await getEvmTransactions.execute(range, opts);
// Then
expect(result.length).toEqual(1);
expect(result[0].chainId).toEqual(1);
expect(result[0].status).toEqual("0x1");
expect(result[0].from).toEqual("0x3ee123456786797000d974cf647e7c347e8fa585");
expect(result[0].to).toEqual("0x7b1bd7a6b4e61c2a123ac6bc2cbfc614437d0470");
expect(getTransactionReceipt).toHaveReturnedTimes(2);
expect(getTransactionReceipt).toHaveReturnedTimes(1);
expect(getBlocksSpy).toHaveReturnedTimes(1);
});
});
@ -374,18 +325,22 @@ const givenEvmBlockRepository = (
if (height) {
for (let index = height; index <= (blocksAhead ?? 1n); index++) {
logsResponse.push({
blockNumber: height + index,
blockHash: `0x0${index}`,
blockTime: 0,
address: "",
address: "0x5a58505a96d1dbf8df91cb21b54419fc36e93fde",
topics: [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0x0000000000000000000000000000000000000000000000000000000000000016",
"0x0000000000000000000000000000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000000000000000000000000025b4e",
],
data: "0x",
blockNumber: height,
transactionHash: `0x936dfc1f96012263e600a915a5d10c73742148dc7399ed19df0767100eb575b${index}`,
transactionIndex: "0x47",
blockHash: `0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea055${index}`,
logIndex: 123,
removed: false,
data: "",
transactionHash: "",
transactionIndex: "",
topics: [],
logIndex: 0,
chainId: 2,
chain: "ethereum",
chainId: 5,
chain: "polygon",
});
}
}
@ -464,7 +419,7 @@ class TxBuilder {
default() {
return {
blockHash: "0xf5794b0970386d7951e45465ac2c9835537e5a9",
blockHash: "0xe4321e41fe0a07dcf43e25ee83876398e81eeed694771bb7729186ebb6ea0551",
hash: "0x" + randomBytes(32).toString("hex"),
blockNumber: 1n,
chainId: 1,

View File

@ -64,10 +64,12 @@ const givenHandleEvmLogs = (targetFn: "save" | "failingSave" = "save") => {
const givenConfig = (abi: string) => {
cfg = {
filter: {
addresses: ["0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a"],
topics: ["0xda8540426b64ece7b164a9dce95448765f0a7263ef3ff85091c9c7361e485364"],
},
filters: [
{
addresses: ["0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a"],
topics: ["0xda8540426b64ece7b164a9dce95448765f0a7263ef3ff85091c9c7361e485364"],
},
],
metricName: "process_source_ethereum_event",
abi,
commitment: "latest",
@ -92,8 +94,8 @@ const givenEvmLogs = (length: number, matchingFilterOnes: number) => {
let address = "0x392f472048681816e91026cd768c60958b55352add2837adea9ea6249178b8a8";
let topic: string | undefined = undefined;
if (matchingCount < matchingFilterOnes) {
address = cfg.filter.addresses![0].toUpperCase();
topic = cfg.filter.topics![0];
address = cfg.filters[0].addresses![0].toUpperCase();
topic = cfg.filters[0].topics![0];
matchingCount++;
}

View File

@ -50,8 +50,8 @@ describe("PollEvm", () => {
),
() =>
expect(getLogsSpy).toBeCalledWith("acala", {
addresses: cfg.addresses,
topics: cfg.topics,
addresses: cfg.filters[0].addresses,
topics: cfg.filters[0].topics,
fromBlock: currentHeight + blocksAhead,
toBlock: currentHeight + blocksAhead,
})
@ -75,8 +75,8 @@ describe("PollEvm", () => {
),
() =>
expect(getLogsSpy).toBeCalledWith("acala", {
addresses: cfg.addresses,
topics: cfg.topics,
addresses: cfg.filters[0].addresses,
topics: cfg.filters[0].topics,
fromBlock: lastExtractedBlock + 1n,
toBlock: lastExtractedBlock + blocksAhead,
})

View File

@ -30,7 +30,7 @@ describe("aptosRedeemedTransactionFoundMapper", () => {
}
});
it("should not be able to map log to aptosRedeemedTransactionFoundMapper", async () => {
it("should not be able to map with one protocol and set up unknown name in log aptosRedeemedTransactionFoundMapper", async () => {
// Given
const tx: AptosTransaction = {
blockHeight: 154363203n,
@ -68,7 +68,8 @@ describe("aptosRedeemedTransactionFoundMapper", () => {
const result = aptosRedeemedTransactionFoundMapper(tx);
// Then
expect(result).toBeUndefined();
expect(result?.name).toBe("transfer-redeemed");
expect(result?.attributes.protocol).toBe("unknown");
});
});

View File

@ -14,7 +14,7 @@ let statsRepo = {
const handler = new HandleEvmLogs(
{
filter: { addresses: [address], topics: [topic] },
filters: [{ addresses: [address], topics: [topic] }],
abi: "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
metricName: "process_source_ethereum_event",
commitment: "latest",

View File

@ -45,8 +45,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 15000,
"addresses": [
"0xE4eacc10990ba3308DdCC72d985f2a27D20c7d03"
"filters": [
{
"addresses": ["0xE4eacc10990ba3308DdCC72d985f2a27D20c7d03"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "karura",
"chainId": 11
@ -59,14 +63,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0xE4eacc10990ba3308DdCC72d985f2a27D20c7d03"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -81,8 +77,12 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": [
"0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7"
"filters": [
{
"addresses": ["0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "fantom",
"chainId": 10
@ -95,14 +95,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -117,8 +109,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 15000,
"addresses": [
"0x4377B49d559c0a9466477195C6AdC3D433e265c0"
"filters": [
{
"addresses": ["0x4377B49d559c0a9466477195C6AdC3D433e265c0"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "acala",
"chainId": 12
@ -131,14 +127,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0x4377B49d559c0a9466477195C6AdC3D433e265c0"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -153,8 +141,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 15000,
"addresses": [
"0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C"
"filters": [
{
"addresses": ["0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "avalanche",
"chainId": 6,
@ -168,14 +160,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -190,7 +174,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D"],
"filters": [
{
"addresses": ["0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "bsc",
"chainId": 4
}
@ -202,10 +192,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -220,7 +206,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901"],
"filters": [
{
"addresses": ["0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "moonbeam",
"chainId": 16
}
@ -232,81 +224,103 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-sui",
"chain": "sui",
"id": "poll-log-message-published-arbitrum-sepolia",
"chain": "arbitrum-sepolia",
"source": {
"action": "PollSuiTransactions",
"action": "PollEvm",
"config": {
"interval": 5000,
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94",
"module": "publish_message",
"function": "publish_message"
}
}
}
},
"handlers": [
{
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "suiLogMessagePublishedMapper",
"config": {
"eventTypes": [
"0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94::publish_message::WormholeMessage"
],
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-aptos",
"chain": "aptos",
"source": {
"action": "PollAptos",
"config": {
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 25000,
"addresses": ["0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625"],
"chain": "aptos",
"chainId": 22,
"blockBatchSize": 1000,
"commitment": "latest",
"interval": 30000,
"filters": [
{
"fieldName": "event",
"address": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
"event": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessageHandle",
"type": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessage"
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
]
],
"chain": "arbitrum-sepolia",
"chainId": 10003
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "aptosLogMessagePublishedMapper",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-aptos",
"chain": "aptos",
"commitment": "finalized"
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-ethereum-sepolia",
"chain": "ethereum-sepolia",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"filters": [
{
"addresses": ["0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "ethereum-sepolia",
"chainId": 10002
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-ethereum-holesky",
"chain": "ethereum-holesky",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"filters": [
{
"addresses": ["0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "ethereum-holesky",
"chainId": 10006
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event"
}
}
]
@ -323,8 +337,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 5000,
"addresses": [
"0xa321448d90d4e5b0A732867c18eA198e75CAC48E"
"filters": [
{
"addresses": ["0xa321448d90d4e5b0A732867c18eA198e75CAC48E"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "karura",
"chainId": 11
@ -337,14 +355,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0xa321448d90d4e5b0A732867c18eA198e75CAC48E"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -359,8 +369,12 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x126783A6Cb203a3E35344528B26ca3a0489a1485"
"filters": [
{
"addresses": ["0x126783A6Cb203a3E35344528B26ca3a0489a1485"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "fantom",
"chainId": 10
@ -373,14 +387,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0x126783A6Cb203a3E35344528B26ca3a0489a1485"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -395,8 +401,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 5000,
"addresses": [
"0xa321448d90d4e5b0A732867c18eA198e75CAC48E"
"filters": [
{
"addresses": ["0xa321448d90d4e5b0A732867c18eA198e75CAC48E"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "acala",
"chainId": 12
@ -409,14 +419,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0xa321448d90d4e5b0A732867c18eA198e75CAC48E"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -431,8 +433,12 @@ data:
"blockBatchSize": 100,
"commitment": "finalized",
"interval": 5000,
"addresses": [
"0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c"
"filters": [
{
"addresses": ["0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "avalanche",
"chainId": 6,
@ -446,14 +452,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": [
"0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c"
],
"topics": [
"0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"
]
},
"metricName": "process_source_event"
}
}
@ -468,7 +466,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"filters": [
{
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "bsc",
"chainId": 4
}
@ -480,10 +484,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -498,7 +498,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3"],
"filters": [
{
"addresses": ["0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "moonbeam",
"chainId": 16
}
@ -510,86 +516,71 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-sui",
"chain": "sui",
"id": "poll-log-message-published-arbitrum",
"chain": "arbitrum",
"source": {
"action": "PollSuiTransactions",
"action": "PollEvm",
"config": {
"blockBatchSize": 1000,
"commitment": "latest",
"interval": 5000,
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
"module": "publish_message",
"function": "publish_message"
"filters": [
{
"addresses": ["0xa5f208e072434bC67592E4C49C1B991BA79BCA46"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
}
],
"chain": "arbitrum",
"chainId": 23
}
},
"handlers": [
{
"action": "HandleSuiTransactions",
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "suiLogMessagePublishedMapper",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"eventTypes": [
"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a::publish_message::WormholeMessage"
],
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-sui",
"chain": "sui",
"commitment": "immediate"
}
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-aptos",
"chain": "aptos",
"id": "poll-log-message-published-ethereum",
"chain": "ethereum",
"source": {
"action": "PollAptos",
"action": "PollEvm",
"config": {
"limitBatchSize": 100,
"commitment": "finalized",
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625"],
"chain": "aptos",
"chainId": 22,
"filters": [
{
"fieldName": "event",
"address": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
"event": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessageHandle",
"type": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessage"
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
]
],
"chain": "ethereum",
"chainId": 2
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "aptosLogMessagePublishedMapper",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-aptos",
"chain": "aptos",
"commitment": "finalized"
}
"metricName": "process_source_event"
}
}
]
@ -649,18 +640,30 @@ spec:
- name: AVALANCHE_RPCS
value: '{{ .AVALANCHE_RPCS }}'
{{ end }}
{{ if .APTOS_RPCS }}
- name: APTOS_RPCS
value: '{{ .APTOS_RPCS }}'
{{ end }}
{{ if .SUI_RPCS }}
- name: SUI_RPCS
value: '{{ .SUI_RPCS }}'
{{ end }}
{{ if .KARURA_RPCS }}
- name: KARURA_RPCS
value: '{{ .KARURA_RPCS }}'
{{ end }}
{{ if .ARBITRUM_RPCS }}
- name: ARBITRUM_RPCS
value: '{{ .ARBITRUM_RPCS }}'
{{ end }}
{{ if .ARBITRUM_SEPOLIA_RPCS }}
- name: ARBITRUM_SEPOLIA_RPCS
value: '{{ .ARBITRUM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ETHEREUM_SEPOLIA_RPCS }}
- name: ETHEREUM_SEPOLIA_RPCS
value: '{{ .ETHEREUM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ETHEREUM_RPCS }}
- name: ETHEREUM_RPCS
value: '{{ .ETHEREUM_RPCS }}'
{{ end }}
{{ if .ETHEREUM_HOLESKY_RPCS }}
- name: ETHEREUM_HOLESKY_RPCS
value: '{{ .ETHEREUM_HOLESKY_RPCS }}'
{{ end }}
image: {{ .IMAGE_NAME }}
resources:
limits:

View File

@ -45,7 +45,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x31377888146f3253211EFEf5c676D41ECe7D58Fe"],
"filters": [
{
"addresses": ["0x31377888146f3253211EFEf5c676D41ECe7D58Fe"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "optimism-sepolia",
"chainId": 10005
}
@ -57,10 +63,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x31377888146f3253211EFEf5c676D41ECe7D58Fe"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -75,7 +77,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x79A1027a6A159502049F10906D333EC57E95F083"],
"filters": [
{
"addresses": ["0x79A1027a6A159502049F10906D333EC57E95F083"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "base-sepolia",
"chainId": 10004
}
@ -87,10 +95,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x79A1027a6A159502049F10906D333EC57E95F083"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -105,7 +109,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56"],
"filters": [
{
"addresses": ["0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "celo",
"chainId": 14
}
@ -117,10 +127,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -135,7 +141,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb"],
"filters": [
{
"addresses": ["0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "oasis",
"chainId": 7
}
@ -147,10 +159,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -165,7 +173,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x1830CC6eE66c84D2F177B94D544967c774E624cA"],
"filters": [
{
"addresses": ["0x1830CC6eE66c84D2F177B94D544967c774E624cA"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "klaytn",
"chainId": 13
}
@ -177,40 +191,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x1830CC6eE66c84D2F177B94D544967c774E624cA"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-polygon",
"chain": "polygon",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x0CBE91CF822c73C2315FB05100C2F714765d5c20"],
"chain": "polygon",
"chainId": 5
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x0CBE91CF822c73C2315FB05100C2F714765d5c20"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -225,7 +205,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"filters": [
{
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "polygon-sepolia",
"chainId": 10007
}
@ -237,10 +223,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -255,7 +237,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x055f47f1250012c6b20c436570a76e52c17af2d5"],
"filters": [
{
"addresses": ["0x055f47f1250012c6b20c436570a76e52c17af2d5"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "scroll",
"chainId": 34
}
@ -267,10 +255,6 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x055f47f1250012c6b20c436570a76e52c17af2d5"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
@ -314,7 +298,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0x473e002D7add6fB67a4964F13bFd61280Ca46886"],
"filters": [
{
"addresses": ["0x473e002D7add6fB67a4964F13bFd61280Ca46886"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "blast",
"chainId": 36
}
@ -326,11 +316,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x473e002D7add6fB67a4964F13bFd61280Ca46886"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -344,7 +330,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0x376428e7f26D5867e69201b275553C45B09EE090"],
"filters": [
{
"addresses": ["0x376428e7f26D5867e69201b275553C45B09EE090"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "mantle",
"chainId": 35
}
@ -356,11 +348,39 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x376428e7f26D5867e69201b275553C45B09EE090"],
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-xlayer",
"chain": "xlayer",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 1,
"commitment": "latest",
"interval": 5000,
"filters": [
{
"addresses": ["0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
],
"chain": "xlayer",
"chainId": 37
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event"
}
}
]
@ -374,10 +394,17 @@ data:
"source": {
"action": "PollEvm",
"config": {
"fromBlock": 120604056,
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722"],
"filters": [
{
"addresses": ["0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "optimism",
"chainId": 24
}
@ -389,11 +416,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -407,7 +430,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"filters": [
{
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "base",
"chainId": 30
}
@ -419,11 +448,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -437,7 +462,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xa321448d90d4e5b0A732867c18eA198e75CAC48E"],
"filters": [
{
"addresses": ["0xa321448d90d4e5b0A732867c18eA198e75CAC48E"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "celo",
"chainId": 14
}
@ -449,11 +480,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xa321448d90d4e5b0A732867c18eA198e75CAC48E"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -467,7 +494,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585"],
"filters": [
{
"addresses": ["0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "oasis",
"chainId": 7
}
@ -479,11 +512,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -497,7 +526,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7"],
"filters": [
{
"addresses": ["0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "klaytn",
"chainId": 13
}
@ -509,11 +544,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -527,7 +558,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7"],
"filters": [
{
"addresses": ["0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "polygon",
"chainId": 5
}
@ -539,11 +576,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -586,7 +619,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"filters": [
{
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "blast",
"chainId": 36
}
@ -598,11 +637,7 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event"
}
}
]
@ -616,7 +651,13 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"filters": [
{
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
}
],
"chain": "scroll",
"chainId": 34
}
@ -628,10 +669,38 @@ data:
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"],
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-xlayer",
"chain": "xlayer",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"filters": [
{
"addresses": ["0x194B123c5E96B9b2E49763619985790Dc241CAC0"],
"type": "Portal Token Bridge",
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
}
],
"chain": "xlayer",
"chainId": 37
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"metricName": "process_source_event"
}
}
@ -680,10 +749,18 @@ spec:
- name: BASE_RPCS
value: '{{ .BASE_RPCS }}'
{{ end }}
{{ if .BASE_SEPOLIA_RPCS }}
- name: BASE_SEPOLIA_RPCS
value: '{{ .BASE_SEPOLIA_RPCS }}'
{{ end }}
{{ if .OPTIMISM_RPCS }}
- name: OPTIMISM_RPCS
value: '{{ .OPTIMISM_RPCS }}'
{{ end }}
{{ if .OPTIMISM_SEPOLIA_RPCS }}
- name: OPTIMISM_SEPOLIA_RPCS
value: '{{ .OPTIMISM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ARBITRUM_RPCS }}
- name: ARBITRUM_RPCS
value: '{{ .ARBITRUM_RPCS }}'
@ -692,13 +769,9 @@ spec:
- name: POLYGON_RPCS
value: '{{ .POLYGON_RPCS }}'
{{ end }}
{{ if .BASE_SEPOLIA_RPCS }}
- name: BASE_SEPOLIA_RPCS
value: '{{ .BASE_SEPOLIA_RPCS }}'
{{ end }}
{{ if .OPTIMISM_SEPOLIA_RPCS }}
- name: OPTIMISM_SEPOLIA_RPCS
value: '{{ .OPTIMISM_SEPOLIA_RPCS }}'
{{ if .POLYGON_SEPOLIA_RPCS }}
- name: POLYGON_SEPOLIA_RPCS
value: '{{ .POLYGON_SEPOLIA_RPCS }}'
{{ end }}
{{ if .CELO_RPCS }}
- name: CELO_RPCS
@ -708,10 +781,6 @@ spec:
- name: SCROLL_RPCS
value: '{{ .SCROLL_RPCS }}'
{{ end }}
{{ if .POLYGON_SEPOLIA_RPCS }}
- name: POLYGON_SEPOLIA_RPCS
value: '{{ .POLYGON_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ARBITRUM_SEPOLIA_RPCS }}
- name: ARBITRUM_SEPOLIA_RPCS
value: '{{ .ARBITRUM_SEPOLIA_RPCS }}'
@ -724,6 +793,14 @@ spec:
- name: KLAYTN_RPCS
value: '{{ .KLAYTN_RPCS }}'
{{ end }}
{{ if .XLAYER_RPCS }}
- name: XLAYER_RPCS
value: '{{ .XLAYER_RPCS }}'
{{ end }}
{{ if .MANTLE_RPCS }}
- name: MANTLE_RPCS
value: '{{ .MANTLE_RPCS }}'
{{ end }}
image: {{ .IMAGE_NAME }}
resources:
limits:

View File

@ -37,121 +37,71 @@ data:
testnet-jobs.json: |-
[
{
"id": "poll-log-message-published-arbitrum-sepolia",
"chain": "arbitrum-sepolia",
"id": "poll-log-message-published-sui",
"chain": "sui",
"source": {
"action": "PollEvm",
"action": "PollSuiTransactions",
"config": {
"blockBatchSize": 1000,
"commitment": "latest",
"interval": 30000,
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"chain": "arbitrum-sepolia",
"chainId": 10003
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-ethereum-sepolia",
"chain": "ethereum-sepolia",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78"],
"chain": "ethereum-sepolia",
"chainId": 10002
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-ethereum-holesky",
"chain": "ethereum-holesky",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a"],
"chain": "ethereum-holesky",
"chainId": 10006
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-xlayer",
"chain": "xlayer",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 1,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780"],
"chain": "xlayer",
"chainId": 37
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94",
"module": "publish_message",
"function": "publish_message"
}
}
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"mapper": "suiLogMessagePublishedMapper",
"config": {
"eventTypes": [
"0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94::publish_message::WormholeMessage"
],
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-aptos",
"chain": "aptos",
"source": {
"action": "PollAptos",
"config": {
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 25000,
"addresses": ["0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625"],
"chain": "aptos",
"chainId": 22,
"filters": [
{
"fieldName": "event",
"address": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
"event": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessageHandle",
"type": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessage"
}
]
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "aptosLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-aptos",
"chain": "aptos",
"commitment": "finalized"
}
}
}
]
@ -160,91 +110,76 @@ data:
mainnet-jobs.json: |-
[
{
"id": "poll-log-message-published-arbitrum",
"chain": "arbitrum",
"id": "poll-log-message-published-sui",
"chain": "sui",
"source": {
"action": "PollEvm",
"action": "PollSuiTransactions",
"config": {
"blockBatchSize": 1000,
"commitment": "latest",
"interval": 5000,
"addresses": ["0xa5f208e072434bC67592E4C49C1B991BA79BCA46"],
"chain": "arbitrum",
"chainId": 23
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
"module": "publish_message",
"function": "publish_message"
}
}
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"mapper": "suiLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0xa5f208e072434bC67592E4C49C1B991BA79BCA46"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"eventTypes": [
"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a::publish_message::WormholeMessage"
],
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-sui",
"chain": "sui",
"commitment": "immediate"
}
}
}
]
},
{
"id": "poll-log-message-published-ethereum",
"chain": "ethereum",
"id": "poll-log-message-published-aptos",
"chain": "aptos",
"source": {
"action": "PollEvm",
"action": "PollAptos",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 15000,
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"chain": "ethereum",
"chainId": 2
"addresses": ["0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625"],
"chain": "aptos",
"chainId": 22,
"filters": [
{
"fieldName": "event",
"address": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
"event": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessageHandle",
"type": "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625::state::WormholeMessage"
}
]
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"mapper": "aptosLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
}
}
]
},
{
"id": "poll-log-message-published-xlayer",
"chain": "xlayer",
"source": {
"action": "PollEvm",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": ["0x194B123c5E96B9b2E49763619985790Dc241CAC0"],
"chain": "xlayer",
"chainId": 37
}
},
"handlers": [
{
"action": "HandleEvmLogs",
"target": "sns",
"mapper": "evmLogMessagePublishedMapper",
"config": {
"abi": "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
"filter": {
"addresses": ["0x194B123c5E96B9b2E49763619985790Dc241CAC0"],
"topics": ["0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"]
},
"metricName": "process_source_event"
"metricName": "process_source_event",
"metricLabels": {
"job": "poll-log-message-published-aptos",
"chain": "aptos",
"commitment": "finalized"
}
}
}
]
@ -288,29 +223,13 @@ spec:
value: {{ .SNS_REGION }}
- name: JOBS_DIR
value: /home/node/app/jobs
{{ if .ARBITRUM_RPCS }}
- name: ARBITRUM_RPCS
value: '{{ .ARBITRUM_RPCS }}'
{{ if .SUI_RPCS }}
- name: SUI_RPCS
value: '{{ .SUI_RPCS }}'
{{ end }}
{{ if .ARBITRUM_SEPOLIA_RPCS }}
- name: ARBITRUM_SEPOLIA_RPCS
value: '{{ .ARBITRUM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ETHEREUM_SEPOLIA_RPCS }}
- name: ETHEREUM_SEPOLIA_RPCS
value: '{{ .ETHEREUM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ETHEREUM_RPCS }}
- name: ETHEREUM_RPCS
value: '{{ .ETHEREUM_RPCS }}'
{{ end }}
{{ if .ETHEREUM_HOLESKY_RPCS }}
- name: ETHEREUM_HOLESKY_RPCS
value: '{{ .ETHEREUM_HOLESKY_RPCS }}'
{{ end }}
{{ if .XLAYER_RPCS }}
- name: XLAYER_RPCS
value: '{{ .XLAYER_RPCS }}'
{{ if .APTOS_RPCS }}
- name: APTOS_RPCS
value: '{{ .APTOS_RPCS }}'
{{ end }}
image: {{ .IMAGE_NAME }}
resources:

File diff suppressed because it is too large Load Diff

View File

@ -36,45 +36,6 @@ metadata:
data:
testnet-jobs.json: |-
[
{
"id": "poll-redeemed-transactions-aptos",
"chain": "aptos",
"source": {
"action": "PollAptos",
"records": "GetAptosTransactions",
"config": {
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 5000,
"addresses": [
"0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130"
],
"chain": "aptos",
"chainId": 22,
"filters": [
{
"address": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"type": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f::complete_transfer::submit_vaa_and_register_entry"
},
{
"address": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130",
"type": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130::complete_transfer::submit_vaa_and_register_entry"
}
]
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "aptosRedeemedTransactionFoundMapper",
"config": {
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-redeemed-transactions-fantom",
"chain": "fantom",
@ -84,17 +45,23 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x599cea2204b4faecd584ab1f2b6aca137a0afbe8",
"0x63eD9318628D26BdCB15df58B53BB27231D1B227",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0x63eD9318628D26BdCB15df58B53BB27231D1B227"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "fantom",
"chainId": 10,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 10
}
},
"handlers": [
@ -103,17 +70,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x599cea2204b4faecd584ab1f2b6aca137a0afbe8",
"0x63eD9318628D26BdCB15df58B53BB27231D1B227",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -128,16 +84,23 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x88d8004a9bdbfd9d28090a02010c19897a29605c",
"0xC5c25B41AB0b797571620F5204Afa116A44c0ebA"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0xC5c25B41AB0b797571620F5204Afa116A44c0ebA"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "oasis",
"chainId": 7,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 7
}
},
"handlers": [
@ -146,16 +109,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x88d8004a9bdbfd9d28090a02010c19897a29605c",
"0xC5c25B41AB0b797571620F5204Afa116A44c0ebA"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -170,18 +123,29 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0xbc976d4b9d57e57c3ca52e1fd136c45ff7955a96",
"0x98A0F4B96972b32Fcb3BD03cAeB66A44a6aB9Edb",
"0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0x98A0F4B96972b32Fcb3BD03cAeB66A44a6aB9Edb"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "moonbeam",
"chainId": 16,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 16
}
},
"handlers": [
@ -190,18 +154,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0xbc976d4b9d57e57c3ca52e1fd136c45ff7955a96",
"0x98A0F4B96972b32Fcb3BD03cAeB66A44a6aB9Edb",
"0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -214,20 +166,31 @@ data:
"action": "PollEvm",
"records": "GetEvmTransactions",
"config": {
"blockBatchSize": 10,
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x05ca6037ec51f8b712ed2e6fa72219feae74e153",
"0xaCD8190F647a31E56A656748bC30F69259f245Db",
"0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0xaCD8190F647a31E56A656748bC30F69259f245Db"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "celo",
"chainId": 14,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 14
}
},
"handlers": [
@ -236,18 +199,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x05ca6037ec51f8b712ed2e6fa72219feae74e153",
"0xaCD8190F647a31E56A656748bC30F69259f245Db",
"0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84",
"0x9563a59C15842a6f322B10f69d1dD88b41f2E97B"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -263,14 +214,16 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": [
"0x22427d90b7da3fa4642f7025a854c7254e4e45bf"
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
}
],
"chain": "scroll",
"chainId": 34,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 34
}
},
"handlers": [
@ -279,15 +232,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x22427d90b7da3fa4642f7025a854c7254e4e45bf"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -303,14 +247,16 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": [
"0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D"
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
}
],
"chain": "mantle",
"chainId": 35,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 35
}
},
"handlers": [
@ -319,15 +265,6 @@ data:
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -336,45 +273,6 @@ data:
]
mainnet-jobs.json: |-
[
{
"id": "poll-redeemed-transactions-aptos",
"chain": "aptos",
"source": {
"action": "PollAptos",
"records": "GetAptosTransactions",
"config": {
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 3000,
"addresses": [
"0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130"
],
"chain": "aptos",
"chainId": 22,
"filters": [
{
"address": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"type": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f::complete_transfer::submit_vaa_and_register_entry"
},
{
"address": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130",
"type": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130::complete_transfer::submit_vaa_and_register_entry"
}
]
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "aptosRedeemedTransactionFoundMapper",
"config": {
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-redeemed-transactions-fantom",
"chain": "fantom",
@ -384,21 +282,35 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x7c9fc5741288cdfdd83ceb07f3ea7e22618d79d2",
"0x8b47f02e7e20174c76af910adc0ad8a4b0342f4c",
"0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "NTT",
"topics": ["0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "fantom",
"chainId": 10,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 10
}
},
"handlers": [
@ -408,20 +320,6 @@ data:
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x7c9fc5741288cdfdd83ceb07f3ea7e22618d79d2",
"0x8b47f02e7e20174c76af910adc0ad8a4b0342f4c",
"0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -436,17 +334,23 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x5848c791e09901b40a9ef749f2a6735b418d7564",
"0x04952D522Ff217f40B5Ef3cbF659EcA7b952a6c1"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0x04952D522Ff217f40B5Ef3cbF659EcA7b952a6c1"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "oasis",
"chainId": 7,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 7
}
},
"handlers": [
@ -456,16 +360,6 @@ data:
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x5848c791e09901b40a9ef749f2a6735b418d7564",
"0x04952D522Ff217f40B5Ef3cbF659EcA7b952a6c1"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -480,19 +374,29 @@ data:
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0xb1731c586ca89a23809861c6103f0b96b3f57d92",
"0x453cfbe096c0f8d763e8c5f24b441097d577bde2",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0x453cfbe096c0f8d763e8c5f24b441097d577bde2"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "moonbeam",
"chainId": 16,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 16
}
},
"handlers": [
@ -502,18 +406,6 @@ data:
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0xb1731c586ca89a23809861c6103f0b96b3f57d92",
"0x453cfbe096c0f8d763e8c5f24b441097d577bde2",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -526,21 +418,31 @@ data:
"action": "PollEvm",
"records": "GetEvmTransactions",
"config": {
"blockBatchSize": 10,
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x796dff6d74f3e27060b71255fe517bfb23c93eed",
"0xA6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
"interval": 15000,
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": ["0xA6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3"],
"type": "NFT",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],
"strategy": "GetTransactionsByBlocksStrategy"
}
],
"chain": "celo",
"chainId": 14,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chainId": 14
}
},
"handlers": [
@ -550,18 +452,6 @@ data:
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x796dff6d74f3e27060b71255fe517bfb23c93eed",
"0xA6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xcafd2f0a35a4459fa40c0517e17e6fa2939441ca"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
@ -577,17 +467,22 @@ data:
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": [
"0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911"
"filters": [
{
"addresses": [],
"type": "Portal Token Bridge (Connect, Portico, Omniswap, tBTC, etc)",
"topics": ["0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169"],
"strategy": "GetTransactionsByLogFiltersStrategy"
},
{
"addresses": [],
"type": "Standard Relayer",
"topics": ["0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"],
"strategy": "GetTransactionsByLogFiltersStrategy"
}
],
"chain": "scroll",
"chainId": 34,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
"chainId": 34
}
},
"handlers": [
@ -597,17 +492,6 @@ data:
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
},
"metricName": "process_vaa_event"
}
}
@ -656,10 +540,6 @@ spec:
- name: BASE_RPCS
value: '{{ .BASE_RPCS }}'
{{ end }}
{{ if .ARBITRUM_RPCS }}
- name: ARBITRUM_RPCS
value: '{{ .ARBITRUM_RPCS }}'
{{ end }}
{{ if .POLYGON_RPCS }}
- name: POLYGON_RPCS
value: '{{ .POLYGON_RPCS }}'
@ -676,10 +556,6 @@ spec:
- name: BASE_SEPOLIA_RPCS
value: '{{ .BASE_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ARBITRUM_SEPOLIA_RPCS }}
- name: ARBITRUM_SEPOLIA_RPCS
value: '{{ .ARBITRUM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .ETHEREUM_HOLESKY_RPCS }}
- name: ETHEREUM_HOLESKY_RPCS
value: '{{ .ETHEREUM_HOLESKY_RPCS }}'
@ -688,10 +564,6 @@ spec:
- name: CELO_RPCS
value: '{{ .CELO_RPCS }}'
{{ end }}
{{ if .APTOS_RPCS }}
- name: APTOS_RPCS
value: '{{ .APTOS_RPCS }}'
{{ end }}
{{ if .SCROLL_RPCS }}
- name: SCROLL_RPCS
value: '{{ .SCROLL_RPCS }}'

View File

@ -37,137 +37,101 @@ data:
testnet-jobs.json: |-
[
{
"id": "poll-redeemed-transactions-optimism-sepolia",
"chain": "optimism-sepolia",
"id": "poll-redeemed-transactions-aptos",
"chain": "aptos",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"action": "PollAptos",
"records": "GetAptosTransactions",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 5000,
"addresses": [
"0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c",
"0x99737Ec4B815d816c49A385943baf0380e75c0Ac",
"0x41265eb2863bf0238081f6aeefef73549c82c3dd",
"0x93bad53ddfb6132b0ac8e37f6029163e63372cee",
"0x27812285fbe85BA1DF242929B906B31EE3dd1b9f",
"0x5FB63D9e076a314023F2D1aB5dBFd7045C281EbA"
"0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130"
],
"chain": "optimism-sepolia",
"chainId": 10005,
"topics": [
"0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6",
"0xf02867db6908ee5f81fd178573ae9385837f0a0a72553f8c08306759a7e0f00e",
"0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0",
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"metricName": "process_vaa_event",
"filter": {
"addresses": [
"0x2703483B1a5a7c577e8680de9Df8Be03c6f30e3c",
"0x99737Ec4B815d816c49A385943baf0380e75c0Ac",
"0x41265eb2863bf0238081f6aeefef73549c82c3dd",
"0x93bad53ddfb6132b0ac8e37f6029163e63372cee",
"0x27812285fbe85BA1DF242929B906B31EE3dd1b9f",
"0x5FB63D9e076a314023F2D1aB5dBFd7045C281EbA"
],
"topics": [
"0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6",
"0xf02867db6908ee5f81fd178573ae9385837f0a0a72553f8c08306759a7e0f00e",
"0xf6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0",
"0x504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a91",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
}
}
}
]
},
{
"id": "poll-redeemed-transactions-blast",
"chain": "blast",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2"
],
"chain": "blast",
"chainId": 36,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chain": "aptos",
"chainId": 22,
"filters": [
{
"address": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"type": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f::complete_transfer::submit_vaa_and_register_entry"
},
{
"address": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130",
"type": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130::complete_transfer::submit_vaa_and_register_entry"
}
]
}
},
"handlers": [
{
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "aptosRedeemedTransactionFoundMapper",
"config": {
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-redeemed-transactions-xlayer",
"chain": "xlayer",
"id": "poll-transfer-redeems-sui",
"chain": "sui",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"action": "PollSuiTransactions",
"config": {
"blockBatchSize": 1,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0xdA91a06299BBF302091B053c6B9EF86Eff0f930D"
],
"chain": "xlayer",
"chainId": 37,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x562760fc51d90d4ae1835bac3e91e0e6987d3497b06f066941d3e51f6e8d76d0",
"module": "complete_transfer",
"function": "authorize_transfer"
}
}
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"mapper": "suiRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0xdA91a06299BBF302091B053c6B9EF86Eff0f930D"
],
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"eventTypes": [
"0x562760fc51d90d4ae1835bac3e91e0e6987d3497b06f066941d3e51f6e8d76d0::complete_transfer::TransferRedeemed"
],
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-transfer-with-payload-redeems-sui",
"chain": "sui",
"source": {
"action": "PollSuiTransactions",
"config": {
"interval": 5000,
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x562760fc51d90d4ae1835bac3e91e0e6987d3497b06f066941d3e51f6e8d76d0",
"module": "complete_transfer_with_payload",
"function": "authorize_transfer"
}
}
}
},
"handlers": [
{
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "suiRedeemedTransactionFoundMapper",
"config": {
"eventTypes": [
"0x562760fc51d90d4ae1835bac3e91e0e6987d3497b06f066941d3e51f6e8d76d0::complete_transfer::TransferRedeemed"
],
"metricName": "process_vaa_event"
}
}
@ -207,154 +171,101 @@ data:
mainnet-jobs.json: |-
[
{
"id": "poll-redeemed-transactions-optimism",
"chain": "optimism",
"id": "poll-redeemed-transactions-aptos",
"chain": "aptos",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"action": "PollAptos",
"records": "GetAptosTransactions",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"limitBatchSize": 100,
"commitment": "finalized",
"interval": 3000,
"addresses": [
"0x4cb69fae7e7af841e44e1a1c30af640739378bb2",
"0x1d68124e65fafc907325e3edbf8c4d84499daa8b",
"0x9ae506cddd27dee1275fd1fe6627e5dc65257061",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585",
"0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d",
"0x1293a54e160D1cd7075487898d65266081A15458",
"0x956b0Aa39B37B23A0Ff13A5c9B22aB4772616737",
"0xBF5f3f65102aE745A48BD521d10BaB5BF02A9eF4"
"0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130"
],
"chain": "optimism",
"chainId": 24,
"topics": [
"0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6",
"0xf02867db6908ee5f81fd178573ae9385837f0a0a72553f8c08306759a7e0f00e",
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xc2addcb063016f6dc1647fc8cd7206c3436cc4293c4acffe4feac288459ca7fc",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
"chain": "aptos",
"chainId": 22,
"filters": [
{
"address": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f",
"type": "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f::complete_transfer::submit_vaa_and_register_entry"
},
{
"address": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130",
"type": "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130::complete_transfer::submit_vaa_and_register_entry"
}
]
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"action": "HandleAptosTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"mapper": "aptosRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x4cb69fae7e7af841e44e1a1c30af640739378bb2",
"0x1d68124e65fafc907325e3edbf8c4d84499daa8b",
"0x9ae506cddd27dee1275fd1fe6627e5dc65257061",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911",
"0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585",
"0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d",
"0x1293a54e160D1cd7075487898d65266081A15458",
"0x956b0Aa39B37B23A0Ff13A5c9B22aB4772616737",
"0xBF5f3f65102aE745A48BD521d10BaB5BF02A9eF4"
],
"topics": [
"0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6",
"0xf02867db6908ee5f81fd178573ae9385837f0a0a72553f8c08306759a7e0f00e",
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xc2addcb063016f6dc1647fc8cd7206c3436cc4293c4acffe4feac288459ca7fc",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-redeemed-transactions-blast",
"chain": "blast",
"id": "poll-transfer-redeems-sui",
"chain": "sui",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"action": "PollSuiTransactions",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 5000,
"addresses": [
"0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911"
],
"chain": "blast",
"chainId": 36,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x26efee2b51c911237888e5dc6702868abca3c7ac12c53f76ef8eba0697695e3d",
"module": "complete_transfer",
"function": "authorize_transfer"
}
}
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"mapper": "suiRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d",
"0x27428dd2d3dd32a4d7f7c497eaaa23130d894911"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"
]
},
"eventTypes": [
"0x26efee2b51c911237888e5dc6702868abca3c7ac12c53f76ef8eba0697695e3d::complete_transfer::TransferRedeemed"
],
"metricName": "process_vaa_event"
}
}
]
},
{
"id": "poll-redeemed-transactions-xlayer",
"chain": "xlayer",
"id": "poll-transfer-with-payload-redeems-sui",
"chain": "sui",
"source": {
"action": "PollEvm",
"records": "GetEvmTransactions",
"action": "PollSuiTransactions",
"config": {
"blockBatchSize": 100,
"commitment": "latest",
"interval": 15000,
"addresses": [
"0x5537857664B0f9eFe38C9f320F75fEf23234D904"
],
"chain": "xlayer",
"chainId": 37,
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
"interval": 5000,
"chain": "sui",
"filter": {
"MoveFunction": {
"package": "0x26efee2b51c911237888e5dc6702868abca3c7ac12c53f76ef8eba0697695e3d",
"module": "complete_transfer_with_payload",
"function": "authorize_transfer"
}
}
}
},
"handlers": [
{
"action": "HandleEvmTransactions",
"action": "HandleSuiTransactions",
"target": "sns",
"mapper": "evmRedeemedTransactionFoundMapper",
"mapper": "suiRedeemedTransactionFoundMapper",
"config": {
"abi": "",
"filter": {
"addresses": [
"0x5537857664B0f9eFe38C9f320F75fEf23234D904"
],
"topics": [
"0xcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c169",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
},
"eventTypes": [
"0x26efee2b51c911237888e5dc6702868abca3c7ac12c53f76ef8eba0697695e3d::complete_transfer::TransferRedeemed"
],
"metricName": "process_vaa_event"
}
}
@ -429,21 +340,13 @@ spec:
value: {{ .SNS_REGION }}
- name: JOBS_DIR
value: /home/node/app/jobs
{{ if .OPTIMISM_RPCS }}
- name: OPTIMISM_RPCS
value: '{{ .OPTIMISM_RPCS }}'
{{ if .APTOS_RPCS }}
- name: APTOS_RPCS
value: '{{ .APTOS_RPCS }}'
{{ end }}
{{ if .OPTIMISM_SEPOLIA_RPCS }}
- name: OPTIMISM_SEPOLIA_RPCS
value: '{{ .OPTIMISM_SEPOLIA_RPCS }}'
{{ end }}
{{ if .BLAST_RPCS }}
- name: BLAST_RPCS
value: '{{ .BLAST_RPCS }}'
{{ end }}
{{ if .XLAYER_RPCS }}
- name: XLAYER_RPCS
value: '{{ .XLAYER_RPCS }}'
{{ if .SUI_RPCS }}
- name: SUI_RPCS
value: '{{ .SUI_RPCS }}'
{{ end }}
image: {{ .IMAGE_NAME }}
resources: