Skip to content

Commit

Permalink
+recent-invalid-fills [SLT-188]
Browse files Browse the repository at this point in the history
  • Loading branch information
parodime committed Sep 18, 2024
1 parent 186534b commit 5878fa5
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 9 deletions.
24 changes: 21 additions & 3 deletions packages/rfq-indexer/api/src/graphql/queries/queries.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ type Proof {
blockNumber: Int!
blockTimestamp: Int!
transactionHash: String!

relayer: String!
}

type Claim {
blockNumber: Int!
blockTimestamp: Int!
transactionHash: String!

relayer: String!
to: String!
amountFormatted: String!
Expand All @@ -50,7 +50,7 @@ type Refund {
blockNumber: Int!
blockTimestamp: Int!
transactionHash: String!

to: String!
amountFormatted: String!
}
Expand All @@ -76,8 +76,26 @@ type PendingTransactionMissingClaim {
BridgeProof: Proof!
}

type InvalidRelay {
transactionId: String!
blockNumber: Int!
blockTimestamp: Int!
transactionHash: String!
originChain: String!
destChain: String!
originChainId: Int!
destChainId: Int!
originToken: String!
destToken: String!
originAmountFormatted: String!
destAmountFormatted: String!
to: String!
relayer: String!
}

type Query {
pendingTransactionsMissingRelay: [PendingTransactionMissingRelay!]!
pendingTransactionsMissingProof: [PendingTransactionMissingProof!]!
pendingTransactionsMissingClaim: [PendingTransactionMissingClaim!]!
recentInvalidRelays: [InvalidRelay!]!
}
39 changes: 34 additions & 5 deletions packages/rfq-indexer/api/src/graphql/resolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,14 +129,14 @@ function nest_results(sqlResults: any[]) {
transactionFields[key] = value;
}
}

const result: { [key: string]: any } = { Bridge: transactionFields };
if (Object.keys(bridgeRequest).length) result.BridgeRequest = bridgeRequest;
if (Object.keys(bridgeRelay).length) result.BridgeRelay = bridgeRelay;
if (Object.keys(bridgeProof).length) result.BridgeProof = bridgeProof;
if (Object.keys(bridgeClaim).length) result.BridgeClaim = bridgeClaim;
if (Object.keys(bridgeDispute).length) result.BridgeDispute = bridgeDispute;

return result;
});
}
Expand Down Expand Up @@ -201,7 +201,7 @@ const resolvers = {
.with('deposits', () => qDeposits())
.with('relays', () => qRelays())
.with('refunds', () => qRefunds())
.with('combined', (qb) =>
.with('combined', (qb) =>
qb.selectFrom('deposits')
.selectAll('deposits')
.leftJoin('relays', 'transactionId_deposit', 'transactionId_relay')
Expand All @@ -220,7 +220,7 @@ const resolvers = {
.with('deposits', () => qDeposits())
.with('relays', () => qRelays())
.with('proofs', () => qProofs())
.with('combined', (qb) =>
.with('combined', (qb) =>
qb.selectFrom('deposits')
.innerJoin('relays', 'transactionId_deposit', 'transactionId_relay')
.leftJoin('proofs', 'transactionId_deposit', 'transactionId_proof')
Expand All @@ -240,7 +240,7 @@ const resolvers = {
.with('relays', () => qRelays())
.with('proofs', () => qProofs())
.with('claims', () => qClaims())
.with('combined', (qb) =>
.with('combined', (qb) =>
qb.selectFrom('deposits')
.innerJoin('relays', 'transactionId_deposit', 'transactionId_relay')
.innerJoin('proofs', 'transactionId_deposit', 'transactionId_proof')
Expand All @@ -256,6 +256,35 @@ const resolvers = {

return nest_results(await query.execute());
},
recentInvalidRelays: async () => {
const query = db.selectFrom('BridgeRelayedEvents')
.leftJoin('BridgeRequestEvents', 'BridgeRelayedEvents.transactionId', 'BridgeRequestEvents.transactionId')
.select([
'BridgeRelayedEvents.transactionId',
'BridgeRelayedEvents.blockNumber',
'BridgeRelayedEvents.blockTimestamp',
'BridgeRelayedEvents.transactionHash',

'BridgeRelayedEvents.originChain',
'BridgeRelayedEvents.destChain',
'BridgeRelayedEvents.originChainId',
'BridgeRelayedEvents.destChainId',
'BridgeRelayedEvents.originToken',
'BridgeRelayedEvents.destToken',
'BridgeRelayedEvents.originAmountFormatted',
'BridgeRelayedEvents.destAmountFormatted',

'BridgeRelayedEvents.to',
'BridgeRelayedEvents.relayer',
])
// lookback approx 2 weeks
.where('BridgeRelayedEvents.blockTimestamp', '>', Math.floor(Date.now() / 1000) - 2 * 7 * 24 * 60 * 60)
.where('BridgeRequestEvents.transactionId', 'is', null)
;

// intentionally do not nest - doesnt make sense w/ this dataset because the whole point is that no Deposit exists
return await query.execute();
},
},
BridgeEvent: {
__resolveType(obj: any) {
Expand Down
11 changes: 10 additions & 1 deletion packages/rfq-indexer/api/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ app.get('/api/pending-transactions-missing-relay', async (req, res) => {
await resolvers.Query.pendingTransactionsMissingRelay()
res.json(pendingTransactions);
} catch (error) {
console.error('Error fetching pending transactions:', error);
console.error('Error fetching pending transactions missing relay:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
Expand All @@ -50,6 +50,15 @@ app.get('/api/pending-transactions-missing-claim', async (req, res) => {
}
});

app.get('/api/recent-invalid-relays', async (req, res) => {
try {
const queryResult = await resolvers.Query.recentInvalidRelays();
res.json(queryResult);
} catch (error) {
console.error('Error fetching recent invalid relays:', error);
res.status(500).json({ error: 'Internal server error' });
}
});

app.listen(process.env.PORT, () => {
console.info('API server runs on http://localhost:3001')
Expand Down

0 comments on commit 5878fa5

Please sign in to comment.