blackbox-mcp 0.1.2 → 0.2.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/api.d.ts CHANGED
@@ -86,6 +86,8 @@ export declare class BlackBoxAPI {
86
86
  merkleRootId: number;
87
87
  keyIndex: number;
88
88
  maxRelayerFee?: string;
89
+ publicKey?: string;
90
+ treasuryTokenAccount?: string;
89
91
  }): Promise<any>;
90
92
  getRelayStatus(jobId: string): Promise<any>;
91
93
  getSwapQuote(params: {
package/dist/api.js CHANGED
@@ -108,21 +108,26 @@ export class BlackBoxAPI {
108
108
  const errors = [];
109
109
  for (const nodeUrl of this.config.nodeUrls) {
110
110
  try {
111
+ const body = {
112
+ chain: params.chain,
113
+ chain_type: params.chainType,
114
+ recipient: params.recipient,
115
+ amount: params.amount,
116
+ token: params.token,
117
+ signature: params.signature,
118
+ merkle_proof: params.merkleProof,
119
+ merkle_root_id: params.merkleRootId,
120
+ key_index: params.keyIndex,
121
+ max_relayer_fee: params.maxRelayerFee || '0',
122
+ };
123
+ if (params.publicKey)
124
+ body.public_key = params.publicKey;
125
+ if (params.treasuryTokenAccount)
126
+ body.treasury_token_account = params.treasuryTokenAccount;
111
127
  const resp = await fetch(`${nodeUrl}/api/v2/relay/withdraw`, {
112
128
  method: 'POST',
113
129
  headers: { 'Content-Type': 'application/json' },
114
- body: JSON.stringify({
115
- chain: params.chain,
116
- chain_type: params.chainType,
117
- recipient: params.recipient,
118
- amount: params.amount,
119
- token: params.token,
120
- signature: params.signature,
121
- merkle_proof: params.merkleProof,
122
- merkle_root_id: params.merkleRootId,
123
- key_index: params.keyIndex,
124
- max_relayer_fee: params.maxRelayerFee || '0',
125
- }),
130
+ body: JSON.stringify(body),
126
131
  });
127
132
  const data = await resp.json();
128
133
  if (resp.ok)
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/crypto.d.ts CHANGED
@@ -7,7 +7,11 @@ export declare function reconstructPrivateKey(keyshares: Array<{
7
7
  privateKey: bigint;
8
8
  privateKeyHex: string;
9
9
  };
10
+ export declare function isSolanaAddress(address: string): boolean;
11
+ export declare function secp256k1ToEd25519Seed(secp256k1PrivKeyHex: string): Promise<Uint8Array>;
12
+ export declare function verifySolanaKeyMatchesAddress(privateKeyHex: string, expectedAddress: string): Promise<boolean>;
10
13
  export declare function verifyKeyMatchesAddress(privateKeyHex: string, expectedAddress: string): boolean;
14
+ export declare function getSolanaPrivateKeyFromSecp256k1(ed25519Seed: Uint8Array): string;
11
15
  export declare function sortKeysRecursive(obj: any): any;
12
16
  export declare function createProofMessage(depositTxHash: string, sourceChain: string, withdrawalRequests: Array<{
13
17
  target_chain: string;
@@ -16,3 +20,11 @@ export declare function createProofMessage(depositTxHash: string, sourceChain: s
16
20
  }>, userAddress: string, timestamp: number): string;
17
21
  export declare function createWithdrawalSignature(privateKeyHex: string, recipient: string, tokenAddress: string, amountWei: ethers.BigNumber, merkleRootId: number, keyIndex: number, chainId: number): Promise<string>;
18
22
  export declare function createRelayWithdrawalSignature(privateKeyHex: string, recipient: string, tokenAddress: string, amountWei: ethers.BigNumber, merkleRootId: number, keyIndex: number, chainId: number, relayerAddress: string, maxRelayerFee: ethers.BigNumber): Promise<string>;
23
+ export declare function createSolanaWithdrawalSignature(ed25519Seed: Uint8Array, recipient: string, tokenAddress: string, amount: bigint): Promise<{
24
+ signature: string;
25
+ publicKey: string;
26
+ }>;
27
+ export declare function createSolanaRelaySignature(ed25519Seed: Uint8Array, recipient: string, tokenAddress: string, amount: bigint, relayerAddress: string, maxRelayerFee: bigint): Promise<{
28
+ signature: string;
29
+ publicKey: string;
30
+ }>;
package/dist/crypto.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import { ethers } from 'ethers';
2
+ import * as ed from '@noble/ed25519';
3
+ import { sha512, sha256 } from '@noble/hashes/sha2.js';
4
+ import bs58 from 'bs58';
5
+ // Configure SHA-512 for @noble/ed25519 v3
6
+ ed.hashes.sha512 = (...m) => sha512(ed.etc.concatBytes(...m));
2
7
  const SECP256K1_N = BigInt('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141');
3
8
  function modInverse(a, m) {
4
9
  a = ((a % m) + m) % m;
@@ -51,10 +56,37 @@ export function reconstructPrivateKey(keyshares, threshold = 3) {
51
56
  const privateKeyHex = '0x' + result.toString(16).padStart(64, '0');
52
57
  return { privateKey: result, privateKeyHex };
53
58
  }
59
+ export function isSolanaAddress(address) {
60
+ if (address.startsWith('0x'))
61
+ return false;
62
+ const base58Regex = /^[1-9A-HJ-NP-Za-km-z]+$/;
63
+ return base58Regex.test(address) && address.length >= 32 && address.length <= 44;
64
+ }
65
+ export async function secp256k1ToEd25519Seed(secp256k1PrivKeyHex) {
66
+ const signingKey = new ethers.utils.SigningKey(secp256k1PrivKeyHex);
67
+ let pubKeyHex = signingKey.compressedPublicKey;
68
+ if (pubKeyHex.startsWith('0x'))
69
+ pubKeyHex = pubKeyHex.slice(2);
70
+ const pubKeyBytes = Buffer.from(pubKeyHex, 'hex');
71
+ const domainSeparator = new TextEncoder().encode('ed25519');
72
+ const combined = new Uint8Array(pubKeyBytes.length + domainSeparator.length);
73
+ combined.set(pubKeyBytes);
74
+ combined.set(domainSeparator, pubKeyBytes.length);
75
+ return sha256(combined);
76
+ }
77
+ export async function verifySolanaKeyMatchesAddress(privateKeyHex, expectedAddress) {
78
+ const seed = await secp256k1ToEd25519Seed(privateKeyHex);
79
+ const pubKey = await ed.getPublicKey(seed);
80
+ const solanaAddress = bs58.encode(pubKey);
81
+ return solanaAddress === expectedAddress;
82
+ }
54
83
  export function verifyKeyMatchesAddress(privateKeyHex, expectedAddress) {
55
84
  const wallet = new ethers.Wallet(privateKeyHex);
56
85
  return wallet.address.toLowerCase() === expectedAddress.toLowerCase();
57
86
  }
87
+ export function getSolanaPrivateKeyFromSecp256k1(ed25519Seed) {
88
+ return '0x' + Buffer.from(ed25519Seed).toString('hex');
89
+ }
58
90
  export function sortKeysRecursive(obj) {
59
91
  if (Array.isArray(obj))
60
92
  return obj.map(sortKeysRecursive);
@@ -97,4 +129,54 @@ export function createRelayWithdrawalSignature(privateKeyHex, recipient, tokenAd
97
129
  const wallet = new ethers.Wallet(privateKeyHex);
98
130
  return wallet.signMessage(ethers.utils.arrayify(messageHash));
99
131
  }
132
+ // ── Solana Ed25519 signing ──
133
+ const CHAIN_ID_SOLANA = 900n;
134
+ function u64LE(value) {
135
+ const buf = Buffer.alloc(8);
136
+ buf.writeBigUInt64LE(value);
137
+ return buf;
138
+ }
139
+ function pubkeyBytes(base58Addr) {
140
+ if (!base58Addr || base58Addr === '' || base58Addr === '0x0000000000000000000000000000000000000000') {
141
+ return Buffer.alloc(32); // all zeros = native SOL
142
+ }
143
+ return Buffer.from(bs58.decode(base58Addr));
144
+ }
145
+ function solanaKeccak256(data) {
146
+ return Buffer.from(ethers.utils.arrayify(ethers.utils.keccak256(data)));
147
+ }
148
+ // Direct withdrawal: keccak256(recipient[32] + token[32] + amount_le[8] + chainId_le[8])
149
+ export async function createSolanaWithdrawalSignature(ed25519Seed, recipient, tokenAddress, amount) {
150
+ const messageData = Buffer.concat([
151
+ pubkeyBytes(recipient),
152
+ pubkeyBytes(tokenAddress),
153
+ u64LE(amount),
154
+ u64LE(CHAIN_ID_SOLANA),
155
+ ]);
156
+ const messageHash = solanaKeccak256(messageData);
157
+ const signature = await ed.sign(messageHash, ed25519Seed);
158
+ const pubKey = await ed.getPublicKey(ed25519Seed);
159
+ return {
160
+ signature: Buffer.from(signature).toString('hex'),
161
+ publicKey: bs58.encode(pubKey),
162
+ };
163
+ }
164
+ // Relay withdrawal: keccak256(recipient[32] + token[32] + amount_le[8] + chainId_le[8] + relayer[32] + maxRelayerFee_le[8])
165
+ export async function createSolanaRelaySignature(ed25519Seed, recipient, tokenAddress, amount, relayerAddress, maxRelayerFee) {
166
+ const messageData = Buffer.concat([
167
+ pubkeyBytes(recipient),
168
+ pubkeyBytes(tokenAddress),
169
+ u64LE(amount),
170
+ u64LE(CHAIN_ID_SOLANA),
171
+ pubkeyBytes(relayerAddress),
172
+ u64LE(maxRelayerFee),
173
+ ]);
174
+ const messageHash = solanaKeccak256(messageData);
175
+ const signature = await ed.sign(messageHash, ed25519Seed);
176
+ const pubKey = await ed.getPublicKey(ed25519Seed);
177
+ return {
178
+ signature: Buffer.from(signature).toString('hex'),
179
+ publicKey: bs58.encode(pubKey),
180
+ };
181
+ }
100
182
  //# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,13 +4,56 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
4
4
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
5
  import { z } from 'zod';
6
6
  import { ethers } from 'ethers';
7
+ import bs58 from 'bs58';
7
8
  import { loadConfig } from './config.js';
8
9
  import { WalletManager } from './wallet.js';
9
10
  import { BlackBoxAPI } from './api.js';
10
- import { reconstructPrivateKey, verifyKeyMatchesAddress, createProofMessage, createWithdrawalSignature, createRelayWithdrawalSignature, } from './crypto.js';
11
+ import { reconstructPrivateKey, verifyKeyMatchesAddress, verifySolanaKeyMatchesAddress, isSolanaAddress, secp256k1ToEd25519Seed, getSolanaPrivateKeyFromSecp256k1, createProofMessage, createWithdrawalSignature, createRelayWithdrawalSignature, createSolanaWithdrawalSignature, createSolanaRelaySignature, } from './crypto.js';
11
12
  const config = loadConfig();
12
13
  const walletManager = new WalletManager(config.walletStorePath);
13
14
  const api = new BlackBoxAPI(config);
15
+ // Per-chain minimum gas price floors matching the relayer's per-chain config.
16
+ // Polygon requires >= 30 gwei; BNB >= 3 gwei; others are cheap (1 gwei).
17
+ const POLYGON_CHAIN_IDS = new Set([137, 80001, 80002]);
18
+ const BNB_CHAIN_IDS = new Set([56, 97]);
19
+ const RELAY_GAS_ESTIMATE = 250000;
20
+ function getMinGasPrice(chainId) {
21
+ if (POLYGON_CHAIN_IDS.has(chainId))
22
+ return ethers.utils.parseUnits('30', 'gwei');
23
+ if (BNB_CHAIN_IDS.has(chainId))
24
+ return ethers.utils.parseUnits('3', 'gwei');
25
+ return ethers.utils.parseUnits('1', 'gwei');
26
+ }
27
+ async function getChainGasOverrides(provider, chainId) {
28
+ const gasOverrides = { gasLimit: 300000 };
29
+ if (POLYGON_CHAIN_IDS.has(chainId) || BNB_CHAIN_IDS.has(chainId)) {
30
+ const minTip = getMinGasPrice(chainId);
31
+ const feeData = await provider.getFeeData();
32
+ gasOverrides.maxPriorityFeePerGas = minTip;
33
+ gasOverrides.maxFeePerGas = feeData.maxFeePerGas?.gt(minTip) ? feeData.maxFeePerGas : minTip.mul(2);
34
+ }
35
+ return gasOverrides;
36
+ }
37
+ /**
38
+ * Estimate a realistic maxRelayerFee based on per-chain gas price floors.
39
+ * For native ETH: protocol fee (0.5%) + gas reimbursement (250k gas × chain min gas price × 1.5 buffer)
40
+ * For ERC20: protocol fee only (gas reimbursed in ETH separately)
41
+ */
42
+ function estimateMaxRelayerFee(amount, chainId, isNative, protocolFeeBps = 50) {
43
+ const protocolFee = amount.mul(protocolFeeBps).div(10000);
44
+ if (isNative) {
45
+ const minGasPrice = getMinGasPrice(chainId);
46
+ const gasReimbursement = ethers.BigNumber.from(RELAY_GAS_ESTIMATE).mul(minGasPrice);
47
+ // Add 50% buffer on top of gas + protocol fee
48
+ return protocolFee.add(gasReimbursement).mul(150).div(100);
49
+ }
50
+ else {
51
+ // ERC20: just protocol fee with 20% buffer
52
+ // Ensure minimum of 1 unit to avoid "fee must be > 0" rejection
53
+ const fee = protocolFee.mul(120).div(100);
54
+ return fee.gt(0) ? fee : ethers.BigNumber.from(1);
55
+ }
56
+ }
14
57
  const TREASURY_ABI = [
15
58
  'function deposit(address token, uint256 amount) payable',
16
59
  'function withdraw(address token, address payable recipient, uint256 amount, uint256 merkleRootId, bytes signature, bytes32[] merkleProof, uint256 keyIndex)',
@@ -53,13 +96,53 @@ async function processKeyshares(successful, _failed, withdrawal_requests, thresh
53
96
  if (ks.keyIndex !== expectedKeyIndex)
54
97
  throw new Error(`Nodes returned different key indices for key ${wrIdx}`);
55
98
  }
56
- const { privateKeyHex } = reconstructPrivateKey(keyshareData, threshold);
57
- if (!verifyKeyMatchesAddress(privateKeyHex, expectedAddress)) {
58
- throw new Error(`Key reconstruction failed for withdrawal ${wrIdx}: address mismatch`);
99
+ const isSolana = isSolanaAddress(expectedAddress);
100
+ let finalPrivateKeyHex;
101
+ if (isSolana) {
102
+ // Solana: reconstruct secp256k1 key, convert to Ed25519, try all share combinations
103
+ const result = await (async () => {
104
+ // Try default first-N shares
105
+ const { privateKeyHex: pkHex } = reconstructPrivateKey(keyshareData, threshold);
106
+ if (await verifySolanaKeyMatchesAddress(pkHex, expectedAddress)) {
107
+ const seed = await secp256k1ToEd25519Seed(pkHex);
108
+ return getSolanaPrivateKeyFromSecp256k1(seed);
109
+ }
110
+ // Try all C(N, threshold) combinations
111
+ for (let a = 0; a < keyshareData.length; a++) {
112
+ for (let b = a + 1; b < keyshareData.length; b++) {
113
+ for (let c = b + 1; c < keyshareData.length; c++) {
114
+ if (a === 0 && b === 1 && c === 2)
115
+ continue;
116
+ const subset = [keyshareData[a], keyshareData[b], keyshareData[c]];
117
+ try {
118
+ const { privateKeyHex: altPk } = reconstructPrivateKey(subset, threshold);
119
+ if (await verifySolanaKeyMatchesAddress(altPk, expectedAddress)) {
120
+ const seed = await secp256k1ToEd25519Seed(altPk);
121
+ return getSolanaPrivateKeyFromSecp256k1(seed);
122
+ }
123
+ }
124
+ catch { /* skip invalid combination */ }
125
+ }
126
+ }
127
+ }
128
+ return null;
129
+ })();
130
+ if (!result) {
131
+ throw new Error(`Key reconstruction failed for withdrawal ${wrIdx}: no share combination produces expected Solana address ${expectedAddress}`);
132
+ }
133
+ finalPrivateKeyHex = result;
134
+ }
135
+ else {
136
+ // EVM: standard secp256k1 verification
137
+ const { privateKeyHex: pkHex } = reconstructPrivateKey(keyshareData, threshold);
138
+ if (!verifyKeyMatchesAddress(pkHex, expectedAddress)) {
139
+ throw new Error(`Key reconstruction failed for withdrawal ${wrIdx}: address mismatch`);
140
+ }
141
+ finalPrivateKeyHex = pkHex;
59
142
  }
60
143
  keys.push({
61
144
  index: wrIdx,
62
- private_key: privateKeyHex,
145
+ private_key: finalPrivateKeyHex,
63
146
  address: expectedAddress,
64
147
  key_index: expectedKeyIndex,
65
148
  merkle_root_id: keyshareData[0].merkleRootId,
@@ -152,7 +235,7 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
152
235
  **Option B: Relay withdrawal** (gas-free)
153
236
  - Call \`relay_withdraw\` with the key data.
154
237
  - The tool checks if relay is enabled first.
155
- - IMPORTANT: max_relayer_fee must be > 0 (default: 10% of amount). Setting it to 0 will fail.
238
+ - IMPORTANT: max_relayer_fee must be > 0. Default is auto-calculated based on chain gas costs + protocol fee.
156
239
  - Use \`check_relay_status\` to poll the job until confirmed.
157
240
 
158
241
  **Option C: Combined deposit + claim**
@@ -433,15 +516,7 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
433
516
  const provider = new ethers.providers.JsonRpcProvider(chain.rpc_url);
434
517
  const signer = walletManager.getSigner(wallet_name, password, provider);
435
518
  const treasury = new ethers.Contract(chain.treasury_address, TREASURY_ABI, signer);
436
- // Polygon chains need minimum 30 gwei priority fee
437
- const gasOverrides = { gasLimit: 300000 };
438
- const polygonIds = new Set([137, 80001, 80002]);
439
- if (polygonIds.has(chain.chain_id)) {
440
- const minTip = ethers.utils.parseUnits('30', 'gwei');
441
- const feeData = await provider.getFeeData();
442
- gasOverrides.maxPriorityFeePerGas = minTip;
443
- gasOverrides.maxFeePerGas = feeData.maxFeePerGas?.gt(minTip) ? feeData.maxFeePerGas : minTip.mul(2);
444
- }
519
+ const gasOverrides = await getChainGasOverrides(provider, chain.chain_id);
445
520
  let tx;
446
521
  if (isNative) {
447
522
  const amountWei = ethers.utils.parseEther(amount);
@@ -607,15 +682,7 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
607
682
  // Sign with the one-time withdrawal key
608
683
  const withdrawalSig = await createWithdrawalSignature(params.withdrawal_key, params.recipient, params.token_address, amountWei, params.merkle_root_id, params.key_index, network.chainId);
609
684
  const merkleProof = params.merkle_proof.map(p => p.startsWith('0x') ? p : '0x' + p);
610
- // Polygon chains need minimum 25 gwei priority fee
611
- const wGasOverrides = { gasLimit: 300000 };
612
- const polygonChainIds = new Set([137, 80001, 80002]);
613
- if (polygonChainIds.has(network.chainId)) {
614
- const minTip = ethers.utils.parseUnits('30', 'gwei');
615
- const feeData = await provider.getFeeData();
616
- wGasOverrides.maxPriorityFeePerGas = minTip;
617
- wGasOverrides.maxFeePerGas = feeData.maxFeePerGas?.gt(minTip) ? feeData.maxFeePerGas : minTip.mul(2);
618
- }
685
+ const wGasOverrides = await getChainGasOverrides(provider, network.chainId);
619
686
  const treasury = new ethers.Contract(params.treasury_address, TREASURY_ABI, gasSigner);
620
687
  const tx = await treasury.withdraw(params.token_address, params.recipient, amountWei, params.merkle_root_id, withdrawalSig, merkleProof, params.key_index, wGasOverrides);
621
688
  const receipt = await tx.wait();
@@ -651,7 +718,7 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
651
718
  key_index: z.number().describe('Key index'),
652
719
  chain_name: z.string().describe('Chain name'),
653
720
  chain_type: z.string().optional().describe('Chain type: "evm" or "solana" (default: "evm")'),
654
- max_relayer_fee: z.string().optional().describe('Max fee willing to pay the relayer in base units (e.g., "500000" for 0.5 USDC). Must be > 0 to cover gas. Defaults to 10% of amount.'),
721
+ max_relayer_fee: z.string().optional().describe('Max fee willing to pay the relayer in base units (e.g., "500000" for 0.5 USDC). Must be > 0 to cover gas. Auto-calculated from chain gas costs if omitted.'),
655
722
  }, async (params) => {
656
723
  try {
657
724
  const chains = await api.getChains();
@@ -667,11 +734,10 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
667
734
  return { content: [{ type: 'text', text: `Relay service is currently disabled. Use withdraw_onchain instead (requires gas on target chain).` }], isError: true };
668
735
  }
669
736
  const amountWei = ethers.utils.parseUnits(params.amount, params.token_decimals);
670
- // Default maxRelayerFee to 10% of amount if not specified (must be > 0 to cover gas)
671
- const defaultFee = amountWei.div(10);
737
+ const isNative = !params.token_address || params.token_address === ethers.constants.AddressZero;
672
738
  const maxRelayerFee = params.max_relayer_fee
673
739
  ? ethers.BigNumber.from(params.max_relayer_fee)
674
- : (defaultFee.gt(0) ? defaultFee : ethers.BigNumber.from(1));
740
+ : estimateMaxRelayerFee(amountWei, network.chainId, isNative, relayInfo.protocol_fee_bps);
675
741
  const relayerAddress = relayInfo.evm_relayer_address || ethers.constants.AddressZero;
676
742
  const withdrawalSig = await createRelayWithdrawalSignature(params.withdrawal_key, params.recipient, params.token_address, amountWei, params.merkle_root_id, params.key_index, network.chainId, relayerAddress, maxRelayerFee);
677
743
  const merkleProof = params.merkle_proof.map(p => p.startsWith('0x') ? p : '0x' + p);
@@ -714,6 +780,275 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
714
780
  return { content: [{ type: 'text', text: `Error: ${e.message}` }], isError: true };
715
781
  }
716
782
  });
783
+ // ─── Unified Withdraw Tool ──────────────────────────────────────────────────
784
+ server.tool('withdraw', 'Smart withdrawal — automatically picks relay (private, gas-free) or direct based on preference and chain type. Supports both EVM and Solana. Default: relay for privacy (relayer address appears on-chain, not yours).', {
785
+ withdrawal_key: z.string().describe('Private key from claim_keys result (hex with 0x prefix)'),
786
+ recipient: z.string().describe('Address to receive funds (EVM 0x... or Solana base58)'),
787
+ token_address: z.string().describe('Token contract address (EVM hex or Solana base58 mint). Zero address or empty for native.'),
788
+ amount: z.string().describe('Human-readable amount (e.g., "1" for 1 USDC)'),
789
+ token_decimals: z.number().describe('Token decimals (6 for USDC, 18 for ETH, 9 for SOL)'),
790
+ merkle_root_id: z.number().describe('Merkle root ID from claim_keys result'),
791
+ merkle_proof: z.array(z.string()).describe('Merkle proof from claim_keys result'),
792
+ key_index: z.number().describe('Key index from claim_keys result'),
793
+ chain_name: z.string().describe('Chain name (e.g., "sepolia", "solana-devnet")'),
794
+ treasury_address: z.string().describe('Treasury contract address from claim_keys result'),
795
+ wallet_name: z.string().describe('Wallet name to pay gas from (only used for direct withdrawal)'),
796
+ password: z.string().describe('Wallet password'),
797
+ method: z.enum(['relay', 'direct', 'auto']).optional().describe('Withdrawal method. "relay" = private (default), "direct" = self-submit, "auto" = relay if available else direct'),
798
+ max_relayer_fee: z.string().optional().describe('Max relay fee in base units. Auto-calculated from chain gas costs if omitted.'),
799
+ }, async (params) => {
800
+ try {
801
+ const chains = await api.getChains();
802
+ const chain = chains.find((c) => c.chain_name === params.chain_name);
803
+ if (!chain)
804
+ return { content: [{ type: 'text', text: `Chain "${params.chain_name}" not found` }], isError: true };
805
+ const isSolana = chain.chain_type === 'solana';
806
+ const method = params.method || 'relay';
807
+ // Check relay availability
808
+ let relayAvailable = false;
809
+ let relayInfo = null;
810
+ if (method !== 'direct') {
811
+ try {
812
+ const resp = await api.getRelayInfo();
813
+ relayInfo = resp.info || resp;
814
+ relayAvailable = relayInfo.enabled !== false;
815
+ }
816
+ catch {
817
+ relayAvailable = false;
818
+ }
819
+ }
820
+ const useRelay = method === 'relay'
821
+ ? relayAvailable
822
+ : method === 'direct'
823
+ ? false
824
+ : relayAvailable; // auto: prefer relay
825
+ if (method === 'relay' && !relayAvailable) {
826
+ return { content: [{ type: 'text', text: 'Relay service is disabled. Use method: "direct" or "auto" to fall back.' }], isError: true };
827
+ }
828
+ // ── Parse amounts ──
829
+ const amountBN = ethers.utils.parseUnits(params.amount, params.token_decimals);
830
+ const amountBigint = BigInt(amountBN.toString());
831
+ const isNativeToken = !params.token_address || params.token_address === ethers.constants.AddressZero
832
+ || params.token_address === '11111111111111111111111111111111';
833
+ const maxRelayerFee = params.max_relayer_fee
834
+ ? ethers.BigNumber.from(params.max_relayer_fee)
835
+ : estimateMaxRelayerFee(amountBN, chain.chain_id || 0, isNativeToken, relayInfo?.protocol_fee_bps);
836
+ const maxRelayerFeeBigint = BigInt(maxRelayerFee.toString());
837
+ // ── RELAY PATH ──
838
+ if (useRelay) {
839
+ if (isSolana) {
840
+ // Solana relay: Ed25519 signing
841
+ const seedHex = params.withdrawal_key.startsWith('0x') ? params.withdrawal_key.slice(2) : params.withdrawal_key;
842
+ const ed25519Seed = new Uint8Array(Buffer.from(seedHex, 'hex'));
843
+ const relayerAddr = relayInfo.solana_relayer_address;
844
+ if (!relayerAddr)
845
+ return { content: [{ type: 'text', text: 'Solana relayer address not available in relay info' }], isError: true };
846
+ const { signature, publicKey } = await createSolanaRelaySignature(ed25519Seed, params.recipient, params.token_address, amountBigint, relayerAddr, maxRelayerFeeBigint);
847
+ // Derive treasury token account for SPL tokens
848
+ const isNativeSOL = !params.token_address || params.token_address === '' || params.token_address === '11111111111111111111111111111111';
849
+ let treasuryTokenAccount;
850
+ if (!isNativeSOL) {
851
+ const { PublicKey } = await import('@solana/web3.js');
852
+ const { getAssociatedTokenAddress } = await import('@solana/spl-token');
853
+ const programId = new PublicKey('5zjh95A1KgD6R7MidR6vDUCYAoKpmKcfNhMbRBkiLsmE');
854
+ const [treasuryPDA] = PublicKey.findProgramAddressSync([Buffer.from('treasury')], programId);
855
+ const tokenMint = new PublicKey(params.token_address);
856
+ const ata = await getAssociatedTokenAddress(tokenMint, treasuryPDA, true);
857
+ treasuryTokenAccount = ata.toString();
858
+ }
859
+ const merkleProof = params.merkle_proof.map(p => p.startsWith('0x') ? p : '0x' + p);
860
+ const result = await api.relayWithdraw({
861
+ chain: params.chain_name,
862
+ chainType: 'solana',
863
+ recipient: params.recipient,
864
+ amount: amountBN.toString(),
865
+ token: params.token_address,
866
+ signature: '0x' + signature,
867
+ merkleProof,
868
+ merkleRootId: params.merkle_root_id,
869
+ keyIndex: params.key_index,
870
+ maxRelayerFee: maxRelayerFee.toString(),
871
+ publicKey,
872
+ treasuryTokenAccount,
873
+ });
874
+ return { content: [{ type: 'text', text: JSON.stringify({
875
+ success: true, method: 'relay', chain: params.chain_name, chain_type: 'solana',
876
+ job_id: result.job_id || result.job?.id, ...result,
877
+ }, null, 2) }] };
878
+ }
879
+ else {
880
+ // EVM relay: secp256k1 signing
881
+ const provider = new ethers.providers.JsonRpcProvider(chain.rpc_url);
882
+ const network = await provider.getNetwork();
883
+ const relayerAddress = relayInfo.evm_relayer_address || ethers.constants.AddressZero;
884
+ const withdrawalSig = await createRelayWithdrawalSignature(params.withdrawal_key, params.recipient, params.token_address, amountBN, params.merkle_root_id, params.key_index, network.chainId, relayerAddress, maxRelayerFee);
885
+ const merkleProof = params.merkle_proof.map(p => p.startsWith('0x') ? p : '0x' + p);
886
+ const result = await api.relayWithdraw({
887
+ chain: params.chain_name,
888
+ chainType: 'evm',
889
+ recipient: params.recipient,
890
+ amount: amountBN.toString(),
891
+ token: params.token_address,
892
+ signature: withdrawalSig,
893
+ merkleProof,
894
+ merkleRootId: params.merkle_root_id,
895
+ keyIndex: params.key_index,
896
+ maxRelayerFee: maxRelayerFee.toString(),
897
+ });
898
+ return { content: [{ type: 'text', text: JSON.stringify({
899
+ success: true, method: 'relay', chain: params.chain_name, chain_type: 'evm',
900
+ job_id: result.job_id || result.job?.id, ...result,
901
+ }, null, 2) }] };
902
+ }
903
+ }
904
+ // ── DIRECT PATH ──
905
+ if (isSolana) {
906
+ // Solana direct withdrawal: build and send tx via @solana/web3.js
907
+ const { Connection, PublicKey, TransactionMessage, VersionedTransaction, Ed25519Program, SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY } = await import('@solana/web3.js');
908
+ const connection = new Connection(chain.rpc_url, 'confirmed');
909
+ const seedHex = params.withdrawal_key.startsWith('0x') ? params.withdrawal_key.slice(2) : params.withdrawal_key;
910
+ const ed25519Seed = new Uint8Array(Buffer.from(seedHex, 'hex'));
911
+ // Get the Solana wallet keypair for paying fees
912
+ const walletPrivKey = walletManager.getPrivateKey(params.wallet_name, params.password);
913
+ const { Keypair } = await import('@solana/web3.js');
914
+ const payerKeypair = Keypair.fromSecretKey(bs58.decode(walletPrivKey));
915
+ // Sign with Ed25519 OTS key
916
+ const { signature, publicKey } = await createSolanaWithdrawalSignature(ed25519Seed, params.recipient, params.token_address, amountBigint);
917
+ const sigBytes = Buffer.from(signature, 'hex');
918
+ const otsPublicKey = bs58.decode(publicKey);
919
+ // Message hash for Ed25519 instruction
920
+ const messageHash = Buffer.from(ethers.utils.arrayify(ethers.utils.keccak256(Buffer.concat([
921
+ Buffer.from(bs58.decode(params.recipient)),
922
+ params.token_address && params.token_address !== '' && !params.token_address.startsWith('0x')
923
+ ? Buffer.from(bs58.decode(params.token_address))
924
+ : Buffer.alloc(32),
925
+ (() => { const b = Buffer.alloc(8); b.writeBigUInt64LE(amountBigint); return b; })(),
926
+ (() => { const b = Buffer.alloc(8); b.writeBigUInt64LE(900n); return b; })(),
927
+ ]))));
928
+ const ed25519Ix = Ed25519Program.createInstructionWithPublicKey({
929
+ publicKey: otsPublicKey,
930
+ message: messageHash,
931
+ signature: sigBytes,
932
+ });
933
+ // Derive PDAs
934
+ const programId = new PublicKey('5zjh95A1KgD6R7MidR6vDUCYAoKpmKcfNhMbRBkiLsmE');
935
+ const [treasuryPDA] = PublicKey.findProgramAddressSync([Buffer.from('treasury')], programId);
936
+ const merkleRootIdBuf = Buffer.alloc(8);
937
+ merkleRootIdBuf.writeBigUInt64LE(BigInt(params.merkle_root_id));
938
+ const [merkleRootPDA] = PublicKey.findProgramAddressSync([Buffer.from('merkroot'), merkleRootIdBuf], programId);
939
+ const keyIndexBuf = Buffer.alloc(8);
940
+ keyIndexBuf.writeBigUInt64LE(BigInt(params.key_index));
941
+ const [nullifierPDA] = PublicKey.findProgramAddressSync([Buffer.from('nullifr\0'), merkleRootIdBuf, keyIndexBuf], programId);
942
+ const recipientPubkey = new PublicKey(params.recipient);
943
+ const isNativeSOL = !params.token_address || params.token_address === '' || params.token_address === '11111111111111111111111111111111';
944
+ // Build instruction data
945
+ const merkleProof = params.merkle_proof.map(p => {
946
+ const clean = p.startsWith('0x') ? p.slice(2) : p;
947
+ return Array.from(Buffer.from(clean, 'hex'));
948
+ });
949
+ // Discriminator + amount(u64) + merkleRootId(u32) + proofLen(u32) + proof + treeIndex(u32)
950
+ let discriminator;
951
+ let accounts;
952
+ const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');
953
+ const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');
954
+ if (isNativeSOL) {
955
+ discriminator = [113, 227, 26, 32, 53, 66, 90, 250]; // withdraw_native
956
+ accounts = [
957
+ { pubkey: treasuryPDA, isSigner: false, isWritable: true },
958
+ { pubkey: merkleRootPDA, isSigner: false, isWritable: true },
959
+ { pubkey: nullifierPDA, isSigner: false, isWritable: true },
960
+ { pubkey: recipientPubkey, isSigner: false, isWritable: true },
961
+ { pubkey: payerKeypair.publicKey, isSigner: true, isWritable: true },
962
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
963
+ { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },
964
+ ];
965
+ }
966
+ else {
967
+ discriminator = [136, 235, 181, 5, 101, 109, 57, 81]; // withdraw_token
968
+ const tokenMint = new PublicKey(params.token_address);
969
+ const { getAssociatedTokenAddress } = await import('@solana/spl-token');
970
+ const recipientATA = await getAssociatedTokenAddress(tokenMint, recipientPubkey);
971
+ const treasuryATA = await getAssociatedTokenAddress(tokenMint, treasuryPDA, true);
972
+ const [tokenConfigPDA] = PublicKey.findProgramAddressSync([Buffer.from('token_config'), tokenMint.toBuffer()], programId);
973
+ accounts = [
974
+ { pubkey: treasuryPDA, isSigner: false, isWritable: true },
975
+ { pubkey: tokenConfigPDA, isSigner: false, isWritable: true },
976
+ { pubkey: merkleRootPDA, isSigner: false, isWritable: true },
977
+ { pubkey: nullifierPDA, isSigner: false, isWritable: true },
978
+ { pubkey: tokenMint, isSigner: false, isWritable: false },
979
+ { pubkey: recipientPubkey, isSigner: false, isWritable: false },
980
+ { pubkey: recipientATA, isSigner: false, isWritable: true },
981
+ { pubkey: treasuryATA, isSigner: false, isWritable: true },
982
+ { pubkey: payerKeypair.publicKey, isSigner: true, isWritable: true },
983
+ { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
984
+ { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
985
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
986
+ { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },
987
+ ];
988
+ }
989
+ // Serialize instruction data
990
+ const proofBuf = Buffer.concat(merkleProof.map(p => Buffer.from(p)));
991
+ const ixData = Buffer.alloc(8 + 8 + 4 + 4 + proofBuf.length + 4);
992
+ let offset = 0;
993
+ Buffer.from(discriminator).copy(ixData, offset);
994
+ offset += 8;
995
+ ixData.writeBigUInt64LE(amountBigint, offset);
996
+ offset += 8;
997
+ ixData.writeUInt32LE(params.merkle_root_id, offset);
998
+ offset += 4;
999
+ ixData.writeUInt32LE(merkleProof.length, offset);
1000
+ offset += 4;
1001
+ proofBuf.copy(ixData, offset);
1002
+ offset += proofBuf.length;
1003
+ ixData.writeUInt32LE(params.key_index, offset);
1004
+ const { TransactionInstruction } = await import('@solana/web3.js');
1005
+ const withdrawIx = new TransactionInstruction({ keys: accounts, programId, data: ixData });
1006
+ const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
1007
+ const messageV0 = new TransactionMessage({
1008
+ payerKey: payerKeypair.publicKey,
1009
+ recentBlockhash: blockhash,
1010
+ instructions: [ed25519Ix, withdrawIx],
1011
+ }).compileToV0Message();
1012
+ const tx = new VersionedTransaction(messageV0);
1013
+ tx.sign([payerKeypair]);
1014
+ const txSig = await connection.sendRawTransaction(tx.serialize(), {
1015
+ skipPreflight: false,
1016
+ preflightCommitment: 'confirmed',
1017
+ });
1018
+ // Wait for confirmation
1019
+ await connection.confirmTransaction({ signature: txSig, blockhash, lastValidBlockHeight }, 'confirmed');
1020
+ return { content: [{ type: 'text', text: JSON.stringify({
1021
+ success: true, method: 'direct', chain: params.chain_name, chain_type: 'solana',
1022
+ tx_hash: txSig,
1023
+ explorer_url: `${chain.block_explorer.replace(/\/+$/, '')}/tx/${txSig}?cluster=devnet`,
1024
+ }, null, 2) }] };
1025
+ }
1026
+ else {
1027
+ // EVM direct: existing logic
1028
+ const walletPrivKey = walletManager.getPrivateKey(params.wallet_name, params.password);
1029
+ const provider = new ethers.providers.JsonRpcProvider(chain.rpc_url);
1030
+ const wallet = new ethers.Wallet(walletPrivKey, provider);
1031
+ const network = await provider.getNetwork();
1032
+ const withdrawalSig = await createWithdrawalSignature(params.withdrawal_key, params.recipient, params.token_address, amountBN, params.merkle_root_id, params.key_index, network.chainId);
1033
+ const merkleProof = params.merkle_proof.map(p => p.startsWith('0x') ? p : '0x' + p);
1034
+ const treasuryABI = [
1035
+ 'function withdraw(address token, address recipient, uint256 amount, uint256 merkleRootId, bytes calldata signature, bytes32[] calldata merkleProof, uint256 keyIndex) external',
1036
+ ];
1037
+ const treasury = new ethers.Contract(params.treasury_address, treasuryABI, wallet);
1038
+ const tx = await treasury.withdraw(params.token_address, params.recipient, amountBN, params.merkle_root_id, withdrawalSig, merkleProof, params.key_index);
1039
+ const receipt = await tx.wait();
1040
+ return { content: [{ type: 'text', text: JSON.stringify({
1041
+ success: true, method: 'direct', chain: params.chain_name, chain_type: 'evm',
1042
+ tx_hash: receipt.transactionHash,
1043
+ block_number: receipt.blockNumber,
1044
+ explorer_url: `${chain.block_explorer}/tx/${receipt.transactionHash}`,
1045
+ }, null, 2) }] };
1046
+ }
1047
+ }
1048
+ catch (e) {
1049
+ return { content: [{ type: 'text', text: `Withdrawal failed: ${e.message}` }], isError: true };
1050
+ }
1051
+ });
717
1052
  // ─── Utility Tools ──────────────────────────────────────────────────────────
718
1053
  server.tool('check_health', 'Check health and status of the BlackBox DKG network.', {}, async () => {
719
1054
  try {
@@ -807,15 +1142,7 @@ Call \`get_supported_chains\` and \`get_available_denominations\` for current da
807
1142
  const provider = new ethers.providers.JsonRpcProvider(chain.rpc_url);
808
1143
  const signer = walletManager.getSigner(wallet_name, password, provider);
809
1144
  const treasury = new ethers.Contract(chain.treasury_address, TREASURY_ABI, signer);
810
- // Polygon gas
811
- const gasOverrides = { gasLimit: 300000 };
812
- const polygonIds = new Set([137, 80001, 80002]);
813
- if (polygonIds.has(chain.chain_id)) {
814
- const minTip = ethers.utils.parseUnits('30', 'gwei');
815
- const feeData = await provider.getFeeData();
816
- gasOverrides.maxPriorityFeePerGas = minTip;
817
- gasOverrides.maxFeePerGas = feeData.maxFeePerGas?.gt(minTip) ? feeData.maxFeePerGas : minTip.mul(2);
818
- }
1145
+ const gasOverrides = await getChainGasOverrides(provider, chain.chain_id);
819
1146
  let tx;
820
1147
  if (isNative) {
821
1148
  const amountWei = ethers.utils.parseEther(amount);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blackbox-mcp",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server for AI agents to interact with the BlackBox privacy protocol — deposit, claim keys, withdraw across chains via 3-of-5 distributed threshold cryptography",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -44,6 +44,9 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@modelcontextprotocol/sdk": "^1.12.1",
47
+ "@noble/ed25519": "^3.0.0",
48
+ "@noble/hashes": "^2.0.1",
49
+ "@solana/spl-token": "^0.4.14",
47
50
  "@solana/web3.js": "^1.98.4",
48
51
  "bs58": "^6.0.0",
49
52
  "ethers": "^5.7.2",