From 0cc4616eb0352f36970eb53eaf5ac8d229c468d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enis=20Bayramo=C4=9Flu?= Date: Tue, 30 Jan 2024 10:25:32 +0100 Subject: [PATCH 1/3] Recover the xchain transfer source from the X_REUSME event --- haskell-src/lib/ChainwebDb/Queries.hs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/haskell-src/lib/ChainwebDb/Queries.hs b/haskell-src/lib/ChainwebDb/Queries.hs index 8b4b30ff..8ab9bc2e 100644 --- a/haskell-src/lib/ChainwebDb/Queries.hs +++ b/haskell-src/lib/ChainwebDb/Queries.hs @@ -316,19 +316,16 @@ joinXChainInfo tr = pgUnnest $ (customExpr_ $ \fromAcct toAcct idx mdName blk re " AND e.idx = " <> idx <> " - 1 " <> " AND " <> mdName <> " = 'coin' " <> " UNION ALL " <> - " SELECT e.params->>0 AS acct, e.chainid " <> - " FROM transactions tRec, transactions tSend, events e " <> + " SELECT e.params->2->>0 AS acct, CAST(e.params->>0 AS INT) AS chainid " <> + " FROM events e " <> " WHERE " <> mdName <> " = 'coin' " <> " AND " <> req <> " != 'cb' " <> " AND " <> fromAcct <> " = '' " <> - " AND tRec.block = " <> blk <> - " AND tRec.requestkey = " <> req <> - " AND tSend.requestkey = tRec.pactid " <> - " AND e.block = tSend.block " <> - " AND e.requestkey = tSend.requestkey " <> - " AND e.qualname = 'coin.TRANSFER_XCHAIN' " <> - " AND e.params->>1 = " <> toAcct <> - " AND e.params->>2 = CAST(" <> amt <> "AS VARCHAR) " <> + " AND e.block = " <> blk <> + " AND e.requestkey = " <> req <> + " AND e.qualname = 'pact.X_RESUME' " <> + " AND e.params->>1 = 'coin.transfer-crosschain' " <> + " AND e.params->2->>1 = " <> toAcct <> " UNION ALL " <> " SELECT NULL, NULL " <> " LIMIT 1 " <> From a87228fd53e736e395ebedf12577ad212e892657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enis=20Bayramo=C4=9Flu?= Date: Tue, 30 Jan 2024 10:52:58 +0100 Subject: [PATCH 2/3] Remove the amount check in send side of xchain transfers It's a fragile comparison with false negatives --- haskell-src/lib/ChainwebDb/Queries.hs | 1 - 1 file changed, 1 deletion(-) diff --git a/haskell-src/lib/ChainwebDb/Queries.hs b/haskell-src/lib/ChainwebDb/Queries.hs index 8ab9bc2e..c019e45f 100644 --- a/haskell-src/lib/ChainwebDb/Queries.hs +++ b/haskell-src/lib/ChainwebDb/Queries.hs @@ -312,7 +312,6 @@ joinXChainInfo tr = pgUnnest $ (customExpr_ $ \fromAcct toAcct idx mdName blk re " AND e.qualname = 'coin.TRANSFER_XCHAIN' " <> " AND e.params->>0 = " <> fromAcct <> " AND " <> toAcct <> " = '' " <> - " AND e.params->>2 = CAST(" <> amt <> "AS VARCHAR) " <> " AND e.idx = " <> idx <> " - 1 " <> " AND " <> mdName <> " = 'coin' " <> " UNION ALL " <> From c875fe57b69934843f2ce6899acc7916ee70c31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enis=20Bayramo=C4=9Flu?= Date: Tue, 30 Jan 2024 10:56:08 +0100 Subject: [PATCH 3/3] Reorder to-from branche conditions to be consistent --- haskell-src/lib/ChainwebDb/Queries.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/haskell-src/lib/ChainwebDb/Queries.hs b/haskell-src/lib/ChainwebDb/Queries.hs index c019e45f..b95b0277 100644 --- a/haskell-src/lib/ChainwebDb/Queries.hs +++ b/haskell-src/lib/ChainwebDb/Queries.hs @@ -307,19 +307,19 @@ joinXChainInfo tr = pgUnnest $ (customExpr_ $ \fromAcct toAcct idx mdName blk re " LATERAL ( " <> " SELECT e.params->>1 AS acct, CAST(e.params->>3 AS INT) " <> " FROM events e " <> - " WHERE e.block = " <> blk <> + " WHERE " <> mdName <> " = 'coin' " <> + " AND " <> toAcct <> " = '' " <> + " AND e.block = " <> blk <> " AND e.requestkey = " <> req <> + " AND e.idx = " <> idx <> " - 1 " <> " AND e.qualname = 'coin.TRANSFER_XCHAIN' " <> " AND e.params->>0 = " <> fromAcct <> - " AND " <> toAcct <> " = '' " <> - " AND e.idx = " <> idx <> " - 1 " <> - " AND " <> mdName <> " = 'coin' " <> " UNION ALL " <> " SELECT e.params->2->>0 AS acct, CAST(e.params->>0 AS INT) AS chainid " <> " FROM events e " <> " WHERE " <> mdName <> " = 'coin' " <> - " AND " <> req <> " != 'cb' " <> " AND " <> fromAcct <> " = '' " <> + " AND " <> req <> " != 'cb' " <> " AND e.block = " <> blk <> " AND e.requestkey = " <> req <> " AND e.qualname = 'pact.X_RESUME' " <>