@vultisig/core-mpc 1.12.1 → 1.14.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 (41) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/dist/chains/cosmos/qbtc/QBTCHelper.js +4 -3
  3. package/dist/chains/cosmos/qbtc/QBTCHelper.js.map +1 -1
  4. package/dist/chains/cosmos/qbtc/QBTCTx.js +1 -1
  5. package/dist/chains/cosmos/qbtc/QBTCTx.js.map +1 -1
  6. package/dist/keysign/chainSpecific/resolvers/cosmos/index.d.ts.map +1 -1
  7. package/dist/keysign/chainSpecific/resolvers/cosmos/index.js +71 -10
  8. package/dist/keysign/chainSpecific/resolvers/cosmos/index.js.map +1 -1
  9. package/dist/keysign/chainSpecific/resolvers/sui/index.d.ts.map +1 -1
  10. package/dist/keysign/chainSpecific/resolvers/sui/index.js +62 -64
  11. package/dist/keysign/chainSpecific/resolvers/sui/index.js.map +1 -1
  12. package/dist/keysign/chainSpecific/resolvers/sui/refine.d.ts.map +1 -1
  13. package/dist/keysign/chainSpecific/resolvers/sui/refine.js +14 -4
  14. package/dist/keysign/chainSpecific/resolvers/sui/refine.js.map +1 -1
  15. package/dist/keysign/chainSpecific/resolvers/tron/energyPrice.d.ts +4 -3
  16. package/dist/keysign/chainSpecific/resolvers/tron/energyPrice.d.ts.map +1 -1
  17. package/dist/keysign/chainSpecific/resolvers/tron/energyPrice.js +11 -5
  18. package/dist/keysign/chainSpecific/resolvers/tron/energyPrice.js.map +1 -1
  19. package/dist/keysign/chainSpecific/resolvers/tron/fee.d.ts +11 -0
  20. package/dist/keysign/chainSpecific/resolvers/tron/fee.d.ts.map +1 -1
  21. package/dist/keysign/chainSpecific/resolvers/tron/fee.js +43 -19
  22. package/dist/keysign/chainSpecific/resolvers/tron/fee.js.map +1 -1
  23. package/dist/keysign/fee/resolvers/cosmos.d.ts +5 -3
  24. package/dist/keysign/fee/resolvers/cosmos.d.ts.map +1 -1
  25. package/dist/keysign/fee/resolvers/cosmos.js +8 -21
  26. package/dist/keysign/fee/resolvers/cosmos.js.map +1 -1
  27. package/dist/keysign/fee/resolvers/tron.d.ts.map +1 -1
  28. package/dist/keysign/fee/resolvers/tron.js +11 -2
  29. package/dist/keysign/fee/resolvers/tron.js.map +1 -1
  30. package/dist/keysign/signingInputs/resolvers/cosmos/index.d.ts.map +1 -1
  31. package/dist/keysign/signingInputs/resolvers/cosmos/index.js +30 -17
  32. package/dist/keysign/signingInputs/resolvers/cosmos/index.js.map +1 -1
  33. package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts +86 -0
  34. package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts.map +1 -0
  35. package/dist/keysign/swap/buildLimitSwapKeysignPayload.js +178 -0
  36. package/dist/keysign/swap/buildLimitSwapKeysignPayload.js.map +1 -0
  37. package/dist/keysign/swap/getKeysignLimitSwapOrder.d.ts +41 -0
  38. package/dist/keysign/swap/getKeysignLimitSwapOrder.d.ts.map +1 -0
  39. package/dist/keysign/swap/getKeysignLimitSwapOrder.js +50 -0
  40. package/dist/keysign/swap/getKeysignLimitSwapOrder.js.map +1 -0
  41. package/package.json +14 -4
@@ -3,6 +3,8 @@ import { create } from '@bufbuild/protobuf';
3
3
  import { Chain } from '@vultisig/core-chain/Chain';
4
4
  import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
5
5
  import { suiMinGasBudget } from '@vultisig/core-chain/chains/sui/config';
6
+ import { getSuiResultTransaction } from '@vultisig/core-chain/chains/sui/transactionResult';
7
+ import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
6
8
  import { KeysignPayloadSchema } from '@vultisig/core-mpc/types/vultisig/keysign/v1/keysign_message_pb';
7
9
  import { maxBigInt } from '@vultisig/lib-utils/math/maxBigInt';
8
10
  import { getPreSigningOutput } from '../../../preSigningOutput/index.js';
@@ -25,11 +27,19 @@ export const refineSuiChainSpecific = async ({ keysignPayload, chainSpecific, wa
25
27
  txInputData,
26
28
  chain: Chain.Sui,
27
29
  });
