@vultisig/core-chain 1.5.1 → 1.5.3
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 +16 -0
- package/dist/chains/cosmos/cosmosRpcUrl.js +1 -1
- package/dist/chains/cosmos/cosmosRpcUrl.js.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.d.ts +15 -1
- package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.d.ts.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.js +65 -10
- package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.js.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/buildClaimTx.d.ts +7 -0
- package/dist/chains/cosmos/qbtc/claim/buildClaimTx.d.ts.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/buildClaimTx.js +3 -2
- package/dist/chains/cosmos/qbtc/claim/buildClaimTx.js.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/getClaimableUtxos.d.ts +6 -4
- package/dist/chains/cosmos/qbtc/claim/getClaimableUtxos.d.ts.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/getClaimableUtxos.js +28 -6
- package/dist/chains/cosmos/qbtc/claim/getClaimableUtxos.js.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/proofService.d.ts +7 -0
- package/dist/chains/cosmos/qbtc/claim/proofService.d.ts.map +1 -1
- package/dist/chains/cosmos/qbtc/claim/proofService.js +3 -0
- package/dist/chains/cosmos/qbtc/claim/proofService.js.map +1 -1
- package/dist/chains/cosmos/tendermintRpcUrl.js +1 -1
- package/dist/chains/cosmos/tendermintRpcUrl.js.map +1 -1
- package/dist/chains/cosmos/thor/lp/pools.d.ts +1 -1
- package/dist/chains/cosmos/thor/lp/pools.d.ts.map +1 -1
- package/dist/chains/cosmos/thor/lp/pools.js +1 -1
- package/dist/chains/cosmos/thor/lp/pools.js.map +1 -1
- package/dist/coin/knownTokens/index.d.ts.map +1 -1
- package/dist/coin/knownTokens/index.js +19 -0
- package/dist/coin/knownTokens/index.js.map +1 -1
- package/dist/security/blockaid/tx/simulation/api/core.d.ts +14 -0
- package/dist/security/blockaid/tx/simulation/api/core.d.ts.map +1 -1
- package/dist/security/blockaid/tx/simulation/api/core.js +88 -67
- package/dist/security/blockaid/tx/simulation/api/core.js.map +1 -1
- package/dist/security/blockaid/tx/simulation/core.d.ts +7 -11
- package/dist/security/blockaid/tx/simulation/core.d.ts.map +1 -1
- package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
- package/dist/swap/quote/findSwapQuote.js +75 -8
- package/dist/swap/quote/findSwapQuote.js.map +1 -1
- package/dist/tx/broadcast/resolvers/solana.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/solana.js +3 -4
- package/dist/tx/broadcast/resolvers/solana.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 1.5.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#416](https://github.com/vultisig/vultisig-sdk/pull/416) [`198f2af`](https://github.com/vultisig/vultisig-sdk/commit/198f2af1ae22bd379d7eff0c1c428a0ce1043229) Thanks [@realpaaao](https://github.com/realpaaao)! - Relay Solana transactions through standard RPC after JITO acceptance to avoid treating JITO-only acceptance as durable broadcast.
|
|
8
|
+
|
|
9
|
+
## 1.5.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#356](https://github.com/vultisig/vultisig-sdk/pull/356) [`b97da23`](https://github.com/vultisig/vultisig-sdk/commit/b97da233b3fdaeeb75e3a0c986d7fd15e0d743e4) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Rank swap quotes by comparable destination-token amount across eligible providers instead of using the first successful provider. Native THORChain/Maya quotes are re-based from swap API precision (`getNativeSwapDecimals`) to the destination coin decimals before comparison with aggregator `dstAmount`.
|
|
14
|
+
|
|
15
|
+
- [#383](https://github.com/vultisig/vultisig-sdk/pull/383) [`745172f`](https://github.com/vultisig/vultisig-sdk/commit/745172f3ee511bc4e95914986bfbdb8acf794b1e) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Migrate THORChain Midgard, THORNode REST, and Tendermint RPC endpoints from the legacy `*.thorchain.network` hosts to the Liquify gateway (`gateway.liquify.com/chain/thorchain_midgard`, `…/thorchain_api`, `…/thorchain_rpc`). Updated `cosmosRpcUrl.THORChain`, `tendermintRpcUrl.THORChain`, `thorchainMidgardBaseUrl`, and the rujira `MAINNET_CONFIG` endpoints accordingly.
|
|
16
|
+
|
|
17
|
+
In `RujiraDiscovery.discoverViaChain()`, replaced the brittle `rpc → thornode` string substitution with a direct read of `MAINNET_CONFIG.restEndpoint`. Under the new gateway routing the substitution silently produced an invalid host (`thorchain_thornode`) and the fallback branch was unreachable. Removed the now-unused `rpcEndpoint` option from `DiscoveryOptions` and the related discovery-specific plumbing in `RujiraClient`.
|
|
18
|
+
|
|
3
19
|
## 1.5.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -7,7 +7,7 @@ export const cosmosRpcUrl = {
|
|
|
7
7
|
Terra: 'https://terra-lcd.publicnode.com',
|
|
8
8
|
TerraClassic: 'https://terra-classic-lcd.publicnode.com',
|
|
9
9
|
Noble: 'https://noble-api.polkachu.com',
|
|
10
|
-
THORChain: 'https://
|
|
10
|
+
THORChain: 'https://gateway.liquify.com/chain/thorchain_api',
|
|
11
11
|
MayaChain: 'https://mayanode.mayachain.info',
|
|
12
12
|
Akash: 'https://akash-rest.publicnode.com',
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosRpcUrl.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosRpcUrl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,MAAM,EAAE,oCAAoC;IAC5C,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,oCAAoC;IAC5C,KAAK,EAAE,kCAAkC;IACzC,YAAY,EAAE,0CAA0C;IACxD,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"cosmosRpcUrl.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/cosmosRpcUrl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,MAAM,EAAE,oCAAoC;IAC5C,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,oCAAoC;IAC5C,KAAK,EAAE,kCAAkC;IACzC,YAAY,EAAE,0CAA0C;IACxD,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,iDAAiD;IAC5D,SAAS,EAAE,iCAAiC;IAC5C,KAAK,EAAE,mCAAmC;CAC3C,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,KAAK,EACL,EAAE,EACF,OAAO,GACqB,EAAE,EAAE,CAChC,GAAG,YAAY,CAAC,KAAK,CAAC,8BAA8B,EAAE,UAAU,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAA"}
|
|
@@ -13,13 +13,27 @@ type BroadcastClaimTxInput = {
|
|
|
13
13
|
txBytesBase64: string;
|
|
14
14
|
/** Transaction hash (SHA256 of TxRaw), hex-encoded. */
|
|
15
15
|
txHash: string;
|
|
16
|
+
/**
|
|
17
|
+
* Max time to wait for the tx to be included in a block after a
|
|
18
|
+
* successful broadcast. Defaults to 30 s — Cosmos block times are
|
|
19
|
+
* typically 5–7 s.
|
|
20
|
+
*/
|
|
21
|
+
inclusionTimeoutMs?: number;
|
|
22
|
+
/** Polling interval while waiting for inclusion. Defaults to 1 s. */
|
|
23
|
+
inclusionPollIntervalMs?: number;
|
|
16
24
|
};
|
|
17
25
|
/**
|
|
18
26
|
* Broadcasts a signed MsgClaimWithProof transaction to the QBTC chain
|
|
19
27
|
* via the REST API (following the restOnlyChains pattern).
|
|
20
28
|
*
|
|
29
|
+
* BROADCAST_MODE_SYNC returns after Tendermint's CheckTx — the
|
|
30
|
+
* `claim_with_proof` event is emitted later in DeliverTx. We poll
|
|
31
|
+
* `/cosmos/tx/v1beta1/txs/{txHash}` until the tx lands and parse the
|
|
32
|
+
* event attributes (`total_amount`, `utxos_claimed`, `utxos_skipped`)
|
|
33
|
+
* so the success screen can show real numbers instead of zeros.
|
|
34
|
+
*
|
|
21
35
|
* The claim transaction is gas-free — the chain does not charge gas.
|
|
22
36
|
*/
|
|
23
|
-
export declare const broadcastClaimTx: ({ txBytesBase64, txHash, }: BroadcastClaimTxInput) => Promise<ClaimTxResponse>;
|
|
37
|
+
export declare const broadcastClaimTx: ({ txBytesBase64, txHash, inclusionTimeoutMs, inclusionPollIntervalMs, }: BroadcastClaimTxInput) => Promise<ClaimTxResponse>;
|
|
24
38
|
export {};
|
|
25
39
|
//# sourceMappingURL=broadcastClaimTx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcastClaimTx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/broadcastClaimTx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"broadcastClaimTx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/broadcastClaimTx.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG;IACrB,8BAA8B;IAC9B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AA0GD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAU,yEAKpC,qBAAqB,KAAG,OAAO,CAAC,eAAe,CAmDjD,CAAA"}
|
|
@@ -1,11 +1,59 @@
|
|
|
1
1
|
import { qbtcRestUrl } from '@vultisig/core-chain/chains/cosmos/qbtc/tendermintRpcUrl';
|
|
2
|
+
import { sleep } from '@vultisig/lib-utils/sleep';
|
|
3
|
+
const claimWithProofEventType = 'claim_with_proof';
|
|
4
|
+
const findEventAttr = (events, type, key) => events
|
|
5
|
+
?.find(e => e.type === type)
|
|
6
|
+
?.attributes?.find(a => a.key === key)?.value;
|
|
7
|
+
const parseClaimResultFromEvents = (events, txHash) => ({
|
|
8
|
+
totalAmountClaimed: BigInt(findEventAttr(events, claimWithProofEventType, 'total_amount') ?? '0'),
|
|
9
|
+
utxosClaimed: Number(findEventAttr(events, claimWithProofEventType, 'utxos_claimed') ?? '0'),
|
|
10
|
+
utxosSkipped: Number(findEventAttr(events, claimWithProofEventType, 'utxos_skipped') ?? '0'),
|
|
11
|
+
txHash,
|
|
12
|
+
});
|
|
13
|
+
const idempotentResult = (txHash) => ({
|
|
14
|
+
totalAmountClaimed: 0n,
|
|
15
|
+
utxosClaimed: 0,
|
|
16
|
+
utxosSkipped: 0,
|
|
17
|
+
txHash,
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Polls `/cosmos/tx/v1beta1/txs/{txHash}` until the tx is included in a
|
|
21
|
+
* block (200 OK) or the timeout fires. 404 means "not yet included" and
|
|
22
|
+
* triggers a retry. Other non-2xx statuses propagate as errors so we
|
|
23
|
+
* don't mask infra failures as "still pending".
|
|
24
|
+
*/
|
|
25
|
+
const waitForTxInclusion = async ({ txHash, timeoutMs, intervalMs, }) => {
|
|
26
|
+
const url = `${qbtcRestUrl}/cosmos/tx/v1beta1/txs/${txHash}`;
|
|
27
|
+
const deadline = Date.now() + timeoutMs;
|
|
28
|
+
while (Date.now() <= deadline) {
|
|
29
|
+
const response = await fetch(url);
|
|
30
|
+
if (response.ok) {
|
|
31
|
+
const data = await response.json();
|
|
32
|
+
if (data.tx_response)
|
|
33
|
+
return data.tx_response;
|
|
34
|
+
throw new Error(`QBTC claim tx ${txHash}: missing tx_response on inclusion query`);
|
|
35
|
+
}
|
|
36
|
+
if (response.status !== 404) {
|
|
37
|
+
const text = await response.text();
|
|
38
|
+
throw new Error(`QBTC claim inclusion query failed (${response.status}): ${text}`);
|
|
39
|
+
}
|
|
40
|
+
await sleep(intervalMs);
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`QBTC claim tx ${txHash} not included within ${timeoutMs}ms`);
|
|
43
|
+
};
|
|
2
44
|
/**
|
|
3
45
|
* Broadcasts a signed MsgClaimWithProof transaction to the QBTC chain
|
|
4
46
|
* via the REST API (following the restOnlyChains pattern).
|
|
5
47
|
*
|
|
48
|
+
* BROADCAST_MODE_SYNC returns after Tendermint's CheckTx — the
|
|
49
|
+
* `claim_with_proof` event is emitted later in DeliverTx. We poll
|
|
50
|
+
* `/cosmos/tx/v1beta1/txs/{txHash}` until the tx lands and parse the
|
|
51
|
+
* event attributes (`total_amount`, `utxos_claimed`, `utxos_skipped`)
|
|
52
|
+
* so the success screen can show real numbers instead of zeros.
|
|
53
|
+
*
|
|
6
54
|
* The claim transaction is gas-free — the chain does not charge gas.
|
|
7
55
|
*/
|
|
8
|
-
export const broadcastClaimTx = async ({ txBytesBase64, txHash, }) => {
|
|
56
|
+
export const broadcastClaimTx = async ({ txBytesBase64, txHash, inclusionTimeoutMs = 30_000, inclusionPollIntervalMs = 1_000, }) => {
|
|
9
57
|
const response = await fetch(`${qbtcRestUrl}/cosmos/tx/v1beta1/txs`, {
|
|
10
58
|
method: 'POST',
|
|
11
59
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -14,16 +62,10 @@ export const broadcastClaimTx = async ({ txBytesBase64, txHash, }) => {
|
|
|
14
62
|
mode: 'BROADCAST_MODE_SYNC',
|
|
15
63
|
}),
|
|
16
64
|
});
|
|
17
|
-
const idempotentResult = {
|
|
18
|
-
totalAmountClaimed: 0n,
|
|
19
|
-
utxosClaimed: 0,
|
|
20
|
-
utxosSkipped: 0,
|
|
21
|
-
txHash,
|
|
22
|
-
};
|
|
23
65
|
if (!response.ok) {
|
|
24
66
|
const text = await response.text();
|
|
25
67
|
if (text.includes('tx already exists in cache')) {
|
|
26
|
-
return idempotentResult;
|
|
68
|
+
return idempotentResult(txHash);
|
|
27
69
|
}
|
|
28
70
|
throw new Error(`QBTC claim broadcast failed (${response.status}): ${text}`);
|
|
29
71
|
}
|
|
@@ -34,10 +76,23 @@ export const broadcastClaimTx = async ({ txBytesBase64, txHash, }) => {
|
|
|
34
76
|
if (data.tx_response.code !== 0) {
|
|
35
77
|
const log = data.tx_response.raw_log || data.tx_response.log;
|
|
36
78
|
if (log?.includes('tx already exists in cache')) {
|
|
37
|
-
return idempotentResult;
|
|
79
|
+
return idempotentResult(txHash);
|
|
38
80
|
}
|
|
39
81
|
throw new Error(`QBTC claim tx error: ${log}`);
|
|
40
82
|
}
|
|
41
|
-
|
|
83
|
+
// CheckTx passed; wait for DeliverTx events.
|
|
84
|
+
const included = await waitForTxInclusion({
|
|
85
|
+
txHash,
|
|
86
|
+
timeoutMs: inclusionTimeoutMs,
|
|
87
|
+
intervalMs: inclusionPollIntervalMs,
|
|
88
|
+
});
|
|
89
|
+
if (typeof included.code !== 'number') {
|
|
90
|
+
throw new Error(`QBTC claim tx ${txHash}: missing code on included tx_response`);
|
|
91
|
+
}
|
|
92
|
+
if (included.code !== 0) {
|
|
93
|
+
const log = included.raw_log || included.log;
|
|
94
|
+
throw new Error(`QBTC claim tx error: ${log}`);
|
|
95
|
+
}
|
|
96
|
+
return parseClaimResultFromEvents(included.events, txHash);
|
|
42
97
|
};
|
|
43
98
|
//# sourceMappingURL=broadcastClaimTx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcastClaimTx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/broadcastClaimTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;
|
|
1
|
+
{"version":3,"file":"broadcastClaimTx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/broadcastClaimTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,13 @@ type BuildMsgClaimWithProofInput = {
|
|
|
15
15
|
addressHash: string;
|
|
16
16
|
/** 64-char hex QBTCAddressHash. */
|
|
17
17
|
qbtcAddressHash: string;
|
|
18
|
+
/**
|
|
19
|
+
* 64-char hex SHA256 of the 33-byte SEC-compressed BTC pubkey. The chain
|
|
20
|
+
* runs RIPEMD160 over this natively to bind the proof to the BTC address
|
|
21
|
+
* (the in-circuit Hash160 was removed in btcq-org/qbtc#148).
|
|
22
|
+
* Returned by the proof service as `pub_key_hash_sha256`.
|
|
23
|
+
*/
|
|
24
|
+
pubKeyHashSha256: string;
|
|
18
25
|
};
|
|
19
26
|
/** Validates the claim input against the chain's constraints (Section 5). */
|
|
20
27
|
export declare const validateClaimInput: (input: BuildMsgClaimWithProofInput) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildClaimTx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/buildClaimTx.ts"],"names":[],"mappings":"AASA,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"buildClaimTx.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/buildClaimTx.ts"],"names":[],"mappings":"AASA,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAYD,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,GAAI,OAAO,2BAA2B,SAuCpE,CAAA;AAuBD,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,GACjC,OAAO,2BAA2B,KACjC,UAOF,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,2BAA2B,KACjC,UAGF,CAAA"}
|
|
@@ -8,7 +8,7 @@ const assertHex = (value, name, expectedLength) => {
|
|
|
8
8
|
};
|
|
9
9
|
/** Validates the claim input against the chain's constraints (Section 5). */
|
|
10
10
|
export const validateClaimInput = (input) => {
|
|
11
|
-
const { utxos, proof, messageHash, addressHash, qbtcAddressHash } = input;
|
|
11
|
+
const { utxos, proof, messageHash, addressHash, qbtcAddressHash, pubKeyHashSha256, } = input;
|
|
12
12
|
if (utxos.length === 0 || utxos.length > 50) {
|
|
13
13
|
throw new Error(`UTXOs count must be 1-50, got ${utxos.length}`);
|
|
14
14
|
}
|
|
@@ -35,13 +35,14 @@ export const validateClaimInput = (input) => {
|
|
|
35
35
|
assertHex(messageHash, 'message_hash', 64);
|
|
36
36
|
assertHex(addressHash, 'address_hash', 40);
|
|
37
37
|
assertHex(qbtcAddressHash, 'qbtc_address_hash', 64);
|
|
38
|
+
assertHex(pubKeyHashSha256, 'pub_key_hash_sha256', 64);
|
|
38
39
|
};
|
|
39
40
|
/** Encodes a single UTXORef as protobuf. */
|
|
40
41
|
const encodeUtxoRef = ({ txid, vout }) => concatBytes(protoString(1, txid), protoVarint(2, BigInt(vout)));
|
|
41
42
|
/** Encodes MsgClaimWithProof as protobuf bytes. */
|
|
42
43
|
const buildMsgClaimWithProof = (input) => {
|
|
43
44
|
const utxoBytes = input.utxos.map(utxo => protoBytes(2, encodeUtxoRef(utxo)));
|
|
44
|
-
return concatBytes(protoString(1, input.claimer), ...utxoBytes, protoString(3, input.proof), protoString(4, input.messageHash), protoString(5, input.addressHash), protoString(6, input.qbtcAddressHash));
|
|
45
|
+
return concatBytes(protoString(1, input.claimer), ...utxoBytes, protoString(3, input.proof), protoString(4, input.messageHash), protoString(5, input.addressHash), protoString(6, input.qbtcAddressHash), protoString(7, input.pubKeyHashSha256));
|
|
45
46
|
};
|
|
46
47
|
/** Wraps MsgClaimWithProof in a Cosmos Any message. */
|
|
47
48
|
export const buildClaimWithProofAny = (input) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildClaimTx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/buildClaimTx.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,kDAAkD,CAAA;AAEzD,MAAM,wBAAwB,GAAG,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"buildClaimTx.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/buildClaimTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,13 @@ type GetClaimableUtxosInput = {
|
|
|
3
3
|
btcAddress: string;
|
|
4
4
|
};
|
|
5
5
|
/**
|
|
6
|
-
* Fetches Bitcoin UTXOs for the given address via Blockchair and
|
|
7
|
-
*
|
|
6
|
+
* Fetches Bitcoin UTXOs for the given address via Blockchair and filters
|
|
7
|
+
* out any the QBTC chain has already paid out.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Bitcoin doesn't know about QBTC claims, so a Blockchair UTXO can still
|
|
10
|
+
* appear "spendable" after the QBTC chain has consumed it. Cross-checking
|
|
11
|
+
* against the chain's UTXO endpoint (btcq-org/qbtc#141) prevents the user
|
|
12
|
+
* from selecting a stale entry and burning ~90s on a no-op claim.
|
|
11
13
|
*/
|
|
12
14
|
export declare const getClaimableUtxos: ({ btcAddress, }: GetClaimableUtxosInput) => Promise<ClaimableUtxo[]>;
|
|
13
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClaimableUtxos.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/getClaimableUtxos.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getClaimableUtxos.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/getClaimableUtxos.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,KAAK,sBAAsB,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AA0BD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAU,iBAErC,sBAAsB,KAAG,OAAO,CAAC,aAAa,EAAE,CAqBlD,CAAA"}
|
|
@@ -1,22 +1,44 @@
|
|
|
1
1
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
2
|
+
import { qbtcRestUrl } from '@vultisig/core-chain/chains/cosmos/qbtc/tendermintRpcUrl';
|
|
2
3
|
import { getUtxoAddressInfo } from '@vultisig/core-chain/chains/utxo/client/getUtxoAddressInfo';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
5
|
+
* Asks the QBTC chain whether a given UTXO is still claimable
|
|
6
|
+
* (i.e. registered + unclaimed) via `GET /qbtc/v1/utxo/{txid}/{vout}`.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
* already
|
|
8
|
+
* - 200 → claimable
|
|
9
|
+
* - 404 → already claimed or never registered
|
|
10
|
+
* - other → propagated as a hard error so transient network failures
|
|
11
|
+
* don't silently drop UTXOs from the user's list.
|
|
12
|
+
*/
|
|
13
|
+
const isUtxoClaimableOnChain = async ({ txid, vout, }) => {
|
|
14
|
+
const response = await fetch(`${qbtcRestUrl}/qbtc/v1/utxo/${txid}/${vout}`);
|
|
15
|
+
if (response.ok)
|
|
16
|
+
return true;
|
|
17
|
+
if (response.status === 404)
|
|
18
|
+
return false;
|
|
19
|
+
throw new Error(`Failed to verify UTXO ${txid}:${vout} on QBTC chain (${response.status} ${response.statusText})`);
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Fetches Bitcoin UTXOs for the given address via Blockchair and filters
|
|
23
|
+
* out any the QBTC chain has already paid out.
|
|
24
|
+
*
|
|
25
|
+
* Bitcoin doesn't know about QBTC claims, so a Blockchair UTXO can still
|
|
26
|
+
* appear "spendable" after the QBTC chain has consumed it. Cross-checking
|
|
27
|
+
* against the chain's UTXO endpoint (btcq-org/qbtc#141) prevents the user
|
|
28
|
+
* from selecting a stale entry and burning ~90s on a no-op claim.
|
|
9
29
|
*/
|
|
10
30
|
export const getClaimableUtxos = async ({ btcAddress, }) => {
|
|
11
31
|
const response = await getUtxoAddressInfo({
|
|
12
32
|
address: btcAddress,
|
|
13
33
|
chain: Chain.Bitcoin,
|
|
14
34
|
});
|
|
15
|
-
const
|
|
16
|
-
|
|
35
|
+
const btcUtxos = response.data[btcAddress]?.utxo ?? [];
|
|
36
|
+
const candidates = btcUtxos.map(({ transaction_hash, index, value }) => ({
|
|
17
37
|
txid: transaction_hash,
|
|
18
38
|
vout: index,
|
|
19
39
|
amount: value,
|
|
20
40
|
}));
|
|
41
|
+
const claimableFlags = await Promise.all(candidates.map(({ txid, vout }) => isUtxoClaimableOnChain({ txid, vout })));
|
|
42
|
+
return candidates.filter((_, i) => claimableFlags[i]);
|
|
21
43
|
};
|
|
22
44
|
//# sourceMappingURL=getClaimableUtxos.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClaimableUtxos.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/getClaimableUtxos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAA;AAQ/F
|
|
1
|
+
{"version":3,"file":"getClaimableUtxos.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/getClaimableUtxos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAA;AAQ/F;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAAE,EACpC,IAAI,EACJ,IAAI,GAIL,EAAoB,EAAE;IACrB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,iBAAiB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;IAC3E,IAAI,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IACzC,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,IAAI,IAAI,mBAAmB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,CAClG,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,UAAU,GACa,EAA4B,EAAE;IACrD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;QACxC,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,KAAK,CAAC,OAAO;KACrB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;IAEtD,MAAM,UAAU,GAAoB,QAAQ,CAAC,GAAG,CAC9C,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;KACd,CAAC,CACH,CAAA;IAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3E,CAAA;IAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -33,6 +33,13 @@ type GenerateClaimProofResponse = {
|
|
|
33
33
|
address_hash: string;
|
|
34
34
|
/** 64-char hex QBTCAddressHash. */
|
|
35
35
|
qbtc_address_hash: string;
|
|
36
|
+
/**
|
|
37
|
+
* 64-char hex SHA256 of the SEC-compressed BTC pubkey. Required by
|
|
38
|
+
* `MsgClaimWithProof` (proto field 7) since btcq-org/qbtc#148 — the
|
|
39
|
+
* chain runs RIPEMD160 over this natively to bind the proof to the
|
|
40
|
+
* BTC address.
|
|
41
|
+
*/
|
|
42
|
+
pub_key_hash_sha256: string;
|
|
36
43
|
/** UTXOs included in the proof. */
|
|
37
44
|
utxos: UtxoRef[];
|
|
38
45
|
/** QBTC claimer address. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofService.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/proofService.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,+BAA+B,CAAA;AASlE,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,GAAU,eAE3C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,KAAG,OAAO,CAAC,OAAO,CAS7C,CAAA;AAED,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAA;IACzB,mCAAmC;IACnC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,YAAY,EAAE,0BAA0B,IAAI,gBAAgB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"proofService.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/proofService.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,+BAA+B,CAAA;AASlE,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,GAAU,eAE3C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,KAAG,OAAO,CAAC,OAAO,CAS7C,CAAA;AAED,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,CAAA;IAC3B,mCAAmC;IACnC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,YAAY,EAAE,0BAA0B,IAAI,gBAAgB,EAAE,CAAA;AAgC9D;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,iFAQtC,uBAAuB,KAAG,OAAO,CAAC,0BAA0B,CAiC9D,CAAA"}
|
|
@@ -31,6 +31,9 @@ const assertValidClaimProofResponse = (data) => {
|
|
|
31
31
|
if (!isHexWithLength(data.qbtc_address_hash, 64)) {
|
|
32
32
|
throw new Error('Invalid proof service response: invalid qbtc_address_hash');
|
|
33
33
|
}
|
|
34
|
+
if (!isHexWithLength(data.pub_key_hash_sha256, 64)) {
|
|
35
|
+
throw new Error('Invalid proof service response: invalid pub_key_hash_sha256');
|
|
36
|
+
}
|
|
34
37
|
};
|
|
35
38
|
/**
|
|
36
39
|
* Calls the proof service to generate a PLONK ZK proof for the QBTC claim.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofService.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/proofService.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAA;AAElE,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAOxC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAC5C,OAAO,GAAG,sBAAsB,MACR,EAAE,EAAoB,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,CAAC,CAAA;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;QAC9B,MAAM,IAAI,GAA+B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9D,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAA;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"proofService.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/qbtc/claim/proofService.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export const tendermintRpcUrl = {
|
|
|
6
6
|
Terra: 'https://terra-rpc.publicnode.com:443',
|
|
7
7
|
TerraClassic: 'https://terra-classic-rpc.publicnode.com:443',
|
|
8
8
|
Noble: 'https://noble-rpc.polkachu.com/',
|
|
9
|
-
THORChain: 'https://
|
|
9
|
+
THORChain: 'https://gateway.liquify.com/chain/thorchain_rpc',
|
|
10
10
|
MayaChain: 'https://tendermint.mayachain.info',
|
|
11
11
|
Akash: 'https://akash-rpc.publicnode.com:443',
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tendermintRpcUrl.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/tendermintRpcUrl.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D,MAAM,EAAE,uCAAuC;IAC/C,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE,qCAAqC;IAC3C,MAAM,EAAE,uCAAuC;IAC/C,KAAK,EAAE,sCAAsC;IAC7C,YAAY,EAAE,8CAA8C;IAC5D,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE
|
|
1
|
+
{"version":3,"file":"tendermintRpcUrl.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/tendermintRpcUrl.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D,MAAM,EAAE,uCAAuC;IAC/C,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE,qCAAqC;IAC3C,MAAM,EAAE,uCAAuC;IAC/C,KAAK,EAAE,sCAAsC;IAC7C,YAAY,EAAE,8CAA8C;IAC5D,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,iDAAiD;IAC5D,SAAS,EAAE,mCAAmC;IAC9C,KAAK,EAAE,sCAAsC;CAC9C,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Midgard base URL used by every helper in this module. Matches what
|
|
3
3
|
* vultisig-ios and the rujira package use as the default mainnet endpoint.
|
|
4
4
|
*/
|
|
5
|
-
export declare const thorchainMidgardBaseUrl = "https://
|
|
5
|
+
export declare const thorchainMidgardBaseUrl = "https://gateway.liquify.com/chain/thorchain_midgard";
|
|
6
6
|
/**
|
|
7
7
|
* Validate a THORChain pool id is in the canonical format.
|
|
8
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/thor/lp/pools.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/thor/lp/pools.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,wDAAwD,CAAA;AA2B5F;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,IAahD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAG5C,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAsBD,MAAM,MAAM,wBAAwB,GAAG;IACrC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAS,wBAA6B,KACrC,OAAO,CAAC,oBAAoB,EAAE,CAahC,CAAA"}
|
|
@@ -3,7 +3,7 @@ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
|
3
3
|
* Midgard base URL used by every helper in this module. Matches what
|
|
4
4
|
* vultisig-ios and the rujira package use as the default mainnet endpoint.
|
|
5
5
|
*/
|
|
6
|
-
export const thorchainMidgardBaseUrl = 'https://
|
|
6
|
+
export const thorchainMidgardBaseUrl = 'https://gateway.liquify.com/chain/thorchain_midgard';
|
|
7
7
|
/**
|
|
8
8
|
* Canonical THORChain pool-id format: `CHAIN.ASSET` for native assets
|
|
9
9
|
* (e.g. `BTC.BTC`, `ETH.ETH`) or `CHAIN.ASSET-CONTRACT` for ERC-20-style
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/thor/lp/pools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,
|
|
1
|
+
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/cosmos/thor/lp/pools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qDAAqD,CAAA;AAE5F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,GAAG,qCAAqC,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvG,CAAA;IACH,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qCAAqC;YAC7E,0EAA0E;YAC1E,+DAA+D,CAClE,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/D,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AA2BD,MAAM,aAAa,GAAG,CAAC,GAAY,EAAwB,EAAE,CAAC,CAAC;IAC7D,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;IACxB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;IACjC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG;IAC/B,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,GAAG;IACzC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG;IAC/B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG;CACtD,CAAC,CAAA;AAOF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,UAAoC,EAAE,EACL,EAAE;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IAC1E,MAAM,GAAG,GACP,MAAM,KAAK,IAAI;QACb,CAAC,CAAC,GAAG,uBAAuB,WAAW;QACvC,CAAC,CAAC,GAAG,uBAAuB,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;IAChF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAU,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,6CAA6C,GAAG,SAAS,OAAO,GAAG,EAAE,CACtE,CAAA;IACH,CAAC;IACD,OAAQ,GAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC9C,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKtE,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKtE,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;AAktBD,eAAO,MAAM,WAAW,uYAetB,CAAA;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE1D,eAAO,MAAM,gBAAgB,EAAE,UAU9B,CAAA"}
|
|
@@ -78,6 +78,25 @@ const leanTokens = {
|
|
|
78
78
|
},
|
|
79
79
|
},
|
|
80
80
|
[Chain.Solana]: {
|
|
81
|
+
// QA dogfood Bug J (paaao 2026-05-02): USDC and USDT on Solana
|
|
82
|
+
// were missing from the knownTokens fast-path lookup, so the
|
|
83
|
+
// agent had to fall back to CoinGecko search every time the user
|
|
84
|
+
// referenced "USDC on Solana" — slower + flakier than the EVM
|
|
85
|
+
// chains where Circle USDC is hard-coded. Bake the canonical
|
|
86
|
+
// SPL mint addresses in directly. Mints are public, well-known,
|
|
87
|
+
// and ratified by the issuers (Circle for USDC, Tether for USDT).
|
|
88
|
+
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v: {
|
|
89
|
+
ticker: 'USDC',
|
|
90
|
+
logo: 'usdc',
|
|
91
|
+
decimals: 6,
|
|
92
|
+
priceProviderId: 'usd-coin',
|
|
93
|
+
},
|
|
94
|
+
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB: {
|
|
95
|
+
ticker: 'USDT',
|
|
96
|
+
logo: 'usdt',
|
|
97
|
+
decimals: 6,
|
|
98
|
+
priceProviderId: 'tether',
|
|
99
|
+
},
|
|
81
100
|
JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN: {
|
|
82
101
|
ticker: 'JUP',
|
|
83
102
|
logo: 'https://static.jup.ag/jup/icon.png',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAI5C,MAAM,CAAC,MAAM,IAAI,GAAuC;IACtD,EAAE,EAAE,4CAA4C;IAChD,KAAK,EAAE,KAAK,CAAC,QAAQ;IACrB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,UAAU;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAuC;IACtD,EAAE,EAAE,4CAA4C;IAChD,KAAK,EAAE,KAAK,CAAC,QAAQ;IACrB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,CAAC;IACX,eAAe,EAAE,UAAU;CAC5B,CAAA;AAED,MAAM,UAAU,GAAmC;IACjD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,gDAAgD,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,gDAAgD,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,SAAS;SAC3B;QACD,gDAAgD,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,kDAAkD,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,SAAS;SAC3B;QACD,kDAAkD,EAAE;YAClD,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,gBAAgB;SAClC;QACD,gDAAgD,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,kDAAkD,EAAE;YAClD,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,2DAA2D;YACjE,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,iBAAiB;SACnC;QACD,gDAAgD,EAAE;YAChD,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,YAAY;SAC9B;KACF;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,kCAAkC,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;KACF;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,2CAA2C,EAAE;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oCAAoC;YAC1C,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,yBAAyB;SAC3C;QACD,2CAA2C,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,MAAM;SACxB;KACF;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;QACpC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;QACpC,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,SAAS;SAC3B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,iBAAiB;SACnC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,WAAW;SAC7B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,YAAY;SAC9B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,sBAAsB;SACxC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,KAAK;SACvB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,eAAe;SACjC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,2BAA2B;SAC7C;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,uBAAuB;SACzC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,QAAQ;SAC1B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,uBAAuB;SACzC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,WAAW;SAC7B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;KACF;IACD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;KACF;IACD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;KACF;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,KAAK;SACvB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,cAAc;SAChC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,GAAG;SACrB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,QAAQ;SAC1B;KACF;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,YAAY;SAC9B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,sBAAsB;SACxC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,iBAAiB;SACnC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,WAAW;SAC7B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,KAAK;SACvB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,SAAS;SAC3B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,WAAW;SAC7B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,cAAc;SAChC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,UAAU;SAC5B;KACF;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE;YAC5C,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,cAAc;SAChC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;KACF;IACD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;KACF;IACD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,MAAM;SACxB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;QACD,0CAA0C,EAAE;YAC1C,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,QAAQ;SAC1B;KACF;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,QAAQ;SAC1B;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;KACF;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACnB,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,qBAAqB;SACvC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,oBAAoB;SACtC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,cAAc;SAChC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,eAAe;SACjC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,OAAO;SACzB;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,oBAAoB;SACtC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,cAAc;SAChC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,gBAAgB;SAClC;QACD,4CAA4C,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,UAAU;SAC5B;KACF;IACD,GAAG,iBAAiB;CACrB,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;IAClE,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,KAAK;gBACR,KAAK;gBACL,EAAE;aACH,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,gBAAgB,GAAe,UAAU,CACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EACpB,KAAK,CAAC,EAAE;IACN,MAAM,IAAI,GAA8B,EAAE,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,SAAQ;QACtB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAA;IACpC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,5 +69,19 @@ export type BlockaidEVMSimulation = {
|
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
71
|
export declare const parseBlockaidSolanaSimulation: (simulation: BlockaidSolanaSimulation) => Promise<BlockaidSolanaSimulationInfo>;
|
|
72
|
+
/**
|
|
73
|
+
* Parse a Blockaid EVM simulation into the user's net balance changes.
|
|
74
|
+
*
|
|
75
|
+
* Blockaid returns one entry per asset under `assets_diffs`, with separate
|
|
76
|
+
* `in` and `out` arrays that can each have multiple legs (router-mediated
|
|
77
|
+
* `permitAndCall` flows, multicalls, multi-hop swaps, etc.). We group all
|
|
78
|
+
* legs by canonical asset (lowercased address; native uses a sentinel key),
|
|
79
|
+
* sum each side, and emit one change per asset with the net direction.
|
|
80
|
+
*
|
|
81
|
+
* Refund-shaped pairs (same asset on both `in` and `out`) cancel out to a
|
|
82
|
+
* net of zero and are skipped — both casing-variant duplicates from
|
|
83
|
+
* Blockaid metadata noise and real same-asset refunds collapse to the
|
|
84
|
+
* accurate "no change" outcome.
|
|
85
|
+
*/
|
|
72
86
|
export declare const parseBlockaidEvmSimulation: (simulation: BlockaidEVMSimulation, chain: EvmChain) => Promise<BlockaidEvmSimulationInfo>;
|
|
73
87
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAKrD,OAAO,EAEL,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,EAAE;QACf,mBAAmB,EAAE,KAAK,CAAC;YACzB,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;gBACrB,IAAI,CAAC,EAAE,MAAM,CAAA;gBACb,MAAM,CAAC,EAAE,MAAM,CAAA;gBACf,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,IAAI,EAAE,MAAM,CAAA;aACb,CAAA;YACD,EAAE,EAAE;gBACF,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,GAAG,IAAI,CAAA;YACR,GAAG,EAAE;gBACH,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,GAAG,IAAI,CAAA;YACR,UAAU,EAAE,OAAO,GAAG,KAAK,CAAA;SAC5B,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE;QACf,YAAY,EAAE,KAAK,CAAC;YAClB,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAA;YAC9B,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;gBACxB,UAAU,EAAE,MAAM,CAAA;gBAClB,QAAQ,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,IAAI,EAAE,MAAM,CAAA;gBACZ,MAAM,EAAE,MAAM,CAAA;aACf,CAAA;YACD,EAAE,EAAE,KAAK,CAAC;gBACR,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,CAAC,CAAA;YACF,GAAG,EAAE,KAAK,CAAC;gBACT,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,CAAC,CAAA;YACF,eAAe,EAAE;gBACf,MAAM,EAAE;oBACN,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,MAAM,CAAA;oBACb,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,MAAM,CAAA;oBACb,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;aACF,CAAA;SACF,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAED,eAAO,MAAM,6BAA6B,GACxC,YAAY,wBAAwB,KACnC,OAAO,CAAC,4BAA4B,CA2EtC,CAAA;AAiDD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,GACrC,YAAY,qBAAqB,EACjC,OAAO,QAAQ,KACd,OAAO,CAAC,yBAAyB,CAuDnC,CAAA"}
|
|
@@ -67,80 +67,101 @@ export const parseBlockaidSolanaSimulation = async (simulation) => {
|
|
|
67
67
|
}
|
|
68
68
|
throw new Error('Invalid simulation data');
|
|
69
69
|
};
|
|
70
|
+
const NATIVE_GROUP_KEY = 'native';
|
|
71
|
+
// Returns null for malformed ERC20 entries (missing address) so the caller
|
|
72
|
+
// can skip them instead of silently merging into the native bucket.
|
|
73
|
+
const groupKeyForAsset = (asset) => {
|
|
74
|
+
if (asset.type === 'NATIVE')
|
|
75
|
+
return NATIVE_GROUP_KEY;
|
|
76
|
+
const address = asset.address?.toLowerCase();
|
|
77
|
+
return address ?? null;
|
|
78
|
+
};
|
|
79
|
+
const sumRaw = (sides) => sides.reduce((total, side) => total + BigInt(side.raw_value), 0n);
|
|
80
|
+
const usdValueForSides = (sides) => {
|
|
81
|
+
let total = 0;
|
|
82
|
+
let hasPrice = false;
|
|
83
|
+
for (const side of sides) {
|
|
84
|
+
if (typeof side.usd_price === 'number' && side.usd_price > 0) {
|
|
85
|
+
hasPrice = true;
|
|
86
|
+
}
|
|
87
|
+
total += side.value * side.usd_price;
|
|
88
|
+
}
|
|
89
|
+
return hasPrice ? total : 0;
|
|
90
|
+
};
|
|
91
|
+
// `Coin.id` is token-only (see core/chain/coin/Coin.ts), and Blockaid sometimes
|
|
92
|
+
// returns the same contract with mismatched casing across diffs; lowercase the
|
|
93
|
+
// ERC20 address so downstream lookups don't depend on whichever case landed first.
|
|
94
|
+
const buildCoinFromAsset = (asset, chain) => {
|
|
95
|
+
const base = {
|
|
96
|
+
decimals: asset.decimals,
|
|
97
|
+
logo: asset.logo_url,
|
|
98
|
+
ticker: asset.symbol,
|
|
99
|
+
chain,
|
|
100
|
+
};
|
|
101
|
+
if (asset.type === 'ERC20' && asset.address) {
|
|
102
|
+
return { ...base, id: asset.address.toLowerCase() };
|
|
103
|
+
}
|
|
104
|
+
return base;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Parse a Blockaid EVM simulation into the user's net balance changes.
|
|
108
|
+
*
|
|
109
|
+
* Blockaid returns one entry per asset under `assets_diffs`, with separate
|
|
110
|
+
* `in` and `out` arrays that can each have multiple legs (router-mediated
|
|
111
|
+
* `permitAndCall` flows, multicalls, multi-hop swaps, etc.). We group all
|
|
112
|
+
* legs by canonical asset (lowercased address; native uses a sentinel key),
|
|
113
|
+
* sum each side, and emit one change per asset with the net direction.
|
|
114
|
+
*
|
|
115
|
+
* Refund-shaped pairs (same asset on both `in` and `out`) cancel out to a
|
|
116
|
+
* net of zero and are skipped — both casing-variant duplicates from
|
|
117
|
+
* Blockaid metadata noise and real same-asset refunds collapse to the
|
|
118
|
+
* accurate "no change" outcome.
|
|
119
|
+
*/
|
|
70
120
|
export const parseBlockaidEvmSimulation = async (simulation, chain) => {
|
|
71
121
|
if (!isChainOfKind(chain, 'evm')) {
|
|
72
122
|
throw new Error(`parseBlockaidEvmSimulation only supports EVM chains, got: ${chain}`);
|
|
73
123
|
}
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
78
|
-
|
|
124
|
+
const groups = new Map();
|
|
125
|
+
for (const diff of simulation.account_summary.assets_diffs) {
|
|
126
|
+
const key = groupKeyForAsset(diff.asset);
|
|
127
|
+
if (key === null)
|
|
128
|
+
continue;
|
|
129
|
+
const sentRaw = sumRaw(diff.out);
|
|
130
|
+
const receivedRaw = sumRaw(diff.in);
|
|
131
|
+
const sentUsd = usdValueForSides(diff.out);
|
|
132
|
+
const receivedUsd = usdValueForSides(diff.in);
|
|
133
|
+
const existing = groups.get(key);
|
|
134
|
+
if (existing) {
|
|
135
|
+
existing.netRaw += receivedRaw - sentRaw;
|
|
136
|
+
existing.netUsd += receivedUsd - sentUsd;
|
|
79
137
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
id: potentialOutAsset.asset.address,
|
|
87
|
-
chain: chain,
|
|
88
|
-
},
|
|
89
|
-
fromAmount: shouldBePresent(BigInt(potentialOutAsset.out[0].raw_value)),
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
else if (assetDiffs.length > 1) {
|
|
94
|
-
// Router-mediated flows (e.g. `permitAndCall`) often return three diffs
|
|
95
|
-
// with an intermediate permit/allowance leg between the user's `out` and
|
|
96
|
-
// `in` sides. Scan all diffs instead of using positional destructuring so
|
|
97
|
-
// the user-side pair is recovered regardless of order, and prefer an
|
|
98
|
-
// in-side asset that differs from the out-side asset (case-insensitive,
|
|
99
|
-
// since EIP-55 checksums vary by casing). Mirrors the iOS parser.
|
|
100
|
-
const outDiff = assetDiffs.find(diff => diff.out.length > 0);
|
|
101
|
-
if (!outDiff) {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
const outAddress = outDiff.asset.address?.toLowerCase();
|
|
105
|
-
const inDiff = assetDiffs.find(diff => diff.in.length > 0 && diff.asset.address?.toLowerCase() !== outAddress) ??
|
|
106
|
-
assetDiffs.find(diff => diff.in.length > 0);
|
|
107
|
-
if (!inDiff) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
// Address is the primary identity for a token; symbol is just metadata
|
|
111
|
-
// and Blockaid sometimes returns inconsistent casing (`USDC` vs `usdc`)
|
|
112
|
-
// for the same contract. Reject refund-shaped pairs by address alone so
|
|
113
|
-
// we don't render a nonsense `A → A` swap when the in-side fallback
|
|
114
|
-
// matches the out-side asset.
|
|
115
|
-
const inAddress = inDiff.asset.address?.toLowerCase();
|
|
116
|
-
if (outAddress === inAddress) {
|
|
117
|
-
return null;
|
|
138
|
+
else {
|
|
139
|
+
groups.set(key, {
|
|
140
|
+
asset: diff.asset,
|
|
141
|
+
netRaw: receivedRaw - sentRaw,
|
|
142
|
+
netUsd: receivedUsd - sentUsd,
|
|
143
|
+
});
|
|
118
144
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
chain: chain,
|
|
131
|
-
},
|
|
132
|
-
toCoin: {
|
|
133
|
-
chain: chain,
|
|
134
|
-
decimals: inAsset.decimals,
|
|
135
|
-
logo: inAsset.logo_url,
|
|
136
|
-
ticker: inAsset.symbol,
|
|
137
|
-
id: inAsset.address,
|
|
138
|
-
},
|
|
139
|
-
fromAmount: shouldBePresent(BigInt(outValue[0].raw_value)),
|
|
140
|
-
toAmount: shouldBePresent(BigInt(inValue[0].raw_value)),
|
|
141
|
-
},
|
|
145
|
+
}
|
|
146
|
+
const changes = [];
|
|
147
|
+
for (const { asset, netRaw, netUsd } of groups.values()) {
|
|
148
|
+
if (netRaw === 0n)
|
|
149
|
+
continue;
|
|
150
|
+
const direction = netRaw > 0n ? 'receive' : 'send';
|
|
151
|
+
const amount = netRaw > 0n ? netRaw : -netRaw;
|
|
152
|
+
const change = {
|
|
153
|
+
direction,
|
|
154
|
+
coin: buildCoinFromAsset(asset, chain),
|
|
155
|
+
amount: shouldBePresent(amount),
|
|
142
156
|
};
|
|
157
|
+
if (netUsd !== 0) {
|
|
158
|
+
change.usdValue = Math.abs(netUsd);
|
|
159
|
+
}
|
|
160
|
+
changes.push(change);
|
|
161
|
+
}
|
|
162
|
+
if (changes.length === 0) {
|
|
163
|
+
return null;
|
|
143
164
|
}
|
|
144
|
-
return
|
|
165
|
+
return { changes };
|
|
145
166
|
};
|
|
146
167
|
//# sourceMappingURL=core.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,17 +13,13 @@ export type BlockaidSolanaSimulationInfo = {
|
|
|
13
13
|
fromAmount: bigint;
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
|
+
export type BlockaidEvmBalanceChange = {
|
|
17
|
+
direction: 'send' | 'receive';
|
|
18
|
+
coin: Coin;
|
|
19
|
+
amount: bigint;
|
|
20
|
+
usdValue?: number;
|
|
21
|
+
};
|
|
16
22
|
export type BlockaidEvmSimulationInfo = {
|
|
17
|
-
|
|
18
|
-
fromCoin: Coin;
|
|
19
|
-
fromAmount: bigint;
|
|
20
|
-
toCoin: Coin;
|
|
21
|
-
toAmount: bigint;
|
|
22
|
-
};
|
|
23
|
-
} | {
|
|
24
|
-
transfer: {
|
|
25
|
-
fromCoin: Coin;
|
|
26
|
-
fromAmount: bigint;
|
|
27
|
-
};
|
|
23
|
+
changes: BlockaidEvmBalanceChange[];
|
|
28
24
|
} | null;
|
|
29
25
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,wBAAwB,EAAE,CAAA;CACpC,GAAG,IAAI,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAWnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAUpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC3C,CAAA;AA0ED,eAAO,MAAM,aAAa,GAAU,mDAMjC,kBAAkB,KAAG,OAAO,CAAC,SAAS,CA4JxC,CAAA"}
|
|
@@ -5,10 +5,8 @@ import { oneInchSwapEnabledChains } from '@vultisig/core-chain/swap/general/oneI
|
|
|
5
5
|
import { NoSwapRoutesError } from '@vultisig/core-chain/swap/NoSwapRoutesError';
|
|
6
6
|
import { isEmpty } from '@vultisig/lib-utils/array/isEmpty';
|
|
7
7
|
import { isOneOf } from '@vultisig/lib-utils/array/isOneOf';
|
|
8
|
-
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
9
8
|
import { bigIntToNumber } from '@vultisig/lib-utils/bigint/bigIntToNumber';
|
|
10
9
|
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
11
|
-
import { asyncFallbackChain } from '@vultisig/lib-utils/promise/asyncFallbackChain';
|
|
12
10
|
import { pick } from '@vultisig/lib-utils/record/pick';
|
|
13
11
|
import { Chain } from '../../Chain.js';
|
|
14
12
|
import { isChainOfKind } from '../../ChainKind.js';
|
|
@@ -16,7 +14,60 @@ import { getSwapAffiliateBps } from '../affiliate/index.js';
|
|
|
16
14
|
import { getKyberSwapQuote } from '../general/kyber/api/quote.js';
|
|
17
15
|
import { kyberSwapEnabledChains } from '../general/kyber/chains.js';
|
|
18
16
|
import { getNativeSwapQuote } from '../native/api/getNativeSwapQuote.js';
|
|
17
|
+
import { getNativeSwapDecimals } from '../native/utils/getNativeSwapDecimals.js';
|
|
19
18
|
import { nativeSwapChains, nativeSwapEnabledChainsRecord, } from '../native/NativeSwapChain.js';
|
|
19
|
+
/** Re-base an integer amount from `fromDecimals` fixed-point to `toDecimals`. */
|
|
20
|
+
function rebaseDecimals(value, fromDecimals, toDecimals) {
|
|
21
|
+
if (fromDecimals === toDecimals) {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
if (toDecimals > fromDecimals) {
|
|
25
|
+
return value * 10n ** BigInt(toDecimals - fromDecimals);
|
|
26
|
+
}
|
|
27
|
+
return value / 10n ** BigInt(fromDecimals - toDecimals);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Comparable destination amount in the destination token's smallest units (same
|
|
31
|
+
* scale as `general.dstAmount`).
|
|
32
|
+
*
|
|
33
|
+
* Native swap APIs report `expected_amount_out` in chain-specific precision
|
|
34
|
+
* (`getNativeSwapDecimals`); aggregators use the destination token's decimals.
|
|
35
|
+
* Without re-basing, THORChain (8-decimal canonical) and Kyber (token decimals)
|
|
36
|
+
* are not comparable as raw bigints.
|
|
37
|
+
*
|
|
38
|
+
* TODO(#353 follow-up): subtract route-specific gas / outbound fees for true net
|
|
39
|
+
* output; today this ranks gross destination amount after decimal alignment only.
|
|
40
|
+
*/
|
|
41
|
+
function getComparableOutputAmount(q, to) {
|
|
42
|
+
if ('native' in q.quote) {
|
|
43
|
+
const nativePrecision = getNativeSwapDecimals(to);
|
|
44
|
+
const raw = BigInt(q.quote.native.expected_amount_out);
|
|
45
|
+
return rebaseDecimals(raw, nativePrecision, to.decimals);
|
|
46
|
+
}
|
|
47
|
+
return BigInt(q.quote.general.dstAmount);
|
|
48
|
+
}
|
|
49
|
+
function selectBestEligibleQuote(settled) {
|
|
50
|
+
let best = null;
|
|
51
|
+
let bestAmount = null;
|
|
52
|
+
let bestIndex = Number.POSITIVE_INFINITY;
|
|
53
|
+
for (let i = 0; i < settled.length; i++) {
|
|
54
|
+
const result = settled[i];
|
|
55
|
+
if (result.status !== 'fulfilled') {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const { outputAmount, quote } = result.value;
|
|
59
|
+
// Tie-break: lower index wins. Fetchers are ordered by `shouldPreferGeneralSwap`
|
|
60
|
+
// (general-first vs native-first), so this preserves that preference when amounts tie.
|
|
61
|
+
if (bestAmount === null ||
|
|
62
|
+
outputAmount > bestAmount ||
|
|
63
|
+
(outputAmount === bestAmount && i < bestIndex)) {
|
|
64
|
+
best = quote;
|
|
65
|
+
bestAmount = outputAmount;
|
|
66
|
+
bestIndex = i;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return best;
|
|
70
|
+
}
|
|
20
71
|
export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTier, }) => {
|
|
21
72
|
const affiliateBps = getSwapAffiliateBps(vultDiscountTier ?? null);
|
|
22
73
|
const vultDiscount = vultDiscountTier
|
|
@@ -109,13 +160,29 @@ export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTi
|
|
|
109
160
|
if (isEmpty(fetchers)) {
|
|
110
161
|
throw new NoSwapRoutesError();
|
|
111
162
|
}
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
return
|
|
163
|
+
const settled = await Promise.allSettled(fetchers.map(async (fetcher) => {
|
|
164
|
+
const quote = await fetcher();
|
|
165
|
+
return {
|
|
166
|
+
quote,
|
|
167
|
+
outputAmount: getComparableOutputAmount(quote, to),
|
|
168
|
+
};
|
|
169
|
+
}));
|
|
170
|
+
const best = selectBestEligibleQuote(settled);
|
|
171
|
+
if (best) {
|
|
172
|
+
return best;
|
|
115
173
|
}
|
|
116
|
-
|
|
117
|
-
|
|
174
|
+
for (const result of settled) {
|
|
175
|
+
if (result.status === 'rejected' && isInError(result.reason, 'dust threshold')) {
|
|
176
|
+
throw new Error('Swap amount too small. Please increase the amount to proceed.');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
for (const result of settled) {
|
|
180
|
+
if (result.status === 'rejected') {
|
|
181
|
+
throw result.reason;
|
|
182
|
+
}
|
|
118
183
|
}
|
|
119
|
-
|
|
184
|
+
// Defensive: when fetchers are non-empty, `best` is null only if every
|
|
185
|
+
// fetcher rejected, and the loop above throws the first reason.
|
|
186
|
+
throw new Error('No quote');
|
|
120
187
|
};
|
|
121
188
|
//# sourceMappingURL=findSwapQuote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mEAAmE,CAAA;AACvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAuBlB,CAAA"}
|
|
@@ -4,12 +4,11 @@ import base58 from 'bs58';
|
|
|
4
4
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
5
5
|
export const broadcastSolanaTx = async ({ chain, tx }) => {
|
|
6
6
|
const rawTransaction = base58.decode(tx.encoded);
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
7
|
+
// Try JITO first for MEV protection, but still relay through standard RPC.
|
|
8
|
+
// JITO can accept sendTransaction without the signature later appearing in
|
|
9
|
+
// public Solana history, so standard RPC propagation is the durable signal.
|
|
10
10
|
try {
|
|
11
11
|
await sendJitoTransaction(rawTransaction);
|
|
12
|
-
return;
|
|
13
12
|
}
|
|
14
13
|
catch (err) {
|
|
15
14
|
console.warn('[solana] JITO sendTransaction failed, falling back to standard RPC:', err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,MAAM,MAAM,MAAM,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAE1B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAEhD,
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,MAAM,MAAM,MAAM,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAE1B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAEhD,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qEAAqE,EAAE,GAAG,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE;YAC9C,aAAa,EAAE,KAAK;YACpB,mBAAmB,EAAE,WAAW;YAChC,UAAU,EAAE,CAAC;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -1685,7 +1685,7 @@
|
|
|
1685
1685
|
"@solana/web3.js": "^1.98.4",
|
|
1686
1686
|
"@ton/core": "^0.63.1",
|
|
1687
1687
|
"@ton/crypto": "^3.3.0",
|
|
1688
|
-
"@trustwallet/wallet-core": "^4.6.
|
|
1688
|
+
"@trustwallet/wallet-core": "^4.6.7",
|
|
1689
1689
|
"@vultisig/core-config": "0.9.1",
|
|
1690
1690
|
"@vultisig/lib-utils": "0.10.1",
|
|
1691
1691
|
"bip32": "^5.0.1",
|