neozip-blockchain 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +189 -0
- package/dist/browser/TokenVerifierBrowser.d.ts +63 -0
- package/dist/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/browser/TokenVerifierBrowser.js +358 -0
- package/dist/browser/TokenVerifierBrowser.js.map +1 -0
- package/dist/browser/WalletManagerBrowser.d.ts +99 -0
- package/dist/browser/WalletManagerBrowser.d.ts.map +1 -0
- package/dist/browser/WalletManagerBrowser.js +434 -0
- package/dist/browser/WalletManagerBrowser.js.map +1 -0
- package/dist/browser/ZipkitMinterBrowser.d.ts +59 -0
- package/dist/browser/ZipkitMinterBrowser.d.ts.map +1 -0
- package/dist/browser/ZipkitMinterBrowser.js +337 -0
- package/dist/browser/ZipkitMinterBrowser.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +19 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +21 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/metadata.d.ts +18 -0
- package/dist/constants/metadata.d.ts.map +1 -0
- package/dist/constants/metadata.js +33 -0
- package/dist/constants/metadata.js.map +1 -0
- package/dist/constants/servers.d.ts +38 -0
- package/dist/constants/servers.d.ts.map +1 -0
- package/dist/constants/servers.js +54 -0
- package/dist/constants/servers.js.map +1 -0
- package/dist/core/ContractVersionRegistry.d.ts +63 -0
- package/dist/core/ContractVersionRegistry.d.ts.map +1 -0
- package/dist/core/ContractVersionRegistry.js +128 -0
- package/dist/core/ContractVersionRegistry.js.map +1 -0
- package/dist/core/WalletManager.d.ts +123 -0
- package/dist/core/WalletManager.d.ts.map +1 -0
- package/dist/core/WalletManager.js +360 -0
- package/dist/core/WalletManager.js.map +1 -0
- package/dist/core/ZipkitMinter.d.ts +155 -0
- package/dist/core/ZipkitMinter.d.ts.map +1 -0
- package/dist/core/ZipkitMinter.js +625 -0
- package/dist/core/ZipkitMinter.js.map +1 -0
- package/dist/core/ZipkitVerifier.d.ts +252 -0
- package/dist/core/ZipkitVerifier.d.ts.map +1 -0
- package/dist/core/ZipkitVerifier.js +1370 -0
- package/dist/core/ZipkitVerifier.js.map +1 -0
- package/dist/core/adapters/AdapterFactory.d.ts +22 -0
- package/dist/core/adapters/AdapterFactory.d.ts.map +1 -0
- package/dist/core/adapters/AdapterFactory.js +62 -0
- package/dist/core/adapters/AdapterFactory.js.map +1 -0
- package/dist/core/adapters/ContractVersionAdapter.d.ts +96 -0
- package/dist/core/adapters/ContractVersionAdapter.d.ts.map +1 -0
- package/dist/core/adapters/ContractVersionAdapter.js +9 -0
- package/dist/core/adapters/ContractVersionAdapter.js.map +1 -0
- package/dist/core/adapters/V2_10Adapter.d.ts +24 -0
- package/dist/core/adapters/V2_10Adapter.d.ts.map +1 -0
- package/dist/core/adapters/V2_10Adapter.js +87 -0
- package/dist/core/adapters/V2_10Adapter.js.map +1 -0
- package/dist/core/adapters/V2_11Adapter.d.ts +24 -0
- package/dist/core/adapters/V2_11Adapter.d.ts.map +1 -0
- package/dist/core/adapters/V2_11Adapter.js +87 -0
- package/dist/core/adapters/V2_11Adapter.js.map +1 -0
- package/dist/core/adapters/V2_50Adapter.d.ts +105 -0
- package/dist/core/adapters/V2_50Adapter.d.ts.map +1 -0
- package/dist/core/adapters/V2_50Adapter.js +263 -0
- package/dist/core/adapters/V2_50Adapter.js.map +1 -0
- package/dist/core/contracts.d.ts +169 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +731 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/index.d.ts +24 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +82 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/node/WalletManagerNode.d.ts +47 -0
- package/dist/node/WalletManagerNode.d.ts.map +1 -0
- package/dist/node/WalletManagerNode.js +203 -0
- package/dist/node/WalletManagerNode.js.map +1 -0
- package/dist/node/index.d.ts +12 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +21 -0
- package/dist/node/index.js.map +1 -0
- package/dist/ots/ZipkitOTS.d.ts +152 -0
- package/dist/ots/ZipkitOTS.d.ts.map +1 -0
- package/dist/ots/ZipkitOTS.js +544 -0
- package/dist/ots/ZipkitOTS.js.map +1 -0
- package/dist/ots/index.d.ts +9 -0
- package/dist/ots/index.d.ts.map +1 -0
- package/dist/ots/index.js +25 -0
- package/dist/ots/index.js.map +1 -0
- package/dist/types/index.d.ts +84 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +37 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/Logger.d.ts +73 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +156 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/crc32.d.ts +6 -0
- package/dist/utils/crc32.d.ts.map +1 -0
- package/dist/utils/crc32.js +23 -0
- package/dist/utils/crc32.js.map +1 -0
- package/dist/zipstamp-server/CalendarManager.d.ts +238 -0
- package/dist/zipstamp-server/CalendarManager.d.ts.map +1 -0
- package/dist/zipstamp-server/CalendarManager.js +364 -0
- package/dist/zipstamp-server/CalendarManager.js.map +1 -0
- package/dist/zipstamp-server/ZipstampServerAPI.d.ts +427 -0
- package/dist/zipstamp-server/ZipstampServerAPI.d.ts.map +1 -0
- package/dist/zipstamp-server/ZipstampServerAPI.js +696 -0
- package/dist/zipstamp-server/ZipstampServerAPI.js.map +1 -0
- package/dist/zipstamp-server/ZipstampServerClient.d.ts +590 -0
- package/dist/zipstamp-server/ZipstampServerClient.d.ts.map +1 -0
- package/dist/zipstamp-server/ZipstampServerClient.js +433 -0
- package/dist/zipstamp-server/ZipstampServerClient.js.map +1 -0
- package/dist/zipstamp-server/ZipstampServerHelpers.d.ts +430 -0
- package/dist/zipstamp-server/ZipstampServerHelpers.d.ts.map +1 -0
- package/dist/zipstamp-server/ZipstampServerHelpers.js +503 -0
- package/dist/zipstamp-server/ZipstampServerHelpers.js.map +1 -0
- package/dist/zipstamp-server/index.d.ts +24 -0
- package/dist/zipstamp-server/index.d.ts.map +1 -0
- package/dist/zipstamp-server/index.js +67 -0
- package/dist/zipstamp-server/index.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ZipkitVerifier - Handles NFT token verification for ZIP files
|
|
4
|
+
* Verifier API for NZIP-NFT smart contract.
|
|
5
|
+
*/
|
|
6
|
+
import { type ContractConfig } from './contracts';
|
|
7
|
+
import type { TokenMetadata } from '../types';
|
|
8
|
+
export interface VerificationOptions {
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
skipHash?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Enable RPC consensus mechanism for enhanced security
|
|
13
|
+
* When enabled, queries multiple RPC endpoints and requires majority agreement
|
|
14
|
+
* Default: false (disabled for quick validation)
|
|
15
|
+
*/
|
|
16
|
+
rpcConsensus?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Minimum number of RPC endpoints that must agree (when consensus enabled)
|
|
19
|
+
* Default: 2 (majority of 3 endpoints)
|
|
20
|
+
*/
|
|
21
|
+
minRpcConsensus?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Validate chainId from RPC matches expected chainId
|
|
24
|
+
* Default: true
|
|
25
|
+
*/
|
|
26
|
+
validateRpcChainId?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Validate contract version matches on-chain version
|
|
29
|
+
* When enabled, queries on-chain version and validates it matches metadata version (or used version for legacy files)
|
|
30
|
+
* Default: true (enabled for security)
|
|
31
|
+
*/
|
|
32
|
+
validateContractVersion?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface VerificationResult {
|
|
35
|
+
success: boolean;
|
|
36
|
+
message: string;
|
|
37
|
+
tokenMetadata?: TokenMetadata;
|
|
38
|
+
verificationDetails?: {
|
|
39
|
+
tokenId: string;
|
|
40
|
+
network: string;
|
|
41
|
+
contractAddress: string;
|
|
42
|
+
merkleRoot: string;
|
|
43
|
+
mintDate: string;
|
|
44
|
+
calculatedMerkleRoot?: string;
|
|
45
|
+
declaredMerkleRoot?: string;
|
|
46
|
+
merkleRootMatch?: boolean;
|
|
47
|
+
onChainValid?: boolean;
|
|
48
|
+
currentWallet?: string;
|
|
49
|
+
};
|
|
50
|
+
errorDetails?: {
|
|
51
|
+
errorType: 'METADATA_ERROR' | 'MERKLE_ERROR' | 'NETWORK_ERROR' | 'CONTRACT_ERROR';
|
|
52
|
+
networkName?: string;
|
|
53
|
+
rpcUrl?: string;
|
|
54
|
+
contractAddress?: string;
|
|
55
|
+
tokenId?: string;
|
|
56
|
+
merkleRoot?: string;
|
|
57
|
+
calculatedMerkleRoot?: string;
|
|
58
|
+
onChainMerkleRoot?: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface EnhancedVerificationResult extends VerificationResult {
|
|
62
|
+
retryAttempts?: number;
|
|
63
|
+
processingTime?: number;
|
|
64
|
+
timestamp?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface BatchVerificationResult {
|
|
67
|
+
success: boolean;
|
|
68
|
+
totalTokens: number;
|
|
69
|
+
successfulVerifications: number;
|
|
70
|
+
failedVerifications: number;
|
|
71
|
+
results: EnhancedVerificationResult[];
|
|
72
|
+
processingTime: number;
|
|
73
|
+
}
|
|
74
|
+
export interface VerificationJob {
|
|
75
|
+
tokenId: string;
|
|
76
|
+
merkleRoot?: string;
|
|
77
|
+
priority?: 'low' | 'normal' | 'high';
|
|
78
|
+
retryCount?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Blockchain Token Verifier for ZIP files
|
|
82
|
+
*/
|
|
83
|
+
export declare class ZipkitVerifier {
|
|
84
|
+
private debug;
|
|
85
|
+
protected maxRetries: number;
|
|
86
|
+
protected retryDelay: number;
|
|
87
|
+
protected batchDelay: number;
|
|
88
|
+
constructor(options?: VerificationOptions & {
|
|
89
|
+
maxRetries?: number;
|
|
90
|
+
retryDelay?: number;
|
|
91
|
+
batchDelay?: number;
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Extracts and normalizes token metadata from a tokenized ZIP archive.
|
|
95
|
+
*
|
|
96
|
+
* Handles field name variations across different token versions:
|
|
97
|
+
* - chainId vs networkChainId
|
|
98
|
+
* - timestamp vs mintedAt
|
|
99
|
+
* - Validates required fields
|
|
100
|
+
*
|
|
101
|
+
* @param zipkit - ZipkitNode instance with loaded archive
|
|
102
|
+
* @returns Normalized TokenMetadata or null if not tokenized
|
|
103
|
+
* @throws Error if TOKEN file exists but is invalid
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* import { ZipkitNode } from 'neozipkit/node';
|
|
108
|
+
* import { ZipkitVerifier } from 'neozipkit/blockchain';
|
|
109
|
+
*
|
|
110
|
+
* const zipkit = new ZipkitNode();
|
|
111
|
+
* await zipkit.loadZipFile('archive.nzip');
|
|
112
|
+
* const metadata = await ZipkitVerifier.extractTokenMetadata(zipkit);
|
|
113
|
+
* if (metadata) {
|
|
114
|
+
* console.log(`Token ID: ${metadata.tokenId}`);
|
|
115
|
+
* console.log(`Network: ${metadata.network}`);
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
static extractTokenMetadata(zipkit: any): Promise<TokenMetadata | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Instance method for convenience - extracts token metadata from loaded archive
|
|
122
|
+
* @param zipkit - ZipkitNode instance with loaded archive
|
|
123
|
+
* @returns Normalized TokenMetadata or null if not tokenized
|
|
124
|
+
*/
|
|
125
|
+
getTokenMetadata(zipkit: any): Promise<TokenMetadata | null>;
|
|
126
|
+
/**
|
|
127
|
+
* Query contract version from blockchain
|
|
128
|
+
* @param contractAddress - Contract address
|
|
129
|
+
* @param networkConfig - Network configuration with RPC URLs
|
|
130
|
+
* @param rpcUrlIndex - Optional RPC URL index (default: 0)
|
|
131
|
+
* @returns Contract version string or null if query fails
|
|
132
|
+
*/
|
|
133
|
+
private queryContractVersion;
|
|
134
|
+
/**
|
|
135
|
+
* Extract and validate token metadata from ZIP
|
|
136
|
+
*/
|
|
137
|
+
extractTokenMetadata(tokenBuffer: Buffer): Promise<{
|
|
138
|
+
success: boolean;
|
|
139
|
+
metadata?: TokenMetadata;
|
|
140
|
+
error?: string;
|
|
141
|
+
}>;
|
|
142
|
+
/**
|
|
143
|
+
* Map network name to RPC configuration using contracts.ts (single source of truth)
|
|
144
|
+
* REQUIRES chainId for security - network names are ambiguous and can match wrong networks
|
|
145
|
+
*
|
|
146
|
+
* @param networkName Network name (for logging/display purposes only)
|
|
147
|
+
* @param chainId Chain ID (REQUIRED - must be provided)
|
|
148
|
+
* @returns Network configuration or error if chainId is missing or invalid
|
|
149
|
+
*/
|
|
150
|
+
private getNetworkConfig;
|
|
151
|
+
/**
|
|
152
|
+
* Perform merkle root comparison
|
|
153
|
+
* Uses direct string comparison - merkle roots are hex strings and must match exactly
|
|
154
|
+
* Case-sensitive comparison ensures no encoding issues or false positives
|
|
155
|
+
*/
|
|
156
|
+
private compareMerkleRoots;
|
|
157
|
+
/**
|
|
158
|
+
* Query multiple RPC endpoints with consensus mechanism
|
|
159
|
+
* Returns data only if majority of endpoints agree
|
|
160
|
+
*/
|
|
161
|
+
private queryMultipleRPCsWithConsensus;
|
|
162
|
+
/**
|
|
163
|
+
* Verify token against blockchain
|
|
164
|
+
* @param rpcUrlIndex Optional index of RPC URL to use (default: 0)
|
|
165
|
+
* @param options Optional verification options including RPC consensus settings
|
|
166
|
+
*/
|
|
167
|
+
verifyOnChain(tokenId: string, contractAddress: string, networkConfig: ContractConfig, merkleRoot: string, rpcUrlIndex?: number, options?: VerificationOptions, metadataContractVersion?: string): Promise<{
|
|
168
|
+
success: boolean;
|
|
169
|
+
isValid?: boolean;
|
|
170
|
+
onChainMerkleRoot?: string;
|
|
171
|
+
onChainTokenizationTime?: number;
|
|
172
|
+
onChainCreator?: string;
|
|
173
|
+
onChainBlockNumber?: number;
|
|
174
|
+
error?: string;
|
|
175
|
+
rpcUrl?: string;
|
|
176
|
+
}>;
|
|
177
|
+
/**
|
|
178
|
+
* Complete verification process
|
|
179
|
+
* @param rpcUrlIndex Optional index of RPC URL to use (default: 0)
|
|
180
|
+
*/
|
|
181
|
+
verifyToken(tokenMetadata: TokenMetadata, calculatedMerkleRoot: string | null, options?: VerificationOptions, rpcUrlIndex?: number): Promise<VerificationResult>;
|
|
182
|
+
/**
|
|
183
|
+
* Verify token with retry logic and exponential backoff
|
|
184
|
+
* @param tokenMetadata Token metadata to verify
|
|
185
|
+
* @param calculatedMerkleRoot Calculated merkle root from archive
|
|
186
|
+
* @param maxRetries Maximum number of retry attempts (default: uses instance maxRetries)
|
|
187
|
+
* @returns Enhanced verification result with retry information
|
|
188
|
+
*/
|
|
189
|
+
verifyTokenWithRetry(tokenMetadata: TokenMetadata, calculatedMerkleRoot: string | null, maxRetries?: number): Promise<EnhancedVerificationResult>;
|
|
190
|
+
/**
|
|
191
|
+
* Batch verification for multiple tokens with rate limiting
|
|
192
|
+
* @param tokens Array of token metadata and merkle roots to verify
|
|
193
|
+
* @param options Batch processing options
|
|
194
|
+
* @returns Batch verification result
|
|
195
|
+
*/
|
|
196
|
+
verifyBatch(tokens: Array<{
|
|
197
|
+
tokenMetadata: TokenMetadata;
|
|
198
|
+
calculatedMerkleRoot: string | null;
|
|
199
|
+
}>, options?: {
|
|
200
|
+
parallel?: boolean;
|
|
201
|
+
maxConcurrent?: number;
|
|
202
|
+
}): Promise<BatchVerificationResult>;
|
|
203
|
+
/**
|
|
204
|
+
* Verify tokens in parallel with concurrency control
|
|
205
|
+
*/
|
|
206
|
+
private verifyBatchParallel;
|
|
207
|
+
/**
|
|
208
|
+
* Verify tokens sequentially with rate limiting
|
|
209
|
+
*/
|
|
210
|
+
private verifyBatchSequential;
|
|
211
|
+
/**
|
|
212
|
+
* Process verification jobs with priority queue
|
|
213
|
+
* @param jobs Array of verification jobs
|
|
214
|
+
* @param options Processing options
|
|
215
|
+
* @returns Batch verification result
|
|
216
|
+
*/
|
|
217
|
+
processVerificationJobs(jobs: VerificationJob[], options?: {
|
|
218
|
+
maxConcurrent?: number;
|
|
219
|
+
priorityOrder?: boolean;
|
|
220
|
+
getTokenMetadata?: (tokenId: string) => Promise<TokenMetadata | null>;
|
|
221
|
+
getCalculatedMerkleRoot?: (tokenId: string) => Promise<string | null>;
|
|
222
|
+
}): Promise<BatchVerificationResult>;
|
|
223
|
+
/**
|
|
224
|
+
* Sort verification jobs by priority
|
|
225
|
+
*/
|
|
226
|
+
private sortJobsByPriority;
|
|
227
|
+
/**
|
|
228
|
+
* Calculate retry delay with exponential backoff
|
|
229
|
+
*/
|
|
230
|
+
protected calculateRetryDelay(attempt: number): number;
|
|
231
|
+
/**
|
|
232
|
+
* Utility method for delays
|
|
233
|
+
*/
|
|
234
|
+
protected delay(ms: number): Promise<void>;
|
|
235
|
+
/**
|
|
236
|
+
* Get verification statistics
|
|
237
|
+
*/
|
|
238
|
+
getVerificationStats(): {
|
|
239
|
+
maxRetries: number;
|
|
240
|
+
retryDelay: number;
|
|
241
|
+
batchDelay: number;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Update verification configuration
|
|
245
|
+
*/
|
|
246
|
+
updateConfig(config: {
|
|
247
|
+
maxRetries?: number;
|
|
248
|
+
retryDelay?: number;
|
|
249
|
+
batchDelay?: number;
|
|
250
|
+
}): void;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=ZipkitVerifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipkitVerifier.d.ts","sourceRoot":"","sources":["../../src/core/ZipkitVerifier.ts"],"names":[],"mappings":"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"}
|