@aibtc/mcp-server 1.27.0 → 1.28.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.
@@ -1,4 +1,4 @@
1
- export const NETWORK = process.env.NETWORK === "mainnet" ? "mainnet" : "testnet";
1
+ export const NETWORK = process.env.NETWORK === "testnet" ? "testnet" : "mainnet";
2
2
  export const API_URL = process.env.API_URL || "https://x402.biwas.xyz";
3
3
  export function getStacksNetwork(network) {
4
4
  return network === "mainnet" ? "mainnet" : "testnet";
@@ -12,9 +12,9 @@
12
12
  * - stacks_sign_message: Sign plain text messages with Stacks prefix
13
13
  * - stacks_verify_message: Verify message signature and recover signer
14
14
  *
15
- * Bitcoin Message Signing (BIP-137):
16
- * - btc_sign_message: Sign messages with Bitcoin private key (BIP-137 format)
17
- * - btc_verify_message: Verify Bitcoin message signatures
15
+ * Bitcoin Message Signing (BIP-137 / BIP-322):
16
+ * - btc_sign_message: Sign messages with Bitcoin private key (BIP-137 for legacy, BIP-322 for bc1q/bc1p)
17
+ * - btc_verify_message: Verify Bitcoin message signatures (auto-detects BIP-137 vs BIP-322)
18
18
  *
19
19
  * SIP-018 signatures can be verified both off-chain and on-chain by smart contracts.
20
20
  * Stacks message signatures are SIWS-compatible for web authentication flows.
@@ -1 +1 @@
1
- {"version":3,"file":"signing.tools.d.ts","sourceRoot":"","sources":["../../src/tools/signing.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsUpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqvB5D"}
1
+ {"version":3,"file":"signing.tools.d.ts","sourceRoot":"","sources":["../../src/tools/signing.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAytBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAw6B5D"}
@@ -12,9 +12,9 @@
12
12
  * - stacks_sign_message: Sign plain text messages with Stacks prefix
13
13
  * - stacks_verify_message: Verify message signature and recover signer
14
14
  *
15
- * Bitcoin Message Signing (BIP-137):
16
- * - btc_sign_message: Sign messages with Bitcoin private key (BIP-137 format)
17
- * - btc_verify_message: Verify Bitcoin message signatures
15
+ * Bitcoin Message Signing (BIP-137 / BIP-322):
16
+ * - btc_sign_message: Sign messages with Bitcoin private key (BIP-137 for legacy, BIP-322 for bc1q/bc1p)
17
+ * - btc_verify_message: Verify Bitcoin message signatures (auto-detects BIP-137 vs BIP-322)
18
18
  *
19
19
  * SIP-018 signatures can be verified both off-chain and on-chain by smart contracts.
20
20
  * Stacks message signatures are SIWS-compatible for web authentication flows.
@@ -26,6 +26,7 @@ import { hashMessage, verifyMessageSignatureRsv, hashSha256Sync } from "@stacks/
26
26
  import { bytesToHex } from "@stacks/common";
27
27
  import { secp256k1, schnorr } from "@noble/curves/secp256k1.js";
28
28
  import { hex } from "@scure/base";
29
+ import { Transaction, p2wpkh, p2pkh, p2sh, p2tr, Script, SigHash, RawWitness, RawTx, Address, NETWORK as BTC_MAINNET, TEST_NETWORK as BTC_TESTNET, } from "@scure/btc-signer";
29
30
  import { NETWORK } from "../config/networks.js";
30
31
  import { createJsonResponse, createErrorResponse } from "../utils/index.js";
31
32
  import { getWalletManager } from "../services/wallet-manager.js";
@@ -116,6 +117,323 @@ function formatBitcoinMessage(message) {
116
117
  function doubleSha256(data) {
117
118
  return hashSha256Sync(hashSha256Sync(data));
118
119
  }
120
+ /**
121
+ * Concatenate multiple Uint8Arrays into one.
122
+ */
123
+ function concatBytes(...arrays) {
124
+ const totalLen = arrays.reduce((sum, a) => sum + a.length, 0);
125
+ const result = new Uint8Array(totalLen);
126
+ let offset = 0;
127
+ for (const a of arrays) {
128
+ result.set(a, offset);
129
+ offset += a.length;
130
+ }
131
+ return result;
132
+ }
133
+ /**
134
+ * Write a 32-bit little-endian integer into a buffer.
135
+ */
136
+ function writeUint32LE(n) {
137
+ const buf = new Uint8Array(4);
138
+ buf[0] = n & 0xff;
139
+ buf[1] = (n >> 8) & 0xff;
140
+ buf[2] = (n >> 16) & 0xff;
141
+ buf[3] = (n >> 24) & 0xff;
142
+ return buf;
143
+ }
144
+ /**
145
+ * Write a 64-bit little-endian BigInt into a buffer.
146
+ */
147
+ function writeUint64LE(n) {
148
+ const buf = new Uint8Array(8);
149
+ let v = n;
150
+ for (let i = 0; i < 8; i++) {
151
+ buf[i] = Number(v & 0xffn);
152
+ v >>= 8n;
153
+ }
154
+ return buf;
155
+ }
156
+ /**
157
+ * Convert a DER-encoded ECDSA signature to compact (64-byte) format.
158
+ *
159
+ * Bitcoin witness stacks store ECDSA signatures in DER format with a hashtype byte appended.
160
+ * @noble/curves secp256k1.verify() requires compact (64-byte r||s) format in v2.
161
+ *
162
+ * DER format: 30 <total_len> 02 <r_len> [00?] <r_bytes> 02 <s_len> [00?] <s_bytes>
163
+ * The leading 0x00 is padding for high-bit integers (to keep the sign positive).
164
+ */
165
+ function parseDERSignature(der) {
166
+ if (der[0] !== 0x30)
167
+ throw new Error("parseDERSignature: expected 0x30 header");
168
+ let pos = 2; // skip 0x30 and total length byte
169
+ if (der[pos] !== 0x02)
170
+ throw new Error("parseDERSignature: expected 0x02 for r");
171
+ pos++;
172
+ const rLen = der[pos++];
173
+ // Strip optional leading 0x00 padding byte (added when high bit is set)
174
+ const rBytes = der.slice(rLen === 33 ? pos + 1 : pos, pos + rLen);
175
+ pos += rLen;
176
+ if (der[pos] !== 0x02)
177
+ throw new Error("parseDERSignature: expected 0x02 for s");
178
+ pos++;
179
+ const sLen = der[pos++];
180
+ const sBytes = der.slice(sLen === 33 ? pos + 1 : pos, pos + sLen);
181
+ const compact = new Uint8Array(64);
182
+ compact.set(rBytes.slice(-32), 0); // r (last 32 bytes, in case rLen < 32)
183
+ compact.set(sBytes.slice(-32), 32); // s (last 32 bytes)
184
+ return compact;
185
+ }
186
+ // ---------------------------------------------------------------------------
187
+ // BIP-322 helper functions
188
+ // ---------------------------------------------------------------------------
189
+ /**
190
+ * BIP-322 tagged hash: SHA256(SHA256(tag) || SHA256(tag) || varint(msg.len) || msg)
191
+ * where tag = "BIP0322-signed-message"
192
+ */
193
+ function bip322TaggedHash(message) {
194
+ const tagBytes = new TextEncoder().encode("BIP0322-signed-message");
195
+ const tagHash = hashSha256Sync(tagBytes);
196
+ const msgBytes = new TextEncoder().encode(message);
197
+ const varint = encodeVarInt(msgBytes.length);
198
+ const msgPart = concatBytes(varint, msgBytes);
199
+ return hashSha256Sync(concatBytes(tagHash, tagHash, msgPart));
200
+ }
201
+ /**
202
+ * Build the BIP-322 to_spend virtual transaction and return its txid (32 bytes, LE).
203
+ *
204
+ * The to_spend tx is a virtual legacy transaction:
205
+ * - Input: txid=zero32, vout=0xFFFFFFFF, sequence=0, scriptSig = OP_0 push32 <msgHash>
206
+ * - Output: amount=0, script=scriptPubKey of the signing address
207
+ *
208
+ * The txid is computed as doubleSha256 of the legacy (non-segwit) serialization.
209
+ * The returned txid is already in the byte order used by transaction inputs (reversed).
210
+ */
211
+ function bip322BuildToSpendTxId(message, scriptPubKey) {
212
+ const msgHash = bip322TaggedHash(message);
213
+ // scriptSig: OP_0 (0x00) push32 (0x20) <32-byte hash>
214
+ const scriptSig = concatBytes(new Uint8Array([0x00, 0x20]), msgHash);
215
+ const rawTx = RawTx.encode({
216
+ version: 0,
217
+ inputs: [
218
+ {
219
+ txid: new Uint8Array(32),
220
+ index: 0xffffffff,
221
+ finalScriptSig: scriptSig,
222
+ sequence: 0,
223
+ },
224
+ ],
225
+ outputs: [
226
+ {
227
+ amount: 0n,
228
+ script: scriptPubKey,
229
+ },
230
+ ],
231
+ lockTime: 0,
232
+ });
233
+ // txid is double-SHA256 of the serialized tx, returned in little-endian byte order
234
+ return doubleSha256(rawTx).reverse();
235
+ }
236
+ /**
237
+ * BIP-322 "simple" signing.
238
+ *
239
+ * Builds and signs the to_sign virtual transaction. The private key is used directly —
240
+ * @scure/btc-signer's Transaction.signIdx() auto-detects the address type from witnessUtxo.script
241
+ * and computes the correct sighash (BIP143 for P2WPKH, BIP341 for P2TR).
242
+ *
243
+ * @param message - Plain text message to sign
244
+ * @param privateKey - 32-byte private key (P2WPKH key for bc1q, Taproot key for bc1p)
245
+ * @param scriptPubKey - scriptPubKey of the signing address
246
+ * @param tapInternalKey - For P2TR: the UNTWEAKED x-only pubkey (32 bytes). Required for Taproot
247
+ * signing. Must be the internal key BEFORE TapTweak, NOT the tweaked key in the scriptPubKey.
248
+ * @returns Base64-encoded BIP-322 "simple" signature (serialized witness)
249
+ */
250
+ function bip322Sign(message, privateKey, scriptPubKey, tapInternalKey) {
251
+ const toSpendTxid = bip322BuildToSpendTxId(message, scriptPubKey);
252
+ // allowUnknownOutputs: true is required for the OP_RETURN output in BIP-322 virtual transactions.
253
+ const toSignTx = new Transaction({ version: 0, lockTime: 0, allowUnknownOutputs: true });
254
+ toSignTx.addInput({
255
+ txid: toSpendTxid,
256
+ index: 0,
257
+ sequence: 0,
258
+ witnessUtxo: { amount: 0n, script: scriptPubKey },
259
+ ...(tapInternalKey && { tapInternalKey }),
260
+ });
261
+ toSignTx.addOutput({ script: Script.encode(["RETURN"]), amount: 0n });
262
+ // signIdx auto-detects P2WPKH vs P2TR from witnessUtxo.script and applies correct sighash
263
+ toSignTx.signIdx(privateKey, 0);
264
+ toSignTx.finalizeIdx(0);
265
+ const input = toSignTx.getInput(0);
266
+ if (!input.finalScriptWitness) {
267
+ throw new Error("BIP-322 signing failed: no witness produced");
268
+ }
269
+ const encodedWitness = RawWitness.encode(input.finalScriptWitness);
270
+ return Buffer.from(encodedWitness).toString("base64");
271
+ }
272
+ /**
273
+ * BIP-322 "simple" verification for P2WPKH (bc1q/tb1q) addresses.
274
+ *
275
+ * Reconstructs the to_sign transaction, computes the BIP143 witness-v0 sighash,
276
+ * verifies the ECDSA signature, and checks the recovered address matches.
277
+ */
278
+ function bip322VerifyP2WPKH(message, signatureBase64, address, btcNetwork) {
279
+ const sigBytes = new Uint8Array(Buffer.from(signatureBase64, "base64"));
280
+ const witnessItems = RawWitness.decode(sigBytes);
281
+ if (witnessItems.length !== 2) {
282
+ throw new Error(`P2WPKH BIP-322: expected 2 witness items, got ${witnessItems.length}`);
283
+ }
284
+ const ecdsaSigWithHashtype = witnessItems[0];
285
+ const pubkeyBytes = witnessItems[1];
286
+ if (pubkeyBytes.length !== 33) {
287
+ throw new Error(`P2WPKH BIP-322: expected 33-byte compressed pubkey, got ${pubkeyBytes.length}`);
288
+ }
289
+ // Derive scriptPubKey from witness pubkey (for building to_spend)
290
+ const scriptPubKey = p2wpkh(pubkeyBytes, btcNetwork).script;
291
+ // Build to_spend txid using the claimed address's scriptPubKey
292
+ const toSpendTxid = bip322BuildToSpendTxId(message, scriptPubKey);
293
+ // Build the (unsigned) to_sign transaction for sighash computation.
294
+ // allowUnknownOutputs: true is required for the OP_RETURN output in BIP-322 virtual transactions.
295
+ const toSignTx = new Transaction({ version: 0, lockTime: 0, allowUnknownOutputs: true });
296
+ toSignTx.addInput({
297
+ txid: toSpendTxid,
298
+ index: 0,
299
+ sequence: 0,
300
+ witnessUtxo: { amount: 0n, script: scriptPubKey },
301
+ });
302
+ toSignTx.addOutput({ script: Script.encode(["RETURN"]), amount: 0n });
303
+ // Compute BIP143 witness-v0 sighash.
304
+ // scriptCode for P2WPKH is the P2PKH script: OP_DUP OP_HASH160 <hash160(pubkey)> OP_EQUALVERIFY OP_CHECKSIG
305
+ const scriptCode = p2pkh(pubkeyBytes).script;
306
+ const sighash = toSignTx.preimageWitnessV0(0, scriptCode, SigHash.ALL, 0n);
307
+ // Strip hashtype byte from DER signature.
308
+ // @noble/curves secp256k1.verify() in v2 requires compact (64-byte) format, not DER.
309
+ const derSig = ecdsaSigWithHashtype.slice(0, -1);
310
+ const compactSig = parseDERSignature(derSig);
311
+ // Verify ECDSA signature
312
+ const sigValid = secp256k1.verify(compactSig, sighash, pubkeyBytes, { prehash: false });
313
+ if (!sigValid)
314
+ return false;
315
+ // Derive the Bitcoin address from the witness pubkey and compare to claimed address
316
+ const derivedAddress = p2wpkh(pubkeyBytes, btcNetwork).address;
317
+ return derivedAddress === address;
318
+ }
319
+ /**
320
+ * BIP-322 "simple" verification for P2TR (bc1p/tb1p) addresses.
321
+ *
322
+ * Reconstructs the to_sign transaction, computes the BIP341 tapscript sighash manually,
323
+ * verifies the Schnorr signature, and checks the pubkey matches the address.
324
+ *
325
+ * BIP341 key-path sighash for SIGHASH_DEFAULT (0x00):
326
+ * tagged_hash("TapSighash", 0x00 || sigMsg)
327
+ * where sigMsg encodes: epoch, hashType, version, locktime, hashPrevouts, hashAmounts,
328
+ * hashScriptPubkeys, hashSequences, hashOutputs, spend_type, input_index.
329
+ */
330
+ function bip322VerifyP2TR(message, signatureBase64, address, btcNetwork) {
331
+ const sigBytes = new Uint8Array(Buffer.from(signatureBase64, "base64"));
332
+ const witnessItems = RawWitness.decode(sigBytes);
333
+ if (witnessItems.length !== 1) {
334
+ throw new Error(`P2TR BIP-322: expected 1 witness item, got ${witnessItems.length}`);
335
+ }
336
+ const schnorrSig = witnessItems[0];
337
+ if (schnorrSig.length !== 64) {
338
+ throw new Error(`P2TR BIP-322: expected 64-byte Schnorr sig, got ${schnorrSig.length}`);
339
+ }
340
+ // Extract the tweaked output key from the P2TR address.
341
+ // Address().decode() returns decoded.pubkey = the TWEAKED key embedded in the bech32 data.
342
+ // We must NOT call p2tr(decoded.pubkey, ...) — that would apply another TapTweak.
343
+ // Instead, build the scriptPubKey directly: OP_1 (0x51) OP_PUSH32 (0x20) <tweakedKey>
344
+ const decoded = Address(btcNetwork).decode(address);
345
+ if (decoded.type !== "tr") {
346
+ throw new Error(`P2TR BIP-322: address does not decode to P2TR type`);
347
+ }
348
+ const tweakedKey = decoded.pubkey;
349
+ const scriptPubKey = new Uint8Array([0x51, 0x20, ...tweakedKey]);
350
+ // Build to_spend txid
351
+ const toSpendTxid = bip322BuildToSpendTxId(message, scriptPubKey);
352
+ // Compute BIP341 sighash manually for SIGHASH_DEFAULT (0x00) key-path spending.
353
+ //
354
+ // From BIP341:
355
+ // sighash = tagged_hash("TapSighash", 0x00 || sigMsg)
356
+ // sigMsg = epoch(1) || hashType(1) || nVersion(4LE) || nLockTime(4LE)
357
+ // || hashPrevouts(32) || hashAmounts(32) || hashScriptPubkeys(32)
358
+ // || hashSequences(32) || hashOutputs(32)
359
+ // || spend_type(1) || input_index(4LE)
360
+ //
361
+ // to_sign values:
362
+ // version = 0, locktime = 0
363
+ // 1 input: txid=toSpendTxid, vout=0, sequence=0, amount=0n, scriptPubKey=p2tr_script
364
+ // 1 output: amount=0n, script=OP_RETURN (0x6a, 1 byte)
365
+ // hashPrevouts = SHA256(txid_wire_bytes || vout(4LE))
366
+ //
367
+ // @scure/btc-signer stores txid as-is but applies P.bytes(32, true) (reversing) when
368
+ // encoding TxHashIdx for the BIP341 sighash computation. This means the wire-format txid
369
+ // used in hashPrevouts is the reverse of what bip322BuildToSpendTxId returns.
370
+ // We must re-reverse to produce the same bytes that btc-signer uses when signing.
371
+ const txidForHashPrevouts = toSpendTxid.slice().reverse();
372
+ const prevouts = concatBytes(txidForHashPrevouts, writeUint32LE(0));
373
+ const hashPrevouts = hashSha256Sync(prevouts);
374
+ // hashAmounts = SHA256(amount_8LE) [amount = 0n for our virtual input]
375
+ const amounts = writeUint64LE(0n);
376
+ const hashAmounts = hashSha256Sync(amounts);
377
+ // hashScriptPubkeys = SHA256(varint(scriptPubKey.length) || scriptPubKey)
378
+ const scriptPubKeyWithLen = concatBytes(encodeVarInt(scriptPubKey.length), scriptPubKey);
379
+ const hashScriptPubkeys = hashSha256Sync(scriptPubKeyWithLen);
380
+ // hashSequences = SHA256(sequence_4LE) [sequence = 0]
381
+ const sequences = writeUint32LE(0);
382
+ const hashSequences = hashSha256Sync(sequences);
383
+ // hashOutputs = SHA256(amount_8LE || varint(script.length) || script)
384
+ // Output: amount=0n, script=Script.encode(['RETURN']) = 0x6a (1 byte)
385
+ const opReturnScript = Script.encode(["RETURN"]);
386
+ const outputBytes = concatBytes(writeUint64LE(0n), encodeVarInt(opReturnScript.length), opReturnScript);
387
+ const hashOutputs = hashSha256Sync(outputBytes);
388
+ // sigMsg assembly
389
+ const sigMsg = concatBytes(new Uint8Array([0x00]), // epoch
390
+ new Uint8Array([0x00]), // hashType = SIGHASH_DEFAULT
391
+ writeUint32LE(0), // nVersion = 0
392
+ writeUint32LE(0), // nLockTime = 0
393
+ hashPrevouts, // 32 bytes
394
+ hashAmounts, // 32 bytes
395
+ hashScriptPubkeys, // 32 bytes
396
+ hashSequences, // 32 bytes
397
+ hashOutputs, // 32 bytes
398
+ new Uint8Array([0x00]), // spend_type = 0 (key-path, no annex)
399
+ writeUint32LE(0) // input_index = 0
400
+ );
401
+ // tagged_hash("TapSighash", sigMsg) = SHA256(SHA256(tag) || SHA256(tag) || sigMsg)
402
+ const tagBytes = new TextEncoder().encode("TapSighash");
403
+ const tagHash = hashSha256Sync(tagBytes);
404
+ const sighash = hashSha256Sync(concatBytes(tagHash, tagHash, sigMsg));
405
+ // Schnorr verification uses the TWEAKED output key (the one in the scriptPubKey bytes)
406
+ return schnorr.verify(schnorrSig, sighash, tweakedKey);
407
+ }
408
+ /**
409
+ * BIP-322 "simple" verification — auto-detects P2WPKH vs P2TR from address prefix.
410
+ *
411
+ * @param message - Original plain text message
412
+ * @param signatureBase64 - Base64-encoded BIP-322 "simple" signature
413
+ * @param address - Bitcoin address that allegedly signed the message
414
+ * @param network - 'mainnet' or 'testnet'
415
+ * @returns true if signature is valid for the given address and message
416
+ */
417
+ function bip322Verify(message, signatureBase64, address, network) {
418
+ const btcNetwork = network === "mainnet" ? BTC_MAINNET : BTC_TESTNET;
419
+ if (address.startsWith("bc1q") ||
420
+ address.startsWith("tb1q")) {
421
+ return bip322VerifyP2WPKH(message, signatureBase64, address, btcNetwork);
422
+ }
423
+ if (address.startsWith("bc1p") ||
424
+ address.startsWith("tb1p")) {
425
+ return bip322VerifyP2TR(message, signatureBase64, address, btcNetwork);
426
+ }
427
+ throw new Error(`bip322Verify: unsupported address type for BIP-322: ${address}`);
428
+ }
429
+ /**
430
+ * Detect whether a decoded signature is BIP-137 or BIP-322.
431
+ * BIP-137: exactly 65 bytes, first byte in range 27-42.
432
+ * BIP-322: everything else (witness-serialized).
433
+ */
434
+ function isBip137Signature(sigBytes) {
435
+ return sigBytes.length === 65 && sigBytes[0] >= 27 && sigBytes[0] <= 42;
436
+ }
119
437
  /**
120
438
  * Get Bitcoin address type from BIP-137 header byte
121
439
  */
@@ -593,108 +911,192 @@ export function registerSigningTools(server) {
593
911
  return createErrorResponse(error);
594
912
  }
595
913
  });
596
- // Sign Bitcoin message (BIP-137)
914
+ // Sign Bitcoin message (BIP-137 for legacy, BIP-322 for native SegWit and Taproot)
597
915
  server.registerTool("btc_sign_message", {
598
- description: "Sign a plain text message using the Bitcoin message signing format (BIP-137). " +
599
- "Creates a 65-byte signature compatible with most Bitcoin wallets. " +
916
+ description: "Sign a plain text message using Bitcoin message signing. " +
917
+ "Automatically selects BIP-322 for native SegWit (bc1q) and Taproot (bc1p) addresses, " +
918
+ "and BIP-137 for legacy (1...) and wrapped SegWit (3...) addresses. " +
919
+ "Use addressType 'p2tr' to force signing with the Taproot key. " +
600
920
  "Use cases: proving Bitcoin address ownership, authentication, off-chain verification. " +
601
921
  "Requires an unlocked wallet with Bitcoin keys.",
602
922
  inputSchema: {
603
923
  message: z
604
924
  .string()
605
- .describe("The plain text message to sign. Will be formatted with Bitcoin message prefix before signing."),
925
+ .describe("The plain text message to sign."),
926
+ addressType: z
927
+ .enum(["p2wpkh", "p2tr"])
928
+ .optional()
929
+ .describe("Optional: address type to sign with. 'p2wpkh' uses native SegWit (bc1q, BIP-322), " +
930
+ "'p2tr' uses Taproot (bc1p, BIP-322). If omitted, auto-detects from wallet address type."),
606
931
  },
607
- }, async ({ message }) => {
932
+ }, async ({ message, addressType }) => {
608
933
  try {
609
934
  const account = requireUnlockedWallet();
610
- if (!account.btcPrivateKey || !account.btcPublicKey) {
611
- throw new Error("Bitcoin keys not available. Ensure the wallet has Bitcoin key derivation.");
935
+ const btcNetwork = NETWORK === "testnet" ? BTC_TESTNET : BTC_MAINNET;
936
+ // Determine signing mode from addressType param or auto-detect from btcAddress prefix
937
+ const useTaproot = addressType === "p2tr" ||
938
+ (account.btcAddress &&
939
+ (account.btcAddress.startsWith("bc1p") ||
940
+ account.btcAddress.startsWith("tb1p") ||
941
+ account.btcAddress.startsWith("bcrt1p")));
942
+ const isLegacyAddress = account.btcAddress &&
943
+ (account.btcAddress.startsWith("1") ||
944
+ account.btcAddress.startsWith("3") ||
945
+ account.btcAddress.startsWith("m") ||
946
+ account.btcAddress.startsWith("n") ||
947
+ account.btcAddress.startsWith("2"));
948
+ if (useTaproot) {
949
+ // BIP-322 with Taproot (P2TR) key
950
+ if (!account.taprootPrivateKey || !account.taprootPublicKey || !account.taprootAddress) {
951
+ throw new Error("Taproot keys not available. Ensure the wallet has Taproot key derivation.");
952
+ }
953
+ const xOnlyPubkey = account.taprootPublicKey;
954
+ const scriptPubKey = p2tr(xOnlyPubkey, undefined, btcNetwork).script;
955
+ // Pass xOnlyPubkey as tapInternalKey: signIdx requires the UNTWEAKED internal key,
956
+ // not the tweaked key embedded in the P2TR scriptPubKey bytes.
957
+ const signatureBase64 = bip322Sign(message, account.taprootPrivateKey, scriptPubKey, xOnlyPubkey);
958
+ return createJsonResponse({
959
+ success: true,
960
+ signatureBase64,
961
+ signatureFormat: "BIP-322 (witness-serialized, Taproot/P2TR)",
962
+ signer: account.taprootAddress,
963
+ network: NETWORK,
964
+ addressType: "P2TR (Taproot)",
965
+ message: {
966
+ original: message,
967
+ },
968
+ verificationNote: "Use btc_verify_message with the original message, signature, and address to verify. " +
969
+ "BIP-322 Taproot signatures contain a 64-byte Schnorr witness.",
970
+ });
612
971
  }
613
- // Format and hash the message according to BIP-137
614
- const formattedMsg = formatBitcoinMessage(message);
615
- const msgHash = doubleSha256(formattedMsg);
616
- // Sign with recoverable signature
617
- // format: 'recovered' returns 65 bytes: [recoveryId][32 r][32 s]
618
- const sigWithRecovery = secp256k1.sign(msgHash, account.btcPrivateKey, {
619
- prehash: false,
620
- lowS: true,
621
- format: "recovered",
622
- });
623
- // Build BIP-137 signature: [header][r][s]
624
- // For P2WPKH (native SegWit), header = 39 + recoveryId
625
- const recoveryId = sigWithRecovery[0];
626
- const header = BIP137_HEADER_BASE.P2WPKH + recoveryId;
627
- // Build the 65-byte BIP-137 signature: [header][r][s]
628
- const rBytes = sigWithRecovery.slice(1, 33);
629
- const sBytes = sigWithRecovery.slice(33, 65);
630
- const bip137Sig = new Uint8Array(65);
631
- bip137Sig[0] = header;
632
- bip137Sig.set(rBytes, 1);
633
- bip137Sig.set(sBytes, 33);
634
- const signatureHex = hex.encode(bip137Sig);
635
- const signatureBase64 = Buffer.from(bip137Sig).toString("base64");
636
- return createJsonResponse({
637
- success: true,
638
- signature: signatureHex,
639
- signatureBase64,
640
- signatureFormat: "BIP-137 (65 bytes: 1 header + 32 r + 32 s)",
641
- signer: account.btcAddress,
642
- network: NETWORK,
643
- addressType: "P2WPKH (native SegWit)",
644
- message: {
645
- original: message,
646
- prefix: BITCOIN_MSG_PREFIX,
647
- prefixHex: hex.encode(new TextEncoder().encode(BITCOIN_MSG_PREFIX)),
648
- formattedHex: hex.encode(formattedMsg),
649
- hash: hex.encode(msgHash),
650
- },
651
- header: {
652
- value: header,
653
- recoveryId,
972
+ else if (isLegacyAddress) {
973
+ // BIP-137 for legacy (P2PKH) and wrapped SegWit (P2SH-P2WPKH) addresses
974
+ if (!account.btcPrivateKey || !account.btcPublicKey) {
975
+ throw new Error("Bitcoin keys not available. Ensure the wallet has Bitcoin key derivation.");
976
+ }
977
+ const formattedMsg = formatBitcoinMessage(message);
978
+ const msgHash = doubleSha256(formattedMsg);
979
+ const sigWithRecovery = secp256k1.sign(msgHash, account.btcPrivateKey, {
980
+ prehash: false,
981
+ lowS: true,
982
+ format: "recovered",
983
+ });
984
+ const recoveryId = sigWithRecovery[0];
985
+ // Select BIP-137 header base by address type
986
+ let headerBase;
987
+ const addrPrefix = account.btcAddress.charAt(0);
988
+ if (addrPrefix === "1" || addrPrefix === "m" || addrPrefix === "n") {
989
+ headerBase = BIP137_HEADER_BASE.P2PKH_COMPRESSED;
990
+ }
991
+ else if (addrPrefix === "3" || addrPrefix === "2") {
992
+ headerBase = BIP137_HEADER_BASE.P2SH_P2WPKH;
993
+ }
994
+ else {
995
+ headerBase = BIP137_HEADER_BASE.P2WPKH;
996
+ }
997
+ const header = headerBase + recoveryId;
998
+ const rBytes = sigWithRecovery.slice(1, 33);
999
+ const sBytes = sigWithRecovery.slice(33, 65);
1000
+ const bip137Sig = new Uint8Array(65);
1001
+ bip137Sig[0] = header;
1002
+ bip137Sig.set(rBytes, 1);
1003
+ bip137Sig.set(sBytes, 33);
1004
+ const signatureHex = hex.encode(bip137Sig);
1005
+ const signatureBase64 = Buffer.from(bip137Sig).toString("base64");
1006
+ return createJsonResponse({
1007
+ success: true,
1008
+ signature: signatureHex,
1009
+ signatureBase64,
1010
+ signatureFormat: "BIP-137 (65 bytes: 1 header + 32 r + 32 s)",
1011
+ signer: account.btcAddress,
1012
+ network: NETWORK,
654
1013
  addressType: getAddressTypeFromHeader(header),
655
- },
656
- verificationNote: "Use btc_verify_message with the original message and signature to verify. " +
657
- "Base64 format is commonly used by wallets like Electrum and Bitcoin Core.",
658
- });
1014
+ message: {
1015
+ original: message,
1016
+ prefix: BITCOIN_MSG_PREFIX,
1017
+ prefixHex: hex.encode(new TextEncoder().encode(BITCOIN_MSG_PREFIX)),
1018
+ formattedHex: hex.encode(formattedMsg),
1019
+ hash: hex.encode(msgHash),
1020
+ },
1021
+ header: {
1022
+ value: header,
1023
+ recoveryId,
1024
+ addressType: getAddressTypeFromHeader(header),
1025
+ },
1026
+ verificationNote: "Use btc_verify_message with the original message and signature to verify. " +
1027
+ "Base64 format is commonly used by wallets like Electrum and Bitcoin Core.",
1028
+ });
1029
+ }
1030
+ else {
1031
+ // BIP-322 for native SegWit P2WPKH (bc1q/tb1q) — the default path
1032
+ if (!account.btcPrivateKey || !account.btcPublicKey) {
1033
+ throw new Error("Bitcoin keys not available. Ensure the wallet has Bitcoin key derivation.");
1034
+ }
1035
+ const scriptPubKey = p2wpkh(account.btcPublicKey, btcNetwork).script;
1036
+ const signatureBase64 = bip322Sign(message, account.btcPrivateKey, scriptPubKey);
1037
+ return createJsonResponse({
1038
+ success: true,
1039
+ signatureBase64,
1040
+ signatureFormat: "BIP-322 (witness-serialized, native SegWit/P2WPKH)",
1041
+ signer: account.btcAddress,
1042
+ network: NETWORK,
1043
+ addressType: "P2WPKH (native SegWit)",
1044
+ message: {
1045
+ original: message,
1046
+ },
1047
+ verificationNote: "Use btc_verify_message with the original message, signature, and address to verify. " +
1048
+ "BIP-322 P2WPKH signatures contain a 2-item witness: ECDSA sig + compressed pubkey.",
1049
+ });
1050
+ }
659
1051
  }
660
1052
  catch (error) {
661
1053
  return createErrorResponse(error);
662
1054
  }
663
1055
  });
664
- // Verify Bitcoin message signature (BIP-137)
1056
+ // Verify Bitcoin message signature (BIP-137 or BIP-322)
665
1057
  server.registerTool("btc_verify_message", {
666
- description: "Verify a BIP-137 Bitcoin message signature and recover the signer's address. " +
667
- "Takes the original message and signature (hex or base64), recovers the public key, " +
668
- "and derives the Bitcoin address. Compatible with signatures from most Bitcoin wallets.",
1058
+ description: "Verify a Bitcoin message signature (BIP-137 or BIP-322) and recover or confirm the signer. " +
1059
+ "Auto-detects BIP-137 (65-byte compact) vs BIP-322 (witness-serialized) format. " +
1060
+ "BIP-137 works for legacy addresses; BIP-322 is required for bc1q and bc1p addresses. " +
1061
+ "Takes the original message and signature (hex or base64). " +
1062
+ "Compatible with signatures from most Bitcoin wallets.",
669
1063
  inputSchema: {
670
1064
  message: z
671
1065
  .string()
672
1066
  .describe("The original plain text message that was signed."),
673
1067
  signature: z
674
1068
  .string()
675
- .describe("The BIP-137 signature (65 bytes as hex or base64). " +
676
- "Hex format: 130 characters. Base64 format: 88 characters."),
1069
+ .describe("The signature in hex or base64. BIP-137: 65 bytes (130 hex / 88 base64). " +
1070
+ "BIP-322: variable-length witness-serialized (base64)."),
1071
+ address: z
1072
+ .string()
1073
+ .optional()
1074
+ .describe("The Bitcoin address that allegedly signed the message. " +
1075
+ "Required for BIP-322 verification (bc1q for P2WPKH, bc1p for P2TR). " +
1076
+ "Also used for BIP-137 to confirm the recovered address matches."),
677
1077
  expectedSigner: z
678
1078
  .string()
679
1079
  .optional()
680
- .describe("Optional: expected signer Bitcoin address to verify against. " +
681
- "If provided, returns whether the signature is valid for this address."),
1080
+ .describe("Optional: alias for address (backward compatibility). " +
1081
+ "If address is not provided, this is used instead."),
682
1082
  },
683
- }, async ({ message, signature, expectedSigner }) => {
1083
+ }, async ({ message, signature, address, expectedSigner }) => {
684
1084
  try {
1085
+ // Use address param, fall back to expectedSigner for backward compat
1086
+ const signerAddress = address || expectedSigner;
685
1087
  // Parse signature from hex or base64
686
1088
  let signatureBytes;
687
- // Try to detect format
688
- if (signature.length === 130 && /^[0-9a-fA-F]+$/.test(signature)) {
689
- // Hex format (65 bytes = 130 hex chars)
1089
+ if (signature.length === 130 &&
1090
+ /^[0-9a-fA-F]+$/.test(signature)) {
1091
+ // 130 hex chars = 65 bytes likely BIP-137
690
1092
  signatureBytes = hex.decode(signature);
691
1093
  }
692
- else if (signature.length === 88 && /^[A-Za-z0-9+/=]+$/.test(signature)) {
693
- // Base64 format
1094
+ else if (/^[A-Za-z0-9+/]+=*$/.test(signature)) {
1095
+ // Base64 (BIP-137 88-char or BIP-322 variable length)
694
1096
  signatureBytes = new Uint8Array(Buffer.from(signature, "base64"));
695
1097
  }
696
1098
  else {
697
- // Try hex first, then base64
1099
+ // Attempt hex decode for arbitrary-length hex
698
1100
  try {
699
1101
  signatureBytes = hex.decode(signature);
700
1102
  }
@@ -702,70 +1104,145 @@ export function registerSigningTools(server) {
702
1104
  signatureBytes = new Uint8Array(Buffer.from(signature, "base64"));
703
1105
  }
704
1106
  }
705
- if (signatureBytes.length !== 65) {
706
- throw new Error(`Invalid signature length: ${signatureBytes.length} bytes. Expected 65 bytes.`);
1107
+ const btcNetwork = NETWORK === "testnet" ? BTC_TESTNET : BTC_MAINNET;
1108
+ // Detect signature format: BIP-137 (65 bytes, header 27-42) or BIP-322 (witness)
1109
+ if (isBip137Signature(signatureBytes)) {
1110
+ // ---------------------------------------------------------------
1111
+ // BIP-137 verification path
1112
+ // ---------------------------------------------------------------
1113
+ const header = signatureBytes[0];
1114
+ const rBytes = signatureBytes.slice(1, 33);
1115
+ const sBytes = signatureBytes.slice(33, 65);
1116
+ const recoveryId = getRecoveryIdFromHeader(header);
1117
+ const addressType = getAddressTypeFromHeader(header);
1118
+ const formattedMessage = formatBitcoinMessage(message);
1119
+ const messageHash = doubleSha256(formattedMessage);
1120
+ const r = BigInt("0x" + hex.encode(rBytes));
1121
+ const s = BigInt("0x" + hex.encode(sBytes));
1122
+ const sig = new secp256k1.Signature(r, s, recoveryId);
1123
+ const recoveredPoint = sig.recoverPublicKey(messageHash);
1124
+ const recoveredPubKey = recoveredPoint.toBytes(true); // compressed
1125
+ const isValidSig = secp256k1.verify(sig.toBytes(), messageHash, recoveredPubKey, { prehash: false });
1126
+ // Derive Bitcoin address from recovered public key based on header type
1127
+ let recoveredAddress;
1128
+ if (header >= 27 && header <= 34) {
1129
+ // P2PKH (uncompressed 27-30, compressed 31-34)
1130
+ recoveredAddress = p2pkh(recoveredPubKey, btcNetwork).address;
1131
+ }
1132
+ else if (header >= 35 && header <= 38) {
1133
+ // P2SH-P2WPKH (SegWit wrapped)
1134
+ recoveredAddress = p2sh(p2wpkh(recoveredPubKey, btcNetwork), btcNetwork).address;
1135
+ }
1136
+ else {
1137
+ // P2WPKH (native SegWit, headers 39-42)
1138
+ recoveredAddress = p2wpkh(recoveredPubKey, btcNetwork).address;
1139
+ }
1140
+ const signerMatches = signerAddress
1141
+ ? recoveredAddress === signerAddress
1142
+ : undefined;
1143
+ const isFullyValid = isValidSig && (signerAddress ? signerMatches : true);
1144
+ return createJsonResponse({
1145
+ success: true,
1146
+ signatureFormat: "BIP-137",
1147
+ signatureValid: isValidSig,
1148
+ recoveredPublicKey: hex.encode(recoveredPubKey),
1149
+ recoveredAddress,
1150
+ network: NETWORK,
1151
+ message: {
1152
+ original: message,
1153
+ prefix: BITCOIN_MSG_PREFIX,
1154
+ hash: hex.encode(messageHash),
1155
+ },
1156
+ header: {
1157
+ value: header,
1158
+ recoveryId,
1159
+ addressType,
1160
+ },
1161
+ verification: signerAddress
1162
+ ? {
1163
+ expectedSigner: signerAddress,
1164
+ signerMatches,
1165
+ isFullyValid,
1166
+ message: isFullyValid
1167
+ ? "Signature is valid and matches expected signer"
1168
+ : isValidSig
1169
+ ? "Signature is valid but does NOT match expected signer"
1170
+ : "Signature is invalid",
1171
+ }
1172
+ : undefined,
1173
+ note: "The recovered address is derived from the public key recovered from the signature. " +
1174
+ "BIP-137 signatures are compatible with most Bitcoin wallets (Electrum, Bitcoin Core, etc.).",
1175
+ });
707
1176
  }
708
- // Extract header and signature components
709
- const header = signatureBytes[0];
710
- const rBytes = signatureBytes.slice(1, 33);
711
- const sBytes = signatureBytes.slice(33, 65);
712
- // Get recovery ID and address type from header
713
- const recoveryId = getRecoveryIdFromHeader(header);
714
- const addressType = getAddressTypeFromHeader(header);
715
- // Format the message and hash it
716
- const formattedMessage = formatBitcoinMessage(message);
717
- const messageHash = doubleSha256(formattedMessage);
718
- // Recover public key from signature
719
- // Create signature object from r, s, and recovery
720
- const r = BigInt("0x" + hex.encode(rBytes));
721
- const s = BigInt("0x" + hex.encode(sBytes));
722
- const sig = new secp256k1.Signature(r, s, recoveryId);
723
- const recoveredPoint = sig.recoverPublicKey(messageHash);
724
- const recoveredPubKey = recoveredPoint.toBytes(true); // compressed
725
- // Verify the signature
726
- const isValidSig = secp256k1.verify(sig.toBytes(), messageHash, recoveredPubKey, { prehash: false });
727
- // Derive Bitcoin address from public key
728
- // Import btc-signer for address derivation
729
- const btc = await import("@scure/btc-signer");
730
- const btcNetwork = NETWORK === "testnet" ? btc.TEST_NETWORK : btc.NETWORK;
731
- const p2wpkh = btc.p2wpkh(recoveredPubKey, btcNetwork);
732
- const recoveredAddress = p2wpkh.address;
733
- // Check against expected signer if provided
734
- const signerMatches = expectedSigner
735
- ? recoveredAddress === expectedSigner
736
- : undefined;
737
- const isFullyValid = isValidSig && (expectedSigner ? signerMatches : true);
738
- return createJsonResponse({
739
- success: true,
740
- signatureValid: isValidSig,
741
- recoveredPublicKey: hex.encode(recoveredPubKey),
742
- recoveredAddress,
743
- network: NETWORK,
744
- message: {
745
- original: message,
746
- prefix: BITCOIN_MSG_PREFIX,
747
- hash: hex.encode(messageHash),
748
- },
749
- header: {
750
- value: header,
751
- recoveryId,
752
- addressType,
753
- },
754
- verification: expectedSigner
755
- ? {
756
- expectedSigner,
757
- signerMatches,
758
- isFullyValid,
759
- message: isFullyValid
760
- ? "Signature is valid and matches expected signer"
761
- : isValidSig
762
- ? "Signature is valid but does NOT match expected signer"
763
- : "Signature is invalid",
1177
+ else {
1178
+ // ---------------------------------------------------------------
1179
+ // BIP-322 verification path
1180
+ // ---------------------------------------------------------------
1181
+ const signatureBase64 = Buffer.from(signatureBytes).toString("base64");
1182
+ if (signerAddress) {
1183
+ // Verify against provided address
1184
+ let isValid;
1185
+ try {
1186
+ isValid = bip322Verify(message, signatureBase64, signerAddress, NETWORK);
764
1187
  }
765
- : undefined,
766
- note: "The recovered address is derived from the public key recovered from the signature. " +
767
- "BIP-137 signatures are compatible with most Bitcoin wallets (Electrum, Bitcoin Core, etc.).",
768
- });
1188
+ catch {
1189
+ isValid = false;
1190
+ }
1191
+ return createJsonResponse({
1192
+ success: true,
1193
+ signatureFormat: "BIP-322",
1194
+ signatureValid: isValid,
1195
+ network: NETWORK,
1196
+ message: {
1197
+ original: message,
1198
+ },
1199
+ verification: {
1200
+ expectedSigner: signerAddress,
1201
+ signerMatches: isValid,
1202
+ isFullyValid: isValid,
1203
+ message: isValid
1204
+ ? "BIP-322 signature is valid for the expected signer"
1205
+ : "BIP-322 signature is INVALID for the expected signer",
1206
+ },
1207
+ note: "BIP-322 'simple' format. Witness-serialized signature verified against address.",
1208
+ });
1209
+ }
1210
+ else {
1211
+ // Without address, attempt P2WPKH recovery from witness pubkey
1212
+ const witnessItems = RawWitness.decode(signatureBytes);
1213
+ if (witnessItems.length === 2 && witnessItems[1].length === 33) {
1214
+ // P2WPKH: [ecdsa_sig, compressed_pubkey]
1215
+ const pubkeyBytes = witnessItems[1];
1216
+ const recoveredAddress = p2wpkh(pubkeyBytes, btcNetwork).address;
1217
+ let isValid;
1218
+ try {
1219
+ isValid = bip322Verify(message, signatureBase64, recoveredAddress, NETWORK);
1220
+ }
1221
+ catch {
1222
+ isValid = false;
1223
+ }
1224
+ return createJsonResponse({
1225
+ success: true,
1226
+ signatureFormat: "BIP-322",
1227
+ signatureValid: isValid,
1228
+ recoveredAddress,
1229
+ network: NETWORK,
1230
+ message: {
1231
+ original: message,
1232
+ },
1233
+ note: "BIP-322 P2WPKH: address recovered from witness pubkey. " +
1234
+ "Provide 'address' parameter to verify against a specific address.",
1235
+ });
1236
+ }
1237
+ else if (witnessItems.length === 1 && witnessItems[0].length === 64) {
1238
+ throw new Error("BIP-322 P2TR signatures require the 'address' parameter to verify (no key recovery for Taproot).");
1239
+ }
1240
+ else {
1241
+ throw new Error(`BIP-322: unexpected witness structure (${witnessItems.length} items). ` +
1242
+ "Provide the 'address' parameter to verify.");
1243
+ }
1244
+ }
1245
+ }
769
1246
  }
770
1247
  catch (error) {
771
1248
  return createErrorResponse(error);
@@ -1 +1 @@
1
- {"version":3,"file":"signing.tools.js","sourceRoot":"","sources":["../../src/tools/signing.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signing.tools.js","sourceRoot":"","sources":["../../src/tools/signing.tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aibtc/mcp-server",
3
- "version": "1.27.0",
3
+ "version": "1.28.1",
4
4
  "description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
5
5
  "mcpName": "io.github.aibtcdev/mcp-server",
6
6
  "type": "module",
package/skill/SKILL.md CHANGED
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
4
4
  license: MIT
5
5
  metadata:
6
6
  author: aibtcdev
7
- version: 1.27.0 # x-release-please-version
7
+ version: 1.28.1 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---