Skip to content

Commit

Permalink
Merge pull request #408 from G7DAO/refactor-bridge-history
Browse files Browse the repository at this point in the history
improve query perfomance and configure correct claimable chalenge.
  • Loading branch information
Andrei-Dolgolev authored Feb 18, 2025
2 parents 99f7e40 + 56d0146 commit 89c91b9
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 34 deletions.
14 changes: 12 additions & 2 deletions api/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ export const bridgeConfig: {
G7nativeTokenName: string;
arbitrumCircleTransmitter: string;
ethereumCircleTransmitter: string;
ClaimableTimeCanonicalArbitrum: number;
ClaimableTimeCanonicalEthereum: number;
ClaimableTimeCCTP: number;
};
} = {
"game7-testnet": {
Expand Down Expand Up @@ -116,7 +119,11 @@ export const bridgeConfig: {
l1TokenName: "TG7T",
l2TokenName: "TG7T",
nativeToken: "0x0000000000000000000000000000000000000000", // native token
G7nativeTokenName: "TG7T"
G7nativeTokenName: "TG7T",
ClaimableTimeCanonicalArbitrum: 1 * 60 * 60, // 1 hour
ClaimableTimeCanonicalEthereum: 1 * 60 * 60, // 1 hour
ClaimableTimeCCTP: 15 * 60 // 15 minutes

},
"game7": {
addressERC20Inbox: "B1146A7eb098ECF46e8AAf695f4A960A963948d6", // Arbitrum Deposit contract address
Expand Down Expand Up @@ -144,7 +151,10 @@ export const bridgeConfig: {
l1TokenName: "G7",
l2TokenName: "G7",
nativeToken: "0x0000000000000000000000000000000000000000", // native token
G7nativeTokenName: "G7"
G7nativeTokenName: "G7",
ClaimableTimeCanonicalArbitrum: 1 * 60 * 60, // 1 hour
ClaimableTimeCanonicalEthereum: 7 * 24 * 60 * 60, // 7 days
ClaimableTimeCCTP: 15 * 60 // 15 minutes
},
};

Expand Down
50 changes: 18 additions & 32 deletions api/src/services/bridge.service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// src/services/bridge.service.ts
import { pool } from '../utils/db'; // Adjust the import path as necessary
import { bridgeConfig } from '../config'; // Adjust the import path as necessary

export async function getTransactionHistory(chain: string, address: string, limit: number, offset: number): Promise<object | string> {

// switch statement blockchains
Expand Down Expand Up @@ -120,8 +119,8 @@ export async function getTransactionHistory(chain: string, address: string, limi
wc.block_timestamp AS childNetworkTimestamp,
wc.from_address AS from_address,
we.to_address AS to_address,
3600 AS challengePeriod,
(wc.block_timestamp + 3600) AS claimableTimestamp,
${bridgeConfig[chain].ClaimableTimeCanonicalArbitrum} AS challengePeriod,
(wc.block_timestamp + ${bridgeConfig[chain].ClaimableTimeCanonicalArbitrum}) AS claimableTimestamp,
wc.block_timestamp AS block_timestamp,
wc.token AS token,
wc.origin_token AS origin_token,
Expand Down Expand Up @@ -174,25 +173,7 @@ export async function getTransactionHistory(chain: string, address: string, limi
LEFT JOIN arbirtrum_claims ON game7_withdrawal.position = arbirtrum_claims.position
), withdrawal_calls_arbitrum AS (
SELECT
transaction_hash,
COALESCE(l2_token, '${bridgeConfig[chain].nativeToken}') as token,
COALESCE(l2_token, '${bridgeConfig[chain].nativeToken}') as origin_token,
COALESCE(l1_token, '${bridgeConfig[chain].l2Token}') as destination_token,
'0x' || encode(origin_address, 'hex') AS from_address,
label_data -> 'args' ->> '_amount' AS amount,
block_timestamp,
label_data ->> 'status' AS status
FROM
${bridgeConfig[chain].l2TableName} AS labels
left join arbitrum_l1_to_l2_tokens on labels.label_data->'args'->>'_l1Token' = arbitrum_l1_to_l2_tokens.l1_token
WHERE
label='seer'
AND label_type = 'tx_call'
AND address = DECODE('${bridgeConfig[chain].addressL2GatewayRouter}', 'hex')
AND label_name = 'outboundTransfer'
UNION ALL
SELECT
transaction_hash,
DISTINCT transaction_hash,
COALESCE(l2_token, '${bridgeConfig[chain].nativeToken}') as token,
COALESCE(l2_token, '${bridgeConfig[chain].nativeToken}') as origin_token,
COALESCE(l1_token, '${bridgeConfig[chain].l2Token}') as destination_token,
Expand All @@ -203,14 +184,19 @@ export async function getTransactionHistory(chain: string, address: string, limi
FROM
${bridgeConfig[chain].l2TableName} AS labels
left join arbitrum_l1_to_l2_tokens on labels.label_data->'args'->>'_l1Token' = arbitrum_l1_to_l2_tokens.l1_token
WHERE
label='seer'
AND label_type = 'tx_call'
AND address = DECODE('${bridgeConfig[chain].addressArbOS}', 'hex')
AND label_name = 'L2ToL1Tx'
WHERE
label = 'seer'
AND (
(label_name = 'outboundTransfer'
AND label_type = 'tx_call'
AND address = DECODE('${bridgeConfig[chain].addressL2GatewayRouter}', 'hex'))
OR
(label_name = 'withdrawEth'
AND address = DECODE('${bridgeConfig[chain].addressArbOS}', 'hex'))
)
),
withdrawal_events_arbitrum AS (
SELECT
SELECT DISTINCT
transaction_hash,
label_data -> 'args' ->> 'position' AS position,
label_data -> 'args' ->> 'callvalue' AS amount,
Expand Down Expand Up @@ -243,8 +229,8 @@ export async function getTransactionHistory(chain: string, address: string, limi
wc.block_timestamp AS childNetworkTimestamp,
wc.from_address AS from_address,
we.to_address AS to_address,
3600 AS challengePeriod,
(wc.block_timestamp + 3600) AS claimableTimestamp,
${bridgeConfig[chain].ClaimableTimeCanonicalArbitrum} AS challengePeriod,
(wc.block_timestamp + ${bridgeConfig[chain].ClaimableTimeCanonicalArbitrum}) AS claimableTimestamp,
wc.block_timestamp AS block_timestamp,
wc.token AS token,
wc.origin_token AS origin_token,
Expand All @@ -265,8 +251,8 @@ export async function getTransactionHistory(chain: string, address: string, limi
block_timestamp AS childNetworkTimestamp,
'0x' || ENCODE(origin_address, 'hex') as to_address,
'0x' || ENCODE(origin_address, 'hex') AS from_address,
3600 AS challengePeriod,
(block_timestamp + 3600) AS claimableTimestamp,
${bridgeConfig[chain].ClaimableTimeCCTP} AS challengePeriod,
(block_timestamp + ${bridgeConfig[chain].ClaimableTimeCCTP}) AS claimableTimestamp,
block_timestamp as block_timestamp,
label_data->'args'->>'burnToken' as token,
label_data->'args'->>'burnToken' as origin_token,
Expand Down

0 comments on commit 89c91b9

Please sign in to comment.