@gvnrdao/dh-lit-actions 0.0.112 → 0.0.192
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/admin-liquidation-validator.action.js +1 -0
- package/dist/admin-liquidation-validator.hash +1 -0
- package/dist/admin-liquidation-validator.meta.json +9 -0
- package/dist/always-signer.action.js +1 -0
- package/dist/always-signer.hash +1 -0
- package/dist/always-signer.meta.json +9 -0
- package/dist/authorization-dummy-b.action.js +1 -0
- package/dist/authorization-dummy-b.hash +1 -0
- package/dist/authorization-dummy-b.meta.json +9 -0
- package/dist/authorization-dummy.action.js +1 -0
- package/dist/authorization-dummy.hash +1 -0
- package/dist/authorization-dummy.meta.json +9 -0
- package/dist/btc-transaction-signer.action.js +1 -0
- package/dist/btc-transaction-signer.hash +1 -0
- package/dist/btc-transaction-signer.meta.json +9 -0
- package/dist/btc-withdrawal.action.js +1 -0
- package/dist/btc-withdrawal.hash +1 -0
- package/dist/btc-withdrawal.meta.json +9 -0
- package/dist/extend-position-validator.action.js +1 -0
- package/dist/extend-position-validator.hash +1 -0
- package/dist/extend-position-validator.meta.json +9 -0
- package/dist/liquidation-validator.action.js +1 -0
- package/dist/liquidation-validator.hash +1 -0
- package/dist/liquidation-validator.meta.json +9 -0
- package/dist/loan-vault-btc-balance.action.js +1 -0
- package/dist/loan-vault-btc-balance.hash +1 -0
- package/dist/loan-vault-btc-balance.meta.json +9 -0
- package/dist/pkp-validator-datil.action.js +1 -0
- package/dist/pkp-validator-datil.hash +1 -0
- package/dist/pkp-validator-datil.meta.json +9 -0
- package/dist/price-oracle.action.js +1 -0
- package/dist/price-oracle.hash +1 -0
- package/dist/price-oracle.meta.json +9 -0
- package/dist/process-payment-sign-only.action.js +1 -0
- package/dist/process-payment-sign-only.hash +1 -0
- package/dist/process-payment-sign-only.meta.json +9 -0
- package/dist/process-payment-validator.action.js +1 -0
- package/dist/process-payment-validator.hash +1 -0
- package/dist/process-payment-validator.meta.json +9 -0
- package/dist/ucd-mint-validator.action.js +1 -0
- package/dist/ucd-mint-validator.hash +1 -0
- package/dist/ucd-mint-validator.meta.json +9 -0
- package/package.json +4 -2
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.d.ts.map +1 -1
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.js +127 -108
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.js.map +1 -1
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.d.ts +47 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.d.ts.map +1 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.js +77 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.js.map +1 -0
- package/pkg-dist/pkg-src/executors/index.d.ts +39 -0
- package/pkg-dist/pkg-src/executors/index.d.ts.map +1 -1
- package/pkg-dist/pkg-src/executors/index.js +41 -1
- package/pkg-dist/pkg-src/executors/index.js.map +1 -1
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.d.ts.map +1 -1
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.js +0 -5
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.js.map +1 -1
- package/pkg-dist/src/constants/chunks/quantum-time.d.ts +5 -5
- package/pkg-dist/src/constants/chunks/quantum-time.js +5 -5
- package/pkg-dist/src/interfaces/chunks/vault-balance.i.d.ts +0 -1
- package/pkg-dist/src/interfaces/chunks/vault-balance.i.d.ts.map +1 -1
- package/pkg-dist/src/modules/bitcoin-data-provider.module.d.ts +7 -6
- package/pkg-dist/src/modules/bitcoin-data-provider.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/bitcoin-data-provider.module.js +93 -97
- package/pkg-dist/src/modules/bitcoin-data-provider.module.js.map +1 -1
- package/pkg-dist/src/modules/business-rules-math.module.d.ts +2 -0
- package/pkg-dist/src/modules/business-rules-math.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/business-rules-math.module.js +9 -2
- package/pkg-dist/src/modules/business-rules-math.module.js.map +1 -1
- package/pkg-dist/src/modules/lit-action-logger.module.d.ts +55 -0
- package/pkg-dist/src/modules/lit-action-logger.module.d.ts.map +1 -0
- package/pkg-dist/src/modules/lit-action-logger.module.js +184 -0
- package/pkg-dist/src/modules/lit-action-logger.module.js.map +1 -0
- package/pkg-dist/src/modules/price-oracle.module.d.ts +41 -3
- package/pkg-dist/src/modules/price-oracle.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/price-oracle.module.js +265 -122
- package/pkg-dist/src/modules/price-oracle.module.js.map +1 -1
- package/pkg-dist/src/modules/protocol-parameters.module.d.ts +10 -0
- package/pkg-dist/src/modules/protocol-parameters.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/protocol-parameters.module.js +49 -2
- package/pkg-dist/src/modules/protocol-parameters.module.js.map +1 -1
- package/pkg-dist/src/modules/quantum-time.module.d.ts +1 -1
- package/pkg-dist/src/modules/quantum-time.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/quantum-time.module.js +18 -9
- package/pkg-dist/src/modules/quantum-time.module.js.map +1 -1
- package/pkg-dist/src/modules/vault-balance.module.d.ts +37 -3
- package/pkg-dist/src/modules/vault-balance.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/vault-balance.module.js +116 -63
- package/pkg-dist/src/modules/vault-balance.module.js.map +1 -1
- package/pkg-dist/src/modules/vault-snapshot.d.ts +5 -3
- package/pkg-dist/src/modules/vault-snapshot.d.ts.map +1 -1
- package/pkg-dist/src/modules/vault-snapshot.js +9 -6
- package/pkg-dist/src/modules/vault-snapshot.js.map +1 -1
|
@@ -3,44 +3,81 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PriceOracleModule = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
class PriceOracleModule {
|
|
6
|
-
constructor(priceProvidersOrConfig, legacySources) {
|
|
6
|
+
constructor(priceProvidersOrConfig, legacySources, mode) {
|
|
7
|
+
this.mode = mode;
|
|
7
8
|
// Backward compatibility: if second parameter is provided, use legacy API
|
|
8
9
|
if (legacySources && Array.isArray(legacySources)) {
|
|
9
10
|
this.sources = legacySources;
|
|
10
11
|
}
|
|
11
|
-
else if (priceProvidersOrConfig &&
|
|
12
|
+
else if (priceProvidersOrConfig &&
|
|
13
|
+
Array.isArray(priceProvidersOrConfig)) {
|
|
12
14
|
// New API: priceProviders config array
|
|
13
15
|
this.sources = this.buildSources(priceProvidersOrConfig);
|
|
14
16
|
}
|
|
15
17
|
else {
|
|
16
|
-
// No config provided, use defaults
|
|
18
|
+
// No config provided, use defaults (all free providers without API keys)
|
|
17
19
|
this.sources = this.buildSources();
|
|
18
20
|
}
|
|
19
21
|
this.sources.sort((a, b) => a.priority - b.priority);
|
|
22
|
+
// Validate provider count based on mode
|
|
23
|
+
this.validateProviderCount();
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
|
-
*
|
|
26
|
+
* Validate provider count based on mode
|
|
27
|
+
* - Production: Requires at least 3 providers for consensus
|
|
28
|
+
* - Development: Allows as few as 1 provider for testing
|
|
29
|
+
*/
|
|
30
|
+
validateProviderCount() {
|
|
31
|
+
if (this.mode === "prod" && this.sources.length < 3) {
|
|
32
|
+
throw new Error(`Production mode requires at least 3 price providers for consensus. ` +
|
|
33
|
+
`Currently configured: ${this.sources.length} provider(s). ` +
|
|
34
|
+
`Supported providers: CoinGecko, Binance, Coinbase, CryptoCompare (with API key)`);
|
|
35
|
+
}
|
|
36
|
+
if (this.sources.length === 0) {
|
|
37
|
+
throw new Error("No price providers configured. At least one provider is required.");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build price sources from config
|
|
42
|
+
* All providers are treated equally - no special priority for any provider
|
|
23
43
|
*/
|
|
24
44
|
buildSources(priceProviders) {
|
|
25
|
-
const
|
|
26
|
-
// If no custom providers configured, return defaults
|
|
45
|
+
const sources = [];
|
|
27
46
|
if (!priceProviders || priceProviders.length === 0) {
|
|
28
|
-
|
|
47
|
+
// No config provided: Use all default free providers (no API keys)
|
|
48
|
+
return this.getDefaultSources();
|
|
29
49
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
50
|
+
// Build sources from config - all providers treated equally
|
|
51
|
+
let priority = 1;
|
|
52
|
+
for (const provider of priceProviders) {
|
|
53
|
+
const name = provider.name.toLowerCase();
|
|
54
|
+
switch (name) {
|
|
55
|
+
case "coingecko":
|
|
56
|
+
sources.push(this.createCoinGeckoSource(provider.apiKey, priority++));
|
|
57
|
+
break;
|
|
58
|
+
case "binance":
|
|
59
|
+
sources.push(this.createBinanceSource(provider.apiKey, provider.apiSecret, priority++));
|
|
60
|
+
break;
|
|
61
|
+
case "coinbase":
|
|
62
|
+
sources.push(this.createCoinbaseSource(provider.apiKey, priority++));
|
|
63
|
+
break;
|
|
64
|
+
case "cryptocompare":
|
|
65
|
+
if (!provider.apiKey) {
|
|
66
|
+
throw new Error("CryptoCompare requires an API key. Please provide apiKey in priceProviders config.");
|
|
67
|
+
}
|
|
68
|
+
sources.push(this.createCryptoCompareSource(provider.apiKey, priority++));
|
|
69
|
+
break;
|
|
70
|
+
default:
|
|
71
|
+
console.warn(`[Price Oracle] Unknown provider: ${provider.name} - skipping`);
|
|
72
|
+
}
|
|
35
73
|
}
|
|
36
|
-
// Add default sources (they will be sorted by priority)
|
|
37
|
-
sources.push(...defaultSources);
|
|
38
74
|
return sources;
|
|
39
75
|
}
|
|
40
76
|
/**
|
|
41
77
|
* Create CryptoCompare price source
|
|
78
|
+
* Requires API key for access
|
|
42
79
|
*/
|
|
43
|
-
createCryptoCompareSource(apiKey) {
|
|
80
|
+
createCryptoCompareSource(apiKey, priority) {
|
|
44
81
|
const fetchJson = async (url) => {
|
|
45
82
|
const controller = new AbortController();
|
|
46
83
|
const timeoutMs = 5000;
|
|
@@ -71,144 +108,256 @@ class PriceOracleModule {
|
|
|
71
108
|
name: "CryptoCompare",
|
|
72
109
|
fetchPrice: async () => {
|
|
73
110
|
// Each node fetches the price
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
data = await fetchJson(url);
|
|
80
|
-
console.log(`[Price Oracle] CryptoCompare: Fetch successful, data:`, JSON.stringify(data));
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
console.error(`[Price Oracle] CryptoCompare: Fetch failed:`, error.message);
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
111
|
+
const url = new URL("https://min-api.cryptocompare.com/data/price");
|
|
112
|
+
url.searchParams.set("fsym", "BTC");
|
|
113
|
+
url.searchParams.set("tsyms", "USDT");
|
|
114
|
+
url.searchParams.set("api_key", apiKey);
|
|
115
|
+
const data = await fetchJson(url.toString());
|
|
86
116
|
// Response format: {"USDT":86800.42}
|
|
87
117
|
// Treat USDT as USD (1:1 for price oracle purposes)
|
|
88
118
|
const price = Number(data?.USDT);
|
|
89
119
|
if (!Number.isFinite(price) || price <= 0) {
|
|
90
120
|
throw new Error("Invalid CryptoCompare price payload");
|
|
91
121
|
}
|
|
92
|
-
|
|
93
|
-
|
|
122
|
+
// Master's wisdom: Use broadcastAndCollect to ensure consensus across all LIT nodes
|
|
123
|
+
// Each node broadcasts its fetched price, then all receive all prices
|
|
124
|
+
const allPrices = await Lit.Actions.broadcastAndCollect({
|
|
125
|
+
name: "cryptoComparePrice",
|
|
126
|
+
value: price.toString(),
|
|
127
|
+
});
|
|
128
|
+
const prices = allPrices.map((p) => parseFloat(p));
|
|
129
|
+
prices.sort((a, b) => a - b);
|
|
130
|
+
return prices[Math.floor(prices.length / 2)];
|
|
94
131
|
},
|
|
95
|
-
priority
|
|
132
|
+
priority,
|
|
96
133
|
};
|
|
97
134
|
}
|
|
98
|
-
|
|
99
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Create shared fetch helper with timeout
|
|
137
|
+
* LIT runtime rejects custom User-Agent headers
|
|
138
|
+
*/
|
|
139
|
+
createFetchJson() {
|
|
140
|
+
return async (url, headers) => {
|
|
100
141
|
const controller = new AbortController();
|
|
101
|
-
const timeoutMs =
|
|
102
|
-
const
|
|
142
|
+
const timeoutMs = 5000;
|
|
143
|
+
const id = setTimeout(() => controller.abort(), timeoutMs);
|
|
103
144
|
try {
|
|
104
145
|
const res = await fetch(url, {
|
|
146
|
+
headers: { Accept: "application/json", ...(headers || {}) },
|
|
105
147
|
signal: controller.signal,
|
|
106
|
-
headers: {
|
|
107
|
-
"User-Agent": "Mozilla/5.0 (compatible; DiamondHandsValidator/1.0)",
|
|
108
|
-
Accept: "application/json",
|
|
109
|
-
},
|
|
110
148
|
});
|
|
111
|
-
clearTimeout(timeoutId);
|
|
112
149
|
if (!res.ok) {
|
|
113
150
|
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
114
151
|
}
|
|
115
152
|
return await res.json();
|
|
116
153
|
}
|
|
117
|
-
|
|
118
|
-
clearTimeout(
|
|
119
|
-
if (error.name === "AbortError") {
|
|
120
|
-
throw new Error(`Request timeout after ${timeoutMs}ms`);
|
|
121
|
-
}
|
|
122
|
-
throw error;
|
|
154
|
+
finally {
|
|
155
|
+
clearTimeout(id);
|
|
123
156
|
}
|
|
124
157
|
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get default free providers (no API keys required)
|
|
161
|
+
*/
|
|
162
|
+
getDefaultSources() {
|
|
125
163
|
return [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
164
|
+
this.createCoinGeckoSource(undefined, 1),
|
|
165
|
+
this.createBinanceSource(undefined, undefined, 2),
|
|
166
|
+
this.createCoinbaseSource(undefined, 3),
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create CoinGecko price source
|
|
171
|
+
*/
|
|
172
|
+
createCoinGeckoSource(apiKey, priority = 1) {
|
|
173
|
+
const fetchJson = this.createFetchJson();
|
|
174
|
+
return {
|
|
175
|
+
name: "CoinGecko",
|
|
176
|
+
fetchPrice: async () => {
|
|
177
|
+
const url = new URL("https://api.coingecko.com/api/v3/simple/price");
|
|
178
|
+
url.searchParams.set("ids", "bitcoin");
|
|
179
|
+
url.searchParams.set("vs_currencies", "usd");
|
|
180
|
+
const data = await fetchJson(url.toString());
|
|
181
|
+
const price = Number(data?.bitcoin?.usd);
|
|
182
|
+
if (!Number.isFinite(price) || price <= 0) {
|
|
183
|
+
throw new Error("Invalid CoinGecko price payload");
|
|
184
|
+
}
|
|
185
|
+
const allPrices = await Lit.Actions.broadcastAndCollect({
|
|
186
|
+
name: "coinGeckoPrice",
|
|
187
|
+
value: price.toString(),
|
|
188
|
+
});
|
|
189
|
+
const prices = allPrices.map((p) => parseFloat(p));
|
|
190
|
+
prices.sort((a, b) => a - b);
|
|
191
|
+
return prices[Math.floor(prices.length / 2)];
|
|
141
192
|
},
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
193
|
+
priority,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create Binance price source
|
|
198
|
+
*/
|
|
199
|
+
createBinanceSource(apiKey, apiSecret, priority = 2) {
|
|
200
|
+
const fetchJson = this.createFetchJson();
|
|
201
|
+
return {
|
|
202
|
+
name: "Binance",
|
|
203
|
+
fetchPrice: async () => {
|
|
204
|
+
// Each node fetches the price
|
|
205
|
+
const url = new URL("https://api.binance.com/api/v3/ticker/price");
|
|
206
|
+
url.searchParams.set("symbol", "BTCUSDT");
|
|
207
|
+
// Add API key header if provided (increases rate limits)
|
|
208
|
+
const headers = apiKey ? { "X-MBX-APIKEY": apiKey } : undefined;
|
|
209
|
+
const data = await fetchJson(url.toString(), headers);
|
|
210
|
+
const price = Number(data?.price);
|
|
211
|
+
if (!Number.isFinite(price) || price <= 0) {
|
|
212
|
+
throw new Error("Invalid Binance price payload");
|
|
213
|
+
}
|
|
214
|
+
// Master's wisdom: Use broadcastAndCollect to ensure consensus across all LIT nodes
|
|
215
|
+
const allPrices = await Lit.Actions.broadcastAndCollect({
|
|
216
|
+
name: "binancePrice",
|
|
217
|
+
value: price.toString(),
|
|
218
|
+
});
|
|
219
|
+
const prices = allPrices.map((p) => parseFloat(p));
|
|
220
|
+
prices.sort((a, b) => a - b);
|
|
221
|
+
return prices[Math.floor(prices.length / 2)];
|
|
157
222
|
},
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
223
|
+
priority,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Create Coinbase price source
|
|
228
|
+
*/
|
|
229
|
+
createCoinbaseSource(apiKey, priority = 3) {
|
|
230
|
+
const fetchJson = this.createFetchJson();
|
|
231
|
+
return {
|
|
232
|
+
name: "Coinbase",
|
|
233
|
+
fetchPrice: async () => {
|
|
234
|
+
// Add API key header if provided (increases rate limits)
|
|
235
|
+
const headers = apiKey ? { "CB-ACCESS-KEY": apiKey } : undefined;
|
|
236
|
+
const data = await fetchJson("https://api.coinbase.com/v2/prices/BTC-USD/spot", headers);
|
|
237
|
+
const price = Number(data?.data?.amount);
|
|
238
|
+
if (!Number.isFinite(price) || price <= 0) {
|
|
239
|
+
throw new Error("Invalid Coinbase price payload");
|
|
240
|
+
}
|
|
241
|
+
const allPrices = await Lit.Actions.broadcastAndCollect({
|
|
242
|
+
name: "coinbasePrice",
|
|
243
|
+
value: price.toString(),
|
|
244
|
+
});
|
|
245
|
+
const prices = allPrices.map((p) => parseFloat(p));
|
|
246
|
+
prices.sort((a, b) => a - b);
|
|
247
|
+
return prices[Math.floor(prices.length / 2)];
|
|
171
248
|
},
|
|
172
|
-
|
|
249
|
+
priority,
|
|
250
|
+
};
|
|
173
251
|
}
|
|
174
252
|
/**
|
|
175
253
|
* Get BTC price in USD with 8 decimals
|
|
176
|
-
*
|
|
254
|
+
*
|
|
255
|
+
* CRITICAL OPTIMIZATION: Queries all sources in parallel with Promise.race()
|
|
256
|
+
* This prevents timeout when multiple sources fail sequentially.
|
|
257
|
+
*
|
|
258
|
+
* Master's Wisdom: "The fastest path to truth is asking all at once"
|
|
259
|
+
* - All sources queried simultaneously
|
|
260
|
+
* - First successful response wins
|
|
261
|
+
* - No waiting for slow/failed providers
|
|
262
|
+
* - Total time = fastest provider, not sum of all attempts
|
|
177
263
|
*/
|
|
178
264
|
async getBTCPrice() {
|
|
179
|
-
const
|
|
180
|
-
console.log(`[Price Oracle] Fetching BTC price from external sources...`);
|
|
181
|
-
|
|
182
|
-
|
|
265
|
+
const startTime = Date.now();
|
|
266
|
+
console.log(`[Price Oracle] Fetching BTC price from external sources (parallel)...`);
|
|
267
|
+
console.log(`[Price Oracle] Start time: ${startTime}`);
|
|
268
|
+
// CRITICAL FIX: Global timeout wrapper (15s max for entire operation)
|
|
269
|
+
// Prevents hanging if individual source timeouts fail
|
|
270
|
+
const GLOBAL_TIMEOUT_MS = 15000;
|
|
271
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
272
|
+
setTimeout(() => {
|
|
273
|
+
const elapsed = Date.now() - startTime;
|
|
274
|
+
console.error(`[Price Oracle] ❌ GLOBAL TIMEOUT after ${elapsed}ms`);
|
|
275
|
+
reject(new Error(`Price oracle global timeout after ${GLOBAL_TIMEOUT_MS}ms`));
|
|
276
|
+
}, GLOBAL_TIMEOUT_MS);
|
|
277
|
+
});
|
|
278
|
+
// Query all sources in parallel - first success wins
|
|
279
|
+
const pricePromises = this.sources.map(async (source) => {
|
|
280
|
+
const sourceStartTime = Date.now();
|
|
183
281
|
try {
|
|
184
|
-
|
|
185
|
-
console.log(`[Price Oracle] Trying ${source.name}...`);
|
|
282
|
+
console.log(`[Price Oracle] [${sourceStartTime}] Querying ${source.name}...`);
|
|
186
283
|
const priceUSD = await source.fetchPrice();
|
|
187
|
-
const
|
|
188
|
-
console.log(`[Price Oracle] [
|
|
189
|
-
|
|
284
|
+
const elapsed = Date.now() - sourceStartTime;
|
|
285
|
+
console.log(`[Price Oracle] ✅ [+${elapsed}ms] ${source.name}: $${priceUSD.toLocaleString()}`);
|
|
286
|
+
return { source: source.name, priceUSD };
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
const elapsed = Date.now() - sourceStartTime;
|
|
290
|
+
console.warn(`[Price Oracle] ⚠️ [+${elapsed}ms] ${source.name} failed: ${error.message}`);
|
|
291
|
+
throw error; // Re-throw for Promise.race rejection
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
// Wait for first successful result OR global timeout
|
|
295
|
+
try {
|
|
296
|
+
console.log(`[Price Oracle] Waiting for first success (race pattern)...`);
|
|
297
|
+
const firstSuccess = await Promise.race([
|
|
298
|
+
Promise.race(pricePromises.map((p) => p.catch((err) => {
|
|
299
|
+
// Convert rejection to resolved value with error flag
|
|
300
|
+
// This prevents Promise.race from rejecting prematurely
|
|
301
|
+
return { error: err };
|
|
302
|
+
}))),
|
|
303
|
+
timeoutPromise,
|
|
304
|
+
]);
|
|
305
|
+
// If first result is an error, wait for any success (with timeout)
|
|
306
|
+
if ("error" in firstSuccess) {
|
|
307
|
+
console.log(`[Price Oracle] First result was error, waiting for any success...`);
|
|
308
|
+
const fallbackStartTime = Date.now();
|
|
309
|
+
// CRITICAL FIX: Add timeout to allSettled fallback (10s max)
|
|
310
|
+
const fallbackTimeout = new Promise((_, reject) => {
|
|
311
|
+
setTimeout(() => {
|
|
312
|
+
const elapsed = Date.now() - fallbackStartTime;
|
|
313
|
+
console.error(`[Price Oracle] ❌ FALLBACK TIMEOUT after ${elapsed}ms`);
|
|
314
|
+
reject(new Error(`Price oracle fallback timeout after 10000ms`));
|
|
315
|
+
}, 10000);
|
|
316
|
+
});
|
|
317
|
+
const results = await Promise.race([
|
|
318
|
+
Promise.allSettled(pricePromises),
|
|
319
|
+
fallbackTimeout,
|
|
320
|
+
]);
|
|
321
|
+
const fallbackElapsed = Date.now() - fallbackStartTime;
|
|
322
|
+
console.log(`[Price Oracle] Fallback completed in ${fallbackElapsed}ms`);
|
|
323
|
+
const success = results.find((r) => r.status === "fulfilled");
|
|
324
|
+
if (!success) {
|
|
325
|
+
const totalElapsed = Date.now() - startTime;
|
|
326
|
+
console.error(`[Price Oracle] All sources failed after ${totalElapsed}ms`);
|
|
327
|
+
throw new Error("All price sources failed");
|
|
328
|
+
}
|
|
329
|
+
const { source, priceUSD } = success.value;
|
|
330
|
+
const totalElapsed = Date.now() - startTime;
|
|
331
|
+
console.log(`[Price Oracle] Using ${source} (first successful after failures) - total time: ${totalElapsed}ms`);
|
|
190
332
|
// Convert to 8 decimals as bigint - DETERMINISTIC METHOD
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
//
|
|
194
|
-
// Instead of: BigInt(Math.floor(priceUSD * 100_000_000))
|
|
195
|
-
// Which could give different results on different nodes due to FP precision
|
|
196
|
-
//
|
|
197
|
-
// Solution: Convert to integer cents first, then scale using BigInt-only math
|
|
198
|
-
// Example: $105,447.25 → 10544725 cents → 10544725000000n (8 decimals)
|
|
199
|
-
const priceCents = Math.round(priceUSD * 100); // Convert to cents (integer)
|
|
200
|
-
const priceWith8Decimals = BigInt(priceCents) * 1000000n; // Scale to 8 decimals using BigInt
|
|
333
|
+
const priceCents = Math.round(priceUSD * 100);
|
|
334
|
+
const priceWith8Decimals = BigInt(priceCents) * 1000000n;
|
|
201
335
|
console.log(`[Price Oracle] Price with 8 decimals: ${priceWith8Decimals}`);
|
|
202
|
-
const totalDuration = Date.now() - priceOracleStartTime;
|
|
203
|
-
console.log(`[Price Oracle] [Timing] Total price oracle execution: ${totalDuration}ms`);
|
|
204
336
|
return priceWith8Decimals;
|
|
205
337
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
338
|
+
// First result succeeded
|
|
339
|
+
const { source, priceUSD } = firstSuccess;
|
|
340
|
+
const totalElapsed = Date.now() - startTime;
|
|
341
|
+
console.log(`[Price Oracle] Using ${source} (fastest response) - total time: ${totalElapsed}ms`);
|
|
342
|
+
// Convert to 8 decimals as bigint - DETERMINISTIC METHOD
|
|
343
|
+
// CRITICAL: Avoid floating-point multiplication which is non-deterministic
|
|
344
|
+
// across different JavaScript engines/architectures
|
|
345
|
+
//
|
|
346
|
+
// Instead of: BigInt(Math.floor(priceUSD * 100_000_000))
|
|
347
|
+
// Which could give different results on different nodes due to FP precision
|
|
348
|
+
//
|
|
349
|
+
// Solution: Convert to integer cents first, then scale using BigInt-only math
|
|
350
|
+
// Example: $105,447.25 → 10544725 cents → 10544725000000n (8 decimals)
|
|
351
|
+
const priceCents = Math.round(priceUSD * 100); // Convert to cents (integer)
|
|
352
|
+
const priceWith8Decimals = BigInt(priceCents) * 1000000n; // Scale to 8 decimals using BigInt
|
|
353
|
+
console.log(`[Price Oracle] Price with 8 decimals: ${priceWith8Decimals}`);
|
|
354
|
+
return priceWith8Decimals;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
const totalElapsed = Date.now() - startTime;
|
|
358
|
+
console.error(`[Price Oracle] Failed after ${totalElapsed}ms: ${error.message}`);
|
|
359
|
+
throw new Error(`All price sources failed: ${error.message}`);
|
|
210
360
|
}
|
|
211
|
-
throw new Error("All price sources failed");
|
|
212
361
|
}
|
|
213
362
|
/**
|
|
214
363
|
* Consensus across multiple sources with outlier detection
|
|
@@ -227,16 +376,12 @@ class PriceOracleModule {
|
|
|
227
376
|
* 6. Return final median or throw appropriate error
|
|
228
377
|
*/
|
|
229
378
|
async getBTCPriceConsensus() {
|
|
230
|
-
const consensusStartTime = Date.now();
|
|
231
379
|
console.log(`[Price Oracle] Fetching BTC price with consensus...`);
|
|
232
380
|
// Use configured tolerances
|
|
233
381
|
const OUTLIER_DEVIATION = constants_1.PRICE_ORACLE_OUTLIER_DEVIATION_THRESHOLD; // 2%
|
|
234
382
|
const DISPERSION_THRESHOLD = constants_1.PRICE_ORACLE_DISPERSION_THRESHOLD; // 5%
|
|
235
383
|
const results = await Promise.allSettled(this.sources.map(async (source) => {
|
|
236
|
-
const sourceStartTime = Date.now();
|
|
237
384
|
const price = await source.fetchPrice();
|
|
238
|
-
const sourceDuration = Date.now() - sourceStartTime;
|
|
239
|
-
console.log(`[Price Oracle] [Timing] ${source.name} fetch: ${sourceDuration}ms`);
|
|
240
385
|
return { source: source.name, price };
|
|
241
386
|
}));
|
|
242
387
|
const successful = results
|
|
@@ -296,8 +441,6 @@ class PriceOracleModule {
|
|
|
296
441
|
console.log(`[Price Oracle] ✅ Consensus price (median): $${initialMedian.toLocaleString()}`);
|
|
297
442
|
// Convert to 8 decimals as bigint - DETERMINISTIC METHOD
|
|
298
443
|
const priceCents = Math.round(initialMedian * 100);
|
|
299
|
-
const totalDuration = Date.now() - consensusStartTime;
|
|
300
|
-
console.log(`[Price Oracle] [Timing] Total consensus execution: ${totalDuration}ms`);
|
|
301
444
|
return BigInt(priceCents) * 1000000n;
|
|
302
445
|
}
|
|
303
446
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-oracle.module.js","sourceRoot":"","sources":["../../../src/modules/price-oracle.module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"price-oracle.module.js","sourceRoot":"","sources":["../../../src/modules/price-oracle.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,16 @@ export declare class ProtocolParametersModule {
|
|
|
50
50
|
* @returns Term fees (origination and extension) in basis points
|
|
51
51
|
*/
|
|
52
52
|
getTermFees(termMonths: number): Promise<TermFees>;
|
|
53
|
+
/**
|
|
54
|
+
* Get authorized spends hash from contract
|
|
55
|
+
*
|
|
56
|
+
* Fetches the cryptographic hash of authorized Bitcoin spends for a position.
|
|
57
|
+
* This hash is used in authorization messages to prevent race conditions.
|
|
58
|
+
*
|
|
59
|
+
* @param positionId - Position identifier (bytes32)
|
|
60
|
+
* @returns Authorized spends hash (bytes32)
|
|
61
|
+
*/
|
|
62
|
+
getAuthorizedSpendsHash(positionId: string): Promise<string>;
|
|
53
63
|
}
|
|
54
64
|
/**
|
|
55
65
|
* Factory function to create protocol parameters module
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-parameters.module.d.ts","sourceRoot":"","sources":["../../../src/modules/protocol-parameters.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,wBAAwB;IAQ5C;;;;OAIG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol-parameters.module.d.ts","sourceRoot":"","sources":["../../../src/modules/protocol-parameters.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,wBAAwB;IAQ5C;;;;OAIG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IA4ChD;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0DxD;;;;;;;;OAQG;IACG,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6CnE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,wBAAwB,GAC/B,wBAAwB,CAE1B"}
|
|
@@ -43,7 +43,10 @@ class ProtocolParametersModule {
|
|
|
43
43
|
}
|
|
44
44
|
// @ts-ignore - ethers available in LIT runtime
|
|
45
45
|
// StaticJsonRpcProvider with explicit network bypasses auto-detection (required for ngrok URLs)
|
|
46
|
-
const provider = new ethers.providers.StaticJsonRpcProvider(rpcUrl, {
|
|
46
|
+
const provider = new ethers.providers.StaticJsonRpcProvider(rpcUrl, {
|
|
47
|
+
name: "any",
|
|
48
|
+
chainId: this.chainId,
|
|
49
|
+
});
|
|
47
50
|
const abi = [
|
|
48
51
|
{
|
|
49
52
|
inputs: [],
|
|
@@ -82,7 +85,10 @@ class ProtocolParametersModule {
|
|
|
82
85
|
}
|
|
83
86
|
// @ts-ignore - ethers available in LIT runtime
|
|
84
87
|
// StaticJsonRpcProvider with explicit network bypasses auto-detection (required for ngrok URLs)
|
|
85
|
-
const provider = new ethers.providers.StaticJsonRpcProvider(rpcUrl, {
|
|
88
|
+
const provider = new ethers.providers.StaticJsonRpcProvider(rpcUrl, {
|
|
89
|
+
name: "any",
|
|
90
|
+
chainId: this.chainId,
|
|
91
|
+
});
|
|
86
92
|
const abi = [
|
|
87
93
|
{
|
|
88
94
|
inputs: [
|
|
@@ -114,6 +120,47 @@ class ProtocolParametersModule {
|
|
|
114
120
|
throw new Error(`Failed to fetch term fees: ${error.message}`);
|
|
115
121
|
}
|
|
116
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Get authorized spends hash from contract
|
|
125
|
+
*
|
|
126
|
+
* Fetches the cryptographic hash of authorized Bitcoin spends for a position.
|
|
127
|
+
* This hash is used in authorization messages to prevent race conditions.
|
|
128
|
+
*
|
|
129
|
+
* @param positionId - Position identifier (bytes32)
|
|
130
|
+
* @returns Authorized spends hash (bytes32)
|
|
131
|
+
*/
|
|
132
|
+
async getAuthorizedSpendsHash(positionId) {
|
|
133
|
+
try {
|
|
134
|
+
// @ts-ignore - Lit.Actions available in LIT runtime
|
|
135
|
+
const rpcUrl = this.rpcUrl || (await Lit.Actions.getRpcUrl({ chain: this.chain }));
|
|
136
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
137
|
+
const provider = new ethers.providers.StaticJsonRpcProvider(rpcUrl, {
|
|
138
|
+
name: "any",
|
|
139
|
+
chainId: this.chainId,
|
|
140
|
+
});
|
|
141
|
+
// Convert positionId to bytes32
|
|
142
|
+
const positionIdBytes32 = positionId.startsWith("0x")
|
|
143
|
+
? positionId
|
|
144
|
+
: `0x${positionId.padStart(64, "0")}`;
|
|
145
|
+
// Call getAuthorizedSpendsHash(bytes32 positionId) on LoanOperationsManager
|
|
146
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
147
|
+
const contract = new ethers.Contract(this.loanOpsManagerAddress, [
|
|
148
|
+
{
|
|
149
|
+
inputs: [{ name: "positionId", type: "bytes32" }],
|
|
150
|
+
name: "getAuthorizedSpendsHash",
|
|
151
|
+
outputs: [{ name: "", type: "bytes32" }],
|
|
152
|
+
stateMutability: "view",
|
|
153
|
+
type: "function",
|
|
154
|
+
},
|
|
155
|
+
], provider);
|
|
156
|
+
const hash = await contract.getAuthorizedSpendsHash(positionIdBytes32);
|
|
157
|
+
return hash;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error("[ProtocolParameters] Error fetching authorized spends hash:", error.message);
|
|
161
|
+
throw new Error(`Failed to fetch authorized spends hash: ${error.message}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
117
164
|
}
|
|
118
165
|
exports.ProtocolParametersModule = ProtocolParametersModule;
|
|
119
166
|
/**
|