28
- const txBytes = Buffer.from(data).subarray(3).toString('base64');
29
- const { effects: { gasUsed: { computationCost, storageCost }, }, } = await client.dryRunTransactionBlock({
30
- transactionBlock: txBytes,
30
+ // Strip WalletCore's 3-byte intent prefix — the chain wants the raw
31
+ // TransactionData BCS bytes. `simulateTransaction` (the replacement for the
32
+ // retired `dryRunTransactionBlock`) takes those bytes directly rather than a
33
+ // base64 string.
34
+ const txBytes = new Uint8Array(Buffer.from(data).subarray(3));
35
+ const simulation = await client.simulateTransaction({
36
+ transaction: txBytes,
37
+ include: { effects: true },
31
38
  });
32
- const gasBudget = BigInt(computationCost) + BigInt(storageCost);
39
+ // A simulation that reports no gas at all cannot price the budget; fail
40
+ // closed rather than fall through to a 0 budget the send can't pay for.
41
+ const gasUsed = shouldBePresent(getSuiResultTransaction(simulation)?.effects?.gasUsed, 'Sui simulated gas usage');
42
+ const gasBudget = BigInt(gasUsed.computationCost ?? '0') + BigInt(gasUsed.storageCost ?? '0');
33
43
  return {
34
44
  ...chainSpecific,
35
45
  gasBudget: maxBigInt(gasBudgetMultiplier(gasBudget), suiMinGasBudget).toString(),
@@ -1 +1 @@
1
- {"version":3,"file":"refine.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/sui/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AACtH,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEhE,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;AAQpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,cAAc,EACd,aAAa,EACb,UAAU,GACkB,EAAwB,EAAE;IACtD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,uBAAuB,CAAC;QAClD,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE;YAC3C,GAAG,cAAc;YACjB,kBAAkB,EAAE;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,aAAa;aACrB;SACF,CAAC;QACF,UAAU;KACX,CAAC,CAAA;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC;QACnC,UAAU;QACV,WAAW;QACX,KAAK,EAAE,KAAK,CAAC,GAAG;KACjB,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEhE,MAAM,EACJ,OAAO,EAAE,EACP,OAAO,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,GAC1C,GACF,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC;QACtC,gBAAgB,EAAE,OAAO;KAC1B,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAE/D,OAAO;QACL,GAAG,aAAa;QAChB,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,EAAE;KACjF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"refine.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/sui/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E,OAAO,EAAkB,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AACtH,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEhE,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;AAQpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,cAAc,EACd,aAAa,EACb,UAAU,GACkB,EAAwB,EAAE;IACtD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,uBAAuB,CAAC;QAClD,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE;YAC3C,GAAG,cAAc;YACjB,kBAAkB,EAAE;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,aAAa;aACrB;SACF,CAAC;QACF,UAAU;KACX,CAAC,CAAA;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC;QACnC,UAAU;QACV,WAAW;QACX,KAAK,EAAE,KAAK,CAAC,GAAG;KACjB,CAAC,CAAA;IAEF,oEAAoE;IACpE,4EAA4E;IAC5E,6EAA6E;IAC7E,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC;QAClD,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC,CAAA;IAEF,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,OAAO,GAAG,eAAe,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAA;IAEjH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;IAE7F,OAAO;QACL,GAAG,aAAa;QAChB,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,EAAE;KACjF,CAAA;AACH,CAAC,CAAA"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Returns the current energy price in sun/energy from Tron chain params.
3
- * Successful fetches cached for 5 min. Falls back to 280 sun/energy (2023
4
- * governance default) if the endpoint is unreachable - recovery is immediate
5
- * once TronGrid comes back (errors are never cached).
3
+ * Successful fetches cached for 5 min. Falls back to 100 sun/energy (live
4
+ * TronGrid getEnergyFee value) if the endpoint is unreachable or its response
5
+ * omits a valid positive getEnergyFee parameter. Network errors are never
6
+ * cached, so recovery is immediate once TronGrid comes back.
6
7
  */
7
8
  export declare const getEnergyPrice: () => Promise<bigint>;
8
9
  //# sourceMappingURL=energyPrice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"energyPrice.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/energyPrice.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAMrD,CAAA"}
1
+ {"version":3,"file":"energyPrice.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/energyPrice.ts"],"names":[],"mappings":"AA2CA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAMrD,CAAA"}
@@ -1,6 +1,9 @@
1
1
  import { memoizeAsync } from '@vultisig/lib-utils/memoizeAsync';
2
2
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
3
- const FALLBACK_ENERGY_PRICE = 280n;
3
+ // Live-verified via `curl -sX POST https://api.trongrid.io/wallet/getchainparameters`
4
+ // (getEnergyFee=100 as of 2026-07-21). Used when TronGrid is unreachable or
5
+ // returns a missing/invalid getEnergyFee parameter.
6
+ const FALLBACK_ENERGY_PRICE = 100n;
4
7
  const CHAIN_PARAMS_URL = 'https://api.trongrid.io/wallet/getchainparameters';
5
8
  // 5 min TTL - governance proposals that change energy price are extremely
6
9
  // rare (last change was 2023) so this trades one RPC call per 5 min window
@@ -18,12 +21,15 @@ const fetchEnergyPriceRaw = async () => {
18
21
  };
19
22
  // Only successful fetches are memoized. Errors bubble up so the catch below
20
23
  // never caches the fallback as if it were a real price (fixes error-caching bug).
21
- const memoizedFetchEnergyPrice = memoizeAsync(fetchEnergyPriceRaw, { cacheTime: CACHE_TTL_MS });
24
+ const memoizedFetchEnergyPrice = memoizeAsync(fetchEnergyPriceRaw, {
25
+ cacheTime: CACHE_TTL_MS,
26
+ });
22
27
  /**
23
28
  * Returns the current energy price in sun/energy from Tron chain params.
24
- * Successful fetches cached for 5 min. Falls back to 280 sun/energy (2023
25
- * governance default) if the endpoint is unreachable - recovery is immediate
26
- * once TronGrid comes back (errors are never cached).
29
+ * Successful fetches cached for 5 min. Falls back to 100 sun/energy (live
30
+ * TronGrid getEnergyFee value) if the endpoint is unreachable or its response
31
+ * omits a valid positive getEnergyFee parameter. Network errors are never
32
+ * cached, so recovery is immediate once TronGrid comes back.
27
33
  */
28
34
  export const getEnergyPrice = async () => {
29
35
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"energyPrice.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/energyPrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,MAAM,qBAAqB,GAAG,IAAI,CAAA;AAElC,MAAM,gBAAgB,GAAG,mDAAmD,CAAA;AAE5E,0EAA0E;AAC1E,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAWlC,MAAM,mBAAmB,GAAG,KAAK,IAAqB,EAAE;IACtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAA6B,gBAAgB,EAAE;QACxE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,CAAA;IACtE,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,wBAAwB,GAAG,YAAY,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;AAE/F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAqB,EAAE;IACxD,IAAI,CAAC;QACH,OAAO,MAAM,wBAAwB,EAAE,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,CAAA;IAC9B,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"energyPrice.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/energyPrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,sFAAsF;AACtF,4EAA4E;AAC5E,oDAAoD;AACpD,MAAM,qBAAqB,GAAG,IAAI,CAAA;AAElC,MAAM,gBAAgB,GAAG,mDAAmD,CAAA;AAE5E,0EAA0E;AAC1E,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAWlC,MAAM,mBAAmB,GAAG,KAAK,IAAqB,EAAE;IACtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAA6B,gBAAgB,EAAE;QACxE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,CAAA;IACtE,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,wBAAwB,GAAG,YAAY,CAAC,mBAAmB,EAAE;IACjE,SAAS,EAAE,YAAY;CACxB,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAqB,EAAE;IACxD,IAAI,CAAC;QACH,OAAO,MAAM,wBAAwB,EAAE,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,CAAA;IAC9B,CAAC;AACH,CAAC,CAAA"}
@@ -4,6 +4,17 @@ type GetTrc20TransferFeeInput = {
4
4
  amount: bigint;
5
5
  receiver: string;
6
6
  };
7
+ type GetTrc20TransferFeeAmountInput = {
8
+ feeLimit: bigint;
9
+ fromAddress: string;
10
+ };
7
11
  export declare const getTrc20TransferFee: ({ coin, receiver, amount }: GetTrc20TransferFeeInput) => Promise<bigint>;
12
+ /**
13
+ * Returns the expected TRX burn for display/max-send, separately from the
14
+ * serialized feeLimit ceiling. When the ceiling is capped, return the cap as a
15
+ * conservative estimate because the original uncapped simulation cost cannot
16
+ * be recovered from the protobuf value.
17
+ */
18
+ export declare const getTrc20TransferFeeAmount: ({ feeLimit, fromAddress, }: GetTrc20TransferFeeAmountInput) => Promise<bigint>;
8
19
  export {};
9
20
  //# sourceMappingURL=fee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fee.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/fee.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAYtE,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAiBD,eAAO,MAAM,mBAAmB,GAAU,4BAA4B,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAuD9G,CAAA"}
1
+ {"version":3,"file":"fee.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/fee.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAatE,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAoBD,eAAO,MAAM,mBAAmB,GAAU,4BAA4B,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAqD9G,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAU,4BAG7C,8BAA8B,KAAG,OAAO,CAAC,MAAM,CAuBjD,CAAA"}
@@ -3,6 +3,8 @@ import { getTronAccountResources } from '@vultisig/core-chain/chains/tron/resour
3
3
  import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
4
4
  import base58 from 'bs58';
5
5
  import { getEnergyPrice } from './energyPrice.js';
6
+ const FEE_LIMIT_MARGIN_BPS = 5000n; // +50%
7
+ const FEE_LIMIT_CAP_SUN = 100000000n; // 100 TRX
6
8
  function base58ToHex(address) {
7
9
  const decoded = base58.decode(address);
8
10
  const addressBytes = decoded.slice(0, -4);
@@ -33,37 +35,59 @@ export const getTrc20TransferFee = async ({ coin, receiver, amount }) => {
33
35
  visible: true,
34
36
  },
35
37
  });
38
+ // triggerconstantcontract can return a 200 with an empty/malformed body or a
39
+ // reverted simulation without surfacing an HTTP error. Live revert responses
40
+ // may even carry result.result=true alongside a REVERT message, so treat any
41
+ // code/message as a failed estimate too. Trusting energy_used=0 in those cases
42
+ // silently produces feeLimit=0 downstream, which guarantees OUT_OF_ENERGY at
43
+ // broadcast.
44
+ const result = responseData.result;
45
+ if (!result || result.result !== true || result.code || result.message) {
46
+ const reason = result?.message || result?.code || 'empty or malformed response (possible TronGrid indexing lag)';
47
+ throw new Error(`[tron] triggerconstantcontract did not return a successful estimate: ${reason}`);
48
+ }
36
49
  const energyUsed = responseData.energy_used ?? 0;
37
50
  const energyPenalty = responseData.energy_penalty ?? 0;
38
51
  const totalEnergy = BigInt(energyUsed) + BigInt(energyPenalty);
39
- // Clamp negative totals to 0. TronGrid edge cases can return negative energy
40
- // values which, multiplied by energyPrice, produce a negative int64 in the
41
- // protobuf feeLimit field via `Long.fromString(gasEstimation.toString())`.
42
- // TronGrid rejects negative feeLimit at broadcast. Send-service path has a
43
- // similar guard at sdk/src/chains/tron/tx.ts:391; mirror it here for the MPC
44
- // keysign path. Returning 0 lets the upstream estimator pick a sane default.
52
+ // A successful TRC-20 simulation must consume energy. Fail closed rather than
53
+ // letting a non-positive estimate become a zero/negative protobuf feeLimit.
45
54
  if (totalEnergy <= 0n) {
55
+ throw new Error('[tron] triggerconstantcontract returned a non-positive energy estimate');
56
+ }
57
+ const energyPrice = await getEnergyPrice();
58
+ const totalSun = totalEnergy * energyPrice;
59
+ // feeLimit is a spending CEILING, not an expected cost. Base it on the full
60
+ // simulation before staked-energy subtraction so concurrent energy use during
61
+ // the 10-60s MPC ceremony cannot reduce it to zero. Cap pathological estimates
62
+ // at the typical 100 TRX limit documented by the send service.
63
+ const withMargin = totalSun + (totalSun * FEE_LIMIT_MARGIN_BPS) / 10000n;
64
+ return withMargin > FEE_LIMIT_CAP_SUN ? FEE_LIMIT_CAP_SUN : withMargin;
65
+ };
66
+ /**
67
+ * Returns the expected TRX burn for display/max-send, separately from the
68
+ * serialized feeLimit ceiling. When the ceiling is capped, return the cap as a
69
+ * conservative estimate because the original uncapped simulation cost cannot
70
+ * be recovered from the protobuf value.
71
+ */
72
+ export const getTrc20TransferFeeAmount = async ({ feeLimit, fromAddress, }) => {
73
+ if (feeLimit <= 0n) {
46
74
  return 0n;
47
75
  }
48
- // Subtract sender's available staked energy before computing the burn cost.
49
- // Mirrors iOS TronService.swift:117-126 intent — falls back to worst-case on
50
- // fetch failure so fee is never under-estimated.
51
- let energyToBurn = totalEnergy;
76
+ const fullBurnEstimate = feeLimit >= FEE_LIMIT_CAP_SUN
77
+ ? FEE_LIMIT_CAP_SUN
78
+ : (feeLimit * 10000n + (10000n + FEE_LIMIT_MARGIN_BPS - 1n)) / (10000n + FEE_LIMIT_MARGIN_BPS);
52
79
  try {
53
- const resources = await getTronAccountResources(coin.address);
80
+ const [resources, energyPrice] = await Promise.all([getTronAccountResources(fromAddress), getEnergyPrice()]);
54
81
  const availableEnergy = BigInt(resources.energy.available);
55
- if (availableEnergy >= totalEnergy) {
56
- energyToBurn = 0n;
57
- }
58
- else if (availableEnergy > 0n) {
59
- energyToBurn = totalEnergy - availableEnergy;
82
+ if (availableEnergy <= 0n) {
83
+ return fullBurnEstimate;
60
84
  }
85
+ const coveredSun = availableEnergy * energyPrice;
86
+ return coveredSun >= fullBurnEstimate ? 0n : fullBurnEstimate - coveredSun;
61
87
  }
62
88
  catch (err) {
63
89
  console.warn('[tron] failed to fetch account energy resources, falling back to worst-case fee', err);
90
+ return fullBurnEstimate;
64
91
  }
65
- const energyPrice = await getEnergyPrice();
66
- const totalSun = energyToBurn * energyPrice;
67
- return totalSun;
68
92
  };
69
93
  //# sourceMappingURL=fee.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fee.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/fee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fee.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/chainSpecific/resolvers/tron/fee.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,11 @@ import { FeeAmountResolver } from '../resolver.js';
6
6
  * `CosmosSpecific.gas` at keysign-payload build time, so every consumer —
7
7
  * including this resolver — agrees on what the chain will charge.
8
8
  *
9
- * When a dynamic `CosmosSpecific.gas_limit` is relayed, the displayed fee is
10
- * scaled by the same rule the signing-inputs resolver applies, so the Network
11
- * Fee row matches what the chain actually charges.
9
+ * `CosmosSpecific.gas` is the fee AMOUNT (proto field 3) and is returned
10
+ * verbatim exactly what the signing-inputs resolver puts in the SignDoc, so
11
+ * the Network Fee row can never drift from what gets signed. A relayed
12
+ * `gas_limit` (field 7) changes the signed gas limit, not the amount; the
13
+ * initiator has already priced `gas` against it.
12
14
  */
13
15
  export declare const getCosmosFeeAmount: FeeAmountResolver;
14
16
  //# sourceMappingURL=cosmos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/cosmos.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAI/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAoBhC,CAAA"}
1
+ {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/cosmos.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAShC,CAAA"}
@@ -1,11 +1,7 @@
1
- import { getCosmosGasLimit } from '@vultisig/core-chain/chains/cosmos/cosmosGasLimitRecord';
2
- import { resolveCosmosGasFee } from '@vultisig/core-chain/chains/cosmos/resolveCosmosGasFee';
3
- import { TransactionType } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
1
+ import { MAYA_SEND_FEE_BASE_UNITS } from '@vultisig/core-chain/chains/cosmos/gas';
4
2
  import { matchRecordUnion } from '@vultisig/lib-utils/matchRecordUnion';
5
3
  import { getCosmosChainSpecific } from '../../signingInputs/resolvers/cosmos/chainSpecific.js';
6
4
  import { getKeysignChain } from '../../utils/getKeysignChain.js';
7
- import { getKeysignCoin } from '../../utils/getKeysignCoin.js';
8
- const mayaGas = 2000000000n;
9
5
  /**
10
6
  * Reads the cosmos fee from `blockchainSpecific`. Initiators are responsible
11
7
  * for writing the canonical fee (e.g. the dapp-supplied value when signing
@@ -13,27 +9,18 @@ const mayaGas = 2000000000n;
13
9
  * `CosmosSpecific.gas` at keysign-payload build time, so every consumer —
14
10
  * including this resolver — agrees on what the chain will charge.
15
11
  *
16
- * When a dynamic `CosmosSpecific.gas_limit` is relayed, the displayed fee is
17
- * scaled by the same rule the signing-inputs resolver applies, so the Network
18
- * Fee row matches what the chain actually charges.
12
+ * `CosmosSpecific.gas` is the fee AMOUNT (proto field 3) and is returned
13
+ * verbatim exactly what the signing-inputs resolver puts in the SignDoc, so
14
+ * the Network Fee row can never drift from what gets signed. A relayed
15
+ * `gas_limit` (field 7) changes the signed gas limit, not the amount; the
16
+ * initiator has already priced `gas` against it.
19
17
  */
20
18
  export const getCosmosFeeAmount = ({ keysignPayload }) => {
21
19
  const chain = getKeysignChain(keysignPayload);
22
20
  const chainSpecific = getCosmosChainSpecific(chain, keysignPayload.blockchainSpecific);
23
21
  return matchRecordUnion(chainSpecific, {
24
- ibcEnabled: ({ gas, gasLimit, transactionType }) => {
25
- const coin = getKeysignCoin(keysignPayload);
26
- const { feeAmount } = resolveCosmosGasFee({
27
- gas,
28
- relayedGasLimit: gasLimit,
29
- staticGasLimit: getCosmosGasLimit(coin),
30
- // COSMOS-02: mirror the signing-inputs resolver's IBC gas multiplier
31
- // so the displayed Network Fee never drifts from what gets signed.
32
- isIbcTransfer: transactionType === TransactionType.IBC_TRANSFER,
33
- });
34
- return feeAmount;
35
- },
36
- vaultBased: value => ('fee' in value ? value.fee : mayaGas),
22
+ ibcEnabled: ({ gas }) => gas,
23
+ vaultBased: value => ('fee' in value ? value.fee : MAYA_SEND_FEE_BASE_UNITS),
37
24
  });
38
25
  };
39
26
  //# sourceMappingURL=cosmos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/cosmos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,qEAAqE,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3D,MAAM,OAAO,GAAG,WAAW,CAAA;AAE3B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,eAAe,CAAW,cAAc,CAAC,CAAA;IAEvD,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAA;IAEtF,OAAO,gBAAgB,CAAC,aAAa,EAAE;QACrC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,cAAc,CAAc,cAAc,CAAC,CAAA;YACxD,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC;gBACxC,GAAG;gBACH,eAAe,EAAE,QAAQ;gBACzB,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC;gBACvC,qEAAqE;gBACrE,mEAAmE;gBACnE,aAAa,EAAE,eAAe,KAAK,eAAe,CAAC,YAAY;aAChE,CAAC,CAAA;YACF,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;KAC5D,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAG7D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,eAAe,CAAW,cAAc,CAAC,CAAA;IAEvD,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAA;IAEtF,OAAO,gBAAgB,CAAC,aAAa,EAAE;QACrC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG;QAC5B,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC;KAC7E,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/tron.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,gBAAgB,EAAE,iBAI9B,CAAA"}
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/tron.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,gBAAgB,EAAE,iBAY9B,CAAA"}
@@ -1,6 +1,15 @@
1
+ import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
1
2
  import { getBlockchainSpecificValue } from '../../chainSpecific/KeysignChainSpecific.js';
2
- export const getTronFeeAmount = ({ keysignPayload }) => {
3
+ import { getTrc20TransferFeeAmount } from '../../chainSpecific/resolvers/tron/fee.js';
4
+ export const getTronFeeAmount = async ({ keysignPayload }) => {
3
5
  const { gasEstimation } = getBlockchainSpecificValue(keysignPayload.blockchainSpecific, 'tronSpecific');
4
- return gasEstimation;
6
+ const coin = shouldBePresent(keysignPayload.coin);
7
+ if (coin.isNativeToken) {
8
+ return gasEstimation;
9
+ }
10
+ return getTrc20TransferFeeAmount({
11
+ feeLimit: gasEstimation,
12
+ fromAddress: coin.address,
13
+ });
5
14
  };
6
15
  //# sourceMappingURL=tron.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAA;AAGrF,MAAM,CAAC,MAAM,gBAAgB,GAAsB,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;IACxE,MAAM,EAAE,aAAa,EAAE,GAAG,0BAA0B,CAAC,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;IAEvG,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA"}
1
+ {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/keysign/fee/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAA;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAGlF,MAAM,CAAC,MAAM,gBAAgB,GAAsB,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;IAC9E,MAAM,EAAE,aAAa,EAAE,GAAG,0BAA0B,CAAC,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;IACvG,MAAM,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,OAAO,yBAAyB,CAAC;QAC/B,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,IAAI,CAAC,OAAO;KAC1B,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cosmos/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAuEtD,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CAudlE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cosmos/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAwFtD,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CAmdlE,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { Chain } from '@vultisig/core-chain/Chain';
2
2
  import { cosmosFeeCoinDenom } from '@vultisig/core-chain/chains/cosmos/cosmosFeeCoinDenom';
3
3
  import { getCosmosGasLimit } from '@vultisig/core-chain/chains/cosmos/cosmosGasLimitRecord';
4
- import { resolveCosmosGasFee } from '@vultisig/core-chain/chains/cosmos/resolveCosmosGasFee';
4
+ import { resolveCosmosGasLimit } from '@vultisig/core-chain/chains/cosmos/resolveCosmosGasLimit';
5
5
  import { getCosmosChainKind } from '@vultisig/core-chain/chains/cosmos/utils/getCosmosChainKind';
6
6
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
7
7
  import { areEqualCoins } from '@vultisig/core-chain/coin/Coin';
8
- import { nativeSwapChainIds } from '@vultisig/core-chain/swap/native/NativeSwapChain';
8
+ import { getNativeSwapChainIdFromDenomPrefix, nativeSwapChainIds, } from '@vultisig/core-chain/swap/native/NativeSwapChain';
9
9
  import { TransactionType } from '@vultisig/core-mpc/types/vultisig/keysign/v1/blockchain_specific_pb';
10
10
  import { fromBase64 } from '@cosmjs/encoding';
11
11
  import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
@@ -33,7 +33,20 @@ const getThorchainDepositAsset = ({ assetCoin, chain, secured, }) => {
33
33
  const chainId = nativeSwapChainIds[assetCoin.chain] ??
34
34
  nativeSwapChainIds[chain];
35
35
  const { contractAddress } = assetCoin;
36
- const rawSymbol = typeof contractAddress === 'string' && contractAddress.trim()
36
+ // The `TICKER-CONTRACT` symbol form belongs to secured-asset withdrawals only,
37
+ // where `assetCoin` is the L1 coin being pulled off THORChain and
38
+ // `contractAddress` is its L1 token contract (`USDC` + `0xa0b8…` ->
39
+ // `USDC-0XA0B8…`, matching THORNode's `ETH.USDC-0XA0B8…`).
40
+ //
41
+ // For a plain swap the contract address is the THORChain bank denom
42
+ // (`tcy`, `x/ruji`), and appending it produced `TCY-tcy` — an asset THORNode
43
+ // has no pool for, and a pre-image hash that no longer matched the one iOS
44
+ // (`thorchain.swift` getSwapPreSignedInputData) and Android
45
+ // (`ThorchainSwapHelper.getSwapPreSignedInputData`) derive from the same
46
+ // payload. A co-signing joiner then polled a `message_id` the initiator never
47
+ // uploaded and died on `404 Timed out while waiting for setup message`.
48
+ // See vultisig/vultisig-windows#4464.
49
+ const rawSymbol = secured && typeof contractAddress === 'string' && contractAddress.trim()
37
50
  ? `${assetCoin.ticker}-${contractAddress}`
38
51
  : assetCoin.ticker;
39
52
  return TW.Cosmos.Proto.THORChainAsset.create({
@@ -58,9 +71,13 @@ const isSecuredAssetSwapCoin = (assetCoin) => assetCoin.chain === Chain.THORChai
58
71
  // secured asset referenced by the server-issued swap memo (`=:ETH-USDC:…`).
59
72
  const getSecuredAssetDepositAsset = (assetCoin) => {
60
73
  const [chainPrefix, ...symbolParts] = assetCoin.contractAddress.split('-');
74
+ const chainId = getNativeSwapChainIdFromDenomPrefix(chainPrefix);
75
+ if (!chainId) {
76
+ throw new Error(`Unsupported secured asset chain prefix: "${chainPrefix}"`);
77
+ }
61
78
  const symbol = symbolParts.join('-');
62
79
  return TW.Cosmos.Proto.THORChainAsset.create({
63
- chain: chainPrefix.toUpperCase(),
80
+ chain: chainId,
64
81
  symbol: (symbol || assetCoin.ticker).toUpperCase(),
65
82
  ticker: assetCoin.ticker.toUpperCase().replace(/X\//g, ''),
66
83
  synth: false,
@@ -419,22 +436,18 @@ export const getCosmosSigningInputs = ({ keysignPayload, walletCore }) => {
419
436
  return amounts;
420
437
  };
421
438
  const ibcSpecific = chainKind === 'ibcEnabled' ? getRecordUnionValue(chainSpecific, 'ibcEnabled') : undefined;
422
- const staticGasLimit = getCosmosGasLimit(coin);
423
- const relayedGasLimit = ibcSpecific?.gasLimit;
424
- // COSMOS-02: an IBC MsgTransfer needs more gas headroom than the flat
425
- // per-chain limit (calibrated for MsgSend) see resolveCosmosGasFee's
426
- // IBC_GAS_MULTIPLIER. Scoped to IBC_TRANSFER only so plain sends and
427
- // wasm executes on ibc-enabled chains keep the calibrated flat fee.
428
- const isIbcTransfer = ibcSpecific?.transactionType === TransactionType.IBC_TRANSFER;
429
- const { resolvedGasLimit, feeAmount } = resolveCosmosGasFee({
430
- gas: ibcSpecific?.gas ?? 0n,
431
- relayedGasLimit,
432
- staticGasLimit,
433
- isIbcTransfer,
439
+ // `CosmosSpecific.gas` (proto field 3) IS the fee amount — signed verbatim,
440
+ // never re-derived here. The initiator prices it against the gas limit it
441
+ // relays in field 7 (`getCosmosChainSpecific`), so any headroom is already
442
+ // baked in. Doing arithmetic on it in this read path is what diverged the
443
+ // SignDoc from iOS / Android see resolveCosmosGasLimit.ts.
444
+ const resolvedGasLimit = resolveCosmosGasLimit({
445
+ relayedGasLimit: ibcSpecific?.gasLimit,
446
+ staticGasLimit: getCosmosGasLimit(coin),
434
447
  });
435
448
  return TW.Cosmos.Proto.Fee.create({
436
449
  gas: Long.fromBigInt(resolvedGasLimit),
437
- amounts: getFeeAmounts(feeAmount),
450
+ amounts: getFeeAmounts(ibcSpecific?.gas ?? 0n),
438
451
  });
439
452
  };
440
453
  const { accountNumber, sequence } = getRecordUnionValue(chainSpecific);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cosmos/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/cosmos/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
+ import { WalletCore } from '@trustwallet/wallet-core';
3
+ import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
4
+ import { KeysignLibType } from '../../mpcLib.js';
5
+ export type BuildLimitSwapKeysignPayloadInput = {
6
+ fromCoin: AccountCoin;
7
+ toCoin: AccountCoin;
8
+ /** Source amount in the coin's native smallest units. */
9
+ amount: bigint;
10
+ /** The `=<` memo from `buildLimitSwapMemo`. */
11
+ memo: string;
12
+ vaultId: string;
13
+ localPartyId: string;
14
+ fromPublicKey: PublicKey;
15
+ toPublicKey: PublicKey;
16
+ libType: KeysignLibType;
17
+ walletCore: WalletCore;
18
+ /**
19
+ * Optional cross-check of the caller's own "you receive" figure, in
20
+ * THORChain's 1e8 fixed point — the same scale the memo's LIM uses, and what
21
+ * `getNativeSwapDecimals` formats a THORChain swap's output with.
22
+ *
23
+ * Not used to build the payload: the displayed minimum is always taken from
24
+ * the memo's LIM, so it cannot disagree with the order being signed. Supplying
25
+ * it asserts the caller's display math agrees with the memo, which catches a
26
+ * caller that rescaled to the target coin's own decimals — the LIM would still
27
+ * sign correctly while the co-signer saw a wrong figure.
28
+ */
29
+ expectedToAmount?: bigint;
30
+ /** Epoch milliseconds; parameterised so the router expiry is deterministic under test. */
31
+ now?: number;
32
+ };
33
+ /**
34
+ * Build the `KeysignPayload` for a THORChain limit order.
35
+ *
36
+ * The limit-ness always lives in the memo (`=<` vs the market `=>`); how that
37
+ * memo reaches the chain depends on the source asset:
38
+ *
39
+ * - **Native RUNE** — `MsgDeposit` on THORChain itself. No inbound vault and no
40
+ * real destination, so `toAddress` carries the signer's own address as a
41
+ * placeholder (the Cosmos signer keys off `isDeposit`, not `toAddress`).
42
+ * - **Native gas asset** (BTC/ETH/AVAX/…) — a plain transfer to the Asgard
43
+ * inbound vault with the memo in tx `data` / `OP_RETURN`. No swap payload.
44
+ * - **ERC20** — the router's `depositWithExpiry(vault, asset, amount, memo,
45
+ * expiry)` call, which needs `approve(router, amount)` first. Both ride one
46
+ * ceremony, mirroring the market ERC20 THORChain swap. A token source signed
47
+ * *without* a swap payload would fall through to a plain ERC20 transfer,
48
+ * dropping the memo and stranding the tokens on the router — so it must carry
49
+ * one.
50
+ *
51
+ * The swap payload is deliberately NOT attached to the first two branches, even
52
+ * though it would give co-signers the market path's swap review for free
53
+ * (sdk#1611). It is not display metadata: every signing-input resolver re-routes
54
+ * on its presence — UTXO takes both amount and destination from it, EVM and Tron
55
+ * take the destination from `vaultAddress`, and the Cosmos resolver drops the
56
+ * tx-body memo (`txMemo: swapPayload ? '' : memo`). Attaching one would change
57
+ * signed bytes on a working path to improve a display, and for RUNE it would
58
+ * additionally make `assertNativeSwapReadyForBroadcast` resolve a `THOR` inbound
59
+ * row that THORChain's own inbound list does not contain, failing the broadcast
60
+ * guard outright. Joining devices get the order terms from
61
+ * `getKeysignLimitSwapOrder` instead, which reads the memo that every branch
62
+ * already carries — and which, being the string THORChain executes, cannot
63
+ * disagree with what is signed.
64
+ *
65
+ * Fund-safety gates, all fail-closed:
66
+ * - The `EnableAdvSwapQueue` mimir is re-checked here, at sign time. Placement
67
+ * was already gated on it, but it can flip while the user sits on Verify, and
68
+ * a `=<` order on a network with the queue disabled can execute as an
69
+ * unprotected market swap.
70
+ * - The memo must actually be a limit memo.
71
+ * - RUNE deposits are blocked on THORChain's global trading pause (they bypass
72
+ * the per-chain inbound halt filter entirely), including when the inbound list
73
+ * is unverifiable — and on a halted destination chain: with no swap payload
74
+ * attached, the broadcast guard's destination-leg re-check never runs for
75
+ * them, so sign time is their only destination gate.
76
+ * - External sources must resolve a live, non-halted, non-paused inbound row,
77
+ * and the destination is taken from that same live view rather than a cache.
78
+ *
79
+ * Gas: unlike iOS, no EVM gas-limit override is applied. iOS pins a native-EVM
80
+ * limit deposit to 120000 to match its own market path; here both paths put the
81
+ * memo on `keysignPayload.memo` and neither sets a general swap payload, so both
82
+ * already floor at `deriveEvmGasLimit`'s 600000 data-tx limit. Forcing 120000
83
+ * would make the limit path diverge from the market path and risk under-gassing.
84
+ */
85
+ export declare const buildLimitSwapKeysignPayload: ({ fromCoin, toCoin, amount, memo, vaultId, localPartyId, fromPublicKey, toPublicKey, libType, walletCore, expectedToAmount, now, }: BuildLimitSwapKeysignPayloadInput) => Promise<import("../../types/vultisig/keysign/v1/keysign_message_pb.js").KeysignPayload>;
86
+ //# sourceMappingURL=buildLimitSwapKeysignPayload.d.ts.map