neozip-blockchain 0.7.0 → 0.7.2
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/README.md +22 -15
- package/dist/constants/metadata.d.ts +2 -2
- package/dist/constants/metadata.js +4 -4
- package/dist/constants/metadata.js.map +1 -1
- package/dist/constants/servers.d.ts +17 -19
- package/dist/constants/servers.d.ts.map +1 -1
- package/dist/constants/servers.js +24 -27
- package/dist/constants/servers.js.map +1 -1
- package/dist/core/ZipkitMinter.js +4 -4
- package/dist/core/ZipkitMinter.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{zipstamp-server → token-service}/CalendarManager.d.ts +6 -6
- package/dist/token-service/CalendarManager.d.ts.map +1 -0
- package/dist/{zipstamp-server → token-service}/CalendarManager.js +8 -8
- package/dist/token-service/CalendarManager.js.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerAPI.d.ts → token-service/TokenServiceAPI.d.ts} +19 -19
- package/dist/token-service/TokenServiceAPI.d.ts.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerAPI.js → token-service/TokenServiceAPI.js} +56 -56
- package/dist/token-service/TokenServiceAPI.js.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerClient.d.ts → token-service/TokenServiceClient.d.ts} +41 -28
- package/dist/token-service/TokenServiceClient.d.ts.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerClient.js → token-service/TokenServiceClient.js} +35 -27
- package/dist/token-service/TokenServiceClient.js.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerHelpers.d.ts → token-service/TokenServiceHelpers.d.ts} +60 -47
- package/dist/token-service/TokenServiceHelpers.d.ts.map +1 -0
- package/dist/{zipstamp-server/ZipstampServerHelpers.js → token-service/TokenServiceHelpers.js} +71 -46
- package/dist/token-service/TokenServiceHelpers.js.map +1 -0
- package/dist/token-service/index.d.ts +24 -0
- package/dist/token-service/index.d.ts.map +1 -0
- package/dist/token-service/index.js +68 -0
- package/dist/token-service/index.js.map +1 -0
- package/package.json +25 -23
- package/dist/zipstamp-server/CalendarManager.d.ts.map +0 -1
- package/dist/zipstamp-server/CalendarManager.js.map +0 -1
- package/dist/zipstamp-server/ZipstampServerAPI.d.ts.map +0 -1
- package/dist/zipstamp-server/ZipstampServerAPI.js.map +0 -1
- package/dist/zipstamp-server/ZipstampServerClient.d.ts.map +0 -1
- package/dist/zipstamp-server/ZipstampServerClient.js.map +0 -1
- package/dist/zipstamp-server/ZipstampServerHelpers.d.ts.map +0 -1
- package/dist/zipstamp-server/ZipstampServerHelpers.js.map +0 -1
- package/dist/zipstamp-server/index.d.ts +0 -24
- package/dist/zipstamp-server/index.d.ts.map +0 -1
- package/dist/zipstamp-server/index.js +0 -67
- package/dist/zipstamp-server/index.js.map +0 -1
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ======================================
|
|
3
|
-
*
|
|
3
|
+
* TokenServiceAPI.ts - NeoZip Token Service API integration
|
|
4
4
|
* ======================================
|
|
5
5
|
*
|
|
6
|
-
* This module provides timestamping functionality using the
|
|
6
|
+
* This module provides timestamping functionality using the NeoZip Token Service API,
|
|
7
7
|
* similar to OpenTimestamps but using Ethereum blockchain.
|
|
8
8
|
*
|
|
9
9
|
* Key Features:
|
|
10
|
-
* - Ethereum blockchain timestamping via
|
|
10
|
+
* - Ethereum blockchain timestamping via NeoZip Token Service
|
|
11
11
|
* - Merkle root calculation and verification
|
|
12
12
|
* - ZIP file integration for timestamp metadata
|
|
13
13
|
* - Support for immediate, batched, and transferable modes
|
|
14
14
|
*
|
|
15
|
-
* @fileoverview
|
|
15
|
+
* @fileoverview NeoZip Token Service API utilities for blockchain timestamping
|
|
16
16
|
* @author NeoWare Inc.
|
|
17
17
|
*/
|
|
18
18
|
import type { ZipkitLike, ZipEntryLike } from '../types';
|
|
19
|
-
import type { TimestampMetadata } from './
|
|
19
|
+
import type { TimestampMetadata } from './TokenServiceHelpers';
|
|
20
20
|
export declare const CMP_METHOD: {
|
|
21
21
|
STORED: number;
|
|
22
22
|
DEFLATED: number;
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
25
|
* Timestamp metadata format stored in ZIP files
|
|
26
|
-
* Re-exported from
|
|
26
|
+
* Re-exported from TokenServiceHelpers.ts
|
|
27
27
|
*/
|
|
28
|
-
export type { TimestampMetadata } from './
|
|
28
|
+
export type { TimestampMetadata } from './TokenServiceHelpers';
|
|
29
29
|
/**
|
|
30
30
|
* Verification result for timestamped ZIP files.
|
|
31
31
|
*
|
|
@@ -115,9 +115,9 @@ export declare function getEthTimestampEntry(zip: ZipkitLike): ZipEntryLike | nu
|
|
|
115
115
|
*/
|
|
116
116
|
export declare function extractTimestampData(zip: ZipkitLike, entry: ZipEntryLike): Promise<TimestampMetadata | null>;
|
|
117
117
|
/**
|
|
118
|
-
* Creates a timestamp by submitting a merkle root to the
|
|
118
|
+
* Creates a timestamp by submitting a merkle root to the NeoZip Token Service.
|
|
119
119
|
*
|
|
120
|
-
* Submits a SHA-256 digest (merkle root) to the
|
|
120
|
+
* Submits a SHA-256 digest (merkle root) to the NeoZip Token Service API for blockchain
|
|
121
121
|
* timestamping. The digest is typically the merkle root of a ZIP file's contents.
|
|
122
122
|
*
|
|
123
123
|
* The function uses `submitDigest` internally and converts the response to a
|
|
@@ -126,7 +126,7 @@ export declare function extractTimestampData(zip: ZipkitLike, entry: ZipEntryLik
|
|
|
126
126
|
* @param merkleRoot - A 64-character hexadecimal string representing the SHA-256 hash
|
|
127
127
|
* @param options - Configuration options for timestamp creation
|
|
128
128
|
* @param options.recipientEmail - Optional email address for notifications
|
|
129
|
-
* @param options.serverUrl - Optional
|
|
129
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
130
130
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
131
131
|
* @param options.mode - **Deprecated**: For backward compatibility only, not sent to API
|
|
132
132
|
* @param options.recipientAddress - **Deprecated**: For backward compatibility only, not sent to API
|
|
@@ -150,16 +150,16 @@ export declare function extractTimestampData(zip: ZipkitLike, entry: ZipEntryLik
|
|
|
150
150
|
*/
|
|
151
151
|
export declare function createTimestamp(merkleRoot: string, options?: CreateTimestampOptions): Promise<TimestampMetadata | null>;
|
|
152
152
|
/**
|
|
153
|
-
* Verifies a timestamp against the
|
|
153
|
+
* Verifies a timestamp against the NeoZip Token Service.
|
|
154
154
|
*
|
|
155
155
|
* Verifies that a timestamp has been confirmed on the blockchain by checking
|
|
156
|
-
* with the
|
|
156
|
+
* with the NeoZip Token Service API. Uses `verifyDigest` internally and converts the
|
|
157
157
|
* response to an `EthTimestampVerifyResult` format.
|
|
158
158
|
*
|
|
159
159
|
* @param merkleRoot - The SHA-256 digest (merkle root) to verify
|
|
160
160
|
* @param timestampData - The timestamp metadata from the ZIP file (contains batchId, chainId, etc.)
|
|
161
161
|
* @param options - Configuration options for verification
|
|
162
|
-
* @param options.serverUrl - Optional
|
|
162
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
163
163
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
164
164
|
* @returns Promise resolving to verification result with status and blockchain details
|
|
165
165
|
*
|
|
@@ -183,12 +183,12 @@ export declare function verifyTimestamp(merkleRoot: string, timestampData: Times
|
|
|
183
183
|
* Verifies a timestamp within a ZIP file.
|
|
184
184
|
*
|
|
185
185
|
* Extracts the merkle root and timestamp metadata from a ZIP file, then verifies
|
|
186
|
-
* the timestamp against the
|
|
186
|
+
* the timestamp against the NeoZip Token Service API. This is a convenience function that
|
|
187
187
|
* combines `getEthTimestampEntry`, `extractTimestampData`, and `verifyTimestamp`.
|
|
188
188
|
*
|
|
189
189
|
* @param zip - A ZipkitLike instance representing the timestamped ZIP file
|
|
190
190
|
* @param options - Configuration options for verification
|
|
191
|
-
* @param options.serverUrl - Optional
|
|
191
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
192
192
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
193
193
|
* @returns Promise resolving to verification result
|
|
194
194
|
*
|
|
@@ -243,7 +243,7 @@ export declare function createTimestampMetadataEntry(zipkit: ZipkitLike, timesta
|
|
|
243
243
|
/**
|
|
244
244
|
* Creates timestamp metadata for a ZIP file.
|
|
245
245
|
*
|
|
246
|
-
* Extracts the merkle root from a ZIP file and submits it to the
|
|
246
|
+
* Extracts the merkle root from a ZIP file and submits it to the NeoZip Token Service
|
|
247
247
|
* for timestamping. Returns the timestamp metadata that can then be added to
|
|
248
248
|
* the ZIP file using `createTimestampMetadataEntry`.
|
|
249
249
|
*
|
|
@@ -254,7 +254,7 @@ export declare function createTimestampMetadataEntry(zipkit: ZipkitLike, timesta
|
|
|
254
254
|
* @param zipkit - A ZipkitLike instance representing the ZIP file to timestamp
|
|
255
255
|
* @param options - Configuration options for timestamp creation
|
|
256
256
|
* @param options.recipientEmail - Optional email address for notifications
|
|
257
|
-
* @param options.serverUrl - Optional
|
|
257
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
258
258
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
259
259
|
* @returns Promise resolving to timestamp metadata, or `null` if creation fails
|
|
260
260
|
* @throws {Error} If merkle root is not found in ZIP or timestamp creation fails
|
|
@@ -394,7 +394,7 @@ export declare function getMetadataFileNames(): string[];
|
|
|
394
394
|
* Verifies a Merkle proof locally using sorted pair hashing (keccak256).
|
|
395
395
|
*
|
|
396
396
|
* Performs local verification of a Merkle proof without requiring access to
|
|
397
|
-
* the
|
|
397
|
+
* the NeoZip Token Service or blockchain. Uses the same sorted pair hashing algorithm
|
|
398
398
|
* as OpenZeppelin's MerkleProof library, ensuring compatibility with on-chain
|
|
399
399
|
* verification.
|
|
400
400
|
*
|
|
@@ -424,4 +424,4 @@ export declare function getMetadataFileNames(): string[];
|
|
|
424
424
|
* ```
|
|
425
425
|
*/
|
|
426
426
|
export declare function verifyMerkleProofLocal(digest: string, batchMerkleRoot: string, merkleProof: string[]): boolean;
|
|
427
|
-
//# sourceMappingURL=
|
|
427
|
+
//# sourceMappingURL=TokenServiceAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenServiceAPI.d.ts","sourceRoot":"","sources":["../../src/token-service/TokenServiceAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* ======================================
|
|
4
|
-
*
|
|
4
|
+
* TokenServiceAPI.ts - NeoZip Token Service API integration
|
|
5
5
|
* ======================================
|
|
6
6
|
*
|
|
7
|
-
* This module provides timestamping functionality using the
|
|
7
|
+
* This module provides timestamping functionality using the NeoZip Token Service API,
|
|
8
8
|
* similar to OpenTimestamps but using Ethereum blockchain.
|
|
9
9
|
*
|
|
10
10
|
* Key Features:
|
|
11
|
-
* - Ethereum blockchain timestamping via
|
|
11
|
+
* - Ethereum blockchain timestamping via NeoZip Token Service
|
|
12
12
|
* - Merkle root calculation and verification
|
|
13
13
|
* - ZIP file integration for timestamp metadata
|
|
14
14
|
* - Support for immediate, batched, and transferable modes
|
|
15
15
|
*
|
|
16
|
-
* @fileoverview
|
|
16
|
+
* @fileoverview NeoZip Token Service API utilities for blockchain timestamping
|
|
17
17
|
* @author NeoWare Inc.
|
|
18
18
|
*/
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -35,7 +35,7 @@ const servers_1 = require("../constants/servers");
|
|
|
35
35
|
const metadata_1 = require("../constants/metadata");
|
|
36
36
|
const crc32_1 = require("../utils/crc32");
|
|
37
37
|
const ethers_1 = require("ethers");
|
|
38
|
-
const
|
|
38
|
+
const TokenServiceHelpers_1 = require("./TokenServiceHelpers");
|
|
39
39
|
exports.CMP_METHOD = { STORED: 0, DEFLATED: 8 };
|
|
40
40
|
/**
|
|
41
41
|
* Safely extracts merkle root from a ZIP file.
|
|
@@ -121,9 +121,9 @@ async function extractTimestampData(zip, entry) {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
|
-
* Creates a timestamp by submitting a merkle root to the
|
|
124
|
+
* Creates a timestamp by submitting a merkle root to the NeoZip Token Service.
|
|
125
125
|
*
|
|
126
|
-
* Submits a SHA-256 digest (merkle root) to the
|
|
126
|
+
* Submits a SHA-256 digest (merkle root) to the NeoZip Token Service API for blockchain
|
|
127
127
|
* timestamping. The digest is typically the merkle root of a ZIP file's contents.
|
|
128
128
|
*
|
|
129
129
|
* The function uses `submitDigest` internally and converts the response to a
|
|
@@ -132,7 +132,7 @@ async function extractTimestampData(zip, entry) {
|
|
|
132
132
|
* @param merkleRoot - A 64-character hexadecimal string representing the SHA-256 hash
|
|
133
133
|
* @param options - Configuration options for timestamp creation
|
|
134
134
|
* @param options.recipientEmail - Optional email address for notifications
|
|
135
|
-
* @param options.serverUrl - Optional
|
|
135
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
136
136
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
137
137
|
* @param options.mode - **Deprecated**: For backward compatibility only, not sent to API
|
|
138
138
|
* @param options.recipientAddress - **Deprecated**: For backward compatibility only, not sent to API
|
|
@@ -159,24 +159,24 @@ async function createTimestamp(merkleRoot, options = {}) {
|
|
|
159
159
|
throw new Error('Invalid merkle root format. Must be a 64-character hex string (SHA-256)');
|
|
160
160
|
}
|
|
161
161
|
try {
|
|
162
|
-
const serverUrl = (0, servers_1.
|
|
162
|
+
const serverUrl = (0, servers_1.getTokenServiceUrl)(options);
|
|
163
163
|
if (options.debug) {
|
|
164
|
-
console.log('[
|
|
165
|
-
console.log('[
|
|
166
|
-
console.log('[
|
|
167
|
-
console.log('[
|
|
168
|
-
console.log('[
|
|
169
|
-
console.log('[
|
|
164
|
+
console.log('[TokenService] ========================================');
|
|
165
|
+
console.log('[TokenService] Creating Timestamp');
|
|
166
|
+
console.log('[TokenService] ========================================');
|
|
167
|
+
console.log('[TokenService] Server URL:', serverUrl);
|
|
168
|
+
console.log('[TokenService] Merkle Root:', merkleRoot);
|
|
169
|
+
console.log('[TokenService] ----------------------------------------');
|
|
170
170
|
}
|
|
171
171
|
// Use submitDigest helper (only digest, email, and chainId are sent to API)
|
|
172
172
|
// Note: mode, recipientAddress, and metadata options are for backward compatibility
|
|
173
|
-
// but are not actually sent to the
|
|
174
|
-
const response = await (0,
|
|
173
|
+
// but are not actually sent to the NeoZip Token Service API
|
|
174
|
+
const response = await (0, TokenServiceHelpers_1.submitDigest)(merkleRoot, options.recipientEmail, undefined, // chainId - let server determine
|
|
175
175
|
{ serverUrl, debug: options.debug });
|
|
176
176
|
if (!response.success) {
|
|
177
177
|
const errorMsg = response.error || 'Failed to create timestamp';
|
|
178
178
|
if (options.debug) {
|
|
179
|
-
console.error('[
|
|
179
|
+
console.error('[TokenService] Error in response:', errorMsg);
|
|
180
180
|
}
|
|
181
181
|
throw new Error(errorMsg);
|
|
182
182
|
}
|
|
@@ -204,37 +204,37 @@ async function createTimestamp(merkleRoot, options = {}) {
|
|
|
204
204
|
submittedAt: new Date().toISOString(),
|
|
205
205
|
};
|
|
206
206
|
if (options.debug) {
|
|
207
|
-
console.log('[
|
|
207
|
+
console.log('[TokenService] Processed Timestamp Metadata:');
|
|
208
208
|
console.log(JSON.stringify(timestampMetadata, null, 2));
|
|
209
|
-
console.log('[
|
|
209
|
+
console.log('[TokenService] ========================================\n');
|
|
210
210
|
}
|
|
211
211
|
return timestampMetadata;
|
|
212
212
|
}
|
|
213
213
|
catch (error) {
|
|
214
214
|
if (options.debug) {
|
|
215
|
-
console.error('[
|
|
216
|
-
console.error('[
|
|
217
|
-
console.error('[
|
|
215
|
+
console.error('[TokenService] ========================================');
|
|
216
|
+
console.error('[TokenService] Error creating timestamp:');
|
|
217
|
+
console.error('[TokenService]', error instanceof Error ? error.message : String(error));
|
|
218
218
|
if (error instanceof Error && error.stack) {
|
|
219
|
-
console.error('[
|
|
219
|
+
console.error('[TokenService] Stack trace:');
|
|
220
220
|
console.error(error.stack);
|
|
221
221
|
}
|
|
222
|
-
console.error('[
|
|
222
|
+
console.error('[TokenService] ========================================\n');
|
|
223
223
|
}
|
|
224
224
|
throw error;
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
/**
|
|
228
|
-
* Verifies a timestamp against the
|
|
228
|
+
* Verifies a timestamp against the NeoZip Token Service.
|
|
229
229
|
*
|
|
230
230
|
* Verifies that a timestamp has been confirmed on the blockchain by checking
|
|
231
|
-
* with the
|
|
231
|
+
* with the NeoZip Token Service API. Uses `verifyDigest` internally and converts the
|
|
232
232
|
* response to an `EthTimestampVerifyResult` format.
|
|
233
233
|
*
|
|
234
234
|
* @param merkleRoot - The SHA-256 digest (merkle root) to verify
|
|
235
235
|
* @param timestampData - The timestamp metadata from the ZIP file (contains batchId, chainId, etc.)
|
|
236
236
|
* @param options - Configuration options for verification
|
|
237
|
-
* @param options.serverUrl - Optional
|
|
237
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
238
238
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
239
239
|
* @returns Promise resolving to verification result with status and blockchain details
|
|
240
240
|
*
|
|
@@ -255,25 +255,25 @@ async function createTimestamp(merkleRoot, options = {}) {
|
|
|
255
255
|
*/
|
|
256
256
|
async function verifyTimestamp(merkleRoot, timestampData, options = {}) {
|
|
257
257
|
try {
|
|
258
|
-
const serverUrl = (0, servers_1.
|
|
258
|
+
const serverUrl = (0, servers_1.getTokenServiceUrl)(options);
|
|
259
259
|
if (options.debug) {
|
|
260
|
-
console.log('[
|
|
261
|
-
console.log('[
|
|
262
|
-
console.log('[
|
|
263
|
-
console.log('[
|
|
264
|
-
console.log('[
|
|
265
|
-
console.log('[
|
|
260
|
+
console.log('[TokenService] ========================================');
|
|
261
|
+
console.log('[TokenService] Verifying Timestamp');
|
|
262
|
+
console.log('[TokenService] ========================================');
|
|
263
|
+
console.log('[TokenService] Server URL:', serverUrl);
|
|
264
|
+
console.log('[TokenService] Merkle Root:', merkleRoot);
|
|
265
|
+
console.log('[TokenService] Timestamp Data:');
|
|
266
266
|
console.log(JSON.stringify(timestampData, null, 2));
|
|
267
|
-
console.log('[
|
|
267
|
+
console.log('[TokenService] ----------------------------------------');
|
|
268
268
|
}
|
|
269
269
|
// Use verifyDigest helper
|
|
270
|
-
const response = await (0,
|
|
270
|
+
const response = await (0, TokenServiceHelpers_1.verifyDigest)(merkleRoot, timestampData.chainId, timestampData.batchId || undefined, undefined, // client - use default
|
|
271
271
|
{ serverUrl, debug: options.debug });
|
|
272
272
|
if (!response.success) {
|
|
273
273
|
const errorMsg = response.error || 'Verification failed';
|
|
274
274
|
if (options.debug) {
|
|
275
|
-
console.error('[
|
|
276
|
-
console.log('[
|
|
275
|
+
console.error('[TokenService] Error in response:', errorMsg);
|
|
276
|
+
console.log('[TokenService] ========================================\n');
|
|
277
277
|
}
|
|
278
278
|
return {
|
|
279
279
|
status: 'error',
|
|
@@ -293,9 +293,9 @@ async function verifyTimestamp(merkleRoot, timestampData, options = {}) {
|
|
|
293
293
|
timestamp: response.timestamp,
|
|
294
294
|
};
|
|
295
295
|
if (options.debug) {
|
|
296
|
-
console.log('[
|
|
296
|
+
console.log('[TokenService] Verification Result (VALID):');
|
|
297
297
|
console.log(JSON.stringify(result, null, 2));
|
|
298
|
-
console.log('[
|
|
298
|
+
console.log('[TokenService] ========================================\n');
|
|
299
299
|
}
|
|
300
300
|
return result;
|
|
301
301
|
}
|
|
@@ -306,9 +306,9 @@ async function verifyTimestamp(merkleRoot, timestampData, options = {}) {
|
|
|
306
306
|
message: 'Timestamp is pending confirmation',
|
|
307
307
|
};
|
|
308
308
|
if (options.debug) {
|
|
309
|
-
console.log('[
|
|
309
|
+
console.log('[TokenService] Verification Result (PENDING):');
|
|
310
310
|
console.log(JSON.stringify(pendingResult, null, 2));
|
|
311
|
-
console.log('[
|
|
311
|
+
console.log('[TokenService] ========================================\n');
|
|
312
312
|
}
|
|
313
313
|
return pendingResult;
|
|
314
314
|
}
|
|
@@ -318,14 +318,14 @@ async function verifyTimestamp(merkleRoot, timestampData, options = {}) {
|
|
|
318
318
|
message: error instanceof Error ? error.message : 'Verification error',
|
|
319
319
|
};
|
|
320
320
|
if (options.debug) {
|
|
321
|
-
console.error('[
|
|
322
|
-
console.error('[
|
|
323
|
-
console.error('[
|
|
321
|
+
console.error('[TokenService] ========================================');
|
|
322
|
+
console.error('[TokenService] Error during verification:');
|
|
323
|
+
console.error('[TokenService]', error instanceof Error ? error.message : String(error));
|
|
324
324
|
if (error instanceof Error && error.stack) {
|
|
325
|
-
console.error('[
|
|
325
|
+
console.error('[TokenService] Stack trace:');
|
|
326
326
|
console.error(error.stack);
|
|
327
327
|
}
|
|
328
|
-
console.error('[
|
|
328
|
+
console.error('[TokenService] ========================================\n');
|
|
329
329
|
}
|
|
330
330
|
return errorResult;
|
|
331
331
|
}
|
|
@@ -334,12 +334,12 @@ async function verifyTimestamp(merkleRoot, timestampData, options = {}) {
|
|
|
334
334
|
* Verifies a timestamp within a ZIP file.
|
|
335
335
|
*
|
|
336
336
|
* Extracts the merkle root and timestamp metadata from a ZIP file, then verifies
|
|
337
|
-
* the timestamp against the
|
|
337
|
+
* the timestamp against the NeoZip Token Service API. This is a convenience function that
|
|
338
338
|
* combines `getEthTimestampEntry`, `extractTimestampData`, and `verifyTimestamp`.
|
|
339
339
|
*
|
|
340
340
|
* @param zip - A ZipkitLike instance representing the timestamped ZIP file
|
|
341
341
|
* @param options - Configuration options for verification
|
|
342
|
-
* @param options.serverUrl - Optional
|
|
342
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
343
343
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
344
344
|
* @returns Promise resolving to verification result
|
|
345
345
|
*
|
|
@@ -439,7 +439,7 @@ function createTimestampMetadataEntry(zipkit, timestampMetadata) {
|
|
|
439
439
|
/**
|
|
440
440
|
* Creates timestamp metadata for a ZIP file.
|
|
441
441
|
*
|
|
442
|
-
* Extracts the merkle root from a ZIP file and submits it to the
|
|
442
|
+
* Extracts the merkle root from a ZIP file and submits it to the NeoZip Token Service
|
|
443
443
|
* for timestamping. Returns the timestamp metadata that can then be added to
|
|
444
444
|
* the ZIP file using `createTimestampMetadataEntry`.
|
|
445
445
|
*
|
|
@@ -450,7 +450,7 @@ function createTimestampMetadataEntry(zipkit, timestampMetadata) {
|
|
|
450
450
|
* @param zipkit - A ZipkitLike instance representing the ZIP file to timestamp
|
|
451
451
|
* @param options - Configuration options for timestamp creation
|
|
452
452
|
* @param options.recipientEmail - Optional email address for notifications
|
|
453
|
-
* @param options.serverUrl - Optional
|
|
453
|
+
* @param options.serverUrl - Optional NeoZip Token Service URL (defaults to `TOKEN_SERVICE_URL` env var or `https://testnet.token-service.neozip.io`)
|
|
454
454
|
* @param options.debug - Enable debug logging (defaults to `false`)
|
|
455
455
|
* @returns Promise resolving to timestamp metadata, or `null` if creation fails
|
|
456
456
|
* @throws {Error} If merkle root is not found in ZIP or timestamp creation fails
|
|
@@ -626,9 +626,9 @@ function getMetadataFileNames() {
|
|
|
626
626
|
// Proof Verification Utilities
|
|
627
627
|
// ============================================================================
|
|
628
628
|
/**
|
|
629
|
-
* Proof verification utilities for
|
|
629
|
+
* Proof verification utilities for NeoZip Token Service timestamps.
|
|
630
630
|
*
|
|
631
|
-
* The
|
|
631
|
+
* The NeoZip Token Service provides merkle proofs as an array of bytes32 hex strings.
|
|
632
632
|
* This module provides local proof verification in the same style as
|
|
633
633
|
* OpenZeppelin's MerkleProof (sorted pair hashing).
|
|
634
634
|
*/
|
|
@@ -651,7 +651,7 @@ function hashPair(a, b) {
|
|
|
651
651
|
* Verifies a Merkle proof locally using sorted pair hashing (keccak256).
|
|
652
652
|
*
|
|
653
653
|
* Performs local verification of a Merkle proof without requiring access to
|
|
654
|
-
* the
|
|
654
|
+
* the NeoZip Token Service or blockchain. Uses the same sorted pair hashing algorithm
|
|
655
655
|
* as OpenZeppelin's MerkleProof library, ensuring compatibility with on-chain
|
|
656
656
|
* verification.
|
|
657
657
|
*
|
|
@@ -693,4 +693,4 @@ function verifyMerkleProofLocal(digest, batchMerkleRoot, merkleProof) {
|
|
|
693
693
|
return false;
|
|
694
694
|
}
|
|
695
695
|
}
|
|
696
|
-
//# sourceMappingURL=
|
|
696
|
+
//# sourceMappingURL=TokenServiceAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenServiceAPI.js","sourceRoot":"","sources":["../../src/token-service/TokenServiceAPI.ts"],"names":[],"mappings":"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"}
|