@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-parameters.module.js","sourceRoot":"","sources":["../../../src/modules/protocol-parameters.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;
|
|
1
|
+
{"version":3,"file":"protocol-parameters.module.js","sourceRoot":"","sources":["../../../src/modules/protocol-parameters.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export declare function getCurrentQuantumTimestamp(): number;
|
|
|
48
48
|
/**
|
|
49
49
|
* Check if currently in dead zone (last 8s before boundary + first 8s after boundary)
|
|
50
50
|
*
|
|
51
|
-
* Dead zone = seconds
|
|
51
|
+
* Dead zone = seconds 92-99 OR 0-7 of each quantum
|
|
52
52
|
*
|
|
53
53
|
* @param now - Current Unix timestamp (defaults to Date.now()/1000)
|
|
54
54
|
* @returns True if in dead zone
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantum-time.module.d.ts","sourceRoot":"","sources":["../../../src/modules/quantum-time.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"quantum-time.module.d.ts","sourceRoot":"","sources":["../../../src/modules/quantum-time.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAmBH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAGnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjE;AACD;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,oBAAoB,EAAE,MAAM,EAC5B,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAWN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAgBT;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAcA;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAMD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBtD"}
|
|
@@ -38,6 +38,18 @@ exports.getQuantumInfo = getQuantumInfo;
|
|
|
38
38
|
exports.getSafeQuantumInfo = getSafeQuantumInfo;
|
|
39
39
|
exports.formatQuantumInfo = formatQuantumInfo;
|
|
40
40
|
const constants_1 = require("../constants");
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// SECURITY ASSERTION: Quantum Constants Must Not Change
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// CRITICAL: These values are protocol-level consensus parameters.
|
|
45
|
+
// Changing them requires full security review and protocol upgrade.
|
|
46
|
+
// This assertion ensures code fails loudly if constants are modified.
|
|
47
|
+
if (constants_1.QUANTUM_WINDOW_SECONDS !== 100 || constants_1.DEAD_ZONE_SECONDS !== 16) {
|
|
48
|
+
throw new Error(`CRITICAL SECURITY VIOLATION: Quantum constants changed. ` +
|
|
49
|
+
`Expected QUANTUM_WINDOW=100s, DEAD_ZONE=16s. ` +
|
|
50
|
+
`Got QUANTUM_WINDOW=${constants_1.QUANTUM_WINDOW_SECONDS}s, DEAD_ZONE=${constants_1.DEAD_ZONE_SECONDS}s. ` +
|
|
51
|
+
`Changing quantum constants requires full security review and protocol upgrade.`);
|
|
52
|
+
}
|
|
41
53
|
/**
|
|
42
54
|
* Calculate quantum window start for given timestamp
|
|
43
55
|
*
|
|
@@ -70,7 +82,7 @@ function getCurrentQuantumTimestamp() {
|
|
|
70
82
|
/**
|
|
71
83
|
* Check if currently in dead zone (last 8s before boundary + first 8s after boundary)
|
|
72
84
|
*
|
|
73
|
-
* Dead zone = seconds
|
|
85
|
+
* Dead zone = seconds 92-99 OR 0-7 of each quantum
|
|
74
86
|
*
|
|
75
87
|
* @param now - Current Unix timestamp (defaults to Date.now()/1000)
|
|
76
88
|
* @returns True if in dead zone
|
|
@@ -79,8 +91,7 @@ function isInDeadZone(now) {
|
|
|
79
91
|
const currentTime = now ?? Math.floor(Date.now() / 1000);
|
|
80
92
|
const timeInQuantum = currentTime % constants_1.QUANTUM_WINDOW_SECONDS;
|
|
81
93
|
// Last 8 seconds OR first 8 seconds
|
|
82
|
-
|
|
83
|
-
return timeInQuantum >= deadZoneStart || timeInQuantum < constants_1.DEAD_ZONE_SECONDS / 2;
|
|
94
|
+
return timeInQuantum >= 92 || timeInQuantum < 8;
|
|
84
95
|
}
|
|
85
96
|
/**
|
|
86
97
|
* Get seconds remaining in current quantum
|
|
@@ -113,17 +124,15 @@ async function waitForSafeQuantumMoment() {
|
|
|
113
124
|
}
|
|
114
125
|
// Calculate wait time to reach second 8 of next quantum
|
|
115
126
|
let waitSeconds;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (timeInQuantum >= deadZoneStart) {
|
|
119
|
-
// In dead zone before boundary (e.g., seconds 292-299 for 300s window)
|
|
127
|
+
if (timeInQuantum >= 92) {
|
|
128
|
+
// In dead zone before boundary (seconds 92-99)
|
|
120
129
|
// Wait to second 8 of next quantum
|
|
121
|
-
waitSeconds =
|
|
130
|
+
waitSeconds = 100 - timeInQuantum + 8;
|
|
122
131
|
}
|
|
123
132
|
else {
|
|
124
133
|
// In dead zone after boundary (seconds 0-7)
|
|
125
134
|
// Wait until second 8
|
|
126
|
-
waitSeconds =
|
|
135
|
+
waitSeconds = 8 - timeInQuantum;
|
|
127
136
|
}
|
|
128
137
|
console.log(`[Quantum] Waiting ${waitSeconds}s for safe moment (current time in quantum: ${timeInQuantum}s)`);
|
|
129
138
|
await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantum-time.module.js","sourceRoot":"","sources":["../../../src/modules/quantum-time.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;
|
|
1
|
+
{"version":3,"file":"quantum-time.module.js","sourceRoot":"","sources":["../../../src/modules/quantum-time.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,9 +59,24 @@ export declare class VaultBalanceModule implements IVaultBalance {
|
|
|
59
59
|
private bitcoinProvider;
|
|
60
60
|
constructor(config: VaultBalanceConfig);
|
|
61
61
|
/**
|
|
62
|
-
* Calculate
|
|
62
|
+
* Calculate balance (fast path - no UTXO validation)
|
|
63
63
|
*
|
|
64
|
-
*
|
|
64
|
+
* Fast balance-only calculation that skips UTXO validation.
|
|
65
|
+
* Uses simple arithmetic: Total Balance - Authorized Balance = Available Balance
|
|
66
|
+
*
|
|
67
|
+
* Use this when you only need the balance amount and don't need:
|
|
68
|
+
* - Individual UTXO details
|
|
69
|
+
* - Validation that authorized UTXOs were actually spent
|
|
70
|
+
*
|
|
71
|
+
* @param positionId - The position ID to check
|
|
72
|
+
* @param vaultAddress - Bitcoin address of the vault
|
|
73
|
+
* @returns Complete breakdown of vault balance (with empty UTXO arrays)
|
|
74
|
+
*/
|
|
75
|
+
calculateBalance(positionId: string, vaultAddress: string): Promise<VaultBalanceResult>;
|
|
76
|
+
/**
|
|
77
|
+
* Calculate trusted balance for a position (full validation)
|
|
78
|
+
*
|
|
79
|
+
* This is the main entry point for determining available balance with full validation.
|
|
65
80
|
*
|
|
66
81
|
* CRITICAL: Validates that all authorized spends have been properly broadcasted
|
|
67
82
|
* to Bitcoin network with sufficient confirmations. Throws errors if:
|
|
@@ -113,7 +128,6 @@ export declare class VaultBalanceModule implements IVaultBalance {
|
|
|
113
128
|
* @returns True if UTXO is authorized, false otherwise
|
|
114
129
|
*/
|
|
115
130
|
private isUTXOAuthorized;
|
|
116
|
-
private computeAuthorizedSpendsHash;
|
|
117
131
|
/**
|
|
118
132
|
* Query smart contract for authorized spends
|
|
119
133
|
*
|
|
@@ -130,6 +144,26 @@ export declare class VaultBalanceModule implements IVaultBalance {
|
|
|
130
144
|
* @returns Array of authorized spends for this position
|
|
131
145
|
*/
|
|
132
146
|
protected getAuthorizedSpendsFromContract(positionId: string): Promise<AuthorizedSpend[]>;
|
|
147
|
+
/**
|
|
148
|
+
* Compute authorized spends hash matching contract implementation
|
|
149
|
+
*
|
|
150
|
+
* CRITICAL: Must match LoanOperationsManager.getAuthorizedSpendsHash()
|
|
151
|
+
*
|
|
152
|
+
* Algorithm:
|
|
153
|
+
* 1. For each AuthorizedSpend, hash all 6 fields:
|
|
154
|
+
* - keccak256(txid string)
|
|
155
|
+
* - vout (uint32)
|
|
156
|
+
* - satoshis (uint256)
|
|
157
|
+
* - keccak256(targetAddress string)
|
|
158
|
+
* - targetAmount (uint256)
|
|
159
|
+
* - authorizedAt (uint256 timestamp)
|
|
160
|
+
* 2. Hash the array: keccak256(abi.encode(positionId, array of hashed spends))
|
|
161
|
+
*
|
|
162
|
+
* @param positionId - Position identifier
|
|
163
|
+
* @param authorizedSpends - Array of authorized spends
|
|
164
|
+
* @returns bytes32 hash matching contract
|
|
165
|
+
*/
|
|
166
|
+
private computeAuthorizedSpendsHash;
|
|
133
167
|
}
|
|
134
168
|
/**
|
|
135
169
|
* Factory function to create VaultBalanceModule instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-balance.module.d.ts","sourceRoot":"","sources":["../../../src/modules/vault-balance.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,eAAe,EACf,IAAI,EAEJ,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"vault-balance.module.d.ts","sourceRoot":"","sources":["../../../src/modules/vault-balance.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,eAAe,EACf,IAAI,EAEJ,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAuB;gBAElC,MAAM,EAAE,kBAAkB;IAKtC;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC;IA+C9B;;;;;;;;;;;;;;;OAeG;IACG,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IA4F9B;;;;;;;;OAQG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;OAQG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,EAAE,CAAC;IAKlB;;;;;;;;OAQG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;;;;;;;;;;;OAcG;cACa,+BAA+B,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,EAAE,CAAC;IA2F7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,2BAA2B;CA6DpC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GACzB,kBAAkB,CAEpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}
|
|
@@ -62,9 +62,53 @@ class VaultBalanceModule {
|
|
|
62
62
|
this.bitcoinProvider = config.bitcoinProvider;
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
|
-
* Calculate
|
|
65
|
+
* Calculate balance (fast path - no UTXO validation)
|
|
66
66
|
*
|
|
67
|
-
*
|
|
67
|
+
* Fast balance-only calculation that skips UTXO validation.
|
|
68
|
+
* Uses simple arithmetic: Total Balance - Authorized Balance = Available Balance
|
|
69
|
+
*
|
|
70
|
+
* Use this when you only need the balance amount and don't need:
|
|
71
|
+
* - Individual UTXO details
|
|
72
|
+
* - Validation that authorized UTXOs were actually spent
|
|
73
|
+
*
|
|
74
|
+
* @param positionId - The position ID to check
|
|
75
|
+
* @param vaultAddress - Bitcoin address of the vault
|
|
76
|
+
* @returns Complete breakdown of vault balance (with empty UTXO arrays)
|
|
77
|
+
*/
|
|
78
|
+
async calculateBalance(positionId, vaultAddress) {
|
|
79
|
+
// 1. Get balance from Bitcoin network (fast, no UTXO details)
|
|
80
|
+
const totalBalance = await this.bitcoinProvider.getBalance(vaultAddress);
|
|
81
|
+
// 2. Get authorized spends from smart contract
|
|
82
|
+
const authorizedSpends = await this.getAuthorizedSpendsFromContract(positionId);
|
|
83
|
+
// 3. Calculate authorized balance (sum of all authorized spends)
|
|
84
|
+
const authorizedBalance = authorizedSpends.reduce((sum, spend) => sum + spend.satoshis, 0n);
|
|
85
|
+
// 4. Calculate available balance = Total - Authorized
|
|
86
|
+
const availableBalance = totalBalance > authorizedBalance ? totalBalance - authorizedBalance : 0n;
|
|
87
|
+
// 5. Compute authorized spends hash (race prevention)
|
|
88
|
+
// Hash each spend's full details, then hash the array
|
|
89
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
90
|
+
const authorizedSpendsHash = this.computeAuthorizedSpendsHash(positionId, authorizedSpends);
|
|
91
|
+
return {
|
|
92
|
+
// Total from Bitcoin
|
|
93
|
+
totalUTXOs: [], // Empty for fast path
|
|
94
|
+
totalBalance,
|
|
95
|
+
// Authorized from Contract
|
|
96
|
+
authorizedUTXOs: authorizedSpends,
|
|
97
|
+
authorizedBalance,
|
|
98
|
+
authorizedSpendsHash,
|
|
99
|
+
// Available = Total - Authorized (THIS IS THE TRUSTED BALANCE)
|
|
100
|
+
availableUTXOs: [], // Empty for fast path
|
|
101
|
+
availableBalance,
|
|
102
|
+
// Metadata
|
|
103
|
+
vaultAddress,
|
|
104
|
+
positionId,
|
|
105
|
+
timestamp: Date.now(),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Calculate trusted balance for a position (full validation)
|
|
110
|
+
*
|
|
111
|
+
* This is the main entry point for determining available balance with full validation.
|
|
68
112
|
*
|
|
69
113
|
* CRITICAL: Validates that all authorized spends have been properly broadcasted
|
|
70
114
|
* to Bitcoin network with sufficient confirmations. Throws errors if:
|
|
@@ -78,37 +122,12 @@ class VaultBalanceModule {
|
|
|
78
122
|
* @throws Error if authorized spends are in invalid state
|
|
79
123
|
*/
|
|
80
124
|
async calculateTrustedBalance(positionId, vaultAddress, skipUTXOValidation) {
|
|
81
|
-
|
|
82
|
-
// Fast path: Use balance endpoint instead of fetching all UTXOs
|
|
125
|
+
// Fast path: skip UTXO validation if requested
|
|
83
126
|
if (skipUTXOValidation) {
|
|
84
|
-
|
|
85
|
-
const totalBalance = await this.bitcoinProvider.getBalance(vaultAddress);
|
|
86
|
-
// 2. Get authorized spends from smart contract
|
|
87
|
-
const authorizedSpends = await this.getAuthorizedSpendsFromContract(positionId);
|
|
88
|
-
// 3. Calculate authorized balance (sum of all authorized spends)
|
|
89
|
-
const authorizedBalance = authorizedSpends.reduce((sum, spend) => sum + spend.satoshis, 0n);
|
|
90
|
-
// 4. Calculate available balance = Total - Authorized
|
|
91
|
-
const availableBalance = totalBalance > authorizedBalance
|
|
92
|
-
? totalBalance - authorizedBalance
|
|
93
|
-
: 0n;
|
|
94
|
-
return {
|
|
95
|
-
// Total from Bitcoin
|
|
96
|
-
totalUTXOs: [], // Empty for fast path
|
|
97
|
-
totalBalance,
|
|
98
|
-
// Authorized from Contract
|
|
99
|
-
authorizedUTXOs: authorizedSpends,
|
|
100
|
-
authorizedBalance,
|
|
101
|
-
authorizedSpendsHash: this.computeAuthorizedSpendsHash(positionId, authorizedSpends),
|
|
102
|
-
// Available = Total - Authorized (THIS IS THE TRUSTED BALANCE)
|
|
103
|
-
availableUTXOs: [], // Empty for fast path
|
|
104
|
-
availableBalance,
|
|
105
|
-
// Metadata
|
|
106
|
-
vaultAddress,
|
|
107
|
-
positionId,
|
|
108
|
-
timestamp: Date.now(),
|
|
109
|
-
};
|
|
127
|
+
return await this.calculateBalance(positionId, vaultAddress);
|
|
110
128
|
}
|
|
111
|
-
// Full path
|
|
129
|
+
// Full validation path (default)
|
|
130
|
+
const minConfirmations = this.config.minConfirmations || 6;
|
|
112
131
|
// 1. Get all UTXOs from Bitcoin network
|
|
113
132
|
const utxoSet = await this.bitcoinProvider.getUTXOSet(vaultAddress, minConfirmations);
|
|
114
133
|
// 2. Get authorized spends from smart contract
|
|
@@ -139,6 +158,10 @@ class VaultBalanceModule {
|
|
|
139
158
|
const availableUTXOs = utxoSet.utxos.filter((utxo) => !this.isUTXOAuthorized(utxo, authorizedSpends));
|
|
140
159
|
// 6. Calculate available balance
|
|
141
160
|
const availableBalance = availableUTXOs.reduce((sum, utxo) => sum + utxo.satoshis, 0n);
|
|
161
|
+
// 7. Compute authorized spends hash (race prevention)
|
|
162
|
+
// Hash each spend's full details, then hash the array
|
|
163
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
164
|
+
const authorizedSpendsHash = this.computeAuthorizedSpendsHash(positionId, authorizedSpends);
|
|
142
165
|
return {
|
|
143
166
|
// Total from Bitcoin
|
|
144
167
|
totalUTXOs: utxoSet.utxos,
|
|
@@ -146,7 +169,7 @@ class VaultBalanceModule {
|
|
|
146
169
|
// Authorized from Contract
|
|
147
170
|
authorizedUTXOs: authorizedSpends,
|
|
148
171
|
authorizedBalance,
|
|
149
|
-
authorizedSpendsHash
|
|
172
|
+
authorizedSpendsHash,
|
|
150
173
|
// Available = Total - Authorized (THIS IS THE TRUSTED BALANCE)
|
|
151
174
|
availableUTXOs,
|
|
152
175
|
availableBalance,
|
|
@@ -205,31 +228,6 @@ class VaultBalanceModule {
|
|
|
205
228
|
isUTXOAuthorized(utxo, authorizedSpends) {
|
|
206
229
|
return authorizedSpends.some((spend) => spend.txid === utxo.txid && spend.vout === utxo.vout);
|
|
207
230
|
}
|
|
208
|
-
computeAuthorizedSpendsHash(positionId, authorizedSpends) {
|
|
209
|
-
const positionIdBytes32 = positionId.startsWith("0x")
|
|
210
|
-
? positionId
|
|
211
|
-
: `0x${positionId.padStart(64, "0")}`;
|
|
212
|
-
const hashedSpends = authorizedSpends.map((spend) => {
|
|
213
|
-
return ethers.utils.keccak256(ethers.utils.defaultAbiCoder.encode([
|
|
214
|
-
"bytes32",
|
|
215
|
-
"uint32",
|
|
216
|
-
"uint256",
|
|
217
|
-
"bytes32",
|
|
218
|
-
"uint256",
|
|
219
|
-
"bytes32",
|
|
220
|
-
"uint256",
|
|
221
|
-
], [
|
|
222
|
-
ethers.utils.keccak256(ethers.utils.toUtf8Bytes(spend.txid || "")),
|
|
223
|
-
spend.vout,
|
|
224
|
-
spend.satoshis.toString(),
|
|
225
|
-
ethers.utils.keccak256(ethers.utils.toUtf8Bytes(spend.targetAddress || "")),
|
|
226
|
-
spend.targetAmount.toString(),
|
|
227
|
-
ethers.utils.keccak256(ethers.utils.toUtf8Bytes(spend.changeAddress || "")),
|
|
228
|
-
spend.timestamp,
|
|
229
|
-
]));
|
|
230
|
-
});
|
|
231
|
-
return ethers.utils.keccak256(ethers.utils.defaultAbiCoder.encode(["bytes32", "bytes32[]"], [positionIdBytes32, hashedSpends]));
|
|
232
|
-
}
|
|
233
231
|
/**
|
|
234
232
|
* Query smart contract for authorized spends
|
|
235
233
|
*
|
|
@@ -275,11 +273,7 @@ class VaultBalanceModule {
|
|
|
275
273
|
name: "targetAmount",
|
|
276
274
|
type: "uint256",
|
|
277
275
|
},
|
|
278
|
-
|
|
279
|
-
internalType: "string",
|
|
280
|
-
name: "changeAddress",
|
|
281
|
-
type: "string",
|
|
282
|
-
},
|
|
276
|
+
// changeAddress removed - contract derives from position.vaultAddress
|
|
283
277
|
{
|
|
284
278
|
internalType: "uint256",
|
|
285
279
|
name: "authorizedAt",
|
|
@@ -324,10 +318,69 @@ class VaultBalanceModule {
|
|
|
324
318
|
positionId: positionId,
|
|
325
319
|
targetAddress: spend.targetAddress,
|
|
326
320
|
targetAmount: BigInt(spend.targetAmount.toString()),
|
|
327
|
-
changeAddress
|
|
321
|
+
// changeAddress removed - contract doesn't return this field
|
|
328
322
|
timestamp: Number(spend.authorizedAt),
|
|
329
323
|
}));
|
|
330
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* Compute authorized spends hash matching contract implementation
|
|
327
|
+
*
|
|
328
|
+
* CRITICAL: Must match LoanOperationsManager.getAuthorizedSpendsHash()
|
|
329
|
+
*
|
|
330
|
+
* Algorithm:
|
|
331
|
+
* 1. For each AuthorizedSpend, hash all 6 fields:
|
|
332
|
+
* - keccak256(txid string)
|
|
333
|
+
* - vout (uint32)
|
|
334
|
+
* - satoshis (uint256)
|
|
335
|
+
* - keccak256(targetAddress string)
|
|
336
|
+
* - targetAmount (uint256)
|
|
337
|
+
* - authorizedAt (uint256 timestamp)
|
|
338
|
+
* 2. Hash the array: keccak256(abi.encode(positionId, array of hashed spends))
|
|
339
|
+
*
|
|
340
|
+
* @param positionId - Position identifier
|
|
341
|
+
* @param authorizedSpends - Array of authorized spends
|
|
342
|
+
* @returns bytes32 hash matching contract
|
|
343
|
+
*/
|
|
344
|
+
computeAuthorizedSpendsHash(positionId, authorizedSpends) {
|
|
345
|
+
const positionIdBytes32 = positionId.startsWith("0x")
|
|
346
|
+
? positionId
|
|
347
|
+
: `0x${positionId.padStart(64, "0")}`;
|
|
348
|
+
// Empty authorized spends case
|
|
349
|
+
if (authorizedSpends.length === 0) {
|
|
350
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
351
|
+
return ethers.utils.keccak256(
|
|
352
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
353
|
+
ethers.utils.defaultAbiCoder.encode(["bytes32", "bytes32[]"], [positionIdBytes32, []]));
|
|
354
|
+
}
|
|
355
|
+
// Hash each authorized spend with all 6 fields
|
|
356
|
+
const hashedSpends = authorizedSpends.map((spend) => {
|
|
357
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
358
|
+
const txidHash = ethers.utils.keccak256(
|
|
359
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
360
|
+
ethers.utils.toUtf8Bytes(spend.txid));
|
|
361
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
362
|
+
const targetHash = ethers.utils.keccak256(
|
|
363
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
364
|
+
ethers.utils.toUtf8Bytes(spend.targetAddress));
|
|
365
|
+
// Hash all 6 fields: txidHash, vout, satoshis, targetHash, targetAmount, authorizedAt
|
|
366
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
367
|
+
return ethers.utils.keccak256(
|
|
368
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
369
|
+
ethers.utils.defaultAbiCoder.encode(["bytes32", "uint32", "uint256", "bytes32", "uint256", "uint256"], [
|
|
370
|
+
txidHash,
|
|
371
|
+
spend.vout,
|
|
372
|
+
spend.satoshis.toString(),
|
|
373
|
+
targetHash,
|
|
374
|
+
spend.targetAmount.toString(),
|
|
375
|
+
spend.timestamp, // authorizedAt
|
|
376
|
+
]));
|
|
377
|
+
});
|
|
378
|
+
// Hash positionId with array of hashed spends
|
|
379
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
380
|
+
return ethers.utils.keccak256(
|
|
381
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
382
|
+
ethers.utils.defaultAbiCoder.encode(["bytes32", "bytes32[]"], [positionIdBytes32, hashedSpends]));
|
|
383
|
+
}
|
|
331
384
|
}
|
|
332
385
|
exports.VaultBalanceModule = VaultBalanceModule;
|
|
333
386
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-balance.module.js","sourceRoot":"","sources":["../../../src/modules/vault-balance.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"vault-balance.module.js","sourceRoot":"","sources":["../../../src/modules/vault-balance.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,16 +31,18 @@ export declare class VaultSnapshotModule {
|
|
|
31
31
|
* about a vault's health in a single call.
|
|
32
32
|
*
|
|
33
33
|
* @param positionId - Position to snapshot
|
|
34
|
-
* @param skipUTXOValidation - If true, use fast balance-only path (skips UTXO validation)
|
|
35
34
|
* @returns Complete VaultSnapshot with all metrics
|
|
36
35
|
*/
|
|
37
|
-
getVaultSnapshot(positionId: string
|
|
36
|
+
getVaultSnapshot(positionId: string): Promise<VaultSnapshot>;
|
|
38
37
|
/**
|
|
39
38
|
* Fast vault snapshot using balance method only (no UTXO validation)
|
|
40
39
|
* This is optimized for speed and should be used when UTXO details are not needed.
|
|
41
40
|
*
|
|
41
|
+
* WARNING: This method skips UTXO validation. Use ONLY for non-critical operations.
|
|
42
|
+
* For authorization/security operations, ALWAYS use getVaultSnapshot().
|
|
43
|
+
*
|
|
42
44
|
* @param positionId - Position to snapshot
|
|
43
|
-
* @returns Complete VaultSnapshot with all metrics (using balance method)
|
|
45
|
+
* @returns Complete VaultSnapshot with all metrics (using fast balance method)
|
|
44
46
|
*/
|
|
45
47
|
getVaultSnapshotFast(positionId: string): Promise<VaultSnapshot>;
|
|
46
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-snapshot.d.ts","sourceRoot":"","sources":["../../../src/modules/vault-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,aAAa,EACb,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AAwB/C;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC
|
|
1
|
+
{"version":3,"file":"vault-snapshot.d.ts","sourceRoot":"","sources":["../../../src/modules/vault-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,aAAa,EACb,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AAwB/C;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC;;;;;;;;OAQG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4GlE;;;;;;;;;OASG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA6GtE;;;;;;;;;OASG;cACa,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9D,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAmIF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;;;;;;OAOG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D;;;;;;;OAOG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7D;;;;;;;OAOG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D;;;;;;;;;OASG;IACG,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC;CAWpB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG"}
|
|
@@ -38,15 +38,14 @@ class VaultSnapshotModule {
|
|
|
38
38
|
* about a vault's health in a single call.
|
|
39
39
|
*
|
|
40
40
|
* @param positionId - Position to snapshot
|
|
41
|
-
* @param skipUTXOValidation - If true, use fast balance-only path (skips UTXO validation)
|
|
42
41
|
* @returns Complete VaultSnapshot with all metrics
|
|
43
42
|
*/
|
|
44
|
-
async getVaultSnapshot(positionId
|
|
43
|
+
async getVaultSnapshot(positionId) {
|
|
45
44
|
// 1. Query contract for position state
|
|
46
45
|
const positionState = await this.queryPositionState(positionId);
|
|
47
46
|
console.log(`[Vault Snapshot] Raw vault address from contract: "${positionState.vaultAddress}"`);
|
|
48
47
|
// 2. Get available balance (Total UTXOs - Authorized Spends)
|
|
49
|
-
const balanceResult = await this.config.vaultBalance.calculateTrustedBalance(positionId, positionState.vaultAddress
|
|
48
|
+
const balanceResult = await this.config.vaultBalance.calculateTrustedBalance(positionId, positionState.vaultAddress);
|
|
50
49
|
// 3. Get BTC price from oracle
|
|
51
50
|
const btcPriceUsd = await this.config.priceOracle.getBTCPrice();
|
|
52
51
|
// 4. Fetch protocol parameters from smart contracts
|
|
@@ -82,7 +81,7 @@ class VaultSnapshotModule {
|
|
|
82
81
|
termStartTimestamp: positionState.termStartTimestamp,
|
|
83
82
|
selectedTerm: positionState.selectedTerm,
|
|
84
83
|
status: positionState.status, // Loan status enum value (0-7)
|
|
85
|
-
expiryAt: positionState.expiryAt,
|
|
84
|
+
expiryAt: positionState.expiryAt, // Loan expiry timestamp
|
|
86
85
|
// Bitcoin state
|
|
87
86
|
totalBTCSats: balanceResult.totalBalance,
|
|
88
87
|
totalUTXOs: balanceResult.totalUTXOs,
|
|
@@ -117,8 +116,11 @@ class VaultSnapshotModule {
|
|
|
117
116
|
* Fast vault snapshot using balance method only (no UTXO validation)
|
|
118
117
|
* This is optimized for speed and should be used when UTXO details are not needed.
|
|
119
118
|
*
|
|
119
|
+
* WARNING: This method skips UTXO validation. Use ONLY for non-critical operations.
|
|
120
|
+
* For authorization/security operations, ALWAYS use getVaultSnapshot().
|
|
121
|
+
*
|
|
120
122
|
* @param positionId - Position to snapshot
|
|
121
|
-
* @returns Complete VaultSnapshot with all metrics (using balance method)
|
|
123
|
+
* @returns Complete VaultSnapshot with all metrics (using fast balance method)
|
|
122
124
|
*/
|
|
123
125
|
async getVaultSnapshotFast(positionId) {
|
|
124
126
|
// 1. Query contract for position state
|
|
@@ -162,7 +164,7 @@ class VaultSnapshotModule {
|
|
|
162
164
|
termStartTimestamp: positionState.termStartTimestamp,
|
|
163
165
|
selectedTerm: positionState.selectedTerm,
|
|
164
166
|
status: positionState.status, // Loan status enum value (0-7)
|
|
165
|
-
expiryAt: positionState.expiryAt,
|
|
167
|
+
expiryAt: positionState.expiryAt, // Loan expiry timestamp
|
|
166
168
|
// Bitcoin state
|
|
167
169
|
totalBTCSats: balanceResult.totalBalance,
|
|
168
170
|
totalUTXOs: balanceResult.totalUTXOs,
|
|
@@ -273,6 +275,7 @@ class VaultSnapshotModule {
|
|
|
273
275
|
type: "function",
|
|
274
276
|
},
|
|
275
277
|
];
|
|
278
|
+
// @ts-ignore - ethers available in LIT runtime
|
|
276
279
|
const coreContract = new ethers.Contract(coreAddress, coreGetPositionDetailsABI, provider);
|
|
277
280
|
const position = await coreContract.getPositionDetails(positionIdBytes32);
|
|
278
281
|
// Validate status is in valid range (0-7)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-snapshot.js","sourceRoot":"","sources":["../../../src/modules/vault-snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vault-snapshot.js","sourceRoot":"","sources":["../../../src/modules/vault-snapshot.ts"],"names":[],"mappings":"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"}
|