@diap/sdk 0.1.1 → 0.1.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.
Files changed (125) hide show
  1. package/dist/agent-auth.d.ts +96 -0
  2. package/dist/agent-auth.d.ts.map +1 -0
  3. package/dist/agent-auth.js +343 -0
  4. package/dist/agent-auth.js.map +1 -0
  5. package/dist/agent-verification.d.ts +158 -0
  6. package/dist/agent-verification.d.ts.map +1 -0
  7. package/dist/agent-verification.js +237 -0
  8. package/dist/agent-verification.js.map +1 -0
  9. package/dist/config-manager.d.ts +156 -0
  10. package/dist/config-manager.d.ts.map +1 -0
  11. package/dist/config-manager.js +241 -0
  12. package/dist/config-manager.js.map +1 -0
  13. package/dist/did-builder.d.ts +62 -0
  14. package/dist/did-builder.d.ts.map +1 -0
  15. package/dist/did-builder.js +314 -0
  16. package/dist/did-builder.js.map +1 -0
  17. package/dist/did-cache.d.ts +133 -0
  18. package/dist/did-cache.d.ts.map +1 -0
  19. package/dist/did-cache.js +273 -0
  20. package/dist/did-cache.js.map +1 -0
  21. package/dist/identity-manager.d.ts +87 -0
  22. package/dist/identity-manager.d.ts.map +1 -0
  23. package/dist/identity-manager.js +196 -0
  24. package/dist/identity-manager.js.map +1 -0
  25. package/dist/index.d.ts +43 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +52 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/ipfs-bidirectional-verification.d.ts +201 -0
  30. package/dist/ipfs-bidirectional-verification.d.ts.map +1 -0
  31. package/dist/ipfs-bidirectional-verification.js +298 -0
  32. package/dist/ipfs-bidirectional-verification.js.map +1 -0
  33. package/dist/ipfs-client.d.ts +151 -0
  34. package/dist/ipfs-client.d.ts.map +1 -0
  35. package/dist/ipfs-client.js +623 -0
  36. package/dist/ipfs-client.js.map +1 -0
  37. package/dist/ipfs-node-manager.d.ts +136 -0
  38. package/dist/ipfs-node-manager.d.ts.map +1 -0
  39. package/dist/ipfs-node-manager.js +232 -0
  40. package/dist/ipfs-node-manager.js.map +1 -0
  41. package/dist/ipns-manager.d.ts +182 -0
  42. package/dist/ipns-manager.d.ts.map +1 -0
  43. package/dist/ipns-manager.js +268 -0
  44. package/dist/ipns-manager.js.map +1 -0
  45. package/dist/key-manager.d.ts +48 -0
  46. package/dist/key-manager.d.ts.map +1 -0
  47. package/dist/key-manager.js +231 -0
  48. package/dist/key-manager.js.map +1 -0
  49. package/dist/kubo-installer.d.ts +115 -0
  50. package/dist/kubo-installer.d.ts.map +1 -0
  51. package/dist/kubo-installer.js +205 -0
  52. package/dist/kubo-installer.js.map +1 -0
  53. package/dist/libp2p/encrypted-peer-id.d.ts +24 -0
  54. package/dist/libp2p/encrypted-peer-id.d.ts.map +1 -0
  55. package/dist/libp2p/encrypted-peer-id.js +134 -0
  56. package/dist/libp2p/encrypted-peer-id.js.map +1 -0
  57. package/dist/nonce-manager.d.ts +176 -0
  58. package/dist/nonce-manager.d.ts.map +1 -0
  59. package/dist/nonce-manager.js +382 -0
  60. package/dist/nonce-manager.js.map +1 -0
  61. package/dist/p2p/hyperswarm-communicator.d.ts +252 -0
  62. package/dist/p2p/hyperswarm-communicator.d.ts.map +1 -0
  63. package/dist/p2p/hyperswarm-communicator.js +469 -0
  64. package/dist/p2p/hyperswarm-communicator.js.map +1 -0
  65. package/dist/p2p/iroh-communicator.d.ts +216 -0
  66. package/dist/p2p/iroh-communicator.d.ts.map +1 -0
  67. package/dist/p2p/iroh-communicator.js +408 -0
  68. package/dist/p2p/iroh-communicator.js.map +1 -0
  69. package/dist/pubsub-authenticator.d.ts +246 -0
  70. package/dist/pubsub-authenticator.d.ts.map +1 -0
  71. package/dist/pubsub-authenticator.js +384 -0
  72. package/dist/pubsub-authenticator.js.map +1 -0
  73. package/dist/real-name-auth.d.ts +238 -0
  74. package/dist/real-name-auth.d.ts.map +1 -0
  75. package/dist/real-name-auth.js +259 -0
  76. package/dist/real-name-auth.js.map +1 -0
  77. package/dist/types/did.d.ts +76 -0
  78. package/dist/types/did.d.ts.map +1 -0
  79. package/dist/types/did.js +5 -0
  80. package/dist/types/did.js.map +1 -0
  81. package/dist/types/errors.d.ts +42 -0
  82. package/dist/types/errors.d.ts.map +1 -0
  83. package/dist/types/errors.js +69 -0
  84. package/dist/types/errors.js.map +1 -0
  85. package/dist/types/index.d.ts +9 -0
  86. package/dist/types/index.d.ts.map +1 -0
  87. package/dist/types/index.js +9 -0
  88. package/dist/types/index.js.map +1 -0
  89. package/dist/types/key.d.ts +43 -0
  90. package/dist/types/key.d.ts.map +1 -0
  91. package/dist/types/key.js +5 -0
  92. package/dist/types/key.js.map +1 -0
  93. package/dist/types/zkp.d.ts +80 -0
  94. package/dist/types/zkp.d.ts.map +1 -0
  95. package/dist/types/zkp.js +16 -0
  96. package/dist/types/zkp.js.map +1 -0
  97. package/dist/utils/crypto.d.ts +24 -0
  98. package/dist/utils/crypto.d.ts.map +1 -0
  99. package/dist/utils/crypto.js +65 -0
  100. package/dist/utils/crypto.js.map +1 -0
  101. package/dist/utils/encoding.d.ts +36 -0
  102. package/dist/utils/encoding.d.ts.map +1 -0
  103. package/dist/utils/encoding.js +80 -0
  104. package/dist/utils/encoding.js.map +1 -0
  105. package/dist/utils/logger.d.ts +24 -0
  106. package/dist/utils/logger.d.ts.map +1 -0
  107. package/dist/utils/logger.js +37 -0
  108. package/dist/utils/logger.js.map +1 -0
  109. package/dist/zkp/key-generator.d.ts +56 -0
  110. package/dist/zkp/key-generator.d.ts.map +1 -0
  111. package/dist/zkp/key-generator.js +165 -0
  112. package/dist/zkp/key-generator.js.map +1 -0
  113. package/dist/zkp/simplified-backend.d.ts +23 -0
  114. package/dist/zkp/simplified-backend.d.ts.map +1 -0
  115. package/dist/zkp/simplified-backend.js +77 -0
  116. package/dist/zkp/simplified-backend.js.map +1 -0
  117. package/dist/zkp/snarkjs-backend.d.ts +150 -0
  118. package/dist/zkp/snarkjs-backend.d.ts.map +1 -0
  119. package/dist/zkp/snarkjs-backend.js +218 -0
  120. package/dist/zkp/snarkjs-backend.js.map +1 -0
  121. package/dist/zkp/universal-manager.d.ts +44 -0
  122. package/dist/zkp/universal-manager.d.ts.map +1 -0
  123. package/dist/zkp/universal-manager.js +181 -0
  124. package/dist/zkp/universal-manager.js.map +1 -0
  125. package/package.json +2 -2
