@vultisig/core-chain 2.12.0 → 2.13.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 +19 -0
- package/dist/security/blockaid/simulationChains.d.ts +1 -1
- package/dist/security/blockaid/simulationChains.d.ts.map +1 -1
- package/dist/security/blockaid/simulationChains.js +5 -1
- package/dist/security/blockaid/simulationChains.js.map +1 -1
- package/dist/security/blockaid/tx/simulation/api/core.d.ts +48 -1
- package/dist/security/blockaid/tx/simulation/api/core.d.ts.map +1 -1
- package/dist/security/blockaid/tx/simulation/api/core.js +121 -0
- package/dist/security/blockaid/tx/simulation/api/core.js.map +1 -1
- package/dist/security/blockaid/tx/simulation/core.d.ts +19 -0
- package/dist/security/blockaid/tx/simulation/core.d.ts.map +1 -1
- package/dist/security/blockaid/tx/simulation/index.d.ts +1 -0
- package/dist/security/blockaid/tx/simulation/index.d.ts.map +1 -1
- package/dist/security/blockaid/tx/simulation/index.js +5 -0
- package/dist/security/blockaid/tx/simulation/index.js.map +1 -1
- package/dist/security/blockaid/tx/simulation/resolver.d.ts +2 -1
- package/dist/security/blockaid/tx/simulation/resolver.d.ts.map +1 -1
- package/dist/security/blockaid/tx/simulation/resolvers/sui.d.ts +9 -0
- package/dist/security/blockaid/tx/simulation/resolvers/sui.d.ts.map +1 -0
- package/dist/security/blockaid/tx/simulation/resolvers/sui.js +11 -0
- package/dist/security/blockaid/tx/simulation/resolvers/sui.js.map +1 -0
- package/package.json +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 2.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#672](https://github.com/vultisig/vultisig-sdk/pull/672) [`7fa4860`](https://github.com/vultisig/vultisig-sdk/commit/7fa48602ba1acfb57746fd22c87ec3aa30bac4a6) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Add Blockaid Sui transaction simulation support. The existing Sui Blockaid
|
|
8
|
+
scan resolver only requested `validation`; this exposes the simulation block
|
|
9
|
+
returned by the same `/sui/transaction/scan` endpoint via a new
|
|
10
|
+
`getSuiTxBlockaidSimulation` resolver and a `parseBlockaidSuiSimulation`
|
|
11
|
+
parser that produces a UI-facing `{ swap } | { transfer }` headline
|
|
12
|
+
(mirroring the Solana shape). `OtherChain.Sui` is now a member of
|
|
13
|
+
`blockaidSimulationSupportedChains`, with a new `getTxBlockaidSimulation`
|
|
14
|
+
overload, and the mpc package gains a matching
|
|
15
|
+
`getSuiBlockaidTxSimulationInput` for the `KeysignPayload`-driven flow.
|
|
16
|
+
|
|
17
|
+
The parser keeps `null` as its failure mode rather than throwing — Blockaid
|
|
18
|
+
field renames degrade to "no preview" instead of breaking consumers.
|
|
19
|
+
|
|
20
|
+
Closes [#671](https://github.com/vultisig/vultisig-sdk/issues/671)
|
|
21
|
+
|
|
3
22
|
## 2.12.0
|
|
4
23
|
|
|
5
24
|
### Minor Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OtherChain } from '../../Chain.js';
|
|
2
2
|
import { DeriveChainKind } from '../../ChainKind.js';
|
|
3
|
-
export declare const blockaidSimulationSupportedChains: readonly [...("Arbitrum" | "Base" | "Blast" | "Optimism" | "Zksync" | "Mantle" | "Avalanche" | "BSC" | "Ethereum" | "Polygon" | "Hyperliquid" | "Sei")[], OtherChain.Solana];
|
|
3
|
+
export declare const blockaidSimulationSupportedChains: readonly [...("Arbitrum" | "Base" | "Blast" | "Optimism" | "Zksync" | "Mantle" | "Avalanche" | "BSC" | "Ethereum" | "Polygon" | "Hyperliquid" | "Sei")[], OtherChain.Solana, OtherChain.Sui];
|
|
4
4
|
export type BlockaidSimulationSupportedChain = (typeof blockaidSimulationSupportedChains)[number];
|
|
5
5
|
export type BlockaidSimulationSupportedChainKind = DeriveChainKind<BlockaidSimulationSupportedChain>;
|
|
6
6
|
//# sourceMappingURL=simulationChains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulationChains.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,eAAO,MAAM,iCAAiC,
|
|
1
|
+
{"version":3,"file":"simulationChains.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,eAAO,MAAM,iCAAiC,8LAIpC,CAAA;AAEV,MAAM,MAAM,gCAAgC,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAA;AACjG,MAAM,MAAM,oCAAoC,GAAG,eAAe,CAAC,gCAAgC,CAAC,CAAA"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { OtherChain } from '../../Chain.js';
|
|
2
2
|
import { blockaidSupportedEvmChains } from './evmChains.js';
|
|
3
|
-
export const blockaidSimulationSupportedChains = [
|
|
3
|
+
export const blockaidSimulationSupportedChains = [
|
|
4
|
+
...blockaidSupportedEvmChains,
|
|
5
|
+
OtherChain.Solana,
|
|
6
|
+
OtherChain.Sui,
|
|
7
|
+
];
|
|
4
8
|
//# sourceMappingURL=simulationChains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulationChains.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,CAAC,MAAM,iCAAiC,GAAG,
|
|
1
|
+
{"version":3,"file":"simulationChains.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,GAAG,0BAA0B;IAC7B,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,GAAG;CACN,CAAA"}
|
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
import { EvmChain } from '@vultisig/core-chain/Chain';
|
|
2
|
-
import { BlockaidEvmSimulationInfo, BlockaidSolanaSimulationInfo } from '../core.js';
|
|
2
|
+
import { BlockaidEvmSimulationInfo, BlockaidSolanaSimulationInfo, BlockaidSuiSimulationInfo } from '../core.js';
|
|
3
|
+
type BlockaidSuiRawAssetSide = {
|
|
4
|
+
usd_price?: number;
|
|
5
|
+
summary?: string;
|
|
6
|
+
value?: number | string;
|
|
7
|
+
raw_value: number | string;
|
|
8
|
+
};
|
|
9
|
+
type BlockaidSuiRawAsset = {
|
|
10
|
+
type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
|
|
11
|
+
asset_type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
|
|
12
|
+
name?: string;
|
|
13
|
+
symbol?: string;
|
|
14
|
+
id?: string;
|
|
15
|
+
coin_type?: string;
|
|
16
|
+
address?: string;
|
|
17
|
+
decimals: number;
|
|
18
|
+
logo?: string;
|
|
19
|
+
logo_url?: string;
|
|
20
|
+
};
|
|
21
|
+
type BlockaidSuiRawAssetDiff = {
|
|
22
|
+
asset: BlockaidSuiRawAsset;
|
|
23
|
+
in: BlockaidSuiRawAssetSide | null;
|
|
24
|
+
out: BlockaidSuiRawAssetSide | null;
|
|
25
|
+
asset_type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
|
|
26
|
+
};
|
|
27
|
+
export type BlockaidSuiSimulation = {
|
|
28
|
+
status?: 'Success' | 'Failure';
|
|
29
|
+
account_summary?: {
|
|
30
|
+
account_assets_diffs?: BlockaidSuiRawAssetDiff[];
|
|
31
|
+
account_assets_diff?: BlockaidSuiRawAssetDiff[];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Parse a Blockaid Sui simulation into the user's net balance changes,
|
|
36
|
+
* mirroring how Solana classifies into a `swap` or `transfer` headline.
|
|
37
|
+
*
|
|
38
|
+
* Only emits a headline when the relevant diff set is unambiguous:
|
|
39
|
+
* - exactly one out-only diff → `transfer`
|
|
40
|
+
* - exactly two diffs, one out-only + one in-only on different assets
|
|
41
|
+
* → `swap`
|
|
42
|
+
*
|
|
43
|
+
* Anything more complex (e.g. a swap that also sends a third asset)
|
|
44
|
+
* returns `null` — a partial "you're swapping…" headline would hide the
|
|
45
|
+
* additional movement and mislead users approving the transaction. The
|
|
46
|
+
* popup falls back to the decoded-command view when this returns `null`.
|
|
47
|
+
*/
|
|
48
|
+
export declare const parseBlockaidSuiSimulation: (simulation: BlockaidSuiSimulation) => Promise<BlockaidSuiSimulationInfo | null>;
|
|
3
49
|
export type BlockaidSolanaSimulation = {
|
|
4
50
|
account_summary: {
|
|
5
51
|
account_assets_diff: Array<{
|
|
@@ -84,4 +130,5 @@ export declare const parseBlockaidSolanaSimulation: (simulation: BlockaidSolanaS
|
|
|
84
130
|
* accurate "no change" outcome.
|
|
85
131
|
*/
|
|
86
132
|
export declare const parseBlockaidEvmSimulation: (simulation: BlockaidEVMSimulation, chain: EvmChain) => Promise<BlockaidEvmSimulationInfo>;
|
|
133
|
+
export {};
|
|
87
134
|
//# 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;AAKrD,OAAO,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,126 @@
|
|
|
1
1
|
import { isChainOfKind } from '@vultisig/core-chain/ChainKind';
|
|
2
2
|
import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
|
|
3
|
+
const SUI_NATIVE_COIN_TYPE = '0x2::sui::SUI';
|
|
4
|
+
const isNativeSui = (asset) => asset.type === 'NATIVE' ||
|
|
5
|
+
asset.type === 'SUI' ||
|
|
6
|
+
asset.asset_type === 'NATIVE' ||
|
|
7
|
+
asset.coin_type === SUI_NATIVE_COIN_TYPE ||
|
|
8
|
+
(!asset.id && !asset.coin_type && !asset.address && asset.symbol === 'SUI');
|
|
9
|
+
const coinTypeFromAsset = (asset) => {
|
|
10
|
+
if (asset.id)
|
|
11
|
+
return asset.id;
|
|
12
|
+
if (asset.coin_type)
|
|
13
|
+
return asset.coin_type;
|
|
14
|
+
if (asset.address)
|
|
15
|
+
return asset.address;
|
|
16
|
+
if (isNativeSui(asset))
|
|
17
|
+
return SUI_NATIVE_COIN_TYPE;
|
|
18
|
+
return null;
|
|
19
|
+
};
|
|
20
|
+
// Convert Blockaid's `raw_value` (always an integer in the asset's base unit,
|
|
21
|
+
// emitted as either a JS number or a numeric string) to a bigint. Returns
|
|
22
|
+
// `null` for any input we can't safely represent — `NaN`, `Infinity`, unsafe
|
|
23
|
+
// JS numbers (precision loss above 2^53), or non-integer strings. The parser
|
|
24
|
+
// propagates the `null` so a malformed amount degrades to "no preview"
|
|
25
|
+
// instead of throwing or quietly corrupting the displayed value.
|
|
26
|
+
const toBigInt = (raw) => {
|
|
27
|
+
if (typeof raw === 'number') {
|
|
28
|
+
if (!Number.isFinite(raw) || !Number.isSafeInteger(raw))
|
|
29
|
+
return null;
|
|
30
|
+
return BigInt(raw);
|
|
31
|
+
}
|
|
32
|
+
if (!/^-?\d+$/.test(raw))
|
|
33
|
+
return null;
|
|
34
|
+
return BigInt(raw);
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Parse a Blockaid Sui simulation into the user's net balance changes,
|
|
38
|
+
* mirroring how Solana classifies into a `swap` or `transfer` headline.
|
|
39
|
+
*
|
|
40
|
+
* Only emits a headline when the relevant diff set is unambiguous:
|
|
41
|
+
* - exactly one out-only diff → `transfer`
|
|
42
|
+
* - exactly two diffs, one out-only + one in-only on different assets
|
|
43
|
+
* → `swap`
|
|
44
|
+
*
|
|
45
|
+
* Anything more complex (e.g. a swap that also sends a third asset)
|
|
46
|
+
* returns `null` — a partial "you're swapping…" headline would hide the
|
|
47
|
+
* additional movement and mislead users approving the transaction. The
|
|
48
|
+
* popup falls back to the decoded-command view when this returns `null`.
|
|
49
|
+
*/
|
|
50
|
+
export const parseBlockaidSuiSimulation = async (simulation) => {
|
|
51
|
+
const assetDiffs = simulation.account_summary?.account_assets_diffs ?? simulation.account_summary?.account_assets_diff;
|
|
52
|
+
if (!assetDiffs || assetDiffs.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
// When we have 3 items and one is native SUI, filter it out and use the
|
|
55
|
+
// other two tokens — the native SUI is likely the gas charge, not part of
|
|
56
|
+
// the swap itself. Same heuristic as Solana.
|
|
57
|
+
let relevantDiffs = assetDiffs;
|
|
58
|
+
if (assetDiffs.length === 3) {
|
|
59
|
+
const nativeIdx = assetDiffs.findIndex(diff => isNativeSui(diff.asset));
|
|
60
|
+
if (nativeIdx !== -1) {
|
|
61
|
+
relevantDiffs = assetDiffs.filter((_, i) => i !== nativeIdx);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (relevantDiffs.length === 1) {
|
|
65
|
+
const [diff] = relevantDiffs;
|
|
66
|
+
// A single diff with an `in` side but no `out` would be a pure receive;
|
|
67
|
+
// we don't surface that as a "you're sending" headline.
|
|
68
|
+
if (!diff.out || diff.in)
|
|
69
|
+
return null;
|
|
70
|
+
const from = blockaidSuiAssetFrom(diff.asset);
|
|
71
|
+
if (!from)
|
|
72
|
+
return null;
|
|
73
|
+
const fromAmount = toBigInt(diff.out.raw_value);
|
|
74
|
+
if (fromAmount === null)
|
|
75
|
+
return null;
|
|
76
|
+
return {
|
|
77
|
+
transfer: {
|
|
78
|
+
from,
|
|
79
|
+
fromAmount,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Strict two-diff swap: one diff is out-only, the other is in-only, and
|
|
84
|
+
// they're on different assets. Anything else (mixed in+out on one side,
|
|
85
|
+
// three+ relevant diffs, same-asset refund pair) returns `null` rather
|
|
86
|
+
// than risk a misleading partial headline.
|
|
87
|
+
if (relevantDiffs.length !== 2)
|
|
88
|
+
return null;
|
|
89
|
+
const [a, b] = relevantDiffs;
|
|
90
|
+
const outDiff = !a.in && a.out ? a : !b.in && b.out ? b : null;
|
|
91
|
+
const inDiff = !a.out && a.in ? a : !b.out && b.in ? b : null;
|
|
92
|
+
if (!outDiff || !inDiff || outDiff === inDiff)
|
|
93
|
+
return null;
|
|
94
|
+
if (!outDiff.out || !inDiff.in)
|
|
95
|
+
return null;
|
|
96
|
+
const from = blockaidSuiAssetFrom(outDiff.asset);
|
|
97
|
+
const to = blockaidSuiAssetFrom(inDiff.asset);
|
|
98
|
+
if (!from || !to || from.coinType === to.coinType)
|
|
99
|
+
return null;
|
|
100
|
+
const fromAmount = toBigInt(outDiff.out.raw_value);
|
|
101
|
+
const toAmount = toBigInt(inDiff.in.raw_value);
|
|
102
|
+
if (fromAmount === null || toAmount === null)
|
|
103
|
+
return null;
|
|
104
|
+
return {
|
|
105
|
+
swap: {
|
|
106
|
+
from,
|
|
107
|
+
to,
|
|
108
|
+
fromAmount,
|
|
109
|
+
toAmount,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
const blockaidSuiAssetFrom = (asset) => {
|
|
114
|
+
const coinType = coinTypeFromAsset(asset);
|
|
115
|
+
if (!coinType)
|
|
116
|
+
return null;
|
|
117
|
+
return {
|
|
118
|
+
coinType,
|
|
119
|
+
symbol: asset.symbol || coinType.split('::').pop() || coinType,
|
|
120
|
+
decimals: asset.decimals,
|
|
121
|
+
logo: asset.logo_url ?? asset.logo,
|
|
122
|
+
};
|
|
123
|
+
};
|
|
3
124
|
export const parseBlockaidSolanaSimulation = async (simulation) => {
|
|
4
125
|
const assetDiffs = simulation.account_summary.account_assets_diff;
|
|
5
126
|
// When we have 3 items and one is native SOL, filter it out and use the other two tokens.
|
|
@@ -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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"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { Coin } from '../../../../coin/Coin.js';
|
|
2
|
+
export type BlockaidSuiAsset = {
|
|
3
|
+
coinType: string;
|
|
4
|
+
symbol: string;
|
|
5
|
+
decimals: number;
|
|
6
|
+
logo?: string;
|
|
7
|
+
};
|
|
8
|
+
export type BlockaidSuiSimulationInfo = {
|
|
9
|
+
swap: {
|
|
10
|
+
from: BlockaidSuiAsset;
|
|
11
|
+
to: BlockaidSuiAsset;
|
|
12
|
+
fromAmount: bigint;
|
|
13
|
+
toAmount: bigint;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
transfer: {
|
|
17
|
+
from: BlockaidSuiAsset;
|
|
18
|
+
fromAmount: bigint;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
2
21
|
export type BlockaidSolanaSimulationInfo = {
|
|
3
22
|
swap: {
|
|
4
23
|
fromMint: string;
|
|
@@ -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,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
|
+
{"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,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,gBAAgB,CAAA;QACtB,EAAE,EAAE,gBAAgB,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,IAAI,EAAE,gBAAgB,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,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"}
|
|
@@ -3,4 +3,5 @@ import { BlockaidSupportedEvmChain } from '../../evmChains.js';
|
|
|
3
3
|
import { BlockaidSimulationForChainKind, BlockaidTxSimulationInput } from './resolver.js';
|
|
4
4
|
export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<BlockaidSupportedEvmChain>): Promise<BlockaidSimulationForChainKind<'evm'>>;
|
|
5
5
|
export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<typeof Chain.Solana>): Promise<BlockaidSimulationForChainKind<'solana'>>;
|
|
6
|
+
export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<typeof Chain.Sui>): Promise<BlockaidSimulationForChainKind<'sui'>>;
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAA;AAiBpH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,GAC1D,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;AAEjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GACpD,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEpD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { getChainKind } from '@vultisig/core-chain/ChainKind';
|
|
2
2
|
import { getEvmTxBlockaidSimulation } from './resolvers/evm.js';
|
|
3
3
|
import { getSolanaTxBlockaidSimulation } from './resolvers/solana.js';
|
|
4
|
+
import { getSuiTxBlockaidSimulation } from './resolvers/sui.js';
|
|
4
5
|
const resolvers = {
|
|
5
6
|
solana: getSolanaTxBlockaidSimulation,
|
|
6
7
|
evm: getEvmTxBlockaidSimulation,
|
|
8
|
+
sui: getSuiTxBlockaidSimulation,
|
|
7
9
|
};
|
|
8
10
|
export async function getTxBlockaidSimulation(input) {
|
|
9
11
|
const chainKind = getChainKind(input.chain);
|
|
10
12
|
if (chainKind === 'solana') {
|
|
11
13
|
return resolvers.solana(input);
|
|
12
14
|
}
|
|
15
|
+
if (chainKind === 'sui') {
|
|
16
|
+
return resolvers.sui(input);
|
|
17
|
+
}
|
|
13
18
|
return resolvers.evm(input);
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAK9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAK9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAQ5D,MAAM,SAAS,GAAgB;IAC7B,MAAM,EAAE,6BAA6B;IACrC,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,0BAA0B;CAChC,CAAA;AAcD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAmC;IAEnC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAgE,CAAA;IAC/F,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAgE,CAAA;IAC5F,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAgE,CAAA;AAC5F,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Resolver } from '@vultisig/lib-utils/types/Resolver';
|
|
2
2
|
import { BlockaidSimulationSupportedChain, BlockaidSimulationSupportedChainKind } from '../../simulationChains.js';
|
|
3
|
-
import { BlockaidEVMSimulation, BlockaidSolanaSimulation } from './api/core.js';
|
|
3
|
+
import { BlockaidEVMSimulation, BlockaidSolanaSimulation, BlockaidSuiSimulation } from './api/core.js';
|
|
4
4
|
export type BlockaidTxSimulationInput<T extends BlockaidSimulationSupportedChain = BlockaidSimulationSupportedChain> = {
|
|
5
5
|
chain: T;
|
|
6
6
|
data: Record<string, unknown>;
|
|
@@ -8,6 +8,7 @@ export type BlockaidTxSimulationInput<T extends BlockaidSimulationSupportedChain
|
|
|
8
8
|
type BlockaidSimulationByKind = {
|
|
9
9
|
evm: BlockaidEVMSimulation;
|
|
10
10
|
solana: BlockaidSolanaSimulation;
|
|
11
|
+
sui: BlockaidSuiSimulation;
|
|
11
12
|
};
|
|
12
13
|
export type BlockaidSimulationForChainKind<K extends BlockaidSimulationSupportedChainKind> = BlockaidSimulationByKind[K];
|
|
13
14
|
export type BlockaidTxSimulationResolver<T extends BlockaidSimulationSupportedChain = BlockaidSimulationSupportedChain, K extends BlockaidSimulationSupportedChainKind = BlockaidSimulationSupportedChainKind> = Resolver<BlockaidTxSimulationInput<T>, Promise<BlockaidSimulationForChainKind<K>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEnG,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,IAAI;IACrH,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,qBAAqB,CAAA;IAC1B,MAAM,EAAE,wBAAwB,CAAA;IAChC,GAAG,EAAE,qBAAqB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,oCAAoC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAExH,MAAM,MAAM,4BAA4B,CACtC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,EAC7E,CAAC,SAAS,oCAAoC,GAAG,oCAAoC,IACnF,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { OtherChain } from '@vultisig/core-chain/Chain';
|
|
2
|
+
import { BlockaidTxSimulationResolver } from '../resolver.js';
|
|
3
|
+
/**
|
|
4
|
+
* Asks Blockaid's `/sui/transaction/scan` endpoint for the simulation block
|
|
5
|
+
* only. The same endpoint also serves validation (security risk) — the
|
|
6
|
+
* separate `getSuiTxBlockaidValidation` resolver requests that.
|
|
7
|
+
*/
|
|
8
|
+
export declare const getSuiTxBlockaidSimulation: BlockaidTxSimulationResolver<OtherChain.Sui, 'sui'>;
|
|
9
|
+
//# sourceMappingURL=sui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAIvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAM1D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,4BAA4B,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAG1F,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { queryBlockaid } from '../../../core/query.js';
|
|
2
|
+
/**
|
|
3
|
+
* Asks Blockaid's `/sui/transaction/scan` endpoint for the simulation block
|
|
4
|
+
* only. The same endpoint also serves validation (security risk) — the
|
|
5
|
+
* separate `getSuiTxBlockaidValidation` resolver requests that.
|
|
6
|
+
*/
|
|
7
|
+
export const getSuiTxBlockaidSimulation = async ({ data }) => {
|
|
8
|
+
const { simulation } = await queryBlockaid('/sui/transaction/scan', data);
|
|
9
|
+
return simulation;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=sui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolvers/sui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAA0B,uBAAuB,EAAE,IAAI,CAAC,CAAA;IAClG,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -1210,6 +1210,11 @@
|
|
|
1210
1210
|
"import": "./dist/security/blockaid/tx/simulation/resolvers/solana.js",
|
|
1211
1211
|
"default": "./dist/security/blockaid/tx/simulation/resolvers/solana.js"
|
|
1212
1212
|
},
|
|
1213
|
+
"./security/blockaid/tx/simulation/resolvers/sui": {
|
|
1214
|
+
"types": "./dist/security/blockaid/tx/simulation/resolvers/sui.d.ts",
|
|
1215
|
+
"import": "./dist/security/blockaid/tx/simulation/resolvers/sui.js",
|
|
1216
|
+
"default": "./dist/security/blockaid/tx/simulation/resolvers/sui.js"
|
|
1217
|
+
},
|
|
1213
1218
|
"./security/blockaid/tx/validation": {
|
|
1214
1219
|
"types": "./dist/security/blockaid/tx/validation/index.d.ts",
|
|
1215
1220
|
"import": "./dist/security/blockaid/tx/validation/index.js",
|