@vultisig/core-mpc 1.0.2 → 1.1.0
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/CHANGELOG.md +45 -0
- package/dist/keysign/cosigner.js +1 -1
- package/dist/keysign/cosigner.js.map +1 -1
- package/dist/keysign/index.js +8 -6
- package/dist/keysign/index.js.map +1 -1
- package/dist/keysign/refine/utxo.d.ts.map +1 -1
- package/dist/keysign/refine/utxo.js +5 -6
- package/dist/keysign/refine/utxo.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/bitcoin/sighash.d.ts +28 -0
- package/dist/keysign/signingInputs/resolvers/bitcoin/sighash.d.ts.map +1 -0
- package/dist/keysign/signingInputs/resolvers/bitcoin/sighash.js +147 -0
- package/dist/keysign/signingInputs/resolvers/bitcoin/sighash.js.map +1 -0
- package/dist/keysign/swap/build.d.ts +1 -1
- package/dist/keysign/swap/build.d.ts.map +1 -1
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.d.ts.map +1 -1
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js +7 -0
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js.map +1 -1
- package/dist/tx/compile/compileSignBitcoinTx.d.ts +20 -0
- package/dist/tx/compile/compileSignBitcoinTx.d.ts.map +1 -0
- package/dist/tx/compile/compileSignBitcoinTx.js +101 -0
- package/dist/tx/compile/compileSignBitcoinTx.js.map +1 -0
- package/dist/tx/compile/compileTx.d.ts +3 -1
- package/dist/tx/compile/compileTx.d.ts.map +1 -1
- package/dist/tx/compile/compileTx.js +14 -5
- package/dist/tx/compile/compileTx.js.map +1 -1
- package/dist/tx/preSigningHashes/index.d.ts +3 -1
- package/dist/tx/preSigningHashes/index.d.ts.map +1 -1
- package/dist/tx/preSigningHashes/index.js +10 -5
- package/dist/tx/preSigningHashes/index.js.map +1 -1
- package/dist/types/utils/commVault.d.ts.map +1 -1
- package/dist/types/utils/commVault.js +1 -4
- package/dist/types/utils/commVault.js.map +1 -1
- package/dist/types/utils/libType.d.ts +3 -7
- package/dist/types/utils/libType.d.ts.map +1 -1
- package/dist/types/utils/libType.js +4 -20
- package/dist/types/utils/libType.js.map +1 -1
- package/dist/types/vultisig/keygen/v1/single_keygen_message_pb.d.ts +5 -5
- package/dist/types/vultisig/keygen/v1/single_keygen_message_pb.d.ts.map +1 -1
- package/dist/types/vultisig/keygen/v1/single_keygen_message_pb.js +5 -12
- package/dist/types/vultisig/keygen/v1/single_keygen_message_pb.js.map +1 -1
- package/dist/types/vultisig/keygen/v1/single_keygen_type_pb.d.ts +1 -1
- package/dist/types/vultisig/keygen/v1/single_keygen_type_pb.d.ts.map +1 -1
- package/dist/types/vultisig/keygen/v1/single_keygen_type_pb.js +3 -7
- package/dist/types/vultisig/keygen/v1/single_keygen_type_pb.js.map +1 -1
- package/dist/types/vultisig/keysign/v1/keysign_message_pb.d.ts +7 -1
- package/dist/types/vultisig/keysign/v1/keysign_message_pb.d.ts.map +1 -1
- package/dist/types/vultisig/keysign/v1/keysign_message_pb.js +1 -1
- package/dist/types/vultisig/keysign/v1/keysign_message_pb.js.map +1 -1
- package/dist/types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.d.ts +148 -0
- package/dist/types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.d.ts.map +1 -1
- package/dist/types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.js +16 -1
- package/dist/types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.js.map +1 -1
- package/dist/types/vultisig/vault/v1/vault_pb.d.ts +8 -0
- package/dist/types/vultisig/vault/v1/vault_pb.d.ts.map +1 -1
- package/dist/types/vultisig/vault/v1/vault_pb.js +1 -1
- package/dist/types/vultisig/vault/v1/vault_pb.js.map +1 -1
- package/package.json +12 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# @vultisig/core-mpc
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#235](https://github.com/vultisig/vultisig-sdk/pull/235) [`aea1c28`](https://github.com/vultisig/vultisig-sdk/commit/aea1c28051345ddef9c952108b203caa8b7fa032) Thanks [@rcoderdev](https://github.com/rcoderdev)! - ### Swap amounts (backward compatible)
|
|
8
|
+
- `SwapQuoteParams.amount` and `SwapTxParams.amount` now accept **`string | number`**. Call sites that already pass a **number** require no code changes.
|
|
9
|
+
- Human-readable swap amounts can be passed as **decimal strings** end-to-end (compound `vault.swap()`, `getSwapQuote`, `prepareSwapTx`, CLI agent), avoiding precision loss from `Number()` / `parseFloat()` on extreme magnitudes or fractional digits.
|
|
10
|
+
- `toChainAmount` accepts **`string | number`**; whitespace-only / empty strings throw instead of being treated as zero.
|
|
11
|
+
|
|
12
|
+
### Send preparation (stricter validation)
|
|
13
|
+
- `prepareSendTx` and `estimateSendFee` reject **zero or negative** `amount` in base units. This aligns with real transfers; payloads with `toAmount: "0"` are no longer built for native/token sends.
|
|
14
|
+
- **Zero-value EVM contract calls** are unchanged: use `prepareContractCallTx` (or `vault.contractCall()`), which still builds via the internal path that allows `value: 0n`.
|
|
15
|
+
|
|
16
|
+
### Other
|
|
17
|
+
- Swap approval sizing uses `toChainAmount` instead of float scaling for required allowance.
|
|
18
|
+
- `@vultisig/rujira` (source): `VultisigSignature.format` includes **`MLDSA`** to match SDK `Signature` — type-only widening, no runtime change; Rujira will pick up a **patch** version via normal dependency releases when published next.
|
|
19
|
+
- CLI: direct **`viem`** dependency; Solana local swap human amount via `formatUnits`; agent SSE `Transaction` typing includes optional `swap_tx` / `send_tx` / `tx`.
|
|
20
|
+
|
|
21
|
+
**Semver:** **Minor** for `@vultisig/core-chain`, `@vultisig/core-mpc`, and `@vultisig/sdk` (additive types + intentional validation tightening). **`@vultisig/cli` is linked to the SDK** in Changesets config, so it receives the same minor bump. This is **not** a SemVer **major** for integration purposes: swap inputs are only widened; `prepareSendTx({ amount: 0n })` was never a valid broadcast path.
|
|
22
|
+
|
|
23
|
+
**Release tooling note:** `yarn changeset status` may still propose a **major** version for `@vultisig/rujira` when the SDK minors, even though the only Rujira change is adding `'MLDSA'` to a string-literal union (fully backward compatible). Review the Version Packages PR and **downgrade Rujira to patch** if your policy is to reserve majors for real breaking API changes.
|
|
24
|
+
|
|
25
|
+
**`@vultisig/sdk` is 0.x:** per [SemVer](https://semver.org/#spec-item-4), minor releases on `0.y.z` may include behavior changes; consumers pinning `^0.14.0` should still accept `0.15.0` but should read changelog for validation tightening.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- [#174](https://github.com/vultisig/vultisig-sdk/pull/174) [`c630597`](https://github.com/vultisig/vultisig-sdk/commit/c6305970d1685194f1c6c11d5e8d141e8aa6c9a1) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - fix: harden PSBT signing (SignBitcoin) - follow-up on PR [#174](https://github.com/vultisig/vultisig-sdk/issues/174)
|
|
30
|
+
- parameterize network in buildSignBitcoinFromPsbt (was hardcoded to mainnet)
|
|
31
|
+
- harden detectScriptType: full P2PKH template check, add P2WSH detection
|
|
32
|
+
- fail early for unsupported script types with descriptive BIP-referenced errors
|
|
33
|
+
- add fee snipe mitigation (cross-validate witnessUtxo vs nonWitnessUtxo)
|
|
34
|
+
- rename computeBip143Sighashes -> computePreSigningHashes for extensibility
|
|
35
|
+
- use @noble/hashes/sha256 instead of Node.js crypto (cross-platform)
|
|
36
|
+
- use unsigned int64 for Bitcoin amounts (writeBigUInt64LE)
|
|
37
|
+
- fix varint encoding for output script lengths in sighash computation
|
|
38
|
+
- refactor compileSignBitcoinTx to use bitcoinjs-lib Transaction class
|
|
39
|
+
- fix libType regression in commVault.ts for key-import vaults
|
|
40
|
+
- fix variable shadowing in compileTx.ts
|
|
41
|
+
- skip Blockaid simulation for PSBT flows (incompatible with WalletCore compiler)
|
|
42
|
+
- augment change detection with BIP32 derivation on outputs
|
|
43
|
+
- add 10 unit tests cross-validating sighash against bitcoinjs-lib v7
|
|
44
|
+
|
|
45
|
+
- Updated dependencies [[`c630597`](https://github.com/vultisig/vultisig-sdk/commit/c6305970d1685194f1c6c11d5e8d141e8aa6c9a1), [`aea1c28`](https://github.com/vultisig/vultisig-sdk/commit/aea1c28051345ddef9c952108b203caa8b7fa032)]:
|
|
46
|
+
- @vultisig/core-chain@1.2.0
|
|
47
|
+
|
|
3
48
|
## 1.0.2
|
|
4
49
|
|
|
5
50
|
### Patch Changes
|
package/dist/keysign/cosigner.js
CHANGED
|
@@ -152,7 +152,7 @@ async function main() {
|
|
|
152
152
|
publicKey,
|
|
153
153
|
});
|
|
154
154
|
const msgs = inputs
|
|
155
|
-
.flatMap(txInputData => getPreSigningHashes({ txInputData, walletCore, chain }).map(h => Buffer.from(h).toString('hex')))
|
|
155
|
+
.flatMap(txInputData => getPreSigningHashes({ txInputData, walletCore, chain, keysignPayload }).map(h => Buffer.from(h).toString('hex')))
|
|
156
156
|
.sort();
|
|
157
157
|
console.log(` Hashes (${msgs.length}): ${msgs.map(h => h.slice(0, 20) + '...').join(', ')}`);
|
|
158
158
|
const chainKind = getChainKind(chain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosigner.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/cosigner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cosigner.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/cosigner.ts"],"names":[],"mappings":"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"}
|
package/dist/keysign/index.js
CHANGED
|
@@ -118,13 +118,15 @@ export const keysign = async ({ keyShare, signatureAlgorithm, message, chainPath
|
|
|
118
118
|
})
|
|
119
119
|
: (() => {
|
|
120
120
|
const [rawR, rawS] = [signature.slice(0, 32), signature.slice(32, 64)];
|
|
121
|
+
// Contract: each MpcEngine's signSession.finish() returns canonical
|
|
122
|
+
// R || S bytes — DklsEngine (ECDSA) emits big-endian (which
|
|
123
|
+
// encodeDERSignature consumes directly) and SchnorrEngine (Ed25519)
|
|
124
|
+
// emits R as a 32-byte compressed point and S as a 32-byte scalar
|
|
125
|
+
// little-endian (the on-the-wire ed25519-dalek format). Pass
|
|
126
|
+
// through here; any backend-specific byte-ordering quirks belong
|
|
127
|
+
// inside that backend's session wrapper, never in this loop.
|
|
121
128
|
const [r, s] = [rawR, rawS]
|
|
122
|
-
.map(value => Buffer.from(value))
|
|
123
|
-
.map(value => match(signatureAlgorithm, {
|
|
124
|
-
ecdsa: () => value,
|
|
125
|
-
eddsa: () => value.reverse(),
|
|
126
|
-
}))
|
|
127
|
-
.map(value => value.toString('hex'));
|
|
129
|
+
.map(value => Buffer.from(value).toString('hex'));
|
|
128
130
|
const derSignature = encodeDERSignature(rawR, rawS);
|
|
129
131
|
return withoutUndefinedFields({
|
|
130
132
|
msg: Buffer.from(message, 'hex').toString('base64'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/refine/utxo.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAMnF,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAwBD,eAAO,MAAM,iBAAiB,GAC5B,OAAO,sBAAsB,KAC5B,
|
|
1
|
+
{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/refine/utxo.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAMnF,KAAK,sBAAsB,GAAG;IAC5B,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAwBD,eAAO,MAAM,iBAAiB,GAC5B,OAAO,sBAAsB,KAC5B,cA+EF,CAAA"}
|
|
@@ -18,12 +18,11 @@ const convertPlanUtxosToUtxoInfo = ({ utxos, walletCore, }) => utxos.map(({ outP
|
|
|
18
18
|
});
|
|
19
19
|
export const refineKeysignUtxo = (input) => {
|
|
20
20
|
const utxoSpecific = getBlockchainSpecificValue(input.keysignPayload.blockchainSpecific, 'utxoSpecific');
|
|
21
|
-
// PSBTs already have UTXOs defined
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// }
|
|
21
|
+
// PSBTs already have UTXOs defined — skip refinement.
|
|
22
|
+
// When signData is signBitcoin, the PSBT defines exact inputs/outputs.
|
|
23
|
+
if (input.keysignPayload.signData.case === 'signBitcoin') {
|
|
24
|
+
return input.keysignPayload;
|
|
25
|
+
}
|
|
27
26
|
const [signingInput] = getUtxoSigningInputs(input);
|
|
28
27
|
const plan = shouldBePresent(signingInput.plan, 'UTXO signing input plan');
|
|
29
28
|
const planUtxos = plan.utxos;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/refine/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAKhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAA;AAE3F,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,MAAM,SAAS,GAAG,IAAI,CAAA;AAOtB,MAAM,0BAA0B,GAAG,CAAC,EAClC,KAAK,EACL,UAAU,GACsB,EAAE,EAAE,CACpC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAA;IAErE,OAAO,MAAM,CAAC,cAAc,EAAE;QAC5B,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAClE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjE,KAAK;KACN,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA6B,EACb,EAAE;IAClB,MAAM,YAAY,GAAG,0BAA0B,CAC7C,KAAK,CAAC,cAAc,CAAC,kBAAkB,EACvC,cAAc,CACf,CAAA;IAED,
|
|
1
|
+
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/refine/utxo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SignBitcoin } from '../../../../types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.js';
|
|
2
|
+
/** Serialize a uint32 as 4 bytes little-endian. */
|
|
3
|
+
export declare const writeUInt32LE: (value: number) => Buffer;
|
|
4
|
+
/** Serialize a uint64 as 8 bytes little-endian (Bitcoin amounts are unsigned). */
|
|
5
|
+
export declare const writeUInt64LE: (value: bigint) => Buffer;
|
|
6
|
+
/** Encode an integer as a Bitcoin varint (CompactSize). */
|
|
7
|
+
export declare const writeVarInt: (n: number) => Buffer;
|
|
8
|
+
/**
|
|
9
|
+
* Compute BIP-143 sighashes for all `isOurs` inputs in a SignBitcoin message.
|
|
10
|
+
* Returns one sighash (32 bytes) per input that has `isOurs === true`,
|
|
11
|
+
* in the same order they appear in `signBitcoin.inputs`.
|
|
12
|
+
*
|
|
13
|
+
* Currently supports P2WPKH and P2SH-P2WPKH script types (SIGHASH_ALL only).
|
|
14
|
+
*
|
|
15
|
+
* Follow-up work:
|
|
16
|
+
* - P2TR (Taproot): requires BIP-341 sighash (tagged hashes, Schnorr signatures,
|
|
17
|
+
* commits to ALL input amounts/scriptPubKeys). See https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki
|
|
18
|
+
* bitcoinjs-lib provides Transaction.hashForWitnessV1() for this.
|
|
19
|
+
* - P2PKH (legacy): requires legacy sighash (not BIP-143).
|
|
20
|
+
* bitcoinjs-lib provides Transaction.hashForSignature() for this.
|
|
21
|
+
* - P2WSH: requires BIP-143 with the full witnessScript as scriptCode.
|
|
22
|
+
* - SIGHASH_SINGLE, SIGHASH_NONE, ANYONECANPAY: require conditional
|
|
23
|
+
* hashPrevouts/hashSequence/hashOutputs computation per BIP-143.
|
|
24
|
+
*
|
|
25
|
+
* @see https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
|
|
26
|
+
*/
|
|
27
|
+
export declare const computePreSigningHashes: (signBitcoin: SignBitcoin) => Uint8Array[];
|
|
28
|
+
//# sourceMappingURL=sighash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sighash.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/bitcoin/sighash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wEAAwE,CAAA;AASpG,mDAAmD;AACnD,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAI7C,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAI7C,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,MAiBvC,CAAA;AA0BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,uBAAuB,GAClC,aAAa,WAAW,KACvB,UAAU,EAgGZ,CAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
2
|
+
// -- Shared serialization utilities --
|
|
3
|
+
// See https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
|
|
4
|
+
/** Double-SHA256 as used in Bitcoin consensus. */
|
|
5
|
+
const hash256 = (data) => Buffer.from(sha256(sha256(data)));
|
|
6
|
+
/** Serialize a uint32 as 4 bytes little-endian. */
|
|
7
|
+
export const writeUInt32LE = (value) => {
|
|
8
|
+
const buf = Buffer.alloc(4);
|
|
9
|
+
buf.writeUInt32LE(value);
|
|
10
|
+
return buf;
|
|
11
|
+
};
|
|
12
|
+
/** Serialize a uint64 as 8 bytes little-endian (Bitcoin amounts are unsigned). */
|
|
13
|
+
export const writeUInt64LE = (value) => {
|
|
14
|
+
const buf = Buffer.alloc(8);
|
|
15
|
+
buf.writeBigUInt64LE(value);
|
|
16
|
+
return buf;
|
|
17
|
+
};
|
|
18
|
+
/** Encode an integer as a Bitcoin varint (CompactSize). */
|
|
19
|
+
export const writeVarInt = (n) => {
|
|
20
|
+
if (n < 0 || n > 0xffffffff) {
|
|
21
|
+
throw new Error(`writeVarInt: value out of range: ${n}`);
|
|
22
|
+
}
|
|
23
|
+
if (n < 0xfd) {
|
|
24
|
+
return Buffer.from([n]);
|
|
25
|
+
}
|
|
26
|
+
if (n <= 0xffff) {
|
|
27
|
+
const buf = Buffer.alloc(3);
|
|
28
|
+
buf[0] = 0xfd;
|
|
29
|
+
buf.writeUInt16LE(n, 1);
|
|
30
|
+
return buf;
|
|
31
|
+
}
|
|
32
|
+
const buf = Buffer.alloc(5);
|
|
33
|
+
buf[0] = 0xfe;
|
|
34
|
+
buf.writeUInt32LE(n, 1);
|
|
35
|
+
return buf;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Derive BIP-143 scriptCode from a P2WPKH scriptPubKey.
|
|
39
|
+
* 0x0014<20-byte-hash> -> OP_DUP OP_HASH160 <20> <hash> OP_EQUALVERIFY OP_CHECKSIG
|
|
40
|
+
* The 0x19 length prefix is part of the scriptCode per BIP-143.
|
|
41
|
+
*/
|
|
42
|
+
const p2wpkhScriptCode = (scriptPubKey) => {
|
|
43
|
+
const pubkeyHash = scriptPubKey.subarray(2, 22);
|
|
44
|
+
return Buffer.concat([
|
|
45
|
+
Buffer.from([0x19, 0x76, 0xa9, 0x14]),
|
|
46
|
+
pubkeyHash,
|
|
47
|
+
Buffer.from([0x88, 0xac]),
|
|
48
|
+
]);
|
|
49
|
+
};
|
|
50
|
+
/** Serialize an outpoint (txid LE + vout LE). */
|
|
51
|
+
const serializeOutpoint = (hash, index) => {
|
|
52
|
+
const txid = Buffer.from(hash, 'hex').reverse();
|
|
53
|
+
return Buffer.concat([txid, writeUInt32LE(index)]);
|
|
54
|
+
};
|
|
55
|
+
/** Serialize a Bitcoin output (value + scriptPubKey with varint length). */
|
|
56
|
+
const serializeOutput = (amount, scriptPubKey) => Buffer.concat([writeUInt64LE(amount), writeVarInt(scriptPubKey.length), scriptPubKey]);
|
|
57
|
+
/**
|
|
58
|
+
* Compute BIP-143 sighashes for all `isOurs` inputs in a SignBitcoin message.
|
|
59
|
+
* Returns one sighash (32 bytes) per input that has `isOurs === true`,
|
|
60
|
+
* in the same order they appear in `signBitcoin.inputs`.
|
|
61
|
+
*
|
|
62
|
+
* Currently supports P2WPKH and P2SH-P2WPKH script types (SIGHASH_ALL only).
|
|
63
|
+
*
|
|
64
|
+
* Follow-up work:
|
|
65
|
+
* - P2TR (Taproot): requires BIP-341 sighash (tagged hashes, Schnorr signatures,
|
|
66
|
+
* commits to ALL input amounts/scriptPubKeys). See https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki
|
|
67
|
+
* bitcoinjs-lib provides Transaction.hashForWitnessV1() for this.
|
|
68
|
+
* - P2PKH (legacy): requires legacy sighash (not BIP-143).
|
|
69
|
+
* bitcoinjs-lib provides Transaction.hashForSignature() for this.
|
|
70
|
+
* - P2WSH: requires BIP-143 with the full witnessScript as scriptCode.
|
|
71
|
+
* - SIGHASH_SINGLE, SIGHASH_NONE, ANYONECANPAY: require conditional
|
|
72
|
+
* hashPrevouts/hashSequence/hashOutputs computation per BIP-143.
|
|
73
|
+
*
|
|
74
|
+
* @see https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
|
|
75
|
+
*/
|
|
76
|
+
export const computePreSigningHashes = (signBitcoin) => {
|
|
77
|
+
const { version, locktime, inputs, outputs } = signBitcoin;
|
|
78
|
+
if (inputs.length === 0) {
|
|
79
|
+
throw new Error('SignBitcoin has no inputs');
|
|
80
|
+
}
|
|
81
|
+
const oursCount = inputs.filter(i => i.isOurs).length;
|
|
82
|
+
if (oursCount === 0) {
|
|
83
|
+
throw new Error('No signable inputs (all isOurs === false)');
|
|
84
|
+
}
|
|
85
|
+
// hashPrevouts = double_SHA256(all outpoints serialized)
|
|
86
|
+
const prevoutsData = Buffer.concat(inputs.map(inp => serializeOutpoint(inp.hash, inp.index)));
|
|
87
|
+
const hashPrevouts = hash256(prevoutsData);
|
|
88
|
+
// hashSequence = double_SHA256(all sequences serialized)
|
|
89
|
+
const sequenceData = Buffer.concat(inputs.map(inp => writeUInt32LE(inp.sequence ?? 0xffffffff)));
|
|
90
|
+
const hashSequence = hash256(sequenceData);
|
|
91
|
+
// hashOutputs = double_SHA256(all outputs serialized)
|
|
92
|
+
const outputsData = Buffer.concat(outputs.map(out => serializeOutput(out.amount, Buffer.from(out.scriptPubKey, 'hex'))));
|
|
93
|
+
const hashOutputs = hash256(outputsData);
|
|
94
|
+
const sighashes = [];
|
|
95
|
+
for (const input of inputs) {
|
|
96
|
+
if (!input.isOurs)
|
|
97
|
+
continue;
|
|
98
|
+
if (input.amount < 0n) {
|
|
99
|
+
throw new Error(`Input amount must be non-negative, got ${input.amount}`);
|
|
100
|
+
}
|
|
101
|
+
const scriptPubKey = Buffer.from(input.scriptPubKey, 'hex');
|
|
102
|
+
let scriptCode;
|
|
103
|
+
if (input.scriptType === 'p2wpkh') {
|
|
104
|
+
scriptCode = p2wpkhScriptCode(scriptPubKey);
|
|
105
|
+
}
|
|
106
|
+
else if (input.scriptType === 'p2sh-p2wpkh') {
|
|
107
|
+
if (!input.redeemScript) {
|
|
108
|
+
throw new Error('P2SH-P2WPKH inputs require redeemScript');
|
|
109
|
+
}
|
|
110
|
+
const redeemScript = Buffer.from(input.redeemScript, 'hex');
|
|
111
|
+
if (redeemScript.length !== 22 ||
|
|
112
|
+
redeemScript[0] !== 0x00 ||
|
|
113
|
+
redeemScript[1] !== 0x14) {
|
|
114
|
+
throw new Error('Unsupported redeemScript for p2sh-p2wpkh');
|
|
115
|
+
}
|
|
116
|
+
scriptCode = p2wpkhScriptCode(redeemScript);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Error(`Unsupported script type for BIP-143 sighash: ${input.scriptType}`);
|
|
120
|
+
}
|
|
121
|
+
const sighashType = input.sighashType ?? 1; // SIGHASH_ALL
|
|
122
|
+
const baseType = sighashType & 0x1f;
|
|
123
|
+
const anyoneCanPay = (sighashType & 0x80) !== 0;
|
|
124
|
+
if (baseType !== 0x01 || anyoneCanPay) {
|
|
125
|
+
throw new Error(`Unsupported sighash type: 0x${sighashType.toString(16)}. ` +
|
|
126
|
+
`Only SIGHASH_ALL (0x01) is currently supported.`);
|
|
127
|
+
}
|
|
128
|
+
// BIP-143 preimage:
|
|
129
|
+
// version || hashPrevouts || hashSequence || outpoint || scriptCode || value || sequence || hashOutputs || locktime || sighashType
|
|
130
|
+
const outpoint = serializeOutpoint(input.hash, input.index);
|
|
131
|
+
const preimage = Buffer.concat([
|
|
132
|
+
writeUInt32LE(version),
|
|
133
|
+
hashPrevouts,
|
|
134
|
+
hashSequence,
|
|
135
|
+
outpoint,
|
|
136
|
+
scriptCode,
|
|
137
|
+
writeUInt64LE(input.amount),
|
|
138
|
+
writeUInt32LE(input.sequence ?? 0xffffffff),
|
|
139
|
+
hashOutputs,
|
|
140
|
+
writeUInt32LE(locktime),
|
|
141
|
+
writeUInt32LE(sighashType),
|
|
142
|
+
]);
|
|
143
|
+
sighashes.push(hash256(preimage));
|
|
144
|
+
}
|
|
145
|
+
return sighashes;
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=sighash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sighash.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/bitcoin/sighash.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
|
|
|
7
7
|
export type BuildSwapKeysignPayloadInput = {
|
|
8
8
|
fromCoin: AccountCoin;
|
|
9
9
|
toCoin: AccountCoin;
|
|
10
|
-
amount: number;
|
|
10
|
+
amount: string | number;
|
|
11
11
|
swapQuote: SwapQuote;
|
|
12
12
|
vaultId: string;
|
|
13
13
|
localPartyId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAMnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAS1D,OAAO,EACL,cAAc,EAEf,MAAM,iEAAiE,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAMnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAS1D,OAAO,EACL,cAAc,EAEf,MAAM,iEAAiE,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,WAAW,EAAE,SAAS,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,kHAW3C,4BAA4B,4BAqK9B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompiledTxsForBlockaidInput.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAKrD,OAAO,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAA;AAGzF,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,0BAG5C,KAAK,
|
|
1
|
+
{"version":3,"file":"getCompiledTxsForBlockaidInput.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAKrD,OAAO,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAA;AAGzF,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,0BAG5C,KAAK,kCAiEP,CAAA"}
|
|
@@ -21,11 +21,18 @@ export const getCompiledTxsForBlockaidInput = ({ payload, walletCore, }) => {
|
|
|
21
21
|
walletCore,
|
|
22
22
|
publicKey,
|
|
23
23
|
});
|
|
24
|
+
// SignBitcoin (PSBT) flows use custom sighash/compilation that WalletCore
|
|
25
|
+
// doesn't understand. Skip Blockaid simulation for PSBT transactions.
|
|
26
|
+
// TODO: implement Blockaid validation for PSBT flows using compileSignBitcoinTx
|
|
27
|
+
if (payload.signData.case === 'signBitcoin') {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
24
30
|
return inputs.map(txInputData => {
|
|
25
31
|
const preHashes = getPreSigningHashes({
|
|
26
32
|
walletCore,
|
|
27
33
|
txInputData,
|
|
28
34
|
chain,
|
|
35
|
+
keysignPayload: payload,
|
|
29
36
|
});
|
|
30
37
|
const signatures = walletCore.DataVector.create();
|
|
31
38
|
const publicKeys = walletCore.DataVector.create();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompiledTxsForBlockaidInput.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAA;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAGjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAOrE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,OAAO,EACP,UAAU,GACJ,EAAE,EAAE;IACV,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAErC,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc,CACnD,aAAa,EACb,kBAAkB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAC1C,CAAA;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACrC,cAAc,EAAE,OAAO;QACvB,UAAU;QACV,SAAS;KACV,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC9B,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU;YACV,WAAW;YACX,KAAK;
|
|
1
|
+
{"version":3,"file":"getCompiledTxsForBlockaidInput.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
|
|
2
|
+
import { KeysignSignature } from '../../keysign/KeysignSignature.js';
|
|
3
|
+
import { SignBitcoin } from '../../types/vultisig/keysign/v1/wasm_execute_contract_payload_pb.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build a raw signed Bitcoin transaction from SignBitcoin fields + MPC signatures.
|
|
6
|
+
* Uses bitcoinjs-lib's Transaction class for serialization (proper varint encoding,
|
|
7
|
+
* witness handling, segwit markers).
|
|
8
|
+
*
|
|
9
|
+
* Returns an encoded TW.Bitcoin.Proto.SigningOutput so callers can decode it
|
|
10
|
+
* the same way as WalletCore-compiled transactions.
|
|
11
|
+
*
|
|
12
|
+
* Currently only handles single-signer flows where ALL isOurs inputs belong to
|
|
13
|
+
* this vault. Non-ours inputs get empty witnesses, making the tx invalid on-chain
|
|
14
|
+
* if any exist. Multi-party PSBT support (where non-ours inputs have existing
|
|
15
|
+
* signatures from other parties) is a follow-up.
|
|
16
|
+
*
|
|
17
|
+
* @see https://www.npmjs.org/package/bitcoinjs-lib
|
|
18
|
+
*/
|
|
19
|
+
export declare const compileSignBitcoinTx: (signBitcoin: SignBitcoin, signatures: Record<string, KeysignSignature>, publicKey: PublicKey) => Uint8Array;
|
|
20
|
+
//# sourceMappingURL=compileSignBitcoinTx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compileSignBitcoinTx.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileSignBitcoinTx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,kEAAkE,CAAA;AAE9F;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,WAAW,EACxB,YAAY,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC5C,WAAW,SAAS,KACnB,UAmGF,CAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Transaction } from 'bitcoinjs-lib';
|
|
2
|
+
import { TW } from '@trustwallet/wallet-core';
|
|
3
|
+
import { computePreSigningHashes } from '../../keysign/signingInputs/resolvers/bitcoin/sighash.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build a raw signed Bitcoin transaction from SignBitcoin fields + MPC signatures.
|
|
6
|
+
* Uses bitcoinjs-lib's Transaction class for serialization (proper varint encoding,
|
|
7
|
+
* witness handling, segwit markers).
|
|
8
|
+
*
|
|
9
|
+
* Returns an encoded TW.Bitcoin.Proto.SigningOutput so callers can decode it
|
|
10
|
+
* the same way as WalletCore-compiled transactions.
|
|
11
|
+
*
|
|
12
|
+
* Currently only handles single-signer flows where ALL isOurs inputs belong to
|
|
13
|
+
* this vault. Non-ours inputs get empty witnesses, making the tx invalid on-chain
|
|
14
|
+
* if any exist. Multi-party PSBT support (where non-ours inputs have existing
|
|
15
|
+
* signatures from other parties) is a follow-up.
|
|
16
|
+
*
|
|
17
|
+
* @see https://www.npmjs.org/package/bitcoinjs-lib
|
|
18
|
+
*/
|
|
19
|
+
export const compileSignBitcoinTx = (signBitcoin, signatures, publicKey) => {
|
|
20
|
+
const hashes = computePreSigningHashes(signBitcoin);
|
|
21
|
+
const pubKeyBytes = Buffer.from(publicKey.data());
|
|
22
|
+
// Build the transaction using bitcoinjs-lib's Transaction class
|
|
23
|
+
// which handles varint encoding, segwit markers, and witness serialization.
|
|
24
|
+
const tx = new Transaction();
|
|
25
|
+
tx.version = signBitcoin.version;
|
|
26
|
+
tx.locktime = signBitcoin.locktime;
|
|
27
|
+
// Add inputs
|
|
28
|
+
for (const input of signBitcoin.inputs) {
|
|
29
|
+
const txid = Buffer.from(input.hash, 'hex').reverse(); // display -> internal byte order
|
|
30
|
+
tx.addInput(txid, input.index, input.sequence ?? 0xffffffff);
|
|
31
|
+
// P2SH-P2WPKH: set scriptSig to redeemScript push
|
|
32
|
+
if (input.scriptType === 'p2sh-p2wpkh' && input.redeemScript) {
|
|
33
|
+
const redeemScriptBuf = Buffer.from(input.redeemScript, 'hex');
|
|
34
|
+
const scriptSig = Buffer.concat([
|
|
35
|
+
Buffer.from([redeemScriptBuf.length]),
|
|
36
|
+
redeemScriptBuf,
|
|
37
|
+
]);
|
|
38
|
+
tx.setInputScript(tx.ins.length - 1, scriptSig);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Add outputs
|
|
42
|
+
for (const output of signBitcoin.outputs) {
|
|
43
|
+
tx.addOutput(Buffer.from(output.scriptPubKey, 'hex'), output.amount);
|
|
44
|
+
}
|
|
45
|
+
// Set witness data for each input
|
|
46
|
+
let hashIndex = 0;
|
|
47
|
+
for (let i = 0; i < signBitcoin.inputs.length; i++) {
|
|
48
|
+
const input = signBitcoin.inputs[i];
|
|
49
|
+
if (!input.isOurs) {
|
|
50
|
+
// Non-ours inputs: empty witness stack.
|
|
51
|
+
// This makes the tx invalid if non-ours inputs exist.
|
|
52
|
+
// Multi-party PSBT support (preserving existing signatures) is a follow-up.
|
|
53
|
+
tx.setWitness(i, []);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const hash = hashes[hashIndex++];
|
|
57
|
+
const hashHex = Buffer.from(hash).toString('hex');
|
|
58
|
+
const sig = signatures[hashHex];
|
|
59
|
+
if (!sig) {
|
|
60
|
+
throw new Error(`Missing signature for sighash ${hashHex.slice(0, 16)}...`);
|
|
61
|
+
}
|
|
62
|
+
const derSig = Buffer.from(sig.der_signature, 'hex');
|
|
63
|
+
const sighashByte = input.sighashType ?? 1;
|
|
64
|
+
const sigWithHashType = Buffer.concat([derSig, Buffer.from([sighashByte])]);
|
|
65
|
+
// P2WPKH witness: [signature+hashtype, pubkey]
|
|
66
|
+
tx.setWitness(i, [sigWithHashType, pubKeyBytes]);
|
|
67
|
+
}
|
|
68
|
+
const serialized = tx.toBuffer();
|
|
69
|
+
// Build signingResultV2 so rebuildPsbtWithPartialSigsFromWC can extract
|
|
70
|
+
// per-input witness items (DER sig + pubkey) to inject into the PSBT.
|
|
71
|
+
// See: vultisig-windows/clients/extension/src/utils/functions.ts
|
|
72
|
+
hashIndex = 0;
|
|
73
|
+
const inputResults = signBitcoin.inputs.map(input => {
|
|
74
|
+
if (!input.isOurs) {
|
|
75
|
+
return { witnessItems: [] };
|
|
76
|
+
}
|
|
77
|
+
const hash = hashes[hashIndex++];
|
|
78
|
+
const hashHex = Buffer.from(hash).toString('hex');
|
|
79
|
+
const sig = signatures[hashHex];
|
|
80
|
+
const derSig = Buffer.from(sig.der_signature, 'hex');
|
|
81
|
+
const sighashByte = input.sighashType ?? 1;
|
|
82
|
+
const sigWithHashType = Buffer.concat([derSig, Buffer.from([sighashByte])]);
|
|
83
|
+
return {
|
|
84
|
+
witnessItems: [
|
|
85
|
+
new Uint8Array(sigWithHashType),
|
|
86
|
+
new Uint8Array(pubKeyBytes),
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
// Wrap in TW.Bitcoin.Proto.SigningOutput with signingResultV2
|
|
91
|
+
// so the extension can extract per-input sigs for PSBT reconstruction.
|
|
92
|
+
// signingResultV2 is a proper field on SigningOutput (see TW.BitcoinV2.Proto.ISigningOutput)
|
|
93
|
+
const output = TW.Bitcoin.Proto.SigningOutput.create({
|
|
94
|
+
encoded: serialized,
|
|
95
|
+
signingResultV2: {
|
|
96
|
+
bitcoin: { inputs: inputResults },
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return TW.Bitcoin.Proto.SigningOutput.encode(output).finish();
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=compileSignBitcoinTx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compileSignBitcoinTx.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileSignBitcoinTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAA;AAI7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAA;AAG/F;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAwB,EACxB,UAA4C,EAC5C,SAAoB,EACR,EAAE;IACd,MAAM,MAAM,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAEjD,gEAAgE;IAChE,4EAA4E;IAC5E,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;IAC5B,EAAE,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAA;IAChC,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IAElC,aAAa;IACb,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,iCAAiC;QACvF,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAA;QAE5D,kDAAkD;QAClD,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;YAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,eAAe;aAChB,CAAC,CAAA;YACF,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,cAAc;IACd,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACtE,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAEnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,wCAAwC;YACxC,sDAAsD;YACtD,4EAA4E;YAC5E,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpB,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAC3D,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAA;QAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3E,+CAA+C;QAC/C,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAEhC,wEAAwE;IACxE,sEAAsE;IACtE,iEAAiE;IACjE,SAAS,GAAG,CAAC,CAAA;IACb,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAClD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,YAAY,EAAE,EAAkB,EAAE,CAAA;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;QAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAA;QAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3E,OAAO;YACL,YAAY,EAAE;gBACZ,IAAI,UAAU,CAAC,eAAe,CAAC;gBAC/B,IAAI,UAAU,CAAC,WAAW,CAAC;aAC5B;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,8DAA8D;IAC9D,uEAAuE;IACvE,6FAA6F;IAC7F,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;QACnD,OAAO,EAAE,UAAU;QACnB,eAAe,EAAE;YACf,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;SAClC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;AAC/D,CAAC,CAAA"}
|
|
@@ -2,13 +2,15 @@ import { WalletCore } from '@trustwallet/wallet-core';
|
|
|
2
2
|
import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
|
|
3
3
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
4
4
|
import { KeysignSignature } from '../../keysign/KeysignSignature.js';
|
|
5
|
+
import { KeysignPayload } from '../../types/vultisig/keysign/v1/keysign_message_pb.js';
|
|
5
6
|
type Input = {
|
|
6
7
|
publicKey?: PublicKey;
|
|
7
8
|
txInputData: Uint8Array;
|
|
8
9
|
signatures: Record<string, KeysignSignature>;
|
|
9
10
|
chain: Chain;
|
|
10
11
|
walletCore: WalletCore;
|
|
12
|
+
keysignPayload?: KeysignPayload;
|
|
11
13
|
};
|
|
12
|
-
export declare const compileTx: ({ publicKey, txInputData, signatures: keysignSignatures, chain, walletCore, }: Input) => Uint8Array<ArrayBufferLike>;
|
|
14
|
+
export declare const compileTx: ({ publicKey, txInputData, signatures: keysignSignatures, chain, walletCore, keysignPayload, }: Input) => Uint8Array<ArrayBufferLike>;
|
|
13
15
|
export {};
|
|
14
16
|
//# sourceMappingURL=compileTx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileTx.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAUlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"compileTx.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAUlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EACL,cAAc,EAEf,MAAM,oDAAoD,CAAA;AAK3D,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,+FAOvB,KAAK,gCAkKP,CAAA"}
|