@bitshard.io/bitshard-sdk 0.0.1 → 0.0.3
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 +21 -0
- package/README.md +211 -0
- package/dist/BitShardSDK.d.ts +14 -5
- package/dist/BitShardSDK.d.ts.map +1 -1
- package/dist/BitShardSDK.js +28 -93
- package/dist/BitShardSDK.js.map +1 -1
- package/dist/chains/config.d.ts +8 -4
- package/dist/chains/config.d.ts.map +1 -1
- package/dist/chains/config.js +88 -4
- package/dist/chains/config.js.map +1 -1
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/BitShardSDK.ts +30 -99
- package/src/chains/config.ts +91 -5
- package/src/core/types.ts +6 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 bitshard-io
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# BitShard SDK
|
|
2
|
+
|
|
3
|
+
BitShard SDK is a TypeScript library for distributed key generation (DKG) and threshold signatures using the DKLs23 protocol. It enables secure multi-party computation (MPC) wallets with flexible n-of-m threshold configurations.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Distributed Key Generation**: Secure generation of threshold key shares across multiple parties
|
|
8
|
+
- **Threshold Signatures**: Sign transactions with any t-of-n parties
|
|
9
|
+
- **Multi-Chain Support**: Native support for Ethereum, Bitcoin, and EVM-compatible chains
|
|
10
|
+
- **WebSocket Coordination**: Real-time protocol coordination between parties
|
|
11
|
+
- **Flexible Configuration**: Support for any n-of-m threshold scheme
|
|
12
|
+
- **Pre-signature Management**: Secure generation and consumption of pre-signatures
|
|
13
|
+
- **Address Derivation**: Consistent address generation across all supported chains
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm i @bitshard.io/bitshard-sdk
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For browser environments, you'll also need the web WASM module:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @silencelaboratories/dkls-wasm-ll-web
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
### Local Testing (All Parties in One Process)
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { BitShardSDK } from '@bitshard.io/bitshard-sdk'
|
|
33
|
+
|
|
34
|
+
const sdk = new BitShardSDK();
|
|
35
|
+
|
|
36
|
+
// Create a 2-of-3 threshold wallet locally
|
|
37
|
+
const wallet = await sdk.createLocalWallet({
|
|
38
|
+
totalParties: 3,
|
|
39
|
+
threshold: 2,
|
|
40
|
+
partyIds: [0, 1, 2]
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Derive addresses
|
|
44
|
+
const addresses = sdk.deriveAddresses(wallet.publicKey);
|
|
45
|
+
console.log('Ethereum address:', addresses.ethereum);
|
|
46
|
+
console.log('Bitcoin address:', addresses.bitcoin);
|
|
47
|
+
|
|
48
|
+
// Sign a message
|
|
49
|
+
const message = 'Hello BitShard!';
|
|
50
|
+
const signature = await sdk.personalSign(message, wallet.keyshares, {
|
|
51
|
+
threshold: 2,
|
|
52
|
+
publicKey: wallet.publicKey
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Distributed Setup (WebSocket Coordination)
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// Party 0 (Coordinator)
|
|
60
|
+
const party0 = sdk.createParty({
|
|
61
|
+
partyId: 0,
|
|
62
|
+
totalParties: 3,
|
|
63
|
+
threshold: 2,
|
|
64
|
+
role: 'coordinator'
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Connect to WebSocket server
|
|
68
|
+
await party0.connect('ws://localhost:8080/ws');
|
|
69
|
+
|
|
70
|
+
// Initiate DKG
|
|
71
|
+
const session = await party0.initiateDKG();
|
|
72
|
+
|
|
73
|
+
// Other parties join using session.id
|
|
74
|
+
// ... coordinate protocol rounds via WebSocket ...
|
|
75
|
+
|
|
76
|
+
const keyshare = await party0.finalize();
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Architecture
|
|
80
|
+
|
|
81
|
+
The SDK is organized into several modules:
|
|
82
|
+
|
|
83
|
+
- **Core**: DKLS protocol implementation and party management
|
|
84
|
+
- **Crypto**: Address derivation and encoding utilities
|
|
85
|
+
- **Protocols**: DKG, signing, and key refresh protocols
|
|
86
|
+
- **Chains**: Multi-chain configuration and transaction handling
|
|
87
|
+
- **RPC**: EIP-1193 compatible RPC methods
|
|
88
|
+
- **WebSocket**: Real-time protocol coordination
|
|
89
|
+
|
|
90
|
+
## Security
|
|
91
|
+
|
|
92
|
+
**⚠️ CRITICAL: Pre-signatures MUST NOT be reused**
|
|
93
|
+
|
|
94
|
+
Reusing pre-signatures will expose your private key. The SDK includes built-in protection against pre-signature reuse, but developers must ensure proper handling in their applications.
|
|
95
|
+
|
|
96
|
+
## Documentation
|
|
97
|
+
|
|
98
|
+
- [Architecture Design](./ARCHITECTURE_DESIGN.md)
|
|
99
|
+
- [API Specification](./API_SPEC.md)
|
|
100
|
+
- [API Reference](./API_REFERENCE.md)
|
|
101
|
+
|
|
102
|
+
## Examples
|
|
103
|
+
|
|
104
|
+
See the [examples](./examples) directory for:
|
|
105
|
+
- Basic wallet creation
|
|
106
|
+
- WebSocket coordination
|
|
107
|
+
- Multi-party signing
|
|
108
|
+
- Chain-specific transactions
|
|
109
|
+
- Docker deployment
|
|
110
|
+
|
|
111
|
+
## License
|
|
112
|
+
|
|
113
|
+
MIT
|
|
114
|
+
|
|
115
|
+
## Contributing
|
|
116
|
+
|
|
117
|
+
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
|
|
118
|
+
|
|
119
|
+
# Releasing new version guide
|
|
120
|
+
|
|
121
|
+
This document describes the standard release process for publishing the `@bitshard.io/bitshard-sdk` package.
|
|
122
|
+
|
|
123
|
+
> **Rule:** Always push commits and tags to GitHub **before** publishing to npm.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Release Steps
|
|
128
|
+
|
|
129
|
+
### 1. Commit your changes
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
git add .
|
|
133
|
+
git commit -m "feat: describe your change"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### 2. Bump version and create a Git tag
|
|
139
|
+
|
|
140
|
+
Patch release example (`0.0.1` → `0.0.2`):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npm version patch
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
This will:
|
|
147
|
+
- Update `package.json`
|
|
148
|
+
- Create an annotated Git tag (e.g. `v0.0.2`)
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 3. Push commits and tags to GitHub
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
git push origin main --follow-tags
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This ensures Git is the source of truth before publishing.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### 4. Build the package
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
npm run build
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Verify:
|
|
169
|
+
- Build output exists (e.g. `dist/`)
|
|
170
|
+
- `package.json` points to built files (`main`, `module`, `types`)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### 5. Publish to npm
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npm publish --access public
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
> Scoped packages default to private unless published with `--access public` or `publishConfig.access = "public"`.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### 6. Verify release
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm view @bitshard.io/bitshard-sdk version
|
|
188
|
+
git tag --list
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Release Checklist
|
|
194
|
+
|
|
195
|
+
- [ ] Changes committed
|
|
196
|
+
- [ ] Version bumped via `npm version`
|
|
197
|
+
- [ ] Commits and tags pushed to GitHub
|
|
198
|
+
- [ ] Build successful
|
|
199
|
+
- [ ] npm publish successful
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Notes
|
|
204
|
+
|
|
205
|
+
- Do not publish to npm without a Git tag
|
|
206
|
+
- Ensure you are authenticated with npm using a publish-capable token (2FA-compliant)
|
|
207
|
+
- Prefer annotated tags for all releases
|
|
208
|
+
|
|
209
|
+
## Support
|
|
210
|
+
|
|
211
|
+
For support, please open an issue on GitHub or contact dev@bitshard.io
|
package/dist/BitShardSDK.d.ts
CHANGED
|
@@ -24,6 +24,18 @@ export declare class BitShardSDK {
|
|
|
24
24
|
threshold?: number;
|
|
25
25
|
partyIds?: number[];
|
|
26
26
|
}): Promise<LocalWallet>;
|
|
27
|
+
/**
|
|
28
|
+
* Serialize keyshares (WASM objects) to base64 array for storage
|
|
29
|
+
* @param keyshares Array of Keyshare WASM objects
|
|
30
|
+
* @returns Array of base64-encoded strings
|
|
31
|
+
*/
|
|
32
|
+
static serializeKeyshares(keyshares: Keyshare[]): string[];
|
|
33
|
+
/**
|
|
34
|
+
* Deserialize base64 array back to Keyshare WASM objects
|
|
35
|
+
* @param serialized Array of base64-encoded strings
|
|
36
|
+
* @returns Array of Keyshare WASM objects
|
|
37
|
+
*/
|
|
38
|
+
static deserializeKeyshares(serialized: string[]): Keyshare[];
|
|
27
39
|
/**
|
|
28
40
|
* Create a party for distributed setup
|
|
29
41
|
* @param config Party configuration
|
|
@@ -55,9 +67,9 @@ export declare class BitShardSDK {
|
|
|
55
67
|
* @param options Signing options including publicKey for v calculation
|
|
56
68
|
* @returns Signature result
|
|
57
69
|
*/
|
|
58
|
-
personalSign(message: string, keyshares: Keyshare[], options
|
|
70
|
+
personalSign(message: string, keyshares: Keyshare[], options: {
|
|
59
71
|
threshold?: number;
|
|
60
|
-
publicKey
|
|
72
|
+
publicKey: string;
|
|
61
73
|
}): Promise<SignatureResult>;
|
|
62
74
|
/**
|
|
63
75
|
* Sign a personal message using a wallet (convenience method)
|
|
@@ -137,9 +149,6 @@ export declare class BitShardSDK {
|
|
|
137
149
|
* @returns Bitcoin configuration or undefined
|
|
138
150
|
*/
|
|
139
151
|
getBitcoinConfig(): BitcoinConfig | undefined;
|
|
140
|
-
/**
|
|
141
|
-
* Initialize default chain configurations
|
|
142
|
-
*/
|
|
143
152
|
private initializeDefaultChains;
|
|
144
153
|
/**
|
|
145
154
|
* Get preset chain configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitShardSDK.d.ts","sourceRoot":"","sources":["../src/BitShardSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACR,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"BitShardSDK.d.ts","sourceRoot":"","sources":["../src/BitShardSDK.ts"],"names":[],"mappings":"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"}
|
package/dist/BitShardSDK.js
CHANGED
|
@@ -5,6 +5,7 @@ const dkls_wasm_ll_node_1 = require("@silencelaboratories/dkls-wasm-ll-node");
|
|
|
5
5
|
const DKLSService_1 = require("./core/DKLSService");
|
|
6
6
|
const DKLSParty_1 = require("./core/DKLSParty");
|
|
7
7
|
const addresses_1 = require("./crypto/addresses");
|
|
8
|
+
const config_1 = require("./chains/config");
|
|
8
9
|
/**
|
|
9
10
|
* Main SDK class for BitShard MPC operations
|
|
10
11
|
*/
|
|
@@ -52,6 +53,28 @@ class BitShardSDK {
|
|
|
52
53
|
}
|
|
53
54
|
};
|
|
54
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Serialize keyshares (WASM objects) to base64 array for storage
|
|
58
|
+
* @param keyshares Array of Keyshare WASM objects
|
|
59
|
+
* @returns Array of base64-encoded strings
|
|
60
|
+
*/
|
|
61
|
+
static serializeKeyshares(keyshares) {
|
|
62
|
+
return keyshares.map(ks => {
|
|
63
|
+
const bytes = ks.toBytes();
|
|
64
|
+
return Buffer.from(bytes).toString('base64');
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Deserialize base64 array back to Keyshare WASM objects
|
|
69
|
+
* @param serialized Array of base64-encoded strings
|
|
70
|
+
* @returns Array of Keyshare WASM objects
|
|
71
|
+
*/
|
|
72
|
+
static deserializeKeyshares(serialized) {
|
|
73
|
+
return serialized.map(b64 => {
|
|
74
|
+
const bytes = new Uint8Array(Buffer.from(b64, 'base64'));
|
|
75
|
+
return dkls_wasm_ll_node_1.Keyshare.fromBytes(bytes);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
55
78
|
/**
|
|
56
79
|
* Create a party for distributed setup
|
|
57
80
|
* @param config Party configuration
|
|
@@ -100,7 +123,7 @@ class BitShardSDK {
|
|
|
100
123
|
* @param options Signing options including publicKey for v calculation
|
|
101
124
|
* @returns Signature result
|
|
102
125
|
*/
|
|
103
|
-
async personalSign(message, keyshares, options
|
|
126
|
+
async personalSign(message, keyshares, options) {
|
|
104
127
|
// Prepare message with EIP-191 prefix
|
|
105
128
|
const messageBytes = Buffer.from(message, 'utf8');
|
|
106
129
|
const prefix = `\x19Ethereum Signed Message:\n${messageBytes.length}`;
|
|
@@ -111,7 +134,7 @@ class BitShardSDK {
|
|
|
111
134
|
// Hash the prefixed message with Keccak256 (Ethereum standard)
|
|
112
135
|
const { keccak256 } = require('viem');
|
|
113
136
|
const messageHash = Buffer.from(keccak256(prefixedMessage).slice(2), 'hex');
|
|
114
|
-
// Sign with DKLS (
|
|
137
|
+
// Sign with DKLS (public key required for v calculation)
|
|
115
138
|
const threshold = options.threshold ?? keyshares.length;
|
|
116
139
|
const publicKey = options.publicKey;
|
|
117
140
|
return this.dklsService.signMessage(messageHash, keyshares, threshold, publicKey);
|
|
@@ -236,98 +259,10 @@ class BitShardSDK {
|
|
|
236
259
|
getBitcoinConfig() {
|
|
237
260
|
return this.bitcoinConfig;
|
|
238
261
|
}
|
|
239
|
-
/**
|
|
240
|
-
* Initialize default chain configurations
|
|
241
|
-
*/
|
|
242
262
|
initializeDefaultChains() {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
name: 'Ethereum Mainnet',
|
|
247
|
-
rpcUrl: 'https://eth.llamarpc.com',
|
|
248
|
-
explorer: 'https://etherscan.io',
|
|
249
|
-
nativeCurrency: {
|
|
250
|
-
name: 'Ether',
|
|
251
|
-
symbol: 'ETH',
|
|
252
|
-
decimals: 18
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
// Arbitrum One
|
|
256
|
-
this.chains.set('arbitrum-one', {
|
|
257
|
-
chainId: 42161,
|
|
258
|
-
name: 'Arbitrum One',
|
|
259
|
-
rpcUrl: 'https://arb1.arbitrum.io/rpc',
|
|
260
|
-
explorer: 'https://arbiscan.io',
|
|
261
|
-
nativeCurrency: {
|
|
262
|
-
name: 'Ether',
|
|
263
|
-
symbol: 'ETH',
|
|
264
|
-
decimals: 18
|
|
265
|
-
},
|
|
266
|
-
gasConfig: {
|
|
267
|
-
maxFeePerGas: '0.1',
|
|
268
|
-
maxPriorityFeePerGas: '0.01'
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
// Arbitrum Nova
|
|
272
|
-
this.chains.set('arbitrum-nova', {
|
|
273
|
-
chainId: 42170,
|
|
274
|
-
name: 'Arbitrum Nova',
|
|
275
|
-
rpcUrl: 'https://nova.arbitrum.io/rpc',
|
|
276
|
-
explorer: 'https://nova.arbiscan.io',
|
|
277
|
-
nativeCurrency: {
|
|
278
|
-
name: 'Ether',
|
|
279
|
-
symbol: 'ETH',
|
|
280
|
-
decimals: 18
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
// Arbitrum Sepolia
|
|
284
|
-
this.chains.set('arbitrum-sepolia', {
|
|
285
|
-
chainId: 421614,
|
|
286
|
-
name: 'Arbitrum Sepolia',
|
|
287
|
-
rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
|
|
288
|
-
explorer: 'https://sepolia.arbiscan.io',
|
|
289
|
-
nativeCurrency: {
|
|
290
|
-
name: 'Ether',
|
|
291
|
-
symbol: 'ETH',
|
|
292
|
-
decimals: 18
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
// Polygon
|
|
296
|
-
this.chains.set('polygon', {
|
|
297
|
-
chainId: 137,
|
|
298
|
-
name: 'Polygon',
|
|
299
|
-
rpcUrl: 'https://polygon-rpc.com',
|
|
300
|
-
explorer: 'https://polygonscan.com',
|
|
301
|
-
nativeCurrency: {
|
|
302
|
-
name: 'MATIC',
|
|
303
|
-
symbol: 'MATIC',
|
|
304
|
-
decimals: 18
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
// BNB Smart Chain
|
|
308
|
-
this.chains.set('bnb', {
|
|
309
|
-
chainId: 56,
|
|
310
|
-
name: 'BNB Smart Chain',
|
|
311
|
-
rpcUrl: 'https://bsc-dataseed.binance.org',
|
|
312
|
-
explorer: 'https://bscscan.com',
|
|
313
|
-
nativeCurrency: {
|
|
314
|
-
name: 'BNB',
|
|
315
|
-
symbol: 'BNB',
|
|
316
|
-
decimals: 18
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
// Avalanche C-Chain
|
|
320
|
-
this.chains.set('avalanche', {
|
|
321
|
-
chainId: 43114,
|
|
322
|
-
name: 'Avalanche C-Chain',
|
|
323
|
-
rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',
|
|
324
|
-
explorer: 'https://snowtrace.io',
|
|
325
|
-
nativeCurrency: {
|
|
326
|
-
name: 'AVAX',
|
|
327
|
-
symbol: 'AVAX',
|
|
328
|
-
decimals: 18
|
|
329
|
-
}
|
|
330
|
-
});
|
|
263
|
+
for (const [name, config] of Object.entries(config_1.ALL_CHAINS)) {
|
|
264
|
+
this.chains.set(name, config);
|
|
265
|
+
}
|
|
331
266
|
}
|
|
332
267
|
/**
|
|
333
268
|
* Get preset chain configuration
|
package/dist/BitShardSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitShardSDK.js","sourceRoot":"","sources":["../src/BitShardSDK.ts"],"names":[],"mappings":";;;AAAA,8EAAkE;AAClE,oDAAiD;AACjD,gDAA6C;AAU7C,kDAAqD;
|
|
1
|
+
{"version":3,"file":"BitShardSDK.js","sourceRoot":"","sources":["../src/BitShardSDK.ts"],"names":[],"mappings":"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"}
|
package/dist/chains/config.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
1
|
+
import type { ChainConfig, BitcoinConfig } from '../core/types';
|
|
2
|
+
export type { ChainConfig, BitcoinConfig };
|
|
3
|
+
export declare const ARBITRUM_CHAINS: Record<string, ChainConfig>;
|
|
4
|
+
export declare const EVM_CHAINS: Record<string, ChainConfig>;
|
|
5
|
+
export declare const ALL_CHAINS: Record<string, ChainConfig>;
|
|
6
|
+
export declare function getChain(network: string): ChainConfig;
|
|
7
|
+
export declare function getArbitrumChains(): Record<string, ChainConfig>;
|
|
8
|
+
export declare function getSupportedChains(): Record<string, ChainConfig>;
|
|
5
9
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/chains/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/chains/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAE3C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA8BvD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAmClD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAGlD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAMrD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAE/D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEhE"}
|
package/dist/chains/config.js
CHANGED
|
@@ -1,7 +1,91 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Chain configuration registry
|
|
4
|
-
*/
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
3
|
+
exports.ALL_CHAINS = exports.EVM_CHAINS = exports.ARBITRUM_CHAINS = void 0;
|
|
4
|
+
exports.getChain = getChain;
|
|
5
|
+
exports.getArbitrumChains = getArbitrumChains;
|
|
6
|
+
exports.getSupportedChains = getSupportedChains;
|
|
7
|
+
exports.ARBITRUM_CHAINS = {
|
|
8
|
+
'arbitrum-one': {
|
|
9
|
+
chainId: 42161,
|
|
10
|
+
name: 'Arbitrum One',
|
|
11
|
+
rpcUrl: 'https://arb1.arbitrum.io/rpc',
|
|
12
|
+
explorer: 'https://arbiscan.io',
|
|
13
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
14
|
+
gasConfig: { maxFeePerGas: '0.1', maxPriorityFeePerGas: '0.01' },
|
|
15
|
+
isTestnet: false,
|
|
16
|
+
alchemySubdomain: 'arb-mainnet',
|
|
17
|
+
},
|
|
18
|
+
'arbitrum-nova': {
|
|
19
|
+
chainId: 42170,
|
|
20
|
+
name: 'Arbitrum Nova',
|
|
21
|
+
rpcUrl: 'https://nova.arbitrum.io/rpc',
|
|
22
|
+
explorer: 'https://nova.arbiscan.io',
|
|
23
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
24
|
+
isTestnet: false,
|
|
25
|
+
alchemySubdomain: 'arbnova-mainnet',
|
|
26
|
+
},
|
|
27
|
+
'arbitrum-sepolia': {
|
|
28
|
+
chainId: 421614,
|
|
29
|
+
name: 'Arbitrum Sepolia',
|
|
30
|
+
rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
|
|
31
|
+
explorer: 'https://sepolia.arbiscan.io',
|
|
32
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
33
|
+
isTestnet: true,
|
|
34
|
+
faucetUrl: 'https://faucet.quicknode.com/arbitrum/sepolia',
|
|
35
|
+
alchemySubdomain: 'arb-sepolia',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.EVM_CHAINS = {
|
|
39
|
+
'ethereum': {
|
|
40
|
+
chainId: 1,
|
|
41
|
+
name: 'Ethereum Mainnet',
|
|
42
|
+
rpcUrl: 'https://eth.llamarpc.com',
|
|
43
|
+
explorer: 'https://etherscan.io',
|
|
44
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
45
|
+
isTestnet: false,
|
|
46
|
+
alchemySubdomain: 'eth-mainnet',
|
|
47
|
+
},
|
|
48
|
+
'polygon': {
|
|
49
|
+
chainId: 137,
|
|
50
|
+
name: 'Polygon',
|
|
51
|
+
rpcUrl: 'https://polygon-rpc.com',
|
|
52
|
+
explorer: 'https://polygonscan.com',
|
|
53
|
+
nativeCurrency: { name: 'MATIC', symbol: 'MATIC', decimals: 18 },
|
|
54
|
+
isTestnet: false,
|
|
55
|
+
alchemySubdomain: 'polygon-mainnet',
|
|
56
|
+
},
|
|
57
|
+
'bnb': {
|
|
58
|
+
chainId: 56,
|
|
59
|
+
name: 'BNB Smart Chain',
|
|
60
|
+
rpcUrl: 'https://bsc-dataseed.binance.org',
|
|
61
|
+
explorer: 'https://bscscan.com',
|
|
62
|
+
nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
|
|
63
|
+
isTestnet: false,
|
|
64
|
+
},
|
|
65
|
+
'avalanche': {
|
|
66
|
+
chainId: 43114,
|
|
67
|
+
name: 'Avalanche C-Chain',
|
|
68
|
+
rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',
|
|
69
|
+
explorer: 'https://snowtrace.io',
|
|
70
|
+
nativeCurrency: { name: 'AVAX', symbol: 'AVAX', decimals: 18 },
|
|
71
|
+
isTestnet: false,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
exports.ALL_CHAINS = {
|
|
75
|
+
...exports.ARBITRUM_CHAINS,
|
|
76
|
+
...exports.EVM_CHAINS,
|
|
77
|
+
};
|
|
78
|
+
function getChain(network) {
|
|
79
|
+
const chain = exports.ALL_CHAINS[network];
|
|
80
|
+
if (!chain) {
|
|
81
|
+
throw new Error(`Unknown chain: ${network}. Supported: ${Object.keys(exports.ALL_CHAINS).join(', ')}`);
|
|
82
|
+
}
|
|
83
|
+
return chain;
|
|
84
|
+
}
|
|
85
|
+
function getArbitrumChains() {
|
|
86
|
+
return { ...exports.ARBITRUM_CHAINS };
|
|
87
|
+
}
|
|
88
|
+
function getSupportedChains() {
|
|
89
|
+
return { ...exports.ALL_CHAINS };
|
|
90
|
+
}
|
|
7
91
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/chains/config.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/chains/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -190,6 +190,12 @@ export interface ChainConfig {
|
|
|
190
190
|
maxFeePerGas?: string;
|
|
191
191
|
maxPriorityFeePerGas?: string;
|
|
192
192
|
};
|
|
193
|
+
/** Whether this is a testnet */
|
|
194
|
+
isTestnet?: boolean;
|
|
195
|
+
/** Faucet URL for testnets */
|
|
196
|
+
faucetUrl?: string;
|
|
197
|
+
/** Alchemy subdomain for API access (e.g. "arb-sepolia") */
|
|
198
|
+
alchemySubdomain?: string;
|
|
193
199
|
}
|
|
194
200
|
/**
|
|
195
201
|
* Bitcoin network configuration
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,mCAAmC;IACnC,SAAS,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,6BAA6B;IAC7B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1C,8BAA8B;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,4BAA4B;IAC5B,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,sCAAsC;IACtC,CAAC,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,IAAI,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE;QACJ,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,cAAc,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,wBAAwB;IACxB,SAAS,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/BitShardSDK.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
BitcoinConfig
|
|
12
12
|
} from './core/types';
|
|
13
13
|
import { deriveAddresses } from './crypto/addresses';
|
|
14
|
+
import { ALL_CHAINS } from './chains/config';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Main SDK class for BitShard MPC operations
|
|
@@ -77,6 +78,30 @@ export class BitShardSDK {
|
|
|
77
78
|
};
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Serialize keyshares (WASM objects) to base64 array for storage
|
|
83
|
+
* @param keyshares Array of Keyshare WASM objects
|
|
84
|
+
* @returns Array of base64-encoded strings
|
|
85
|
+
*/
|
|
86
|
+
static serializeKeyshares(keyshares: Keyshare[]): string[] {
|
|
87
|
+
return keyshares.map(ks => {
|
|
88
|
+
const bytes = ks.toBytes();
|
|
89
|
+
return Buffer.from(bytes).toString('base64');
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Deserialize base64 array back to Keyshare WASM objects
|
|
95
|
+
* @param serialized Array of base64-encoded strings
|
|
96
|
+
* @returns Array of Keyshare WASM objects
|
|
97
|
+
*/
|
|
98
|
+
static deserializeKeyshares(serialized: string[]): Keyshare[] {
|
|
99
|
+
return serialized.map(b64 => {
|
|
100
|
+
const bytes = new Uint8Array(Buffer.from(b64, 'base64'));
|
|
101
|
+
return Keyshare.fromBytes(bytes);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
80
105
|
/**
|
|
81
106
|
* Create a party for distributed setup
|
|
82
107
|
* @param config Party configuration
|
|
@@ -132,7 +157,7 @@ export class BitShardSDK {
|
|
|
132
157
|
async personalSign(
|
|
133
158
|
message: string,
|
|
134
159
|
keyshares: Keyshare[],
|
|
135
|
-
options: { threshold?: number; publicKey
|
|
160
|
+
options: { threshold?: number; publicKey: string }
|
|
136
161
|
): Promise<SignatureResult> {
|
|
137
162
|
// Prepare message with EIP-191 prefix
|
|
138
163
|
const messageBytes = Buffer.from(message, 'utf8');
|
|
@@ -146,7 +171,7 @@ export class BitShardSDK {
|
|
|
146
171
|
const { keccak256 } = require('viem');
|
|
147
172
|
const messageHash = Buffer.from(keccak256(prefixedMessage).slice(2), 'hex');
|
|
148
173
|
|
|
149
|
-
// Sign with DKLS (
|
|
174
|
+
// Sign with DKLS (public key required for v calculation)
|
|
150
175
|
const threshold = options.threshold ?? keyshares.length;
|
|
151
176
|
const publicKey = options.publicKey;
|
|
152
177
|
|
|
@@ -308,104 +333,10 @@ export class BitShardSDK {
|
|
|
308
333
|
return this.bitcoinConfig;
|
|
309
334
|
}
|
|
310
335
|
|
|
311
|
-
/**
|
|
312
|
-
* Initialize default chain configurations
|
|
313
|
-
*/
|
|
314
336
|
private initializeDefaultChains(): void {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
name: 'Ethereum Mainnet',
|
|
319
|
-
rpcUrl: 'https://eth.llamarpc.com',
|
|
320
|
-
explorer: 'https://etherscan.io',
|
|
321
|
-
nativeCurrency: {
|
|
322
|
-
name: 'Ether',
|
|
323
|
-
symbol: 'ETH',
|
|
324
|
-
decimals: 18
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
// Arbitrum One
|
|
329
|
-
this.chains.set('arbitrum-one', {
|
|
330
|
-
chainId: 42161,
|
|
331
|
-
name: 'Arbitrum One',
|
|
332
|
-
rpcUrl: 'https://arb1.arbitrum.io/rpc',
|
|
333
|
-
explorer: 'https://arbiscan.io',
|
|
334
|
-
nativeCurrency: {
|
|
335
|
-
name: 'Ether',
|
|
336
|
-
symbol: 'ETH',
|
|
337
|
-
decimals: 18
|
|
338
|
-
},
|
|
339
|
-
gasConfig: {
|
|
340
|
-
maxFeePerGas: '0.1',
|
|
341
|
-
maxPriorityFeePerGas: '0.01'
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
// Arbitrum Nova
|
|
346
|
-
this.chains.set('arbitrum-nova', {
|
|
347
|
-
chainId: 42170,
|
|
348
|
-
name: 'Arbitrum Nova',
|
|
349
|
-
rpcUrl: 'https://nova.arbitrum.io/rpc',
|
|
350
|
-
explorer: 'https://nova.arbiscan.io',
|
|
351
|
-
nativeCurrency: {
|
|
352
|
-
name: 'Ether',
|
|
353
|
-
symbol: 'ETH',
|
|
354
|
-
decimals: 18
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
// Arbitrum Sepolia
|
|
359
|
-
this.chains.set('arbitrum-sepolia', {
|
|
360
|
-
chainId: 421614,
|
|
361
|
-
name: 'Arbitrum Sepolia',
|
|
362
|
-
rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
|
|
363
|
-
explorer: 'https://sepolia.arbiscan.io',
|
|
364
|
-
nativeCurrency: {
|
|
365
|
-
name: 'Ether',
|
|
366
|
-
symbol: 'ETH',
|
|
367
|
-
decimals: 18
|
|
368
|
-
}
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
// Polygon
|
|
372
|
-
this.chains.set('polygon', {
|
|
373
|
-
chainId: 137,
|
|
374
|
-
name: 'Polygon',
|
|
375
|
-
rpcUrl: 'https://polygon-rpc.com',
|
|
376
|
-
explorer: 'https://polygonscan.com',
|
|
377
|
-
nativeCurrency: {
|
|
378
|
-
name: 'MATIC',
|
|
379
|
-
symbol: 'MATIC',
|
|
380
|
-
decimals: 18
|
|
381
|
-
}
|
|
382
|
-
});
|
|
383
|
-
|
|
384
|
-
// BNB Smart Chain
|
|
385
|
-
this.chains.set('bnb', {
|
|
386
|
-
chainId: 56,
|
|
387
|
-
name: 'BNB Smart Chain',
|
|
388
|
-
rpcUrl: 'https://bsc-dataseed.binance.org',
|
|
389
|
-
explorer: 'https://bscscan.com',
|
|
390
|
-
nativeCurrency: {
|
|
391
|
-
name: 'BNB',
|
|
392
|
-
symbol: 'BNB',
|
|
393
|
-
decimals: 18
|
|
394
|
-
}
|
|
395
|
-
});
|
|
396
|
-
|
|
397
|
-
// Avalanche C-Chain
|
|
398
|
-
this.chains.set('avalanche', {
|
|
399
|
-
chainId: 43114,
|
|
400
|
-
name: 'Avalanche C-Chain',
|
|
401
|
-
rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',
|
|
402
|
-
explorer: 'https://snowtrace.io',
|
|
403
|
-
nativeCurrency: {
|
|
404
|
-
name: 'AVAX',
|
|
405
|
-
symbol: 'AVAX',
|
|
406
|
-
decimals: 18
|
|
407
|
-
}
|
|
408
|
-
});
|
|
337
|
+
for (const [name, config] of Object.entries(ALL_CHAINS)) {
|
|
338
|
+
this.chains.set(name, config);
|
|
339
|
+
}
|
|
409
340
|
}
|
|
410
341
|
|
|
411
342
|
/**
|
package/src/chains/config.ts
CHANGED
|
@@ -1,7 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
* Chain configuration registry
|
|
3
|
-
*/
|
|
1
|
+
import type { ChainConfig, BitcoinConfig } from '../core/types';
|
|
4
2
|
|
|
5
|
-
export type { ChainConfig, BitcoinConfig }
|
|
3
|
+
export type { ChainConfig, BitcoinConfig };
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
export const ARBITRUM_CHAINS: Record<string, ChainConfig> = {
|
|
6
|
+
'arbitrum-one': {
|
|
7
|
+
chainId: 42161,
|
|
8
|
+
name: 'Arbitrum One',
|
|
9
|
+
rpcUrl: 'https://arb1.arbitrum.io/rpc',
|
|
10
|
+
explorer: 'https://arbiscan.io',
|
|
11
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
12
|
+
gasConfig: { maxFeePerGas: '0.1', maxPriorityFeePerGas: '0.01' },
|
|
13
|
+
isTestnet: false,
|
|
14
|
+
alchemySubdomain: 'arb-mainnet',
|
|
15
|
+
},
|
|
16
|
+
'arbitrum-nova': {
|
|
17
|
+
chainId: 42170,
|
|
18
|
+
name: 'Arbitrum Nova',
|
|
19
|
+
rpcUrl: 'https://nova.arbitrum.io/rpc',
|
|
20
|
+
explorer: 'https://nova.arbiscan.io',
|
|
21
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
22
|
+
isTestnet: false,
|
|
23
|
+
alchemySubdomain: 'arbnova-mainnet',
|
|
24
|
+
},
|
|
25
|
+
'arbitrum-sepolia': {
|
|
26
|
+
chainId: 421614,
|
|
27
|
+
name: 'Arbitrum Sepolia',
|
|
28
|
+
rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
|
|
29
|
+
explorer: 'https://sepolia.arbiscan.io',
|
|
30
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
31
|
+
isTestnet: true,
|
|
32
|
+
faucetUrl: 'https://faucet.quicknode.com/arbitrum/sepolia',
|
|
33
|
+
alchemySubdomain: 'arb-sepolia',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const EVM_CHAINS: Record<string, ChainConfig> = {
|
|
38
|
+
'ethereum': {
|
|
39
|
+
chainId: 1,
|
|
40
|
+
name: 'Ethereum Mainnet',
|
|
41
|
+
rpcUrl: 'https://eth.llamarpc.com',
|
|
42
|
+
explorer: 'https://etherscan.io',
|
|
43
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
44
|
+
isTestnet: false,
|
|
45
|
+
alchemySubdomain: 'eth-mainnet',
|
|
46
|
+
},
|
|
47
|
+
'polygon': {
|
|
48
|
+
chainId: 137,
|
|
49
|
+
name: 'Polygon',
|
|
50
|
+
rpcUrl: 'https://polygon-rpc.com',
|
|
51
|
+
explorer: 'https://polygonscan.com',
|
|
52
|
+
nativeCurrency: { name: 'MATIC', symbol: 'MATIC', decimals: 18 },
|
|
53
|
+
isTestnet: false,
|
|
54
|
+
alchemySubdomain: 'polygon-mainnet',
|
|
55
|
+
},
|
|
56
|
+
'bnb': {
|
|
57
|
+
chainId: 56,
|
|
58
|
+
name: 'BNB Smart Chain',
|
|
59
|
+
rpcUrl: 'https://bsc-dataseed.binance.org',
|
|
60
|
+
explorer: 'https://bscscan.com',
|
|
61
|
+
nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
|
|
62
|
+
isTestnet: false,
|
|
63
|
+
},
|
|
64
|
+
'avalanche': {
|
|
65
|
+
chainId: 43114,
|
|
66
|
+
name: 'Avalanche C-Chain',
|
|
67
|
+
rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',
|
|
68
|
+
explorer: 'https://snowtrace.io',
|
|
69
|
+
nativeCurrency: { name: 'AVAX', symbol: 'AVAX', decimals: 18 },
|
|
70
|
+
isTestnet: false,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const ALL_CHAINS: Record<string, ChainConfig> = {
|
|
75
|
+
...ARBITRUM_CHAINS,
|
|
76
|
+
...EVM_CHAINS,
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export function getChain(network: string): ChainConfig {
|
|
80
|
+
const chain = ALL_CHAINS[network];
|
|
81
|
+
if (!chain) {
|
|
82
|
+
throw new Error(`Unknown chain: ${network}. Supported: ${Object.keys(ALL_CHAINS).join(', ')}`);
|
|
83
|
+
}
|
|
84
|
+
return chain;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function getArbitrumChains(): Record<string, ChainConfig> {
|
|
88
|
+
return { ...ARBITRUM_CHAINS };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function getSupportedChains(): Record<string, ChainConfig> {
|
|
92
|
+
return { ...ALL_CHAINS };
|
|
93
|
+
}
|
package/src/core/types.ts
CHANGED
|
@@ -201,6 +201,12 @@ export interface ChainConfig {
|
|
|
201
201
|
maxFeePerGas?: string;
|
|
202
202
|
maxPriorityFeePerGas?: string;
|
|
203
203
|
};
|
|
204
|
+
/** Whether this is a testnet */
|
|
205
|
+
isTestnet?: boolean;
|
|
206
|
+
/** Faucet URL for testnets */
|
|
207
|
+
faucetUrl?: string;
|
|
208
|
+
/** Alchemy subdomain for API access (e.g. "arb-sepolia") */
|
|
209
|
+
alchemySubdomain?: string;
|
|
204
210
|
}
|
|
205
211
|
|
|
206
212
|
/**
|