@cardano-sdk/cardano-services-client 0.22.3 → 0.23.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.
Files changed (140) hide show
  1. package/dist/cjs/ChainHistoryProvider/BlockfrostChainHistoryProvider.d.ts +42 -0
  2. package/dist/cjs/ChainHistoryProvider/BlockfrostChainHistoryProvider.d.ts.map +1 -0
  3. package/dist/cjs/ChainHistoryProvider/BlockfrostChainHistoryProvider.js +430 -0
  4. package/dist/cjs/ChainHistoryProvider/BlockfrostChainHistoryProvider.js.map +1 -0
  5. package/dist/cjs/ChainHistoryProvider/index.d.ts +1 -0
  6. package/dist/cjs/ChainHistoryProvider/index.d.ts.map +1 -1
  7. package/dist/cjs/ChainHistoryProvider/index.js +1 -0
  8. package/dist/cjs/ChainHistoryProvider/index.js.map +1 -1
  9. package/dist/cjs/NetworkInfoProvider/BlockfrostNetworkInfoProvider.d.ts +17 -0
  10. package/dist/cjs/NetworkInfoProvider/BlockfrostNetworkInfoProvider.d.ts.map +1 -0
  11. package/dist/cjs/NetworkInfoProvider/BlockfrostNetworkInfoProvider.js +111 -0
  12. package/dist/cjs/NetworkInfoProvider/BlockfrostNetworkInfoProvider.js.map +1 -0
  13. package/dist/cjs/NetworkInfoProvider/index.d.ts +1 -0
  14. package/dist/cjs/NetworkInfoProvider/index.d.ts.map +1 -1
  15. package/dist/cjs/NetworkInfoProvider/index.js +1 -0
  16. package/dist/cjs/NetworkInfoProvider/index.js.map +1 -1
  17. package/dist/cjs/RewardsProvider/BlockfrostRewardsProvider.d.ts +11 -0
  18. package/dist/cjs/RewardsProvider/BlockfrostRewardsProvider.d.ts.map +1 -0
  19. package/dist/cjs/RewardsProvider/BlockfrostRewardsProvider.js +46 -0
  20. package/dist/cjs/RewardsProvider/BlockfrostRewardsProvider.js.map +1 -0
  21. package/dist/cjs/RewardsProvider/index.d.ts +1 -0
  22. package/dist/cjs/RewardsProvider/index.d.ts.map +1 -1
  23. package/dist/cjs/RewardsProvider/index.js +1 -0
  24. package/dist/cjs/RewardsProvider/index.js.map +1 -1
  25. package/dist/cjs/TxSubmitProvider/BlockfrostTxSubmitProvider.d.ts +8 -0
  26. package/dist/cjs/TxSubmitProvider/BlockfrostTxSubmitProvider.d.ts.map +1 -0
  27. package/dist/cjs/TxSubmitProvider/BlockfrostTxSubmitProvider.js +18 -0
  28. package/dist/cjs/TxSubmitProvider/BlockfrostTxSubmitProvider.js.map +1 -0
  29. package/dist/cjs/TxSubmitProvider/index.d.ts +1 -0
  30. package/dist/cjs/TxSubmitProvider/index.d.ts.map +1 -1
  31. package/dist/cjs/TxSubmitProvider/index.js +1 -0
  32. package/dist/cjs/TxSubmitProvider/index.js.map +1 -1
  33. package/dist/cjs/UtxoProvider/BlockfrostUtxoProvider.d.ts +9 -0
  34. package/dist/cjs/UtxoProvider/BlockfrostUtxoProvider.d.ts.map +1 -0
  35. package/dist/cjs/UtxoProvider/BlockfrostUtxoProvider.js +52 -0
  36. package/dist/cjs/UtxoProvider/BlockfrostUtxoProvider.js.map +1 -0
  37. package/dist/cjs/UtxoProvider/index.d.ts +1 -0
  38. package/dist/cjs/UtxoProvider/index.d.ts.map +1 -1
  39. package/dist/cjs/UtxoProvider/index.js +1 -0
  40. package/dist/cjs/UtxoProvider/index.js.map +1 -1
  41. package/dist/cjs/blockfrost/BlockfrostClient.d.ts +1 -1
  42. package/dist/cjs/blockfrost/BlockfrostClient.d.ts.map +1 -1
  43. package/dist/cjs/blockfrost/BlockfrostClient.js +10 -4
  44. package/dist/cjs/blockfrost/BlockfrostClient.js.map +1 -1
  45. package/dist/cjs/blockfrost/BlockfrostProvider.d.ts +1 -1
  46. package/dist/cjs/blockfrost/BlockfrostProvider.d.ts.map +1 -1
  47. package/dist/cjs/blockfrost/BlockfrostProvider.js +5 -2
  48. package/dist/cjs/blockfrost/BlockfrostProvider.js.map +1 -1
  49. package/dist/cjs/blockfrost/BlockfrostToCore.d.ts +48 -0
  50. package/dist/cjs/blockfrost/BlockfrostToCore.d.ts.map +1 -0
  51. package/dist/cjs/blockfrost/BlockfrostToCore.js +104 -0
  52. package/dist/cjs/blockfrost/BlockfrostToCore.js.map +1 -0
  53. package/dist/cjs/blockfrost/blockfrost-js.d.ts +8 -0
  54. package/dist/cjs/blockfrost/blockfrost-js.d.ts.map +1 -0
  55. package/dist/cjs/blockfrost/blockfrost-js.js +11 -0
  56. package/dist/cjs/blockfrost/blockfrost-js.js.map +1 -0
  57. package/dist/cjs/blockfrost/index.d.ts +2 -0
  58. package/dist/cjs/blockfrost/index.d.ts.map +1 -1
  59. package/dist/cjs/blockfrost/index.js +6 -0
  60. package/dist/cjs/blockfrost/index.js.map +1 -1
  61. package/dist/cjs/blockfrost/util.d.ts +9 -3
  62. package/dist/cjs/blockfrost/util.d.ts.map +1 -1
  63. package/dist/cjs/blockfrost/util.js +28 -6
  64. package/dist/cjs/blockfrost/util.js.map +1 -1
  65. package/dist/cjs/index.d.ts +1 -0
  66. package/dist/cjs/index.d.ts.map +1 -1
  67. package/dist/cjs/index.js +1 -0
  68. package/dist/cjs/index.js.map +1 -1
  69. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  70. package/dist/esm/ChainHistoryProvider/BlockfrostChainHistoryProvider.d.ts +42 -0
  71. package/dist/esm/ChainHistoryProvider/BlockfrostChainHistoryProvider.d.ts.map +1 -0
  72. package/dist/esm/ChainHistoryProvider/BlockfrostChainHistoryProvider.js +423 -0
  73. package/dist/esm/ChainHistoryProvider/BlockfrostChainHistoryProvider.js.map +1 -0
  74. package/dist/esm/ChainHistoryProvider/index.d.ts +1 -0
  75. package/dist/esm/ChainHistoryProvider/index.d.ts.map +1 -1
  76. package/dist/esm/ChainHistoryProvider/index.js +1 -0
  77. package/dist/esm/ChainHistoryProvider/index.js.map +1 -1
  78. package/dist/esm/NetworkInfoProvider/BlockfrostNetworkInfoProvider.d.ts +17 -0
  79. package/dist/esm/NetworkInfoProvider/BlockfrostNetworkInfoProvider.d.ts.map +1 -0
  80. package/dist/esm/NetworkInfoProvider/BlockfrostNetworkInfoProvider.js +107 -0
  81. package/dist/esm/NetworkInfoProvider/BlockfrostNetworkInfoProvider.js.map +1 -0
  82. package/dist/esm/NetworkInfoProvider/index.d.ts +1 -0
  83. package/dist/esm/NetworkInfoProvider/index.d.ts.map +1 -1
  84. package/dist/esm/NetworkInfoProvider/index.js +1 -0
  85. package/dist/esm/NetworkInfoProvider/index.js.map +1 -1
  86. package/dist/esm/RewardsProvider/BlockfrostRewardsProvider.d.ts +11 -0
  87. package/dist/esm/RewardsProvider/BlockfrostRewardsProvider.d.ts.map +1 -0
  88. package/dist/esm/RewardsProvider/BlockfrostRewardsProvider.js +42 -0
  89. package/dist/esm/RewardsProvider/BlockfrostRewardsProvider.js.map +1 -0
  90. package/dist/esm/RewardsProvider/index.d.ts +1 -0
  91. package/dist/esm/RewardsProvider/index.d.ts.map +1 -1
  92. package/dist/esm/RewardsProvider/index.js +1 -0
  93. package/dist/esm/RewardsProvider/index.js.map +1 -1
  94. package/dist/esm/TxSubmitProvider/BlockfrostTxSubmitProvider.d.ts +8 -0
  95. package/dist/esm/TxSubmitProvider/BlockfrostTxSubmitProvider.d.ts.map +1 -0
  96. package/dist/esm/TxSubmitProvider/BlockfrostTxSubmitProvider.js +14 -0
  97. package/dist/esm/TxSubmitProvider/BlockfrostTxSubmitProvider.js.map +1 -0
  98. package/dist/esm/TxSubmitProvider/index.d.ts +1 -0
  99. package/dist/esm/TxSubmitProvider/index.d.ts.map +1 -1
  100. package/dist/esm/TxSubmitProvider/index.js +1 -0
  101. package/dist/esm/TxSubmitProvider/index.js.map +1 -1
  102. package/dist/esm/UtxoProvider/BlockfrostUtxoProvider.d.ts +9 -0
  103. package/dist/esm/UtxoProvider/BlockfrostUtxoProvider.d.ts.map +1 -0
  104. package/dist/esm/UtxoProvider/BlockfrostUtxoProvider.js +48 -0
  105. package/dist/esm/UtxoProvider/BlockfrostUtxoProvider.js.map +1 -0
  106. package/dist/esm/UtxoProvider/index.d.ts +1 -0
  107. package/dist/esm/UtxoProvider/index.d.ts.map +1 -1
  108. package/dist/esm/UtxoProvider/index.js +1 -0
  109. package/dist/esm/UtxoProvider/index.js.map +1 -1
  110. package/dist/esm/blockfrost/BlockfrostClient.d.ts +1 -1
  111. package/dist/esm/blockfrost/BlockfrostClient.d.ts.map +1 -1
  112. package/dist/esm/blockfrost/BlockfrostClient.js +10 -4
  113. package/dist/esm/blockfrost/BlockfrostClient.js.map +1 -1
  114. package/dist/esm/blockfrost/BlockfrostProvider.d.ts +1 -1
  115. package/dist/esm/blockfrost/BlockfrostProvider.d.ts.map +1 -1
  116. package/dist/esm/blockfrost/BlockfrostProvider.js +5 -2
  117. package/dist/esm/blockfrost/BlockfrostProvider.js.map +1 -1
  118. package/dist/esm/blockfrost/BlockfrostToCore.d.ts +48 -0
  119. package/dist/esm/blockfrost/BlockfrostToCore.d.ts.map +1 -0
  120. package/dist/esm/blockfrost/BlockfrostToCore.js +101 -0
  121. package/dist/esm/blockfrost/BlockfrostToCore.js.map +1 -0
  122. package/dist/esm/blockfrost/blockfrost-js.d.ts +8 -0
  123. package/dist/esm/blockfrost/blockfrost-js.d.ts.map +1 -0
  124. package/dist/esm/blockfrost/blockfrost-js.js +7 -0
  125. package/dist/esm/blockfrost/blockfrost-js.js.map +1 -0
  126. package/dist/esm/blockfrost/index.d.ts +2 -0
  127. package/dist/esm/blockfrost/index.d.ts.map +1 -1
  128. package/dist/esm/blockfrost/index.js +2 -0
  129. package/dist/esm/blockfrost/index.js.map +1 -1
  130. package/dist/esm/blockfrost/util.d.ts +9 -3
  131. package/dist/esm/blockfrost/util.d.ts.map +1 -1
  132. package/dist/esm/blockfrost/util.js +26 -6
  133. package/dist/esm/blockfrost/util.js.map +1 -1
  134. package/dist/esm/index.d.ts +1 -0
  135. package/dist/esm/index.d.ts.map +1 -1
  136. package/dist/esm/index.js +1 -0
  137. package/dist/esm/index.js.map +1 -1
  138. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  139. package/dist/package.json +6 -4
  140. package/package.json +6 -4
