Skip to content

Commit 8a2c033

Browse files
committed
Update Cardano query
1 parent 578c611 commit 8a2c033

File tree

1 file changed

+56
-38
lines changed

1 file changed

+56
-38
lines changed

data_collection_scripts/queries.yaml

+56-38
Original file line numberDiff line numberDiff line change
@@ -31,49 +31,67 @@ bitcoin_cash:
3131
ORDER BY balance DESC
3232

3333
cardano:
34-
SELECT *
35-
FROM
36-
(
37-
WITH blocks AS (
34+
WITH
35+
blocks AS (
3836
SELECT
3937
slot_no AS block_number,
4038
block_time
41-
FROM `iog-data-analytics.cardano_mainnet.block`
39+
FROM `blockchain-analytics-392322.cardano_mainnet.block`
4240
WHERE block_time < "{{timestamp}}"
43-
),
44-
OUTPUTS AS (
45-
SELECT
46-
slot_no as output_slot_number,
47-
CAST(JSON_VALUE(a, '$.out_address') AS STRING) AS address,
48-
CAST(JSON_VALUE(a, '$.out_idx') AS INT64) as out_idx,
49-
CAST(JSON_VALUE(a, '$.out_value') AS INT64 ) AS value
50-
FROM `iog-data-analytics.cardano_mainnet.vw_tx_in_out_with_inputs_value`
51-
JOIN blocks ON block_number = slot_no
52-
JOIN UNNEST(JSON_QUERY_ARRAY(outputs)) AS a
53-
),
54-
INPUTS AS (
55-
SELECT
56-
address,
57-
CAST(JSON_VALUE(i, '$.out_value') AS INT64 ) AS value
58-
FROM `iog-data-analytics.cardano_mainnet.vw_tx_in_out_with_inputs_value`
59-
JOIN OUTPUTS ON slot_no = output_slot_number
60-
JOIN UNNEST(JSON_QUERY_ARRAY(inputs)) AS i ON CAST(JSON_VALUE(i, '$.in_idx') AS INT64) = OUTPUTS.out_idx
61-
),
62-
INCOMING AS (
63-
SELECT address, SUM(CAST(value AS numeric)) as sum_incoming
64-
FROM INPUTS
65-
GROUP BY address
66-
),
67-
OUTGOING AS (
68-
SELECT address, SUM(CAST(value AS numeric)) as sum_outgoing
69-
FROM OUTPUTS
70-
GROUP BY address
71-
)
72-
SELECT i.address, i.sum_incoming - o.sum_outgoing AS balance
73-
FROM INCOMING AS i
74-
JOIN OUTGOING AS o ON i.address = o.address
41+
),
42+
addr_outputs AS (
43+
SELECT
44+
epoch_no,
45+
address,
46+
CAST(JSON_VALUE(o, '$.idx') AS INT64) AS idx,
47+
CAST(JSON_VALUE(o, '$.slot_no') AS INT64) AS slot_no,
48+
CAST(JSON_VALUE(o, '$.txidx') AS INT64) AS txidx
49+
FROM
50+
`blockchain-analytics-392322.cardano_mainnet.rel_addr_txout`
51+
LEFT JOIN UNNEST(JSON_EXTRACT_ARRAY(outputs, "$") ) AS o
52+
JOIN blocks ON CAST(JSON_VALUE(o, '$.slot_no') AS INT64) = blocks.block_number),
53+
INCOMING_UTXOS AS (
54+
SELECT
55+
tio.epoch_no,
56+
addr_outputs.address,
57+
tio.slot_no,
58+
tio.txidx,
59+
addr_outputs.idx,
60+
CAST(JSON_VALUE(a, '$.out_value') AS INT64 ) AS value,
61+
FROM
62+
`blockchain-analytics-392322.cardano_mainnet.tx_in_out` AS tio
63+
JOIN
64+
addr_outputs
65+
ON
66+
tio.epoch_no = addr_outputs.epoch_no
67+
AND tio.slot_no = addr_outputs.slot_no
68+
AND tio.txidx = addr_outputs.txidx
69+
JOIN UNNEST(JSON_QUERY_ARRAY(outputs)) AS a ON CAST(JSON_VALUE(a, '$.out_idx') AS INT64 ) = addr_outputs.idx
70+
),
71+
OUTGOING_UTXOS AS (
72+
SELECT
73+
tx.epoch_no,
74+
io.address,
75+
consumed_in_slot_no,
76+
consumed_in_txidx,
77+
cons.index,
78+
value*-1 AS value,
79+
FROM INCOMING_UTXOS AS io
80+
JOIN `blockchain-analytics-392322.cardano_mainnet.tx_consumed_output` AS cons
81+
ON io.slot_no = cons.slot_no AND io.txidx = cons.txidx AND io.idx = cons.index
82+
JOIN blockchain-analytics-392322.cardano_mainnet.tx ON tx.slot_no = cons.consumed_in_slot_no AND tx.txidx = cons.consumed_in_txidx
83+
JOIN blocks ON io.slot_no = blocks.block_number
84+
),
85+
GROUPED_INCOMING AS (
86+
SELECT address, COUNT(*) as count_incoming, SUM(value) as sum_incoming FROM INCOMING_UTXOS GROUP BY address
87+
),
88+
GROUPED_OUTGOING AS (
89+
SELECT address, COUNT(*) as count_outgoing, SUM(value) as sum_outgoing FROM OUTGOING_UTXOS GROUP BY address
7590
)
76-
WHERE balance > 0
91+
SELECT i.address, (i.sum_incoming + o.sum_outgoing) as balance
92+
FROM GROUPED_INCOMING AS i
93+
FULL JOIN GROUPED_OUTGOING AS o ON i.address = o.address
94+
WHERE (i.sum_incoming + o.sum_outgoing) > 0
7795
ORDER BY balance DESC
7896

7997
dash:

0 commit comments

Comments
 (0)