Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@ NETWORK_TYPE=ethereum
NETWORK_ENVIRONMENT=sepolia

# blockchain
ALCHEMY_API_KEY=dummy
L1_CHAIN=sepolia
L2_CHAIN=scrollSepolia
L1_RPC_URLS=<your-rpc-url>
L2_RPC_URLS=<your-rpc-url>
ALCHEMY_API_KEY=<your-alchemy-api-key>
ALCHEMY_L1_NETWORK=eth-sepolia
ALCHEMY_L2_NETWORK=scroll-sepolia
TRANSACTION_WAIT_TRANSACTION_TIMEOUT=30000
TRANSACTION_INCREMENT_RATE=0.3

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export const fetchLatestRollupBlockNumber = async () => {
const rollupContract = getContract({
address: config.ROLLUP_CONTRACT_ADDRESS as `0x${string}`,
abi: RollupAbi,
client: createNetworkClient("scroll"),
client: createNetworkClient("l2"),
});
const blockNumber = await rollupContract.read.getLatestBlockNumber();
return Number(blockNumber);
Expand Down
27 changes: 14 additions & 13 deletions packages/deposit-analyzer/scripts/replay-messenger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ const GAS_CONFIG = {

const FIXED_DEPOSIT_VALUE = "0.1";

const fetchSentMessages = async (ethereumClient: PublicClient) => {
const l1SentMessageEvents = await fetchEvents<SentMessageEvent>(ethereumClient, {
const fetchSentMessages = async (l1Client: PublicClient) => {
const l1SentMessageEvents = await fetchEvents<SentMessageEvent>(l1Client, {
startBlockNumber: RELAY_CONFIG.startBlockNumber,
endBlockNumber: RELAY_CONFIG.endBlockNumber,
blockRange: BLOCK_RANGE_MINIMUM,
Expand All @@ -53,18 +53,18 @@ const fetchSentMessages = async (ethereumClient: PublicClient) => {
};

const submitTx = async (
ethereumClient: PublicClient,
l1Client: PublicClient,
sentMessageEvent: SentMessageEvent,
newGasLimit: number,
) => {
const walletClientData = getWalletClient("depositAnalyzer", "ethereum");
const refundAddress = walletClientData.account.address;
const walletL1ClientData = getWalletClient("depositAnalyzer", "l1");
const refundAddress = walletL1ClientData.account.address;

const contractCallParams: ContractCallParameters = {
contractAddress: RELAY_CONFIG.l1ScrollMessengerContractAddress,
abi: L1ScrollMessengerAbi as Abi,
functionName: "replayMessage",
account: walletClientData.account,
account: walletL1ClientData.account,
args: [
sentMessageEvent.args.sender,
sentMessageEvent.args.target,
Expand All @@ -76,11 +76,11 @@ const submitTx = async (
],
};

const { currentNonce } = await getNonce(ethereumClient, walletClientData.account.address);
const { currentNonce } = await getNonce(l1Client, walletL1ClientData.account.address);

const provider = new ethers.JsonRpcProvider(ethereumClient.transport.url);
const provider = new ethers.JsonRpcProvider(l1Client.transport.url);
const signer = new ethers.Wallet(
toHex(walletClientData.account.getHdKey().privateKey!),
toHex(walletL1ClientData.account.getHdKey().privateKey!),
provider,
);

Expand Down Expand Up @@ -111,7 +111,7 @@ const submitTx = async (
});

const receipt = await ethersWaitForTransactionConfirmation(
ethereumClient,
l1Client,
transactionHash,
"replayMessage",
{
Expand All @@ -131,7 +131,7 @@ const calculateAnalyzeAndRelayGasLimit = (numDepositsToRelay: number) => {
const main = async () => {
console.log("debug: RELAY_CONFIG", RELAY_CONFIG);

const ethereumClient = createNetworkClient("ethereum");
const l1Client = createNetworkClient("l1");
const isValid = validateBlockRange(
"fetchSentMessages",
RELAY_CONFIG.startBlockNumber,
Expand All @@ -142,7 +142,7 @@ const main = async () => {
return;
}

const events = await fetchSentMessages(ethereumClient);
const events = await fetchSentMessages(l1Client);
console.log("Fetched Sent Messages:", events);

const targetEvent = events.find(
Expand All @@ -156,8 +156,9 @@ const main = async () => {
const newGasLimit = calculateAnalyzeAndRelayGasLimit(RELAY_CONFIG.numDepositsToRelay);
console.log("New Gas Limit:", newGasLimit.toString());

await submitTx(ethereumClient, targetEvent, Number(newGasLimit));
await submitTx(l1Client, targetEvent, Number(newGasLimit));
};

main().catch((error) => {
console.error("Error fetching sent messages:", error);
});
10 changes: 5 additions & 5 deletions packages/deposit-analyzer/src/service/event.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import {
import type { Abi, PublicClient } from "viem";

export const getDepositedEvent = async (
ethereumClient: PublicClient,
l1Client: PublicClient,
startBlockNumber: bigint,
currentBlockNumber: bigint,
lastProcessedEvent: EventData | null,
) => {
try {
const depositEvents = await fetchEvents<DepositEvent>(ethereumClient, {
const depositEvents = await fetchEvents<DepositEvent>(l1Client, {
startBlockNumber,
endBlockNumber: currentBlockNumber,
blockRange: BLOCK_RANGE_MINIMUM,
Expand All @@ -28,7 +28,7 @@ export const getDepositedEvent = async (
});

if (depositEvents.length !== 0 && lastProcessedEvent === null) {
const lastRelayedDepositId = (await ethereumClient.readContract({
const lastRelayedDepositId = (await l1Client.readContract({
address: LIQUIDITY_CONTRACT_ADDRESS,
abi: LiquidityAbi as Abi,
functionName: "getLastRelayedDepositId",
Expand All @@ -51,12 +51,12 @@ export const getDepositedEvent = async (
};

export const getDepositsRelayedEvent = async (
ethereumClient: PublicClient,
l1Client: PublicClient,
startBlockNumber: bigint,
currentBlockNumber: bigint,
) => {
try {
const depositsRelayedEvents = await fetchEvents<DepositsRelayedEvent>(ethereumClient, {
const depositsRelayedEvents = await fetchEvents<DepositsRelayedEvent>(l1Client, {
startBlockNumber,
endBlockNumber: currentBlockNumber,
blockRange: BLOCK_RANGE_MINIMUM,
Expand Down
14 changes: 7 additions & 7 deletions packages/deposit-analyzer/src/service/job.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ import { submitRelayDeposits } from "./submit.service";
import { splitDepositSummary } from "./summarize.service";

export const performJob = async () => {
const ethereumClient = createNetworkClient("ethereum");
const l1Client = createNetworkClient("l1");
const event = new Event(FIRESTORE_DOCUMENT_EVENTS.DEPOSITED);

const [currentBlockNumber, lastProcessedEvent] = await Promise.all([
await ethereumClient.getBlockNumber(),
await l1Client.getBlockNumber(),
await event.getEvent<EventData>(),
]);

await processAnalyzer(ethereumClient, currentBlockNumber, event, lastProcessedEvent);
await processAnalyzer(l1Client, currentBlockNumber, event, lastProcessedEvent);
};

const processAnalyzer = async (
ethereumClient: ReturnType<typeof createNetworkClient>,
l1Client: ReturnType<typeof createNetworkClient>,
currentBlockNumber: bigint,
event: Event,
lastProcessedEvent: EventData | null,
Expand All @@ -41,7 +41,7 @@ const processAnalyzer = async (
}

const processedDepositEvents = await getDepositedEvent(
ethereumClient,
l1Client,
startBlockNumber,
currentBlockNumber,
lastProcessedEvent,
Expand All @@ -56,7 +56,7 @@ const processAnalyzer = async (
logger.info(`New deposit events: ${processedDepositEvents.length}`);

const processedState = await getDepositsRelayedEvent(
ethereumClient,
l1Client,
startBlockNumber,
currentBlockNumber,
);
Expand All @@ -68,7 +68,7 @@ const processAnalyzer = async (

if (depositSummary.shouldSubmit) {
for (const batch of depositSummary.batches) {
await submitRelayDeposits(ethereumClient, batch);
await submitRelayDeposits(l1Client, batch);
await updateEventState(event, batch.blockNumber);
}
}
Expand Down
16 changes: 8 additions & 8 deletions packages/deposit-analyzer/src/service/submit.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { FIXED_DEPOSIT_VALUE } from "../constants";
import type { DepositAnalysisSummary } from "../types";

export const submitRelayDeposits = async (
ethereumClient: PublicClient,
l1Client: PublicClient,
depositSummary: DepositAnalysisSummary,
) => {
const retryOptions: RetryOptions = {
Expand All @@ -43,14 +43,14 @@ export const submitRelayDeposits = async (
const multiplier = calculateGasMultiplier(attempt, TRANSACTION_INCREMENT_RATE);

const { transactionHash } = await submitRelayDepositsWithRetry(
ethereumClient,
l1Client,
depositSummary,
multiplier,
retryOptions,
);

const receipt = await ethersWaitForTransactionConfirmation(
ethereumClient,
l1Client,
transactionHash,
"relayDeposits",
{
Expand Down Expand Up @@ -86,12 +86,12 @@ export const submitRelayDeposits = async (
};

export const submitRelayDepositsWithRetry = async (
ethereumClient: PublicClient,
l1Client: PublicClient,
depositSummary: DepositAnalysisSummary,
multiplier: number,
retryOptions: RetryOptions,
) => {
const walletClientData = getWalletClient("depositAnalyzer", "ethereum");
const walletClientData = getWalletClient("depositAnalyzer", "l1");

const contractCallParams: ContractCallParameters = {
contractAddress: LIQUIDITY_CONTRACT_ADDRESS,
Expand All @@ -102,8 +102,8 @@ export const submitRelayDepositsWithRetry = async (
};

const [{ pendingNonce, currentNonce }, gasPriceData] = await Promise.all([
getNonce(ethereumClient, walletClientData.account.address),
getEthersMaxGasMultiplier(ethereumClient, multiplier),
getNonce(l1Client, walletClientData.account.address),
getEthersMaxGasMultiplier(l1Client, multiplier),
]);
let { maxFeePerGas, maxPriorityFeePerGas } = gasPriceData;

Expand Down Expand Up @@ -133,7 +133,7 @@ export const submitRelayDepositsWithRetry = async (
maxPriorityFeePerGas,
};

const provider = new ethers.JsonRpcProvider(ethereumClient.transport.url);
const provider = new ethers.JsonRpcProvider(l1Client.transport.url);
const signer = new ethers.Wallet(
toHex(walletClientData.account.getHdKey().privateKey!),
provider,
Expand Down
4 changes: 2 additions & 2 deletions packages/indexer-event-watcher/src/service/event.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import {
import type { PublicClient } from "viem";

export const getHeartBeatEvents = async (
ethereumClient: PublicClient,
l2Client: PublicClient,
startBlockNumber: bigint,
currentBlockNumber: bigint,
) => {
const heartBeatEvents = await fetchEvents<BlockBuilderHeartbeatEvent>(ethereumClient, {
const heartBeatEvents = await fetchEvents<BlockBuilderHeartbeatEvent>(l2Client, {
startBlockNumber,
endBlockNumber: currentBlockNumber,
blockRange: BLOCK_RANGE_MINIMUM,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
import { BATCH_SIZE } from "../constants";

export const processIndexer = async (
ethereumClient: ReturnType<typeof createNetworkClient>,
l2Client: ReturnType<typeof createNetworkClient>,
events: BlockBuilderHeartbeatEvent[],
) => {
const lastIndexerEvents = events.reduce((acc, event) => {
Expand All @@ -24,7 +24,7 @@ export const processIndexer = async (
for (let i = 0; i < indexerEvents.length; i += BATCH_SIZE) {
const batch = indexerEvents.slice(i, i + BATCH_SIZE);
const indexerPromises = batch.map(async (event) => {
const block = await ethereumClient.getBlock({
const block = await l2Client.getBlock({
blockHash: event.blockHash as `0x${string}`,
})!;
if (!block) {
Expand Down
12 changes: 6 additions & 6 deletions packages/indexer-event-watcher/src/service/job.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import { getHeartBeatEvents } from "./event.service";
import { processIndexer } from "./indexer.service";

export const performJob = async (): Promise<void> => {
const ethereumClient = createNetworkClient("scroll");
const l2Client = createNetworkClient("l2");
const event = new Event(FIRESTORE_DOCUMENT_EVENTS.BLOCK_BUILDER_HEART_BEAT);

const [currentBlockNumber, lastProcessedEvent] = await Promise.all([
ethereumClient.getBlockNumber(),
l2Client.getBlockNumber(),
event.getEvent<EventData>(),
]);

Expand All @@ -34,22 +34,22 @@ export const performJob = async (): Promise<void> => {
return;
}

await processHeartBeatEvents(ethereumClient, startBlockNumber, currentBlockNumber);
await processHeartBeatEvents(l2Client, startBlockNumber, currentBlockNumber);
await updateEventState(event, currentBlockNumber);
};

const processHeartBeatEvents = async (
ethereumClient: ReturnType<typeof createNetworkClient>,
l2Client: ReturnType<typeof createNetworkClient>,
startBlockNumber: bigint,
currentBlockNumber: bigint,
) => {
const events = await getHeartBeatEvents(ethereumClient, startBlockNumber, currentBlockNumber);
const events = await getHeartBeatEvents(l2Client, startBlockNumber, currentBlockNumber);
if (events.length === 0) {
logger.info("No new heart beat events found.");
return;
}

const indexerInfos = await processIndexer(ethereumClient, events);
const indexerInfos = await processIndexer(l2Client, events);
logger.info(`Processed ${indexerInfos.length} events.`);
};

Expand Down
60 changes: 0 additions & 60 deletions packages/indexer-monitor/scripts/index.ts

This file was deleted.

Loading