@vultisig/core-mpc 1.2.23 → 1.3.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 +38 -0
- package/dist/keysign/chainSpecific/resolvers/cardano.d.ts.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/cardano.js +12 -1
- package/dist/keysign/chainSpecific/resolvers/cardano.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cardano.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cardano.js +0 -7
- package/dist/keysign/signingInputs/resolvers/cardano.js.map +1 -1
- package/dist/tx/compile/cardano/buildCip20AuxData.d.ts +51 -0
- package/dist/tx/compile/cardano/buildCip20AuxData.d.ts.map +1 -0
- package/dist/tx/compile/cardano/buildCip20AuxData.js +120 -0
- package/dist/tx/compile/cardano/buildCip20AuxData.js.map +1 -0
- package/dist/tx/compile/cardano/buildSignedCardanoTx.d.ts +7 -1
- package/dist/tx/compile/cardano/buildSignedCardanoTx.d.ts.map +1 -1
- package/dist/tx/compile/cardano/buildSignedCardanoTx.js +2 -2
- package/dist/tx/compile/cardano/buildSignedCardanoTx.js.map +1 -1
- package/dist/tx/compile/compileTx.d.ts.map +1 -1
- package/dist/tx/compile/compileTx.js +18 -5
- package/dist/tx/compile/compileTx.js.map +1 -1
- package/dist/tx/preSigningHashes/index.d.ts.map +1 -1
- package/dist/tx/preSigningHashes/index.js +11 -0
- package/dist/tx/preSigningHashes/index.js.map +1 -1
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @vultisig/core-mpc
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#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
|
|
8
|
+
|
|
9
|
+
Cardano direct sends with a non-empty memo now embed the memo as
|
|
10
|
+
CIP-20 on-chain metadata (`{ 674: { "msg": [...] } }`) instead of
|
|
11
|
+
silently dropping it.
|
|
12
|
+
|
|
13
|
+
Implementation:
|
|
14
|
+
- `buildCip20AuxData` encodes the memo into CIP-20 CBOR and computes
|
|
15
|
+
the blake2b-256 aux data hash
|
|
16
|
+
- `patchTxBodyWithAuxHash` byte-patches the WalletCore-produced tx body
|
|
17
|
+
to include the auxiliary_data_hash at key 7 (CBOR map header bump)
|
|
18
|
+
- `getPreSigningHashes` for Cardano now returns blake2b of the PATCHED
|
|
19
|
+
body when a memo is present, so all MPC devices sign the correct hash
|
|
20
|
+
- `compileTx` for Cardano re-derives the pre-signing output, patches
|
|
21
|
+
the body when memo is present, and passes auxDataCbor to
|
|
22
|
+
buildSignedCardanoTx so element [3] carries the metadata
|
|
23
|
+
- `getCardanoChainSpecific` bumps the forced fee by 44 \* len(auxDataCbor)
|
|
24
|
+
to account for the extra bytes WalletCore cannot anticipate
|
|
25
|
+
- Sends without memo are byte-identical to the pre-fix behavior
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- [#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
|
|
30
|
+
- Polkadot Asset Hub USDT (asset_id 1984) + USDC (asset_id 1337) token registry ([#562](https://github.com/vultisig/vultisig-sdk/issues/562))
|
|
31
|
+
- Polkadot `pallet_assets.Account` balance resolver for Asset Hub tokens - replaces placeholder 0n guard ([#563](https://github.com/vultisig/vultisig-sdk/issues/563))
|
|
32
|
+
- 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))
|
|
33
|
+
|
|
34
|
+
## Fixed
|
|
35
|
+
- Tron TRC-20 fee estimate now subtracts sender's available energy before charging TRX ([#556](https://github.com/vultisig/vultisig-sdk/issues/556))
|
|
36
|
+
- Tron native send free bandwidth check prevents spurious fee charge when bandwidth is available ([#555](https://github.com/vultisig/vultisig-sdk/issues/555))
|
|
37
|
+
|
|
38
|
+
- Updated dependencies [[`f2270cd`](https://github.com/vultisig/vultisig-sdk/commit/f2270cd6aaa741d6800bd2d21e9775092be25d31)]:
|
|
39
|
+
- @vultisig/core-chain@2.4.0
|
|
40
|
+
|
|
3
41
|
## 1.2.23
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/cardano.ts"],"names":[],"mappings":"
|
|
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
|
|
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,
|
|
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,
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAA;AAGrF,iFAAiF;AACjF,MAAM,aAAa,GAAG,CAAC,MAAc,EAAc,EAAE;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IACrD,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAqC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EAAE;IAC1G,
|
|
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;
|
|
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]), //
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
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;
|
|
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
|
-
//
|
|
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
|
|
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
|
-
//
|
|
101
|
-
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"compileTx.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/tx/compile/compileTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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.
|
|
3
|
+
"version": "1.3.0",
|
|
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.
|
|
997
|
+
"@vultisig/core-chain": "2.4.0",
|
|
993
998
|
"@vultisig/core-config": "0.9.1",
|
|
994
999
|
"@vultisig/lib-dkls": "0.9.0",
|
|
995
1000
|
"@vultisig/lib-mldsa": "0.9.0",
|