@vultisig/core-mpc 1.2.23 → 1.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # @vultisig/core-mpc
2
2
 
3
+ ## 1.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`47860fc`](https://github.com/vultisig/vultisig-sdk/commit/47860fcc6a1fa3600c20b529d29af98d56cbc5b4)]:
8
+ - @vultisig/core-chain@2.4.1
9
+
10
+ ## 1.3.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#583](https://github.com/vultisig/vultisig-sdk/pull/583) [`f2270cd`](https://github.com/vultisig/vultisig-sdk/commit/f2270cd6aaa741d6800bd2d21e9775092be25d31) Thanks [@gomesalexandre](https://github.com/gomesalexandre)! - feat(cardano): attach CIP-20 label-674 metadata when memo is provided
15
+
16
+ Cardano direct sends with a non-empty memo now embed the memo as
17
+ CIP-20 on-chain metadata (`{ 674: { "msg": [...] } }`) instead of
18
+ silently dropping it.
19
+
20
+ Implementation:
21
+ - `buildCip20AuxData` encodes the memo into CIP-20 CBOR and computes
22
+ the blake2b-256 aux data hash
23
+ - `patchTxBodyWithAuxHash` byte-patches the WalletCore-produced tx body
24
+ to include the auxiliary_data_hash at key 7 (CBOR map header bump)
25
+ - `getPreSigningHashes` for Cardano now returns blake2b of the PATCHED
26
+ body when a memo is present, so all MPC devices sign the correct hash
27
+ - `compileTx` for Cardano re-derives the pre-signing output, patches
28
+ the body when memo is present, and passes auxDataCbor to
29
+ buildSignedCardanoTx so element [3] carries the metadata
30
+ - `getCardanoChainSpecific` bumps the forced fee by 44 \* len(auxDataCbor)
31
+ to account for the extra bytes WalletCore cannot anticipate
32
+ - Sends without memo are byte-identical to the pre-fix behavior
33
+
34
+ ### Patch Changes
35
+
36
+ - [#583](https://github.com/vultisig/vultisig-sdk/pull/583) [`f2270cd`](https://github.com/vultisig/vultisig-sdk/commit/f2270cd6aaa741d6800bd2d21e9775092be25d31) Thanks [@gomesalexandre](https://github.com/gomesalexandre)! - ## New
37
+ - Polkadot Asset Hub USDT (asset_id 1984) + USDC (asset_id 1337) token registry ([#562](https://github.com/vultisig/vultisig-sdk/issues/562))
38
+ - Polkadot `pallet_assets.Account` balance resolver for Asset Hub tokens - replaces placeholder 0n guard ([#563](https://github.com/vultisig/vultisig-sdk/issues/563))
39
+ - Tron native send `data` field (proto field 12) for THORChain memos + exchange deposit memos; `BuildTronSendOptions` and `BuildTrc20TransferOptions` gain optional `data?: Uint8Array` field ([#559](https://github.com/vultisig/vultisig-sdk/issues/559))
40
+
41
+ ## Fixed
42
+ - Tron TRC-20 fee estimate now subtracts sender's available energy before charging TRX ([#556](https://github.com/vultisig/vultisig-sdk/issues/556))
43
+ - Tron native send free bandwidth check prevents spurious fee charge when bandwidth is available ([#555](https://github.com/vultisig/vultisig-sdk/issues/555))
44
+
45
+ - Updated dependencies [[`f2270cd`](https://github.com/vultisig/vultisig-sdk/commit/f2270cd6aaa741d6800bd2d21e9775092be25d31)]:
46
+ - @vultisig/core-chain@2.4.0
47
+
3
48
  ## 1.2.23
4
49
 
5
50
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/cardano.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,eAAO,MAAM,uBAAuB,EAAE,wBAAwB,CAAC,SAAS,CAevE,CAAA"}
1
+ {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/cardano.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAKtD,eAAO,MAAM,uBAAuB,EAAE,wBAAwB,CAAC,SAAS,CAwBvE,CAAA"}
@@ -4,7 +4,10 @@ import { cardanoDefaultFee } from '@vultisig/core-chain/chains/cardano/config';
4
4
  import { cardanoSlotOffset } from '@vultisig/core-chain/chains/cardano/config';
5
5
  import { CardanoChainSpecificSchema } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
6
6
  import { bigIntSum } from '@vultisig/lib-utils/bigint/bigIntSum';
7
+ import { buildCip20AuxData } from '../../../tx/compile/cardano/buildCip20AuxData.js';
7
8
  import { getKeysignAmount } from '../../utils/getKeysignAmount.js';
9
+ // Cardano fee formula: fee = a * txBytes + b (mainnet params)
10
+ const CARDANO_A_PARAM = BigInt(44);
8
11
  export const getCardanoChainSpecific = async ({ keysignPayload }) => {
9
12
  const amount = getKeysignAmount(keysignPayload);
10
13
  const currentSlot = await getCardanoCurrentSlot();
@@ -12,10 +15,18 @@ export const getCardanoChainSpecific = async ({ keysignPayload }) => {
12
15
  const utxoInfo = keysignPayload.utxoInfo;
13
16
  const balance = bigIntSum(utxoInfo.map(({ amount }) => amount));
14
17
  const sendMaxAmount = amount ? balance === amount : false;
18
+ // When a memo is present, CIP-20 aux data is appended to the final tx.
19
+ // WalletCore does not know about this extra payload, so we bump the forced
20
+ // fee by a * len(auxDataCbor) to prevent a "fee too small" rejection.
21
+ let byteFee = BigInt(cardanoDefaultFee);
22
+ if (keysignPayload.memo) {
23
+ const { auxDataCbor } = buildCip20AuxData(keysignPayload.memo);
24
+ byteFee += CARDANO_A_PARAM * BigInt(auxDataCbor.length);
25
+ }
15
26
  return create(CardanoChainSpecificSchema, {
16
27
  ttl,
17
28
  sendMaxAmount,
18
- byteFee: BigInt(cardanoDefaultFee),
29
+ byteFee,
19
30
  });
20
31
  };
21
32
  //# sourceMappingURL=cardano.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAA;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,MAAM,CAAC,MAAM,uBAAuB,GAAwC,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;IACvG,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAA;IAE/C,MAAM,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAA;IACjD,MAAM,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAEnD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAA;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAEzD,OAAO,MAAM,CAAC,0BAA0B,EAAE;QACxC,GAAG;QACH,aAAa;QACb,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;KACnC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAA;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,8DAA8D;AAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAwC,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;IACvG,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAA;IAE/C,MAAM,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAA;IACjD,MAAM,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAEnD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAA;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAEzD,uEAAuE;IACvE,2EAA2E;IAC3E,sEAAsE;IACtE,IAAI,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACvC,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC9D,OAAO,IAAI,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,MAAM,CAAC,0BAA0B,EAAE;QACxC,GAAG;QACH,aAAa;QACb,OAAO;KACR,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cardano.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AASnD,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,CAAC,SAAS,CAwDpE,CAAA"}
1
+ {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cardano.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AASnD,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,CAAC,SAAS,CA8CpE,CAAA"}
@@ -12,13 +12,6 @@ const amountToBytes = (amount) => {
12
12
  return Uint8Array.from(Buffer.from(padded, 'hex'));
13
13
  };
14
14
  export const getCardanoSigningInputs = ({ keysignPayload, walletCore }) => {
15
- // Cardano memos require CIP-20 auxiliary data whose hash is committed to in the
16
- // signed tx body — they cannot be attached after signing. Until that path is
17
- // implemented (see vultisig/vultisig-sdk#432), fail loudly instead of silently
18
- // dropping the memo and producing a tx with `auxiliary_data = null`.
19
- if (keysignPayload.memo) {
20
- throw new Error('Cardano memo is not supported yet: this SDK cannot attach CIP-20 metadata to direct sends, so the memo would be dropped and never land on-chain. Please retry without a memo, or wait for CIP-20 support (vultisig/vultisig-sdk#432).');
21
- }
22
15
  const { sendMaxAmount, ttl, byteFee } = getBlockchainSpecificValue(keysignPayload.blockchainSpecific, 'cardano');
23
16
  const coin = shouldBePresent(keysignPayload.coin);
24
17
  const isTokenSend = coin.contractAddress !== '';
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cardano.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cardano.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Split a memo string into chunks of at most 64 UTF-8 bytes each.
3
+ *
4
+ * Each chunk respects UTF-8 character boundaries: a multi-byte codepoint
5
+ * straddling the 64-byte boundary is moved entirely to the next chunk
6
+ * instead of being torn (which would produce U+FFFD replacement chars on
7
+ * decode and corrupt the memo as it lands on-chain).
8
+ *
9
+ * UTF-8 leading bytes have the bit pattern 0xxxxxxx, 110xxxxx, 1110xxxx,
10
+ * or 11110xxx. Continuation bytes have the pattern 10xxxxxx. To find a
11
+ * safe cut point we walk back from the proposed end until the byte at
12
+ * `end` is a leading byte (or we hit the chunk start, in which case the
13
+ * input is malformed and we keep the original cut).
14
+ */
15
+ export declare function memoToChunks(memo: string): string[];
16
+ /**
17
+ * Encode the CIP-20 transaction metadata for a given memo string.
18
+ *
19
+ * Produces:
20
+ * { 674: { "msg": ["<chunk1>", "<chunk2>", ...] } }
21
+ *
22
+ * The label 674 is the CIP-20 metadata label registered on cardano.org.
23
+ *
24
+ * @returns
25
+ * - `auxDataCbor` — the canonical CBOR bytes to embed as element [3] of
26
+ * the signed transaction array (replaces the `0xf6` null sentinel).
27
+ * - `auxDataHash` — blake2b-256 of `auxDataCbor`, to be committed in the
28
+ * tx body at CBOR map key 7 (auxiliary_data_hash).
29
+ */
30
+ export declare function buildCip20AuxData(memo: string): {
31
+ auxDataCbor: Uint8Array;
32
+ auxDataHash: Uint8Array;
33
+ };
34
+ /**
35
+ * Re-emit a WalletCore-produced CBOR tx body with an `auxiliary_data_hash`
36
+ * entry (CBOR map key 7) appended.
37
+ *
38
+ * WalletCore emits the tx body as a CBOR map. We avoid a full decode/encode
39
+ * round-trip (which could alter key ordering or integer widths and invalidate
40
+ * the MPC signature) by:
41
+ * 1. Reading the initial CBOR map header byte to extract the current count.
42
+ * 2. Re-emitting the header byte(s) with count+1.
43
+ * 3. Concatenating the original body bytes after the header.
44
+ * 4. Appending `cborUint(7)` + `cborBytes(auxDataHash)`.
45
+ *
46
+ * This works as long as WalletCore never produces a body map with > 23
47
+ * entries (i.e. the count fits in the CBOR one-byte "additional info" form),
48
+ * which is true in practice — current Cardano tx bodies have at most 9 keys.
49
+ */
50
+ export declare function patchTxBodyWithAuxHash(txBodyCbor: Uint8Array, auxDataHash: Uint8Array): Uint8Array;
51
+ //# sourceMappingURL=buildCip20AuxData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildCip20AuxData.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildCip20AuxData.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,UAAU,CAAA;CACxB,CAOA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,UAAU,CA0ClG"}
@@ -0,0 +1,120 @@
1
+ import { blake2b } from '@noble/hashes/blake2b';
2
+ import { cborArray, cborBytes, cborMap, cborText, cborUint, } from '@vultisig/core-chain/chains/cardano/cip30/cardanoCborPrimitives';
3
+ /** CIP-20 limits each metadata text chunk to 64 UTF-8 bytes. */
4
+ const MAX_CHUNK_BYTES = 64;
5
+ /**
6
+ * Split a memo string into chunks of at most 64 UTF-8 bytes each.
7
+ *
8
+ * Each chunk respects UTF-8 character boundaries: a multi-byte codepoint
9
+ * straddling the 64-byte boundary is moved entirely to the next chunk
10
+ * instead of being torn (which would produce U+FFFD replacement chars on
11
+ * decode and corrupt the memo as it lands on-chain).
12
+ *
13
+ * UTF-8 leading bytes have the bit pattern 0xxxxxxx, 110xxxxx, 1110xxxx,
14
+ * or 11110xxx. Continuation bytes have the pattern 10xxxxxx. To find a
15
+ * safe cut point we walk back from the proposed end until the byte at
16
+ * `end` is a leading byte (or we hit the chunk start, in which case the
17
+ * input is malformed and we keep the original cut).
18
+ */
19
+ export function memoToChunks(memo) {
20
+ const bytes = new TextEncoder().encode(memo);
21
+ if (bytes.length === 0)
22
+ return [''];
23
+ const chunks = [];
24
+ const decoder = new TextDecoder();
25
+ let start = 0;
26
+ while (start < bytes.length) {
27
+ let end = Math.min(start + MAX_CHUNK_BYTES, bytes.length);
28
+ // If we are not at the end of the buffer and `end` lands on a UTF-8
29
+ // continuation byte (top bits 10xxxxxx), back up until we hit the
30
+ // start of that codepoint. The next chunk will pick up the codepoint
31
+ // intact.
32
+ if (end < bytes.length) {
33
+ while (end > start && (bytes[end] & 0xc0) === 0x80) {
34
+ end--;
35
+ }
36
+ // Defensive: if walking back consumed the whole chunk (malformed
37
+ // input — > 64 bytes of continuation bytes in a row, impossible
38
+ // for any valid UTF-8 codepoint which maxes at 4 bytes), fall back
39
+ // to the original cut so we make forward progress.
40
+ if (end === start) {
41
+ end = Math.min(start + MAX_CHUNK_BYTES, bytes.length);
42
+ }
43
+ }
44
+ chunks.push(decoder.decode(bytes.slice(start, end)));
45
+ start = end;
46
+ }
47
+ return chunks;
48
+ }
49
+ /**
50
+ * Encode the CIP-20 transaction metadata for a given memo string.
51
+ *
52
+ * Produces:
53
+ * { 674: { "msg": ["<chunk1>", "<chunk2>", ...] } }
54
+ *
55
+ * The label 674 is the CIP-20 metadata label registered on cardano.org.
56
+ *
57
+ * @returns
58
+ * - `auxDataCbor` — the canonical CBOR bytes to embed as element [3] of
59
+ * the signed transaction array (replaces the `0xf6` null sentinel).
60
+ * - `auxDataHash` — blake2b-256 of `auxDataCbor`, to be committed in the
61
+ * tx body at CBOR map key 7 (auxiliary_data_hash).
62
+ */
63
+ export function buildCip20AuxData(memo) {
64
+ const chunks = memoToChunks(memo);
65
+ const msgArray = cborArray(chunks.map(c => cborText(c)));
66
+ const innerMap = cborMap([[cborText('msg'), msgArray]]);
67
+ const auxDataCbor = cborMap([[cborUint(674), innerMap]]);
68
+ const auxDataHash = blake2b(auxDataCbor, { dkLen: 32 });
69
+ return { auxDataCbor, auxDataHash };
70
+ }
71
+ /**
72
+ * Re-emit a WalletCore-produced CBOR tx body with an `auxiliary_data_hash`
73
+ * entry (CBOR map key 7) appended.
74
+ *
75
+ * WalletCore emits the tx body as a CBOR map. We avoid a full decode/encode
76
+ * round-trip (which could alter key ordering or integer widths and invalidate
77
+ * the MPC signature) by:
78
+ * 1. Reading the initial CBOR map header byte to extract the current count.
79
+ * 2. Re-emitting the header byte(s) with count+1.
80
+ * 3. Concatenating the original body bytes after the header.
81
+ * 4. Appending `cborUint(7)` + `cborBytes(auxDataHash)`.
82
+ *
83
+ * This works as long as WalletCore never produces a body map with > 23
84
+ * entries (i.e. the count fits in the CBOR one-byte "additional info" form),
85
+ * which is true in practice — current Cardano tx bodies have at most 9 keys.
86
+ */
87
+ export function patchTxBodyWithAuxHash(txBodyCbor, auxDataHash) {
88
+ if (txBodyCbor.length === 0) {
89
+ throw new Error('patchTxBodyWithAuxHash: empty txBodyCbor');
90
+ }
91
+ const firstByte = txBodyCbor[0];
92
+ const majorType = firstByte >> 5;
93
+ if (majorType !== 5) {
94
+ throw new Error(`patchTxBodyWithAuxHash: expected CBOR map (major type 5), got major type ${majorType}`);
95
+ }
96
+ const additionalInfo = firstByte & 0x1f;
97
+ if (additionalInfo >= 24) {
98
+ // Multi-byte map count — would require a more complex header rewrite.
99
+ // In practice Cardano tx bodies never exceed 23 entries.
100
+ throw new Error(`patchTxBodyWithAuxHash: map header uses additional info ${additionalInfo}; only direct-count maps (< 24 entries) are supported`);
101
+ }
102
+ const oldCount = additionalInfo;
103
+ const newCount = oldCount + 1;
104
+ if (newCount >= 24) {
105
+ throw new Error(`patchTxBodyWithAuxHash: cannot increment map count to ${newCount} (would overflow into two-byte header)`);
106
+ }
107
+ const newHeader = new Uint8Array([(5 << 5) | newCount]);
108
+ const bodyAfterHeader = txBodyCbor.slice(1);
109
+ const auxHashEntry = new Uint8Array([...cborUint(7), ...cborBytes(auxDataHash)]);
110
+ const totalLen = newHeader.length + bodyAfterHeader.length + auxHashEntry.length;
111
+ const out = new Uint8Array(totalLen);
112
+ let offset = 0;
113
+ out.set(newHeader, offset);
114
+ offset += newHeader.length;
115
+ out.set(bodyAfterHeader, offset);
116
+ offset += bodyAfterHeader.length;
117
+ out.set(auxHashEntry, offset);
118
+ return out;
119
+ }
120
+ //# sourceMappingURL=buildCip20AuxData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildCip20AuxData.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildCip20AuxData.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,14 @@ type BuildSignedCardanoTxInput = {
21
21
  publicKey: Uint8Array;
22
22
  /** 64-byte Ed25519 signature (r || s, each little-endian) */
23
23
  signature: Uint8Array;
24
+ /**
25
+ * CIP-20 auxiliary data CBOR (the full { 674: { "msg": [...] } } map).
26
+ * When provided, replaces the `0xf6` null sentinel at element [3] of the
27
+ * signed transaction array. When absent, `0xf6` is used (no aux data).
28
+ */
29
+ auxDataCbor?: Uint8Array;
24
30
  };
25
31
  /** Returns the full signed Cardano transaction as CBOR bytes. */
26
- export declare const buildSignedCardanoTx: ({ txBodyCbor, publicKey, signature }: BuildSignedCardanoTxInput) => Uint8Array;
32
+ export declare const buildSignedCardanoTx: ({ txBodyCbor, publicKey, signature, auxDataCbor, }: BuildSignedCardanoTxInput) => Uint8Array;
27
33
  export {};
28
34
  //# sourceMappingURL=buildSignedCardanoTx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildSignedCardanoTx.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildSignedCardanoTx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,KAAK,yBAAyB,GAAG;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAA;IACtB,0CAA0C;IAC1C,SAAS,EAAE,UAAU,CAAA;IACrB,6DAA6D;IAC7D,SAAS,EAAE,UAAU,CAAA;CACtB,CAAA;AAyDD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,GAAI,sCAAsC,yBAAyB,KAAG,UAWtG,CAAA"}
1
+ {"version":3,"file":"buildSignedCardanoTx.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildSignedCardanoTx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,KAAK,yBAAyB,GAAG;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAA;IACtB,0CAA0C;IAC1C,SAAS,EAAE,UAAU,CAAA;IACrB,6DAA6D;IAC7D,SAAS,EAAE,UAAU,CAAA;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,CAAA;CACzB,CAAA;AAyDD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,GAAI,oDAKlC,yBAAyB,KAAG,UAW9B,CAAA"}
@@ -64,7 +64,7 @@ const concat = (parts) => {
64
64
  return result;
65
65
  };
66
66
  /** Returns the full signed Cardano transaction as CBOR bytes. */
67
- export const buildSignedCardanoTx = ({ txBodyCbor, publicKey, signature }) => {
67
+ export const buildSignedCardanoTx = ({ txBodyCbor, publicKey, signature, auxDataCbor, }) => {
68
68
  const witnessCbor = buildWitnessCbor(publicKey, signature);
69
69
  // Signed tx: 0x84 [tx_body, witnesses, isValid, auxiliary_data]
70
70
  return concat([
@@ -72,7 +72,7 @@ export const buildSignedCardanoTx = ({ txBodyCbor, publicKey, signature }) => {
72
72
  txBodyCbor,
73
73
  witnessCbor,
74
74
  new Uint8Array([0xf5]), // CBOR true (is_valid)
75
- new Uint8Array([0xf6]), // CBOR null (no auxiliary data)
75
+ auxDataCbor ?? new Uint8Array([0xf6]), // CIP-20 metadata or CBOR null
76
76
  ]);
77
77
  };
78
78
  //# sourceMappingURL=buildSignedCardanoTx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildSignedCardanoTx.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildSignedCardanoTx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildSignedCardanoTx.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/tx/compile/cardano/buildSignedCardanoTx.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compileTx.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AAEA,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,EAAE,cAAc,EAAwB,MAAM,oDAAoD,CAAA;AAMzG,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,gCA4IP,CAAA"}
1
+ {"version":3,"file":"compileTx.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAWlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAwB,MAAM,oDAAoD,CAAA;AAMzG,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,gCA0JP,CAAA"}
@@ -8,6 +8,7 @@ import { getCoinType } from '@vultisig/core-chain/coin/coinType';
8
8
  import { signatureFormats } from '@vultisig/core-chain/signing/SignatureFormat';
9
9
  import { assertSignature } from '@vultisig/core-chain/utils/assertSignature';
10
10
  import { getQBTCSignedTransaction } from '../../chains/cosmos/qbtc/QBTCHelper.js';
11
+ import { buildCip20AuxData, patchTxBodyWithAuxHash } from './cardano/buildCip20AuxData.js';
11
12
  import { buildSignedCardanoTx } from './cardano/buildSignedCardanoTx.js';
12
13
  import { getBlockchainSpecificValue } from '../../keysign/chainSpecific/KeysignChainSpecific.js';
13
14
  import { decodeBittensorTxInput } from '../../keysign/signingInputs/resolvers/bittensor.js';
@@ -74,6 +75,9 @@ export const compileTx = ({ publicKey, txInputData, signatures: keysignSignature
74
75
  })).finish();
75
76
  }
76
77
  if (chain === Chain.Cardano) {
78
+ // hashes[0] is blake2b-256 of the tx body. When a memo is set,
79
+ // getPreSigningHashes returns blake2b of the patched body (with aux_data_hash
80
+ // at key 7) so both signing phase and compile phase agree on the same bytes.
77
81
  const hash = hashes[0];
78
82
  const hashHex = Buffer.from(hash).toString('hex');
79
83
  const sig = generateSignature({
@@ -87,19 +91,28 @@ export const compileTx = ({ publicKey, txInputData, signatures: keysignSignature
87
91
  signature: sig,
88
92
  signatureFormat,
89
93
  });
90
- // preOutput.data is the CBOR-encoded tx body
94
+ // Re-derive the tx body (and aux data when memo is set) to wrap it with
95
+ // the witness set and produce the final signed transaction.
91
96
  const preOutput = TW.TxCompiler.Proto.PreSigningOutput.decode(walletCore.TransactionCompiler.preImageHashes(getCoinType({ chain, walletCore }), txInputData));
97
+ const memo = keysignPayload?.memo;
98
+ let txBodyCbor = preOutput.data;
99
+ let auxDataCbor;
100
+ if (memo) {
101
+ const cip20 = buildCip20AuxData(memo);
102
+ auxDataCbor = cip20.auxDataCbor;
103
+ txBodyCbor = patchTxBodyWithAuxHash(txBodyCbor, cip20.auxDataHash);
104
+ }
92
105
  const spendingKey = new Uint8Array(publicKey.data()).slice(0, 32);
93
106
  const encoded = buildSignedCardanoTx({
94
- txBodyCbor: preOutput.data,
107
+ txBodyCbor,
95
108
  publicKey: spendingKey,
96
109
  signature: new Uint8Array(sig),
110
+ auxDataCbor,
97
111
  });
98
112
  return TW.Cardano.Proto.SigningOutput.encode(TW.Cardano.Proto.SigningOutput.create({
99
113
  encoded,
100
- // Embed the correct tx hash so downstream code doesn't need to
101
- // re-encode the body (cbor-x round-trip can alter bytes).
102
- txId: preOutput.dataHash,
114
+ // hashes[0] is blake2b-256 of the body correct txId for both paths
115
+ txId: hash,
103
116
  })).finish();
104
117
  }
105
118
  const allSignatures = walletCore.DataVector.create();
@@ -1 +1 @@
1
- {"version":3,"file":"compileTx.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,EAAE,EAAc,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAA;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAA;AACxF,OAAO,EAAkB,oBAAoB,EAAE,MAAM,oDAAoD,CAAA;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAW7D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,SAAS,EACT,WAAW,EACX,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EACL,UAAU,EACV,cAAc,GACR,EAAE,EAAE;IACV,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtF,6EAA6E;IAC7E,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;QACjE,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;QACnG,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU;YACV,WAAW;YACX,KAAK;SACN,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,MAAM,EAAE,UAAU,EAAE,GAAG,wBAAwB,CAAC;YAC9C,cAAc,EAAE,WAAW;YAC3B,cAAc;YACd,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAA;QACF,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IAC5G,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,0BAA0B,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,UAAU;QACV,WAAW;QACX,KAAK;QACL,cAAc;KACf,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEnD,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjD,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC5B,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACrC,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,GAAG;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAA;QACrE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;QAErD,MAAM,SAAS,GAAG,0BAA0B,CAAC,YAAY,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAEtG,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAC3C,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,MAAM,EAAE,CAAA;IACZ,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjD,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC5B,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACrC,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,GAAG;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,6CAA6C;QAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3D,UAAU,CAAC,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,CAAC,CAC/F,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACnC,UAAU,EAAE,SAAS,CAAC,IAAI;YAC1B,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;SAC/B,CAAC,CAAA;QAEF,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAC1C,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;YACpC,OAAO;YACP,+DAA+D;YAC/D,0DAA0D;YAC1D,IAAI,EAAE,SAAS,CAAC,QAAQ;SACzB,CAAC,CACH,CAAC,MAAM,EAAE,CAAA;IACZ,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;IACpD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;IAEjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpB,MAAM,SAAS,GAAG,iBAAiB,CAAC;YAClC,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS;YACT,eAAe;SAChB,CAAC,CAAA;QAEF,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAE5B,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AAC/G,CAAC,CAAA"}
1
+ {"version":3,"file":"compileTx.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,EAAE,EAAc,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAA;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAA;AACxF,OAAO,EAAkB,oBAAoB,EAAE,MAAM,oDAAoD,CAAA;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAW7D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,SAAS,EACT,WAAW,EACX,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EACL,UAAU,EACV,cAAc,GACR,EAAE,EAAE;IACV,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtF,6EAA6E;IAC7E,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;QACjE,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;QACnG,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU;YACV,WAAW;YACX,KAAK;SACN,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,MAAM,EAAE,UAAU,EAAE,GAAG,wBAAwB,CAAC;YAC9C,cAAc,EAAE,WAAW;YAC3B,cAAc;YACd,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAA;QACF,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IAC5G,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,0BAA0B,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,UAAU;QACV,WAAW;QACX,KAAK;QACL,cAAc;KACf,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEnD,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjD,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC5B,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACrC,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,GAAG;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAA;QACrE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;QAErD,MAAM,SAAS,GAAG,0BAA0B,CAAC,YAAY,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAEtG,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAC3C,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,MAAM,EAAE,CAAA;IACZ,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,+DAA+D;QAC/D,8EAA8E;QAC9E,6EAA6E;QAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjD,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC5B,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACrC,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,GAAG;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,wEAAwE;QACxE,4DAA4D;QAC5D,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3D,UAAU,CAAC,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,CAAC,CAC/F,CAAA;QAED,MAAM,IAAI,GAAG,cAAc,EAAE,IAAI,CAAA;QACjC,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,CAAA;QAC/B,IAAI,WAAmC,CAAA;QAEvC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACrC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;YAC/B,UAAU,GAAG,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;QACpE,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACnC,UAAU;YACV,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;YAC9B,WAAW;SACZ,CAAC,CAAA;QAEF,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAC1C,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;YACpC,OAAO;YACP,qEAAqE;YACrE,IAAI,EAAE,IAAI;SACX,CAAC,CACH,CAAC,MAAM,EAAE,CAAA;IACZ,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;IACpD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;IAEjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpB,MAAM,SAAS,GAAG,iBAAiB,CAAC;YAClC,UAAU;YACV,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,eAAe;SAChB,CAAC,CAAA;QAEF,eAAe,CAAC;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,SAAS;YACT,eAAe;SAChB,CAAC,CAAA;QAEF,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAE5B,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AAC/G,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/preSigningHashes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAQlD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAGrD,OAAO,EAAE,cAAc,EAAwB,MAAM,oDAAoD,CAAA;AAGzG,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,CAAA;AAKD,eAAO,MAAM,mBAAmB,GAAI,oDAAoD,KAAK,kCAqD5F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/preSigningHashes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AASlD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIrD,OAAO,EAAE,cAAc,EAAwB,MAAM,oDAAoD,CAAA;AAGzG,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,CAAA;AAKD,eAAO,MAAM,mBAAmB,GAAI,oDAAoD,KAAK,kCA+D5F,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { Chain } from '@vultisig/core-chain/Chain';
2
2
  import { fromBinary } from '@bufbuild/protobuf';
3
+ import { blake2b } from '@noble/hashes/blake2b';
3
4
  import { decodeBittensorTxInput } from '../../keysign/signingInputs/resolvers/bittensor.js';
4
5
  import { computePreSigningHashes } from '../../keysign/signingInputs/resolvers/bitcoin/sighash.js';
5
6
  import { getQBTCPreSignedImageHash } from '../../chains/cosmos/qbtc/QBTCHelper.js';
@@ -8,6 +9,7 @@ import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
8
9
  import { blake2AsU8a } from '@polkadot/util-crypto';
9
10
  import { getBlockchainSpecificValue } from '../../keysign/chainSpecific/KeysignChainSpecific.js';
10
11
  import { getPreSigningOutput } from '../../keysign/preSigningOutput/index.js';
12
+ import { buildCip20AuxData, patchTxBodyWithAuxHash } from '../compile/cardano/buildCip20AuxData.js';
11
13
  import { KeysignPayloadSchema } from '../../types/vultisig/keysign/v1/keysign_message_pb.js';
12
14
  import { getSwapKitSignBitcoin } from '../swapkitSignBitcoin.js';
13
15
  const sortHashes = (hashes) => [...hashes].sort((one, another) => Buffer.from(one).compare(Buffer.from(another)));
@@ -29,6 +31,15 @@ export const getPreSigningHashes = ({ walletCore, txInputData, chain, keysignPay
29
31
  const toSign = payload.length > 256 ? blake2AsU8a(payload, 256) : payload;
30
32
  return [toSign];
31
33
  }
34
+ // Cardano with memo: the aux-data hash is committed into the tx body, so
35
+ // the signed bytes differ from the WalletCore body. Patch the body and
36
+ // return blake2b-256 of the patched bytes — that is what MPC must sign.
37
+ if (chain === Chain.Cardano && keysignPayload?.memo) {
38
+ const output = getPreSigningOutput({ walletCore, txInputData, chain });
39
+ const { auxDataHash } = buildCip20AuxData(keysignPayload.memo);
40
+ const patchedBody = patchTxBodyWithAuxHash(output.data, auxDataHash);
41
+ return [blake2b(patchedBody, { dkLen: 32 })];
42
+ }
32
43
  const output = getPreSigningOutput({
33
44
  walletCore,
34
45
  txInputData,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/preSigningHashes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/preSigningHashes/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-mpc",
3
- "version": "1.2.23",
3
+ "version": "1.3.1",
4
4
  "description": "MPC, keysign, and vault types shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -772,6 +772,11 @@
772
772
  "import": "./dist/swap/utils/getSwapTrackingUrl.js",
773
773
  "default": "./dist/swap/utils/getSwapTrackingUrl.js"
774
774
  },
775
+ "./tx/compile/cardano/buildCip20AuxData": {
776
+ "types": "./dist/tx/compile/cardano/buildCip20AuxData.d.ts",
777
+ "import": "./dist/tx/compile/cardano/buildCip20AuxData.js",
778
+ "default": "./dist/tx/compile/cardano/buildCip20AuxData.js"
779
+ },
775
780
  "./tx/compile/cardano/buildSignedCardanoTx": {
776
781
  "types": "./dist/tx/compile/cardano/buildSignedCardanoTx.d.ts",
777
782
  "import": "./dist/tx/compile/cardano/buildSignedCardanoTx.js",
@@ -989,7 +994,7 @@
989
994
  "@noble/hashes": "^1.8.0",
990
995
  "@solana/web3.js": "^1.98.4",
991
996
  "@trustwallet/wallet-core": "^4.6.9",
992
- "@vultisig/core-chain": "2.3.2",
997
+ "@vultisig/core-chain": "2.4.1",
993
998
  "@vultisig/core-config": "0.9.1",
994
999
  "@vultisig/lib-dkls": "0.9.0",
995
1000
  "@vultisig/lib-mldsa": "0.9.0",