@vultisig/core-mpc 2.1.1 → 3.0.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/keysign/chainSpecific/KeysignChainSpecific.d.ts +0 -1
  3. package/dist/keysign/chainSpecific/KeysignChainSpecific.d.ts.map +1 -1
  4. package/dist/keysign/chainSpecific/KeysignChainSpecific.js +0 -1
  5. package/dist/keysign/chainSpecific/KeysignChainSpecific.js.map +1 -1
  6. package/dist/keysign/chainSpecific/resolver.d.ts +3 -0
  7. package/dist/keysign/chainSpecific/resolver.d.ts.map +1 -1
  8. package/dist/keysign/chainSpecific/resolvers/ripple.d.ts.map +1 -1
  9. package/dist/keysign/chainSpecific/resolvers/ripple.js +16 -4
  10. package/dist/keysign/chainSpecific/resolvers/ripple.js.map +1 -1
  11. package/dist/keysign/chainSpecific/resolvers/ton/index.d.ts.map +1 -1
  12. package/dist/keysign/chainSpecific/resolvers/ton/index.js +23 -7
  13. package/dist/keysign/chainSpecific/resolvers/ton/index.js.map +1 -1
  14. package/dist/keysign/chainSpecific/resolvers/tron/index.d.ts +18 -0
  15. package/dist/keysign/chainSpecific/resolvers/tron/index.d.ts.map +1 -1
  16. package/dist/keysign/chainSpecific/resolvers/tron/index.js +66 -7
  17. package/dist/keysign/chainSpecific/resolvers/tron/index.js.map +1 -1
  18. package/dist/keysign/error.d.ts +1 -1
  19. package/dist/keysign/error.d.ts.map +1 -1
  20. package/dist/keysign/error.js.map +1 -1
  21. package/dist/keysign/send/build.d.ts +2 -1
  22. package/dist/keysign/send/build.d.ts.map +1 -1
  23. package/dist/keysign/send/build.js +43 -0
  24. package/dist/keysign/send/build.js.map +1 -1
  25. package/dist/keysign/signingInputs/resolvers/ripple.d.ts.map +1 -1
  26. package/dist/keysign/signingInputs/resolvers/ripple.js +55 -17
  27. package/dist/keysign/signingInputs/resolvers/ripple.js.map +1 -1
  28. package/dist/keysign/signingInputs/resolvers/ton/index.d.ts.map +1 -1
  29. package/dist/keysign/signingInputs/resolvers/ton/index.js +5 -1
  30. package/dist/keysign/signingInputs/resolvers/ton/index.js.map +1 -1
  31. package/dist/keysign/signingInputs/resolvers/ton/jetton.d.ts.map +1 -1
  32. package/dist/keysign/signingInputs/resolvers/ton/jetton.js +11 -3
  33. package/dist/keysign/signingInputs/resolvers/ton/jetton.js.map +1 -1
  34. package/dist/keysign/signingInputs/resolvers/ton/native.d.ts +0 -2
  35. package/dist/keysign/signingInputs/resolvers/ton/native.d.ts.map +1 -1
  36. package/dist/keysign/signingInputs/resolvers/ton/native.js +4 -17
  37. package/dist/keysign/signingInputs/resolvers/ton/native.js.map +1 -1
  38. package/dist/keysign/utils/isRippleTrustSet.d.ts +8 -23
  39. package/dist/keysign/utils/isRippleTrustSet.d.ts.map +1 -1
  40. package/dist/keysign/utils/isRippleTrustSet.js +15 -24
  41. package/dist/keysign/utils/isRippleTrustSet.js.map +1 -1
  42. package/dist/types/vultisig/keysign/v1/blockchain_specific_pb.d.ts +9 -1
  43. package/dist/types/vultisig/keysign/v1/blockchain_specific_pb.d.ts.map +1 -1
  44. package/dist/types/vultisig/keysign/v1/blockchain_specific_pb.js +9 -1
  45. package/dist/types/vultisig/keysign/v1/blockchain_specific_pb.js.map +1 -1
  46. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # @vultisig/core-mpc
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#2237](https://github.com/vultisig/vultisig-sdk/pull/2237) [`7d4c116`](https://github.com/vultisig/vultisig-sdk/commit/7d4c116cc7a940e96abf075790c4a387edd03987) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Remove Kujira (KUJI) chain support. Kujira wound down in 2025 and every RPC/LCD endpoint the SDK shipped for it is now dead (the polkachu hosts no longer resolve; publicnode 404s), so balances, sends, swaps, staking and governance on Kujira cannot function.
8
+
9
+ `Chain.Kujira` / `CosmosChain.Kujira` are removed from the chain union, along with the Kujira entries in the chain registry, cosmos RPC/LCD/fee/gas/memo tables, SwapKit + Skip + native-swap routing, the Kujira token list, IBC chain-id mapping, governance config and address derivation.
10
+
11
+ The IBC tables in `tools/prep/ibcTransfer.ts` are keyed by raw chain-ID rather than the `Chain` enum, so they are cleared explicitly: `kaiyo-1` is dropped from `IBC_CHAIN_REVISION` and the `osmosis-1/channel-259` route from `IBC_CHANNEL_DEST`. `supportedIbcDestinationsFrom('osmosis-1')` no longer advertises `kaiyo-1`, and `resolveSourceChannelByDestChain('osmosis-1', 'kaiyo-1')` returns `null`.
12
+
13
+ `COSMOS_CHAIN_ID_HRP` keeps its `kaiyo-1` → `kujira` entry: it is a pure bech32-prefix lookup that makes nothing routable, and it is still needed to decode historic `kujira1…` addresses.
14
+
15
+ The `chains/cosmos/thor/kujira-merge` module is intentionally **kept**: it describes the six Kujira-origin tokens (KUJI, rKUJI, FUZN, NSTK, WINK, LVN) that migrated onto THORChain as `thor.*` secured assets, plus their IBC representations on Cosmos Hub and Osmosis. Those assets are unaffected and keep resolving.
16
+
17
+ Consumers holding a persisted `Chain.Kujira` value must drop it — the symbol no longer type-checks.
18
+
19
+ - [#2298](https://github.com/vultisig/vultisig-sdk/pull/2298) [`1716a79`](https://github.com/vultisig/vultisig-sdk/commit/1716a7946bf617ff16f8bb15f33b279efbb4a87d) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - fix(ton): one correct comment validator, run before the user signs
20
+
21
+ TON comment length was checked against a fixed 123 bytes wherever it was checked at all. That number is right for a native transfer, where the comment is the message body's own cell, and wrong for a jetton transfer, where the comment rides inline in the transfer body's `forward_payload` and shares one 1023-bit cell with the opcode, query id, amount, both addresses and the forward amount. The real jetton cap is roughly 34–39 bytes and SHRINKS as the amount grows, because `VarUInteger 16` widens a byte at a time. Anything above it reached WalletCore, which refuses to pack the cell and fails the keysign with a bare "Internal error" — after the user had reviewed and approved the transaction. Memos are load-bearing on TON; an exchange deposit without the right one loses the funds.
22
+
23
+ New `@vultisig/core-chain/chains/ton/comment` owns the rule for both shapes: `tonNativeCommentMaxBytes`, `getTonJettonCommentMaxBytes({ amount, isActiveDestination })`, `getTonCommentMaxBytes` for a send form that wants to count down against the real limit, and `validateTonComment`. The amount-dependent widths are measured by encoding them, not predicted, and a test drives real WalletCore at each cap and one byte past it to prove the two agree.
24
+
25
+ `buildSendKeysignPayload` now validates the memo at the end of the build, where the final signed amount and `isActiveDestination` are both known, and raises a non-retryable `BuildKeysignPayloadError('ton-memo-too-long')`. That moves the failure from keysign to the point where the payload is assembled — the verify screen — for every consumer, with no client-side change. The signing-input resolvers still validate, so a payload built by another device or an older client cannot get an unpackable comment signed here either.
26
+
27
+ **Breaking:** `validateTonComment` is no longer exported from `@vultisig/core-mpc/keysign/signingInputs/resolvers/ton/native`, and takes `{ memo, jetton? }` instead of a bare string. Import it from `@vultisig/core-chain/chains/ton/comment`. `validateTonMemo` in the SDK's TON surface keeps its signature and gains an optional second argument for jetton context.
28
+
29
+ ### Minor Changes
30
+
31
+ - [#2316](https://github.com/vultisig/vultisig-sdk/pull/2316) [`b19c5d5`](https://github.com/vultisig/vultisig-sdk/commit/b19c5d56f4d00d92493f8da74ff80d92b1d87c68) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Add exact XRP Ledger issued-currency Payments and authoritative delivered-amount receipts for XRP, issued currencies, and MPTs while preserving native XRP and explicit TrustSet behavior.
32
+
33
+ ### Patch Changes
34
+
35
+ - [#2282](https://github.com/vultisig/vultisig-sdk/pull/2282) [`a711b6c`](https://github.com/vultisig/vultisig-sdk/commit/a711b6ca8a8a7ae39d0efbb1c919b23b6538a1b8) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - fix(ton): derive each dApp message's bounce flag from its own destination
36
+
37
+ A dApp `signTon` batch stamped every message with the single wallet-level `TonSpecific.bounceable`, which the chain-specific resolver computes from the first message's destination alone. The bounce bit a message declares lives in its own address tag — `EQ…`/`kQ…` bounceable, `UQ…`/`0Q…` not, a raw `workchain:hex` address none — so a batch with mixed destinations, or a first destination that is not yet deployed, signed the wrong bit on some of its messages, and a co-signer deriving the flag per address computed a different hash for the same payload.
38
+
39
+ Each dApp message now takes the flag from its own destination (`getTonMessageBounceable` in `@vultisig/core-chain/chains/ton/messageBounce`); a raw `workchain:hex` address carries no tag, so it defaults to bounceable — an already-deployed contract must refund a rejection — unless the message carries `stateInit`, the deployment case whose destination has no code yet to bounce from. Every raw spelling WalletCore signs counts as the same account here: leading zeros, an explicit sign and a `0x`-prefixed hash all name one address and compile to one pre-image, so `00:<hash>` cannot be signed non-bounceable while `0:<hash>` is signed bounceable. App-initiated single sends are unchanged and keep the wallet-level flag and the nominator-pool override.
40
+
41
+ The bounce bit is part of the signed body, so TON signing hashes move for dApp batches whose destinations do not all share the first message's flag. Co-signers must apply the same per-message rule.
42
+
43
+ - [#2255](https://github.com/vultisig/vultisig-sdk/pull/2255) [`ef6a8bb`](https://github.com/vultisig/vultisig-sdk/commit/ef6a8bb0007c6576179e5a8cb10aa47820075b57) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - fix(ton): send swap deposits bounceable so a rejected deposit is refunded
44
+
45
+ TON transfers were marked bounceable only when the destination string started with `E`. Swap providers hand back deposit addresses in the `UQ…` (non-bounceable) form, so every TON swap deposit went out non-bounceable — and a router or escrow contract that rejects a message (expired quote, paused pool, closed route) _absorbs_ a non-bounceable transfer instead of returning it. The funds were gone.
46
+
47
+ Swap deposits are now always sent bounceable. The prefix check is replaced by a real read of the address's bounce tag, so raw `0:hex` destinations — which declare no bounceability at all and which the prefix check silently treated as non-bounceable — default to bounceable, the safe side for anything that might be a contract. Sends to an undeployed account stay non-bounceable, since such an account cannot accept a bounceable message, and an explicit `UQ…` destination is still honoured.
48
+
49
+ Adds `getTonAddressBounceability` to `@vultisig/core-chain/chains/ton/address`.
50
+
51
+ - [#2318](https://github.com/vultisig/vultisig-sdk/pull/2318) [`26a83ed`](https://github.com/vultisig/vultisig-sdk/commit/26a83ed417c9543f9c92d28cbb1bd35f0f914817) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Fix TRON transaction lifecycle safety across fee preparation, status polling, and broadcast. Native TRX bandwidth estimates now measure the WalletCore-serialized signed transaction including memo bytes, default transaction times use the fetched block timestamp, expired raw transactions terminate polling, and successful broadcasts must return the deterministic local transaction hash.
52
+
53
+ - Updated dependencies [[`1b3fb49`](https://github.com/vultisig/vultisig-sdk/commit/1b3fb498ad3f78b84b92b9f09b41fe8956fc5e9a), [`7d4c116`](https://github.com/vultisig/vultisig-sdk/commit/7d4c116cc7a940e96abf075790c4a387edd03987), [`7b65284`](https://github.com/vultisig/vultisig-sdk/commit/7b65284f7fe73f538283a201a416efdbbda0830c), [`1716a79`](https://github.com/vultisig/vultisig-sdk/commit/1716a7946bf617ff16f8bb15f33b279efbb4a87d), [`a711b6c`](https://github.com/vultisig/vultisig-sdk/commit/a711b6ca8a8a7ae39d0efbb1c919b23b6538a1b8), [`ef6a8bb`](https://github.com/vultisig/vultisig-sdk/commit/ef6a8bb0007c6576179e5a8cb10aa47820075b57), [`26a83ed`](https://github.com/vultisig/vultisig-sdk/commit/26a83ed417c9543f9c92d28cbb1bd35f0f914817), [`b19c5d5`](https://github.com/vultisig/vultisig-sdk/commit/b19c5d56f4d00d92493f8da74ff80d92b1d87c68)]:
54
+ - @vultisig/core-chain@5.0.0
55
+
3
56
  ## 2.1.1
4
57
 
5
58
  ### Patch Changes
@@ -28,7 +28,6 @@ export declare const chainSpecificRecord: {
28
28
  readonly Cosmos: "cosmosSpecific";
29
29
  readonly Osmosis: "cosmosSpecific";
30
30
  readonly Dydx: "cosmosSpecific";
31
- readonly Kujira: "cosmosSpecific";
32
31
  readonly Terra: "cosmosSpecific";
33
32
  readonly TerraClassic: "cosmosSpecific";
34
33
  readonly Noble: "cosmosSpecific";
@@ -1 +1 @@
1
- {"version":3,"file":"KeysignChainSpecific.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/KeysignChainSpecific.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAA;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAA;AAExH,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD2B,CAAA;AAE3D,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,uBAAuB,EAC1E,oBAAoB,cAAc,CAAC,oBAAoB,CAAC,EACxD,cAAc,CAAC,KACd,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,OAAO,CAMpD,CAAA"}
1
+ {"version":3,"file":"KeysignChainSpecific.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/KeysignChainSpecific.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAA;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAA;AAExH,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD2B,CAAA;AAE3D,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,uBAAuB,EAC1E,oBAAoB,cAAc,CAAC,oBAAoB,CAAC,EACxD,cAAc,CAAC,KACd,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,OAAO,CAMpD,CAAA"}
@@ -24,7 +24,6 @@ export const chainSpecificRecord = {
24
24
  [Chain.Cosmos]: 'cosmosSpecific',
25
25
  [Chain.Osmosis]: 'cosmosSpecific',
26
26
  [Chain.Dydx]: 'cosmosSpecific',
27
- [Chain.Kujira]: 'cosmosSpecific',
28
27
  [Chain.Terra]: 'cosmosSpecific',
29
28
  [Chain.TerraClassic]: 'cosmosSpecific',
30
29
  [Chain.Noble]: 'cosmosSpecific',
@@ -1 +1 @@
1
- {"version":3,"file":"KeysignChainSpecific.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/KeysignChainSpecific.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeysignChainSpecific.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/KeysignChainSpecific.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAA;AAM3F,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,kBAAkB;IACpC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,kBAAkB;IACrC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,kBAAkB;IAChC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,kBAAkB;IACvC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB;IAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,kBAAkB;IACjC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,kBAAkB;IACpC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,kBAAkB;IACpC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,kBAAkB;IACnC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,kBAAkB;IAClC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,kBAAkB;IAClC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,kBAAkB;IACvC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB;IAC/B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,kBAAkB;IAErC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc;IAC/B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,cAAc;IACnC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,cAAc;IAChC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,cAAc;IAChC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc;IAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,cAAc;IAE7B,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB;IAChC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACjC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,gBAAgB;IAC9B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB;IAC/B,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,gBAAgB;IACtC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB;IAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB;IAE/B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,mBAAmB;IAEtC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,cAAc;IAEjC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAgB;IAE7B,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB;IAEhC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,kBAAkB;IAEpC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,kBAAkB;IAErC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa;IAE1B,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB;IAEhC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc;IAE5B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS;IAE1B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,gBAAgB;CAC2B,CAAA;AAE3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,kBAAwD,EACxD,YAAe,EACsC,EAAE;IACvD,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,0BAA0B,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAQ,CAAA;AAC7F,CAAC,CAAA"}
@@ -40,6 +40,9 @@ export type GetChainSpecificInput<C extends KeysignChainSpecificKey = KeysignCha
40
40
  refBlockBytesHex?: string;
41
41
  refBlockHashHex?: string;
42
42
  thirdPartyGasLimitEstimation?: bigint;
43
+ } : C extends 'rippleSpecific' ? {
44
+ /** Explicit send intent overrides the legacy issuer-address TrustSet inference. */
45
+ transactionType?: TransactionType.RIPPLE_PAYMENT | TransactionType.RIPPLE_TRUST_SET;
43
46
  } : {});
44
47
  export type GetChainSpecificResolver<C extends KeysignChainSpecificKey = KeysignChainSpecificKey> = Resolver<GetChainSpecificInput<C>, Promise<ValueForCase<C>>>;
45
48
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qEAAqE,CAAA;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEtF,KAAK,YAAY,CAAC,CAAC,SAAS,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAE1G,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IAC/F,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,CAAC,CAAC,SAAS,kBAAkB,GAC7B;IACE,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,GACD,CAAC,SAAS,cAAc,GACtB;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,GAClD,CAAC,SAAS,gBAAgB,GACxB;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GACD,CAAC,SAAS,mBAAmB,GAC3B;IACE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC,GACD,CAAC,SAAS,cAAc,GACtB;IACE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GACD,CAAC,SAAS,cAAc,GACtB;IACE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,GACD,EAAE,CAAC,CAAA;AAEjB,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI,QAAQ,CAC1G,qBAAqB,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACzB,CAAA"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/chainSpecific/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qEAAqE,CAAA;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEtF,KAAK,YAAY,CAAC,CAAC,SAAS,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAE1G,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IAC/F,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,CAAC,CAAC,SAAS,kBAAkB,GAC7B;IACE,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,GACD,CAAC,SAAS,cAAc,GACtB;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,GAClD,CAAC,SAAS,gBAAgB,GACxB;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GACD,CAAC,SAAS,mBAAmB,GAC3B;IACE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC,GACD,CAAC,SAAS,cAAc,GACtB;IACE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GACD,CAAC,SAAS,cAAc,GACtB;IACE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,GACD,CAAC,SAAS,gBAAgB,GACxB;IACE,mFAAmF;IACnF,eAAe,CAAC,EAAE,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAA;CACpF,GACD,EAAE,CAAC,CAAA;AAEnB,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI,QAAQ,CAC1G,qBAAqB,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACzB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ripple.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAOtD,eAAO,MAAM,2BAA2B,GAAI,oBAAoB,MAAM,GAAG,SAAS,KAAG,MAMpF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,wBAAwB,CAAC,gBAAgB,CA8F7E,CAAA"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ripple.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAOtD,eAAO,MAAM,2BAA2B,GAAI,oBAAoB,MAAM,GAAG,SAAS,KAAG,MAMpF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,wBAAwB,CAAC,gBAAgB,CA6G7E,CAAA"}
@@ -20,7 +20,7 @@ export const getRippleLastLedgerSequence = (ledgerCurrentIndex) => {
20
20
  }
21
21
  return BigInt(ledgerCurrentIndex + lastLedgerSequenceOffset);
22
22
  };
23
- export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, }) => {
23
+ export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, transactionType, }) => {
24
24
  const coin = getKeysignCoin(keysignPayload);
25
25
  const { address } = coin;
26
26
  // A dApp-supplied transaction (OfferCreate, OfferCancel, …) carries no
@@ -32,6 +32,11 @@ export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, }
32
32
  destinationTag,
33
33
  memo: keysignPayload.memo,
34
34
  });
35
+ // Preserve existing trust-line callers, but an ordinary send explicitly
36
+ // selects Payment: sending tokens back to their issuer is also a Payment.
37
+ const isTrustSet = transactionType === undefined
38
+ ? originatesRippleTrustSet(keysignPayload)
39
+ : transactionType === TransactionType.RIPPLE_TRUST_SET;
35
40
  const [senderAccount, networkInfo, destinationAccountResult] = await Promise.all([
36
41
  getRippleAccountInfo(address),
37
42
  getRippleNetworkInfo(),
@@ -54,7 +59,7 @@ export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, }
54
59
  // XRP Ledger rejects a Payment to an account with lsfRequireDestTag when no
55
60
  // tag is present. Fail closed on lookup errors other than an unfunded
56
61
  // destination: without an account object there is no RequireDestTag flag.
57
- if (toAddress && destinationAccountResult !== undefined && !coin.id && effectiveDestinationTag === undefined) {
62
+ if (toAddress && destinationAccountResult !== undefined && !isTrustSet && effectiveDestinationTag === undefined) {
58
63
  if ('error' in destinationAccountResult) {
59
64
  if (!destinationUnfunded) {
60
65
  // This lookup can fail transiently, so keep it retryable. Only
@@ -67,6 +72,10 @@ export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, }
67
72
  }
68
73
  }
69
74
  if (destinationUnfunded) {
75
+ if (!keysignPayload.coin?.isNativeToken) {
76
+ throw new Error(`Cannot send an XRP issued currency to ${toAddress}: the destination account is not activated. ` +
77
+ 'Activate it with the XRP base reserve before sending tokens.');
78
+ }
70
79
  const toAmount = BigInt(shouldBePresent(keysignPayload.toAmount));
71
80
  if (toAmount < BigInt(reserve_base)) {
72
81
  throw new Error(`Cannot send to XRP account ${toAddress}: it is not yet activated, and XRPL requires the ` +
@@ -85,14 +94,17 @@ export const getRippleChainSpecific = async ({ keysignPayload, destinationTag, }
85
94
  // Only genuine originations are declared. Stamping a token send would make
86
95
  // every signer agree to build a TrustSet from it, which is worse than the
87
96
  // divergence: the ceremony completes over an operation nobody asked for.
88
- const isTrustSet = originatesRippleTrustSet(keysignPayload);
89
97
  return create(RippleSpecificSchema, {
90
98
  sequence: BigInt(account_data.Sequence),
91
99
  lastLedgerSequence: getRippleLastLedgerSequence(ledgerCurrentIndex),
92
100
  // Fee is the network fee only — the reserve rides on the Payment amount.
93
101
  gas: networkFee,
94
102
  ...(effectiveDestinationTag !== undefined ? { destinationTag: effectiveDestinationTag } : {}),
95
- ...(isTrustSet ? { transactionType: TransactionType.RIPPLE_TRUST_SET } : {}),
103
+ ...(isTrustSet
104
+ ? { transactionType: TransactionType.RIPPLE_TRUST_SET }
105
+ : transactionType === TransactionType.RIPPLE_PAYMENT
106
+ ? { transactionType: TransactionType.RIPPLE_PAYMENT }
107
+ : {}),
96
108
  });
97
109
  };
98
110
  //# sourceMappingURL=ripple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ripple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ripple.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ton/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAIzD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,wBAAwB,CAAC,aAAa,CAuEvE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ton/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAIzD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,wBAAwB,CAAC,aAAa,CAwFvE,CAAA"}
@@ -1,8 +1,10 @@
1
1
  import { create } from '@bufbuild/protobuf';
2
2
  import { getTonAccountInfo } from '@vultisig/core-chain/chains/ton/account/getTonAccountInfo';
3
+ import { getTonAddressBounceability } from '@vultisig/core-chain/chains/ton/address';
3
4
  import { getJettonWalletAddress, getTonWalletState } from '@vultisig/core-chain/chains/ton/api';
4
5
  import { TonSpecificSchema } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
5
6
  import { attempt } from '@vultisig/lib-utils/attempt';
7
+ import { getKeysignSwapPayload } from '../../../swap/getKeysignSwapPayload.js';
6
8
  import { getKeysignCoin } from '../../../utils/getKeysignCoin.js';
7
9
  const tonWalletStateUninitialized = 'uninit';
8
10
  /**
@@ -27,15 +29,29 @@ export const getTonChainSpecific = async ({ keysignPayload, sendMaxAmount = fals
27
29
  // than returning null and crashing this destructure.
28
30
  const { account_state } = await getTonAccountInfo(address);
29
31
  const sequenceNumber = BigInt(account_state?.seqno ?? 0);
32
+ // Whether the transfer goes out bounceable, which decides what happens to the funds
33
+ // when the destination rejects the message: a bounceable transfer is refunded, a
34
+ // non-bounceable one is absorbed by the destination and gone.
30
35
  const getIsBounceable = async () => {
31
- if (receiver) {
32
- const { data: walletState } = await attempt(getTonWalletState(receiver));
33
- const isUninitialized = walletState === tonWalletStateUninitialized;
34
- if (!isUninitialized && receiver.startsWith('E')) {
35
- return true;
36
- }
36
+ if (!receiver) {
37
+ return false;
38
+ }
39
+ // A swap deposit lands on a router or escrow contract, and there are ordinary
40
+ // reasons for such a contract to reject: an expired quote, a paused pool, a
41
+ // route that closed between quote and broadcast. Those have to come back.
42
+ if (getKeysignSwapPayload(keysignPayload)) {
43
+ return true;
44
+ }
45
+ // An undeployed account has no code to reject anything, so a bounceable message
46
+ // is simply returned and the transfer never lands. Those must go non-bounceable.
47
+ const { data: walletState } = await attempt(getTonWalletState(receiver));
48
+ if (walletState === tonWalletStateUninitialized) {
49
+ return false;
37
50
  }
38
- return false;
51
+ // A raw `0:hex` destination declares no intent, so it defaults to bounceable —
52
+ // the safe side for anything that might be a contract. Only an explicit `UQ…`
53
+ // opts out.
54
+ return getTonAddressBounceability(receiver) !== 'nonBounceable';
39
55
  };
40
56
  const result = create(TonSpecificSchema, {
41
57
  sequenceNumber,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ton/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/ton/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
+ import { getTronBlockInfo } from '@vultisig/core-chain/chains/tron/getTronBlockInfo';
2
+ import { type WalletCore } from '@trustwallet/wallet-core';
1
3
  import { GetChainSpecificResolver } from '../../resolver.js';
4
+ type NativeTronBandwidthInput = {
5
+ walletCore: WalletCore;
6
+ fromAddress: string;
7
+ toAddress: string;
8
+ amount: bigint;
9
+ memo: string;
10
+ blockInfo: Awaited<ReturnType<typeof getTronBlockInfo>>;
11
+ };
12
+ /**
13
+ * TRON charges bandwidth for the serialized signed transaction, not for a
14
+ * fixed transfer template. WalletCore exposes the exact raw_data bytes through
15
+ * its pre-signing output; the remaining signed envelope consists of the
16
+ * length-delimited raw_data field and one 65-byte secp256k1 signature.
17
+ */
18
+ export declare const getNativeTronBandwidthBytes: ({ walletCore, fromAddress, toAddress, amount, memo, blockInfo, }: NativeTronBandwidthInput) => number;
2
19
  export declare const getTronChainSpecific: GetChainSpecificResolver<'tronSpecific'>;
20
+ export {};
3
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAyBzD,eAAO,MAAM,oBAAoB,EAAE,wBAAwB,CAAC,cAAc,CA2CzE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AAKpF,OAAO,EAAM,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAK9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AA0BzD,KAAK,wBAAwB,GAAG;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAA;CACxD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GAAI,kEAOzC,wBAAwB,KAAG,MAqC7B,CAAA;AAgBD,eAAO,MAAM,oBAAoB,EAAE,wBAAwB,CAAC,cAAc,CAmDzE,CAAA"}
@@ -1,8 +1,12 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { create } from '@bufbuild/protobuf';
2
3
  import { getTronBlockInfo } from '@vultisig/core-chain/chains/tron/getTronBlockInfo';
3
4
  import { getTronAccountResources } from '@vultisig/core-chain/chains/tron/resources/getTronAccountResources';
4
5
  import { isFeeCoin } from '@vultisig/core-chain/coin/utils/isFeeCoin';
5
6
  import { TronSpecificSchema } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
7
+ import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
8
+ import { TW } from '@trustwallet/wallet-core';
9
+ import Long from 'long';
6
10
  import { getKeysignAmount } from '../../../utils/getKeysignAmount.js';
7
11
  import { getKeysignCoin } from '../../../utils/getKeysignCoin.js';
8
12
  import { getTrc20TransferFee } from './fee.js';
@@ -11,12 +15,60 @@ import { getTrc20TransferFee } from './fee.js';
11
15
  // sun. 800_000n keeps the pre-existing margin (~2.4× the median signed size)
12
16
  // and guards against governance-driven bandwidth price hikes.
13
17
  const NATIVE_TRX_SEND_FEE_FALLBACK = 800000n;
14
- // Native TRX transfer is ~270-345 bytes; use 300 as the threshold (mirrors iOS BYTES_PER_COIN_TX)
15
- const BYTES_PER_NATIVE_TRX_TX = 300;
16
- const getNativeTronSendFee = async (fromAddress) => {
18
+ const TRON_SIGNATURE_BYTES = 65;
19
+ // java-tron charges one 64-byte transaction-result allowance per contract in
20
+ // addition to the serialized signed transaction bytes. A native transfer has
21
+ // exactly one contract.
22
+ const TRON_TRANSACTION_RESULT_BYTES = 64;
23
+ const getProtoVarintSize = (value) => {
24
+ let size = 1;
25
+ while (value >= 128) {
26
+ value = Math.floor(value / 128);
27
+ size += 1;
28
+ }
29
+ return size;
30
+ };
31
+ const getLengthDelimitedFieldSize = (valueSize) => 1 + getProtoVarintSize(valueSize) + valueSize;
32
+ /**
33
+ * TRON charges bandwidth for the serialized signed transaction, not for a
34
+ * fixed transfer template. WalletCore exposes the exact raw_data bytes through
35
+ * its pre-signing output; the remaining signed envelope consists of the
36
+ * length-delimited raw_data field and one 65-byte secp256k1 signature.
37
+ */
38
+ export const getNativeTronBandwidthBytes = ({ walletCore, fromAddress, toAddress, amount, memo, blockInfo, }) => {
39
+ const signingInput = TW.Tron.Proto.SigningInput.create({
40
+ transaction: TW.Tron.Proto.Transaction.create({
41
+ transfer: TW.Tron.Proto.TransferContract.create({
42
+ ownerAddress: fromAddress,
43
+ toAddress,
44
+ amount: Long.fromString(amount.toString()),
45
+ }),
46
+ timestamp: Long.fromNumber(blockInfo.timestamp),
47
+ expiration: Long.fromNumber(blockInfo.expiration),
48
+ blockHeader: TW.Tron.Proto.BlockHeader.create({
49
+ timestamp: Long.fromNumber(blockInfo.blockHeaderTimestamp),
50
+ number: Long.fromNumber(blockInfo.blockHeaderNumber),
51
+ version: blockInfo.blockHeaderVersion,
52
+ txTrieRoot: Buffer.from(blockInfo.blockHeaderTxTrieRoot, 'hex'),
53
+ parentHash: Buffer.from(blockInfo.blockHeaderParentHash, 'hex'),
54
+ witnessAddress: Buffer.from(blockInfo.blockHeaderWitnessAddress, 'hex'),
55
+ }),
56
+ memo,
57
+ }),
58
+ });
59
+ const preSigningOutput = TW.TxCompiler.Proto.PreSigningOutput.decode(walletCore.TransactionCompiler.preImageHashes(walletCore.CoinType.tron, TW.Tron.Proto.SigningInput.encode(signingInput).finish()));
60
+ if (preSigningOutput.errorMessage) {
61
+ throw new Error(preSigningOutput.errorMessage);
62
+ }
63
+ return (getLengthDelimitedFieldSize(preSigningOutput.data.length) +
64
+ getLengthDelimitedFieldSize(TRON_SIGNATURE_BYTES) +
65
+ TRON_TRANSACTION_RESULT_BYTES);
66
+ };
67
+ const getNativeTronSendFee = async (input) => {
17
68
  try {
18
- const resources = await getTronAccountResources(fromAddress);
19
- if (resources.bandwidth.available >= BYTES_PER_NATIVE_TRX_TX) {
69
+ const requiredBandwidth = getNativeTronBandwidthBytes(input);
70
+ const resources = await getTronAccountResources(input.fromAddress);
71
+ if (resources.bandwidth.available >= requiredBandwidth) {
20
72
  return 0n;
21
73
  }
22
74
  return NATIVE_TRX_SEND_FEE_FALLBACK;
@@ -26,7 +78,7 @@ const getNativeTronSendFee = async (fromAddress) => {
26
78
  return NATIVE_TRX_SEND_FEE_FALLBACK;
27
79
  }
28
80
  };
29
- export const getTronChainSpecific = async ({ keysignPayload, thirdPartyGasLimitEstimation, expiration, timestamp, refBlockBytesHex, refBlockHashHex, }) => {
81
+ export const getTronChainSpecific = async ({ keysignPayload, walletCore, thirdPartyGasLimitEstimation, expiration, timestamp, refBlockBytesHex, refBlockHashHex, }) => {
30
82
  const coin = getKeysignCoin(keysignPayload);
31
83
  const blockInfo = await getTronBlockInfo({
32
84
  expiration,
@@ -39,7 +91,14 @@ export const getTronChainSpecific = async ({ keysignPayload, thirdPartyGasLimitE
39
91
  return thirdPartyGasLimitEstimation;
40
92
  }
41
93
  if (isFeeCoin(coin)) {
42
- return getNativeTronSendFee(coin.address);
94
+ return getNativeTronSendFee({
95
+ walletCore,
96
+ fromAddress: shouldBePresent(coin.address),
97
+ toAddress: shouldBePresent(keysignPayload.toAddress),
98
+ amount: getKeysignAmount(keysignPayload),
99
+ memo: keysignPayload.memo ?? '',
100
+ blockInfo,
101
+ });
43
102
  }
44
103
  return getTrc20TransferFee({
45
104
  coin,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qEAAqE,CAAA;AAExG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAE3C,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,8DAA8D;AAC9D,MAAM,4BAA4B,GAAG,OAAQ,CAAA;AAE7C,kGAAkG;AAClG,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAEnC,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAAmB,EAAmB,EAAE;IAC1E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAC5D,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,IAAI,uBAAuB,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,4BAA4B,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,OAAO,4BAA4B,CAAA;IACrC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA6C,KAAK,EAAE,EACnF,cAAc,EACd,4BAA4B,EAC5B,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,GAChB,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,cAAc,CAAC,cAAc,CAAC,CAAA;IAE3C,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;QACvC,UAAU;QACV,SAAS;QACT,gBAAgB;QAChB,eAAe;KAChB,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAClC,IAAI,4BAA4B,EAAE,CAAC;YACjC,OAAO,4BAA4B,CAAA;QACrC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,mBAAmB,CAAC;YACzB,IAAI;YACJ,QAAQ,EAAE,cAAc,CAAC,SAAS;YAClC,MAAM,EAAE,gBAAgB,CAAC,cAAc,CAAC;SACzC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,MAAM,CAAC,kBAAkB,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;QACxC,oBAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAC5D,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACtD,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACxD,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;QACtD,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;QACtD,yBAAyB,EAAE,SAAS,CAAC,yBAAyB;QAC9D,aAAa,EAAE,MAAM,gBAAgB,EAAE;KACxC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type BuildKeysignPayloadErrorType = 'not-enough-funds' | 'ripple-destination-tag-invalid' | 'ripple-destination-tag-required';
1
+ export type BuildKeysignPayloadErrorType = 'not-enough-funds' | 'ripple-destination-tag-invalid' | 'ripple-destination-tag-required' | 'ton-memo-too-long';
2
2
  export declare class BuildKeysignPayloadError extends Error {
3
3
  readonly type: BuildKeysignPayloadErrorType;
4
4
  constructor(type: BuildKeysignPayloadErrorType, message?: string);
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GACpC,kBAAkB,GAClB,gCAAgC,GAChC,iCAAiC,CAAA;AAErC,qBAAa,wBAAyB,SAAQ,KAAK;aAE/B,IAAI,EAAE,4BAA4B;gBAAlC,IAAI,EAAE,4BAA4B,EAClD,OAAO,GAAE,MAAa;CAKzB;AAKD,qBAAa,uBAAwB,SAAQ,KAAK;aAYpB,IAAI,EAAE,MAAM;IAHxC,SAAgB,UAAU,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEK,IAAI,EAAE,MAAM;CAMzC;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,YAC+C,CAAA;AAEtG,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAiCrE,CAAA"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GACpC,kBAAkB,GAClB,gCAAgC,GAChC,iCAAiC,GACjC,mBAAmB,CAAA;AAEvB,qBAAa,wBAAyB,SAAQ,KAAK;aAE/B,IAAI,EAAE,4BAA4B;gBAAlC,IAAI,EAAE,4BAA4B,EAClD,OAAO,GAAE,MAAa;CAKzB;AAKD,qBAAa,uBAAwB,SAAQ,KAAK;aAYpB,IAAI,EAAE,MAAM;IAHxC,SAAgB,UAAU,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEK,IAAI,EAAE,MAAM;CAMzC;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,YAC+C,CAAA;AAEtG,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAiCrE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/error.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
2
  import { FeeSettings } from '@vultisig/core-mpc/keysign/chainSpecific/FeeSettings';
3
3
  import { KeysignLibType } from '@vultisig/core-mpc/mpcLib';
4
+ import { KeysignPayload } from '@vultisig/core-mpc/types/vultisig/keysign/v1/keysign_message_pb';
4
5
  import { WalletCore } from '@trustwallet/wallet-core';
5
6
  import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
6
7
  export type BuildSendKeysignPayloadInput = {
@@ -25,5 +26,5 @@ export type BuildSendKeysignPayloadInput = {
25
26
  */
26
27
  sendMaxAmount?: boolean;
27
28
  };
28
- export declare const buildSendKeysignPayload: ({ coin, receiver, amount, memo, destinationTag, vaultId, localPartyId, publicKey, hexPublicKeyOverride, walletCore, libType, feeSettings, sendMaxAmount, }: BuildSendKeysignPayloadInput) => Promise<import("@vultisig/core-mpc/types/vultisig/keysign/v1/keysign_message_pb").KeysignPayload>;
29
+ export declare const buildSendKeysignPayload: ({ coin, receiver, amount, memo, destinationTag, vaultId, localPartyId, publicKey, hexPublicKeyOverride, walletCore, libType, feeSettings, sendMaxAmount, }: BuildSendKeysignPayloadInput) => Promise<KeysignPayload>;
29
30
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/send/build.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAA;AAIlF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAMzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,4JAc3C,4BAA4B,sGA0F9B,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/send/build.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAInE,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAA;AAIlF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,OAAO,EAAE,cAAc,EAAwB,MAAM,iEAAiE,CAAA;AACtH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAQzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAwCD,eAAO,MAAM,uBAAuB,GAAU,4JAc3C,4BAA4B,4BAkG9B,CAAA"}
@@ -3,7 +3,10 @@ import { create } from '@bufbuild/protobuf';
3
3
  import { Chain } from '@vultisig/core-chain/Chain';
4
4
  import { isChainOfKind } from '@vultisig/core-chain/ChainKind';
5
5
  import { normalizeRippleDestination } from '@vultisig/core-chain/chains/ripple/address';
6
+ import { getSignableIssuedCurrencyAmount, parseRippleTokenId } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
7
+ import { validateTonComment } from '@vultisig/core-chain/chains/ton/comment';
6
8
  import { getCoinBalance } from '@vultisig/core-chain/coin/balance';
9
+ import { isFeeCoin } from '@vultisig/core-chain/coin/utils/isFeeCoin';
7
10
  import { getChainSpecific } from '@vultisig/core-mpc/keysign/chainSpecific';
8
11
  import { refineKeysignAmount } from '@vultisig/core-mpc/keysign/refine/amount';
9
12
  import { refineKeysignUtxo } from '@vultisig/core-mpc/keysign/refine/utxo';
@@ -11,9 +14,42 @@ import { getKeysignUtxoInfo } from '@vultisig/core-mpc/keysign/utxo/getKeysignUt
11
14
  import { toCommCoin } from '@vultisig/core-mpc/types/utils/commCoin';
12
15
  import { TransactionType } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
13
16
  import { KeysignPayloadSchema } from '@vultisig/core-mpc/types/vultisig/keysign/v1/keysign_message_pb';
17
+ import { getBlockchainSpecificValue } from '../chainSpecific/KeysignChainSpecific.js';
14
18
  import { BuildKeysignPayloadError } from '../error.js';
19
+ import { getKeysignAmount } from '../utils/getKeysignAmount.js';
15
20
  import { validateDestinationTag } from '../utils/rippleDestinationTag.js';
16
21
  import { getCosmosWasmTokenTransferPayload } from './cosmosWasm.js';
22
+ /**
23
+ * Rejects a TON memo that will not fit the cell it is destined for, while the
24
+ * payload is still being built.
25
+ *
26
+ * Without this the only check is in the signing-input resolver, which runs
27
+ * after the user has reviewed and approved the transaction — an oversized
28
+ * jetton memo surfaces there as a bare WalletCore "Internal error". Deferred to
29
+ * the end of the build because the jetton cap depends on the final signed
30
+ * amount and on `isActiveDestination`, which `getChainSpecific` resolves.
31
+ *
32
+ * Raised as a [BuildKeysignPayloadError] because it is bad input, not a
33
+ * transient failure: callers stop retrying and show it.
34
+ */
35
+ const assertTonMemoFits = ({ coin, keysignPayload }) => {
36
+ const { memo } = keysignPayload;
37
+ if (coin.chain !== Chain.Ton || !memo) {
38
+ return;
39
+ }
40
+ const { isActiveDestination } = getBlockchainSpecificValue(keysignPayload.blockchainSpecific, 'tonSpecific');
41
+ try {
42
+ validateTonComment({
43
+ memo,
44
+ jetton: isFeeCoin(coin) ? undefined : { amount: getKeysignAmount(keysignPayload), isActiveDestination },
45
+ });
46
+ }
47
+ catch (error) {
48
+ // Re-raised as a domain error so callers stop retrying and show it; the
49
+ // validator's message already names the real cap and the actual length.
50
+ throw new BuildKeysignPayloadError('ton-memo-too-long', error instanceof Error ? error.message : String(error));
51
+ }
52
+ };
17
53
  export const buildSendKeysignPayload = async ({ coin, receiver, amount, memo, destinationTag, vaultId, localPartyId, publicKey, hexPublicKeyOverride, walletCore, libType, feeSettings, sendMaxAmount, }) => {
18
54
  const hexPublicKey = hexPublicKeyOverride ?? (publicKey ? Buffer.from(publicKey.data()).toString('hex') : undefined);
19
55
  if (!hexPublicKey) {
@@ -30,6 +66,11 @@ export const buildSendKeysignPayload = async ({ coin, receiver, amount, memo, de
30
66
  const effectiveDestinationTag = destinationTag ?? embeddedDestinationTag;
31
67
  if (effectiveDestinationTag !== undefined)
32
68
  validateDestinationTag(effectiveDestinationTag);
69
+ if (coin.chain === Chain.Ripple && coin.id) {
70
+ if (amount <= 0n)
71
+ throw new Error('XRP issued-currency Payment amount must be positive');
72
+ getSignableIssuedCurrencyAmount({ ...parseRippleTokenId(coin.id), amount, decimals: coin.decimals });
73
+ }
33
74
  const cosmosWasmTokenTransferPayload = getCosmosWasmTokenTransferPayload({
34
75
  coin,
35
76
  receiver: normalizedReceiver,
@@ -73,6 +114,7 @@ export const buildSendKeysignPayload = async ({ coin, receiver, amount, memo, de
73
114
  walletCore,
74
115
  destinationTag: effectiveDestinationTag,
75
116
  sendMaxAmount,
117
+ ...(coin.chain === Chain.Ripple ? { transactionType: TransactionType.RIPPLE_PAYMENT } : {}),
76
118
  });
77
119
  const balance = await getCoinBalance(coin);
78
120
  if (publicKey) {
@@ -90,6 +132,7 @@ export const buildSendKeysignPayload = async ({ coin, receiver, amount, memo, de
90
132
  });
91
133
  }
92
134
  }
135
+ assertTonMemoFits({ coin, keysignPayload });
93
136
  return keysignPayload;
94
137
  };
95
138
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/send/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/send/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/ripple.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AA4DnD,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CA+NlE,CAAA"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/ripple.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAiEnD,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CA2QlE,CAAA"}