From d1632daf34b31a0eca61ad1d2a9d3105de3d5640 Mon Sep 17 00:00:00 2001 From: tom goriunov Date: Thu, 12 Sep 2024 14:10:23 +0400 Subject: [PATCH] Display proxy pattern info on contract page (#2230) * Display proxy pattern info in UI Fixes #2209 * update texts * [skip ci] adjust alert condition --- mocks/contract/info.ts | 6 +- types/api/contract.ts | 16 +++- ui/address/contract/ContractCode.tsx | 23 +---- .../contract/ContractCodeProxyPattern.pw.tsx | 20 ++++ .../contract/ContractCodeProxyPattern.tsx | 89 ++++++++++++++++++ ...ault_with-proxy-address-alert-mobile-1.png | Bin 9309 -> 6375 bytes ...bile_with-proxy-address-alert-mobile-1.png | Bin 9333 -> 6277 bytes ...pe-with-link-but-without-description-1.png | Bin 0 -> 6428 bytes ..._default_proxy-type-with-link-mobile-1.png | Bin 0 -> 5786 bytes ....tsx_default_proxy-type-without-link-1.png | Bin 0 -> 5357 bytes ...x_mobile_proxy-type-with-link-mobile-1.png | Bin 0 -> 5557 bytes 11 files changed, 131 insertions(+), 23 deletions(-) create mode 100644 ui/address/contract/ContractCodeProxyPattern.pw.tsx create mode 100644 ui/address/contract/ContractCodeProxyPattern.tsx create mode 100644 ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_default_proxy-type-with-link-but-without-description-1.png create mode 100644 ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_default_proxy-type-with-link-mobile-1.png create mode 100644 ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_default_proxy-type-without-link-1.png create mode 100644 ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_mobile_proxy-type-with-link-mobile-1.png diff --git a/mocks/contract/info.ts b/mocks/contract/info.ts index 75ddc067ef..daedb99650 100644 --- a/mocks/contract/info.ts +++ b/mocks/contract/info.ts @@ -43,7 +43,7 @@ export const verified: SmartContract = { file_path: '', additional_sources: [], verified_twin_address_hash: null, - minimal_proxy_address_hash: null, + proxy_type: null, }; export const certified: SmartContract = { @@ -85,7 +85,7 @@ export const withProxyAddress: SmartContract = { ...verified, is_verified: false, verified_twin_address_hash: '0xa62744bee8646e237441cdbfdedd3458861748a8', - minimal_proxy_address_hash: '0xa62744bee8646e237441cdbfdedd3458861748a8', + proxy_type: 'eip1967', }; export const selfDestructed: SmartContract = { @@ -133,7 +133,7 @@ export const nonVerified: SmartContract = { additional_sources: [], external_libraries: null, verified_twin_address_hash: null, - minimal_proxy_address_hash: null, + proxy_type: null, language: null, license_type: null, }; diff --git a/types/api/contract.ts b/types/api/contract.ts index a4f2d17813..f2e1ad61d0 100644 --- a/types/api/contract.ts +++ b/types/api/contract.ts @@ -19,6 +19,20 @@ export type SmartContractLicenseType = 'gnu_agpl_v3' | 'bsl_1_1'; +export type SmartContractProxyType = + | 'eip1167' + | 'eip1967' + | 'eip1822' + | 'eip930' + | 'eip2535' + | 'master_copy' + | 'basic_implementation' + | 'basic_get_implementation' + | 'comptroller' + | 'clone_with_immutable_arguments' + | 'unknown' + | null; + export interface SmartContract { deployed_bytecode: string | null; creation_bytecode: string | null; @@ -53,7 +67,7 @@ export interface SmartContract { remappings?: Array; }; verified_twin_address_hash: string | null; - minimal_proxy_address_hash: string | null; + proxy_type: SmartContractProxyType | null; language: string | null; license_type: SmartContractLicenseType | null; certified?: boolean; diff --git a/ui/address/contract/ContractCode.tsx b/ui/address/contract/ContractCode.tsx index 63642dbd2c..a75f3a37fc 100644 --- a/ui/address/contract/ContractCode.tsx +++ b/ui/address/contract/ContractCode.tsx @@ -1,4 +1,4 @@ -import { Flex, Skeleton, Button, Grid, GridItem, Alert, Link, chakra, Box, useColorModeValue } from '@chakra-ui/react'; +import { Flex, Skeleton, Button, Grid, GridItem, Alert, chakra, Box, useColorModeValue } from '@chakra-ui/react'; import type { UseQueryResult } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query'; import type { Channel } from 'phoenix'; @@ -24,6 +24,7 @@ import LinkExternal from 'ui/shared/links/LinkExternal'; import LinkInternal from 'ui/shared/links/LinkInternal'; import RawDataSnippet from 'ui/shared/RawDataSnippet'; +import ContractCodeProxyPattern from './ContractCodeProxyPattern'; import ContractSecurityAudits from './ContractSecurityAudits'; import ContractSourceCode from './ContractSourceCode'; @@ -230,7 +231,7 @@ const ContractCode = ({ addressHash, contractQuery, channel }: Props) => { Warning! Contract bytecode has been changed and does not match the verified one. Therefore, interaction with this smart contract may be risky. ) } - { !data?.is_verified && data?.verified_twin_address_hash && !data?.minimal_proxy_address_hash && ( + { !data?.is_verified && data?.verified_twin_address_hash && (!data?.proxy_type || data.proxy_type === 'unknown') && ( Contract is not verified. However, we found a verified contract with the same bytecode in Blockscout DB { page ) } - { data?.minimal_proxy_address_hash && ( - - Minimal Proxy Contract for - - . - - EIP-1167 - - minimal bytecode implementation that delegates all calls to a known address - - - ) } + { data?.proxy_type && } { data?.is_verified && ( diff --git a/ui/address/contract/ContractCodeProxyPattern.pw.tsx b/ui/address/contract/ContractCodeProxyPattern.pw.tsx new file mode 100644 index 0000000000..a2e97768c0 --- /dev/null +++ b/ui/address/contract/ContractCodeProxyPattern.pw.tsx @@ -0,0 +1,20 @@ +import React from 'react'; + +import { test, expect } from 'playwright/lib'; + +import ContractCodeProxyPattern from './ContractCodeProxyPattern'; + +test('proxy type with link +@mobile', async({ render }) => { + const component = await render(); + await expect(component).toHaveScreenshot(); +}); + +test('proxy type with link but without description', async({ render }) => { + const component = await render(); + await expect(component).toHaveScreenshot(); +}); + +test('proxy type without link', async({ render }) => { + const component = await render(); + await expect(component).toHaveScreenshot(); +}); diff --git a/ui/address/contract/ContractCodeProxyPattern.tsx b/ui/address/contract/ContractCodeProxyPattern.tsx new file mode 100644 index 0000000000..9279af0f62 --- /dev/null +++ b/ui/address/contract/ContractCodeProxyPattern.tsx @@ -0,0 +1,89 @@ +import { Alert } from '@chakra-ui/react'; +import React from 'react'; + +import type { SmartContractProxyType } from 'types/api/contract'; + +import LinkExternal from 'ui/shared/links/LinkExternal'; + +interface Props { + type: NonNullable; +} + +const PROXY_TYPES: Record, { + name: string; + link?: string; + description?: string; +}> = { + eip1167: { + name: 'EIP-1167', + link: 'https://eips.ethereum.org/EIPS/eip-1167', + description: 'Minimal proxy', + }, + eip1967: { + name: 'EIP-1967', + link: 'https://eips.ethereum.org/EIPS/eip-1967', + description: 'Proxy storage slots', + }, + eip1822: { + name: 'EIP-1822', + link: 'https://eips.ethereum.org/EIPS/eip-1822', + description: 'Universal upgradeable proxy standard (UUPS)', + }, + eip2535: { + name: 'EIP-2535', + link: 'https://eips.ethereum.org/EIPS/eip-2535', + description: 'Diamond proxy', + }, + eip930: { + name: 'ERC-930', + link: 'https://github.com/ethereum/EIPs/issues/930', + description: 'Eternal storage', + }, + clone_with_immutable_arguments: { + name: 'Clones with immutable arguments', + link: 'https://github.com/wighawag/clones-with-immutable-args', + }, + master_copy: { + name: 'GnosisSafe', + link: 'https://github.com/safe-global/safe-smart-account', + }, + comptroller: { + name: 'Compound protocol', + link: 'https://github.com/compound-finance/compound-protocol', + }, + basic_implementation: { + name: 'public implementation getter in proxy smart-contract', + }, + basic_get_implementation: { + name: 'public getImplementation getter in proxy smart-contract', + }, + unknown: { + name: 'Unknown proxy pattern', + }, +}; + +const ContractCodeProxyPattern = ({ type }: Props) => { + const proxyInfo = PROXY_TYPES[type]; + + if (!proxyInfo || type === 'unknown') { + return null; + } + + return ( + + { proxyInfo.link ? ( + <> + This proxy smart-contract is detected via { proxyInfo.name } + { proxyInfo.description && ` - ${ proxyInfo.description }` } + + ) : ( + <> + This proxy smart-contract is detected via { proxyInfo.name } + { proxyInfo.description && ` - ${ proxyInfo.description }` } + + ) } + + ); +}; + +export default React.memo(ContractCodeProxyPattern); diff --git a/ui/address/contract/__screenshots__/ContractCode.pw.tsx_default_with-proxy-address-alert-mobile-1.png b/ui/address/contract/__screenshots__/ContractCode.pw.tsx_default_with-proxy-address-alert-mobile-1.png index f60ab9af447c66300992dcdc717c8c1cc3bb91b6..a73642ee3101973714a49a0e6c05cfe48e5254e9 100644 GIT binary patch literal 6375 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 literal 9333 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 Ho9F)r*AJ=g literal 0 HcmV?d00001 diff --git a/ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_mobile_proxy-type-with-link-mobile-1.png b/ui/address/contract/__screenshots__/ContractCodeProxyPattern.pw.tsx_mobile_proxy-type-with-link-mobile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e45ff371efb74c6061a09a175134b44910eae08d GIT binary patch literal 5557 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 literal 0 HcmV?d00001