diff --git a/package.json b/package.json index 6d4d5227d..b986da20e 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,8 @@ "deposit": "yarn ts-node ./scripts/spokepool.ts deposit", "dispute": "yarn ts-node ./scripts/hubpool.ts dispute", "update": "git pull && yarn reinstall && yarn version --non-interactive && git show --quiet", - "update-addresses": "yarn ts-node ./scripts/fetch-addresses.ts" + "update-addresses": "yarn ts-node ./scripts/fetch-addresses.ts", + "validate-root-bundle": "yarn ts-node src/scripts/validateRootBundle.ts" }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.2.3", diff --git a/src/adapter/BaseChainAdapter.ts b/src/adapter/BaseChainAdapter.ts index abcc31f07..5ca90d2fc 100644 --- a/src/adapter/BaseChainAdapter.ts +++ b/src/adapter/BaseChainAdapter.ts @@ -186,12 +186,12 @@ export class BaseChainAdapter { if (unavailableTokens.length > 0) { this.log("Some tokens do not have a bridge contract for L2 -> L1 bridging", { - unavailableTokens: unavailableTokens.map((token) => token.toNative()), + unavailableTokens, }); } if (tokensToApprove.length === 0) { - this.log("No L2 token bridge approvals needed", { l1Tokens: l1Tokens.map((token) => token.toNative()) }); + this.log("No L2 token bridge approvals needed", { l1Tokens }); return; } @@ -254,11 +254,11 @@ export class BaseChainAdapter { .filter(({ bridges }) => bridges.length > 0); if (unavailableTokens.length > 0) { this.log("Some tokens do not have a bridge contract", { - unavailableTokens: unavailableTokens.map((token) => token.toNative()), + unavailableTokens, }); } if (tokensToApprove.length === 0) { - this.log("No token bridge approvals needed", { l1Tokens: l1Tokens.map((token) => token.toNative()) }); + this.log("No token bridge approvals needed", { l1Tokens }); return; } const mrkdwn = await approveTokens(tokensToApprove, this.chainId, this.hubChainId, this.logger); @@ -288,8 +288,8 @@ export class BaseChainAdapter { "Failed to constructWithdrawToL1Txns", { toAddress: address, - l2Token: l2Token.toNative(), - l1Token: l1Token.toNative(), + l2Token: l2Token, + l1Token: l1Token, amount: amount.toString(), srcChainId: this.chainId, dstChainId: this.hubChainId, @@ -351,9 +351,9 @@ export class BaseChainAdapter { this.log( "Failed to construct L1 to L2 transaction", { - address: address.toNative(), - l1Token: l1Token.toNative(), - l2Token: l2Token.toNative(), + address: address, + l1Token: l1Token, + l2Token: l2Token, amount: amount.toString(), srcChainId: this.hubChainId, dstChainId: this.chainId, @@ -388,8 +388,8 @@ export class BaseChainAdapter { this.log( message, { - l1Token: l1Token.toNative(), - l2Token: l2Token.toNative(), + l1Token: l1Token, + l2Token: l2Token, amount, contract: contract.address, txnRequestData, diff --git a/src/clients/InventoryClient.ts b/src/clients/InventoryClient.ts index ed5b3ed94..a5e70b660 100644 --- a/src/clients/InventoryClient.ts +++ b/src/clients/InventoryClient.ts @@ -944,8 +944,8 @@ export class InventoryClient { log({ at: "InventoryClient", message, - l1Token: l1Token.toNative(), - l2Token: l2Token.toNative(), + l1Token, + l2Token, l2ChainId: chainId, balance, currentBalance, @@ -965,20 +965,8 @@ export class InventoryClient { // Extract unexecutable rebalances for logging. this.log("Considered inventory rebalances", { - rebalancesRequired: rebalancesRequired.map((rebalance) => { - return { - ...rebalance, - l1Token: rebalance.l1Token.toNative(), - l2Token: rebalance.l2Token.toNative(), - }; - }), - possibleRebalances: possibleRebalances.map((rebalance) => { - return { - ...rebalance, - l1Token: rebalance.l1Token.toNative(), - l2Token: rebalance.l2Token.toNative(), - }; - }), + rebalancesRequired, + possibleRebalances, }); // Finally, execute the rebalances. diff --git a/src/clients/bridges/AdapterManager.ts b/src/clients/bridges/AdapterManager.ts index babdedc06..bf4dd95d9 100644 --- a/src/clients/bridges/AdapterManager.ts +++ b/src/clients/bridges/AdapterManager.ts @@ -155,7 +155,7 @@ export class AdapterManager { this.logger.debug({ at: "AdapterManager", message: `Getting outstandingCrossChainTransfers for ${chainId}`, - adapterSupportedL1Tokens: adapterSupportedL1Tokens.map((l1Token) => l1Token.toNative()), + adapterSupportedL1Tokens, searchConfigs: adapter.getUpdatedSearchConfigs(), }); return this.adapters[chainId].getOutstandingCrossChainTransfers(adapterSupportedL1Tokens); @@ -173,7 +173,7 @@ export class AdapterManager { at: "AdapterManager", message: "Sending token cross-chain", chainId, - l1Token: l1Token.toNative(), + l1Token, amount, }); l2Token ??= this.l2TokenForL1Token(l1Token, chainId); @@ -192,7 +192,7 @@ export class AdapterManager { at: "AdapterManager", message: "Withdrawing token from L2", chainId, - l2Token: l2Token.toNative(), + l2Token, amount, }); const txnReceipts = this.adapters[chainId].withdrawTokenFromL2(address, l2Token, amount, simMode); diff --git a/src/dataworker/Dataworker.ts b/src/dataworker/Dataworker.ts index fca6919c0..446163622 100644 --- a/src/dataworker/Dataworker.ts +++ b/src/dataworker/Dataworker.ts @@ -616,10 +616,7 @@ export class Dataworker { this.logger.debug({ at: "Dataworker#validate", message: "Found pending proposal", - pendingRootBundle: { - ...pendingRootBundle, - proposer: pendingRootBundle.proposer.toNative(), - }, + pendingRootBundle, }); // Exit early if challenge period timestamp has passed: @@ -846,10 +843,7 @@ export class Dataworker { this.logger.debug({ at: "Dataworker#validate", message: "Empty pool rebalance root, submitting dispute", - rootBundle: { - ...rootBundle, - proposer: rootBundle.proposer.toNative(), - }, + rootBundle, }); return { valid: false, @@ -1050,31 +1044,11 @@ export class Dataworker { at: "Dataworker#validate", message: "Unexpected pool rebalance root, submitting dispute", expectedBlockRanges: blockRangesImpliedByBundleEndBlocks, - expectedPoolRebalanceLeaves: expectedPoolRebalanceRoot.leaves.map((leaf) => { - return { - ...leaf, - l1Tokens: leaf.l1Tokens.map((l1Token) => l1Token.toNative()), - }; - }), + expectedPoolRebalanceLeaves: expectedPoolRebalanceRoot.leaves, expectedPoolRebalanceRoot: expectedPoolRebalanceRoot.tree.getHexRoot(), - expectedRelayerRefundLeaves: expectedRelayerRefundRoot.leaves.map((leaf) => { - return { - ...leaf, - l2TokenAddress: leaf.l2TokenAddress.toNative(), - refundAddresses: leaf.refundAddresses.map((refundAddress) => refundAddress.toNative()), - }; - }), + expectedRelayerRefundLeaves: expectedRelayerRefundRoot.leaves, expectedRelayerRefundRoot: expectedRelayerRefundRoot.tree.getHexRoot(), - expectedSlowRelayLeaves: expectedSlowRelayRoot.leaves.map((leaf) => { - return { - ...leaf, - depositor: leaf.relayData.depositor.toNative(), - recipient: leaf.relayData.recipient.toNative(), - inputToken: leaf.relayData.inputToken.toNative(), - outputToken: leaf.relayData.outputToken.toNative(), - exclusiveRelayer: leaf.relayData.exclusiveRelayer.toNative(), - }; - }), + expectedSlowRelayLeaves: expectedSlowRelayRoot.leaves, expectedSlowRelayRoot: expectedSlowRelayRoot.tree.getHexRoot(), pendingRoot: rootBundle.poolRebalanceRoot, pendingPoolRebalanceLeafCount: rootBundle.unclaimedPoolRebalanceLeafCount, @@ -1323,7 +1297,7 @@ export class Dataworker { this.logger.warn({ at: "Dataworker#_executeSlowFillLeaf", message: "Ignoring slow fill.", - leafExecutionArgs: [depositor.toNative(), recipient.toNative()], + leafExecutionArgs: [depositor, recipient], }); return false; } @@ -1404,7 +1378,7 @@ export class Dataworker { depositId: slowFill.relayData.depositId, fromChain: slowFill.relayData.originChainId, chainId: destinationChainId, - token: outputToken.toNative(), + token: outputToken, amount: outputAmount, spokeBalance: await this._getSpokeBalanceForL2Tokens( balanceAllocator, @@ -1534,10 +1508,7 @@ export class Dataworker { at: "Dataworker#executePoolRebalanceLeaves", message: "Found pending proposal", hubPoolCurrentTime: this.clients.hubPoolClient.currentTime, - pendingRootBundle: { - ...pendingRootBundle, - proposer: pendingRootBundle.proposer.toNative(), - }, + pendingRootBundle, }); const nextBundleMainnetStartBlock = this.getNextHubChainBundleStartBlock(); @@ -1782,7 +1753,7 @@ export class Dataworker { this.logger.error({ at: "Dataworker#_getExecutablePoolRebalanceLeaves", message: `Not enough funds to execute pool rebalance leaf for chain ${leaf.chainId}`, - l1Tokens: leaf.l1Tokens.map((l1Token) => l1Token.toNative()), + l1Tokens: leaf.l1Tokens, netSendAmounts: leaf.netSendAmounts, }); } @@ -1831,11 +1802,8 @@ export class Dataworker { message: `Loading more orbit gas token to pay for L1->L2 message submission fees to ${getNetworkName( leaf.chainId )} 📨!`, - leaf: { - ...leaf, - l1Tokens: leaf.l1Tokens.map((l1Token) => l1Token.toNative()), - }, - feeToken: feeToken.toNative(), + leaf, + feeToken, requiredAmount, }); if (submitExecution) { @@ -1883,7 +1851,7 @@ export class Dataworker { message: `feePayer ${holder} has sufficient orbit gas token to pay for L1->L2 message submission fees to ${getNetworkName( leaf.chainId )}`, - feeToken: feeToken.toNative(), + feeToken, requiredAmount, feePayerBalance: await balanceAllocator.getBalanceSubUsed(hubPoolChainId, feeToken, holder), }); @@ -1964,7 +1932,7 @@ export class Dataworker { message: `Skipping exchange rate update for ${tokenSymbol} because current liquid reserves > netSendAmount for hubChain`, currentLiquidReserves, netSendAmount: netSendAmounts[idx], - l1Token: l1Token.toNative(), + l1Token, }); updatedLiquidReserves[l1Token.toEvmAddress()] = currentLiquidReserves.sub(netSendAmounts[idx]); return; @@ -2206,7 +2174,7 @@ export class Dataworker { lastUpdateTime: latestFeesCompoundedTime, currentLiquidReserves, updatedLiquidReserves, - l1Token: l1Token.toNative(), + l1Token, }); if (submitExecution) { this.clients.multiCallerClient.enqueueTransaction({ @@ -2640,12 +2608,7 @@ export class Dataworker { key, root: { ...this.rootCache[key], - leaves: this.rootCache[key].leaves.map((leaf) => { - return { - ...leaf, - l1Tokens: leaf.l1Tokens.map((l1Token) => l1Token.toNative()), - }; - }), + leaves: this.rootCache[key].leaves, tree: this.rootCache[key].tree.getHexRoot(), }, }); @@ -2899,11 +2862,7 @@ export class Dataworker { this.logger.debug({ at: "Dataworker#executeRelayerRefundLeafSvm", message: "Relayer refund leaf accounts", - leaf: { - ...leaf, - l2TokenAddress: leaf.l2TokenAddress.toNative(), - refundAddresses: leaf.refundAddresses.map((address) => address.toNative()), - }, + leaf, rootBundleId, eventAuthority, statePda, diff --git a/src/dataworker/index.ts b/src/dataworker/index.ts index d759ced72..91749a478 100644 --- a/src/dataworker/index.ts +++ b/src/dataworker/index.ts @@ -217,8 +217,8 @@ export async function runDataworker(_logger: winston.Logger, baseSigner: Signer) logger[startupLogLevel(config)]({ at: "Dataworker#index", message: "Dataworker addresses", - evmAddress: tokenClient.relayerEvmAddress.toNative(), - svmAddress: tokenClient.relayerSvmAddress.toNative(), + evmAddress: tokenClient.relayerEvmAddress, + svmAddress: tokenClient.relayerSvmAddress, }); await tokenClient.update(); // Run approval on hub pool. diff --git a/src/relayer/Relayer.ts b/src/relayer/Relayer.ts index c6ff5ab30..7be1f78ee 100644 --- a/src/relayer/Relayer.ts +++ b/src/relayer/Relayer.ts @@ -107,8 +107,8 @@ export class Relayer { this.logger.debug({ at: "Relayer::init", message: "Completed one-time init.", - relayerEvmAddress: this.relayerEvmAddress.toNative(), - relayerSvmAddress: tokenClient.relayerSvmAddress.toNative(), + relayerEvmAddress: this.relayerEvmAddress, + relayerSvmAddress: tokenClient.relayerSvmAddress, }); }