@exodus/ethereum-plugin 2.30.4 → 2.32.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 +20 -0
- package/package.json +4 -4
- package/src/index.js +6 -0
- package/src/staking/polygon/service.js +17 -55
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.32.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-plugin@2.31.0...@exodus/ethereum-plugin@2.32.0) (2026-05-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
* feat(ethereum-api): warn on risky recipients for native ETH sends (#8110)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## [2.31.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-plugin@2.30.4...@exodus/ethereum-plugin@2.31.0) (2026-05-19)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
* feat(ethereum): add no-history receive logs for portfolio transfers (#7967)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## [2.30.4](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-plugin@2.30.3...@exodus/ethereum-plugin@2.30.4) (2026-05-12)
|
|
7
27
|
|
|
8
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/ethereum-plugin",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.0",
|
|
4
4
|
"description": "Ethereum plugin for Exodus SDK powered wallets",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@exodus/asset-lib": "^5.9.0",
|
|
25
25
|
"@exodus/basic-utils": "^3.0.1",
|
|
26
26
|
"@exodus/currency": "^6.0.1",
|
|
27
|
-
"@exodus/ethereum-api": "^8.
|
|
27
|
+
"@exodus/ethereum-api": "^8.76.0",
|
|
28
28
|
"@exodus/ethereum-lib": "^5.24.1",
|
|
29
29
|
"@exodus/ethereum-meta": "^2.9.0",
|
|
30
30
|
"@exodus/ethereumjs": "^1.0.0",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@exodus/assets": "^11.4.0",
|
|
39
39
|
"@exodus/assets-testing": "^1.0.0",
|
|
40
40
|
"@exodus/crypto": "^1.0.0-rc.13",
|
|
41
|
-
"@exodus/evm-fork-testing": "^0.
|
|
41
|
+
"@exodus/evm-fork-testing": "^0.7.0",
|
|
42
42
|
"@exodus/models": "^13.0.0",
|
|
43
43
|
"@exodus/solidity-contract": "^1.3.0",
|
|
44
44
|
"@exodus/web3-ethereum-utils": "^4.7.5",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"type": "git",
|
|
54
54
|
"url": "git+https://github.com/ExodusMovement/assets.git"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "73ff97a75479c3b25fccc11f31879ec634818d63"
|
|
57
57
|
}
|
package/src/index.js
CHANGED
|
@@ -7,6 +7,9 @@ import { stakingConfiguration, stakingDependencies } from './staking.js'
|
|
|
7
7
|
|
|
8
8
|
export { POLYGON_STAKING_PREFLIGHT_ERROR_REASONS } from './staking/polygon/service.js'
|
|
9
9
|
|
|
10
|
+
// Exodus-hosted proxy to Hypernative's transaction risk assessment endpoint.
|
|
11
|
+
const RISK_ASSESSMENT_PROXY_URL = 'https://simulation.a.exodus.io/simulation/transaction/assessment'
|
|
12
|
+
|
|
10
13
|
const createAsset = createAssetFactory({
|
|
11
14
|
assetsList,
|
|
12
15
|
feeDataConfig: {
|
|
@@ -57,6 +60,9 @@ const createAsset = createAssetFactory({
|
|
|
57
60
|
monitorInterval: '1m',
|
|
58
61
|
confirmationsNumber: 30,
|
|
59
62
|
privacyRpcUrl: 'https://servo.a.exodus.io',
|
|
63
|
+
riskAssessment: {
|
|
64
|
+
apiUrl: RISK_ASSESSMENT_PROXY_URL,
|
|
65
|
+
},
|
|
60
66
|
eip7702Supported: [
|
|
61
67
|
{ address: '0xD2e28229F6f2c235e57De2EbC727025A1D0530FB', name: 'Trust Wallet' },
|
|
62
68
|
{ address: '0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B', name: 'MetaMask' },
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
EthLikeError,
|
|
7
7
|
EVM_ERROR_TYPES,
|
|
8
8
|
getAggregateTransactionPricing,
|
|
9
|
-
getOptimisticTxLogEffects,
|
|
10
9
|
scaleGasLimitEstimate,
|
|
11
10
|
stakingProviderClientFactory,
|
|
12
11
|
} from '@exodus/ethereum-api'
|
|
@@ -300,59 +299,22 @@ export function stakingServiceFactory({ assetClientInterface, server: _server, s
|
|
|
300
299
|
revertOnSimulationError,
|
|
301
300
|
})
|
|
302
301
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
// Pre-compute txIDs
|
|
318
|
-
const approveTxId = `0x${approveSigned.txId.toString('hex')}`
|
|
319
|
-
const delegateTxId = `0x${delegateSigned.txId.toString('hex')}`
|
|
320
|
-
|
|
321
|
-
const bundleResponse = await feeAsset.broadcastPrivateBundle({
|
|
322
|
-
txs: [approveSigned, delegateSigned].map(({ rawTx }) => rawTx),
|
|
302
|
+
const { txIds } = await asset.baseAsset.sendPrivateBundle({
|
|
303
|
+
unsignedTxBundle: [
|
|
304
|
+
{
|
|
305
|
+
asset: feeAsset,
|
|
306
|
+
unsignedTx: unsignedTxApprove.unsignedTx,
|
|
307
|
+
walletAccount,
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
asset: feeAsset,
|
|
311
|
+
unsignedTx: unsignedTxDelegate.unsignedTx,
|
|
312
|
+
walletAccount,
|
|
313
|
+
},
|
|
314
|
+
],
|
|
323
315
|
})
|
|
324
|
-
const bundleHash = bundleResponse?.bundleHash
|
|
325
|
-
|
|
326
|
-
const { optimisticTxLogEffects: approveOptimisticTxLogEffects } =
|
|
327
|
-
await getOptimisticTxLogEffects({
|
|
328
|
-
asset: feeAsset,
|
|
329
|
-
assetClientInterface,
|
|
330
|
-
fromAddress: delegatorAddress.toString(),
|
|
331
|
-
txId: approveTxId,
|
|
332
|
-
unsignedTx: unsignedTxApprove.unsignedTx,
|
|
333
|
-
walletAccount,
|
|
334
|
-
bundleId: bundleHash ?? undefined,
|
|
335
|
-
})
|
|
336
316
|
|
|
337
|
-
const
|
|
338
|
-
await getOptimisticTxLogEffects({
|
|
339
|
-
asset: feeAsset,
|
|
340
|
-
assetClientInterface,
|
|
341
|
-
fromAddress: delegatorAddress.toString(),
|
|
342
|
-
txId: delegateTxId,
|
|
343
|
-
unsignedTx: unsignedTxDelegate.unsignedTx,
|
|
344
|
-
walletAccount,
|
|
345
|
-
bundleId: bundleHash ?? undefined,
|
|
346
|
-
})
|
|
347
|
-
// Combine optimistic effects from both transactions
|
|
348
|
-
const tokenOptimisticEffects = [
|
|
349
|
-
...approveOptimisticTxLogEffects,
|
|
350
|
-
...delegateOptimisticTxLogEffects,
|
|
351
|
-
]
|
|
352
|
-
|
|
353
|
-
for (const optimisticEffect of tokenOptimisticEffects) {
|
|
354
|
-
await assetClientInterface.updateTxLogAndNotify(optimisticEffect)
|
|
355
|
-
}
|
|
317
|
+
const delegateTxId = txIds[txIds.length - 1]
|
|
356
318
|
|
|
357
319
|
await stakingProvider.notifyStaking({
|
|
358
320
|
txId: delegateTxId,
|
|
@@ -589,7 +551,7 @@ export function stakingServiceFactory({ assetClientInterface, server: _server, s
|
|
|
589
551
|
feeData,
|
|
590
552
|
} = {}) {
|
|
591
553
|
const { feeAsset } = await getStakeAssets()
|
|
592
|
-
const
|
|
554
|
+
const { unsignedTx } = await feeAsset.api.createTx({
|
|
593
555
|
asset: feeAsset,
|
|
594
556
|
walletAccount,
|
|
595
557
|
address: to,
|
|
@@ -600,9 +562,9 @@ export function stakingServiceFactory({ assetClientInterface, server: _server, s
|
|
|
600
562
|
tipGasPrice,
|
|
601
563
|
waitForConfirmation,
|
|
602
564
|
feeData,
|
|
603
|
-
}
|
|
565
|
+
})
|
|
604
566
|
|
|
605
|
-
const { txId } = await feeAsset.api.sendTx(
|
|
567
|
+
const { txId } = await feeAsset.api.sendTx({ asset: feeAsset, walletAccount, unsignedTx })
|
|
606
568
|
|
|
607
569
|
return txId
|
|
608
570
|
}
|