@odatano/core 0.3.17 → 0.3.19
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/@cds-models/CardanoODataService/index.d.ts +434 -427
- package/@cds-models/CardanoODataService/index.d.ts.map +1 -1
- package/@cds-models/CardanoODataService/index.js +7 -0
- package/@cds-models/CardanoODataService/index.js.map +1 -1
- package/@cds-models/CardanoODataService/index.ts +99 -92
- package/@cds-models/CardanoSignService/index.d.ts +1549 -0
- package/@cds-models/CardanoSignService/index.d.ts.map +1 -0
- package/@cds-models/CardanoSignService/index.js +291 -0
- package/@cds-models/CardanoSignService/index.js.map +1 -0
- package/@cds-models/CardanoSignService/index.ts +519 -0
- package/@cds-models/CardanoTransactionService/index.d.ts +338 -815
- package/@cds-models/CardanoTransactionService/index.d.ts.map +1 -1
- package/@cds-models/CardanoTransactionService/index.js +3 -63
- package/@cds-models/CardanoTransactionService/index.js.map +1 -1
- package/@cds-models/CardanoTransactionService/index.ts +71 -210
- package/@cds-models/index.d.ts +150 -1
- package/@cds-models/index.d.ts.map +1 -1
- package/@cds-models/index.js +51 -1
- package/@cds-models/index.js.map +1 -1
- package/@cds-models/index.ts +74 -2
- package/@cds-models/odatano/cardano/index.d.ts +553 -696
- package/@cds-models/odatano/cardano/index.d.ts.map +1 -1
- package/@cds-models/odatano/cardano/index.js +3 -52
- package/@cds-models/odatano/cardano/index.js.map +1 -1
- package/@cds-models/odatano/cardano/index.ts +93 -165
- package/README.md +78 -19
- package/db/schema.cds +6 -108
- package/db/types.cds +111 -0
- package/package.json +20 -3
- package/src/index.d.ts.map +1 -1
- package/src/index.js +8 -3
- package/src/index.js.map +1 -1
- package/src/plugin.d.ts.map +1 -1
- package/src/plugin.js +7 -2
- package/src/plugin.js.map +1 -1
- package/srv/blockchain/backends/koios-backend.d.ts.map +1 -1
- package/srv/blockchain/backends/koios-backend.js +6 -16
- package/srv/blockchain/backends/koios-backend.js.map +1 -1
- package/srv/blockchain/cardano-client.d.ts.map +1 -1
- package/srv/blockchain/cardano-client.js +13 -10
- package/srv/blockchain/cardano-client.js.map +1 -1
- package/srv/blockchain/cardano-indexer.d.ts.map +1 -1
- package/srv/blockchain/cardano-indexer.js +10 -8
- package/srv/blockchain/cardano-indexer.js.map +1 -1
- package/srv/blockchain/cardano-tx-builder.d.ts.map +1 -1
- package/srv/blockchain/cardano-tx-builder.js +16 -16
- package/srv/blockchain/cardano-tx-builder.js.map +1 -1
- package/srv/blockchain/signing/hsm-signer.d.ts.map +1 -0
- package/srv/blockchain/signing/hsm-signer.js +296 -0
- package/srv/blockchain/signing/hsm-signer.js.map +1 -0
- package/srv/blockchain/signing/signature-verifier.d.ts.map +1 -1
- package/srv/blockchain/signing/signature-verifier.js +7 -25
- package/srv/blockchain/signing/signature-verifier.js.map +1 -1
- package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -1
- package/srv/blockchain/transaction-building/buildooor-tx.js +171 -437
- package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -1
- package/srv/blockchain/transaction-building/cardano-tx.d.ts.map +1 -1
- package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -1
- package/srv/blockchain/transaction-building/csl-tx.js +230 -611
- package/srv/blockchain/transaction-building/csl-tx.js.map +1 -1
- package/srv/cardano-service.cds +17 -9
- package/srv/cardano-service.js +2 -14
- package/srv/cardano-service.js.map +1 -1
- package/srv/cardano-sign-service.cds +128 -0
- package/srv/cardano-sign-service.d.ts.map +1 -0
- package/srv/cardano-sign-service.js +401 -0
- package/srv/cardano-sign-service.js.map +1 -0
- package/srv/cardano-tx-service.cds +116 -196
- package/srv/cardano-tx-service.js +5 -308
- package/srv/cardano-tx-service.js.map +1 -1
- package/srv/server.d.ts.map +1 -1
- package/srv/server.js +60 -5
- package/srv/server.js.map +1 -1
- package/srv/utils/const.d.ts.map +1 -1
- package/srv/utils/const.js +5 -1
- package/srv/utils/const.js.map +1 -1
- package/srv/utils/error-codes.d.ts.map +1 -1
- package/srv/utils/error-codes.js +15 -0
- package/srv/utils/error-codes.js.map +1 -1
- package/srv/utils/errors.d.ts.map +1 -1
- package/srv/utils/errors.js +12 -1
- package/srv/utils/errors.js.map +1 -1
- package/srv/utils/mappers.d.ts.map +1 -1
- package/srv/utils/mappers.js +9 -29
- package/srv/utils/mappers.js.map +1 -1
- package/srv/utils/signing-helper.d.ts.map +1 -1
- package/srv/utils/signing-helper.js +3 -18
- package/srv/utils/signing-helper.js.map +1 -1
- package/srv/utils/tx-build-helper.d.ts.map +1 -1
- package/srv/utils/tx-build-helper.js +10 -4
- package/srv/utils/tx-build-helper.js.map +1 -1
- package/srv/utils/types.d.ts.map +1 -1
- package/srv/utils/types.js +2 -0
- package/srv/utils/types.js.map +1 -1
|
@@ -1,91 +1,18 @@
|
|
|
1
1
|
// This is an automatically generated file. Please do not change its contents manually!
|
|
2
|
-
import * as __ from './../../_';
|
|
3
2
|
import * as _ from './../..';
|
|
4
|
-
|
|
5
|
-
export type Blake2b224 = string;
|
|
6
|
-
export type Blake2b256 = string;
|
|
7
|
-
export type HexBytes = string;
|
|
8
|
-
export type Lovelace = number;
|
|
9
|
-
export type AssetUnit = string;
|
|
10
|
-
export type MetadataLabel = string;
|
|
11
|
-
export type Bech32 = string;
|
|
12
|
-
// enum
|
|
13
|
-
export const SubmissionStatus = {
|
|
14
|
-
pending: "pending",
|
|
15
|
-
submitted: "submitted",
|
|
16
|
-
confirmed: "confirmed",
|
|
17
|
-
failed: "failed",
|
|
18
|
-
} as const;
|
|
19
|
-
export type SubmissionStatus = "pending" | "submitted" | "confirmed" | "failed"
|
|
20
|
-
|
|
21
|
-
// enum
|
|
22
|
-
export const SigningStatus = {
|
|
23
|
-
pending: "pending",
|
|
24
|
-
signed: "signed",
|
|
25
|
-
verified: "verified",
|
|
26
|
-
submitted: "submitted",
|
|
27
|
-
expired: "expired",
|
|
28
|
-
failed: "failed",
|
|
29
|
-
} as const;
|
|
30
|
-
export type SigningStatus = "pending" | "signed" | "verified" | "submitted" | "expired" | "failed"
|
|
31
|
-
|
|
32
|
-
export function _AssetSliceAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
33
|
-
return class AssetSlice extends Base {
|
|
34
|
-
declare quantity?: Lovelace | null
|
|
35
|
-
declare policyId?: Blake2b224 | null
|
|
36
|
-
declare assetNameHex?: string | null
|
|
37
|
-
declare assetName?: string | null
|
|
38
|
-
declare fingerprint?: string | null
|
|
39
|
-
static readonly kind: 'entity' | 'type' | 'aspect' = 'type';
|
|
40
|
-
declare static readonly keys: __.KeysOf<AssetSlice>;
|
|
41
|
-
declare static readonly elements: __.ElementsOf<AssetSlice>;
|
|
42
|
-
declare static readonly actions: globalThis.Record<never, never>;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export class AssetSlice extends _AssetSliceAspect(__.Entity) {}
|
|
46
|
-
Object.defineProperty(AssetSlice, 'name', { value: 'odatano.cardano.AssetSlice' })
|
|
47
|
-
Object.defineProperty(AssetSlice, 'is_singular', { value: true })
|
|
48
|
-
|
|
49
|
-
export function _MetadataSliceAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
50
|
-
return class MetadataSlice extends Base {
|
|
51
|
-
declare label?: MetadataLabel | null
|
|
52
|
-
declare payload?: string | null
|
|
53
|
-
static readonly kind: 'entity' | 'type' | 'aspect' = 'type';
|
|
54
|
-
declare static readonly keys: __.KeysOf<MetadataSlice>;
|
|
55
|
-
declare static readonly elements: __.ElementsOf<MetadataSlice>;
|
|
56
|
-
declare static readonly actions: globalThis.Record<never, never>;
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
export class MetadataSlice extends _MetadataSliceAspect(__.Entity) {}
|
|
60
|
-
Object.defineProperty(MetadataSlice, 'name', { value: 'odatano.cardano.MetadataSlice' })
|
|
61
|
-
Object.defineProperty(MetadataSlice, 'is_singular', { value: true })
|
|
62
|
-
|
|
63
|
-
export function _UTxODataSliceAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
64
|
-
return class UTxODataSlice extends Base {
|
|
65
|
-
declare dataHash?: Blake2b256 | null
|
|
66
|
-
declare inlineDatum?: string | null
|
|
67
|
-
declare referenceScriptHash?: Blake2b256 | null
|
|
68
|
-
static readonly kind: 'entity' | 'type' | 'aspect' = 'type';
|
|
69
|
-
declare static readonly keys: __.KeysOf<UTxODataSlice>;
|
|
70
|
-
declare static readonly elements: __.ElementsOf<UTxODataSlice>;
|
|
71
|
-
declare static readonly actions: globalThis.Record<never, never>;
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
export class UTxODataSlice extends _UTxODataSliceAspect(__.Entity) {}
|
|
75
|
-
Object.defineProperty(UTxODataSlice, 'name', { value: 'odatano.cardano.UTxODataSlice' })
|
|
76
|
-
Object.defineProperty(UTxODataSlice, 'is_singular', { value: true })
|
|
3
|
+
import * as __ from './../../_';
|
|
77
4
|
|
|
78
5
|
export function _NetworkInformationAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
79
6
|
return class NetworkInformation extends _._temporalAspect(Base) {
|
|
80
7
|
declare network?: __.Key<string>
|
|
81
|
-
declare maxSupply?: Lovelace | null
|
|
82
|
-
declare totalSupply?: Lovelace | null
|
|
83
|
-
declare circulatingSupply?: Lovelace | null
|
|
84
|
-
declare lockedSupply?: Lovelace | null
|
|
85
|
-
declare treasurySupply?: Lovelace | null
|
|
86
|
-
declare reservesSupply?: Lovelace | null
|
|
87
|
-
declare liveStake?: Lovelace | null
|
|
88
|
-
declare activeStake?: Lovelace | null
|
|
8
|
+
declare maxSupply?: _.Lovelace | null
|
|
9
|
+
declare totalSupply?: _.Lovelace | null
|
|
10
|
+
declare circulatingSupply?: _.Lovelace | null
|
|
11
|
+
declare lockedSupply?: _.Lovelace | null
|
|
12
|
+
declare treasurySupply?: _.Lovelace | null
|
|
13
|
+
declare reservesSupply?: _.Lovelace | null
|
|
14
|
+
declare liveStake?: _.Lovelace | null
|
|
15
|
+
declare activeStake?: _.Lovelace | null
|
|
89
16
|
static override readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
90
17
|
declare static readonly keys: __.KeysOf<NetworkInformation>;
|
|
91
18
|
declare static readonly elements: __.ElementsOf<NetworkInformation>;
|
|
@@ -109,7 +36,7 @@ export function _BlockAspect<TBase extends new (...args: any[]) => object>(Base:
|
|
|
109
36
|
declare epochSlot?: number | null
|
|
110
37
|
declare size?: number | null
|
|
111
38
|
declare txCount?: number | null
|
|
112
|
-
declare fees?: Lovelace | null
|
|
39
|
+
declare fees?: _.Lovelace | null
|
|
113
40
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
114
41
|
declare static readonly keys: __.KeysOf<Block>;
|
|
115
42
|
declare static readonly elements: __.ElementsOf<Block>;
|
|
@@ -132,8 +59,8 @@ export function _EpochAspect<TBase extends new (...args: any[]) => object>(Base:
|
|
|
132
59
|
declare blockCount?: number | null
|
|
133
60
|
declare txCount?: number | null
|
|
134
61
|
declare output?: string | null
|
|
135
|
-
declare fees?: Lovelace | null
|
|
136
|
-
declare activeStake?: Lovelace | null
|
|
62
|
+
declare fees?: _.Lovelace | null
|
|
63
|
+
declare activeStake?: _.Lovelace | null
|
|
137
64
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
138
65
|
declare static readonly keys: __.KeysOf<Epoch>;
|
|
139
66
|
declare static readonly elements: __.ElementsOf<Epoch>;
|
|
@@ -152,15 +79,15 @@ export function _PoolAspect<TBase extends new (...args: any[]) => object>(Base:
|
|
|
152
79
|
declare vrfKeyHash?: string | null
|
|
153
80
|
declare blocksMinted?: number | null
|
|
154
81
|
declare blocksEpoch?: number | null
|
|
155
|
-
declare liveStake?: Lovelace | null
|
|
82
|
+
declare liveStake?: _.Lovelace | null
|
|
156
83
|
declare liveSize?: number | null
|
|
157
84
|
declare liveSaturation?: number | null
|
|
158
85
|
declare liveDelegators?: number | null
|
|
159
|
-
declare activeStake?: Lovelace | null
|
|
86
|
+
declare activeStake?: _.Lovelace | null
|
|
160
87
|
declare activeSize?: number | null
|
|
161
|
-
declare pledge?: Lovelace | null
|
|
88
|
+
declare pledge?: _.Lovelace | null
|
|
162
89
|
declare margin?: number | null
|
|
163
|
-
declare fixedCost?: Lovelace | null
|
|
90
|
+
declare fixedCost?: _.Lovelace | null
|
|
164
91
|
declare rewardAccount?: string | null
|
|
165
92
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
166
93
|
declare static readonly keys: __.KeysOf<Pool>;
|
|
@@ -178,7 +105,7 @@ export function _DrepAspect<TBase extends new (...args: any[]) => object>(Base:
|
|
|
178
105
|
return class Drep extends Base {
|
|
179
106
|
declare drepId?: __.Key<string>
|
|
180
107
|
declare hex?: string | null
|
|
181
|
-
declare amount?: Lovelace | null
|
|
108
|
+
declare amount?: _.Lovelace | null
|
|
182
109
|
declare hasScript?: boolean | null
|
|
183
110
|
declare lastActiveEpoch?: number | null
|
|
184
111
|
declare retired?: boolean | null
|
|
@@ -197,11 +124,11 @@ Object.defineProperty(Dreps, 'name', { value: 'odatano.cardano.Dreps' })
|
|
|
197
124
|
|
|
198
125
|
export function _AddressAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
199
126
|
return class Address extends _._temporalAspect(Base) {
|
|
200
|
-
declare address?: __.Key<Bech32>
|
|
201
|
-
declare stakeAddress?: Bech32 | null
|
|
127
|
+
declare address?: __.Key<_.Bech32>
|
|
128
|
+
declare stakeAddress?: _.Bech32 | null
|
|
202
129
|
declare type?: string | null
|
|
203
130
|
declare isScript?: boolean | null
|
|
204
|
-
declare totalLovelace?: Lovelace | null
|
|
131
|
+
declare totalLovelace?: _.Lovelace | null
|
|
205
132
|
declare transactions?: __.Composition.of.many<AddressTransactions>
|
|
206
133
|
declare assets?: __.Composition.of.many<AddressAssets>
|
|
207
134
|
declare utxos?: __.Composition.of.many<AddressUTxOs>
|
|
@@ -223,11 +150,11 @@ Object.defineProperty(Addresses, 'name', { value: 'odatano.cardano.Addresses' })
|
|
|
223
150
|
export function _AddressAssetAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
224
151
|
return class AddressAsset extends _._temporalAspect(Base) {
|
|
225
152
|
declare address?: __.Key<__.Association.to<Address>>
|
|
226
|
-
declare address_address?: __.Key<Bech32>
|
|
227
|
-
declare unit?: __.Key<AssetUnit>
|
|
228
|
-
declare asset_quantity?: Lovelace | null
|
|
229
|
-
declare asset_policyId?: Blake2b224 | null
|
|
230
|
-
declare asset_assetNameHex?:
|
|
153
|
+
declare address_address?: __.Key<_.Bech32>
|
|
154
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
155
|
+
declare asset_quantity?: _.Lovelace | null
|
|
156
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
157
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
231
158
|
declare asset_assetName?: string | null
|
|
232
159
|
declare asset_fingerprint?: string | null
|
|
233
160
|
static override readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -245,14 +172,14 @@ Object.defineProperty(AddressAssets, 'name', { value: 'odatano.cardano.AddressAs
|
|
|
245
172
|
export function _AddressUTxOAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
246
173
|
return class AddressUTxO extends _._temporalAspect(Base) {
|
|
247
174
|
declare address?: __.Key<__.Association.to<Address>>
|
|
248
|
-
declare address_address?: __.Key<Bech32>
|
|
249
|
-
declare hash?: __.Key<Blake2b256>
|
|
175
|
+
declare address_address?: __.Key<_.Bech32>
|
|
176
|
+
declare hash?: __.Key<_.Blake2b256>
|
|
250
177
|
declare index?: __.Key<number>
|
|
251
|
-
declare blockHash?: Blake2b256 | null
|
|
252
|
-
declare utxodata_dataHash?: Blake2b256 | null
|
|
178
|
+
declare blockHash?: _.Blake2b256 | null
|
|
179
|
+
declare utxodata_dataHash?: _.Blake2b256 | null
|
|
253
180
|
declare utxodata_inlineDatum?: string | null
|
|
254
|
-
declare utxodata_referenceScriptHash?: Blake2b256 | null
|
|
255
|
-
declare lovelace?: Lovelace | null
|
|
181
|
+
declare utxodata_referenceScriptHash?: _.Blake2b256 | null
|
|
182
|
+
declare lovelace?: _.Lovelace | null
|
|
256
183
|
declare assets?: __.Composition.of.many<UTxOAssets>
|
|
257
184
|
declare hasAssets?: boolean | null
|
|
258
185
|
static override readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -270,13 +197,13 @@ Object.defineProperty(AddressUTxOs, 'name', { value: 'odatano.cardano.AddressUTx
|
|
|
270
197
|
export function _UTxOAssetAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
271
198
|
return class UTxOAsset extends _._temporalAspect(Base) {
|
|
272
199
|
declare utxo?: __.Key<__.Association.to<AddressUTxO>>
|
|
273
|
-
declare utxo_hash?: __.Key<Blake2b256>
|
|
200
|
+
declare utxo_hash?: __.Key<_.Blake2b256>
|
|
274
201
|
declare utxo_index?: __.Key<number>
|
|
275
|
-
declare utxo_address_address?: __.Key<Bech32>
|
|
276
|
-
declare unit?: __.Key<AssetUnit>
|
|
277
|
-
declare asset_quantity?: Lovelace | null
|
|
278
|
-
declare asset_policyId?: Blake2b224 | null
|
|
279
|
-
declare asset_assetNameHex?:
|
|
202
|
+
declare utxo_address_address?: __.Key<_.Bech32>
|
|
203
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
204
|
+
declare asset_quantity?: _.Lovelace | null
|
|
205
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
206
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
280
207
|
declare asset_assetName?: string | null
|
|
281
208
|
declare asset_fingerprint?: string | null
|
|
282
209
|
static override readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -296,12 +223,12 @@ export function _AccountAspect<TBase extends new (...args: any[]) => object>(Bas
|
|
|
296
223
|
declare stakeAddress?: __.Key<string>
|
|
297
224
|
declare active?: boolean | null
|
|
298
225
|
declare activeEpoch?: number | null
|
|
299
|
-
declare controlledAmount?: Lovelace | null
|
|
300
|
-
declare rewardsSum?: Lovelace | null
|
|
301
|
-
declare withdrawalsSum?: Lovelace | null
|
|
302
|
-
declare reservesSum?: Lovelace | null
|
|
303
|
-
declare treasurySum?: Lovelace | null
|
|
304
|
-
declare withdrawableAmount?: Lovelace | null
|
|
226
|
+
declare controlledAmount?: _.Lovelace | null
|
|
227
|
+
declare rewardsSum?: _.Lovelace | null
|
|
228
|
+
declare withdrawalsSum?: _.Lovelace | null
|
|
229
|
+
declare reservesSum?: _.Lovelace | null
|
|
230
|
+
declare treasurySum?: _.Lovelace | null
|
|
231
|
+
declare withdrawableAmount?: _.Lovelace | null
|
|
305
232
|
declare poolId?: __.Association.to<Pool> | null
|
|
306
233
|
declare poolId_poolId?: string | null
|
|
307
234
|
declare drepId?: __.Association.to<Drep> | null
|
|
@@ -322,14 +249,14 @@ Object.defineProperty(Accounts, 'name', { value: 'odatano.cardano.Accounts' })
|
|
|
322
249
|
|
|
323
250
|
export function _TransactionAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
324
251
|
return class Transaction extends Base {
|
|
325
|
-
declare hash?: __.Key<Blake2b256>
|
|
326
|
-
declare blockHash?: Blake2b256 | null
|
|
252
|
+
declare hash?: __.Key<_.Blake2b256>
|
|
253
|
+
declare blockHash?: _.Blake2b256 | null
|
|
327
254
|
declare blockHeight?: number | null
|
|
328
255
|
declare blockTime?: number | null
|
|
329
256
|
declare slot?: number | null
|
|
330
257
|
declare txIndex?: number | null
|
|
331
|
-
declare fee?: Lovelace | null
|
|
332
|
-
declare deposit?: Lovelace | null
|
|
258
|
+
declare fee?: _.Lovelace | null
|
|
259
|
+
declare deposit?: _.Lovelace | null
|
|
333
260
|
declare size?: number | null
|
|
334
261
|
declare metadata?: __.Composition.of.many<TransactionMetadata_>
|
|
335
262
|
declare inputs?: __.Composition.of.many<TransactionInputs>
|
|
@@ -352,13 +279,13 @@ Object.defineProperty(Transactions, 'name', { value: 'odatano.cardano.Transactio
|
|
|
352
279
|
export function _TransactionInputAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
353
280
|
return class TransactionInput extends Base {
|
|
354
281
|
declare tx?: __.Key<__.Association.to<Transaction>>
|
|
355
|
-
declare tx_hash?: __.Key<Blake2b256>
|
|
282
|
+
declare tx_hash?: __.Key<_.Blake2b256>
|
|
356
283
|
declare inputIndex?: __.Key<number>
|
|
357
284
|
declare address?: __.Association.to<Address> | null
|
|
358
|
-
declare address_address?: Bech32 | null
|
|
359
|
-
declare utxoData_dataHash?: Blake2b256 | null
|
|
285
|
+
declare address_address?: _.Bech32 | null
|
|
286
|
+
declare utxoData_dataHash?: _.Blake2b256 | null
|
|
360
287
|
declare utxoData_inlineDatum?: string | null
|
|
361
|
-
declare utxoData_referenceScriptHash?: Blake2b256 | null
|
|
288
|
+
declare utxoData_referenceScriptHash?: _.Blake2b256 | null
|
|
362
289
|
declare isCollateral?: boolean | null
|
|
363
290
|
declare isReference?: boolean | null
|
|
364
291
|
declare assets?: __.Composition.of.many<TransactionInputAssets>
|
|
@@ -380,11 +307,11 @@ export function _TransactionInputAssetAspect<TBase extends new (...args: any[])
|
|
|
380
307
|
return class TransactionInputAsset extends Base {
|
|
381
308
|
declare input?: __.Key<__.Association.to<TransactionInput>>
|
|
382
309
|
declare input_inputIndex?: __.Key<number>
|
|
383
|
-
declare input_tx_hash?: __.Key<Blake2b256>
|
|
384
|
-
declare unit?: __.Key<AssetUnit>
|
|
385
|
-
declare asset_quantity?: Lovelace | null
|
|
386
|
-
declare asset_policyId?: Blake2b224 | null
|
|
387
|
-
declare asset_assetNameHex?:
|
|
310
|
+
declare input_tx_hash?: __.Key<_.Blake2b256>
|
|
311
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
312
|
+
declare asset_quantity?: _.Lovelace | null
|
|
313
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
314
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
388
315
|
declare asset_assetName?: string | null
|
|
389
316
|
declare asset_fingerprint?: string | null
|
|
390
317
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -402,13 +329,13 @@ Object.defineProperty(TransactionInputAssets, 'name', { value: 'odatano.cardano.
|
|
|
402
329
|
export function _TransactionOutputAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
403
330
|
return class TransactionOutput extends Base {
|
|
404
331
|
declare tx?: __.Key<__.Association.to<Transaction>>
|
|
405
|
-
declare tx_hash?: __.Key<Blake2b256>
|
|
332
|
+
declare tx_hash?: __.Key<_.Blake2b256>
|
|
406
333
|
declare outputIndex?: __.Key<number>
|
|
407
334
|
declare address?: __.Association.to<Address> | null
|
|
408
|
-
declare address_address?: Bech32 | null
|
|
409
|
-
declare utxo_dataHash?: Blake2b256 | null
|
|
335
|
+
declare address_address?: _.Bech32 | null
|
|
336
|
+
declare utxo_dataHash?: _.Blake2b256 | null
|
|
410
337
|
declare utxo_inlineDatum?: string | null
|
|
411
|
-
declare utxo_referenceScriptHash?: Blake2b256 | null
|
|
338
|
+
declare utxo_referenceScriptHash?: _.Blake2b256 | null
|
|
412
339
|
declare assets?: __.Composition.of.many<TransactionOutputAssets>
|
|
413
340
|
declare hasAddresses?: boolean | null
|
|
414
341
|
declare hasAssets?: boolean | null
|
|
@@ -428,11 +355,11 @@ export function _TransactionOutputAssetAspect<TBase extends new (...args: any[])
|
|
|
428
355
|
return class TransactionOutputAsset extends Base {
|
|
429
356
|
declare output?: __.Key<__.Association.to<TransactionOutput>>
|
|
430
357
|
declare output_outputIndex?: __.Key<number>
|
|
431
|
-
declare output_tx_hash?: __.Key<Blake2b256>
|
|
432
|
-
declare unit?: __.Key<AssetUnit>
|
|
433
|
-
declare asset_quantity?: Lovelace | null
|
|
434
|
-
declare asset_policyId?: Blake2b224 | null
|
|
435
|
-
declare asset_assetNameHex?:
|
|
358
|
+
declare output_tx_hash?: __.Key<_.Blake2b256>
|
|
359
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
360
|
+
declare asset_quantity?: _.Lovelace | null
|
|
361
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
362
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
436
363
|
declare asset_assetName?: string | null
|
|
437
364
|
declare asset_fingerprint?: string | null
|
|
438
365
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -451,7 +378,7 @@ export function _TransactionMetadataAspect<TBase extends new (...args: any[]) =>
|
|
|
451
378
|
return class TransactionMetadata extends Base {
|
|
452
379
|
declare id?: __.Key<number>
|
|
453
380
|
declare tx?: __.Key<__.Association.to<Transaction>>
|
|
454
|
-
declare tx_hash?: __.Key<Blake2b256>
|
|
381
|
+
declare tx_hash?: __.Key<_.Blake2b256>
|
|
455
382
|
declare label?: string | null
|
|
456
383
|
declare payload?: string | null
|
|
457
384
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -520,11 +447,11 @@ export function _TransactionBuildAspect<TBase extends new (...args: any[]) => ob
|
|
|
520
447
|
declare id?: __.Key<string>
|
|
521
448
|
declare network?: string | null
|
|
522
449
|
declare builderEngine?: string | null
|
|
523
|
-
declare senderAddress?: Bech32 | null
|
|
524
|
-
declare changeAddress?: Bech32 | null
|
|
450
|
+
declare senderAddress?: _.Bech32 | null
|
|
451
|
+
declare changeAddress?: _.Bech32 | null
|
|
525
452
|
declare unsignedTxCbor?: string | null
|
|
526
|
-
declare txBodyHash?: Blake2b256 | null
|
|
527
|
-
declare fee?: Lovelace | null
|
|
453
|
+
declare txBodyHash?: _.Blake2b256 | null
|
|
454
|
+
declare fee?: _.Lovelace | null
|
|
528
455
|
declare size?: number | null
|
|
529
456
|
declare createdAt?: number | null
|
|
530
457
|
declare inputs?: __.Composition.of.many<TransactionBuildInputs>
|
|
@@ -553,10 +480,10 @@ export function _TransactionBuildInputAspect<TBase extends new (...args: any[])
|
|
|
553
480
|
declare build?: __.Key<__.Association.to<TransactionBuild>>
|
|
554
481
|
declare build_id?: __.Key<string>
|
|
555
482
|
declare inputIndex?: __.Key<number>
|
|
556
|
-
declare txHash?: Blake2b256 | null
|
|
483
|
+
declare txHash?: _.Blake2b256 | null
|
|
557
484
|
declare outputIndex?: number | null
|
|
558
|
-
declare address?: Bech32 | null
|
|
559
|
-
declare lovelace?: Lovelace | null
|
|
485
|
+
declare address?: _.Bech32 | null
|
|
486
|
+
declare lovelace?: _.Lovelace | null
|
|
560
487
|
declare assets?: __.Composition.of.many<TransactionBuildInputAssets>
|
|
561
488
|
declare hasAssets?: boolean | null
|
|
562
489
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -576,10 +503,10 @@ export function _TransactionBuildInputAssetAspect<TBase extends new (...args: an
|
|
|
576
503
|
declare input?: __.Key<__.Association.to<TransactionBuildInput>>
|
|
577
504
|
declare input_inputIndex?: __.Key<number>
|
|
578
505
|
declare input_build_id?: __.Key<string>
|
|
579
|
-
declare unit?: __.Key<AssetUnit>
|
|
580
|
-
declare asset_quantity?: Lovelace | null
|
|
581
|
-
declare asset_policyId?: Blake2b224 | null
|
|
582
|
-
declare asset_assetNameHex?:
|
|
506
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
507
|
+
declare asset_quantity?: _.Lovelace | null
|
|
508
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
509
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
583
510
|
declare asset_assetName?: string | null
|
|
584
511
|
declare asset_fingerprint?: string | null
|
|
585
512
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -599,8 +526,8 @@ export function _TransactionBuildOutputAspect<TBase extends new (...args: any[])
|
|
|
599
526
|
declare build?: __.Key<__.Association.to<TransactionBuild>>
|
|
600
527
|
declare build_id?: __.Key<string>
|
|
601
528
|
declare outputIndex?: __.Key<number>
|
|
602
|
-
declare address?: Bech32 | null
|
|
603
|
-
declare lovelace?: Lovelace | null
|
|
529
|
+
declare address?: _.Bech32 | null
|
|
530
|
+
declare lovelace?: _.Lovelace | null
|
|
604
531
|
declare isChange?: boolean | null
|
|
605
532
|
declare assets?: __.Composition.of.many<TransactionBuildOutputAssets>
|
|
606
533
|
declare hasAssets?: boolean | null
|
|
@@ -621,10 +548,10 @@ export function _TransactionBuildOutputAssetAspect<TBase extends new (...args: a
|
|
|
621
548
|
declare output?: __.Key<__.Association.to<TransactionBuildOutput>>
|
|
622
549
|
declare output_outputIndex?: __.Key<number>
|
|
623
550
|
declare output_build_id?: __.Key<string>
|
|
624
|
-
declare unit?: __.Key<AssetUnit>
|
|
625
|
-
declare asset_quantity?: Lovelace | null
|
|
626
|
-
declare asset_policyId?: Blake2b224 | null
|
|
627
|
-
declare asset_assetNameHex?:
|
|
551
|
+
declare unit?: __.Key<_.AssetUnit>
|
|
552
|
+
declare asset_quantity?: _.Lovelace | null
|
|
553
|
+
declare asset_policyId?: _.Blake2b224 | null
|
|
554
|
+
declare asset_assetNameHex?: _.HexBytes | null
|
|
628
555
|
declare asset_assetName?: string | null
|
|
629
556
|
declare asset_fingerprint?: string | null
|
|
630
557
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -645,9 +572,9 @@ export function _TransactionSubmissionAspect<TBase extends new (...args: any[])
|
|
|
645
572
|
declare build?: __.Association.to<TransactionBuild> | null
|
|
646
573
|
declare build_id?: string | null
|
|
647
574
|
declare signedTxCbor?: string | null
|
|
648
|
-
declare txHash?: Blake2b256 | null
|
|
575
|
+
declare txHash?: _.Blake2b256 | null
|
|
649
576
|
declare submittedAt?: number | null
|
|
650
|
-
declare status?: SubmissionStatus | null
|
|
577
|
+
declare status?: _.SubmissionStatus | null
|
|
651
578
|
declare errorCode?: string | null
|
|
652
579
|
declare errorMessage?: string | null
|
|
653
580
|
declare retryCount?: number | null
|
|
@@ -691,9 +618,9 @@ Object.defineProperty(TransactionSubmissionErrors, 'name', { value: 'odatano.car
|
|
|
691
618
|
export function _AddressTransactionAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
692
619
|
return class AddressTransaction extends Base {
|
|
693
620
|
declare address?: __.Key<__.Association.to<Address>>
|
|
694
|
-
declare address_address?: __.Key<Bech32>
|
|
621
|
+
declare address_address?: __.Key<_.Bech32>
|
|
695
622
|
declare tx?: __.Key<__.Association.to<Transaction>>
|
|
696
|
-
declare tx_hash?: __.Key<Blake2b256>
|
|
623
|
+
declare tx_hash?: __.Key<_.Blake2b256>
|
|
697
624
|
declare netAmount?: number | null
|
|
698
625
|
declare blockTime?: number | null
|
|
699
626
|
declare netAssets?: string | null
|
|
@@ -713,7 +640,7 @@ Object.defineProperty(AddressTransactions, 'name', { value: 'odatano.cardano.Add
|
|
|
713
640
|
export function _AddressSigningRequestAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
714
641
|
return class AddressSigningRequest extends Base {
|
|
715
642
|
declare address?: __.Key<__.Association.to<Address>>
|
|
716
|
-
declare address_address?: __.Key<Bech32>
|
|
643
|
+
declare address_address?: __.Key<_.Bech32>
|
|
717
644
|
declare signingRequest?: __.Key<__.Association.to<SigningRequest>>
|
|
718
645
|
declare signingRequest_id?: __.Key<string>
|
|
719
646
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -731,7 +658,7 @@ Object.defineProperty(AddressSigningRequests, 'name', { value: 'odatano.cardano.
|
|
|
731
658
|
export function _AddressTransactionBuildAspect<TBase extends new (...args: any[]) => object>(Base: TBase) {
|
|
732
659
|
return class AddressTransactionBuild extends Base {
|
|
733
660
|
declare address?: __.Key<__.Association.to<Address>>
|
|
734
|
-
declare address_address?: __.Key<Bech32>
|
|
661
|
+
declare address_address?: __.Key<_.Bech32>
|
|
735
662
|
declare txBuild?: __.Key<__.Association.to<TransactionBuild>>
|
|
736
663
|
declare txBuild_id?: __.Key<string>
|
|
737
664
|
static readonly kind: 'entity' | 'type' | 'aspect' = 'entity';
|
|
@@ -751,10 +678,10 @@ export function _SigningRequestAspect<TBase extends new (...args: any[]) => obje
|
|
|
751
678
|
declare id?: __.Key<string>
|
|
752
679
|
declare build?: __.Association.to<TransactionBuild> | null
|
|
753
680
|
declare build_id?: string | null
|
|
754
|
-
declare txBodyHash?: Blake2b256 | null
|
|
681
|
+
declare txBodyHash?: _.Blake2b256 | null
|
|
755
682
|
declare unsignedTxCbor?: string | null
|
|
756
683
|
declare network?: string | null
|
|
757
|
-
declare status?: SigningStatus | null
|
|
684
|
+
declare status?: _.SigningStatus | null
|
|
758
685
|
declare createdAt?: __.CdsTimestamp | null
|
|
759
686
|
declare expiresAt?: __.CdsTimestamp | null
|
|
760
687
|
declare signedAt?: __.CdsTimestamp | null
|
|
@@ -763,6 +690,7 @@ export function _SigningRequestAspect<TBase extends new (...args: any[]) => obje
|
|
|
763
690
|
declare cip30TxCbor?: string | null
|
|
764
691
|
declare signerType?: string | null
|
|
765
692
|
declare signerInfo?: string | null
|
|
693
|
+
declare hsmKeyId?: string | null
|
|
766
694
|
declare verifications?: __.Composition.of.many<SignatureVerifications>
|
|
767
695
|
declare submission?: __.Association.to<TransactionSubmission> | null
|
|
768
696
|
declare submission_id?: string | null
|
|
@@ -786,7 +714,7 @@ export function _SignatureVerificationAspect<TBase extends new (...args: any[])
|
|
|
786
714
|
declare signingRequest_id?: string | null
|
|
787
715
|
declare signedTxCbor?: string | null
|
|
788
716
|
declare isValid?: boolean | null
|
|
789
|
-
declare txBodyHash?: Blake2b256 | null
|
|
717
|
+
declare txBodyHash?: _.Blake2b256 | null
|
|
790
718
|
declare witnessCount?: number | null
|
|
791
719
|
declare signerKeyHashes?: string | null
|
|
792
720
|
declare errorMessage?: string | null
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# Enterprise OData Services for the Cardano Blockchain
|
|
4
4
|
|
|
5
5
|
**ODATANO** is an SAP CAP–based service that exposes the Cardano blockchain via a standardized **OData V4** interface, enabling seamless enterprise-grade read and write access.
|
|
6
6
|
It provides unified REST/OData access to on-chain data while supporting native transaction building and submission directly from business applications.
|
|
@@ -46,7 +46,12 @@ A demonstration-mode video of the Wallet Viewer Fiori App illustrating audit, co
|
|
|
46
46
|
- **Transaction Building**: Cardano Serialization Library (CSL) & Buildooor for minting, ADA or Token transfers, and metadata transactions
|
|
47
47
|
- **Lazy On-Demand Indexing**: TTL-based refresh for changing blockchain data for performance optimization
|
|
48
48
|
- **Enterprise-Grade Validation**: Strict input validation and error handling
|
|
49
|
-
- **
|
|
49
|
+
- **HSM Signing**: Optional server-side transaction signing via PKCS#11 Hardware Security Modules (YubiHSM, AWS CloudHSM, Thales Luna)
|
|
50
|
+
- **Comprehensive Testing**: 1122 tests across 29 test suites, 99% statement coverage
|
|
51
|
+
|
|
52
|
+
## Architecture Overview
|
|
53
|
+
|
|
54
|
+

|
|
50
55
|
|
|
51
56
|
## Quick Start
|
|
52
57
|
|
|
@@ -77,8 +82,8 @@ Configure in your `package.json`:
|
|
|
77
82
|
|
|
78
83
|
```bash
|
|
79
84
|
cds watch
|
|
80
|
-
# → CardanoODataService + CardanoTransactionService auto-registered
|
|
81
|
-
# → /odata/v4/cardano-odata
|
|
85
|
+
# → CardanoODataService + CardanoTransactionService + CardanoSignService auto-registered
|
|
86
|
+
# → /odata/v4/cardano-odata/, /odata/v4/cardano-transaction/, /odata/v4/cardano-sign/ ready
|
|
82
87
|
```
|
|
83
88
|
|
|
84
89
|
### Docker (Standalone)
|
|
@@ -103,6 +108,45 @@ npm run cds:watch
|
|
|
103
108
|
|
|
104
109
|
See [Quick Start Guide](docs/QUICK_START.md) for detailed setup instructions.
|
|
105
110
|
|
|
111
|
+
### HSM Signing (Optional)
|
|
112
|
+
|
|
113
|
+
ODATANO supports server-side transaction signing via PKCS#11-compatible Hardware Security Modules (YubiHSM 2, AWS CloudHSM, Thales Luna, SoftHSM). Private keys never leave the HSM — only signatures are returned.
|
|
114
|
+
|
|
115
|
+
**Plugin mode** — add `hsm` to your `cds.requires.odatano-core` config:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"cds": {
|
|
120
|
+
"requires": {
|
|
121
|
+
"odatano-core": {
|
|
122
|
+
"network": "preview",
|
|
123
|
+
"backends": ["blockfrost"],
|
|
124
|
+
"blockfrostApiKey": "preview_YOUR_KEY",
|
|
125
|
+
"hsm": {
|
|
126
|
+
"enabled": true,
|
|
127
|
+
"pkcs11Module": "/usr/lib/libsofthsm2.so",
|
|
128
|
+
"pin": "1234",
|
|
129
|
+
"slot": 0,
|
|
130
|
+
"keyLabel": "cardano-signing-key"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Standalone mode** — use environment variables:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
HSM_ENABLED=true
|
|
142
|
+
HSM_PKCS11_MODULE=/usr/lib/libsofthsm2.so
|
|
143
|
+
HSM_PIN=1234
|
|
144
|
+
HSM_SLOT=0
|
|
145
|
+
HSM_KEY_LABEL=cardano-signing-key
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
HSM is opt-in — if not configured, the signing service still works with external signing (CLI, browser wallets). If HSM initialization fails, the app continues without HSM (non-fatal). See [Security Guide](docs/guides/SECURITY_GUIDE.md) for details.
|
|
149
|
+
|
|
106
150
|
## Usage Examples
|
|
107
151
|
|
|
108
152
|
**Read Operations (M1):**
|
|
@@ -130,15 +174,28 @@ curl -X POST http://localhost:4004/odata/v4/cardano-transaction/SubmitTransactio
|
|
|
130
174
|
**External Signing Operations (M3):**
|
|
131
175
|
|
|
132
176
|
```bash
|
|
133
|
-
#
|
|
134
|
-
curl -X POST http://localhost:4004/odata/v4/cardano-
|
|
177
|
+
# Create signing request (returns signing instructions and CLI commands)
|
|
178
|
+
curl -X POST http://localhost:4004/odata/v4/cardano-sign/CreateSigningRequest \
|
|
135
179
|
-H "Content-Type: application/json" \
|
|
136
180
|
-d '{"buildId":"uuid-from-build-response"}'
|
|
137
181
|
|
|
138
|
-
#
|
|
139
|
-
curl -X POST http://localhost:4004/odata/v4/cardano-
|
|
182
|
+
# Verify and submit externally signed transaction (bound action on SigningRequests)
|
|
183
|
+
curl -X POST "http://localhost:4004/odata/v4/cardano-sign/SigningRequests('signing-request-id')/CardanoSignService.SubmitVerifiedTransaction" \
|
|
140
184
|
-H "Content-Type: application/json" \
|
|
141
|
-
-d '{"
|
|
185
|
+
-d '{"signedTxCbor":"84a400..."}'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**HSM Signing Operations (M3):**
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Check HSM connection status
|
|
192
|
+
curl -X POST http://localhost:4004/odata/v4/cardano-sign/GetHsmStatus \
|
|
193
|
+
-H "Content-Type: application/json" -d '{}'
|
|
194
|
+
|
|
195
|
+
# Sign and submit with HSM in one step (automated, no external signer needed)
|
|
196
|
+
curl -X POST http://localhost:4004/odata/v4/cardano-sign/SignAndSubmitWithHsm \
|
|
197
|
+
-H "Content-Type: application/json" \
|
|
198
|
+
-d '{"buildId":"uuid-from-build-response"}'
|
|
142
199
|
```
|
|
143
200
|
|
|
144
201
|
See [User Guide](docs/guides/USER_GUIDE.md) for complete API reference.
|
|
@@ -146,7 +203,7 @@ See [User Guide](docs/guides/USER_GUIDE.md) for complete API reference.
|
|
|
146
203
|
## Testing
|
|
147
204
|
|
|
148
205
|
```bash
|
|
149
|
-
npm test # Run all
|
|
206
|
+
npm test # Run all 1122 tests
|
|
150
207
|
npm run test:coverage # With coverage report
|
|
151
208
|
npm run test:integration # Integration tests only
|
|
152
209
|
npm run test:unit # Unit tests only
|
|
@@ -161,15 +218,17 @@ See [Test Documentation](test/README.md) for details.
|
|
|
161
218
|
| [Quick Start](docs/QUICK_START.md) | Get running in 5 minutes |
|
|
162
219
|
| [User Guide](docs/guides/USER_GUIDE.md) | API usage, entities, and examples |
|
|
163
220
|
| [Developer Guide](docs/guides/DEVELOPER_GUIDE.md) | Architecture and development |
|
|
164
|
-
| [Transaction Workflow](docs/guides/TRANSACTION_WORKFLOW.md) | Build → Sign → Submit flow (M2) |
|
|
221
|
+
| [Transaction Workflow](docs/guides/TRANSACTION_WORKFLOW.md) | Build → Sign → Submit flow (M2/M3) |
|
|
222
|
+
| [Security Guide](docs/guides/SECURITY_GUIDE.md) | Authentication, signing security, HSM |
|
|
165
223
|
| [Docker Deployment](docs/guides/DOCKER_DEPLOYMENT.md) | Container deployment |
|
|
166
224
|
| [Data Model](docs/concepts%20&%20architecture/MM_DATAMODEL.md) | Entity relationships |
|
|
167
225
|
| [Error Handling](docs/concepts%20&%20architecture/ERROR_HANDLING.md) | Error codes and handling |
|
|
168
|
-
| [Test Documentation](test/README.md) | Test suite overview (
|
|
226
|
+
| [Test Documentation](test/README.md) | Test suite overview (1122 tests) |
|
|
169
227
|
|
|
170
228
|
**Postman Collections:**
|
|
171
229
|
- [M1 - Read Operations](scripts/ODATANO%20M1%20-%20Full%20Service%20Catalog.postman_collection.json)
|
|
172
230
|
- [M2 - Transaction Operations](scripts/ODATANO%20M2%20-%20Full%20Service%20Catalog.postman_collection.json)
|
|
231
|
+
- [M3 - Transaction Operations](scripts/ODATANO%20M3%20-%20Full%20Service%20Catalog.postman_collection.json)
|
|
173
232
|
|
|
174
233
|
## API Overview
|
|
175
234
|
|
|
@@ -179,17 +238,17 @@ See [Test Documentation](test/README.md) for details.
|
|
|
179
238
|
|
|
180
239
|
**15 Actions:** GetNetworkInformation, GetBlockByHash, GetEpochByNumber, GetTransactionByHash, GetMetadataByTxHash, GetAddressByBech32, GetUTxOsByAddress, GetAssetsByAddress, GetPoolById, GetAccountByStakeAddress, GetDrepById, GetLatestTransactionsByAddress, GetLatestBlock, GetLatestEpoch, GetLedgerProtocolParameters
|
|
181
240
|
|
|
182
|
-
### Transaction Service (`/odata/v4/cardano-transaction`) - M2
|
|
241
|
+
### Transaction Service (`/odata/v4/cardano-transaction`) - M2/M3
|
|
183
242
|
|
|
184
|
-
**
|
|
243
|
+
**8 Entities:** TransactionBuilds, TransactionBuildInputs, TransactionBuildOutputs, TransactionBuildInputAssets, TransactionBuildOutputAssets, TransactionSubmissions, TransactionSubmissionErrors, AddressTransactionBuilds
|
|
185
244
|
|
|
186
|
-
**
|
|
245
|
+
**11 Actions:** BuildSimpleAdaTransaction, BuildTransactionWithMetadata, BuildMultiAssetTransaction, BuildMintTransaction, SubmitTransaction, SubmitSignedTransaction, GetBuildDetails, CheckSubmissionStatus, BuildPlutusSpendTransaction, SetCollateral, GetTransactionBuildsByAddress
|
|
187
246
|
|
|
188
|
-
###
|
|
247
|
+
### Signing Service (`/odata/v4/cardano-sign`) - M3
|
|
189
248
|
|
|
190
|
-
**
|
|
249
|
+
**5 Entities:** SigningRequests, SignatureVerifications, AddressSigningRequests, TransactionBuilds, TransactionSubmissions
|
|
191
250
|
|
|
192
|
-
**8 Actions:** CreateSigningRequest, GetSigningRequest, VerifySignature, SubmitVerifiedTransaction,
|
|
251
|
+
**8 Actions:** CreateSigningRequest, GetSigningRequest, GetSigningRequestsByAddress, VerifySignature, SubmitVerifiedTransaction, SignWithHsm, SignAndSubmitWithHsm, GetHsmStatus
|
|
193
252
|
|
|
194
253
|
See [User Guide](docs/guides/USER_GUIDE.md) for complete API reference with parameters.
|
|
195
254
|
|