@vultisig/core-chain 2.39.0 → 4.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.
- package/CHANGELOG.md +35 -0
- package/dist/chains/cardano/cip30/cardanoTxBodyHash.js +1 -1
- package/dist/chains/cardano/cip30/cardanoTxBodyHash.js.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/computeClaimHashes.js +2 -2
- package/dist/chains/cosmos/qbtc/claim/computeClaimHashes.js.map +1 -1
- package/dist/chains/solana/kamino/config.d.ts +11 -2
- package/dist/chains/solana/kamino/config.d.ts.map +1 -1
- package/dist/chains/solana/kamino/config.js +12 -2
- package/dist/chains/solana/kamino/config.js.map +1 -1
- package/dist/chains/sui/sign.js +1 -1
- package/dist/chains/sui/sign.js.map +1 -1
- package/dist/coin/balance/resolvers/bittensor.js +2 -2
- package/dist/coin/balance/resolvers/bittensor.js.map +1 -1
- package/dist/coin/balance/resolvers/polkadot.js +2 -2
- package/dist/coin/balance/resolvers/polkadot.js.map +1 -1
- package/dist/coin/balance/resolvers/ripple.d.ts +13 -0
- package/dist/coin/balance/resolvers/ripple.d.ts.map +1 -1
- package/dist/coin/balance/resolvers/ripple.js +14 -6
- package/dist/coin/balance/resolvers/ripple.js.map +1 -1
- package/dist/coin/find/resolvers/evm/index.d.ts.map +1 -1
- package/dist/coin/find/resolvers/evm/index.js +14 -6
- package/dist/coin/find/resolvers/evm/index.js.map +1 -1
- package/dist/coin/knownTokens/index.d.ts.map +1 -1
- package/dist/coin/knownTokens/index.js +11 -0
- package/dist/coin/knownTokens/index.js.map +1 -1
- package/dist/coin/price/evm/getErc20Prices.d.ts.map +1 -1
- package/dist/coin/price/evm/getErc20Prices.js +28 -1
- package/dist/coin/price/evm/getErc20Prices.js.map +1 -1
- package/dist/coin/price/evm/getEvmVaultTokenPrices.d.ts +16 -0
- package/dist/coin/price/evm/getEvmVaultTokenPrices.d.ts.map +1 -0
- package/dist/coin/price/evm/getEvmVaultTokenPrices.js +67 -0
- package/dist/coin/price/evm/getEvmVaultTokenPrices.js.map +1 -0
- package/dist/coin/price/evm/getLifiTokenPrices.d.ts +15 -0
- package/dist/coin/price/evm/getLifiTokenPrices.d.ts.map +1 -0
- package/dist/coin/price/evm/getLifiTokenPrices.js +28 -0
- package/dist/coin/price/evm/getLifiTokenPrices.js.map +1 -0
- package/dist/coin/price/getUsdToFiatRate.d.ts +8 -0
- package/dist/coin/price/getUsdToFiatRate.d.ts.map +1 -0
- package/dist/coin/price/getUsdToFiatRate.js +20 -0
- package/dist/coin/price/getUsdToFiatRate.js.map +1 -0
- package/dist/publicKey/address/cardano.js +1 -1
- package/dist/publicKey/address/cardano.js.map +1 -1
- package/dist/publicKey/address/deriveQbtcAddress.js +2 -2
- package/dist/publicKey/address/deriveQbtcAddress.js.map +1 -1
- package/dist/swap/quote/getSwapQuoteSafetyFingerprint.js +2 -2
- package/dist/swap/quote/getSwapQuoteSafetyFingerprint.js.map +1 -1
- package/dist/tx/broadcast/index.d.ts +2 -0
- package/dist/tx/broadcast/index.d.ts.map +1 -1
- package/dist/tx/broadcast/index.js +34 -3
- package/dist/tx/broadcast/index.js.map +1 -1
- package/dist/tx/broadcast/resolver.d.ts +35 -1
- package/dist/tx/broadcast/resolver.d.ts.map +1 -1
- package/dist/tx/broadcast/resolver.js +42 -1
- package/dist/tx/broadcast/resolver.js.map +1 -1
- package/dist/tx/broadcast/resolvers/bittensor.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/bittensor.js +17 -6
- package/dist/tx/broadcast/resolvers/bittensor.js.map +1 -1
- package/dist/tx/broadcast/resolvers/cardano.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/cardano.js +26 -16
- package/dist/tx/broadcast/resolvers/cardano.js.map +1 -1
- package/dist/tx/broadcast/resolvers/cosmos.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/cosmos.js +33 -31
- package/dist/tx/broadcast/resolvers/cosmos.js.map +1 -1
- package/dist/tx/broadcast/resolvers/evm.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/evm.js +21 -9
- package/dist/tx/broadcast/resolvers/evm.js.map +1 -1
- package/dist/tx/broadcast/resolvers/polkadot.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/polkadot.js +23 -4
- package/dist/tx/broadcast/resolvers/polkadot.js.map +1 -1
- package/dist/tx/broadcast/resolvers/qbtc.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/qbtc.js +69 -52
- package/dist/tx/broadcast/resolvers/qbtc.js.map +1 -1
- package/dist/tx/broadcast/resolvers/ripple.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/ripple.js +24 -9
- package/dist/tx/broadcast/resolvers/ripple.js.map +1 -1
- package/dist/tx/broadcast/resolvers/solana.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/solana.js +19 -10
- package/dist/tx/broadcast/resolvers/solana.js.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.js +20 -14
- package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
- package/dist/tx/broadcast/resolvers/ton.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/ton.js +16 -5
- package/dist/tx/broadcast/resolvers/ton.js.map +1 -1
- package/dist/tx/broadcast/resolvers/tron.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/tron.js +15 -6
- package/dist/tx/broadcast/resolvers/tron.js.map +1 -1
- package/dist/tx/broadcast/resolvers/utxo.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/utxo.js +27 -17
- package/dist/tx/broadcast/resolvers/utxo.js.map +1 -1
- package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
- package/dist/tx/broadcast/transientRetry.js +4 -2
- package/dist/tx/broadcast/transientRetry.js.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.js +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
- package/dist/tx/hash/resolvers/cardano.js +1 -1
- package/dist/tx/hash/resolvers/cardano.js.map +1 -1
- package/package.json +18 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { fromBase64 } from '@mysten/sui/utils';
|
|
2
2
|
import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
|
|
3
|
-
import { describeSuiExecutionFailure, isSuiExecutionSuccess, } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
3
|
+
import { describeSuiExecutionFailure, getSuiResultTransaction, isSuiExecutionSuccess, } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
4
4
|
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
5
|
+
import { broadcastAccepted, broadcastFailed, isRetryableBroadcastCause } from '../resolver.js';
|
|
5
6
|
import { DeliverTxFailedError } from '../transientRetry.js';
|
|
6
7
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
7
8
|
export const assertSuiTxSucceeded = (result) => {
|
|
@@ -10,21 +11,21 @@ export const assertSuiTxSucceeded = (result) => {
|
|
|
10
11
|
throw new DeliverTxFailedError(`Sui transaction failed on-chain: ${describeSuiExecutionFailure(result)}`);
|
|
11
12
|
};
|
|
12
13
|
export const broadcastSuiTx = async ({ chain, tx }) => {
|
|
13
|
-
const
|
|
14
|
+
const result = await attempt(Promise.resolve().then(() => getSuiClient().executeTransaction({
|
|
14
15
|
transaction: fromBase64(tx.unsignedTx),
|
|
15
16
|
signatures: [tx.signature],
|
|
16
|
-
// sdk#1398: without requesting effects, execution resolves with a digest even when the tx
|
|
17
|
-
// executed but ABORTED (MoveAbort / InsufficientGas) — an RPC-level success that is NOT
|
|
18
|
-
// execution success. Ask for effects so we can tell the two apart.
|
|
19
17
|
include: { effects: true },
|
|
20
|
-
}));
|
|
21
|
-
if (error) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
})));
|
|
19
|
+
if ('error' in result) {
|
|
20
|
+
const { error } = result;
|
|
21
|
+
try {
|
|
22
|
+
return broadcastAccepted(await verifyBroadcastByHash({ chain, tx, error }));
|
|
23
|
+
}
|
|
24
|
+
catch (cause) {
|
|
25
|
+
return broadcastFailed(cause, isRetryableBroadcastCause(error));
|
|
26
|
+
}
|
|
27
27
|
}
|
|
28
|
+
const response = result.data;
|
|
28
29
|
// Mirror the status resolver (status/resolvers/sui.ts): ONLY an explicit `$kind: 'Transaction'`
|
|
29
30
|
// with `status.success === true` is execution success. A `FailedTransaction` (MoveAbort /
|
|
30
31
|
// InsufficientGas) — or a missing/unknown status — must NOT be returned as a digest-carrying
|
|
@@ -35,7 +36,12 @@ export const broadcastSuiTx = async ({ chain, tx }) => {
|
|
|
35
36
|
// `instanceof` BEFORE its message-regex runs: a Sui abort error string routinely contains
|
|
36
37
|
// "aborted"/"timed out", which the transient patterns match — a bare Error would be misclassified
|
|
37
38
|
// as transient and the aborted tx re-sent by withTransientBroadcastRetry.
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
try {
|
|
40
|
+
assertSuiTxSucceeded(response);
|
|
41
|
+
}
|
|
42
|
+
catch (cause) {
|
|
43
|
+
return broadcastFailed(cause, false, { provider: response });
|
|
44
|
+
}
|
|
45
|
+
return broadcastAccepted(getSuiResultTransaction(response)?.digest, { provider: response });
|
|
40
46
|
};
|
|
41
47
|
//# sourceMappingURL=sui.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,GAEtB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAuB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAmD,EAAQ,EAAE;IAChG,IAAI,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAM;IAEzC,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC3G,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC1B,YAAY,EAAE,CAAC,kBAAkB,CAAC;QAChC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;QACtC,UAAU,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC1B,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC,CACH,CACF,CAAA;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACxB,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;IAE5B,gGAAgG;IAChG,0FAA0F;IAC1F,6FAA6F;IAC7F,gGAAgG;IAChG,+FAA+F;IAC/F,EAAE;IACF,mGAAmG;IACnG,0FAA0F;IAC1F,kGAAkG;IAClG,0EAA0E;IAC1E,IAAI,CAAC;QACH,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC7F,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAMvD,OAAO,
|
|
1
|
+
{"version":3,"file":"ton.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAMvD,OAAO,EAAsC,mBAAmB,EAA6B,MAAM,aAAa,CAAA;AAGhH,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CA2B9D,CAAA"}
|
|
@@ -2,18 +2,29 @@ import { rootApiUrl } from '@vultisig/core-config';
|
|
|
2
2
|
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
3
3
|
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
4
4
|
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
5
|
+
import { broadcastAccepted, broadcastFailed, isRetryableBroadcastCause } from '../resolver.js';
|
|
5
6
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
6
7
|
export const broadcastTonTx = async ({ chain, tx }) => {
|
|
7
8
|
const url = `${rootApiUrl}/ton/v2/sendBocReturnHash`;
|
|
8
|
-
const
|
|
9
|
+
const result = await attempt(queryUrl(url, {
|
|
9
10
|
body: { boc: tx.encoded },
|
|
10
11
|
}));
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const hash = result.data?.result?.hash;
|
|
13
|
+
if (hash) {
|
|
14
|
+
return broadcastAccepted(hash);
|
|
13
15
|
}
|
|
16
|
+
const responseMissingHash = result.data !== undefined;
|
|
17
|
+
const error = responseMissingHash
|
|
18
|
+
? new Error('TON broadcast failed: missing transaction hash in response')
|
|
19
|
+
: result.error;
|
|
14
20
|
if (isInError(error, 'duplicate message', 'duplicate msg_seqno')) {
|
|
15
|
-
return;
|
|
21
|
+
return broadcastAccepted();
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
return broadcastAccepted(await verifyBroadcastByHash({ chain, tx, error }));
|
|
25
|
+
}
|
|
26
|
+
catch (cause) {
|
|
27
|
+
return broadcastFailed(cause, responseMissingHash ? false : isRetryableBroadcastCause(error));
|
|
16
28
|
}
|
|
17
|
-
await verifyBroadcastByHash({ chain, tx, error });
|
|
18
29
|
};
|
|
19
30
|
//# sourceMappingURL=ton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ton.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"ton.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/ton.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAuB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IACzF,MAAM,GAAG,GAAG,GAAG,UAAU,2BAA2B,CAAA;IAEpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,QAAQ,CAAiC,GAAG,EAAE;QAC5C,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE;KAC1B,CAAC,CACH,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAA;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAA;IACrD,MAAM,KAAK,GAAG,mBAAmB;QAC/B,CAAC,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;IAChB,IAAI,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,EAAE,CAAC;QACjE,OAAO,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/F,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAIvD,OAAO,
|
|
1
|
+
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAIvD,OAAO,EAAsC,mBAAmB,EAA6B,MAAM,aAAa,CAAA;AAGhH,eAAO,MAAM,eAAe,EAAE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CA6BhE,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
2
2
|
import { tronRpcUrl } from '../../../chains/tron/config.js';
|
|
3
|
+
import { broadcastAccepted, broadcastFailed, isRetryableBroadcastCause } from '../resolver.js';
|
|
3
4
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
4
5
|
export const broadcastTronTx = async ({ chain, tx }) => {
|
|
5
6
|
try {
|
|
@@ -10,15 +11,23 @@ export const broadcastTronTx = async ({ chain, tx }) => {
|
|
|
10
11
|
const msg = result.message
|
|
11
12
|
? Buffer.from(result.message, 'hex').toString('utf8')
|
|
12
13
|
: (result.code ?? 'Unknown error');
|
|
13
|
-
|
|
14
|
+
const error = new Error(`Tron broadcast failed: ${msg}`);
|
|
15
|
+
try {
|
|
16
|
+
return broadcastAccepted(await verifyBroadcastByHash({ chain, tx, error }));
|
|
17
|
+
}
|
|
18
|
+
catch (cause) {
|
|
19
|
+
return broadcastFailed(cause, false);
|
|
20
|
+
}
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
// or void) rather than the full RPC envelope. The SDK's BroadcastService discards this return and
|
|
17
|
-
// derives the hash itself, so no consumer reads the object — this is a shape-consistency fix.
|
|
18
|
-
return result.txid;
|
|
22
|
+
return broadcastAccepted(result.txid);
|
|
19
23
|
}
|
|
20
24
|
catch (error) {
|
|
21
|
-
|
|
25
|
+
try {
|
|
26
|
+
return broadcastAccepted(await verifyBroadcastByHash({ chain, tx, error }));
|
|
27
|
+
}
|
|
28
|
+
catch (cause) {
|
|
29
|
+
return broadcastFailed(cause, isRetryableBroadcastCause(error));
|
|
30
|
+
}
|
|
22
31
|
}
|
|
23
32
|
};
|
|
24
33
|
//# sourceMappingURL=tron.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/tron.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/tron.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAuB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAyC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC3F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,GAAG,UAAU,8BAA8B,EAC3C;YACE,IAAI,EAAE,EAAE,CAAC,IAAI;SACd,CACF,CAAA;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO;gBACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrD,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,CAAC,CAAA;YACpC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;YACxD,IAAI,CAAC;gBACH,OAAO,iBAAiB,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAC7E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAOlF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAOlF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAsC,mBAAmB,EAA6B,MAAM,aAAa,CAAA;AAGhH,KAAK,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAetF,eAAO,MAAM,eAAe,EAAE,mBAAmB,CAAC,cAAc,CA8B/D,CAAA;AAQD,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,EAAE,IAAI,kBAAkB,KAAG,UAKlF,CAAA"}
|
|
@@ -3,26 +3,36 @@ import { extractErrorMsg } from '@vultisig/lib-utils/error/extractErrorMsg';
|
|
|
3
3
|
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
4
4
|
import { getChainKind } from '../../../ChainKind.js';
|
|
5
5
|
import { getBlockchairBaseUrl } from '../../../chains/utxo/client/getBlockchairBaseUrl.js';
|
|
6
|
+
import { broadcastAccepted, broadcastFailed, isRetryableBroadcastCause } from '../resolver.js';
|
|
6
7
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
7
8
|
export const broadcastUtxoTx = async ({ chain, tx }) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
try {
|
|
10
|
+
const url = `${getBlockchairBaseUrl(chain)}/push/transaction`;
|
|
11
|
+
const encodedBytes = selectEncodedBytes(chain, tx);
|
|
12
|
+
const response = await queryUrl(url, {
|
|
13
|
+
body: {
|
|
14
|
+
data: Buffer.from(encodedBytes).toString('hex'),
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (response.data) {
|
|
18
|
+
return broadcastAccepted(response.data.transaction_hash);
|
|
19
|
+
}
|
|
20
|
+
const error = 'context' in response ? response.context.error : extractErrorMsg(response);
|
|
21
|
+
// Any submit error past this point is ambiguous — it could be a benign MPC-race duplicate (another
|
|
22
|
+
// device already broadcast the same signed tx) OR a genuine failure (e.g. BadInputsUTxO: spent/invalid
|
|
23
|
+
// inputs). String-matching alone can't tell them apart, so verify against the real chain: the hash
|
|
24
|
+
// either resolves on-chain (the race case — success) or it doesn't (the real failure — returns it).
|
|
25
|
+
const broadcastError = new Error(`Failed to broadcast transaction: ${extractErrorMsg(error)}`);
|
|
26
|
+
try {
|
|
27
|
+
return broadcastAccepted(await verifyBroadcastByHash({ chain, tx, error: broadcastError }));
|
|
28
|
+
}
|
|
29
|
+
catch (cause) {
|
|
30
|
+
return broadcastFailed(cause, isRetryableBroadcastCause(broadcastError));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (cause) {
|
|
34
|
+
return broadcastFailed(cause, isRetryableBroadcastCause(cause));
|
|
17
35
|
}
|
|
18
|
-
const error = 'context' in response ? response.context.error : extractErrorMsg(response);
|
|
19
|
-
// Any submit error past this point is ambiguous — it could be a benign MPC-race duplicate (another
|
|
20
|
-
// device already broadcast the same signed tx) OR a genuine failure (e.g. BadInputsUTxO: spent/invalid
|
|
21
|
-
// inputs). String-matching alone can't tell them apart, so verify against the real chain: the hash
|
|
22
|
-
// either resolves on-chain (the race case — success) or it doesn't (the real failure — rethrows).
|
|
23
|
-
const broadcastError = new Error(`Failed to broadcast transaction: ${extractErrorMsg(error)}`);
|
|
24
|
-
await verifyBroadcastByHash({ chain, tx, error: broadcastError });
|
|
25
|
-
return null;
|
|
26
36
|
};
|
|
27
37
|
const hasSigningResultV2 = (tx) => tx != null && typeof tx === 'object' && 'signingResultV2' in tx && !!tx.signingResultV2;
|
|
28
38
|
export const selectEncodedBytes = (chain, tx) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/utxo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;
|
|
1
|
+
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/utxo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAEvF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAuB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAiBhE,MAAM,CAAC,MAAM,eAAe,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1F,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,mBAAmB,CAAA;QAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAwB,CAAC,CAAA;QAExE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAA8B,GAAG,EAAE;YAChE,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aAChD;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAExF,mGAAmG;QACnG,uGAAuG;QACvG,mGAAmG;QACnG,oGAAoG;QACpG,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,oCAAoC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC9F,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,EAAsB,EAGtB,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,iBAAiB,IAAI,EAAE,IAAI,CAAC,CAAE,EAAU,CAAC,eAAe,CAAA;AAErG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAqB,EAAE,EAAsB,EAAc,EAAE;IAC9F,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC3F,OAAO,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transientRetry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"transientRetry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAyE1C,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OA2C1D,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAU,CAAC,EAAE,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB3F,CAAA"}
|
|
@@ -63,8 +63,10 @@ const decodeTransportMessage = (message) => {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
const transientMessagePatterns = [
|
|
66
|
+
/\b(?:ECONNRESET|ECONNREFUSED|ECONNABORTED|ETIMEDOUT|ENETRESET|ENETUNREACH|EHOSTUNREACH|EAI_AGAIN)\b/i,
|
|
66
67
|
/\bfetch failed\b/i,
|
|
67
68
|
/\bfailed to fetch\b/i,
|
|
69
|
+
/\bload failed\b/i,
|
|
68
70
|
/\bnetwork error\b/i,
|
|
69
71
|
/\bnetwork request failed\b/i,
|
|
70
72
|
/\brequest timed out\b/i,
|
|
@@ -99,7 +101,7 @@ export const isTransientBroadcastError = (error) => {
|
|
|
99
101
|
return false;
|
|
100
102
|
}
|
|
101
103
|
if (current instanceof HttpResponseError) {
|
|
102
|
-
return current.status === 429 || (current.status >= 500 && current.status <= 599);
|
|
104
|
+
return current.status === 408 || current.status === 429 || (current.status >= 500 && current.status <= 599);
|
|
103
105
|
}
|
|
104
106
|
if (typeof current === 'object') {
|
|
105
107
|
const code = current.code;
|
|
@@ -107,7 +109,7 @@ export const isTransientBroadcastError = (error) => {
|
|
|
107
109
|
return true;
|
|
108
110
|
}
|
|
109
111
|
const status = current.status;
|
|
110
|
-
if (typeof status === 'number' && (status === 429 || (status >= 500 && status <= 599))) {
|
|
112
|
+
if (typeof status === 'number' && (status === 408 || status === 429 || (status >= 500 && status <= 599))) {
|
|
111
113
|
return true;
|
|
112
114
|
}
|
|
113
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transientRetry.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAE/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAC1C,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAErC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,WAAW;IACX,cAAc;IACd,YAAY;IACZ,cAAc;IACd,cAAc;IACd,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,WAAW;IACX,WAAW;CACZ,CAAC,CAAA;AAEF,8EAA8E;AAC9E,kFAAkF;AAClF,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,oFAAoF;AACpF,qFAAqF;AACrF,qEAAqE;AACrE,EAAE;AACF,uFAAuF;AACvF,sFAAsF;AACtF,kDAAkD;AAClD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CAAA;AAEjG,kFAAkF;AAClF,mFAAmF;AACnF,uFAAuF;AACvF,gFAAgF;AAChF,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE;IACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IAC1C,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG;IAC/B,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,6BAA6B;IAC7B,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IACnB,qBAAqB;IACrB,0CAA0C;IAC1C,yBAAyB;IACzB,wBAAwB;IACxB,kBAAkB;IAClB,0BAA0B;IAC1B,sBAAsB;CACvB,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;AAE5F,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAW,EAAE;IAC3C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC3D,OAAQ,KAA6B,CAAC,KAAK,CAAA;IAC7C,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAW,EAAE;IACnE,IAAI,OAAO,GAAY,KAAK,CAAA;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAA;IAE/B,OAAO,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAEjB,IAAI,OAAO,YAAY,2BAA2B,EAAE,CAAC;YACnD,yEAAyE;YACzE,sEAAsE;YACtE,OAAO,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAA;QACpC,CAAC;QAED,IAAI,OAAO,YAAY,oBAAoB,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"transientRetry.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,6 @@ export declare const broadcastVerificationBaseDelayMs = 500;
|
|
|
28
28
|
* before the original error is rethrown. Verification is a safety net, never
|
|
29
29
|
* a new failure mode.
|
|
30
30
|
*/
|
|
31
|
-
export declare const verifyBroadcastByHash: <T extends Chain>({ chain, tx, error }: VerifyInput<T>) => Promise<
|
|
31
|
+
export declare const verifyBroadcastByHash: <T extends Chain>({ chain, tx, error }: VerifyInput<T>) => Promise<string>;
|
|
32
32
|
export {};
|
|
33
33
|
//# sourceMappingURL=verifyBroadcastByHash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI;IAClC,KAAK,EAAE,CAAC,CAAA;IACR,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,gCAAgC,MAAM,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI;IAClC,KAAK,EAAE,CAAC,CAAA;IACR,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,gCAAgC,MAAM,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,MAAM,CAoCjH,CAAA"}
|
|
@@ -43,7 +43,7 @@ export const verifyBroadcastByHash = async ({ chain, tx, error }) => {
|
|
|
43
43
|
if (result) {
|
|
44
44
|
const isKnownPending = result.status === 'pending' && result.isKnown !== false;
|
|
45
45
|
if (result.status === 'success' || isKnownPending) {
|
|
46
|
-
return;
|
|
46
|
+
return hash;
|
|
47
47
|
}
|
|
48
48
|
if (result.status === 'error') {
|
|
49
49
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAIjD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAkB,
|
|
1
|
+
{"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAIjD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAkB,EAAmB,EAAE;IACpH,IAAI,IAAY,CAAA;IAEhB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,CAAA;IACb,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,gCAAgC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7E,IAAI,MAA2D,CAAA;QAE/D,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;YAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAA;YACb,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAK;YACP,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,gCAAgC,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC,gCAAgC,GAAG,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { blake2b } from '@noble/hashes/
|
|
1
|
+
import { blake2b } from '@noble/hashes/blake2.js';
|
|
2
2
|
import { cardanoCborEncoder } from '@vultisig/core-chain/chains/cardano/cip30/cborEncoder';
|
|
3
3
|
export const getCardanoTxHash = tx => {
|
|
4
4
|
// Prefer pre-computed txId (set by compileTx to avoid cbor-x
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAA;AAI1F,MAAM,CAAC,MAAM,gBAAgB,GAAuC,EAAE,CAAC,EAAE;IACvE,6DAA6D;IAC7D,oDAAoD;IACpD,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,wEAAwE;IACxE,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IAE/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5C,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -1315,6 +1315,16 @@
|
|
|
1315
1315
|
"import": "./dist/coin/price/evm/getErc20Prices.js",
|
|
1316
1316
|
"default": "./dist/coin/price/evm/getErc20Prices.js"
|
|
1317
1317
|
},
|
|
1318
|
+
"./coin/price/evm/getEvmVaultTokenPrices": {
|
|
1319
|
+
"types": "./dist/coin/price/evm/getEvmVaultTokenPrices.d.ts",
|
|
1320
|
+
"import": "./dist/coin/price/evm/getEvmVaultTokenPrices.js",
|
|
1321
|
+
"default": "./dist/coin/price/evm/getEvmVaultTokenPrices.js"
|
|
1322
|
+
},
|
|
1323
|
+
"./coin/price/evm/getLifiTokenPrices": {
|
|
1324
|
+
"types": "./dist/coin/price/evm/getLifiTokenPrices.d.ts",
|
|
1325
|
+
"import": "./dist/coin/price/evm/getLifiTokenPrices.js",
|
|
1326
|
+
"default": "./dist/coin/price/evm/getLifiTokenPrices.js"
|
|
1327
|
+
},
|
|
1318
1328
|
"./coin/price/getCoinPrices": {
|
|
1319
1329
|
"types": "./dist/coin/price/getCoinPrices.d.ts",
|
|
1320
1330
|
"import": "./dist/coin/price/getCoinPrices.js",
|
|
@@ -1325,6 +1335,11 @@
|
|
|
1325
1335
|
"import": "./dist/coin/price/getCoinPricesWithChange.js",
|
|
1326
1336
|
"default": "./dist/coin/price/getCoinPricesWithChange.js"
|
|
1327
1337
|
},
|
|
1338
|
+
"./coin/price/getUsdToFiatRate": {
|
|
1339
|
+
"types": "./dist/coin/price/getUsdToFiatRate.d.ts",
|
|
1340
|
+
"import": "./dist/coin/price/getUsdToFiatRate.js",
|
|
1341
|
+
"default": "./dist/coin/price/getUsdToFiatRate.js"
|
|
1342
|
+
},
|
|
1328
1343
|
"./coin/price/queryCoingeickoPrices": {
|
|
1329
1344
|
"types": "./dist/coin/price/queryCoingeickoPrices.d.ts",
|
|
1330
1345
|
"import": "./dist/coin/price/queryCoingeickoPrices.js",
|
|
@@ -2366,7 +2381,7 @@
|
|
|
2366
2381
|
"@cosmjs/stargate": "^0.39.0",
|
|
2367
2382
|
"@lifi/sdk": "^4.1.0",
|
|
2368
2383
|
"@mysten/sui": "^2.22.1",
|
|
2369
|
-
"@noble/hashes": "^
|
|
2384
|
+
"@noble/hashes": "^2.2.0",
|
|
2370
2385
|
"@polkadot/api": "^16.5.6",
|
|
2371
2386
|
"@polkadot/util": "^14.0.3",
|
|
2372
2387
|
"@polkadot/util-crypto": "^14.0.3",
|
|
@@ -2376,7 +2391,7 @@
|
|
|
2376
2391
|
"@ton/crypto": "^3.3.0",
|
|
2377
2392
|
"@trustwallet/wallet-core": "^4.7.0",
|
|
2378
2393
|
"@vultisig/core-config": "0.9.1",
|
|
2379
|
-
"@vultisig/lib-utils": "0.10.
|
|
2394
|
+
"@vultisig/lib-utils": "0.10.6",
|
|
2380
2395
|
"bip32": "^5.0.1",
|
|
2381
2396
|
"bitcoinjs-lib": "^7.0.1",
|
|
2382
2397
|
"bs58": "^6.0.0",
|