From f1f3986014042303a9dc62713238e145cd4dfd80 Mon Sep 17 00:00:00 2001 From: Priyank <3169068+rdlrt@users.noreply.github.com> Date: Thu, 7 Oct 2021 18:01:14 +1100 Subject: [PATCH 1/2] Asset Name input should be text (vs hex) (#1137) --- files/grest/rpc/assets/asset_address_list.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/grest/rpc/assets/asset_address_list.sql b/files/grest/rpc/assets/asset_address_list.sql index e9fcb0d07..de8985643 100644 --- a/files/grest/rpc/assets/asset_address_list.sql +++ b/files/grest/rpc/assets/asset_address_list.sql @@ -17,7 +17,7 @@ BEGIN SELECT DECODE(_asset_policy, 'hex') INTO _asset_policy_decoded; SELECT - DECODE(_asset_name, 'hex') INTO _asset_name_decoded; + DECODE(_asset_name::text,'escape') INTO _asset_name_decoded; RETURN QUERY SELECT TXO.ADDRESS, From 395c20cb6e555d24dc12deed44dadae87941f3fc Mon Sep 17 00:00:00 2001 From: Damjan Ostrelic Date: Sun, 10 Oct 2021 07:00:39 +0100 Subject: [PATCH 2/2] Improve stake distribution cache SQL (#1138) * Improve stake_distribution cache SQL * Increase delta to 60 minutes --- .../stake_distribution_cache.sql | 46 +++++++++++++------ 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/files/grest/rpc/cached_tables/stake_distribution_cache.sql b/files/grest/rpc/cached_tables/stake_distribution_cache.sql index 3b8efa7c3..1b2f3b311 100644 --- a/files/grest/rpc/cached_tables/stake_distribution_cache.sql +++ b/files/grest/rpc/cached_tables/stake_distribution_cache.sql @@ -29,8 +29,7 @@ DECLARE _last_accounted_block_id bigint; BEGIN SELECT - INTO _last_accounted_block_height, - _last_accounted_block_id block_no, + block_no, id FROM PUBLIC.BLOCK @@ -40,7 +39,8 @@ BEGIN SELECT MAX(BLOCK_NO) - 5 FROM - PUBLIC.BLOCK); + PUBLIC.BLOCK) INTO _last_accounted_block_height, + _last_accounted_block_id; INSERT INTO GREST.STAKE_DISTRIBUTION_CACHE SELECT STAKE_ADDRESS, @@ -60,15 +60,18 @@ BEGIN END AS REWARDS_AVAILABLE, COALESCE(RESERVES_T.RESERVES, 0) AS RESERVES, COALESCE(TREASURY_T.TREASURY, 0) AS TREASURY - FROM ( - SELECT + FROM ( SELECT DISTINCT ON (STAKE_ADDRESS.ID) STAKE_ADDRESS.ID, STAKE_ADDRESS.VIEW AS STAKE_ADDRESS, - POOL_HASH.VIEW AS POOL_ID + POOL_HASH.VIEW AS POOL_ID, + BLOCK.EPOCH_NO AS LATEST_WITHDRAWAL_EPOCH FROM STAKE_ADDRESS INNER JOIN DELEGATION ON DELEGATION.ADDR_ID = STAKE_ADDRESS.ID INNER JOIN POOL_HASH ON POOL_HASH.ID = DELEGATION.POOL_HASH_ID + LEFT JOIN WITHDRAWAL ON WITHDRAWAL.ADDR_ID = STAKE_ADDRESS.ID + LEFT JOIN TX ON TX.ID = WITHDRAWAL.TX_ID + LEFT JOIN BLOCK ON BLOCK.ID = TX.BLOCK_ID WHERE NOT EXISTS ( SELECT @@ -85,7 +88,10 @@ BEGIN STAKE_DEREGISTRATION WHERE STAKE_DEREGISTRATION.ADDR_ID = DELEGATION.ADDR_ID - AND STAKE_DEREGISTRATION.TX_ID > DELEGATION.TX_ID)) T1 + AND STAKE_DEREGISTRATION.TX_ID > DELEGATION.TX_ID) + ORDER BY + STAKE_ADDRESS.ID, + BLOCK.EPOCH_NO DESC) T1 LEFT JOIN LATERAL ( SELECT COALESCE(SUM(TX_OUT.VALUE), 0) AS UTXO @@ -128,8 +134,11 @@ BEGIN COALESCE(SUM(RESERVE.AMOUNT), 0) AS RESERVES FROM RESERVE + INNER JOIN TX ON TX.ID = RESERVE.TX_ID + INNER JOIN BLOCK ON BLOCK.ID = TX.BLOCK_ID WHERE RESERVE.ADDR_ID = T1.ID + AND BLOCK.EPOCH_NO >= T1.LATEST_WITHDRAWAL_EPOCH GROUP BY T1.ID) RESERVES_T ON TRUE LEFT JOIN LATERAL ( @@ -137,8 +146,11 @@ BEGIN COALESCE(SUM(TREASURY.AMOUNT), 0) AS TREASURY FROM TREASURY + INNER JOIN TX ON TX.ID = TREASURY.TX_ID + INNER JOIN BLOCK ON BLOCK.ID = TX.BLOCK_ID WHERE TREASURY.ADDR_ID = T1.ID + AND BLOCK.EPOCH_NO >= T1.LATEST_WITHDRAWAL_EPOCH GROUP BY T1.ID) TREASURY_T ON TRUE ON CONFLICT (STAKE_ADDRESS) @@ -169,11 +181,6 @@ ON CONFLICT (STAKE_ADDRESS) END; $$; --- Run the first time update -CALL GREST.UPDATE_STAKE_DISTRIBUTION_CACHE (); - -CREATE INDEX IF NOT EXISTS idx_pool_id ON GREST.STAKE_DISTRIBUTION_CACHE (POOL_ID); - DROP FUNCTION IF EXISTS GREST.UPDATE_STAKE_DISTRIBUTION_CACHE_CHECK CASCADE; CREATE FUNCTION GREST.UPDATE_STAKE_DISTRIBUTION_CACHE_CHECK () @@ -183,6 +190,7 @@ CREATE FUNCTION GREST.UPDATE_STAKE_DISTRIBUTION_CACHE_CHECK () DECLARE _last_update_block_height integer DEFAULT NULL; _current_block_height integer DEFAULT NULL; + _last_update_block_diff integer DEFAULT NULL; BEGIN SELECT last_value @@ -196,11 +204,21 @@ BEGIN PUBLIC.BLOCK WHERE BLOCK_NO IS NOT NULL INTO _current_block_height; - -- Do nothing until there is a 90 blocks difference in height (95 in check because lbh considered is 5 blocks behind tip) - IF (_current_block_height - _last_update_block_height) >= 95 THEN + SELECT + (_current_block_height - _last_update_block_height) INTO _last_update_block_diff; + -- Do nothing until there is a 180 blocks difference in height - 60 minutes theoretical time + -- 185 in check because lbh considered is 5 blocks behind tip + IF _last_update_block_diff >= 185 THEN + RAISE NOTICE 'Last stake distribution update was % blocks ago, re-running...', _last_update_block_diff; CALL GREST.UPDATE_STAKE_DISTRIBUTION_CACHE (); END IF; RETURN; END; $$; +-- Run the first time update if needed +SELECT + GREST.UPDATE_STAKE_DISTRIBUTION_CACHE_CHECK (); + +CREATE INDEX IF NOT EXISTS idx_pool_id ON GREST.STAKE_DISTRIBUTION_CACHE (POOL_ID); +