@bitshard.io/bitshard-sdk 0.0.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/dist/BitShardSDK.d.ts +156 -0
- package/dist/BitShardSDK.d.ts.map +1 -0
- package/dist/BitShardSDK.js +350 -0
- package/dist/BitShardSDK.js.map +1 -0
- package/dist/chains/bitcoin/BitcoinChain.d.ts +6 -0
- package/dist/chains/bitcoin/BitcoinChain.d.ts.map +1 -0
- package/dist/chains/bitcoin/BitcoinChain.js +10 -0
- package/dist/chains/bitcoin/BitcoinChain.js.map +1 -0
- package/dist/chains/config.d.ts +5 -0
- package/dist/chains/config.d.ts.map +1 -0
- package/dist/chains/config.js +7 -0
- package/dist/chains/config.js.map +1 -0
- package/dist/chains/evm/EVMChain.d.ts +6 -0
- package/dist/chains/evm/EVMChain.d.ts.map +1 -0
- package/dist/chains/evm/EVMChain.js +10 -0
- package/dist/chains/evm/EVMChain.js.map +1 -0
- package/dist/core/DKLSParty.d.ts +132 -0
- package/dist/core/DKLSParty.d.ts.map +1 -0
- package/dist/core/DKLSParty.js +267 -0
- package/dist/core/DKLSParty.js.map +1 -0
- package/dist/core/DKLSService.d.ts +83 -0
- package/dist/core/DKLSService.d.ts.map +1 -0
- package/dist/core/DKLSService.js +325 -0
- package/dist/core/DKLSService.js.map +1 -0
- package/dist/core/ThresholdConfig.d.ts +76 -0
- package/dist/core/ThresholdConfig.d.ts.map +1 -0
- package/dist/core/ThresholdConfig.js +127 -0
- package/dist/core/ThresholdConfig.js.map +1 -0
- package/dist/core/types.d.ts +238 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/crypto/addresses.d.ts +82 -0
- package/dist/crypto/addresses.d.ts.map +1 -0
- package/dist/crypto/addresses.js +242 -0
- package/dist/crypto/addresses.js.map +1 -0
- package/dist/crypto/elliptic.d.ts +19 -0
- package/dist/crypto/elliptic.d.ts.map +1 -0
- package/dist/crypto/elliptic.js +114 -0
- package/dist/crypto/elliptic.js.map +1 -0
- package/dist/crypto/encoding.d.ts +111 -0
- package/dist/crypto/encoding.d.ts.map +1 -0
- package/dist/crypto/encoding.js +224 -0
- package/dist/crypto/encoding.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/keygen.d.ts +6 -0
- package/dist/protocols/keygen.d.ts.map +1 -0
- package/dist/protocols/keygen.js +12 -0
- package/dist/protocols/keygen.js.map +1 -0
- package/dist/protocols/presignature.d.ts +68 -0
- package/dist/protocols/presignature.d.ts.map +1 -0
- package/dist/protocols/presignature.js +147 -0
- package/dist/protocols/presignature.js.map +1 -0
- package/dist/protocols/refresh.d.ts +5 -0
- package/dist/protocols/refresh.d.ts.map +1 -0
- package/dist/protocols/refresh.js +10 -0
- package/dist/protocols/refresh.js.map +1 -0
- package/dist/protocols/signing.d.ts +7 -0
- package/dist/protocols/signing.d.ts.map +1 -0
- package/dist/protocols/signing.js +12 -0
- package/dist/protocols/signing.js.map +1 -0
- package/dist/rpc/RPCProvider.d.ts +6 -0
- package/dist/rpc/RPCProvider.d.ts.map +1 -0
- package/dist/rpc/RPCProvider.js +6 -0
- package/dist/rpc/RPCProvider.js.map +1 -0
- package/dist/rpc/methods.d.ts +5 -0
- package/dist/rpc/methods.d.ts.map +1 -0
- package/dist/rpc/methods.js +10 -0
- package/dist/rpc/methods.js.map +1 -0
- package/dist/websocket/coordinator.d.ts +6 -0
- package/dist/websocket/coordinator.d.ts.map +1 -0
- package/dist/websocket/coordinator.js +10 -0
- package/dist/websocket/coordinator.js.map +1 -0
- package/dist/websocket/messages.d.ts +9 -0
- package/dist/websocket/messages.d.ts.map +1 -0
- package/dist/websocket/messages.js +7 -0
- package/dist/websocket/messages.js.map +1 -0
- package/dist/websocket/session.d.ts +5 -0
- package/dist/websocket/session.d.ts.map +1 -0
- package/dist/websocket/session.js +7 -0
- package/dist/websocket/session.js.map +1 -0
- package/dist/wire/format.d.ts +8 -0
- package/dist/wire/format.d.ts.map +1 -0
- package/dist/wire/format.js +11 -0
- package/dist/wire/format.js.map +1 -0
- package/dist/wire/validation.d.ts +6 -0
- package/dist/wire/validation.d.ts.map +1 -0
- package/dist/wire/validation.js +13 -0
- package/dist/wire/validation.js.map +1 -0
- package/package.json +67 -0
- package/src/BitShardSDK.ts +428 -0
- package/src/chains/bitcoin/BitcoinChain.ts +7 -0
- package/src/chains/config.ts +7 -0
- package/src/chains/evm/EVMChain.ts +7 -0
- package/src/core/DKLSParty.ts +317 -0
- package/src/core/DKLSService.ts +426 -0
- package/src/core/ThresholdConfig.ts +159 -0
- package/src/core/types.ts +253 -0
- package/src/crypto/addresses.ts +282 -0
- package/src/crypto/elliptic.ts +133 -0
- package/src/crypto/encoding.ts +227 -0
- package/src/index.ts +40 -0
- package/src/protocols/keygen.ts +8 -0
- package/src/protocols/presignature.ts +196 -0
- package/src/protocols/refresh.ts +7 -0
- package/src/protocols/signing.ts +9 -0
- package/src/rpc/RPCProvider.ts +7 -0
- package/src/rpc/methods.ts +7 -0
- package/src/websocket/coordinator.ts +7 -0
- package/src/websocket/messages.ts +11 -0
- package/src/websocket/session.ts +7 -0
- package/src/wire/format.ts +10 -0
- package/src/wire/validation.ts +14 -0
- package/test-sdk.js +234 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pre-signature generation and management
|
|
4
|
+
*
|
|
5
|
+
* CRITICAL SECURITY WARNING:
|
|
6
|
+
* Pre-signatures MUST NOT be reused. Reusing a pre-signature will expose the private key.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.preSignatureManager = exports.PreSignatureManager = void 0;
|
|
10
|
+
const dkls_wasm_ll_node_1 = require("@silencelaboratories/dkls-wasm-ll-node");
|
|
11
|
+
/**
|
|
12
|
+
* Pre-signature manager for secure pre-signature generation and tracking
|
|
13
|
+
*/
|
|
14
|
+
class PreSignatureManager {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.consumedPreSignatures = new Set();
|
|
17
|
+
this.preSignaturePool = new Map();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate pre-signatures that can be computed ahead of time
|
|
21
|
+
* @param keyshares Array of keyshares
|
|
22
|
+
* @param threshold Threshold value
|
|
23
|
+
* @param count Number of pre-signatures to generate
|
|
24
|
+
* @returns Array of pre-signatures
|
|
25
|
+
*/
|
|
26
|
+
async generatePreSignatures(keyshares, threshold, count = 1) {
|
|
27
|
+
if (keyshares.length < threshold) {
|
|
28
|
+
throw new Error(`Insufficient keyshares: need ${threshold}, got ${keyshares.length}`);
|
|
29
|
+
}
|
|
30
|
+
const preSignatures = [];
|
|
31
|
+
for (let i = 0; i < count; i++) {
|
|
32
|
+
const id = this.generateId();
|
|
33
|
+
// Use first threshold keyshares
|
|
34
|
+
const signingShares = keyshares.slice(0, threshold);
|
|
35
|
+
// Create sign sessions
|
|
36
|
+
const parties = signingShares.map(ks => new dkls_wasm_ll_node_1.SignSession(ks, "m"));
|
|
37
|
+
// Execute pre-signature rounds
|
|
38
|
+
const preSignature = await this.executePreSignatureRounds(parties, id);
|
|
39
|
+
preSignatures.push(preSignature);
|
|
40
|
+
this.preSignaturePool.set(id, preSignature);
|
|
41
|
+
}
|
|
42
|
+
return preSignatures;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Execute pre-signature generation rounds
|
|
46
|
+
*/
|
|
47
|
+
async executePreSignatureRounds(parties, id) {
|
|
48
|
+
// Round 1: Create first messages
|
|
49
|
+
const msg1 = parties.map(p => p.createFirstMessage());
|
|
50
|
+
const selfIds = msg1.map(m => m.from_id);
|
|
51
|
+
// Round 2: Broadcast first messages
|
|
52
|
+
const msg2 = parties.flatMap((p, idx) => p.handleMessages(this.filterMessages(msg1, selfIds[idx])));
|
|
53
|
+
// Round 3: Handle P2P messages
|
|
54
|
+
const msg3 = parties.flatMap((p, idx) => p.handleMessages(this.selectMessages(msg2, selfIds[idx])));
|
|
55
|
+
// Round 4: Complete pre-signature
|
|
56
|
+
parties.forEach((p, idx) => p.handleMessages(this.selectMessages(msg3, selfIds[idx])));
|
|
57
|
+
return {
|
|
58
|
+
id,
|
|
59
|
+
parties,
|
|
60
|
+
createdAt: new Date(),
|
|
61
|
+
consumed: false
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Use a pre-signature to sign a message
|
|
66
|
+
* @param messageHash Message hash to sign
|
|
67
|
+
* @param preSignature Pre-signature to consume
|
|
68
|
+
* @returns Signature components
|
|
69
|
+
*/
|
|
70
|
+
async signWithPreSignature(messageHash, preSignature) {
|
|
71
|
+
// Check if pre-signature has already been used
|
|
72
|
+
if (this.consumedPreSignatures.has(preSignature.id)) {
|
|
73
|
+
throw new Error('CRITICAL: Pre-signature has already been used! ' +
|
|
74
|
+
'Reusing pre-signatures exposes the private key!');
|
|
75
|
+
}
|
|
76
|
+
if (preSignature.consumed) {
|
|
77
|
+
throw new Error('Pre-signature has already been consumed');
|
|
78
|
+
}
|
|
79
|
+
// Mark as consumed IMMEDIATELY
|
|
80
|
+
this.consumedPreSignatures.add(preSignature.id);
|
|
81
|
+
preSignature.consumed = true;
|
|
82
|
+
const { parties } = preSignature;
|
|
83
|
+
const selfIds = parties.map((_, idx) => idx);
|
|
84
|
+
// Generate last message with actual message hash
|
|
85
|
+
const msg4 = parties.map(p => p.lastMessage(messageHash));
|
|
86
|
+
// Combine to produce signature (consumes session)
|
|
87
|
+
const signatures = parties.map((p, idx) => p.combine(this.filterMessages(msg4, selfIds[idx])));
|
|
88
|
+
// All parties should produce the same signature
|
|
89
|
+
return signatures[0];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if a pre-signature has been consumed
|
|
93
|
+
* @param id Pre-signature ID
|
|
94
|
+
* @returns True if consumed
|
|
95
|
+
*/
|
|
96
|
+
isConsumed(id) {
|
|
97
|
+
return this.consumedPreSignatures.has(id);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get available pre-signature count
|
|
101
|
+
* @returns Number of unused pre-signatures
|
|
102
|
+
*/
|
|
103
|
+
getAvailableCount() {
|
|
104
|
+
return Array.from(this.preSignaturePool.values())
|
|
105
|
+
.filter(ps => !ps.consumed).length;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get next available pre-signature
|
|
109
|
+
* @returns Pre-signature or undefined
|
|
110
|
+
*/
|
|
111
|
+
getNextAvailable() {
|
|
112
|
+
return Array.from(this.preSignaturePool.values())
|
|
113
|
+
.find(ps => !ps.consumed);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Clear consumed pre-signatures from pool
|
|
117
|
+
*/
|
|
118
|
+
cleanupConsumed() {
|
|
119
|
+
for (const [id, preSignature] of this.preSignaturePool.entries()) {
|
|
120
|
+
if (preSignature.consumed) {
|
|
121
|
+
this.preSignaturePool.delete(id);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate unique ID
|
|
127
|
+
*/
|
|
128
|
+
generateId() {
|
|
129
|
+
return `presig-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Filter messages for broadcast
|
|
133
|
+
*/
|
|
134
|
+
filterMessages(msgs, party) {
|
|
135
|
+
return msgs.filter((m) => m.from_id !== party).map(m => m.clone());
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Select P2P messages
|
|
139
|
+
*/
|
|
140
|
+
selectMessages(msgs, party) {
|
|
141
|
+
return msgs.filter((m) => m.to_id === party).map(m => m.clone());
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.PreSignatureManager = PreSignatureManager;
|
|
145
|
+
// Export singleton instance
|
|
146
|
+
exports.preSignatureManager = new PreSignatureManager();
|
|
147
|
+
//# sourceMappingURL=presignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presignature.js","sourceRoot":"","sources":["../../src/protocols/presignature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/protocols/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Key refresh/rotation protocol
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DKLSService = void 0;
|
|
7
|
+
var DKLSService_1 = require("../core/DKLSService");
|
|
8
|
+
Object.defineProperty(exports, "DKLSService", { enumerable: true, get: function () { return DKLSService_1.DKLSService; } });
|
|
9
|
+
// TODO: Implement key refresh protocol helpers
|
|
10
|
+
//# sourceMappingURL=refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/protocols/refresh.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,+CAA+C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/protocols/signing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Signing protocol implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DKLSParty = exports.DKLSService = void 0;
|
|
7
|
+
var DKLSService_1 = require("../core/DKLSService");
|
|
8
|
+
Object.defineProperty(exports, "DKLSService", { enumerable: true, get: function () { return DKLSService_1.DKLSService; } });
|
|
9
|
+
var DKLSParty_1 = require("../core/DKLSParty");
|
|
10
|
+
Object.defineProperty(exports, "DKLSParty", { enumerable: true, get: function () { return DKLSParty_1.DKLSParty; } });
|
|
11
|
+
// TODO: Implement signing protocol helpers
|
|
12
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/protocols/signing.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,+CAA8C;AAArC,sGAAA,SAAS,OAAA;AAGlB,2CAA2C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RPCProvider.d.ts","sourceRoot":"","sources":["../../src/rpc/RPCProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;CAE3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RPCProvider.js","sourceRoot":"","sources":["../../src/rpc/RPCProvider.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../src/rpc/methods.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,WAAW,IAEvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/rpc/methods.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,WAAW,GAAG;AACvB,8BAA8B;CACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/websocket/coordinator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,oBAAoB;CAEhC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WebSocket coordinator for multi-party protocols
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WebSocketCoordinator = void 0;
|
|
7
|
+
class WebSocketCoordinator {
|
|
8
|
+
}
|
|
9
|
+
exports.WebSocketCoordinator = WebSocketCoordinator;
|
|
10
|
+
//# sourceMappingURL=coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/websocket/coordinator.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,MAAa,oBAAoB;CAEhC;AAFD,oDAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/websocket/messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/websocket/messages.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAQH,oCAAoC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/websocket/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/websocket/session.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,qCAAqC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire message format utilities
|
|
3
|
+
*/
|
|
4
|
+
export type { WireMessage } from '../core/types';
|
|
5
|
+
import { DKLSService } from '../core/DKLSService';
|
|
6
|
+
export declare const toWireMessage: typeof DKLSService.toWireMessage;
|
|
7
|
+
export declare const fromWireMessage: typeof DKLSService.fromWireMessage;
|
|
8
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/wire/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,eAAO,MAAM,aAAa,kCAA4B,CAAC;AACvD,eAAO,MAAM,eAAe,oCAA8B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wire message format utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fromWireMessage = exports.toWireMessage = void 0;
|
|
7
|
+
const DKLSService_1 = require("../core/DKLSService");
|
|
8
|
+
// Re-export wire format methods
|
|
9
|
+
exports.toWireMessage = DKLSService_1.DKLSService.toWireMessage;
|
|
10
|
+
exports.fromWireMessage = DKLSService_1.DKLSService.fromWireMessage;
|
|
11
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/wire/format.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,qDAAkD;AAElD,gCAAgC;AACnB,QAAA,aAAa,GAAG,yBAAW,CAAC,aAAa,CAAC;AAC1C,QAAA,eAAe,GAAG,yBAAW,CAAC,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/wire/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,WAAW,CAOxE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wire message validation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateWireMessage = validateWireMessage;
|
|
7
|
+
function validateWireMessage(message) {
|
|
8
|
+
return (typeof message === 'object' &&
|
|
9
|
+
typeof message.from_id === 'number' &&
|
|
10
|
+
typeof message.payload === 'string' &&
|
|
11
|
+
(message.to_id === undefined || typeof message.to_id === 'number'));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/wire/validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,kDAOC;AAPD,SAAgB,mBAAmB,CAAC,OAAY;IAC5C,OAAO,CACH,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CACrE,CAAC;AACN,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bitshard.io/bitshard-sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "BitShard MPC SDK for distributed key generation and threshold signatures",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"src",
|
|
10
|
+
"test-sdk.js"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc -p tsconfig.build.json",
|
|
14
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"test:watch": "jest --watch",
|
|
17
|
+
"typecheck": "tsc --noEmit",
|
|
18
|
+
"lint": "eslint src --ext .ts",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mpc",
|
|
23
|
+
"threshold-signatures",
|
|
24
|
+
"dkls",
|
|
25
|
+
"distributed-key-generation",
|
|
26
|
+
"wallet",
|
|
27
|
+
"crypto",
|
|
28
|
+
"bitcoin",
|
|
29
|
+
"ethereum",
|
|
30
|
+
"arbitrum"
|
|
31
|
+
],
|
|
32
|
+
"author": "bitshard.io",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/bitshard-io/bitshard-sdk"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@silencelaboratories/dkls-wasm-ll-node": "^1.2.0",
|
|
40
|
+
"bitcoinjs-lib": "^6.1.5",
|
|
41
|
+
"ethers": "^5.8.0",
|
|
42
|
+
"viem": "^2.7.0",
|
|
43
|
+
"ws": "^8.16.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/jest": "^29.5.11",
|
|
47
|
+
"@types/node": "^20.10.5",
|
|
48
|
+
"@types/ws": "^8.5.10",
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
|
50
|
+
"@typescript-eslint/parser": "^6.15.0",
|
|
51
|
+
"eslint": "^8.56.0",
|
|
52
|
+
"jest": "^29.7.0",
|
|
53
|
+
"ts-jest": "^29.1.1",
|
|
54
|
+
"typescript": "^5.3.3"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"@silencelaboratories/dkls-wasm-ll-web": "^1.2.0"
|
|
58
|
+
},
|
|
59
|
+
"peerDependenciesMeta": {
|
|
60
|
+
"@silencelaboratories/dkls-wasm-ll-web": {
|
|
61
|
+
"optional": true
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=16"
|
|
66
|
+
}
|
|
67
|
+
}
|