@@ -0,0 +1,165 @@
1
+ /**
2
+ * DIAP TypeScript SDK - ZKP Key Generator
3
+ * 自动生成 proving key 和 verification key 文件
4
+ */
5
+ import { logger } from '../utils/logger.js';
6
+ /**
7
+ * 生成简化的 ZKP 密钥对
8
+ * 这是一个演示版本的密钥生成,实际生产环境应使用更安全的可信设置
9
+ */
10
+ export function generateSimpleZKPKeys() {
11
+ logger.info('🔧 生成简化的 ZKP 密钥对...');
12
+ logger.warn('⚠️ 这是演示版本,生产环境需要更安全的可信设置');
13
+ // 返回简化的密钥对
14
+ const provingKey = new TextEncoder().encode('DIAP_PROVING_KEY_V1_DEMO');
15
+ const verificationKey = new TextEncoder().encode('DIAP_VERIFICATION_KEY_V1_DEMO');
16
+ logger.info('✅ ZKP 密钥对生成完成');
17
+ return {
18
+ provingKey,
19
+ verificationKey,
20
+ };
21
+ }
22
+ /**
23
+ * 确保 ZKP 密钥文件存在
24
+ * 如果文件不存在,则自动生成
25
+ */
26
+ export async function ensureZKPKeysExist(pkPath, vkPath) {
27
+ logger.info(`检查密钥文件: ${pkPath}, ${vkPath}`);
28
+ // 在浏览器环境中,我们无法直接写入文件系统
29
+ // 这里我们生成密钥并存储在内存中
30
+ logger.warn('⚠️ ZKP 密钥文件在浏览器环境中无法持久化存储');
31
+ const keys = generateSimpleZKPKeys();
32
+ // 存储到 localStorage(如果可用)
33
+ if (typeof localStorage !== 'undefined') {
34
+ try {
35
+ localStorage.setItem(pkPath, bufferToBase64(keys.provingKey));
36
+ localStorage.setItem(vkPath, bufferToBase64(keys.verificationKey));
37
+ logger.info('✅ ZKP 密钥已保存到 localStorage');
38
+ }
39
+ catch (e) {
40
+ logger.warn('⚠️ 无法保存到 localStorage');
41
+ }
42
+ }
43
+ return {
44
+ success: true,
45
+ provingKeyPath: pkPath,
46
+ verificationKeyPath: vkPath,
47
+ };
48
+ }
49
+ /**
50
+ * 从 Noir 电路生成密钥
51
+ * 自动检测环境并选择合适的执行方式
52
+ */
53
+ export async function generateNoirKeys(circuitPath, pkPath, vkPath) {
54
+ logger.info('🔧 尝试从 Noir 电路生成密钥...');
55
+ // 检查 nargo 是否可用
56
+ const nargoAvailable = await checkNargoAvailable();
57
+ if (!nargoAvailable) {
58
+ logger.warn('⚠️ nargo 不可用,使用简化密钥生成');
59
+ return ensureZKPKeysExist(pkPath, vkPath);
60
+ }
61
+ // 编译电路
62
+ const compileResult = await compileNoirCircuit(circuitPath);
63
+ if (!compileResult) {
64
+ logger.warn('⚠️ Noir 编译失败,使用简化密钥生成');
65
+ return ensureZKPKeysExist(pkPath, vkPath);
66
+ }
67
+ logger.info('✅ Noir 电路编译成功,生成密钥文件');
68
+ // 返回简化密钥(因为我们无法直接读取编译后的 ACIR 文件)
69
+ return ensureZKPKeysExist(pkPath, vkPath);
70
+ }
71
+ /**
72
+ * 检查 nargo 是否可用
73
+ */
74
+ export async function checkNargoAvailable() {
75
+ // 在浏览器环境中,nargo 不可用
76
+ // 在 Node.js 环境中,需要检查 nargo 命令是否存在
77
+ try {
78
+ if (typeof process !== 'undefined' && process.versions?.node) {
79
+ // Node.js 环境 - 可以尝试检查 nargo
80
+ // 但这需要 exec 命令,在浏览器中不可用
81
+ return false;
82
+ }
83
+ }
84
+ catch {
85
+ // 环境不支持
86
+ }
87
+ return false;
88
+ }
89
+ /**
90
+ * 编译 Noir 电路
91
+ */
92
+ export async function compileNoirCircuit(circuitPath) {
93
+ logger.info(`🔧 编译 Noir 电路: ${circuitPath}`);
94
+ // 在 TypeScript 环境中,我们无法直接执行系统命令
95
+ // 这里返回失败状态,让调用者使用简化密钥
96
+ return false;
97
+ }
98
+ /**
99
+ * 将 ArrayBuffer 转换为 Base64 字符串
100
+ */
101
+ function bufferToBase64(buffer) {
102
+ let binary = '';
103
+ for (let i = 0; i < buffer.length; i++) {
104
+ binary += String.fromCharCode(buffer[i]);
105
+ }
106
+ if (typeof btoa !== 'undefined') {
107
+ return btoa(binary);
108
+ }
109
+ // Node.js 环境
110
+ return Buffer.from(binary, 'binary').toString('base64');
111
+ }
112
+ /**
113
+ * 从 Base64 字符串恢复 ArrayBuffer
114
+ */
115
+ export function base64ToBuffer(base64) {
116
+ let binary;
117
+ if (typeof atob !== 'undefined') {
118
+ binary = atob(base64);
119
+ }
120
+ else {
121
+ // Node.js 环境
122
+ binary = Buffer.from(base64, 'base64').toString('binary');
123
+ }
124
+ const bytes = new Uint8Array(binary.length);
125
+ for (let i = 0; i < binary.length; i++) {
126
+ bytes[i] = binary.charCodeAt(i);
127
+ }
128
+ return bytes;
129
+ }
130
+ /**
131
+ * 从 localStorage 加载密钥
132
+ */
133
+ export function loadKeysFromStorage(pkPath, vkPath) {
134
+ if (typeof localStorage === 'undefined') {
135
+ return null;
136
+ }
137
+ try {
138
+ const pkBase64 = localStorage.getItem(pkPath);
139
+ const vkBase64 = localStorage.getItem(vkPath);
140
+ if (pkBase64 && vkBase64) {
141
+ return {
142
+ provingKey: base64ToBuffer(pkBase64),
143
+ verificationKey: base64ToBuffer(vkBase64),
144
+ };
145
+ }
146
+ }
147
+ catch (e) {
148
+ logger.warn('⚠️ 从 localStorage 加载密钥失败');
149
+ }
150
+ return null;
151
+ }
152
+ // ============================================================================
153
+ // 便捷函数
154
+ // ============================================================================
155
+ /**
156
+ * 创建 ZKP 密钥(简化版本)
157
+ */
158
+ export function createZKPKeys() {
159
+ return generateSimpleZKPKeys();
160
+ }
161
+ // ============================================================================
162
+ // 导出
163
+ // ============================================================================
164
+ // 注意: 所有函数和类型已在声明时导出
165
+ //# sourceMappingURL=key-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-generator.js","sourceRoot":"","sources":["../../src/zkp/key-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 简化 ZKP 后端
3
+ * 用于测试和回退,使用哈希函数模拟 ZKP
4
+ */
5
+ import type { NoirProverInputs, NoirProofResult, NoirVerificationResult } from '../types/zkp.js';
6
+ /**
7
+ * 简化后端实现
8
+ */
9
+ export declare class SimplifiedBackend {
10
+ /**
11
+ * 生成证明(模拟)
12
+ */
13
+ generateProof(inputs: NoirProverInputs): Promise<NoirProofResult>;
14
+ /**
15
+ * 验证证明(模拟)
16
+ */
17
+ verifyProof(proof: Uint8Array, publicInputs: Uint8Array): Promise<NoirVerificationResult>;
18
+ /**
19
+ * 检查后端是否可用
20
+ */
21
+ isAvailable(): boolean;
22
+ }
23
+ //# sourceMappingURL=simplified-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simplified-backend.d.ts","sourceRoot":"","sources":["../../src/zkp/simplified-backend.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKjG;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuCvE;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAuBlC;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * 简化 ZKP 后端
3
+ * 用于测试和回退,使用哈希函数模拟 ZKP
4
+ */
5
+ import { ZKPError } from '../types/errors.js';
6
+ import { sha256 } from '@noble/hashes/sha256';
7
+ import { logger } from '../utils/logger.js';
8
+ /**
9
+ * 简化后端实现
10
+ */
11
+ export class SimplifiedBackend {
12
+ /**
13
+ * 生成证明(模拟)
14
+ */
15
+ async generateProof(inputs) {
16
+ const startTime = Date.now();
17
+ try {
18
+ logger.debug('Generating proof with simplified backend', { inputs });
19
+ // 模拟证明生成:使用哈希函数
20
+ const proofData = JSON.stringify({
21
+ expectedDidHash: inputs.expectedDidHash,
22
+ publicKeyHash: inputs.publicKeyHash,
23
+ nonceHash: inputs.nonceHash,
24
+ timestamp: Date.now(),
25
+ });
26
+ const proof = sha256(proofData);
27
+ const publicInputs = sha256(JSON.stringify({
28
+ expectedDidHash: inputs.expectedDidHash,
29
+ publicKeyHash: inputs.publicKeyHash,
30
+ nonceHash: inputs.nonceHash,
31
+ }));
32
+ const generationTime = Date.now() - startTime;
33
+ return {
34
+ proof: new Uint8Array(proof),
35
+ publicInputs: new Uint8Array(publicInputs),
36
+ circuitOutput: inputs.expectedOutput,
37
+ timestamp: new Date().toISOString(),
38
+ generationTimeMs: generationTime,
39
+ };
40
+ }
41
+ catch (error) {
42
+ throw new ZKPError('Failed to generate proof with simplified backend', {
43
+ originalError: error,
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * 验证证明(模拟)
49
+ */
50
+ async verifyProof(proof, publicInputs) {
51
+ const startTime = Date.now();
52
+ try {
53
+ // 模拟验证:检查证明和公共输入是否有效
54
+ const isValid = proof.length > 0 && publicInputs.length > 0;
55
+ const verificationTime = Date.now() - startTime;
56
+ return {
57
+ isValid,
58
+ verificationTimeMs: verificationTime,
59
+ ...(!isValid ? { errorMessage: 'Invalid proof format' } : {}),
60
+ };
61
+ }
62
+ catch (error) {
63
+ return {
64
+ isValid: false,
65
+ verificationTimeMs: Date.now() - startTime,
66
+ errorMessage: `Verification failed: ${error}`,
67
+ };
68
+ }
69
+ }
70
+ /**
71
+ * 检查后端是否可用
72
+ */
73
+ isAvailable() {
74
+ return true; // 简化后端总是可用
75
+ }
76
+ }
77
+ //# sourceMappingURL=simplified-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simplified-backend.js","sourceRoot":"","sources":["../../src/zkp/simplified-backend.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAwB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAErE,gBAAgB;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CACzB,IAAI,CAAC,SAAS,CAAC;gBACb,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CACH,CAAC;YAEF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE9C,OAAO;gBACL,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC5B,YAAY,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC;gBAC1C,aAAa,EAAE,MAAM,CAAC,cAAc;gBACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,gBAAgB,EAAE,cAAc;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAAC,kDAAkD,EAAE;gBACrE,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,KAAiB,EACjB,YAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAE5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEhD,OAAO;gBACL,OAAO;gBACP,kBAAkB,EAAE,gBAAgB;gBACpC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAC1C,YAAY,EAAE,wBAAwB,KAAK,EAAE;aAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,CAAC,WAAW;IAC1B,CAAC;CACF"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Snarkjs ZKP 后端
3
+ * 使用 snarkjs 实现零知识证明
4
+ *
5
+ * 安装: npm install snarkjs
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { groth16 } from 'snarkjs';
10
+ *
11
+ * // 生成证明
12
+ * const { proof, publicSignals } = await groth16.fullProve(
13
+ * { in: 10 },
14
+ * 'circuit.wasm',
15
+ * 'circuit_final.zkey'
16
+ * );
17
+ *
18
+ * // 验证证明
19
+ * const vKey = await fetch('verification_key.json').then(r => r.json());
20
+ * const isValid = await groth16.verify(vKey, publicSignals, proof);
21
+ * ```
22
+ */
23
+ /**
24
+ * Snarkjs 证明结果
25
+ */
26
+ export interface SnarkjsProofResult {
27
+ /** 证明 */
28
+ proof: {
29
+ a: [string, string];
30
+ b: [[string, string], [string, string]];
31
+ c: [string, string];
32
+ };
33
+ /** 公共信号 */
34
+ publicSignals: string[];
35
+ }
36
+ /**
37
+ * Snarkjs 验证密钥
38
+ */
39
+ export interface SnarkjsVerificationKey {
40
+ /** 协议类型 */
41
+ protocol: 'groth16' | 'plonk' | 'fflonk';
42
+ /** 验证密钥数据 */
43
+ vk_alpha_x: string;
44
+ vk_alpha_x1: string;
45
+ vk_alpha_x2: string;
46
+ vk_beta_x1: string;
47
+ vk_beta_x2: string;
48
+ vk_gamma_x1: string;
49
+ vk_gamma_x2: string;
50
+ vk_delta_x1: string;
51
+ vk_delta_x2: string;
52
+ /** IC 数组 */
53
+ IC: [string, string][];
54
+ }
55
+ /**
56
+ * Snarkjs 证明输入
57
+ */
58
+ export interface SnarkjsProverInputs {
59
+ /** 私有输入(witness) */
60
+ privateInputs: Record<string, unknown>;
61
+ /** 公共输入 */
62
+ publicInputs?: Record<string, unknown>;
63
+ }
64
+ /**
65
+ * Snarkjs 后端配置
66
+ */
67
+ export interface SnarkjsBackendConfig {
68
+ /** WASM 文件路径 */
69
+ wasmPath: string;
70
+ /** zKey 文件路径 */
71
+ zkeyPath: string;
72
+ /** 验证密钥文件路径 */
73
+ vkeyPath?: string;
74
+ }
75
+ /**
76
+ * Snarkjs ZKP 后端
77
+ *
78
+ * 提供与 snarkjs 的集成,用于生成和验证零知识证明
79
+ */
80
+ export declare class SnarkjsBackend {
81
+ private config;
82
+ private verificationKey;
83
+ /**
84
+ * 创建 Snarkjs 后端
85
+ */
86
+ constructor(config?: SnarkjsBackendConfig);
87
+ /**
88
+ * 初始化后端
89
+ */
90
+ initialize(): Promise<void>;
91
+ /**
92
+ * 检查后端是否可用
93
+ */
94
+ isAvailable(): boolean;
95
+ /**
96
+ * 加载验证密钥
97
+ */
98
+ loadVerificationKey(): Promise<SnarkjsVerificationKey>;
99
+ /**
100
+ * 生成证明
101
+ *
102
+ * @param inputs - 证明输入
103
+ * @returns 证明结果和公共信号
104
+ */
105
+ generateProof(inputs: SnarkjsProverInputs): Promise<SnarkjsProofResult>;
106
+ /**
107
+ * 验证证明
108
+ *
109
+ * @param publicSignals - 公共信号
110
+ * @param proof - 证明
111
+ * @returns 是否验证通过
112
+ */
113
+ verifyProof(publicSignals: string[], proof: SnarkjsProofResult['proof']): Promise<boolean>;
114
+ /**
115
+ * 生成证明并验证(便捷方法)
116
+ */
117
+ proveAndVerify(inputs: SnarkjsProverInputs): Promise<{
118
+ proof: SnarkjsProofResult;
119
+ isValid: boolean;
120
+ }>;
121
+ /**
122
+ * 获取验证密钥
123
+ */
124
+ getVerificationKey(): SnarkjsVerificationKey | null;
125
+ /**
126
+ * 获取配置
127
+ */
128
+ getConfig(): SnarkjsBackendConfig;
129
+ }
130
+ /**
131
+ * 创建 Snarkjs 后端
132
+ */
133
+ export declare function createSnarkjsBackend(config: SnarkjsBackendConfig): SnarkjsBackend;
134
+ /**
135
+ * 完整的 Groth16 证明流程
136
+ */
137
+ export declare function groth16Prove(inputs: Record<string, unknown>, wasmPath: string, zkeyPath: string): Promise<SnarkjsProofResult>;
138
+ /**
139
+ * 完整的 Groth16 验证流程
140
+ */
141
+ export declare function groth16Verify(vKey: SnarkjsVerificationKey, publicSignals: string[], proof: SnarkjsProofResult['proof']): Promise<boolean>;
142
+ /**
143
+ * 导出验证密钥(用于将验证密钥部署到链上或前端)
144
+ */
145
+ export declare function exportSolidityVerifier(zkeyPath: string): Promise<string>;
146
+ /**
147
+ * 导出 Solidity Verifier 合约
148
+ */
149
+ export declare function exportVnMixVerifier(zkeyPath: string): Promise<string>;
150
+ //# sourceMappingURL=snarkjs-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snarkjs-backend.d.ts","sourceRoot":"","sources":["../../src/zkp/snarkjs-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Snarkjs ZKP 后端
3
+ * 使用 snarkjs 实现零知识证明
4
+ *
5
+ * 安装: npm install snarkjs
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { groth16 } from 'snarkjs';
10
+ *
11
+ * // 生成证明
12
+ * const { proof, publicSignals } = await groth16.fullProve(
13
+ * { in: 10 },
14
+ * 'circuit.wasm',
15
+ * 'circuit_final.zkey'
16
+ * );
17
+ *
18
+ * // 验证证明
19
+ * const vKey = await fetch('verification_key.json').then(r => r.json());
20
+ * const isValid = await groth16.verify(vKey, publicSignals, proof);
21
+ * ```
22
+ */
23
+ import { logger } from '../utils/logger.js';
24
+ /**
25
+ * Snarkjs ZKP 后端
26
+ *
27
+ * 提供与 snarkjs 的集成,用于生成和验证零知识证明
28
+ */
29
+ export class SnarkjsBackend {
30
+ config;
31
+ verificationKey = null;
32
+ /**
33
+ * 创建 Snarkjs 后端
34
+ */
35
+ constructor(config) {
36
+ this.config = config || { wasmPath: '', zkeyPath: '' };
37
+ logger.info('🔧 Snarkjs ZKP 后端已创建');
38
+ logger.info(` WASM: ${this.config.wasmPath}`);
39
+ logger.info(` zKey: ${this.config.zkeyPath}`);
40
+ }
41
+ /**
42
+ * 初始化后端
43
+ */
44
+ async initialize() {
45
+ logger.info('初始化 Snarkjs ZKP 后端...');
46
+ if (this.config.vkeyPath) {
47
+ await this.loadVerificationKey();
48
+ }
49
+ logger.info('✅ Snarkjs ZKP 后端初始化完成');
50
+ }
51
+ /**
52
+ * 检查后端是否可用
53
+ */
54
+ isAvailable() {
55
+ return true;
56
+ }
57
+ /**
58
+ * 加载验证密钥
59
+ */
60
+ async loadVerificationKey() {
61
+ if (this.verificationKey) {
62
+ return this.verificationKey;
63
+ }
64
+ if (!this.config.vkeyPath) {
65
+ throw new Error('验证密钥路径未配置');
66
+ }
67
+ try {
68
+ const response = await fetch(this.config.vkeyPath);
69
+ this.verificationKey = await response.json();
70
+ logger.info('✅ 验证密钥加载成功');
71
+ return this.verificationKey;
72
+ }
73
+ catch (error) {
74
+ logger.error(`❌ 加载验证密钥失败: ${error}`);
75
+ throw error;
76
+ }
77
+ }
78
+ /**
79
+ * 生成证明
80
+ *
81
+ * @param inputs - 证明输入
82
+ * @returns 证明结果和公共信号
83
+ */
84
+ async generateProof(inputs) {
85
+ logger.info('🔐 生成零知识证明...');
86
+ try {
87
+ // 动态导入 snarkjs
88
+ const { groth16 } = await import('snarkjs');
89
+ // 合并输入
90
+ const fullInputs = {
91
+ ...inputs.privateInputs,
92
+ ...inputs.publicInputs,
93
+ };
94
+ // 生成证明
95
+ const result = await groth16.fullProve(fullInputs, this.config.wasmPath, this.config.zkeyPath);
96
+ logger.info('✅ 证明生成成功');
97
+ return {
98
+ proof: result.proof,
99
+ publicSignals: result.publicSignals,
100
+ };
101
+ }
102
+ catch (error) {
103
+ logger.error(`❌ 证明生成失败: ${error}`);
104
+ throw error;
105
+ }
106
+ }
107
+ /**
108
+ * 验证证明
109
+ *
110
+ * @param publicSignals - 公共信号
111
+ * @param proof - 证明
112
+ * @returns 是否验证通过
113
+ */
114
+ async verifyProof(publicSignals, proof) {
115
+ logger.info('🔍 验证零知识证明...');
116
+ try {
117
+ const vKey = await this.loadVerificationKey();
118
+ const { groth16 } = await import('snarkjs');
119
+ const isValid = await groth16.verify(vKey, publicSignals, proof);
120
+ if (isValid) {
121
+ logger.info('✅ 证明验证通过');
122
+ }
123
+ else {
124
+ logger.warn('❌ 证明验证失败');
125
+ }
126
+ return isValid;
127
+ }
128
+ catch (error) {
129
+ logger.error(`❌ 验证失败: ${error}`);
130
+ return false;
131
+ }
132
+ }
133
+ /**
134
+ * 生成证明并验证(便捷方法)
135
+ */
136
+ async proveAndVerify(inputs) {
137
+ const proof = await this.generateProof(inputs);
138
+ const isValid = await this.verifyProof(proof.publicSignals, proof.proof);
139
+ return { proof, isValid };
140
+ }
141
+ /**
142
+ * 获取验证密钥
143
+ */
144
+ getVerificationKey() {
145
+ return this.verificationKey;
146
+ }
147
+ /**
148
+ * 获取配置
149
+ */
150
+ getConfig() {
151
+ return { ...this.config };
152
+ }
153
+ }
154
+ /**
155
+ * 创建 Snarkjs 后端
156
+ */
157
+ export function createSnarkjsBackend(config) {
158
+ return new SnarkjsBackend(config);
159
+ }
160
+ /**
161
+ * 完整的 Groth16 证明流程
162
+ */
163
+ export async function groth16Prove(inputs, wasmPath, zkeyPath) {
164
+ const { groth16 } = await import('snarkjs');
165
+ logger.info('🔐 使用 Groth16 生成证明...');
166
+ const result = await groth16.fullProve(inputs, wasmPath, zkeyPath);
167
+ logger.info('✅ Groth16 证明生成成功');
168
+ return {
169
+ proof: result.proof,
170
+ publicSignals: result.publicSignals,
171
+ };
172
+ }
173
+ /**
174
+ * 完整的 Groth16 验证流程
175
+ */
176
+ export async function groth16Verify(vKey, publicSignals, proof) {
177
+ const { groth16 } = await import('snarkjs');
178
+ logger.info('🔍 使用 Groth16 验证证明...');
179
+ const isValid = await groth16.verify(vKey, publicSignals, proof);
180
+ if (isValid) {
181
+ logger.info('✅ Groth16 验证通过');
182
+ }
183
+ else {
184
+ logger.warn('❌ Groth16 验证失败');
185
+ }
186
+ return isValid;
187
+ }
188
+ /**
189
+ * 导出验证密钥(用于将验证密钥部署到链上或前端)
190
+ */
191
+ export async function exportSolidityVerifier(zkeyPath) {
192
+ const { zkey } = await import('snarkjs');
193
+ logger.info('📝 导出 Solidity 验证器...');
194
+ const vKey = await zkey.loadZKey(zkeyPath);
195
+ const { groth16 } = await import('snarkjs');
196
+ // @ts-ignore - snarkjs 的类型定义不完整
197
+ const solidityCode = await groth16.exportSolidityVerifier(vKey);
198
+ logger.info('✅ Solidity 验证器导出成功');
199
+ return solidityCode;
200
+ }
201
+ /**
202
+ * 导出 Solidity Verifier 合约
203
+ */
204
+ export async function exportVnMixVerifier(zkeyPath) {
205
+ const { zkey } = await import('snarkjs');
206
+ logger.info('📝 导出 Verifier Mix 合约...');
207
+ const vKey = await zkey.loadZKey(zkeyPath);
208
+ const { zkevm } = await import('snarkjs');
209
+ // @ts-ignore - snarkjs 的类型定义不完整
210
+ const solidityCode = await zkevm.exportSolidityVerifier(vKey);
211
+ logger.info('✅ Verifier Mix 合约导出成功');
212
+ return solidityCode;
213
+ }
214
+ // ============================================================================
215
+ // 导出
216
+ // ============================================================================
217
+ // 注意: 所有函数和类型已在声明时导出
218
+ //# sourceMappingURL=snarkjs-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snarkjs-backend.js","sourceRoot":"","sources":["../../src/zkp/snarkjs-backend.ts"],"names":[],"mappings":"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"}