@vultisig/core-chain 2.31.0 → 2.31.1
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 +6 -0
- package/dist/chains/evm/chainInfo.d.ts +3 -0
- package/dist/chains/evm/chainInfo.d.ts.map +1 -1
- package/dist/security/dangerousAddresses.d.ts +16 -1
- package/dist/security/dangerousAddresses.d.ts.map +1 -1
- package/dist/security/dangerousAddresses.js +26 -7
- package/dist/security/dangerousAddresses.js.map +1 -1
- package/dist/swap/native/api/getNativeSwapQuote.d.ts.map +1 -1
- package/dist/swap/native/api/getNativeSwapQuote.js +10 -4
- package/dist/swap/native/api/getNativeSwapQuote.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 2.31.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1720](https://github.com/vultisig/vultisig-sdk/pull/1720) [`413423b`](https://github.com/vultisig/vultisig-sdk/commit/413423b70655e6e4d7faf9cb9f10b63f601e42dc) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Carry caller-supplied THORChain and MayaChain swap destinations through agent MsgDeposit execution, preserve the existing self-swap default, and reject quote memos that substitute another destination.
|
|
8
|
+
|
|
3
9
|
## 2.31.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -35,6 +35,7 @@ export declare const hyperliquid: {
|
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
sourceId?: number | undefined | undefined;
|
|
38
|
+
supportsTransactionReplacementDetection?: boolean | undefined | undefined;
|
|
38
39
|
testnet?: boolean | undefined | undefined;
|
|
39
40
|
custom?: Record<string, unknown> | undefined;
|
|
40
41
|
extendSchema?: Record<string, unknown> | undefined;
|
|
@@ -89,6 +90,7 @@ export declare const robinhood: {
|
|
|
89
90
|
};
|
|
90
91
|
};
|
|
91
92
|
sourceId?: number | undefined | undefined;
|
|
93
|
+
supportsTransactionReplacementDetection?: boolean | undefined | undefined;
|
|
92
94
|
testnet?: boolean | undefined | undefined;
|
|
93
95
|
custom?: Record<string, unknown> | undefined;
|
|
94
96
|
extendSchema?: Record<string, unknown> | undefined;
|
|
@@ -146,6 +148,7 @@ export declare const evmChainInfo: Record<EvmChain, {
|
|
|
146
148
|
};
|
|
147
149
|
experimental_preconfirmationTime?: number | undefined;
|
|
148
150
|
sourceId?: number | undefined;
|
|
151
|
+
supportsTransactionReplacementDetection?: boolean | undefined;
|
|
149
152
|
testnet?: boolean | undefined;
|
|
150
153
|
custom?: Record<string, unknown> | undefined;
|
|
151
154
|
extendSchema?: Record<string, unknown> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AA0BrD,eAAO,MAAM,2BAA2B,8BAA8B,CAAA;AAGtE,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"chainInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AA0BrD,eAAO,MAAM,2BAA2B,8BAA8B,CAAA;AAGtE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBtB,CAAA;AAGF,eAAO,MAAM,yBAAyB,0CAA0C,CAAA;AAGhF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBpB,CAAA;AAsCF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;mBAzDwC,CAAC;4BACxB,CAAC;kBAEf,CAAC;uBAG1B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DF,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,QAAQ,KAAG,MAA+D,CAAA;AAE9G,eAAO,MAAM,aAAa,GAAI,OAAO,QAAQ,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,KAAG,QAAQ,GAAG,SAEjE,CAAA"}
|
|
@@ -42,11 +42,26 @@ export declare const XRP_DANGEROUS_ADDRESSES: Record<string, string>;
|
|
|
42
42
|
* Return the dangerous-address reason string if `address` is a known EVM burn
|
|
43
43
|
* address, otherwise `undefined`. Shape-based: any `0x`+40-hex string is vetted
|
|
44
44
|
* against the EVM burn-list regardless of the chain it's destined for.
|
|
45
|
+
*
|
|
46
|
+
* Prototype-safe: uses `Object.prototype.hasOwnProperty` so that keys like
|
|
47
|
+
* `__proto__`, `toString`, or `constructor` never produce a false-positive.
|
|
48
|
+
* Input is trimmed so whitespace-padded copies of a burn address don't escape.
|
|
45
49
|
*/
|
|
46
50
|
export declare const getEvmDangerousReason: (address: string) => string | undefined;
|
|
47
51
|
/** True iff `address` is a known EVM burn / dead address. */
|
|
48
52
|
export declare const isEvmBurnAddress: (address: string) => boolean;
|
|
49
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Return the chain-specific dangerous-address reason, if one applies.
|
|
55
|
+
*
|
|
56
|
+
* Prototype-safe: all map lookups go through `Object.prototype.hasOwnProperty`
|
|
57
|
+
* so that a crafted input like `__proto__` never produces a false-positive
|
|
58
|
+
* throw on an otherwise-valid chain.
|
|
59
|
+
*
|
|
60
|
+
* Chain-alias normalization: lowercase so that canonical enum values
|
|
61
|
+
* (`'Ripple'`, `'Bitcoin-Cash'`) and common aliases (`'xrp'`, `'bitcoincash'`)
|
|
62
|
+
* both resolve. Only the lookup key is normalised; the address is kept verbatim
|
|
63
|
+
* (non-EVM burn lists are case-sensitive base58/b58 strings).
|
|
64
|
+
*/
|
|
50
65
|
export declare const getChainDangerousReason: (chain: string, address: string) => string | undefined;
|
|
51
66
|
/**
|
|
52
67
|
* Throws a descriptive error if `address` is a known EVM burn / dead address.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangerousAddresses.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/security/dangerousAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK1D,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG3D,CAAA;AAED,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1D,CAAA;AAaD
|
|
1
|
+
{"version":3,"file":"dangerousAddresses.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/security/dangerousAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK1D,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG3D,CAAA;AAED,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1D,CAAA;AAaD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SAKhE,CAAA;AAED,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,OAAuD,CAAA;AAE1G;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,SAmBjF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,IAK1D,CAAA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAM9E"}
|
|
@@ -66,26 +66,45 @@ const EVM_ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/i;
|
|
|
66
66
|
* Return the dangerous-address reason string if `address` is a known EVM burn
|
|
67
67
|
* address, otherwise `undefined`. Shape-based: any `0x`+40-hex string is vetted
|
|
68
68
|
* against the EVM burn-list regardless of the chain it's destined for.
|
|
69
|
+
*
|
|
70
|
+
* Prototype-safe: uses `Object.prototype.hasOwnProperty` so that keys like
|
|
71
|
+
* `__proto__`, `toString`, or `constructor` never produce a false-positive.
|
|
72
|
+
* Input is trimmed so whitespace-padded copies of a burn address don't escape.
|
|
69
73
|
*/
|
|
70
74
|
export const getEvmDangerousReason = (address) => {
|
|
71
|
-
|
|
75
|
+
const trimmed = address.trim();
|
|
76
|
+
if (!EVM_ADDRESS_RE.test(trimmed))
|
|
72
77
|
return undefined;
|
|
73
|
-
|
|
78
|
+
const key = trimmed.toLowerCase();
|
|
79
|
+
return Object.prototype.hasOwnProperty.call(EVM_DANGEROUS_ADDRESSES, key) ? EVM_DANGEROUS_ADDRESSES[key] : undefined;
|
|
74
80
|
};
|
|
75
81
|
/** True iff `address` is a known EVM burn / dead address. */
|
|
76
82
|
export const isEvmBurnAddress = (address) => getEvmDangerousReason(address) !== undefined;
|
|
77
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Return the chain-specific dangerous-address reason, if one applies.
|
|
85
|
+
*
|
|
86
|
+
* Prototype-safe: all map lookups go through `Object.prototype.hasOwnProperty`
|
|
87
|
+
* so that a crafted input like `__proto__` never produces a false-positive
|
|
88
|
+
* throw on an otherwise-valid chain.
|
|
89
|
+
*
|
|
90
|
+
* Chain-alias normalization: lowercase so that canonical enum values
|
|
91
|
+
* (`'Ripple'`, `'Bitcoin-Cash'`) and common aliases (`'xrp'`, `'bitcoincash'`)
|
|
92
|
+
* both resolve. Only the lookup key is normalised; the address is kept verbatim
|
|
93
|
+
* (non-EVM burn lists are case-sensitive base58/b58 strings).
|
|
94
|
+
*/
|
|
78
95
|
export const getChainDangerousReason = (chain, address) => {
|
|
79
96
|
const normalizedChain = chain.trim().toLowerCase();
|
|
80
97
|
const destination = address.trim();
|
|
98
|
+
const safeGet = (map, key) => Object.prototype.hasOwnProperty.call(map, key) ? map[key] : undefined;
|
|
81
99
|
if (normalizedChain === 'solana') {
|
|
82
|
-
return SOLANA_DANGEROUS_ADDRESSES
|
|
100
|
+
return safeGet(SOLANA_DANGEROUS_ADDRESSES, destination);
|
|
83
101
|
}
|
|
84
102
|
if (UTXO_CHAINS.has(normalizedChain)) {
|
|
85
|
-
return UTXO_DANGEROUS_ADDRESSES
|
|
103
|
+
return safeGet(UTXO_DANGEROUS_ADDRESSES, destination);
|
|
86
104
|
}
|
|
87
|
-
|
|
88
|
-
|
|
105
|
+
// Accept both canonical enum ('Ripple') and common API alias ('xrp').
|
|
106
|
+
if (normalizedChain === 'ripple' || normalizedChain === 'xrp') {
|
|
107
|
+
return safeGet(XRP_DANGEROUS_ADDRESSES, destination);
|
|
89
108
|
}
|
|
90
109
|
return undefined;
|
|
91
110
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangerousAddresses.js","sourceRoot":"","sources":["../../../../../packages/core/chain/security/dangerousAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,sFAAsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,4CAA4C,EAC1C,4EAA4E;IAC9E,4CAA4C,EAAE,oEAAoE;IAClH,4CAA4C,EAAE,+CAA+C;CAC9F,CAAA;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IAChE,kCAAkC,EAAE,6DAA6D;IACjG,2CAA2C,EAAE,oDAAoD;IACjG,2CAA2C,EAAE,mDAAmD;IAChG,6CAA6C,EAC3C,4EAA4E;CAC/E,CAAA;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,6BAA6B,EAAE,+CAA+C;IAC9E,oCAAoC,EAAE,wDAAwD;CAC/F,CAAA;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,2BAA2B,EAAE,uEAAuE;IACpG,0BAA0B,EACxB,iGAAiG;CACpG,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEjG;;qBAEqB;AACrB,MAAM,cAAc,GAAG,sBAAsB,CAAA;AAE7C
|
|
1
|
+
{"version":3,"file":"dangerousAddresses.js","sourceRoot":"","sources":["../../../../../packages/core/chain/security/dangerousAddresses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,EAEL,eAAe,EAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAE7E,KAAK,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACtE,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qBAAqB,CAAC,EAAE,yBAAyB,CAAA;CAClD,CAAA;AASD,eAAO,MAAM,0CAA0C,MAAM,CAAA;AAiG7D,eAAO,MAAM,kBAAkB,GAAU,oHAUtC,uBAAuB,KAAG,OAAO,CAAC,eAAe,CAiGnD,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { toChainAmount } from '@vultisig/core-chain/amount/toChainAmount';
|
|
2
2
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
3
|
+
import { isChainOfKind } from '@vultisig/core-chain/ChainKind';
|
|
3
4
|
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
4
5
|
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
5
6
|
import { chainFeeCoin } from '../../../coin/chainFeeCoin.js';
|
|
@@ -35,7 +36,7 @@ const requestNativeSwapQuote = async ({ swapChain, swapBaseUrl, fromAsset, toAss
|
|
|
35
36
|
const url = `${swapBaseUrl}?${params.toString()}`;
|
|
36
37
|
return queryUrl(url);
|
|
37
38
|
};
|
|
38
|
-
const assertOkQuote = (result, from) => {
|
|
39
|
+
const assertOkQuote = (result, from, to, destination) => {
|
|
39
40
|
if ('error' in result) {
|
|
40
41
|
if (isInError(result.error, 'not enough asset to pay for fees')) {
|
|
41
42
|
const { ticker } = chainFeeCoin[from.chain];
|
|
@@ -43,6 +44,11 @@ const assertOkQuote = (result, from) => {
|
|
|
43
44
|
}
|
|
44
45
|
throw new Error(result.error);
|
|
45
46
|
}
|
|
47
|
+
const memoDestination = typeof result.memo === 'string' ? result.memo.split(':')[2] : undefined;
|
|
48
|
+
const normalizeDestination = (value) => (isChainOfKind(to.chain, 'evm') ? value.toLowerCase() : value);
|
|
49
|
+
if (!memoDestination || normalizeDestination(memoDestination) !== normalizeDestination(destination)) {
|
|
50
|
+
throw new Error(`Native swap quote destination mismatch: requested "${destination}", but executable memo routes to "${memoDestination ?? ''}".`);
|
|
51
|
+
}
|
|
46
52
|
return result;
|
|
47
53
|
};
|
|
48
54
|
// Cardano is enabled as a MayaChain source at the enabled-chains/quote level
|
|
@@ -83,7 +89,7 @@ export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amo
|
|
|
83
89
|
nativeAffiliateConfig,
|
|
84
90
|
});
|
|
85
91
|
return {
|
|
86
|
-
...assertOkQuote(result, from),
|
|
92
|
+
...assertOkQuote(result, from, to, destination),
|
|
87
93
|
swapChain,
|
|
88
94
|
liquidity_tolerance_bps: slippageToleranceBps,
|
|
89
95
|
};
|
|
@@ -101,7 +107,7 @@ export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amo
|
|
|
101
107
|
referral,
|
|
102
108
|
nativeAffiliateConfig,
|
|
103
109
|
});
|
|
104
|
-
const rapid = assertOkQuote(rapidResult, from);
|
|
110
|
+
const rapid = assertOkQuote(rapidResult, from, to, destination);
|
|
105
111
|
const totalBps = rapid.fees.total_bps;
|
|
106
112
|
if (totalBps === undefined || totalBps <= THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS) {
|
|
107
113
|
return { ...rapid, swapChain, liquidity_tolerance_bps: slippageToleranceBps };
|
|
@@ -125,7 +131,7 @@ export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amo
|
|
|
125
131
|
referral,
|
|
126
132
|
nativeAffiliateConfig,
|
|
127
133
|
});
|
|
128
|
-
streaming = assertOkQuote(streamingRes, from);
|
|
134
|
+
streaming = assertOkQuote(streamingRes, from, to, destination);
|
|
129
135
|
}
|
|
130
136
|
catch (error) {
|
|
131
137
|
console.warn('[thorchain] streaming quote failed after elevated rapid slippage; using rapid quote', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNativeSwapQuote.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"getNativeSwapQuote.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "2.31.
|
|
3
|
+
"version": "2.31.1",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -2247,7 +2247,7 @@
|
|
|
2247
2247
|
"long": "^5.3.2",
|
|
2248
2248
|
"ripple-address-codec": "^5.0.1",
|
|
2249
2249
|
"tiny-secp256k1": "^2.2.4",
|
|
2250
|
-
"viem": "^2.
|
|
2250
|
+
"viem": "^2.55.10",
|
|
2251
2251
|
"xrpl": "^5.0.0"
|
|
2252
2252
|
}
|
|
2253
2253
|
}
|