@@ -0,0 +1,42 @@
1
+ import { BlockfrostClient, BlockfrostProvider } from '../blockfrost/index.js';
2
+ import { BlocksByIdsArgs, Cardano, ChainHistoryProvider, NetworkInfoProvider, Paginated, TransactionsByAddressesArgs, TransactionsByIdsArgs } from '@cardano-sdk/core';
3
+ import { Logger } from 'ts-log';
4
+ import type { Responses } from '@blockfrost/blockfrost-js';
5
+ import type { Schemas } from '@blockfrost/blockfrost-js/lib/types/open-api';
6
+ declare type WithCertIndex<T> = T & {
7
+ cert_index: number;
8
+ };
9
+ export declare const DB_MAX_SAFE_INTEGER = 2147483647;
10
+ export declare class BlockfrostChainHistoryProvider extends BlockfrostProvider implements ChainHistoryProvider {
11
+ private networkInfoProvider;
12
+ constructor(client: BlockfrostClient, networkInfoProvider: NetworkInfoProvider, logger: Logger);
13
+ protected fetchRedeemers({ hash, redeemer_count }: Responses['tx_content']): Promise<Cardano.Redeemer[] | undefined>;
14
+ protected fetchWithdrawals({ withdrawal_count, hash }: Responses['tx_content']): Promise<Cardano.Withdrawal[] | undefined>;
15
+ protected gatherMintsFromUtxos({ asset_mint_or_burn_count }: Responses['tx_content'], { inputs, outputs }: Responses['tx_content_utxo']): Cardano.TokenMap | undefined;
16
+ protected fetchPoolRetireCerts(hash: string): Promise<WithCertIndex<Cardano.PoolRetirementCertificate>[]>;
17
+ protected fetchPoolUpdateCerts(hash: string): Promise<WithCertIndex<Cardano.PoolRegistrationCertificate>[]>;
18
+ fetchCBOR(hash: string): Promise<string>;
19
+ protected fetchDetailsFromCBOR(hash: string): Promise<Cardano.Tx<Cardano.TxBody> | null>;
20
+ protected fetchMirCerts(hash: string): Promise<WithCertIndex<Cardano.MirCertificate>[]>;
21
+ protected fetchStakeCerts(hash: string): Promise<WithCertIndex<Cardano.StakeAddressCertificate>[]>;
22
+ protected fetchDelegationCerts(hash: string): Promise<WithCertIndex<Cardano.StakeDelegationCertificate>[]>;
23
+ protected fetchCertificates({ pool_retire_count, pool_update_count, mir_cert_count, stake_cert_count, delegation_count, hash }: Responses['tx_content']): Promise<Cardano.Certificate[] | undefined>;
24
+ protected fetchJsonMetadataAsAuxiliaryData(txHash: string): Promise<Cardano.AuxiliaryData | undefined>;
25
+ protected parseValidityInterval: (num: string | null) => Cardano.Slot | undefined;
26
+ protected fetchEpochNo(slotNo: Cardano.Slot): Promise<Cardano.EpochNo>;
27
+ protected fetchEpochParameters(epochNo: Cardano.EpochNo): Promise<Schemas['epoch_param_content']>;
28
+ protected processCertificates(txContent: Schemas['tx_content'], certificates?: Cardano.Certificate[]): Promise<Cardano.Certificate[] | undefined>;
29
+ protected transactionDetailsUsingAPIs(txContent: Responses['tx_content']): Promise<Cardano.HydratedTx>;
30
+ private witnessFromRedeemers;
31
+ protected transactionDetailsUsingCBOR(txContent: Responses['tx_content']): Promise<Cardano.HydratedTx | undefined>;
32
+ protected fetchTransaction(txId: Cardano.TransactionId): Promise<Cardano.HydratedTx>;
33
+ private transactionUtxos;
34
+ blocksByHashes({ ids }: BlocksByIdsArgs): Promise<Cardano.ExtendedBlockInfo[]>;
35
+ transactionsByHashes({ ids }: TransactionsByIdsArgs): Promise<Cardano.HydratedTx[]>;
36
+ transactionsByAddresses({ addresses, pagination, blockRange }: TransactionsByAddressesArgs): Promise<Paginated<Cardano.HydratedTx>>;
37
+ private mapTxBody;
38
+ private mapBlockHeader;
39
+ private fetchUtxos;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=BlockfrostChainHistoryProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockfrostChainHistoryProvider.d.ts","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/BlockfrostChainHistoryProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,423 @@
1
+ import { BlockfrostProvider, BlockfrostToCore, blockfrostMetadataToTxMetadata, fetchSequentially, isBlockfrostNotFoundError } from '../blockfrost/index.js';
2
+ import { Cardano, ProviderError, ProviderFailure, Serialization, createSlotEpochCalc } from '@cardano-sdk/core';
3
+ import omit from 'lodash/omit.js';
4
+ export const DB_MAX_SAFE_INTEGER = 2147483647;
5
+ export class BlockfrostChainHistoryProvider extends BlockfrostProvider {
6
+ constructor(client, networkInfoProvider, logger) {
7
+ super(client, logger);
8
+ this.parseValidityInterval = (num) => Cardano.Slot(Number.parseInt(num || '')) || undefined;
9
+ this.networkInfoProvider = networkInfoProvider;
10
+ }
11
+ async fetchRedeemers({ hash, redeemer_count }) {
12
+ if (!redeemer_count)
13
+ return;
14
+ return this.request(`txs/${hash}/redeemers`).then((response) => response.map(({ purpose, script_hash, unit_mem, unit_steps, tx_index }) => ({
15
+ data: Buffer.from(script_hash),
16
+ executionUnits: {
17
+ memory: Number.parseInt(unit_mem),
18
+ steps: Number.parseInt(unit_steps)
19
+ },
20
+ index: tx_index,
21
+ purpose: (() => {
22
+ switch (purpose) {
23
+ case 'cert':
24
+ return Cardano.RedeemerPurpose.certificate;
25
+ case 'reward':
26
+ return Cardano.RedeemerPurpose.withdrawal;
27
+ case 'mint':
28
+ return Cardano.RedeemerPurpose.mint;
29
+ case 'spend':
30
+ return Cardano.RedeemerPurpose.spend;
31
+ default:
32
+ return purpose;
33
+ }
34
+ })()
35
+ })));
36
+ }
37
+ async fetchWithdrawals({ withdrawal_count, hash }) {
38
+ if (!withdrawal_count)
39
+ return;
40
+ return this.request(`txs/${hash}/withdrawals`).then((response) => response.map(({ address, amount }) => ({
41
+ quantity: BigInt(amount),
42
+ stakeAddress: Cardano.RewardAccount(address)
43
+ })));
44
+ }
45
+ gatherMintsFromUtxos({ asset_mint_or_burn_count }, { inputs, outputs }) {
46
+ if (!asset_mint_or_burn_count)
47
+ return;
48
+ const outputAmounts = outputs.flatMap((o) => o.amount);
49
+ const inputAmounts = inputs.flatMap((i) => i.amount);
50
+ const amountDifference = outputAmounts.filter((amount1) => !inputAmounts.some((amount2) => amount1.unit === amount2.unit));
51
+ return new Map(amountDifference.map((amount) => [Cardano.AssetId(amount.unit), BigInt(amount.quantity)]));
52
+ }
53
+ async fetchPoolRetireCerts(hash) {
54
+ return this.request(`txs/${hash}/pool_retires`).then((response) => response.map(({ pool_id, retiring_epoch, cert_index }) => ({
55
+ __typename: Cardano.CertificateType.PoolRetirement,
56
+ cert_index,
57
+ epoch: Cardano.EpochNo(retiring_epoch),
58
+ poolId: Cardano.PoolId(pool_id)
59
+ })));
60
+ }
61
+ async fetchPoolUpdateCerts(hash) {
62
+ return this.request(`txs/${hash}/pool_updates`).then((response) => response.map(({ pool_id, cert_index, fixed_cost, margin_cost, pledge, reward_account, vrf_key }) => ({
63
+ __typename: Cardano.CertificateType.PoolRegistration,
64
+ cert_index,
65
+ poolId: Cardano.PoolId(pool_id),
66
+ poolParameters: {
67
+ cost: BigInt(fixed_cost),
68
+ id: pool_id,
69
+ margin: Cardano.FractionUtils.toFraction(margin_cost),
70
+ owners: [],
71
+ pledge: BigInt(pledge),
72
+ relays: [],
73
+ rewardAccount: reward_account,
74
+ vrf: vrf_key
75
+ }
76
+ })));
77
+ }
78
+ async fetchCBOR(hash) {
79
+ return this.request(`txs/${hash}/cbor`)
80
+ .then((response) => {
81
+ if (response)
82
+ return response.cbor;
83
+ throw new Error('CBOR is null');
84
+ })
85
+ .catch((_error) => {
86
+ throw new Error('CBOR fetch failed');
87
+ });
88
+ }
89
+ async fetchDetailsFromCBOR(hash) {
90
+ return this.fetchCBOR(hash)
91
+ .then((cbor) => {
92
+ const tx = Serialization.Transaction.fromCbor(Serialization.TxCBOR(cbor)).toCore();
93
+ this.logger.info('Fetched details from CBOR for tx', hash);
94
+ return tx;
95
+ })
96
+ .catch((error) => {
97
+ this.logger.warn('Failed to fetch details from CBOR for tx', hash, error);
98
+ return null;
99
+ });
100
+ }
101
+ async fetchMirCerts(hash) {
102
+ return this.request(`txs/${hash}/mirs`).then((response) => response.map(({ address, amount, cert_index, pot }) => ({
103
+ __typename: Cardano.CertificateType.MIR,
104
+ cert_index,
105
+ kind: Cardano.MirCertificateKind.ToStakeCreds,
106
+ pot: pot === 'reserve' ? Cardano.MirCertificatePot.Reserves : Cardano.MirCertificatePot.Treasury,
107
+ quantity: BigInt(amount),
108
+ rewardAccount: Cardano.RewardAccount(address)
109
+ })));
110
+ }
111
+ async fetchStakeCerts(hash) {
112
+ return this.request(`txs/${hash}/stakes`).then((response) => response.map(({ address, cert_index, registration }) => ({
113
+ __typename: registration
114
+ ? Cardano.CertificateType.StakeRegistration
115
+ : Cardano.CertificateType.StakeDeregistration,
116
+ cert_index,
117
+ stakeCredential: {
118
+ hash: Cardano.RewardAccount.toHash(Cardano.RewardAccount(address)),
119
+ type: Cardano.CredentialType.KeyHash
120
+ }
121
+ })));
122
+ }
123
+ async fetchDelegationCerts(hash) {
124
+ return this.request(`txs/${hash}/delegations`).then((response) => response.map(({ address, pool_id, cert_index }) => ({
125
+ __typename: Cardano.CertificateType.StakeDelegation,
126
+ cert_index,
127
+ poolId: Cardano.PoolId(pool_id),
128
+ stakeCredential: {
129
+ hash: Cardano.RewardAccount.toHash(Cardano.RewardAccount(address)),
130
+ type: Cardano.CredentialType.KeyHash
131
+ }
132
+ })));
133
+ }
134
+ async fetchCertificates({ pool_retire_count, pool_update_count, mir_cert_count, stake_cert_count, delegation_count, hash }) {
135
+ if (pool_retire_count + pool_update_count + mir_cert_count + stake_cert_count + delegation_count === 0)
136
+ return;
137
+ return Promise.all([
138
+ pool_retire_count ? this.fetchPoolRetireCerts(hash) : [],
139
+ pool_update_count ? this.fetchPoolUpdateCerts(hash) : [],
140
+ mir_cert_count ? this.fetchMirCerts(hash) : [],
141
+ stake_cert_count ? this.fetchStakeCerts(hash) : [],
142
+ delegation_count ? this.fetchDelegationCerts(hash) : []
143
+ ]).then((results) => results
144
+ .flat()
145
+ .sort((a, b) => b.cert_index - a.cert_index)
146
+ .map((cert) => cert));
147
+ }
148
+ async fetchJsonMetadataAsAuxiliaryData(txHash) {
149
+ const UNDEFINED = undefined;
150
+ return this.request(`txs/${txHash}/metadata`)
151
+ .then((m) => {
152
+ const metadata = blockfrostMetadataToTxMetadata(m);
153
+ return metadata && metadata.size > 0
154
+ ? {
155
+ blob: metadata
156
+ }
157
+ : UNDEFINED;
158
+ })
159
+ .catch((error) => {
160
+ if (isBlockfrostNotFoundError(error)) {
161
+ return UNDEFINED;
162
+ }
163
+ throw error;
164
+ });
165
+ }
166
+ async fetchEpochNo(slotNo) {
167
+ const calc = await this.networkInfoProvider.eraSummaries().then(createSlotEpochCalc);
168
+ return calc(slotNo);
169
+ }
170
+ async fetchEpochParameters(epochNo) {
171
+ return await this.request(`epochs/${epochNo}/parameters`);
172
+ }
173
+ async processCertificates(txContent, certificates) {
174
+ if (!certificates)
175
+ return;
176
+ const epochNo = await this.fetchEpochNo(Cardano.Slot(txContent.slot));
177
+ const { pool_deposit, key_deposit } = await this.fetchEpochParameters(epochNo);
178
+ return certificates.map((c) => {
179
+ const cert = omit(c, 'cert_index');
180
+ switch (cert.__typename) {
181
+ case Cardano.CertificateType.PoolRegistration: {
182
+ cert.poolParameters.owners = [];
183
+ cert.poolParameters.relays = [];
184
+ const deposit = txContent.deposit === undefined || txContent.deposit === '' || txContent.deposit === '0'
185
+ ? 0n
186
+ : BigInt(pool_deposit);
187
+ delete cert.poolParameters.metadataJson;
188
+ return { ...cert, deposit };
189
+ }
190
+ case Cardano.CertificateType.StakeRegistration: {
191
+ const deposit = BigInt(key_deposit);
192
+ return { ...cert, __typename: Cardano.CertificateType.Registration, deposit };
193
+ }
194
+ case Cardano.CertificateType.StakeDeregistration: {
195
+ const deposit = BigInt(key_deposit);
196
+ return { ...cert, __typename: Cardano.CertificateType.Unregistration, deposit };
197
+ }
198
+ default:
199
+ return cert;
200
+ }
201
+ });
202
+ }
203
+ async transactionDetailsUsingAPIs(txContent) {
204
+ const id = Cardano.TransactionId(txContent.hash);
205
+ const [certificates, withdrawals, utxos, auxiliaryData] = await Promise.all([
206
+ this.fetchCertificates(txContent),
207
+ this.fetchWithdrawals(txContent),
208
+ this.fetchUtxos(id),
209
+ this.fetchJsonMetadataAsAuxiliaryData(id)
210
+ ]);
211
+ const { inputs, outputs, collaterals } = this.transactionUtxos(utxos);
212
+ const mintPreOrder = this.gatherMintsFromUtxos(txContent, utxos);
213
+ const mint = mintPreOrder ? new Map([...mintPreOrder].sort()) : mintPreOrder;
214
+ const inputSource = txContent.valid_contract
215
+ ? Cardano.InputSource.inputs
216
+ : Cardano.InputSource.collaterals;
217
+ const body = this.mapTxBody({
218
+ certificates: await this.processCertificates(txContent, certificates),
219
+ collateralReturn: undefined,
220
+ collaterals,
221
+ fee: BigInt(txContent.fees),
222
+ inputs,
223
+ mint,
224
+ outputs,
225
+ proposalProcedures: undefined,
226
+ validityInterval: {
227
+ invalidBefore: this.parseValidityInterval(txContent.invalid_before),
228
+ invalidHereafter: this.parseValidityInterval(txContent.invalid_hereafter)
229
+ },
230
+ votingProcedures: undefined,
231
+ withdrawals
232
+ }, inputSource);
233
+ return {
234
+ auxiliaryData,
235
+ blockHeader: this.mapBlockHeader(txContent),
236
+ body,
237
+ id,
238
+ index: txContent.index,
239
+ inputSource,
240
+ txSize: txContent.size,
241
+ witness: this.witnessFromRedeemers(await this.fetchRedeemers(txContent))
242
+ };
243
+ }
244
+ witnessFromRedeemers(redeemers) {
245
+ const stubRedeemerData = Buffer.from('not implemented');
246
+ if (redeemers) {
247
+ for (const redeemer of redeemers) {
248
+ redeemer.data = stubRedeemerData;
249
+ }
250
+ }
251
+ return {
252
+ redeemers,
253
+ signatures: new Map()
254
+ };
255
+ }
256
+ async transactionDetailsUsingCBOR(txContent) {
257
+ const id = Cardano.TransactionId(txContent.hash);
258
+ const txFromCBOR = await this.fetchDetailsFromCBOR(id);
259
+ if (!txFromCBOR)
260
+ return;
261
+ const utxos = await this.request(`txs/${id}/utxos`);
262
+ const { inputs, outputs, collaterals } = this.transactionUtxos(utxos, txFromCBOR);
263
+ const inputSource = txContent.valid_contract
264
+ ? Cardano.InputSource.inputs
265
+ : Cardano.InputSource.collaterals;
266
+ const body = this.mapTxBody({
267
+ certificates: await this.processCertificates(txContent, txFromCBOR.body.certificates),
268
+ collateralReturn: txFromCBOR.body.collateralReturn,
269
+ collaterals,
270
+ fee: txFromCBOR.body.fee,
271
+ inputs,
272
+ mint: txFromCBOR.body.mint ? new Map([...txFromCBOR.body.mint].sort()) : undefined,
273
+ outputs,
274
+ proposalProcedures: txFromCBOR.body.proposalProcedures,
275
+ validityInterval: txFromCBOR.body.validityInterval
276
+ ? txFromCBOR.body.validityInterval
277
+ : { invalidBefore: undefined, invalidHereafter: undefined },
278
+ votingProcedures: txFromCBOR.body.votingProcedures,
279
+ withdrawals: txFromCBOR.body.withdrawals
280
+ }, inputSource);
281
+ return {
282
+ auxiliaryData: txFromCBOR.auxiliaryData,
283
+ blockHeader: this.mapBlockHeader(txContent),
284
+ body,
285
+ id,
286
+ index: txContent.index,
287
+ inputSource,
288
+ txSize: txContent.size,
289
+ witness: this.witnessFromRedeemers(txFromCBOR.witness.redeemers)
290
+ };
291
+ }
292
+ async fetchTransaction(txId) {
293
+ try {
294
+ const txContent = await this.request(`txs/${txId.toString()}`);
295
+ return (await this.transactionDetailsUsingCBOR(txContent)) ?? (await this.transactionDetailsUsingAPIs(txContent));
296
+ }
297
+ catch (error) {
298
+ throw this.toProviderError(error);
299
+ }
300
+ }
301
+ transactionUtxos(utxoResponse, txContent) {
302
+ const collaterals = utxoResponse.inputs.filter((input) => input.collateral).map(BlockfrostToCore.hydratedTxIn);
303
+ const inputs = utxoResponse.inputs
304
+ .filter((input) => !input.collateral && !input.reference)
305
+ .map(BlockfrostToCore.hydratedTxIn);
306
+ const outputPromises = utxoResponse.outputs
307
+ .filter((output) => !output.collateral)
308
+ .map((output) => {
309
+ const foundScript = txContent?.body.outputs.find((o) => o.address === output.address);
310
+ return BlockfrostToCore.txOut(output, foundScript);
311
+ });
312
+ return { collaterals, inputs, outputs: outputPromises };
313
+ }
314
+ async blocksByHashes({ ids }) {
315
+ try {
316
+ const responses = await Promise.all(ids.map((id) => this.request(`blocks/${id.toString()}`)));
317
+ return responses.map((response) => {
318
+ if (!response.epoch || !response.epoch_slot || !response.height || !response.slot || !response.block_vrf) {
319
+ throw new ProviderError(ProviderFailure.Unknown, null, 'Queried unsupported block');
320
+ }
321
+ return {
322
+ confirmations: response.confirmations,
323
+ date: new Date(response.time * 1000),
324
+ epoch: Cardano.EpochNo(response.epoch),
325
+ epochSlot: response.epoch_slot,
326
+ fees: BigInt(response.fees || '0'),
327
+ header: {
328
+ blockNo: Cardano.BlockNo(response.height),
329
+ hash: Cardano.BlockId(response.hash),
330
+ slot: Cardano.Slot(response.slot)
331
+ },
332
+ nextBlock: response.next_block ? Cardano.BlockId(response.next_block) : undefined,
333
+ previousBlock: response.previous_block ? Cardano.BlockId(response.previous_block) : undefined,
334
+ size: Cardano.BlockSize(response.size),
335
+ slotLeader: Cardano.SlotLeader(response.slot_leader),
336
+ totalOutput: BigInt(response.output || '0'),
337
+ txCount: response.tx_count,
338
+ vrf: Cardano.VrfVkBech32(response.block_vrf)
339
+ };
340
+ });
341
+ }
342
+ catch (error) {
343
+ throw this.toProviderError(error);
344
+ }
345
+ }
346
+ async transactionsByHashes({ ids }) {
347
+ try {
348
+ return Promise.all(ids.map((id) => this.fetchTransaction(id)));
349
+ }
350
+ catch (error) {
351
+ throw this.toProviderError(error);
352
+ }
353
+ }
354
+ async transactionsByAddresses({ addresses, pagination, blockRange }) {
355
+ this.logger.info(`transactionsByAddresses: ${JSON.stringify(blockRange)} ${JSON.stringify(addresses)}`);
356
+ try {
357
+ const lowerBound = blockRange?.lowerBound ?? 0;
358
+ const upperBound = blockRange?.upperBound ?? DB_MAX_SAFE_INTEGER;
359
+ const addressTransactions = await Promise.all(addresses.map(async (address) => fetchSequentially({
360
+ haveEnoughItems: blockRange?.lowerBound
361
+ ? (transactions) => transactions.length > 0 &&
362
+ transactions[transactions.length - 1].block_height < blockRange.lowerBound
363
+ : undefined,
364
+ request: (paginationQueryString) => {
365
+ let queryString = `addresses/${address}/transactions?${paginationQueryString}`;
366
+ if (blockRange?.lowerBound)
367
+ queryString += `&from=${blockRange.lowerBound.toString()}`;
368
+ if (blockRange?.upperBound)
369
+ queryString += `&to=${blockRange.upperBound.toString()}`;
370
+ return this.request(queryString);
371
+ }
372
+ })));
373
+ const allTransactions = addressTransactions.flat(1);
374
+ const ids = allTransactions
375
+ .filter(({ block_height }) => block_height >= lowerBound && block_height <= upperBound)
376
+ .sort((a, b) => a.block_height - b.block_height || a.tx_index - b.tx_index)
377
+ .map(({ tx_hash }) => Cardano.TransactionId(tx_hash))
378
+ .splice(pagination.startAt, pagination.limit);
379
+ const pageResults = await this.transactionsByHashes({ ids });
380
+ return { pageResults, totalResultCount: allTransactions.length };
381
+ }
382
+ catch (error) {
383
+ throw this.toProviderError(error);
384
+ }
385
+ }
386
+ mapTxBody({ collateralReturn, collaterals, fee, inputs, outputs, mint, proposalProcedures, validityInterval, votingProcedures, withdrawals, certificates }, inputSource) {
387
+ return {
388
+ ...(inputSource === Cardano.InputSource.collaterals
389
+ ? {
390
+ collateralReturn: outputs.length > 0 ? outputs[0] : undefined,
391
+ collaterals: inputs,
392
+ fee: BigInt(0),
393
+ inputs: [],
394
+ outputs: [],
395
+ totalCollateral: fee
396
+ }
397
+ : {
398
+ collateralReturn: collateralReturn ?? undefined,
399
+ collaterals,
400
+ fee,
401
+ inputs,
402
+ outputs
403
+ }),
404
+ certificates,
405
+ mint,
406
+ proposalProcedures,
407
+ validityInterval,
408
+ votingProcedures,
409
+ withdrawals
410
+ };
411
+ }
412
+ mapBlockHeader({ block, block_height, slot }) {
413
+ return {
414
+ blockNo: Cardano.BlockNo(block_height),
415
+ hash: Cardano.BlockId(block),
416
+ slot: Cardano.Slot(slot)
417
+ };
418
+ }
419
+ fetchUtxos(id) {
420
+ return this.request(`txs/${id}/utxos`);
421
+ }
422
+ }
423
+ //# sourceMappingURL=BlockfrostChainHistoryProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockfrostChainHistoryProvider.js","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/BlockfrostChainHistoryProvider.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ export * from './BlockfrostChainHistoryProvider.js';
1
2
  export * from './chainHistoryHttpProvider.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC"}
@@ -1,2 +1,3 @@
1
+ export * from './BlockfrostChainHistoryProvider.js';
1
2
  export * from './chainHistoryHttpProvider.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ChainHistoryProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BlockfrostClient } from '../blockfrost/BlockfrostClient.js';
2
+ import { BlockfrostProvider } from '../blockfrost/BlockfrostProvider.js';
3
+ import { Cardano, EraSummary, NetworkInfoProvider, StakeSummary, SupplySummary } from '@cardano-sdk/core';
4
+ import { Logger } from 'ts-log';
5
+ import type { Schemas } from '@blockfrost/blockfrost-js/lib/types/open-api';
6
+ export declare class BlockfrostNetworkInfoProvider extends BlockfrostProvider implements NetworkInfoProvider {
7
+ constructor(client: BlockfrostClient, logger: Logger);
8
+ stake(): Promise<StakeSummary>;
9
+ lovelaceSupply(): Promise<SupplySummary>;
10
+ ledgerTip(): Promise<Cardano.Tip>;
11
+ protocolParameters(): Promise<Cardano.ProtocolParameters>;
12
+ genesisParameters(): Promise<Cardano.CompactGenesis>;
13
+ protected fetchEraSummaries(): Promise<Schemas['network-eras']>;
14
+ protected parseEraSummaries(summaries: Schemas['network-eras'], systemStart: Date): Promise<EraSummary[]>;
15
+ eraSummaries(): Promise<EraSummary[]>;
16
+ }
17
+ //# sourceMappingURL=BlockfrostNetworkInfoProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockfrostNetworkInfoProvider.d.ts","sourceRoot":"","sources":["../../../src/NetworkInfoProvider/BlockfrostNetworkInfoProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,OAAO,EACP,UAAU,EAEV,mBAAmB,EAEnB,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8CAA8C,CAAC;AAE5E,qBAAa,6BAA8B,SAAQ,kBAAmB,YAAW,mBAAmB;gBACtF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAIvC,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAY9B,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAYxC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IASjC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;IASzD,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;cAyBjD,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;cAQrD,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiBlG,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CASnD"}
@@ -0,0 +1,107 @@
1
+ import { BlockfrostProvider } from '../blockfrost/BlockfrostProvider.js';
2
+ import { BlockfrostToCore } from '../blockfrost/index.js';
3
+ import { Cardano, Milliseconds, Seconds } from '@cardano-sdk/core';
4
+ export class BlockfrostNetworkInfoProvider extends BlockfrostProvider {
5
+ constructor(client, logger) {
6
+ super(client, logger);
7
+ }
8
+ async stake() {
9
+ try {
10
+ const { stake } = await this.request('network');
11
+ return {
12
+ active: BigInt(stake.active),
13
+ live: BigInt(stake.live)
14
+ };
15
+ }
16
+ catch (error) {
17
+ throw this.toProviderError(error);
18
+ }
19
+ }
20
+ async lovelaceSupply() {
21
+ try {
22
+ const { supply } = await this.request('network');
23
+ return {
24
+ circulating: BigInt(supply.circulating),
25
+ total: BigInt(supply.total)
26
+ };
27
+ }
28
+ catch (error) {
29
+ throw this.toProviderError(error);
30
+ }
31
+ }
32
+ async ledgerTip() {
33
+ try {
34
+ const block = await this.request('blocks/latest');
35
+ return BlockfrostToCore.blockToTip(block);
36
+ }
37
+ catch (error) {
38
+ throw this.toProviderError(error);
39
+ }
40
+ }
41
+ async protocolParameters() {
42
+ try {
43
+ const response = await this.request('epochs/latest/parameters');
44
+ return BlockfrostToCore.protocolParameters(response);
45
+ }
46
+ catch (error) {
47
+ throw this.toProviderError(error);
48
+ }
49
+ }
50
+ async genesisParameters() {
51
+ return this.request('genesis')
52
+ .then((response) => ({
53
+ activeSlotsCoefficient: response.active_slots_coefficient,
54
+ epochLength: response.epoch_length,
55
+ maxKesEvolutions: response.max_kes_evolutions,
56
+ maxLovelaceSupply: BigInt(response.max_lovelace_supply),
57
+ networkId: response.network_magic === Cardano.NetworkMagics.Mainnet
58
+ ? Cardano.NetworkId.Mainnet
59
+ : Cardano.NetworkId.Testnet,
60
+ networkMagic: response.network_magic,
61
+ securityParameter: response.security_param,
62
+ slotLength: Seconds(response.slot_length || 0.2),
63
+ slotsPerKesPeriod: response.slots_per_kes_period,
64
+ systemStart: new Date(response.system_start * 1000),
65
+ updateQuorum: response.update_quorum
66
+ }))
67
+ .catch((error) => {
68
+ throw this.toProviderError(error);
69
+ });
70
+ }
71
+ async fetchEraSummaries() {
72
+ try {
73
+ return await this.request('network/eras');
74
+ }
75
+ catch (error) {
76
+ throw this.toProviderError(error);
77
+ }
78
+ }
79
+ async parseEraSummaries(summaries, systemStart) {
80
+ try {
81
+ return summaries.map((r) => ({
82
+ parameters: {
83
+ epochLength: r.parameters.epoch_length,
84
+ slotLength: Milliseconds(r.parameters.slot_length * 1000)
85
+ },
86
+ start: {
87
+ slot: r.start.slot,
88
+ time: new Date(systemStart.getTime() + r.start.time * 1000)
89
+ }
90
+ }));
91
+ }
92
+ catch (error) {
93
+ throw this.toProviderError(error);
94
+ }
95
+ }
96
+ async eraSummaries() {
97
+ try {
98
+ const { systemStart } = await this.genesisParameters();
99
+ const summaries = await this.fetchEraSummaries();
100
+ return this.parseEraSummaries(summaries, systemStart);
101
+ }
102
+ catch (error) {
103
+ throw this.toProviderError(error);
104
+ }
105
+ }
106
+ }
107
+ //# sourceMappingURL=BlockfrostNetworkInfoProvider.js.map