diff --git a/eslint.config.js b/eslint.config.js index a0790ad9bfc..7d5d4e1e1d9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -24,7 +24,6 @@ const deferPackages = [ 'web3-eth-accounts', 'twitter-text', 'web3-utils', - 'web3-eth-abi', '@solana/web3.js', // add package names here. ] diff --git a/packages/mask/popups/pages/Wallet/Interaction/TransactionRequest.tsx b/packages/mask/popups/pages/Wallet/Interaction/TransactionRequest.tsx index d5efb1d1a93..6cf0d1d8752 100644 --- a/packages/mask/popups/pages/Wallet/Interaction/TransactionRequest.tsx +++ b/packages/mask/popups/pages/Wallet/Interaction/TransactionRequest.tsx @@ -5,7 +5,6 @@ import { makeStyles } from '@masknet/theme' import { useChainContext, usePrivyWallet, useWallet, useWeb3State } from '@masknet/web3-hooks-base' import { GasOptionType, MessageStateType, TransactionDescriptorType } from '@masknet/web3-shared-base' import { - abiCoder, ChainId, createJsonRpcRequest, createJsonRpcResponse, @@ -27,6 +26,7 @@ import { UnlockERC20Token } from '../../../components/UnlockERC20Token/index.js' import { UnlockERC721Token } from '../../../components/UnlockERC721Token/index.js' import { type TransactionDetail } from '../type.js' import type { InteractionItemProps } from './interaction.js' +import { decodeAbiParameters, encodeAbiParameters, hexToBigInt } from 'viem' const useStyles = makeStyles()((theme) => ({ text: { @@ -78,7 +78,7 @@ const approveParametersType = [ name: 'value', type: 'uint256', }, -] +] as const let mockingPrivyPid = Date.now() // Use unix timestamp as pid to avoid duplicate mocking export function TransactionRequest(props: InteractionItemProps) { @@ -137,14 +137,15 @@ export function TransactionRequest(props: InteractionItemProps) { if (approvedAmount) { if (!transaction.formattedTransaction?._tx.data) return - const parameters = abiCoder.decodeParameters( + const [spender, _approvedAmount] = decodeAbiParameters( approveParametersType, - transaction.formattedTransaction._tx.data.slice(10), + `0x${transaction.formattedTransaction._tx.data.slice(10)}`, ) - const parametersString = abiCoder - .encodeParameters(approveParametersType, [parameters.spender, web3_utils.toHex(approvedAmount)]) - .slice(2) + const parametersString = encodeAbiParameters(approveParametersType, [ + spender, + approvedAmount.startsWith('0x') ? hexToBigInt(approvedAmount as `0x${string}`) : BigInt(approvedAmount), + ]).slice(2) const result = `${transaction.formattedTransaction._tx.data.slice(0, 10)}${parametersString}` diff --git a/packages/web3-shared/evm/package.json b/packages/web3-shared/evm/package.json index 5ad9fdd4c81..0cb6bba888c 100644 --- a/packages/web3-shared/evm/package.json +++ b/packages/web3-shared/evm/package.json @@ -24,7 +24,6 @@ "punycode": "^2.3.1", "web3-core": "1.10.4", "web3-eth": "1.10.4", - "web3-eth-abi": "1.10.4", "web3-eth-accounts": "1.10.4", "web3-eth-contract": "1.10.4", "web3-utils": "1.10.4", diff --git a/packages/web3-shared/evm/src/helpers/abiCoder.ts b/packages/web3-shared/evm/src/helpers/abiCoder.ts deleted file mode 100644 index 1fa8f28b7ae..00000000000 --- a/packages/web3-shared/evm/src/helpers/abiCoder.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { lazyProxy } from '@masknet/shared-base' -import defer * as ABICoder from 'web3-eth-abi' - -export const abiCoder = lazyProxy(() => ABICoder.default) as unknown as ABICoder.AbiCoder diff --git a/packages/web3-shared/evm/src/index.ts b/packages/web3-shared/evm/src/index.ts index 78880d2478b..8ecf2638db8 100644 --- a/packages/web3-shared/evm/src/index.ts +++ b/packages/web3-shared/evm/src/index.ts @@ -1,7 +1,6 @@ export * from './constants/index.js' export * from './helpers/abiArrayToMappedObject.js' -export * from './helpers/abiCoder.js' export * from './helpers/addGasMargin.js' export * from './helpers/address.js' export * from './helpers/createAccount.js' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7051da2d68a..ba7959d79e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2967,9 +2967,6 @@ importers: web3-eth: specifier: 1.10.4 version: 1.10.4(encoding@0.1.13) - web3-eth-abi: - specifier: 1.10.4 - version: 1.10.4 web3-eth-accounts: specifier: 1.10.4 version: 1.10.4(encoding@0.1.13) @@ -15184,6 +15181,7 @@ packages: tar@4.4.19: resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} engines: {node: '>=4.5'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}