@cardano-sdk/cardano-services 0.8.0-nightly.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.d.ts.map +1 -1
- package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.js +3 -5
- package/dist/cjs/ChainHistory/DbSyncChainHistory/mappers.js.map +1 -1
- package/dist/cjs/Metadata/mappers.d.ts +1 -1
- package/dist/cjs/Metadata/mappers.d.ts.map +1 -1
- package/dist/cjs/Metadata/mappers.js +11 -4
- package/dist/cjs/Metadata/mappers.js.map +1 -1
- package/dist/cjs/Metadata/queries.d.ts +1 -1
- package/dist/cjs/Metadata/queries.d.ts.map +1 -1
- package/dist/cjs/Metadata/queries.js +8 -8
- package/dist/cjs/Metadata/queries.js.map +1 -1
- package/dist/cjs/Metadata/types.d.ts +1 -3
- package/dist/cjs/Metadata/types.d.ts.map +1 -1
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.d.ts +4 -7
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.d.ts.map +1 -1
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.js +14 -16
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/DbSyncNetworkInfoProvider.js.map +1 -1
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.d.ts +2 -2
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.d.ts.map +1 -1
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.js +1 -30
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/mappers.js.map +1 -1
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/types.d.ts +0 -13
- package/dist/cjs/NetworkInfo/DbSyncNetworkInfoProvider/types.d.ts.map +1 -1
- package/dist/cjs/Program/loadHttpServer.d.ts.map +1 -1
- package/dist/cjs/Program/loadHttpServer.js +12 -4
- package/dist/cjs/Program/loadHttpServer.js.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.d.ts +4 -5
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.d.ts.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.js +35 -42
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/DbSyncStakePoolProvider.js.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.d.ts +2 -2
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.d.ts.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.js +7 -9
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/StakePoolBuilder.js.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.d.ts +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.d.ts.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.js +5 -4
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/mappers.js.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.d.ts +15 -15
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.d.ts.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.js +293 -325
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/queries.js.map +1 -1
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/types.d.ts +5 -3
- package/dist/cjs/StakePool/DbSyncStakePoolProvider/types.d.ts.map +1 -1
- package/dist/cjs/StakePool/openApi.json +11 -8
- package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.d.ts.map +1 -1
- package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.js +12 -12
- package/dist/cjs/Utxo/DbSyncUtxoProvider/mappers.js.map +1 -1
- package/dist/cjs/original-package.json +12 -8
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/util/genesis.d.ts +3 -0
- package/dist/cjs/util/genesis.d.ts.map +1 -0
- package/dist/cjs/util/genesis.js +34 -0
- package/dist/cjs/util/genesis.js.map +1 -0
- package/dist/cjs/util/index.d.ts +2 -0
- package/dist/cjs/util/index.d.ts.map +1 -1
- package/dist/cjs/util/index.js +2 -0
- package/dist/cjs/util/index.js.map +1 -1
- package/package.json +12 -8
|
@@ -4,20 +4,20 @@ exports.withSort = exports.findPoolStats = exports.getTotalCountQueryFromQuery =
|
|
|
4
4
|
const core_1 = require("@cardano-sdk/core");
|
|
5
5
|
const util_1 = require("./util");
|
|
6
6
|
exports.findLastEpoch = `
|
|
7
|
-
SELECT
|
|
7
|
+
SELECT
|
|
8
8
|
"no"
|
|
9
9
|
FROM epoch
|
|
10
|
-
ORDER BY no DESC
|
|
10
|
+
ORDER BY no DESC
|
|
11
11
|
LIMIT 1
|
|
12
12
|
`;
|
|
13
|
-
exports.findLastEpochWithData = `
|
|
14
|
-
SELECT
|
|
13
|
+
exports.findLastEpochWithData = `
|
|
14
|
+
SELECT
|
|
15
15
|
epoch."no",
|
|
16
16
|
ep.optimal_pool_count
|
|
17
|
-
FROM epoch
|
|
18
|
-
LEFT JOIN epoch_param ep ON
|
|
17
|
+
FROM epoch
|
|
18
|
+
LEFT JOIN epoch_param ep ON
|
|
19
19
|
ep.epoch_no = epoch."no"
|
|
20
|
-
ORDER BY no DESC
|
|
20
|
+
ORDER BY no DESC
|
|
21
21
|
LIMIT 1`;
|
|
22
22
|
exports.findTotalAda = `
|
|
23
23
|
SELECT COALESCE(SUM(value)) AS total_ada
|
|
@@ -25,120 +25,120 @@ FROM tx_out AS tx_outer WHERE
|
|
|
25
25
|
NOT exists
|
|
26
26
|
( SELECT tx_out.id
|
|
27
27
|
FROM tx_out
|
|
28
|
-
JOIN tx_in
|
|
28
|
+
JOIN tx_in ON
|
|
29
29
|
tx_out.tx_id = tx_in.tx_out_id AND
|
|
30
30
|
tx_out.index = tx_in.tx_out_index
|
|
31
31
|
WHERE tx_outer.id = tx_out.id
|
|
32
32
|
);
|
|
33
33
|
`;
|
|
34
34
|
exports.findPoolsMetrics = `
|
|
35
|
-
|
|
35
|
+
WITH current_epoch AS (
|
|
36
36
|
SELECT
|
|
37
37
|
e."no" AS epoch_no,
|
|
38
|
-
optimal_pool_count
|
|
38
|
+
optimal_pool_count
|
|
39
39
|
FROM epoch e
|
|
40
|
-
JOIN epoch_param ep
|
|
40
|
+
JOIN epoch_param ep ON
|
|
41
41
|
ep.epoch_no = e."no"
|
|
42
|
-
|
|
42
|
+
ORDER BY e.no DESC LIMIT 1
|
|
43
43
|
),
|
|
44
44
|
blocks_created AS (
|
|
45
|
-
SELECT
|
|
46
|
-
|
|
45
|
+
SELECT
|
|
46
|
+
COUNT(1) AS blocks_created,
|
|
47
47
|
pool_hash.id AS pool_hash_id
|
|
48
|
-
FROM block
|
|
49
|
-
JOIN slot_leader
|
|
50
|
-
JOIN pool_hash
|
|
51
|
-
|
|
48
|
+
FROM block
|
|
49
|
+
JOIN slot_leader ON block.slot_leader_id = slot_leader.id
|
|
50
|
+
JOIN pool_hash ON slot_leader.pool_hash_id = pool_hash.id
|
|
51
|
+
WHERE pool_hash.id = ANY($1)
|
|
52
52
|
GROUP BY pool_hash.id
|
|
53
53
|
),
|
|
54
54
|
pools_delegates AS (
|
|
55
|
-
SELECT
|
|
55
|
+
SELECT
|
|
56
56
|
ph.id AS pool_hash_id,
|
|
57
57
|
sa.id AS addr_id
|
|
58
|
-
FROM pool_hash ph
|
|
58
|
+
FROM pool_hash ph
|
|
59
59
|
JOIN pool_update pu
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
60
|
+
ON pu.id = (
|
|
61
|
+
SELECT id
|
|
62
|
+
FROM pool_update pu2
|
|
63
|
+
WHERE pu2.hash_id = ph.id
|
|
64
|
+
ORDER BY id DESC
|
|
65
|
+
LIMIT 1
|
|
66
|
+
)
|
|
67
|
+
LEFT JOIN pool_retire pr
|
|
68
|
+
ON pr.id = (
|
|
69
|
+
SELECT id
|
|
70
|
+
FROM pool_retire pr2
|
|
71
|
+
WHERE pr2.hash_id = ph.id
|
|
72
|
+
ORDER BY id desc
|
|
73
|
+
LIMIT 1
|
|
74
|
+
)
|
|
75
|
+
JOIN stake_address sa ON
|
|
76
|
+
sa.id = pu.reward_addr_id
|
|
77
|
+
WHERE (pr.id is null or pr.announced_tx_id < pu.registered_tx_id) and
|
|
78
|
+
ph.id = ANY($1)
|
|
79
79
|
),
|
|
80
80
|
total_rewards_of_reward_acc AS (
|
|
81
|
-
SELECT
|
|
81
|
+
SELECT
|
|
82
82
|
SUM(r.amount) AS amount,
|
|
83
83
|
pd.pool_hash_id
|
|
84
84
|
FROM reward r
|
|
85
|
-
JOIN pools_delegates pd ON
|
|
85
|
+
JOIN pools_delegates pd ON
|
|
86
86
|
pd.addr_id = r.addr_id
|
|
87
87
|
GROUP BY pd.pool_hash_id
|
|
88
88
|
),
|
|
89
89
|
total_withdraws_of_reward_acc AS (
|
|
90
|
-
SELECT
|
|
90
|
+
SELECT
|
|
91
91
|
SUM(w.amount) AS amount,
|
|
92
92
|
pd.pool_hash_id
|
|
93
93
|
FROM withdrawal w
|
|
94
|
-
JOIN pools_delegates pd ON
|
|
95
|
-
pd.addr_id = w.addr_id
|
|
94
|
+
JOIN pools_delegates pd ON
|
|
95
|
+
pd.addr_id = w.addr_id
|
|
96
96
|
GROUP BY pd.pool_hash_id
|
|
97
97
|
),
|
|
98
98
|
owners_total_utxos AS (
|
|
99
99
|
SELECT
|
|
100
100
|
sum(tx_out.value) AS amount,
|
|
101
|
-
pu.hash_id
|
|
101
|
+
pu.hash_id
|
|
102
102
|
FROM tx_out
|
|
103
|
-
JOIN pool_owner o ON
|
|
103
|
+
JOIN pool_owner o ON
|
|
104
104
|
o.addr_id = tx_out.stake_address_id
|
|
105
105
|
JOIN pool_update pu ON
|
|
106
106
|
o.pool_update_id = pu.id
|
|
107
107
|
AND pu.hash_id = ANY($1)
|
|
108
|
-
LEFT JOIN tx_in ON
|
|
109
|
-
tx_out.tx_id = tx_in.tx_out_id AND
|
|
108
|
+
LEFT JOIN tx_in ON
|
|
109
|
+
tx_out.tx_id = tx_in.tx_out_id AND
|
|
110
110
|
tx_out.index::smallint = tx_in.tx_out_index::smallint
|
|
111
|
-
LEFT JOIN tx AS tx_in_tx ON
|
|
111
|
+
LEFT JOIN tx AS tx_in_tx ON
|
|
112
112
|
tx_in_tx.id = tx_in.tx_in_id AND
|
|
113
|
-
|
|
113
|
+
tx_in_tx.valid_contract = TRUE
|
|
114
114
|
JOIN tx AS tx_out_tx ON
|
|
115
115
|
tx_out_tx.id = tx_out.tx_id AND
|
|
116
|
-
|
|
117
|
-
WHERE
|
|
116
|
+
tx_out_tx.valid_contract = TRUE
|
|
117
|
+
WHERE
|
|
118
118
|
tx_in_tx.id IS null
|
|
119
|
-
GROUP BY pu.hash_id
|
|
119
|
+
GROUP BY pu.hash_id
|
|
120
120
|
),
|
|
121
121
|
active_stake AS (
|
|
122
|
-
SELECT
|
|
122
|
+
SELECT
|
|
123
123
|
sum(es.amount) AS active_stake,
|
|
124
124
|
es.pool_id AS pool_hash_id
|
|
125
125
|
FROM epoch_stake es
|
|
126
|
-
|
|
126
|
+
WHERE es.pool_id = ANY($1)
|
|
127
127
|
AND es.epoch_no = (SELECT epoch_no FROM current_epoch)
|
|
128
|
-
GROUP BY es.pool_id
|
|
128
|
+
GROUP BY es.pool_id
|
|
129
129
|
),
|
|
130
130
|
active_delegations AS (
|
|
131
|
-
SELECT
|
|
131
|
+
SELECT
|
|
132
132
|
d1.addr_id,
|
|
133
133
|
ph.id AS pool_hash_id
|
|
134
134
|
FROM pool_hash ph
|
|
135
|
-
JOIN delegation d1
|
|
136
|
-
ph.id = d1.pool_hash_id
|
|
135
|
+
JOIN delegation d1 ON
|
|
136
|
+
ph.id = d1.pool_hash_id
|
|
137
137
|
WHERE ph.id = ANY($1)
|
|
138
138
|
AND NOT EXISTS
|
|
139
139
|
(SELECT TRUE
|
|
140
140
|
FROM delegation d2
|
|
141
|
-
WHERE d2.addr_id=d1.addr_id
|
|
141
|
+
WHERE d2.addr_id=d1.addr_id
|
|
142
142
|
AND d2.tx_id>d1.tx_id)
|
|
143
143
|
AND NOT EXISTS
|
|
144
144
|
(SELECT TRUE
|
|
@@ -149,63 +149,63 @@ active_delegations AS (
|
|
|
149
149
|
delegators AS (
|
|
150
150
|
SELECT
|
|
151
151
|
COUNT(1) AS delegators,
|
|
152
|
-
d.pool_hash_id
|
|
153
|
-
FROM active_delegations d
|
|
154
|
-
GROUP BY d.pool_hash_id
|
|
152
|
+
d.pool_hash_id
|
|
153
|
+
FROM active_delegations d
|
|
154
|
+
GROUP BY d.pool_hash_id
|
|
155
155
|
),
|
|
156
156
|
total_utxos AS (
|
|
157
|
-
SELECT
|
|
157
|
+
SELECT
|
|
158
158
|
COALESCE(SUM(tx_out.value),0) AS total_amount,
|
|
159
159
|
ad.pool_hash_id
|
|
160
|
-
FROM active_delegations ad
|
|
161
|
-
JOIN tx_out ON
|
|
160
|
+
FROM active_delegations ad
|
|
161
|
+
JOIN tx_out ON
|
|
162
162
|
tx_out.stake_address_id = ad.addr_id
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
163
|
+
LEFT JOIN tx_in ON
|
|
164
|
+
tx_out.tx_id = tx_in.tx_out_id AND
|
|
165
|
+
tx_out.index::smallint = tx_in.tx_out_index::smallint
|
|
166
|
+
LEFT JOIN tx AS tx_in_tx ON
|
|
167
|
+
tx_in_tx.id = tx_in.tx_in_id AND
|
|
168
|
+
tx_in_tx.valid_contract = TRUE
|
|
169
|
+
JOIN tx AS tx_out_tx ON
|
|
170
|
+
tx_out_tx.id = tx_out.tx_id AND
|
|
171
|
+
tx_out_tx.valid_contract = TRUE
|
|
172
|
+
WHERE
|
|
173
|
+
tx_in_tx.id IS NULL
|
|
174
174
|
GROUP BY ad.pool_hash_id
|
|
175
175
|
),
|
|
176
176
|
total_rewards AS (
|
|
177
|
-
SELECT
|
|
177
|
+
SELECT
|
|
178
178
|
COALESCE(SUM(r.amount),0) AS total_amount,
|
|
179
179
|
ad.pool_hash_id
|
|
180
|
-
FROM active_delegations ad
|
|
181
|
-
JOIN reward r ON
|
|
182
|
-
|
|
180
|
+
FROM active_delegations ad
|
|
181
|
+
JOIN reward r ON
|
|
182
|
+
ad.addr_id = r.addr_id
|
|
183
183
|
WHERE r.spendable_epoch <= (SELECT epoch_no FROM current_epoch)
|
|
184
184
|
GROUP BY ad.pool_hash_id
|
|
185
185
|
),
|
|
186
186
|
total_withdraws AS (
|
|
187
|
-
SELECT
|
|
187
|
+
SELECT
|
|
188
188
|
COALESCE(SUM(w.amount),0) AS total_amount,
|
|
189
189
|
ad.pool_hash_id
|
|
190
190
|
FROM withdrawal w
|
|
191
|
-
JOIN tx ON tx.id = w.tx_id AND
|
|
191
|
+
JOIN tx ON tx.id = w.tx_id AND
|
|
192
192
|
tx.valid_contract = TRUE
|
|
193
193
|
JOIN active_delegations ad ON ad.addr_id = w.addr_id
|
|
194
194
|
GROUP BY ad.pool_hash_id
|
|
195
195
|
),
|
|
196
196
|
live_stake AS (
|
|
197
|
-
SELECT
|
|
197
|
+
SELECT
|
|
198
198
|
(total_utxos.total_amount +
|
|
199
199
|
COALESCE(tr.total_amount,0) -
|
|
200
200
|
COALESCE(tw.total_amount,0)) AS live_stake,
|
|
201
201
|
total_utxos.pool_hash_id
|
|
202
202
|
FROM total_utxos
|
|
203
|
-
LEFT JOIN total_rewards tr
|
|
203
|
+
LEFT JOIN total_rewards tr ON
|
|
204
204
|
total_utxos.pool_hash_id = tr.pool_hash_id
|
|
205
|
-
LEFT JOIN total_withdraws tw
|
|
205
|
+
LEFT JOIN total_withdraws tw ON
|
|
206
206
|
total_utxos.pool_hash_id = tw.pool_hash_id
|
|
207
207
|
)
|
|
208
|
-
SELECT
|
|
208
|
+
SELECT
|
|
209
209
|
COALESCE(bc.blocks_created,0) AS blocks_created,
|
|
210
210
|
COALESCE(d.delegators,0) AS delegators,
|
|
211
211
|
COALESCE(a_stake.active_stake,0) AS active_stake,
|
|
@@ -213,9 +213,9 @@ SELECT
|
|
|
213
213
|
(COALESCE(tr.amount,0) - COALESCE(tw.amount,0) + COALESCE (otu.amount,0))
|
|
214
214
|
AS live_pledge,
|
|
215
215
|
CASE
|
|
216
|
-
WHEN $2::numeric = 0::numeric
|
|
216
|
+
WHEN $2::numeric = 0::numeric
|
|
217
217
|
THEN 0::numeric
|
|
218
|
-
ELSE
|
|
218
|
+
ELSE
|
|
219
219
|
(
|
|
220
220
|
COALESCE(l_stake.live_stake,0::numeric) *
|
|
221
221
|
((SELECT optimal_pool_count FROM current_epoch)::NUMERIC) /
|
|
@@ -228,165 +228,134 @@ SELECT
|
|
|
228
228
|
ELSE
|
|
229
229
|
(COALESCE(a_stake.active_stake,0)/COALESCE(l_stake.live_stake,0))
|
|
230
230
|
END AS active_stake_percentage,
|
|
231
|
-
ph.id AS pool_hash_id
|
|
231
|
+
ph.id AS pool_hash_id
|
|
232
232
|
FROM pool_hash ph
|
|
233
|
-
LEFT JOIN blocks_created bc
|
|
233
|
+
LEFT JOIN blocks_created bc ON
|
|
234
234
|
bc.pool_hash_id = ph.id
|
|
235
|
-
LEFT JOIN delegators d
|
|
235
|
+
LEFT JOIN delegators d ON
|
|
236
236
|
d.pool_hash_id = ph.id
|
|
237
|
-
LEFT JOIN active_stake a_stake
|
|
237
|
+
LEFT JOIN active_stake a_stake ON
|
|
238
238
|
a_stake.pool_hash_id = ph.id
|
|
239
|
-
LEFT JOIN live_stake l_stake
|
|
239
|
+
LEFT JOIN live_stake l_stake ON
|
|
240
240
|
l_stake.pool_hash_id = ph.id
|
|
241
241
|
LEFT JOIN total_rewards_of_reward_acc AS tr ON
|
|
242
|
-
|
|
242
|
+
tr.pool_hash_id = ph.id
|
|
243
243
|
LEFT JOIN total_withdraws_of_reward_acc AS tw ON
|
|
244
|
-
|
|
245
|
-
LEFT JOIN owners_total_utxos otu
|
|
246
|
-
|
|
247
|
-
|
|
244
|
+
tw.pool_hash_id = ph.id
|
|
245
|
+
LEFT JOIN owners_total_utxos otu ON
|
|
246
|
+
otu.hash_id = ph.id
|
|
247
|
+
WHERE id = ANY($1)
|
|
248
248
|
`;
|
|
249
|
-
const epochRewardsSubqueries = (limit) => `
|
|
249
|
+
const epochRewardsSubqueries = (epochLength, limit) => `
|
|
250
250
|
WITH epochs AS (
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
251
|
+
SELECT
|
|
252
|
+
"no" AS epoch_no,
|
|
253
|
+
CASE
|
|
254
|
+
WHEN "no" = (SELECT MAX("no") FROM epoch)
|
|
255
|
+
THEN EXTRACT(EPOCH FROM (end_time - start_time)) * 1000
|
|
256
|
+
ELSE
|
|
257
|
+
${epochLength}
|
|
258
|
+
END AS epoch_length
|
|
259
|
+
FROM epoch
|
|
260
|
+
ORDER BY no DESC
|
|
256
261
|
${limit !== undefined ? `LIMIT ${limit}` : ''}
|
|
257
262
|
),
|
|
263
|
+
pool_mixed_rewards_per_epoch AS (
|
|
264
|
+
SELECT
|
|
265
|
+
reward.pool_id AS hash_id,
|
|
266
|
+
epochs.epoch_no,
|
|
267
|
+
reward.type,
|
|
268
|
+
SUM(reward.amount) AS amount
|
|
269
|
+
FROM epochs
|
|
270
|
+
JOIN reward
|
|
271
|
+
ON reward.earned_epoch = epochs.epoch_no
|
|
272
|
+
AND reward.pool_id = ANY($1)
|
|
273
|
+
WHERE reward.type IN ('leader', 'member')
|
|
274
|
+
GROUP BY reward.pool_id, epochs.epoch_no, reward.type
|
|
275
|
+
),
|
|
258
276
|
pool_rewards_per_epoch AS (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
277
|
+
SELECT
|
|
278
|
+
leader.hash_id,
|
|
279
|
+
leader.epoch_no,
|
|
280
|
+
leader.amount AS leader_rewards,
|
|
281
|
+
member.amount AS member_rewards
|
|
282
|
+
FROM pool_mixed_rewards_per_epoch AS leader
|
|
283
|
+
JOIN pool_mixed_rewards_per_epoch AS member
|
|
284
|
+
ON leader.hash_id = member.hash_id
|
|
285
|
+
AND leader.epoch_no = member.epoch_no
|
|
286
|
+
WHERE leader.type = 'leader'
|
|
287
|
+
AND member.type = 'member'
|
|
269
288
|
),
|
|
270
289
|
pool_stake_per_epoch AS (
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
290
|
+
SELECT
|
|
291
|
+
epoch_stake.pool_id AS hash_id,
|
|
292
|
+
epochs.epoch_no,
|
|
274
293
|
SUM(epoch_stake.amount) AS active_stake
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
294
|
+
FROM epochs
|
|
295
|
+
JOIN epoch_stake
|
|
296
|
+
ON epoch_stake.epoch_no = epochs.epoch_no
|
|
297
|
+
AND epoch_stake.pool_id = ANY($1)
|
|
298
|
+
GROUP BY epoch_stake.pool_id, epochs.epoch_no
|
|
280
299
|
),
|
|
281
300
|
epoch_rewards AS (
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
, 0)
|
|
295
|
-
)
|
|
296
|
-
END AS operator_fees,
|
|
297
|
-
CASE
|
|
298
|
-
WHEN COALESCE(stake.active_stake, 0) = 0
|
|
299
|
-
THEN 0
|
|
300
|
-
WHEN pool.fixed_cost >= rewards.total_amount
|
|
301
|
-
THEN (
|
|
302
|
-
COALESCE(
|
|
303
|
-
(rewards.total_amount - COALESCE(rewards.total_amount, 0)) / stake.active_stake
|
|
304
|
-
, 0)
|
|
305
|
-
)
|
|
306
|
-
ELSE (
|
|
307
|
-
COALESCE(
|
|
308
|
-
(rewards.total_amount -
|
|
309
|
-
COALESCE(
|
|
310
|
-
FLOOR((rewards.total_amount - pool.fixed_cost) * pool.margin) + pool.fixed_cost
|
|
311
|
-
, 0)) / stake.active_stake
|
|
312
|
-
, 0)
|
|
313
|
-
) END AS member_roi
|
|
314
|
-
FROM pool_stake_per_epoch AS stake
|
|
315
|
-
JOIN epochs
|
|
316
|
-
ON epochs.epoch_no = stake.epoch_no
|
|
301
|
+
SELECT
|
|
302
|
+
epochs.epoch_no,
|
|
303
|
+
epochs.epoch_length,
|
|
304
|
+
stake.hash_id,
|
|
305
|
+
COALESCE(rewards.leader_rewards, 0) AS leader_rewards,
|
|
306
|
+
COALESCE(rewards.member_rewards, 0) AS member_rewards,
|
|
307
|
+
COALESCE(stake.active_stake, 0) AS active_stake,
|
|
308
|
+
pool.pledge,
|
|
309
|
+
COALESCE(rewards.member_rewards / NULLIF(stake.active_stake - pool.pledge, 0), 0)::DOUBLE PRECISION AS member_roi
|
|
310
|
+
FROM pool_stake_per_epoch AS stake
|
|
311
|
+
JOIN epochs
|
|
312
|
+
ON epochs.epoch_no = stake.epoch_no
|
|
317
313
|
LEFT JOIN pool_rewards_per_epoch AS rewards
|
|
318
|
-
|
|
319
|
-
|
|
314
|
+
ON rewards.epoch_no = stake.epoch_no
|
|
315
|
+
AND rewards.hash_id = stake.hash_id
|
|
320
316
|
JOIN pool_update AS pool
|
|
321
317
|
ON pool.id = (
|
|
322
318
|
SELECT id
|
|
323
319
|
FROM pool_update
|
|
324
|
-
WHERE hash_id = stake.hash_id
|
|
320
|
+
WHERE hash_id = stake.hash_id
|
|
325
321
|
AND active_epoch_no <= epochs.epoch_no
|
|
326
322
|
ORDER BY id DESC
|
|
327
323
|
LIMIT 1
|
|
328
324
|
)
|
|
329
325
|
)`;
|
|
330
|
-
const findPoolEpochRewards = (limit) => `
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
326
|
+
const findPoolEpochRewards = (epochLength, limit) => `
|
|
327
|
+
${epochRewardsSubqueries(epochLength, limit)}
|
|
328
|
+
SELECT
|
|
329
|
+
active_stake,
|
|
330
|
+
epoch_length::TEXT,
|
|
331
|
+
epoch_no,
|
|
332
|
+
hash_id,
|
|
333
|
+
leader_rewards,
|
|
334
|
+
member_rewards,
|
|
335
|
+
member_roi,
|
|
336
|
+
pledge
|
|
337
|
+
FROM epoch_rewards
|
|
338
|
+
ORDER BY epoch_no desc
|
|
342
339
|
`;
|
|
343
340
|
exports.findPoolEpochRewards = findPoolEpochRewards;
|
|
344
|
-
const findPoolAPY = (limit) => `
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
)
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
POWER(
|
|
359
|
-
(
|
|
360
|
-
1 + (
|
|
361
|
-
avg_daily_roi.avg_roi * (epochs.epoch_length / 86400000)
|
|
362
|
-
)
|
|
363
|
-
):: numeric,
|
|
364
|
-
COALESCE(
|
|
365
|
-
365 / NULLIF(epochs.epoch_length / 86400000, 0),
|
|
366
|
-
0
|
|
367
|
-
):: numeric
|
|
368
|
-
),
|
|
369
|
-
1E+308
|
|
370
|
-
) -1
|
|
371
|
-
):: double precision AS apy
|
|
372
|
-
FROM epoch_rewards AS epochs
|
|
373
|
-
JOIN (
|
|
374
|
-
SELECT
|
|
375
|
-
hash_id,
|
|
376
|
-
MAX(epoch_no) AS epoch_no
|
|
377
|
-
FROM epoch_rewards AS sub
|
|
378
|
-
GROUP BY hash_id
|
|
379
|
-
) AS max_epoch
|
|
380
|
-
ON max_epoch.epoch_no = epochs.epoch_no
|
|
381
|
-
AND max_epoch.hash_id = epochs.hash_id
|
|
382
|
-
JOIN avg_daily_roi
|
|
383
|
-
ON avg_daily_roi.hash_id = epochs.hash_id
|
|
384
|
-
)
|
|
385
|
-
SELECT * FROM pool_apy
|
|
341
|
+
const findPoolAPY = (epochLength, limit) => `
|
|
342
|
+
${epochRewardsSubqueries(epochLength, limit)}
|
|
343
|
+
SELECT
|
|
344
|
+
hash_id,
|
|
345
|
+
COALESCE(
|
|
346
|
+
(SUM(member_rewards) / NULLIF(SUM(active_stake) - SUM(pledge), 0)) /
|
|
347
|
+
NULLIF(${epochLength} / 86400000, 0) * 365,
|
|
348
|
+
0
|
|
349
|
+
)::DOUBLE PRECISION AS apy
|
|
350
|
+
FROM epoch_rewards
|
|
351
|
+
WHERE
|
|
352
|
+
epoch_no < (SELECT MAX("no") - 1 FROM epoch)
|
|
353
|
+
GROUP BY
|
|
354
|
+
hash_id
|
|
386
355
|
`;
|
|
387
356
|
exports.findPoolAPY = findPoolAPY;
|
|
388
357
|
exports.findPools = `
|
|
389
|
-
SELECT
|
|
358
|
+
SELECT
|
|
390
359
|
ph.id,
|
|
391
360
|
pu.id AS update_id
|
|
392
361
|
FROM pool_hash ph
|
|
@@ -409,23 +378,23 @@ SELECT
|
|
|
409
378
|
dns_name,
|
|
410
379
|
dns_srv_name AS hostname --fixme: check this is correct
|
|
411
380
|
FROM pool_relay
|
|
412
|
-
JOIN pool_update
|
|
381
|
+
JOIN pool_update
|
|
413
382
|
ON pool_relay.update_id = pool_update.id
|
|
414
383
|
WHERE update_id = ANY($1)
|
|
415
384
|
`;
|
|
416
385
|
exports.findPoolsOwners = `
|
|
417
|
-
SELECT
|
|
418
|
-
|
|
419
|
-
|
|
386
|
+
SELECT
|
|
387
|
+
address."view" AS address,
|
|
388
|
+
pool_update.hash_id AS hash_id
|
|
420
389
|
FROM pool_owner AS "owner"
|
|
421
390
|
JOIN pool_update
|
|
422
|
-
|
|
391
|
+
ON "owner".pool_update_id = pool_update.id
|
|
423
392
|
JOIN stake_address AS address
|
|
424
|
-
|
|
393
|
+
ON "owner".addr_id = address.id
|
|
425
394
|
WHERE pool_update.id = ANY($1)
|
|
426
395
|
`;
|
|
427
396
|
exports.findPoolsRegistrations = `
|
|
428
|
-
SELECT
|
|
397
|
+
SELECT
|
|
429
398
|
tx.hash AS tx_hash,
|
|
430
399
|
pu.hash_id AS hash_id,
|
|
431
400
|
active_epoch_no
|
|
@@ -436,7 +405,7 @@ WHERE pu.hash_id = ANY($1)
|
|
|
436
405
|
ORDER BY pu.id DESC
|
|
437
406
|
`;
|
|
438
407
|
exports.findPoolsRetirements = `
|
|
439
|
-
SELECT
|
|
408
|
+
SELECT
|
|
440
409
|
tx.hash AS tx_hash,
|
|
441
410
|
pr.hash_id AS hash_id,
|
|
442
411
|
retiring_epoch
|
|
@@ -449,14 +418,14 @@ exports.poolsByPledgeMetSubqueries = [
|
|
|
449
418
|
{
|
|
450
419
|
id: { name: 'pools_delegated' },
|
|
451
420
|
query: `
|
|
452
|
-
SELECT
|
|
421
|
+
SELECT
|
|
453
422
|
ph.id,
|
|
454
423
|
ph.view,
|
|
455
424
|
pu.id AS update_id,
|
|
456
425
|
pu.active_epoch_no,
|
|
457
426
|
pu.pledge,
|
|
458
427
|
sa.id AS stake_address_id
|
|
459
|
-
FROM pool_hash ph
|
|
428
|
+
FROM pool_hash ph
|
|
460
429
|
JOIN pool_update pu
|
|
461
430
|
ON pu.id = (
|
|
462
431
|
SELECT id
|
|
@@ -464,15 +433,15 @@ exports.poolsByPledgeMetSubqueries = [
|
|
|
464
433
|
WHERE pu2.hash_id = ph.id
|
|
465
434
|
ORDER BY id DESC
|
|
466
435
|
LIMIT 1
|
|
467
|
-
)
|
|
436
|
+
)
|
|
468
437
|
JOIN stake_address sa ON
|
|
469
|
-
sa.id = pu.reward_addr_id
|
|
470
|
-
JOIN delegation d1
|
|
471
|
-
sa.id = d1.addr_id
|
|
438
|
+
sa.id = pu.reward_addr_id
|
|
439
|
+
LEFT JOIN delegation d1 ON
|
|
440
|
+
sa.id = d1.addr_id
|
|
472
441
|
WHERE NOT EXISTS
|
|
473
442
|
(SELECT TRUE
|
|
474
443
|
FROM delegation d2
|
|
475
|
-
WHERE d2.addr_id=d1.addr_id
|
|
444
|
+
WHERE d2.addr_id=d1.addr_id
|
|
476
445
|
AND d2.tx_id>d1.tx_id)
|
|
477
446
|
AND NOT EXISTS
|
|
478
447
|
(SELECT TRUE
|
|
@@ -484,12 +453,12 @@ exports.poolsByPledgeMetSubqueries = [
|
|
|
484
453
|
{
|
|
485
454
|
id: { name: 'pool_owner_rewards' },
|
|
486
455
|
query: `
|
|
487
|
-
SELECT
|
|
456
|
+
SELECT
|
|
488
457
|
COALESCE(SUM(r.amount),0) AS total_amount,
|
|
489
458
|
sa.id AS stake_address_id,
|
|
490
459
|
r.pool_id
|
|
491
460
|
FROM reward r
|
|
492
|
-
JOIN stake_address sa ON
|
|
461
|
+
JOIN stake_address sa ON
|
|
493
462
|
sa.id = r.addr_id
|
|
494
463
|
WHERE sa.id in (SELECT stake_address_id FROM pools_delegated) and
|
|
495
464
|
r.spendable_epoch <= (SELECT "no" FROM current_epoch)
|
|
@@ -497,65 +466,65 @@ exports.poolsByPledgeMetSubqueries = [
|
|
|
497
466
|
},
|
|
498
467
|
{
|
|
499
468
|
id: { name: 'pool_owner_withdraws' },
|
|
500
|
-
query: `
|
|
501
|
-
SELECT
|
|
469
|
+
query: `
|
|
470
|
+
SELECT
|
|
502
471
|
COALESCE(SUM(w.amount),0) AS total_amount,
|
|
503
472
|
sa.id AS stake_address_id
|
|
504
473
|
FROM withdrawal w
|
|
505
|
-
JOIN tx ON tx.id = w.tx_id AND
|
|
474
|
+
JOIN tx ON tx.id = w.tx_id AND
|
|
506
475
|
tx.valid_contract = TRUE
|
|
507
476
|
JOIN stake_address sa ON sa.id = w.addr_id
|
|
508
|
-
JOIN pools_delegated pool
|
|
477
|
+
JOIN pools_delegated pool ON pool.stake_address_id = sa.id
|
|
509
478
|
GROUP BY sa.id`
|
|
510
479
|
},
|
|
511
480
|
{
|
|
512
481
|
id: { name: 'reward_acc_balance' },
|
|
513
482
|
query: `
|
|
514
|
-
SELECT
|
|
483
|
+
SELECT
|
|
515
484
|
(r.total_amount - w.total_amount) AS total_amount,
|
|
516
485
|
r.stake_address_id,
|
|
517
|
-
r.pool_id
|
|
486
|
+
r.pool_id
|
|
518
487
|
FROM pool_owner_rewards r
|
|
519
|
-
JOIN pool_owner_withdraws w
|
|
520
|
-
|
|
488
|
+
JOIN pool_owner_withdraws w
|
|
489
|
+
ON r.stake_address_id = w.stake_address_id `
|
|
521
490
|
},
|
|
522
491
|
{
|
|
523
492
|
id: { name: 'owners_utxo' },
|
|
524
493
|
query: `
|
|
525
494
|
SELECT
|
|
526
495
|
tx_out.value AS value,
|
|
527
|
-
pu.hash_id
|
|
496
|
+
pu.hash_id
|
|
528
497
|
FROM tx_out
|
|
529
|
-
JOIN pool_owner o ON
|
|
498
|
+
JOIN pool_owner o ON
|
|
530
499
|
o.addr_id = tx_out.stake_address_id
|
|
531
500
|
JOIN pool_update pu ON
|
|
532
501
|
o.pool_update_id = pu.id
|
|
533
502
|
AND pu.hash_id IN (SELECT id FROM pools_delegated)
|
|
534
|
-
LEFT JOIN tx_in ON
|
|
535
|
-
tx_out.tx_id = tx_in.tx_out_id AND
|
|
503
|
+
LEFT JOIN tx_in ON
|
|
504
|
+
tx_out.tx_id = tx_in.tx_out_id AND
|
|
536
505
|
tx_out.index::smallint = tx_in.tx_out_index::smallint
|
|
537
|
-
LEFT JOIN tx AS tx_in_tx ON
|
|
506
|
+
LEFT JOIN tx AS tx_in_tx ON
|
|
538
507
|
tx_in_tx.id = tx_in.tx_in_id AND
|
|
539
508
|
tx_in_tx.valid_contract = TRUE
|
|
540
509
|
JOIN tx AS tx_out_tx ON
|
|
541
510
|
tx_out_tx.id = tx_out.tx_id AND
|
|
542
511
|
tx_out_tx.valid_contract = TRUE
|
|
543
|
-
WHERE
|
|
512
|
+
WHERE
|
|
544
513
|
tx_in_tx.id IS NULL`
|
|
545
514
|
},
|
|
546
515
|
{
|
|
547
516
|
id: { name: 'owners_balance' },
|
|
548
517
|
query: `
|
|
549
|
-
SELECT
|
|
518
|
+
SELECT
|
|
550
519
|
SUM(value) AS total_amount,
|
|
551
520
|
hash_id AS pool_hash_id
|
|
552
|
-
FROM owners_utxo
|
|
521
|
+
FROM owners_utxo
|
|
553
522
|
GROUP BY hash_id`
|
|
554
523
|
}
|
|
555
524
|
];
|
|
556
525
|
exports.POOLS_WITH_PLEDGE_MET = {
|
|
557
526
|
JOIN_CLAUSE: `
|
|
558
|
-
LEFT JOIN owners_balance o_balance ON
|
|
527
|
+
LEFT JOIN owners_balance o_balance ON
|
|
559
528
|
ph.id = o_balance.pool_hash_id
|
|
560
529
|
LEFT JOIN reward_acc_balance r_balance ON
|
|
561
530
|
r_balance.pool_id = ph.id`,
|
|
@@ -564,19 +533,19 @@ exports.POOLS_WITH_PLEDGE_MET = {
|
|
|
564
533
|
ph.id,
|
|
565
534
|
ph.update_id
|
|
566
535
|
FROM pools_delegated AS ph`,
|
|
567
|
-
WHERE_CLAUSE: (metPledge) => `
|
|
536
|
+
WHERE_CLAUSE: (metPledge) => `
|
|
568
537
|
((COALESCE(o_balance.total_amount,0) +
|
|
569
|
-
COALESCE (r_balance.total_amount, 0))
|
|
538
|
+
COALESCE (r_balance.total_amount, 0))
|
|
570
539
|
${metPledge ? ' >=' : '<'} ph.pledge)`,
|
|
571
|
-
WITH_CLAUSE: `WITH
|
|
540
|
+
WITH_CLAUSE: `WITH
|
|
572
541
|
current_epoch AS (${exports.findLastEpoch}),
|
|
573
542
|
${exports.poolsByPledgeMetSubqueries.map((subQuery) => `${subQuery.id.name} AS (${subQuery.query})`).join(', ')}
|
|
574
543
|
`
|
|
575
544
|
};
|
|
576
545
|
const findPoolsWithPledgeMet = (metPledge) => `
|
|
577
|
-
${exports.POOLS_WITH_PLEDGE_MET.WITH_CLAUSE}
|
|
578
|
-
${exports.POOLS_WITH_PLEDGE_MET.SELECT_CLAUSE}
|
|
579
|
-
${exports.POOLS_WITH_PLEDGE_MET.JOIN_CLAUSE}
|
|
546
|
+
${exports.POOLS_WITH_PLEDGE_MET.WITH_CLAUSE}
|
|
547
|
+
${exports.POOLS_WITH_PLEDGE_MET.SELECT_CLAUSE}
|
|
548
|
+
${exports.POOLS_WITH_PLEDGE_MET.JOIN_CLAUSE}
|
|
580
549
|
WHERE ${exports.POOLS_WITH_PLEDGE_MET.WHERE_CLAUSE(metPledge)}`;
|
|
581
550
|
exports.findPoolsWithPledgeMet = findPoolsWithPledgeMet;
|
|
582
551
|
exports.STATUS_QUERY = {
|
|
@@ -593,25 +562,25 @@ exports.STATUS_QUERY = {
|
|
|
593
562
|
ORDER BY id DESC
|
|
594
563
|
LIMIT 1
|
|
595
564
|
)
|
|
596
|
-
LEFT JOIN pool_retire pr
|
|
565
|
+
LEFT JOIN pool_retire pr
|
|
597
566
|
ON pr.id = (
|
|
598
567
|
SELECT id
|
|
599
568
|
FROM pool_retire pr2
|
|
600
569
|
WHERE pr2.hash_id = ph.id
|
|
601
|
-
ORDER BY id desc
|
|
570
|
+
ORDER BY id desc
|
|
602
571
|
LIMIT 1
|
|
603
572
|
)
|
|
604
573
|
`,
|
|
605
|
-
WITH_CLAUSE: `WITH
|
|
574
|
+
WITH_CLAUSE: `WITH
|
|
606
575
|
current_epoch AS (${exports.findLastEpoch})`
|
|
607
576
|
};
|
|
608
577
|
exports.IDENTIFIER_QUERY = {
|
|
609
578
|
JOIN_CLAUSE: {
|
|
610
|
-
OFFLINE_METADATA: `
|
|
611
|
-
LEFT JOIN pool_offline_data pod
|
|
579
|
+
OFFLINE_METADATA: `
|
|
580
|
+
LEFT JOIN pool_offline_data pod
|
|
612
581
|
ON pod.pool_id = ph.id
|
|
613
582
|
`,
|
|
614
|
-
POOL_UPDATE: `
|
|
583
|
+
POOL_UPDATE: `
|
|
615
584
|
JOIN pool_update pu
|
|
616
585
|
ON pu.id = (
|
|
617
586
|
SELECT id
|
|
@@ -622,18 +591,18 @@ exports.IDENTIFIER_QUERY = {
|
|
|
622
591
|
)`
|
|
623
592
|
},
|
|
624
593
|
SELECT_CLAUSE: `
|
|
625
|
-
SELECT
|
|
594
|
+
SELECT
|
|
626
595
|
ph.id,
|
|
627
596
|
pu.id AS update_id
|
|
628
|
-
FROM pool_hash ph
|
|
597
|
+
FROM pool_hash ph
|
|
629
598
|
`
|
|
630
599
|
};
|
|
631
600
|
const getIdentifierFullJoinClause = () => `
|
|
632
|
-
${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.POOL_UPDATE}
|
|
601
|
+
${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.POOL_UPDATE}
|
|
633
602
|
${exports.IDENTIFIER_QUERY.JOIN_CLAUSE.OFFLINE_METADATA}`;
|
|
634
603
|
exports.getIdentifierFullJoinClause = getIdentifierFullJoinClause;
|
|
635
604
|
exports.findPoolsData = `
|
|
636
|
-
SELECT
|
|
605
|
+
SELECT
|
|
637
606
|
pu.hash_id,
|
|
638
607
|
ph.hash_raw AS pool_hash,
|
|
639
608
|
pu.id AS update_id,
|
|
@@ -644,12 +613,11 @@ SELECT
|
|
|
644
613
|
pu.fixed_cost,
|
|
645
614
|
pu.margin,
|
|
646
615
|
pu.vrf_key_hash,
|
|
647
|
-
metadata.url AS metadata_url,
|
|
616
|
+
metadata.url AS metadata_url,
|
|
648
617
|
metadata.hash AS metadata_hash,
|
|
649
|
-
pod.json AS offline_data
|
|
650
|
-
pod.json -> 'name' AS name
|
|
618
|
+
pod.json AS offline_data
|
|
651
619
|
FROM pool_update pu
|
|
652
|
-
JOIN pool_hash ph ON
|
|
620
|
+
JOIN pool_hash ph ON
|
|
653
621
|
ph.id = pu.hash_id
|
|
654
622
|
JOIN stake_address sa ON
|
|
655
623
|
sa.id = pu.reward_addr_id
|
|
@@ -692,16 +660,16 @@ const getStatusWhereClause = (status, columns) => {
|
|
|
692
660
|
const whereClause = [];
|
|
693
661
|
const activeEpochColumn = columns?.activeEpoch || 'pu.active_epoch_no';
|
|
694
662
|
if (status.includes(core_1.Cardano.StakePoolStatus.Retiring))
|
|
695
|
-
whereClause.push(`(COALESCE(pr.retiring_epoch,0) > (SELECT "no" FROM current_epoch)
|
|
663
|
+
whereClause.push(`(COALESCE(pr.retiring_epoch,0) > (SELECT "no" FROM current_epoch)
|
|
696
664
|
AND COALESCE(pr.retiring_epoch,0) > ${activeEpochColumn})`);
|
|
697
665
|
if (status.includes(core_1.Cardano.StakePoolStatus.Retired))
|
|
698
|
-
whereClause.push(`(COALESCE(pr.retiring_epoch,0) <= (SELECT "no" FROM current_epoch)
|
|
666
|
+
whereClause.push(`(COALESCE(pr.retiring_epoch,0) <= (SELECT "no" FROM current_epoch)
|
|
699
667
|
AND COALESCE(pr.retiring_epoch,0) > ${activeEpochColumn})`);
|
|
700
668
|
if (status.includes(core_1.Cardano.StakePoolStatus.Activating))
|
|
701
|
-
whereClause.push(`(${activeEpochColumn} > (SELECT "no" FROM current_epoch)
|
|
669
|
+
whereClause.push(`(${activeEpochColumn} > (SELECT "no" FROM current_epoch)
|
|
702
670
|
AND COALESCE(pr.retiring_epoch,0) <= ${activeEpochColumn})`);
|
|
703
671
|
if (status.includes(core_1.Cardano.StakePoolStatus.Active))
|
|
704
|
-
whereClause.push(`(${activeEpochColumn} <= (SELECT "no" FROM current_epoch)
|
|
672
|
+
whereClause.push(`(${activeEpochColumn} <= (SELECT "no" FROM current_epoch)
|
|
705
673
|
AND COALESCE(pr.retiring_epoch,0) < ${activeEpochColumn})`);
|
|
706
674
|
return `(${whereClause.join(' OR ')})`;
|
|
707
675
|
};
|
|
@@ -728,7 +696,7 @@ const buildOrQueryFromClauses = (clauses) => {
|
|
|
728
696
|
});
|
|
729
697
|
const primarySubQueries = clauses.filter((clause) => clause.id.isPrimary);
|
|
730
698
|
return `
|
|
731
|
-
WITH ${uniqueClauses.map(({ id, query }) => `${id.name} AS (${query})`).join(', ')}
|
|
699
|
+
WITH ${uniqueClauses.map(({ id, query }) => `${id.name} AS (${query})`).join(', ')}
|
|
732
700
|
SELECT id, update_id
|
|
733
701
|
FROM
|
|
734
702
|
(${primarySubQueries.map((subQuery) => `SELECT id, update_id FROM ${subQuery.id.name}`).join(' UNION ')})
|
|
@@ -739,68 +707,68 @@ const buildOrQueryFromClauses = (clauses) => {
|
|
|
739
707
|
};
|
|
740
708
|
exports.buildOrQueryFromClauses = buildOrQueryFromClauses;
|
|
741
709
|
const getTotalCountQueryFromQuery = (query) => `
|
|
742
|
-
SELECT
|
|
710
|
+
SELECT
|
|
743
711
|
COUNT(1) AS total_count
|
|
744
|
-
FROM (${query})
|
|
712
|
+
FROM (${query}) AS query
|
|
745
713
|
`;
|
|
746
714
|
exports.getTotalCountQueryFromQuery = getTotalCountQueryFromQuery;
|
|
747
715
|
exports.findPoolStats = `
|
|
748
716
|
WITH current_epoch AS (
|
|
749
|
-
|
|
750
|
-
|
|
717
|
+
SELECT MAX(epoch_no) AS epoch_no
|
|
718
|
+
FROM block
|
|
751
719
|
),
|
|
752
720
|
last_pool_update AS (
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
721
|
+
SELECT
|
|
722
|
+
pool_update.hash_id,
|
|
723
|
+
pool_update.registered_tx_id,
|
|
724
|
+
pool_update.active_epoch_no
|
|
725
|
+
FROM pool_update
|
|
726
|
+
JOIN (
|
|
727
|
+
SELECT hash_id, MAX(registered_tx_id) AS tx_id
|
|
728
|
+
FROM pool_update
|
|
729
|
+
WHERE active_epoch_no <= (SELECT epoch_no FROM current_epoch)
|
|
730
|
+
GROUP BY hash_id
|
|
731
|
+
) AS last_update ON pool_update.hash_id = last_update.hash_id
|
|
732
|
+
AND pool_update.registered_tx_id = last_update.tx_id
|
|
765
733
|
),
|
|
766
734
|
last_pool_retire AS (
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
735
|
+
SELECT
|
|
736
|
+
pool_retire.hash_id,
|
|
737
|
+
MAX(pool_retire.announced_tx_id) AS announced_tx_id,
|
|
738
|
+
pool_retire.retiring_epoch FROM pool_retire
|
|
739
|
+
JOIN (
|
|
740
|
+
SELECT hash_id, MAX(retiring_epoch) AS epoch
|
|
741
|
+
FROM pool_retire
|
|
742
|
+
GROUP BY hash_id
|
|
743
|
+
) AS last_retired ON pool_retire.hash_id = last_retired.hash_id
|
|
744
|
+
AND pool_retire.retiring_epoch = last_retired.epoch
|
|
745
|
+
GROUP BY pool_retire.hash_id, pool_retire.retiring_epoch
|
|
778
746
|
)
|
|
779
|
-
SELECT
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
FROM last_pool_update AS pool_update
|
|
799
|
-
LEFT JOIN last_pool_retire AS pool_retire
|
|
800
|
-
|
|
747
|
+
SELECT
|
|
748
|
+
COUNT(
|
|
749
|
+
CASE WHEN pool_retire.hash_id IS NULL
|
|
750
|
+
OR (
|
|
751
|
+
pool_update.active_epoch_no > pool_retire.retiring_epoch
|
|
752
|
+
AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
|
|
753
|
+
) THEN 1 ELSE NULL END) AS active,
|
|
754
|
+
COUNT(
|
|
755
|
+
CASE WHEN pool_retire.hash_id IS NOT NULL
|
|
756
|
+
AND (
|
|
757
|
+
pool_update.active_epoch_no <= pool_retire.retiring_epoch
|
|
758
|
+
AND pool_retire.retiring_epoch <= (SELECT epoch_no FROM current_epoch)
|
|
759
|
+
) THEN 1 ELSE NULL END) AS retired,
|
|
760
|
+
COUNT(
|
|
761
|
+
CASE WHEN pool_retire.hash_id IS NOT NULL
|
|
762
|
+
AND (
|
|
763
|
+
pool_update.active_epoch_no <= pool_retire.retiring_epoch
|
|
764
|
+
AND pool_retire.retiring_epoch > (SELECT epoch_no FROM current_epoch)
|
|
765
|
+
) THEN 1 ELSE NULL END) AS retiring
|
|
766
|
+
FROM last_pool_update AS pool_update
|
|
767
|
+
LEFT JOIN last_pool_retire AS pool_retire
|
|
768
|
+
ON pool_update.hash_id = pool_retire.hash_id`;
|
|
801
769
|
const sortFieldMapping = {
|
|
802
770
|
cost: { field: 'fixed_cost', secondary: ['margin'] },
|
|
803
|
-
name: { field: "lower((pod.json
|
|
771
|
+
name: { field: "lower((pod.json ->> 'name')::TEXT)" }
|
|
804
772
|
};
|
|
805
773
|
const mapSort = (sort) => {
|
|
806
774
|
if (!sort)
|