neozipkit 0.2.1 → 0.3.0
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 +410 -186
- package/contracts/ABI.txt +889 -0
- package/contracts/Bytecode.txt +1 -0
- package/contracts/COMPILATION_NOTES.md +59 -0
- package/contracts/QUICK_DEPLOY.md +286 -0
- package/contracts/README.md +235 -131
- package/contracts/VERIFICATION.md +308 -0
- package/contracts/deploy-interactive.js +448 -0
- package/contracts/deployment-arbitrum-sepolia.json +12 -0
- package/contracts/deployment-arbitrum.json +12 -0
- package/contracts/deployment-eth-sepolia.json +12 -0
- package/contracts/hardhat.config.js +114 -0
- package/contracts/package.json +20 -0
- package/contracts/scripts/compile-and-extract.js +119 -0
- package/contracts/scripts/verify-contract.js +223 -0
- package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
- package/contracts/src/NZIP-NFT.sol +9 -15
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
- package/dist/blockchain/browser/index.d.ts +11 -0
- package/dist/blockchain/browser/index.d.ts.map +1 -0
- package/dist/blockchain/browser/index.js +16 -0
- package/dist/blockchain/browser/index.js.map +1 -0
- package/dist/blockchain/core/WalletManager.d.ts +124 -0
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
- package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitMinter.js +548 -0
- package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
- package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
- package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.js +632 -0
- package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
- package/dist/blockchain/core/contracts.d.ts +83 -0
- package/dist/blockchain/core/contracts.d.ts.map +1 -0
- package/dist/blockchain/core/contracts.js +341 -0
- package/dist/blockchain/core/contracts.js.map +1 -0
- package/dist/blockchain/core/index.d.ts +12 -0
- package/dist/blockchain/core/index.d.ts.map +1 -0
- package/dist/blockchain/core/index.js +59 -0
- package/dist/blockchain/core/index.js.map +1 -0
- package/dist/blockchain/index.d.ts +11 -7
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +18 -34
- package/dist/blockchain/index.js.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.js +203 -0
- package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
- package/dist/blockchain/node/index.d.ts +12 -0
- package/dist/blockchain/node/index.d.ts.map +1 -0
- package/dist/blockchain/node/index.js +24 -0
- package/dist/blockchain/node/index.js.map +1 -0
- package/dist/browser/ZipkitBrowser.d.ts +27 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
- package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
- package/dist/browser/ZipkitBrowser.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 +42 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser-esm/index.d.ts +12 -0
- package/dist/browser-esm/index.js +59559 -0
- package/dist/browser-esm/index.js.map +7 -0
- package/dist/browser-umd/index.d.ts +12 -0
- package/dist/browser-umd/index.js +59576 -0
- package/dist/browser-umd/index.js.map +7 -0
- package/dist/browser-umd/index.min.js +63 -0
- package/dist/browser.d.ts +8 -14
- package/dist/browser.js +13 -28
- package/dist/core/ZipCompress.d.ts +99 -0
- package/dist/core/ZipCompress.d.ts.map +1 -0
- package/dist/core/ZipCompress.js +309 -0
- package/dist/core/ZipCompress.js.map +1 -0
- package/dist/core/ZipDecompress.d.ts +58 -0
- package/dist/core/ZipDecompress.d.ts.map +1 -0
- package/dist/core/ZipDecompress.js +172 -0
- package/dist/core/ZipDecompress.js.map +1 -0
- package/dist/{shared → core}/ZipEntry.d.ts +8 -1
- package/dist/core/ZipEntry.d.ts.map +1 -0
- package/dist/{shared → core}/ZipEntry.js +225 -82
- package/dist/core/ZipEntry.js.map +1 -0
- package/dist/core/Zipkit.d.ts +315 -0
- package/dist/core/Zipkit.d.ts.map +1 -0
- package/dist/core/Zipkit.js +647 -0
- package/dist/core/Zipkit.js.map +1 -0
- package/dist/core/components/HashCalculator.d.ts +138 -0
- package/dist/core/components/HashCalculator.d.ts.map +1 -0
- package/dist/core/components/HashCalculator.js +360 -0
- package/dist/core/components/HashCalculator.js.map +1 -0
- package/dist/core/components/Logger.d.ts +73 -0
- package/dist/core/components/Logger.d.ts.map +1 -0
- package/dist/core/components/Logger.js +156 -0
- package/dist/core/components/Logger.js.map +1 -0
- package/dist/core/components/ProgressTracker.d.ts +43 -0
- package/dist/core/components/ProgressTracker.d.ts.map +1 -0
- package/dist/core/components/ProgressTracker.js +112 -0
- package/dist/core/components/ProgressTracker.js.map +1 -0
- package/dist/{shared → core}/components/Support.d.ts +1 -0
- package/dist/core/components/Support.d.ts.map +1 -0
- package/dist/{shared → core}/components/Support.js +1 -0
- package/dist/core/components/Support.js.map +1 -0
- package/dist/{shared → core}/components/Util.d.ts +7 -2
- package/dist/core/components/Util.d.ts.map +1 -0
- package/dist/{shared → core}/components/Util.js +14 -34
- package/dist/core/components/Util.js.map +1 -0
- package/dist/{shared → core}/constants/Errors.d.ts +1 -2
- package/dist/core/constants/Errors.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Errors.js +1 -3
- package/dist/core/constants/Errors.js.map +1 -0
- package/dist/{shared → core}/constants/Headers.d.ts +3 -0
- package/dist/core/constants/Headers.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Headers.js +20 -17
- package/dist/core/constants/Headers.js.map +1 -0
- package/dist/core/encryption/Manager.d.ts +58 -0
- package/dist/core/encryption/Manager.d.ts.map +1 -0
- package/dist/core/encryption/Manager.js +121 -0
- package/dist/core/encryption/Manager.js.map +1 -0
- package/dist/core/encryption/ZipCrypto.d.ts +172 -0
- package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
- package/dist/core/encryption/ZipCrypto.js +554 -0
- package/dist/core/encryption/ZipCrypto.js.map +1 -0
- package/dist/core/encryption/index.d.ts +9 -0
- package/dist/core/encryption/index.d.ts.map +1 -0
- package/dist/core/encryption/index.js +17 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/encryption/types.d.ts +29 -0
- package/dist/core/encryption/types.d.ts.map +1 -0
- package/dist/core/encryption/types.js +12 -0
- package/dist/core/encryption/types.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 +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +8 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -35
- package/dist/index.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +123 -0
- package/dist/node/ZipCompressNode.d.ts.map +1 -0
- package/dist/node/ZipCompressNode.js +576 -0
- package/dist/node/ZipCompressNode.js.map +1 -0
- package/dist/node/ZipDecompressNode.d.ts +120 -0
- package/dist/node/ZipDecompressNode.d.ts.map +1 -0
- package/dist/node/ZipDecompressNode.js +461 -0
- package/dist/node/ZipDecompressNode.js.map +1 -0
- package/dist/node/ZipkitNode.d.ts +406 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -0
- package/dist/node/ZipkitNode.js +1305 -0
- package/dist/node/ZipkitNode.js.map +1 -0
- package/dist/node/index.d.ts +26 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +65 -0
- package/dist/node/index.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +36 -1
- package/dist/types/index.js.map +1 -0
- package/examples/README.md +269 -0
- package/examples/blockchain-tokenize.ts +354 -0
- package/examples/create-zip.ts +172 -0
- package/examples/extract-zip.ts +158 -0
- package/examples/list-zip.ts +161 -0
- package/examples/test-files/data.json +116 -0
- package/examples/test-files/document.md +80 -0
- package/examples/test-files/document.txt +2 -0
- package/examples/test-files/file1.txt +48 -0
- package/examples/test-files/file2.txt +80 -0
- package/examples/tsconfig.json +44 -0
- package/examples/unzip-token.ts +491 -0
- package/examples/verify-tokenized-zip.ts +305 -0
- package/examples/zip-token.ts +604 -0
- package/package.json +108 -24
- package/src/blockchain/README.md +59 -66
- package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
- package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
- package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
- package/src/blockchain/browser/index.ts +13 -0
- package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
- package/src/blockchain/core/ZipkitVerifier.ts +853 -0
- package/src/blockchain/core/contracts.ts +370 -0
- package/src/blockchain/core/index.ts +71 -0
- package/src/blockchain/index.ts +21 -55
- package/src/blockchain/node/WalletManagerNode.ts +171 -0
- package/src/blockchain/node/index.ts +40 -0
- package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
- package/src/browser/index.esm.ts +37 -0
- package/src/browser/index.ts +25 -0
- package/src/core/ZipCompress.ts +398 -0
- package/src/core/ZipDecompress.ts +212 -0
- package/src/{shared → core}/ZipEntry.ts +240 -90
- package/src/core/Zipkit.ts +794 -0
- package/src/core/components/HashCalculator.ts +384 -0
- package/src/core/components/Logger.ts +180 -0
- package/src/core/components/ProgressTracker.ts +134 -0
- package/src/{shared → core}/components/Util.ts +12 -34
- package/src/{shared → core}/constants/Errors.ts +0 -4
- package/src/{shared → core}/constants/Headers.ts +19 -17
- package/src/core/encryption/Manager.ts +137 -0
- package/src/core/encryption/ZipCrypto.ts +650 -0
- package/src/core/encryption/index.ts +15 -0
- package/src/core/encryption/types.ts +33 -0
- package/src/core/index.ts +34 -0
- package/src/core/version.ts +33 -0
- package/src/index.ts +54 -25
- package/src/node/ZipCompressNode.ts +632 -0
- package/src/node/ZipDecompressNode.ts +508 -0
- package/src/node/ZipkitNode.ts +1559 -0
- package/src/node/index.ts +69 -0
- package/src/types/index.ts +131 -1
- package/src/types/modules.d.ts +1 -11
- package/src/types/opentimestamps.d.ts +1 -23
- package/contracts/INTEGRATION.md +0 -338
- package/contracts/NETWORKS.md +0 -156
- package/contracts/NZIP-NFT-bytecode.txt +0 -1
- package/contracts/constants.ts +0 -952
- package/contracts/deploy-bytecode.mjs +0 -94
- package/dist/blockchain/CertificateToken.d.ts +0 -48
- package/dist/blockchain/CertificateToken.js +0 -386
- package/dist/blockchain/ZipKitMinter.js +0 -347
- package/dist/blockchain/ZipKitNFT.d.ts +0 -3
- package/dist/blockchain/ZipKitNFT.js +0 -7
- package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
- package/dist/blockchain/ZipKitVerifier.js +0 -289
- package/dist/blockchain/ZipKitWallet.d.ts +0 -69
- package/dist/blockchain/contracts.d.ts +0 -14
- package/dist/blockchain/contracts.js +0 -77
- package/dist/blockchain/types.d.ts +0 -47
- package/dist/blockchain/types.js +0 -30
- package/dist/browser/ZipKitBrowser.d.ts +0 -18
- package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
- package/dist/browser/ZipKitStampBrowser.js +0 -12
- package/dist/browser-index.d.ts +0 -18
- package/dist/browser-index.js +0 -57
- package/dist/server/ZipKitServer.d.ts +0 -74
- package/dist/server/ZipKitServer.js +0 -310
- package/dist/shared/ZipKit.d.ts +0 -243
- package/dist/shared/ZipKit.js +0 -772
- package/dist/shared/components/CertificateOTS.d.ts +0 -15
- package/dist/shared/components/CertificateOTS.js +0 -116
- package/dist/shared/components/FileSys.d.ts +0 -2
- package/dist/shared/components/FileSys.js +0 -113
- package/dist/shared/components/HashAccumulator.d.ts +0 -55
- package/dist/shared/components/HashAccumulator.js +0 -100
- package/dist/shared/components/ZipCrypto.d.ts +0 -3
- package/dist/shared/components/ZipCrypto.js +0 -78
- package/dist/shared/components/merkleTree.d.ts +0 -66
- package/dist/shared/components/merkleTree.js +0 -136
- package/dist/shared/types/index.d.ts +0 -21
- package/dist/shared/types/index.js +0 -3
- package/dist/shared/types.d.ts +0 -33
- package/dist/shared/types.js +0 -8
- package/dist/shared/version.d.ts +0 -2
- package/dist/shared/version.js +0 -6
- package/src/blockchain/CertificateToken.ts +0 -444
- package/src/blockchain/ZipKitMinter.ts +0 -470
- package/src/blockchain/ZipKitNFT.ts +0 -12
- package/src/blockchain/ZipKitVerifier.ts +0 -382
- package/src/blockchain/contracts.ts +0 -88
- package/src/blockchain/types.ts +0 -91
- package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/README.md +0 -25
- package/src/server/ZipKitServer.ts +0 -305
- package/src/shared/ZipKit.ts +0 -881
- package/src/shared/components/CertificateOTS.ts +0 -132
- package/src/shared/components/FileSys.ts +0 -87
- package/src/shared/components/HashAccumulator.ts +0 -113
- package/src/shared/components/ZipCrypto.ts +0 -91
- package/src/shared/components/merkleTree.ts +0 -162
- package/src/shared/types/index.ts +0 -25
- package/src/shared/types/modules.d.ts +0 -22
- package/src/shared/types/opentimestamps.d.ts +0 -23
- package/src/shared/types.d.ts +0 -8
- package/src/shared/types.ts +0 -43
- package/src/shared/version.ts +0 -3
- /package/src/{shared → core}/components/Support.ts +0 -0
|
@@ -1,52 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
2
|
+
/**
|
|
3
|
+
* Core WalletManager - Platform-agnostic wallet functionality
|
|
4
|
+
* Provides core wallet operations that work in both browser and server environments
|
|
5
|
+
*/
|
|
35
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WalletAnalyzer = exports.
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const readline = __importStar(require("readline"));
|
|
7
|
+
exports.WalletAnalyzer = exports.CoreWalletManager = void 0;
|
|
40
8
|
const ethers_1 = require("ethers");
|
|
41
|
-
const types_1 = require("
|
|
9
|
+
const types_1 = require("../../types");
|
|
10
|
+
const Logger_1 = require("../../core/components/Logger");
|
|
42
11
|
const NZIP_CONTRACT_ABI = [
|
|
43
|
-
"function getZipFileInfo(uint256 tokenId) view returns (tuple(string
|
|
12
|
+
"function getZipFileInfo(uint256 tokenId) view returns (tuple(string merkleRootHash, string ipfsHash, address creator, uint256 creationTimestamp, uint256 tokenizationTime, uint256 blockNumber))",
|
|
44
13
|
"function ownerOf(uint256 tokenId) view returns (address)",
|
|
45
14
|
"function name() view returns (string)",
|
|
46
15
|
"function symbol() view returns (string)",
|
|
47
16
|
"function totalSupply() view returns (uint256)",
|
|
48
17
|
"function getTokensByMerkleRoot(string merkleRootHash) view returns (uint256[])",
|
|
49
|
-
"event ZipFileTokenized(uint256 indexed tokenId, address indexed creator, string
|
|
18
|
+
"event ZipFileTokenized(uint256 indexed tokenId, address indexed creator, string merkleRootHash, uint256 creationTimestamp, string ipfsHash, uint256 tokenizationTime, uint256 blockNumber)"
|
|
50
19
|
];
|
|
51
20
|
const ERC20_ABI = [
|
|
52
21
|
"function balanceOf(address owner) view returns (uint256)",
|
|
@@ -60,172 +29,153 @@ const ERC721_ABI = [
|
|
|
60
29
|
"function symbol() view returns (string)",
|
|
61
30
|
"function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)"
|
|
62
31
|
];
|
|
63
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Core wallet functionality that works in both browser and server environments
|
|
34
|
+
*/
|
|
35
|
+
class CoreWalletManager {
|
|
64
36
|
constructor() {
|
|
65
37
|
this.wallet = null;
|
|
66
38
|
this.provider = null;
|
|
67
39
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
for (const fileName of walletFileNames) {
|
|
80
|
-
const filePath = path.join(currentDir, fileName);
|
|
81
|
-
if (fs.existsSync(filePath))
|
|
82
|
-
walletFiles.push(filePath);
|
|
83
|
-
}
|
|
84
|
-
if (fs.existsSync(walletDir)) {
|
|
85
|
-
for (const fileName of walletFileNames) {
|
|
86
|
-
const filePath = path.join(walletDir, fileName);
|
|
87
|
-
if (fs.existsSync(filePath))
|
|
88
|
-
walletFiles.push(filePath);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return walletFiles;
|
|
92
|
-
}
|
|
93
|
-
loadWalletFromFile(filePath) {
|
|
94
|
-
try {
|
|
95
|
-
const content = fs.readFileSync(filePath, 'utf8').trim();
|
|
96
|
-
try {
|
|
97
|
-
const walletData = JSON.parse(content);
|
|
98
|
-
if (walletData.privateKey) {
|
|
99
|
-
console.log(`Found wallet file: ${filePath}`);
|
|
100
|
-
console.log(`Wallet address: ${walletData.address}`);
|
|
101
|
-
return walletData.privateKey;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
if (content.startsWith('0x') && content.length === 66) {
|
|
106
|
-
console.log(`Found private key file: ${filePath}`);
|
|
107
|
-
return content;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.warn(`Could not read wallet file ${filePath}:`, error);
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async setupWallet(options) {
|
|
40
|
+
/**
|
|
41
|
+
* Setup wallet with private key and connect to network
|
|
42
|
+
*
|
|
43
|
+
* SECURITY WARNING: This method accepts a private key as a parameter.
|
|
44
|
+
* - Never hardcode private keys in source code
|
|
45
|
+
* - Always use environment variables for private keys
|
|
46
|
+
* - Use testnet keys for development/testing
|
|
47
|
+
* - Use secure key management (HSMs, KMS) for production
|
|
48
|
+
* - See SECURITY.md for complete security guidelines
|
|
49
|
+
*/
|
|
50
|
+
async setupWallet(privateKey, network, mintToken = false) {
|
|
118
51
|
try {
|
|
119
|
-
const networkConfig = types_1.NETWORKS[
|
|
120
|
-
let privateKey;
|
|
121
|
-
if (options.wallet) {
|
|
122
|
-
const val = options.wallet;
|
|
123
|
-
if (fs.existsSync(val)) {
|
|
124
|
-
const loaded = this.loadWalletFromFile(val);
|
|
125
|
-
if (!loaded)
|
|
126
|
-
throw new Error(`Could not load valid private key from ${val}`);
|
|
127
|
-
privateKey = loaded;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
privateKey = val;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
const existing = this.findExistingWallets();
|
|
135
|
-
if (existing.length > 0) {
|
|
136
|
-
const selected = existing[0];
|
|
137
|
-
const relativePath = path.relative(process.cwd(), selected);
|
|
138
|
-
console.log(`Using existing wallet: ${relativePath}`);
|
|
139
|
-
const loaded = this.loadWalletFromFile(selected);
|
|
140
|
-
if (!loaded)
|
|
141
|
-
throw new Error(`Could not load valid private key from ${selected}`);
|
|
142
|
-
privateKey = loaded;
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
console.log('No existing wallet found. Creating new wallet...');
|
|
146
|
-
privateKey = await this.createNewWallet();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
52
|
+
const networkConfig = types_1.NETWORKS[network] || types_1.NETWORKS['base-sepolia'];
|
|
149
53
|
this.wallet = new ethers_1.ethers.Wallet(privateKey);
|
|
150
|
-
|
|
151
|
-
const ok = await this.connectToNetwork(networkConfig,
|
|
54
|
+
Logger_1.Logger.log(`Using wallet: ${this.wallet.address}`);
|
|
55
|
+
const ok = await this.connectToNetwork(networkConfig, mintToken);
|
|
152
56
|
if (!ok) {
|
|
153
|
-
return {
|
|
57
|
+
return {
|
|
58
|
+
wallet: null,
|
|
59
|
+
provider: null,
|
|
60
|
+
success: false,
|
|
61
|
+
message: `Failed to connect to ${networkConfig.name} network. Blockchain operations require network connectivity.`
|
|
62
|
+
};
|
|
154
63
|
}
|
|
155
|
-
return {
|
|
64
|
+
return {
|
|
65
|
+
wallet: this.wallet,
|
|
66
|
+
provider: this.provider,
|
|
67
|
+
success: true,
|
|
68
|
+
message: `Wallet setup successful for ${networkConfig.name}`
|
|
69
|
+
};
|
|
156
70
|
}
|
|
157
71
|
catch (error) {
|
|
158
|
-
|
|
159
|
-
return {
|
|
72
|
+
Logger_1.Logger.error('Error setting up wallet:', error);
|
|
73
|
+
return {
|
|
74
|
+
wallet: null,
|
|
75
|
+
provider: null,
|
|
76
|
+
success: false,
|
|
77
|
+
message: `Wallet setup failed: ${error instanceof Error ? error.message : String(error)}`
|
|
78
|
+
};
|
|
160
79
|
}
|
|
161
80
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const walletInfo = { address: newWallet.address, privateKey: newWallet.privateKey, mnemonic: newWallet.mnemonic?.phrase || "" };
|
|
166
|
-
const walletDir = path.join(process.cwd(), 'wallet');
|
|
167
|
-
if (!fs.existsSync(walletDir))
|
|
168
|
-
fs.mkdirSync(walletDir, { recursive: true });
|
|
169
|
-
const walletFilePath = path.join(walletDir, 'neozip-wallet.json');
|
|
170
|
-
fs.writeFileSync(walletFilePath, JSON.stringify(walletInfo, null, 2));
|
|
171
|
-
console.log(`New wallet created and saved to ${walletFilePath}`);
|
|
172
|
-
console.log(`Wallet address: ${newWallet.address}`);
|
|
173
|
-
console.log(`IMPORTANT: Please fund this wallet with BASE to use for minting NFTs!`);
|
|
174
|
-
return newWallet.privateKey;
|
|
175
|
-
}
|
|
81
|
+
/**
|
|
82
|
+
* Connect to the specified network
|
|
83
|
+
*/
|
|
176
84
|
async connectToNetwork(networkConfig, mintToken) {
|
|
177
85
|
try {
|
|
178
|
-
|
|
86
|
+
Logger_1.Logger.log(`Attempting to connect to ${networkConfig.name} network...`);
|
|
179
87
|
this.provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
|
|
180
88
|
let networkTimedOut = false;
|
|
181
|
-
const networkTimeout = setTimeout(() => {
|
|
89
|
+
const networkTimeout = setTimeout(() => {
|
|
90
|
+
networkTimedOut = true;
|
|
91
|
+
Logger_1.Logger.error("Network connection timeout");
|
|
92
|
+
}, 5000);
|
|
182
93
|
await Promise.race([
|
|
183
94
|
this.provider.getNetwork(),
|
|
184
|
-
new Promise((_, reject) => setTimeout(() => {
|
|
185
|
-
|
|
95
|
+
new Promise((_, reject) => setTimeout(() => {
|
|
96
|
+
if (networkTimedOut)
|
|
97
|
+
reject(new Error("Network connection timeout"));
|
|
98
|
+
}, 5100))
|
|
186
99
|
]);
|
|
187
100
|
clearTimeout(networkTimeout);
|
|
188
101
|
if (this.wallet) {
|
|
189
102
|
this.wallet = this.wallet.connect(this.provider);
|
|
190
103
|
const balance = await this.provider.getBalance(this.wallet.address);
|
|
191
104
|
const balanceEth = ethers_1.ethers.formatEther(balance);
|
|
192
|
-
|
|
105
|
+
Logger_1.Logger.log(`Wallet balance: ${balanceEth} ETH`);
|
|
193
106
|
const minBalance = 0.0001;
|
|
194
107
|
if (parseFloat(balanceEth) < minBalance && mintToken) {
|
|
195
|
-
|
|
196
|
-
|
|
108
|
+
Logger_1.Logger.error(`ERROR: Insufficient balance (${balanceEth} ETH). Minimum required: ${minBalance} ETH`);
|
|
109
|
+
Logger_1.Logger.error('Get testnet ETH from: https://www.coinbase.com/faucets/base-ethereum-sepolia-faucet');
|
|
197
110
|
throw new Error(`Insufficient balance for minting. Current: ${balanceEth} ETH, Required: ${minBalance} ETH`);
|
|
198
111
|
}
|
|
199
112
|
else if (mintToken) {
|
|
200
|
-
|
|
113
|
+
Logger_1.Logger.log(`✅ Sufficient balance for token minting`);
|
|
201
114
|
}
|
|
202
115
|
}
|
|
203
|
-
|
|
116
|
+
Logger_1.Logger.log(`✅ Successfully connected to ${networkConfig.name}`);
|
|
204
117
|
return true;
|
|
205
118
|
}
|
|
206
119
|
catch (networkError) {
|
|
207
120
|
const errorMessage = networkError instanceof Error ? networkError.message : String(networkError);
|
|
208
|
-
|
|
121
|
+
Logger_1.Logger.error(`Failed to connect to ${networkConfig.name} network: ${errorMessage}`);
|
|
209
122
|
this.provider = null;
|
|
210
123
|
return false;
|
|
211
124
|
}
|
|
212
125
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Get the current wallet instance
|
|
128
|
+
*/
|
|
129
|
+
getWallet() {
|
|
130
|
+
return this.wallet;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the current provider instance
|
|
134
|
+
*/
|
|
135
|
+
getProvider() {
|
|
136
|
+
return this.provider;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Check if wallet is ready
|
|
140
|
+
*/
|
|
141
|
+
isReady() {
|
|
142
|
+
return this.wallet !== null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if connected to network
|
|
146
|
+
*/
|
|
147
|
+
isOnline() {
|
|
148
|
+
return this.provider !== null;
|
|
149
|
+
}
|
|
217
150
|
}
|
|
218
|
-
exports.
|
|
151
|
+
exports.CoreWalletManager = CoreWalletManager;
|
|
152
|
+
/**
|
|
153
|
+
* Wallet analyzer for blockchain operations
|
|
154
|
+
*/
|
|
219
155
|
class WalletAnalyzer {
|
|
220
|
-
constructor(provider) {
|
|
156
|
+
constructor(provider) {
|
|
157
|
+
this.provider = provider;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get basic wallet information
|
|
161
|
+
*/
|
|
221
162
|
async getWalletBasics(address) {
|
|
222
163
|
const balance = await this.provider.getBalance(address);
|
|
223
164
|
const ethBalance = ethers_1.ethers.formatEther(balance);
|
|
224
165
|
const txCount = await this.provider.getTransactionCount(address);
|
|
225
166
|
const network = await this.provider.getNetwork();
|
|
226
167
|
const latestBlock = await this.provider.getBlockNumber();
|
|
227
|
-
return {
|
|
168
|
+
return {
|
|
169
|
+
ethBalance,
|
|
170
|
+
transactionCount: txCount,
|
|
171
|
+
networkName: network.name,
|
|
172
|
+
chainId: network.chainId,
|
|
173
|
+
latestBlock
|
|
174
|
+
};
|
|
228
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Scan for NZIP tokens owned by an address
|
|
178
|
+
*/
|
|
229
179
|
async scanForNZipTokens(contractAddress, ownerAddress) {
|
|
230
180
|
const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
|
|
231
181
|
let foundTokens = [];
|
|
@@ -273,6 +223,9 @@ class WalletAnalyzer {
|
|
|
273
223
|
}
|
|
274
224
|
return { foundTokens, searchMethod: foundTokens.length > 0 ? 'common-ids' : 'none' };
|
|
275
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Get detailed information for NZIP tokens
|
|
228
|
+
*/
|
|
276
229
|
async getNZipTokenDetails(contractAddress, tokenIds) {
|
|
277
230
|
const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
|
|
278
231
|
const tokenDetails = [];
|
|
@@ -282,7 +235,6 @@ class WalletAnalyzer {
|
|
|
282
235
|
tokenDetails.push({
|
|
283
236
|
tokenId: tokenId.toString(),
|
|
284
237
|
merkleRootHash: zipInfo.merkleRootHash,
|
|
285
|
-
fileName: zipInfo.fileName,
|
|
286
238
|
timestamp: Number(zipInfo.creationTimestamp),
|
|
287
239
|
creator: zipInfo.creator,
|
|
288
240
|
creationTimestamp: Number(zipInfo.creationTimestamp),
|
|
@@ -291,21 +243,31 @@ class WalletAnalyzer {
|
|
|
291
243
|
});
|
|
292
244
|
}
|
|
293
245
|
catch (error) {
|
|
294
|
-
|
|
246
|
+
Logger_1.Logger.error(`Error fetching details for token ${tokenId}:`, error);
|
|
295
247
|
}
|
|
296
248
|
}
|
|
297
249
|
return tokenDetails;
|
|
298
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Get contract information
|
|
253
|
+
*/
|
|
299
254
|
async getContractInfo(contractAddress) {
|
|
300
255
|
try {
|
|
301
256
|
const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
|
|
302
|
-
const [name, symbol, totalSupply] = await Promise.all([
|
|
257
|
+
const [name, symbol, totalSupply] = await Promise.all([
|
|
258
|
+
contract.name(),
|
|
259
|
+
contract.symbol(),
|
|
260
|
+
contract.totalSupply()
|
|
261
|
+
]);
|
|
303
262
|
return { name, symbol, totalSupply: totalSupply.toString() };
|
|
304
263
|
}
|
|
305
264
|
catch {
|
|
306
265
|
return null;
|
|
307
266
|
}
|
|
308
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Check for ERC20 tokens
|
|
270
|
+
*/
|
|
309
271
|
async checkERC20Tokens(ownerAddress, tokenConfigs) {
|
|
310
272
|
const foundTokens = [];
|
|
311
273
|
for (const tokenConfig of tokenConfigs.filter(t => t.type === 'ERC20')) {
|
|
@@ -315,17 +277,31 @@ class WalletAnalyzer {
|
|
|
315
277
|
if (balance > 0) {
|
|
316
278
|
let name = tokenConfig.name, symbol = tokenConfig.symbol, decimals = 18;
|
|
317
279
|
try {
|
|
318
|
-
[name, symbol, decimals] = await Promise.all([
|
|
280
|
+
[name, symbol, decimals] = await Promise.all([
|
|
281
|
+
contract.name(),
|
|
282
|
+
contract.symbol(),
|
|
283
|
+
contract.decimals()
|
|
284
|
+
]);
|
|
319
285
|
}
|
|
320
286
|
catch { }
|
|
321
287
|
const formattedBalance = ethers_1.ethers.formatUnits(balance, decimals);
|
|
322
|
-
foundTokens.push({
|
|
288
|
+
foundTokens.push({
|
|
289
|
+
address: tokenConfig.address,
|
|
290
|
+
name,
|
|
291
|
+
symbol,
|
|
292
|
+
balance: formattedBalance,
|
|
293
|
+
decimals,
|
|
294
|
+
type: 'ERC20'
|
|
295
|
+
});
|
|
323
296
|
}
|
|
324
297
|
}
|
|
325
298
|
catch { }
|
|
326
299
|
}
|
|
327
300
|
return foundTokens;
|
|
328
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Check for NFT collections
|
|
304
|
+
*/
|
|
329
305
|
async checkNFTCollections(ownerAddress, nftConfigs) {
|
|
330
306
|
const foundNFTs = [];
|
|
331
307
|
for (const nftConfig of nftConfigs) {
|
|
@@ -335,28 +311,28 @@ class WalletAnalyzer {
|
|
|
335
311
|
if (balance > 0) {
|
|
336
312
|
let name = nftConfig.name, symbol = nftConfig.symbol;
|
|
337
313
|
try {
|
|
338
|
-
[name, symbol] = await Promise.all([
|
|
314
|
+
[name, symbol] = await Promise.all([
|
|
315
|
+
contract.name(),
|
|
316
|
+
contract.symbol()
|
|
317
|
+
]);
|
|
339
318
|
}
|
|
340
319
|
catch { }
|
|
341
|
-
foundNFTs.push({
|
|
320
|
+
foundNFTs.push({
|
|
321
|
+
address: nftConfig.address,
|
|
322
|
+
name,
|
|
323
|
+
symbol,
|
|
324
|
+
balance: balance.toString(),
|
|
325
|
+
type: 'ERC721'
|
|
326
|
+
});
|
|
342
327
|
}
|
|
343
328
|
}
|
|
344
329
|
catch { }
|
|
345
330
|
}
|
|
346
331
|
return foundNFTs;
|
|
347
332
|
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
try {
|
|
352
|
-
const deploymentInfo = JSON.parse(fs.readFileSync(deploymentPath, 'utf8'));
|
|
353
|
-
if (deploymentInfo.address)
|
|
354
|
-
return deploymentInfo.address;
|
|
355
|
-
}
|
|
356
|
-
catch { }
|
|
357
|
-
}
|
|
358
|
-
return undefined;
|
|
359
|
-
}
|
|
333
|
+
/**
|
|
334
|
+
* Get common token configurations for a network
|
|
335
|
+
*/
|
|
360
336
|
static getCommonTokens(network) {
|
|
361
337
|
const commonTokens = {
|
|
362
338
|
'base-sepolia': [
|
|
@@ -374,6 +350,9 @@ class WalletAnalyzer {
|
|
|
374
350
|
};
|
|
375
351
|
return commonTokens[network] || [];
|
|
376
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* Get common NFT configurations for a network
|
|
355
|
+
*/
|
|
377
356
|
static getCommonNFTs(network) {
|
|
378
357
|
const commonNFTs = {
|
|
379
358
|
'base-sepolia': [],
|
|
@@ -386,3 +365,4 @@ class WalletAnalyzer {
|
|
|
386
365
|
}
|
|
387
366
|
}
|
|
388
367
|
exports.WalletAnalyzer = WalletAnalyzer;
|
|
368
|
+
//# sourceMappingURL=WalletManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletManager.js","sourceRoot":"","sources":["../../../src/blockchain/core/WalletManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* ZipkitMinter - Handles NFT token minting for ZIP files
|
|
4
4
|
* Minter API for NZIP-NFT smart contract.
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import { ethers } from 'ethers';
|
|
7
|
+
import { type ContractConfig } from './contracts';
|
|
8
|
+
import type { TokenMetadata } from '../../types';
|
|
7
9
|
export interface MintingOptions {
|
|
8
10
|
walletPrivateKey: string;
|
|
9
11
|
network: string;
|
|
10
12
|
verbose?: boolean;
|
|
11
13
|
debug?: boolean;
|
|
14
|
+
rpcUrlIndex?: number;
|
|
12
15
|
}
|
|
13
16
|
export interface MintingResult {
|
|
14
17
|
success: boolean;
|
|
@@ -40,16 +43,23 @@ export interface WalletInfo {
|
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Blockchain Token Minter for ZIP files
|
|
46
|
+
*
|
|
47
|
+
* SECURITY WARNING: This class handles private keys for blockchain operations.
|
|
48
|
+
* - Never hardcode private keys in source code
|
|
49
|
+
* - Always use environment variables for private keys (e.g., NEOZIP_WALLET_PASSKEY)
|
|
50
|
+
* - Use testnet keys for development/testing
|
|
51
|
+
* - Use secure key management (HSMs, KMS) for production
|
|
52
|
+
* - See SECURITY.md for complete security guidelines
|
|
43
53
|
*/
|
|
44
|
-
export declare class
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
constructor(
|
|
54
|
+
export declare class ZipkitMinter {
|
|
55
|
+
protected provider: ethers.JsonRpcProvider;
|
|
56
|
+
protected wallet: ethers.Wallet;
|
|
57
|
+
protected contract: ethers.Contract;
|
|
58
|
+
protected merkleRoot: string;
|
|
59
|
+
protected networkConfig: ContractConfig;
|
|
60
|
+
protected debug: boolean;
|
|
61
|
+
protected rpcUrlIndex: number;
|
|
62
|
+
constructor(merkleRoot: string, options: MintingOptions);
|
|
53
63
|
/**
|
|
54
64
|
* Get wallet information
|
|
55
65
|
*/
|
|
@@ -99,8 +109,33 @@ export declare class ZipKitMinter {
|
|
|
99
109
|
mintingResult: MintingResult;
|
|
100
110
|
tokenMetadata?: TokenMetadata;
|
|
101
111
|
}>;
|
|
112
|
+
/**
|
|
113
|
+
* Switch to a different RPC URL by index
|
|
114
|
+
* This recreates the provider, wallet, and contract with the new RPC
|
|
115
|
+
*/
|
|
116
|
+
switchRpcUrl(newIndex: number): void;
|
|
117
|
+
/**
|
|
118
|
+
* Destroy provider to allow process to exit
|
|
119
|
+
*/
|
|
120
|
+
destroy(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Mint token with retry logic and exponential backoff
|
|
123
|
+
* @param maxRetries Maximum number of retry attempts (default: 3)
|
|
124
|
+
* @returns Minting result with retry information
|
|
125
|
+
*/
|
|
126
|
+
mintTokenWithRetry(maxRetries?: number): Promise<MintingResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Batch minting for multiple archives
|
|
129
|
+
* @param archives Array of archive objects with name and merkleRoot
|
|
130
|
+
* @returns Array of minting results
|
|
131
|
+
*/
|
|
132
|
+
mintBatch(archives: Array<{
|
|
133
|
+
name: string;
|
|
134
|
+
merkleRoot: string;
|
|
135
|
+
}>): Promise<MintingResult[]>;
|
|
102
136
|
}
|
|
103
137
|
/**
|
|
104
138
|
* Utility function to validate Ethereum private key
|
|
105
139
|
*/
|
|
106
140
|
export declare function validatePrivateKey(privateKey: string): boolean;
|
|
141
|
+
//# sourceMappingURL=ZipkitMinter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipkitMinter.d.ts","sourceRoot":"","sources":["../../../src/blockchain/core/ZipkitMinter.ts"],"names":[],"mappings":"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"}
|