@odatano/core 0.3.1
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/LICENSE +201 -0
- package/README.md +212 -0
- package/cds-plugin.js +5 -0
- package/config/preview/cardano-node/alonzo-genesis.json +196 -0
- package/config/preview/cardano-node/byron-genesis.json +117 -0
- package/config/preview/cardano-node/config.json +118 -0
- package/config/preview/cardano-node/conway-genesis.json +297 -0
- package/config/preview/cardano-node/shelley-genesis.json +68 -0
- package/config/preview/cardano-node/topology.json +19 -0
- package/db/schema.cds +1318 -0
- package/package.json +125 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +96 -0
- package/src/index.js.map +1 -0
- package/src/plugin.d.ts.map +1 -0
- package/src/plugin.js +92 -0
- package/src/plugin.js.map +1 -0
- package/srv/blockchain/backends/blockfrost-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/blockfrost-backend.js +398 -0
- package/srv/blockchain/backends/blockfrost-backend.js.map +1 -0
- package/srv/blockchain/backends/cardano-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/cardano-backend.js +12 -0
- package/srv/blockchain/backends/cardano-backend.js.map +1 -0
- package/srv/blockchain/backends/koios-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/koios-backend.js +537 -0
- package/srv/blockchain/backends/koios-backend.js.map +1 -0
- package/srv/blockchain/backends/ogmios-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/ogmios-backend.js +516 -0
- package/srv/blockchain/backends/ogmios-backend.js.map +1 -0
- package/srv/blockchain/cardano-client.d.ts.map +1 -0
- package/srv/blockchain/cardano-client.js +377 -0
- package/srv/blockchain/cardano-client.js.map +1 -0
- package/srv/blockchain/cardano-indexer.d.ts.map +1 -0
- package/srv/blockchain/cardano-indexer.js +542 -0
- package/srv/blockchain/cardano-indexer.js.map +1 -0
- package/srv/blockchain/cardano-tx-builder.d.ts.map +1 -0
- package/srv/blockchain/cardano-tx-builder.js +232 -0
- package/srv/blockchain/cardano-tx-builder.js.map +1 -0
- package/srv/blockchain/circuit-breaker.d.ts.map +1 -0
- package/srv/blockchain/circuit-breaker.js +110 -0
- package/srv/blockchain/circuit-breaker.js.map +1 -0
- package/srv/blockchain/signing/external-signer.d.ts.map +1 -0
- package/srv/blockchain/signing/external-signer.js +302 -0
- package/srv/blockchain/signing/external-signer.js.map +1 -0
- package/srv/blockchain/signing/signature-verifier.d.ts.map +1 -0
- package/srv/blockchain/signing/signature-verifier.js +249 -0
- package/srv/blockchain/signing/signature-verifier.js.map +1 -0
- package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/buildooor-tx.js +636 -0
- package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/cardano-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/cardano-tx.js +3 -0
- package/srv/blockchain/transaction-building/cardano-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/csl-tx.js +766 -0
- package/srv/blockchain/transaction-building/csl-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.js +67 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.js.map +1 -0
- package/srv/cardano-service.cds +179 -0
- package/srv/cardano-service.d.ts.map +1 -0
- package/srv/cardano-service.js +227 -0
- package/srv/cardano-service.js.map +1 -0
- package/srv/cardano-tx-service.cds +298 -0
- package/srv/cardano-tx-service.d.ts.map +1 -0
- package/srv/cardano-tx-service.js +646 -0
- package/srv/cardano-tx-service.js.map +1 -0
- package/srv/cardano-ui.cds +2949 -0
- package/srv/server.d.ts.map +1 -0
- package/srv/server.js +212 -0
- package/srv/server.js.map +1 -0
- package/srv/utils/backend-request-handler.d.ts.map +1 -0
- package/srv/utils/backend-request-handler.js +47 -0
- package/srv/utils/backend-request-handler.js.map +1 -0
- package/srv/utils/const.d.ts.map +1 -0
- package/srv/utils/const.js +86 -0
- package/srv/utils/const.js.map +1 -0
- package/srv/utils/error-codes.d.ts.map +1 -0
- package/srv/utils/error-codes.js +49 -0
- package/srv/utils/error-codes.js.map +1 -0
- package/srv/utils/errors.d.ts.map +1 -0
- package/srv/utils/errors.js +389 -0
- package/srv/utils/errors.js.map +1 -0
- package/srv/utils/mappers.d.ts.map +1 -0
- package/srv/utils/mappers.js +723 -0
- package/srv/utils/mappers.js.map +1 -0
- package/srv/utils/signing-helper.d.ts.map +1 -0
- package/srv/utils/signing-helper.js +128 -0
- package/srv/utils/signing-helper.js.map +1 -0
- package/srv/utils/tx-build-helper.d.ts.map +1 -0
- package/srv/utils/tx-build-helper.js +135 -0
- package/srv/utils/tx-build-helper.js.map +1 -0
- package/srv/utils/types.d.ts.map +1 -0
- package/srv/utils/types.js +36 -0
- package/srv/utils/types.js.map +1 -0
- package/srv/utils/validators.d.ts.map +1 -0
- package/srv/utils/validators.js +382 -0
- package/srv/utils/validators.js.map +1 -0
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CardanoIndexer = void 0;
|
|
7
|
+
const cds_1 = __importDefault(require("@sap/cds"));
|
|
8
|
+
const CardanoODataService_1 = require("#cds-models/CardanoODataService");
|
|
9
|
+
const CardanoTransactionService_1 = require("#cds-models/CardanoTransactionService");
|
|
10
|
+
const mappers_1 = require("../utils/mappers");
|
|
11
|
+
const { UPSERT, INSERT, UPDATE, SELECT } = cds_1.default.ql;
|
|
12
|
+
const logger = cds_1.default.log('CardanoIndexer');
|
|
13
|
+
/**
|
|
14
|
+
* CardanoIndexer - Indexer for Cardano blockchain data into OData entities
|
|
15
|
+
*
|
|
16
|
+
* Provides methods to index & manage db consistency for various Cardano blockchain data (transactions, addresses, blocks, epochs, accounts, pools, dreps)
|
|
17
|
+
* 1. Fetches data from the configured Cardano data provider via the CardanoClient
|
|
18
|
+
* 2. Maps the provider data into corresponding OData entity rows
|
|
19
|
+
* 3. Upserts the data rows into the database via CAP transactions
|
|
20
|
+
* 4. Ensures referential integrity and consistency across related entities (e.g., addresses in transactions, UTxOs in addresses)
|
|
21
|
+
* 5. Returns the indexed entity data for further processing
|
|
22
|
+
*
|
|
23
|
+
* Each method corresponds to a specific Cardano Entity type and handles the necessary mapping and persistence
|
|
24
|
+
* into the corresponding OData entities defined in the CardanoODataService(M1) and CardanoTransactionService(M2) models.
|
|
25
|
+
*/
|
|
26
|
+
class CardanoIndexer {
|
|
27
|
+
client;
|
|
28
|
+
txBuilder;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new CardanoIndexer instance
|
|
31
|
+
* @param client - The CardanoClient instance for blockchain queries
|
|
32
|
+
* @param txBuilder - The CardanoTransactionBuilder instance for transaction building
|
|
33
|
+
*/
|
|
34
|
+
constructor(client, txBuilder) {
|
|
35
|
+
this.client = client;
|
|
36
|
+
this.txBuilder = txBuilder;
|
|
37
|
+
logger.info('CardanoIndexer instance created');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Index & return a single transaction with inputs/outputs/assets/UTxOs/addresses
|
|
41
|
+
* All UPSERTs execute within the same CAP transaction (cds.tx), which ensures
|
|
42
|
+
* atomicity: either all entities are persisted or none are (automatic rollback on error).
|
|
43
|
+
* @param tx CAP transaction (cds.tx(req))
|
|
44
|
+
* @param txHash Cardano transaction hash (hex)
|
|
45
|
+
* @returns {Promise<CardanoTransaction>} transaction entity data
|
|
46
|
+
*/
|
|
47
|
+
async indexTransaction(tx, txHash) {
|
|
48
|
+
// getting data from cardano data provider
|
|
49
|
+
const providerTx = await this.client.getTransaction(txHash);
|
|
50
|
+
const txRow = (0, mappers_1.mapTransaction)(providerTx);
|
|
51
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Transactions).entries(txRow));
|
|
52
|
+
logger.debug(`indexTransaction: upserted transaction ${txHash}`);
|
|
53
|
+
if (providerTx.inputs) {
|
|
54
|
+
// Inputs + InputAssets
|
|
55
|
+
const inputRows = (0, mappers_1.mapTransactionInputs)(txHash, providerTx.inputs);
|
|
56
|
+
const inputAssetRows = (0, mappers_1.mapTransactionInputAssets)(txHash, providerTx.inputs);
|
|
57
|
+
if (inputRows.length) {
|
|
58
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionInputs).entries(inputRows));
|
|
59
|
+
logger.debug(`indexTransaction: upserted ${inputRows.length} transaction inputs for ${txHash}`);
|
|
60
|
+
}
|
|
61
|
+
if (inputAssetRows.length) {
|
|
62
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionInputAssets).entries(inputAssetRows));
|
|
63
|
+
logger.debug(`indexTransaction: upserted ${inputAssetRows.length} transaction input assets for ${txHash}`);
|
|
64
|
+
}
|
|
65
|
+
// Outputs + OutputAssets
|
|
66
|
+
const outputRows = (0, mappers_1.mapTransactionOutputs)(txHash, providerTx.outputs);
|
|
67
|
+
const outputAssetRows = (0, mappers_1.mapTransactionOutputAssets)(txHash, providerTx.outputs);
|
|
68
|
+
if (outputRows.length) {
|
|
69
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionOutputs).entries(outputRows));
|
|
70
|
+
}
|
|
71
|
+
if (outputAssetRows.length) {
|
|
72
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionOutputAssets).entries(outputAssetRows));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const metadataRows = (0, mappers_1.mapTransactionMetadata)(providerTx.metadata || []);
|
|
76
|
+
if (metadataRows.length) {
|
|
77
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionMetadata).entries(metadataRows));
|
|
78
|
+
}
|
|
79
|
+
return txRow;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Index & return address data with assets and UTxOs (without transactions)
|
|
83
|
+
* Transactions are loaded separately via indexAddressTransactions() for better performance
|
|
84
|
+
* @param tx CAP transaction
|
|
85
|
+
* @param addr bech32 address
|
|
86
|
+
* @return {Promise<Address>} address entity data
|
|
87
|
+
*/
|
|
88
|
+
async indexAddress(tx, addr) {
|
|
89
|
+
const addrData = await this.client.getAddress(addr);
|
|
90
|
+
logger.debug(`indexAddress: provider response for address ${addr}`);
|
|
91
|
+
logger.debug({ addrData }, 'indexAddress: provider response');
|
|
92
|
+
const AddrEntity = (0, mappers_1.mapAddress)(addr, addrData, this.client.max_age_ms);
|
|
93
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Addresses).entries(AddrEntity));
|
|
94
|
+
// Also insert child entities for new address
|
|
95
|
+
const assetEntities = (0, mappers_1.mapAddressAssets)(addr, AddrEntity.validFrom ?? new Date().toISOString(), AddrEntity.validTo ?? new Date().toISOString(), addrData.amount);
|
|
96
|
+
logger.debug({ assetEntities }, 'indexAddress: asset entities');
|
|
97
|
+
if (assetEntities.length > 0) {
|
|
98
|
+
await tx.run(UPSERT.into(CardanoODataService_1.AddressAssets).entries(assetEntities));
|
|
99
|
+
}
|
|
100
|
+
// UTxOs are included in getAddress response
|
|
101
|
+
const utxoEntities = (0, mappers_1.mapAddressUtxos)(addr, AddrEntity.validFrom ?? new Date().toISOString(), AddrEntity.validTo ?? new Date().toISOString(), addrData.utxos);
|
|
102
|
+
logger.debug({ utxoEntities }, 'indexAddress: utxo entities');
|
|
103
|
+
if (utxoEntities.length) {
|
|
104
|
+
await tx.run(UPSERT.into(CardanoODataService_1.AddressUTxOs).entries(utxoEntities));
|
|
105
|
+
}
|
|
106
|
+
const utxoAssetEntities = (0, mappers_1.mapAddressUtxoAssets)(addrData.utxos, AddrEntity.validFrom ?? new Date().toISOString(), AddrEntity.validTo ?? new Date().toISOString());
|
|
107
|
+
logger.debug({ utxoAssetEntities }, 'indexAddress: utxo asset entities');
|
|
108
|
+
if (utxoAssetEntities.length) {
|
|
109
|
+
// Remove possible duplicates before upsert
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
const uniqueAssets = utxoAssetEntities.filter(asset => {
|
|
112
|
+
const key = `${asset.utxo_address_address}|${asset.utxo_hash}|${asset.utxo_index}|${asset.unit}`;
|
|
113
|
+
if (seen.has(key))
|
|
114
|
+
return false;
|
|
115
|
+
seen.add(key);
|
|
116
|
+
return true;
|
|
117
|
+
});
|
|
118
|
+
logger.debug(`indexAddress: ${utxoAssetEntities.length} assets, ${uniqueAssets.length} unique (removed ${utxoAssetEntities.length - uniqueAssets.length} duplicates)`);
|
|
119
|
+
await tx.run(UPSERT.into(CardanoODataService_1.UTxOAssets).entries(uniqueAssets));
|
|
120
|
+
try {
|
|
121
|
+
await this.indexAddressTransactions(tx, addr, 10);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
logger.error(`indexAddressTransactions failed for address ${addr}: ${err.message}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return AddrEntity;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Index & return address transactions (separate from indexAddress for lazy loading)
|
|
131
|
+
* @param tx CAP transaction
|
|
132
|
+
* @param addr bech32 address
|
|
133
|
+
* @param limit maximum number of transactions to fetch
|
|
134
|
+
* @return {Promise<AddressTransactions[]>} address transaction entities
|
|
135
|
+
*/
|
|
136
|
+
async indexAddressTransactions(tx, addr, limit) {
|
|
137
|
+
logger.debug(`indexAddressTransactions: fetching transactions for ${addr}`);
|
|
138
|
+
// Fetch transactions for this address
|
|
139
|
+
const transactions = await this.client.getAddressTransactions(addr, limit);
|
|
140
|
+
logger.debug(`indexAddressTransactions: found ${transactions.length} transactions for ${addr}`);
|
|
141
|
+
// Index each transaction
|
|
142
|
+
for (const txData of transactions) {
|
|
143
|
+
await this.indexTransaction(tx, txData.hash);
|
|
144
|
+
}
|
|
145
|
+
// Create address-transaction mapping entries
|
|
146
|
+
const now = new Date().toISOString();
|
|
147
|
+
const validTo = new Date(Date.now() + 600000).toISOString(); // 10 min TTL
|
|
148
|
+
const transactionsEntities = (0, mappers_1.mapAddressTransactions)(addr, transactions, now, validTo);
|
|
149
|
+
logger.debug({ count: transactionsEntities.length }, 'indexAddressTransactions: transaction entities');
|
|
150
|
+
if (transactionsEntities.length) {
|
|
151
|
+
await tx.run(UPSERT.into(CardanoODataService_1.AddressTransactions).entries(transactionsEntities));
|
|
152
|
+
}
|
|
153
|
+
return transactionsEntities;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Index & return address signing request association
|
|
157
|
+
* Links an address to a signing request for address-based queries
|
|
158
|
+
* @param tx CAP transaction
|
|
159
|
+
* @param addr bech32 address
|
|
160
|
+
* @param signingRequestId signing request UUID
|
|
161
|
+
* @return {Promise<void>}
|
|
162
|
+
*/
|
|
163
|
+
async indexAddressSigningRequests(tx, addr, signingRequestId) {
|
|
164
|
+
logger.debug(`indexAddressSigningRequests: linking address ${addr} to signing request ${signingRequestId}`);
|
|
165
|
+
const addressSigningRequestEntity = (0, mappers_1.mapAddressSigningRequest)(addr, signingRequestId);
|
|
166
|
+
await tx.run(UPSERT.into(CardanoTransactionService_1.AddressSigningRequests).entries(addressSigningRequestEntity));
|
|
167
|
+
logger.debug(`indexAddressSigningRequests: linked address ${addr} to signing request ${signingRequestId}`);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Index & return address transaction build association
|
|
171
|
+
* Links an address to a transaction build for address-based queries
|
|
172
|
+
* @param tx CAP transaction
|
|
173
|
+
* @param addr bech32 address
|
|
174
|
+
* @param buildId transaction build UUID
|
|
175
|
+
* @return {Promise<void>}
|
|
176
|
+
*/
|
|
177
|
+
async indexAddressTransactionBuilds(tx, addr, buildId) {
|
|
178
|
+
logger.debug(`indexAddressTransactionBuilds: linking address ${addr} to build ${buildId}`);
|
|
179
|
+
const addressTransactionBuildEntity = (0, mappers_1.mapAddressTransactionBuild)(addr, buildId);
|
|
180
|
+
await tx.run(UPSERT.into(CardanoTransactionService_1.AddressTransactionBuilds).entries(addressTransactionBuildEntity));
|
|
181
|
+
logger.debug(`indexAddressTransactionBuilds: linked address ${addr} to build ${buildId}`);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Index & return metadata for a single transaction (Metadata)
|
|
185
|
+
* @param tx CAP transaction
|
|
186
|
+
* @param txHash transaction hash
|
|
187
|
+
* @param metadata raw metadata object (label -> JSONValue)
|
|
188
|
+
* @return {Promise<TransactionMetadata[]>} array of transaction metadata rows
|
|
189
|
+
*/
|
|
190
|
+
async indexTransactionMetadata(tx, tx_hash) {
|
|
191
|
+
const metadata = await this.client.getTransactionMetadata(tx_hash);
|
|
192
|
+
const rows = (0, mappers_1.mapTransactionMetadata)(metadata);
|
|
193
|
+
if (rows.length) {
|
|
194
|
+
await tx.run(UPSERT.into(CardanoODataService_1.TransactionMetadata).entries(rows));
|
|
195
|
+
}
|
|
196
|
+
return rows;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Index & return the network information data
|
|
200
|
+
* @param tx CAP transaction object
|
|
201
|
+
* @returns {Promise<NetworkInformation>} network information entity data
|
|
202
|
+
*/
|
|
203
|
+
async indexNetworkInformation(tx) {
|
|
204
|
+
const netInfo = await this.client.getNetworkInformation();
|
|
205
|
+
const netEntity = (0, mappers_1.mapNetworkInfo)(netInfo, this.client.max_age_ms, this.client.network);
|
|
206
|
+
await tx.run(UPSERT.into(CardanoODataService_1.NetworkInformation).entries(netEntity));
|
|
207
|
+
return netEntity;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Index & return the block information data
|
|
211
|
+
* @param tx CAP transaction object
|
|
212
|
+
* @param blockHash block hash (hex)
|
|
213
|
+
* @returns {Promise<Block>} block entity data
|
|
214
|
+
*/
|
|
215
|
+
async indexBlock(tx, blockHash) {
|
|
216
|
+
const blockInfo = await this.client.getBlock(blockHash);
|
|
217
|
+
const epoch = await this.indexEpoch(tx, blockInfo.epoch);
|
|
218
|
+
const blockEntity = (0, mappers_1.mapBlock)(blockInfo, epoch);
|
|
219
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Block).entries(blockEntity));
|
|
220
|
+
return blockEntity;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Index & return the epoch information data
|
|
224
|
+
* @param tx CAP transaction object
|
|
225
|
+
* @param epochNumber epoch number
|
|
226
|
+
* @returns {Promise<Epoch>} epoch entity data
|
|
227
|
+
*/
|
|
228
|
+
async indexEpoch(tx, epochNumber) {
|
|
229
|
+
const epochInfo = await this.client.getEpoch(epochNumber);
|
|
230
|
+
const epochEntity = (0, mappers_1.mapEpoch)(epochInfo);
|
|
231
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Epoch).entries([epochEntity]));
|
|
232
|
+
return epochEntity;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Index & return the account information data
|
|
236
|
+
* @param tx CAP transaction object
|
|
237
|
+
* @param stakeAddress stake address (bech32)
|
|
238
|
+
* @returns {Promise<Account>} account entity data
|
|
239
|
+
*/
|
|
240
|
+
async indexAccount(tx, stakeAddress) {
|
|
241
|
+
const accountInfo = await this.client.getAccount(stakeAddress);
|
|
242
|
+
const accountEntity = (0, mappers_1.mapAccount)(accountInfo, this.client.max_age_ms);
|
|
243
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Accounts).entries(accountEntity));
|
|
244
|
+
const addresses = accountInfo.addresses.map(a => a.address);
|
|
245
|
+
if (accountEntity.hasAddresses) {
|
|
246
|
+
await this._ensureAddresses(tx, addresses);
|
|
247
|
+
}
|
|
248
|
+
return accountEntity;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Index & return the drep information data
|
|
252
|
+
* @param tx CAP transaction object
|
|
253
|
+
* @param drepId drep id (bech32)
|
|
254
|
+
* @returns {Promise<Drep>} drep entity data
|
|
255
|
+
*/
|
|
256
|
+
async indexDrep(tx, drepId) {
|
|
257
|
+
const drepInfo = await this.client.getDrep(drepId);
|
|
258
|
+
const drepEntity = (0, mappers_1.mapDrep)(drepInfo);
|
|
259
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Dreps).entries(drepEntity));
|
|
260
|
+
return drepEntity;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Index & return the pool information data
|
|
264
|
+
* @param tx CAP transaction object
|
|
265
|
+
* @param poolId pool id (hex)
|
|
266
|
+
* @returns {Promise<Pool>} pool entity data
|
|
267
|
+
*/
|
|
268
|
+
async indexPool(tx, poolId) {
|
|
269
|
+
const poolInfo = await this.client.getPool(poolId);
|
|
270
|
+
const poolEntity = (0, mappers_1.mapPool)(poolInfo);
|
|
271
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Pools).entries(poolEntity));
|
|
272
|
+
return poolEntity;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Common method: build a transaction, persist build result with inputs/outputs/address associations.
|
|
276
|
+
* All four public indexBuild*Result methods delegate to this to eliminate duplication.
|
|
277
|
+
* @param tx CAP transaction object
|
|
278
|
+
* @param buildreq transaction build request data
|
|
279
|
+
* @param buildFn the specific builder method to call
|
|
280
|
+
* @returns {Promise<TransactionBuild>} transaction build entity data
|
|
281
|
+
*/
|
|
282
|
+
async _indexBuildResult(tx, buildreq, buildFn) {
|
|
283
|
+
const protocolParams = await this.indexProtocolParameters(tx);
|
|
284
|
+
const txbuildResult = await buildFn(buildreq, protocolParams);
|
|
285
|
+
const buildResult = (0, mappers_1.mapBuildResult)(txbuildResult, this.client.max_age_ms);
|
|
286
|
+
await tx.run(UPSERT.into(CardanoTransactionService_1.TransactionBuild).entries(buildResult));
|
|
287
|
+
if (buildResult.id && txbuildResult.inputs && txbuildResult.inputs.length > 0) {
|
|
288
|
+
const inputRows = (0, mappers_1.mapBuildInputs)(buildResult.id, txbuildResult.inputs);
|
|
289
|
+
await tx.run(UPSERT.into(CardanoTransactionService_1.TransactionBuildInputs).entries(inputRows));
|
|
290
|
+
}
|
|
291
|
+
if (buildResult.id && txbuildResult.outputs && txbuildResult.outputs.length > 0) {
|
|
292
|
+
const outputRows = (0, mappers_1.mapBuildOutputs)(buildResult.id, txbuildResult.outputs, buildreq.changeAddress || buildreq.senderAddress);
|
|
293
|
+
await tx.run(UPSERT.into(CardanoTransactionService_1.TransactionBuildOutputs).entries(outputRows));
|
|
294
|
+
}
|
|
295
|
+
if (buildResult.id && buildreq.senderAddress) {
|
|
296
|
+
await this.indexAddressTransactionBuilds(tx, buildreq.senderAddress, buildResult.id);
|
|
297
|
+
}
|
|
298
|
+
return buildResult;
|
|
299
|
+
}
|
|
300
|
+
async indexSimpleBuildResult(tx, buildreq) {
|
|
301
|
+
return this._indexBuildResult(tx, buildreq, (req, params) => this.txBuilder.buildSimpleAdaTransaction(req, params));
|
|
302
|
+
}
|
|
303
|
+
async indexMetadataBuildResult(tx, buildreq) {
|
|
304
|
+
return this._indexBuildResult(tx, buildreq, (req, params) => this.txBuilder.buildTransactionWithMetadata(req, params));
|
|
305
|
+
}
|
|
306
|
+
async indexMultiAssetBuildResult(tx, buildreq) {
|
|
307
|
+
return this._indexBuildResult(tx, buildreq, (req, params) => this.txBuilder.buildMultiAssetTransaction(req, params));
|
|
308
|
+
}
|
|
309
|
+
async indexMintBuildResult(tx, buildreq) {
|
|
310
|
+
return this._indexBuildResult(tx, buildreq, (req, params) => this.txBuilder.buildMintTransaction(req, params));
|
|
311
|
+
}
|
|
312
|
+
async indexPlutusSpendBuildResult(tx, buildreq) {
|
|
313
|
+
return this._indexBuildResult(tx, buildreq, (req, params) => this.txBuilder.buildPlutusSpendTransaction(req, params));
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Index & return the protocol parameters data
|
|
317
|
+
* @param tx CAP transaction object
|
|
318
|
+
* @returns {Promise<LedgerProtocolParameter>} protocol parameters entity data
|
|
319
|
+
*/
|
|
320
|
+
async indexProtocolParameters(tx) {
|
|
321
|
+
// first, check if we have recent protocol parameters
|
|
322
|
+
const existing = await tx.run(SELECT.one.from(CardanoODataService_1.LedgerProtocolParameter));
|
|
323
|
+
if (existing)
|
|
324
|
+
return existing;
|
|
325
|
+
// otherwise, fetch new protocol parameters from provider
|
|
326
|
+
const protocolParamsInfo = await this.client.getProtocolParameters();
|
|
327
|
+
// map to protocol parameter row
|
|
328
|
+
const protocolParams = (0, mappers_1.mapProtocolParameters)(protocolParamsInfo);
|
|
329
|
+
// store in DB for future use
|
|
330
|
+
await tx.run(UPSERT.into(CardanoODataService_1.LedgerProtocolParameter).entries(protocolParams));
|
|
331
|
+
return protocolParams;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Persist a transaction submission with optional build association
|
|
335
|
+
* Handles: TransactionSubmission insert, optional Build status update
|
|
336
|
+
* @param tx CAP transaction object
|
|
337
|
+
* @param params submission parameters
|
|
338
|
+
* @returns {Promise<TransactionSubmission>} persisted transaction submission entity
|
|
339
|
+
*/
|
|
340
|
+
async persistTransactionSubmission(tx, params) {
|
|
341
|
+
const { signedTxCbor, txHash, buildId } = params;
|
|
342
|
+
// Map submission data
|
|
343
|
+
const indexSubmission = (0, mappers_1.mapTransactionSubmission)(signedTxCbor, txHash);
|
|
344
|
+
// Create submission record (status: 'pending' — updated to 'submitted' after blockchain confirms)
|
|
345
|
+
const submissionRecord = {
|
|
346
|
+
...indexSubmission,
|
|
347
|
+
build_id: buildId || null,
|
|
348
|
+
backendResponse: 'Submitted successfully',
|
|
349
|
+
status: 'pending',
|
|
350
|
+
};
|
|
351
|
+
// Persist submission
|
|
352
|
+
await tx.run(INSERT.into(CardanoTransactionService_1.TransactionSubmissions).entries(submissionRecord));
|
|
353
|
+
logger.debug({ submissionId: submissionRecord.id, txHash }, 'Persisted submission record');
|
|
354
|
+
// Update build status if buildId provided
|
|
355
|
+
if (buildId) {
|
|
356
|
+
await tx.run(UPDATE.entity(CardanoTransactionService_1.TransactionBuilds)
|
|
357
|
+
.set({ wasSubmitted: true })
|
|
358
|
+
.where({ id: buildId }));
|
|
359
|
+
logger.debug({ buildId }, 'Updated build wasSubmitted flag');
|
|
360
|
+
}
|
|
361
|
+
return submissionRecord;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Update the status of a transaction submission
|
|
365
|
+
* Used for the two-phase submit flow: pending → submitted (or failed)
|
|
366
|
+
* @param tx CAP transaction object
|
|
367
|
+
* @param submissionId the submission to update
|
|
368
|
+
* @param status new status value
|
|
369
|
+
* @param errorMessage optional error message for failed status
|
|
370
|
+
*/
|
|
371
|
+
async updateSubmissionStatus(tx, submissionId, status, errorMessage) {
|
|
372
|
+
const updateData = { status };
|
|
373
|
+
if (errorMessage) {
|
|
374
|
+
updateData.errorMessage = errorMessage;
|
|
375
|
+
}
|
|
376
|
+
await tx.run(UPDATE.entity(CardanoTransactionService_1.TransactionSubmissions)
|
|
377
|
+
.set(updateData)
|
|
378
|
+
.where({ id: submissionId }));
|
|
379
|
+
logger.debug({ submissionId, status }, 'Updated submission status');
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Persist a new signing request
|
|
383
|
+
* @param tx CAP transaction object
|
|
384
|
+
* @param params signing request parameters from external signer module
|
|
385
|
+
* @returns persisted signing request record
|
|
386
|
+
*/
|
|
387
|
+
async persistSigningRequest(tx, params) {
|
|
388
|
+
const { buildId, signingPayload } = params;
|
|
389
|
+
// Create signing request record
|
|
390
|
+
const signingRequestRecord = {
|
|
391
|
+
id: signingPayload.signingRequestId,
|
|
392
|
+
build_id: buildId,
|
|
393
|
+
txBodyHash: signingPayload.txBodyHash,
|
|
394
|
+
unsignedTxCbor: signingPayload.unsignedTxCbor,
|
|
395
|
+
network: signingPayload.network,
|
|
396
|
+
status: 'pending',
|
|
397
|
+
createdAt: signingPayload.createdAt,
|
|
398
|
+
expiresAt: signingPayload.expiresAt,
|
|
399
|
+
cardanoCliCommand: signingPayload.signingInstructions.cardanoCliCommand,
|
|
400
|
+
cip30TxCbor: signingPayload.signingInstructions.cip30SigningRequest?.txCbor,
|
|
401
|
+
};
|
|
402
|
+
// Persist to database
|
|
403
|
+
await tx.run(INSERT.into(CardanoTransactionService_1.SigningRequests).entries(signingRequestRecord));
|
|
404
|
+
logger.debug({ signingRequestId: signingRequestRecord.id, buildId }, 'Persisted signing request');
|
|
405
|
+
// Index address-signing request association
|
|
406
|
+
const build = await tx.run(SELECT.one.from(CardanoTransactionService_1.TransactionBuilds).where({ id: buildId }));
|
|
407
|
+
if (build?.senderAddress) {
|
|
408
|
+
await this.indexAddressSigningRequests(tx, build.senderAddress, signingRequestRecord.id);
|
|
409
|
+
}
|
|
410
|
+
return signingRequestRecord;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Persist a signature verification with signing request status update
|
|
414
|
+
* Handles: SignatureVerification insert, SigningRequest status update
|
|
415
|
+
* @param tx CAP transaction object
|
|
416
|
+
* @param params verification parameters
|
|
417
|
+
* @returns persisted signature verification record
|
|
418
|
+
*/
|
|
419
|
+
async persistSignatureVerification(tx, params) {
|
|
420
|
+
const { signingRequestId, signedTxCbor, verificationResult, signerType, signerInfo } = params;
|
|
421
|
+
// Create verification record
|
|
422
|
+
const verificationRecord = {
|
|
423
|
+
id: cds_1.default.utils.uuid(),
|
|
424
|
+
signingRequest_id: signingRequestId,
|
|
425
|
+
signedTxCbor: signedTxCbor,
|
|
426
|
+
isValid: verificationResult.isValid,
|
|
427
|
+
txBodyHash: verificationResult.txBodyHash,
|
|
428
|
+
witnessCount: verificationResult.witnessCount,
|
|
429
|
+
signerKeyHashes: JSON.stringify(verificationResult.signerKeyHashes),
|
|
430
|
+
errorMessage: verificationResult.errorMessage || null,
|
|
431
|
+
warnings: JSON.stringify(verificationResult.warnings),
|
|
432
|
+
verifiedAt: new Date().toISOString(),
|
|
433
|
+
};
|
|
434
|
+
// Persist verification
|
|
435
|
+
await tx.run(INSERT.into(CardanoTransactionService_1.SignatureVerifications).entries(verificationRecord));
|
|
436
|
+
logger.debug({ verificationId: verificationRecord.id }, 'Persisted signature verification record');
|
|
437
|
+
// Update signing request status
|
|
438
|
+
const newStatus = verificationResult.isValid ? 'verified' : 'failed';
|
|
439
|
+
await tx.run(UPDATE.entity(CardanoTransactionService_1.SigningRequests)
|
|
440
|
+
.set({
|
|
441
|
+
status: newStatus,
|
|
442
|
+
signerType: signerType || 'custom',
|
|
443
|
+
signerInfo: signerInfo || null,
|
|
444
|
+
signedAt: verificationResult.isValid ? new Date().toISOString() : null,
|
|
445
|
+
errorMessage: verificationResult.isValid ? null : verificationResult.errorMessage,
|
|
446
|
+
})
|
|
447
|
+
.where({ id: signingRequestId }));
|
|
448
|
+
logger.debug({ signingRequestId, newStatus }, 'Updated signing request status');
|
|
449
|
+
return verificationRecord;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Index a verified transaction submission with all related records
|
|
453
|
+
* Handles persistence of: SignatureVerification, TransactionSubmission, SigningRequest update, Build update
|
|
454
|
+
* @param tx CAP transaction object
|
|
455
|
+
* @param params submission parameters
|
|
456
|
+
* @returns {Promise<TransactionSubmission>} transaction submission entity data
|
|
457
|
+
*/
|
|
458
|
+
async indexVerifiedTransactionSubmission(tx, params) {
|
|
459
|
+
const { signingRequestId, buildId, fullSignedTxCbor, txHash, verificationResult, signerType, signerInfo } = params;
|
|
460
|
+
// Step 1: Create and persist verification record
|
|
461
|
+
const verificationRecord = {
|
|
462
|
+
id: cds_1.default.utils.uuid(),
|
|
463
|
+
signingRequest_id: signingRequestId,
|
|
464
|
+
signedTxCbor: fullSignedTxCbor,
|
|
465
|
+
isValid: true,
|
|
466
|
+
txBodyHash: verificationResult.txBodyHash,
|
|
467
|
+
witnessCount: verificationResult.witnessCount,
|
|
468
|
+
signerKeyHashes: JSON.stringify(verificationResult.signerKeyHashes),
|
|
469
|
+
errorMessage: null,
|
|
470
|
+
warnings: JSON.stringify(verificationResult.warnings),
|
|
471
|
+
verifiedAt: new Date().toISOString(),
|
|
472
|
+
};
|
|
473
|
+
await tx.run(INSERT.into(CardanoTransactionService_1.SignatureVerifications).entries(verificationRecord));
|
|
474
|
+
logger.debug({ verificationId: verificationRecord.id }, 'Persisted signature verification record');
|
|
475
|
+
// Step 2: Create and persist submission record
|
|
476
|
+
const indexSubmission = (0, mappers_1.mapTransactionSubmission)(fullSignedTxCbor, txHash);
|
|
477
|
+
const submissionRecord = {
|
|
478
|
+
...indexSubmission,
|
|
479
|
+
build_id: buildId,
|
|
480
|
+
backendResponse: `Submitted successfully (verified: ${verificationResult.witnessCount} witness(es))`,
|
|
481
|
+
status: 'submitted',
|
|
482
|
+
};
|
|
483
|
+
await tx.run(INSERT.into(CardanoTransactionService_1.TransactionSubmissions).entries(submissionRecord));
|
|
484
|
+
logger.debug({ submissionId: submissionRecord.id }, 'Persisted submission record');
|
|
485
|
+
// Step 3: Update signing request metadata (status is set by @flow.status @to: #submitted)
|
|
486
|
+
const now = new Date().toISOString();
|
|
487
|
+
await tx.run(UPDATE.entity(CardanoTransactionService_1.SigningRequests)
|
|
488
|
+
.set({
|
|
489
|
+
signerType: signerType || 'custom',
|
|
490
|
+
signerInfo: signerInfo || null,
|
|
491
|
+
signedAt: now,
|
|
492
|
+
submittedAt: now,
|
|
493
|
+
submission_id: submissionRecord.id,
|
|
494
|
+
})
|
|
495
|
+
.where({ id: signingRequestId }));
|
|
496
|
+
logger.debug({ signingRequestId }, 'Updated signing request metadata (status managed by @flow.status)');
|
|
497
|
+
// Step 4: Update build status
|
|
498
|
+
await tx.run(UPDATE.entity(CardanoTransactionService_1.TransactionBuilds)
|
|
499
|
+
.set({ wasSubmitted: true })
|
|
500
|
+
.where({ id: buildId }));
|
|
501
|
+
logger.debug({ buildId }, 'Updated build wasSubmitted flag');
|
|
502
|
+
return submissionRecord;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Index & return the latest epoch information data
|
|
506
|
+
* @param tx CAP transaction object
|
|
507
|
+
* @returns {Promise<Epoch>} epoch entity data
|
|
508
|
+
*/
|
|
509
|
+
async indexLatestEpoch(tx) {
|
|
510
|
+
const epochInfo = await this.client.getLatestEpoch();
|
|
511
|
+
const epochEntity = (0, mappers_1.mapEpoch)(epochInfo);
|
|
512
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Epoch).entries([epochEntity]));
|
|
513
|
+
return epochEntity;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Index & return the latest block information data
|
|
517
|
+
* @param tx CAP transaction object
|
|
518
|
+
* @returns {Promise<Block>} block entity data
|
|
519
|
+
*/
|
|
520
|
+
async indexLatestBlock(tx) {
|
|
521
|
+
const blockInfo = await this.client.getLatestBlock();
|
|
522
|
+
const epoch = await this.indexEpoch(tx, blockInfo.epoch);
|
|
523
|
+
const blockEntity = (0, mappers_1.mapBlock)(blockInfo, epoch);
|
|
524
|
+
await tx.run(UPSERT.into(CardanoODataService_1.Block).entries(blockEntity));
|
|
525
|
+
return blockEntity;
|
|
526
|
+
}
|
|
527
|
+
//-----------------------------------------------------------------------------
|
|
528
|
+
// Private Helpers
|
|
529
|
+
//-----------------------------------------------------------------------------
|
|
530
|
+
/**
|
|
531
|
+
* Index multiple addresses with assets
|
|
532
|
+
* @param tx CAP transaction object
|
|
533
|
+
* @param bech32List array of bech32 addresses
|
|
534
|
+
*/
|
|
535
|
+
async _ensureAddresses(tx, bech32List) {
|
|
536
|
+
for (const bech32 of bech32List) {
|
|
537
|
+
await this.indexAddress(tx, bech32);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
exports.CardanoIndexer = CardanoIndexer;
|
|
542
|
+
//# sourceMappingURL=cardano-indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardano-indexer.js","sourceRoot":"","sources":["cardano-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardano-tx-builder.d.ts","sourceRoot":"","sources":["cardano-tx-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAiE,aAAa,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE7J,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAI1E;;;GAGG;AACH,qBAAa,yBAAyB;IAClC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B;;;OAGG;gBACS,MAAM,EAAE,aAAa;IAKjC;;;OAGG;IACG,IAAI,CAAC,cAAc,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE;;;;OAIG;YACW,iBAAiB;IAU/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAK3C;;;;;OAKG;IACG,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBnH,4BAA4B,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5H;;;;;OAKG;IACG,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB1H;;;;;OAKG;IACG,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IAuCpH;;;;;OAKG;IACG,2BAA2B,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6D3H;;;;OAIG;YACW,qBAAqB;CAMtC"}
|