diff --git a/configs/app/ui/views/address.ts b/configs/app/ui/views/address.ts index 15913fa084..4616891f89 100644 --- a/configs/app/ui/views/address.ts +++ b/configs/app/ui/views/address.ts @@ -1,6 +1,5 @@ -import type { VerifiedContractsFilter } from 'types/api/contracts'; import type { SmartContractVerificationMethodExtra } from 'types/client/contract'; -import { SMART_CONTRACT_EXTRA_VERIFICATION_METHODS, SMART_CONTRACT_LANGUAGE_FILTERS } from 'types/client/contract'; +import { SMART_CONTRACT_EXTRA_VERIFICATION_METHODS } from 'types/client/contract'; import type { AddressFormat, AddressViewId, IdenticonType } from 'types/views/address'; import { ADDRESS_FORMATS, ADDRESS_VIEWS_IDS, IDENTICON_TYPES } from 'types/views/address'; @@ -64,17 +63,6 @@ const extraVerificationMethods: Array = (( return parsedMethods.filter((method) => SMART_CONTRACT_EXTRA_VERIFICATION_METHODS.includes(method)); })(); -const languageFilters: Array = (() => { - const envValue = parseEnvJson>(getEnvValue('NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS')); - if (!envValue) { - // "Scilla" is chain specific language, so we don't want to show it in default scenario - const DEFAULT_LANGUAGE_FILTERS = SMART_CONTRACT_LANGUAGE_FILTERS.filter((filter) => filter !== 'scilla'); - return DEFAULT_LANGUAGE_FILTERS; - } - - return envValue.filter((filter) => SMART_CONTRACT_LANGUAGE_FILTERS.includes(filter)); -})(); - const config = Object.freeze({ identiconType, hashFormat: { @@ -85,7 +73,6 @@ const config = Object.freeze({ nativeTokenAddress: getEnvValue('NEXT_PUBLIC_VIEWS_ADDRESS_NATIVE_TOKEN_ADDRESS'), solidityscanEnabled: getEnvValue('NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED') === 'true', extraVerificationMethods, - languageFilters, decodedBytecodeEnabled: getEnvValue('NEXT_PUBLIC_VIEWS_CONTRACT_DECODED_BYTECODE_ENABLED') === 'true', }); diff --git a/configs/envs/.env.arbitrum b/configs/envs/.env.arbitrum index 0a1d102434..8838d008ac 100644 --- a/configs/envs/.env.arbitrum +++ b/configs/envs/.env.arbitrum @@ -64,7 +64,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://arbitrum.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-arbitrum-one-nitro.k8s-prod-2.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas','stylus_rust'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.arbitrum_sepolia b/configs/envs/.env.arbitrum_sepolia index 072941cee1..741204451c 100644 --- a/configs/envs/.env.arbitrum_sepolia +++ b/configs/envs/.env.arbitrum_sepolia @@ -52,6 +52,5 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://arbitrum-sepolia.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-arbitrum-sepolia.k8s-prod-3.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas','stylus_rust'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.base b/configs/envs/.env.base index d65bdb9cbd..b5bf8bdeb0 100644 --- a/configs/envs/.env.base +++ b/configs/envs/.env.base @@ -78,7 +78,6 @@ NEXT_PUBLIC_STATS_API_HOST=https://base.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-base-mainnet.k8s-prod-2.blockscout.com NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=gradient_avatar -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_NFT_MARKETPLACES=[{'name':'Rarible','collection_url':'https://rarible.com/collection/base/{hash}/items','instance_url':'https://rarible.com/token/base/{hash}:{id}','logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/nft-marketplace-logos/rarible.png'},{'name':'OpenSea','collection_url':'https://opensea.io/assets/base/{hash}','instance_url':'https://opensea.io/assets/base/{hash}/{id}','logo_url':'https://storage.googleapis.com/opensea-static/Logomark/Logomark-Blue.svg'}, {'name':'MagicEden','collection_url':'https://magiceden.io/collections/base/{hash}','instance_url':'https://magiceden.io/item-details/base/{hash}/{id}','logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/nft-marketplace-logos/magiceden.png'}] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true diff --git a/configs/envs/.env.blackfort_testnet b/configs/envs/.env.blackfort_testnet index 68af0f4779..21247773d2 100644 --- a/configs/envs/.env.blackfort_testnet +++ b/configs/envs/.env.blackfort_testnet @@ -45,7 +45,6 @@ NEXT_PUBLIC_PUZZLE_GAME_BADGE_CLAIM_LINK=https://badges.blockscout.com/mint/capy NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://testnet.blackfortscan.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.celo b/configs/envs/.env.celo index 9e125f01b8..0e8d2efbee 100644 --- a/configs/envs/.env.celo +++ b/configs/envs/.env.celo @@ -65,7 +65,6 @@ NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-celo-mainnet.k8s-prod-2.blockscout.com NEXT_PUBLIC_VIEWS_ADDRESS_NATIVE_TOKEN_ADDRESS=0x471EcE3750Da237f93B8E339c536989b8978a438 NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['burnt_fees'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.celo_sepolia b/configs/envs/.env.celo_sepolia index a292b6aac8..439100a813 100644 --- a/configs/envs/.env.celo_sepolia +++ b/configs/envs/.env.celo_sepolia @@ -52,7 +52,6 @@ NEXT_PUBLIC_STATS_API_HOST=https://celo-sepolia.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_ADDRESS_NATIVE_TOKEN_ADDRESS=0x471EcE3750Da237f93B8E339c536989b8978a438 NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['burnt_fees'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.eth b/configs/envs/.env.eth index 4d2c24b421..e9a98f3b88 100644 --- a/configs/envs/.env.eth +++ b/configs/envs/.env.eth @@ -71,7 +71,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://eth.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-eth-main.k8s-prod-1.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_NFT_MARKETPLACES=[{'name':'OpenSea','collection_url':'https://opensea.io/assets/ethereum/{hash}','instance_url':'https://opensea.io/assets/ethereum/{hash}/{id}','logo_url':'https://storage.googleapis.com/opensea-static/Logomark/Logomark-Blue.svg'},{'name':'Rarible','collection_url':'https://rarible.com/collection/{hash}/items','instance_url':'https://rarible.com/token/{hash}:{id}','logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/nft-marketplace-logos/rarible.png'},{'name':'Blur','collection_url':'https://blur.io/eth/collection/{hash}','instance_url':'https://blur.io/eth/asset/{hash}/{id}','logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/nft-marketplace-logos/blur.png'},{'name':'MagicEden','collection_url':'https://magiceden.io/collections/ethereum/{hash}','instance_url':'https://magiceden.io/item-details/ethereum/{hash}/{id}','logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/nft-marketplace-logos/magiceden.png'}] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true diff --git a/configs/envs/.env.eth_sepolia b/configs/envs/.env.eth_sepolia index 13955cb31b..f1610bcc7b 100644 --- a/configs/envs/.env.eth_sepolia +++ b/configs/envs/.env.eth_sepolia @@ -68,7 +68,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://eth-sepolia.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-sepolia.k8s-prod-4.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.filecoin b/configs/envs/.env.filecoin index 6716075cf5..85bcc520ea 100644 --- a/configs/envs/.env.filecoin +++ b/configs/envs/.env.filecoin @@ -49,6 +49,5 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://filecoin.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=gradient_avatar -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.garnet b/configs/envs/.env.garnet index 907f6b509a..9f1755b2c3 100644 --- a/configs/envs/.env.garnet +++ b/configs/envs/.env.garnet @@ -53,7 +53,6 @@ NEXT_PUBLIC_ROLLUP_TYPE=optimistic NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://explorer.garnetchain.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.gnosis b/configs/envs/.env.gnosis index 4da9b531a4..a30dfff8ec 100644 --- a/configs/envs/.env.gnosis +++ b/configs/envs/.env.gnosis @@ -73,7 +73,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://gnosis.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-gnosis-mainnet.k8s-prod-1.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.immutable b/configs/envs/.env.immutable index 4d4a8412ef..893a143baa 100644 --- a/configs/envs/.env.immutable +++ b/configs/envs/.env.immutable @@ -51,7 +51,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://explorer.immutable.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=["miner"] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.main b/configs/envs/.env.main index 68afa5df51..cca19b3dd4 100644 --- a/configs/envs/.env.main +++ b/configs/envs/.env.main @@ -79,7 +79,6 @@ NEXT_PUBLIC_STATS_API_HOST=https://eth-sepolia.k8s-dev.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=noves NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-sepolia.k8s-dev.blockscout.com NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=nouns -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer-test.k8s-dev.blockscout.com diff --git a/configs/envs/.env.mega_eth b/configs/envs/.env.mega_eth index 3960069047..9e0663b4ed 100644 --- a/configs/envs/.env.mega_eth +++ b/configs/envs/.env.mega_eth @@ -54,6 +54,5 @@ NEXT_PUBLIC_ROLLUP_TYPE=optimistic NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://megaeth.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.mekong b/configs/envs/.env.mekong index f30521cced..84d72501ed 100644 --- a/configs/envs/.env.mekong +++ b/configs/envs/.env.mekong @@ -33,6 +33,5 @@ NEXT_PUBLIC_NETWORK_RPC_URL=https://rpc.mekong.ethpandaops.io NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED=true NEXT_PUBLIC_PUZZLE_GAME_BADGE_CLAIM_LINK=https://badges.blockscout.com/mint/capyPuzzleBadge NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.neon_devnet b/configs/envs/.env.neon_devnet index 7fdb0bcd07..73f34910ed 100644 --- a/configs/envs/.env.neon_devnet +++ b/configs/envs/.env.neon_devnet @@ -45,7 +45,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://neon-devnet.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_TX_EXTERNAL_TRANSACTIONS_CONFIG={'chain_name':'Solana Devnet','chain_logo_url':'https://raw.githubusercontent.com/blockscout/frontend-configs/refs/heads/main/configs/network-icons/solana.svg','explorer_url_template':'https://solscan.io/tx/{hash}?cluster=devnet'} -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.optimism b/configs/envs/.env.optimism index 770a6e0e03..236f6323b5 100644 --- a/configs/envs/.env.optimism +++ b/configs/envs/.env.optimism @@ -73,7 +73,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://explorer.optimism.io NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-optimism-mainnet.k8s-prod-3.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.optimism_interop_0 b/configs/envs/.env.optimism_interop_0 index 915923c56c..c0f720685a 100644 --- a/configs/envs/.env.optimism_interop_0 +++ b/configs/envs/.env.optimism_interop_0 @@ -49,7 +49,6 @@ NEXT_PUBLIC_ROLLUP_TYPE=optimistic NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://optimism-interop-alpha-0.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com NEXT_PUBLIC_WEB3_WALLETS=['token_pocket', 'metamask'] \ No newline at end of file diff --git a/configs/envs/.env.optimism_sepolia b/configs/envs/.env.optimism_sepolia index 6aa734e4bb..fe407bc806 100644 --- a/configs/envs/.env.optimism_sepolia +++ b/configs/envs/.env.optimism_sepolia @@ -58,7 +58,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://testnet-explorer.optimism.io NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-optimism-sepolia.k8s-prod-4.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.polygon b/configs/envs/.env.polygon index 3a2ec41f09..f5859a2bad 100644 --- a/configs/envs/.env.polygon +++ b/configs/envs/.env.polygon @@ -60,7 +60,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://polygon.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-polygon-mainnet.k8s-prod-3.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com NEXT_PUBLIC_WEB3_WALLETS=['token_pocket', 'metamask'] \ No newline at end of file diff --git a/configs/envs/.env.rootstock_testnet b/configs/envs/.env.rootstock_testnet index 10f775a580..05c233a5c4 100644 --- a/configs/envs/.env.rootstock_testnet +++ b/configs/envs/.env.rootstock_testnet @@ -47,7 +47,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://rootstock-testnet.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['burnt_fees','total_reward','nonce'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.scroll_sepolia b/configs/envs/.env.scroll_sepolia index 36b44d49d5..a7bfd19b0c 100644 --- a/configs/envs/.env.scroll_sepolia +++ b/configs/envs/.env.scroll_sepolia @@ -45,6 +45,5 @@ NEXT_PUBLIC_ROLLUP_TYPE=scroll NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://scroll-sepolia.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.shibarium b/configs/envs/.env.shibarium index 53beb4f7c4..8991d40312 100644 --- a/configs/envs/.env.shibarium +++ b/configs/envs/.env.shibarium @@ -63,7 +63,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://www.shibariumscan.io NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['miner'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.stability_testnet b/configs/envs/.env.stability_testnet index 2ef6701772..0b03d21073 100644 --- a/configs/envs/.env.stability_testnet +++ b/configs/envs/.env.stability_testnet @@ -51,7 +51,6 @@ NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=stability NEXT_PUBLIC_VIEWS_ADDRESS_HIDDEN_VIEWS=['top_accounts'] NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['burnt_fees','total_reward'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VIEWS_TX_ADDITIONAL_FIELDS=['fee_per_gas'] diff --git a/configs/envs/.env.tac b/configs/envs/.env.tac index e4c6564018..c0b4bf2e7a 100644 --- a/configs/envs/.env.tac +++ b/configs/envs/.env.tac @@ -49,6 +49,5 @@ NEXT_PUBLIC_STATS_API_HOST=https://explorer.tac.build NEXT_PUBLIC_TAC_OPERATION_LIFECYCLE_API_HOST=https://tac-operation-lifecycle.k8s.blockscout.com NEXT_PUBLIC_TAC_TON_EXPLORER_URL=https://tonviewer.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.tac_spb b/configs/envs/.env.tac_spb index 505c6c685e..8fb9d59ed9 100644 --- a/configs/envs/.env.tac_spb +++ b/configs/envs/.env.tac_spb @@ -44,6 +44,5 @@ NEXT_PUBLIC_STATS_API_HOST=https://spb.explorer.tac.build NEXT_PUBLIC_TAC_OPERATION_LIFECYCLE_API_HOST=https://tac-spb-operation-lifecycle.k8s.blockscout.com NEXT_PUBLIC_TAC_TON_EXPLORER_URL=https://testnet.tonviewer.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.zetachain b/configs/envs/.env.zetachain index 3f20d24248..60ed2b1e53 100644 --- a/configs/envs/.env.zetachain +++ b/configs/envs/.env.zetachain @@ -55,7 +55,6 @@ NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=noves NEXT_PUBLIC_VIEWS_ADDRESS_BECH_32_PREFIX=zeta NEXT_PUBLIC_VIEWS_ADDRESS_FORMAT=["base16","bech32"] NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=blockie -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.zetachain_testnet b/configs/envs/.env.zetachain_testnet index e02338cb99..719315af33 100644 --- a/configs/envs/.env.zetachain_testnet +++ b/configs/envs/.env.zetachain_testnet @@ -47,7 +47,6 @@ NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=noves NEXT_PUBLIC_VIEWS_ADDRESS_BECH_32_PREFIX=zeta NEXT_PUBLIC_VIEWS_ADDRESS_FORMAT=["base16","bech32"] NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=blockie -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com diff --git a/configs/envs/.env.zilliqa b/configs/envs/.env.zilliqa index 1f9f3c8d6b..88b7d0fffa 100644 --- a/configs/envs/.env.zilliqa +++ b/configs/envs/.env.zilliqa @@ -50,6 +50,5 @@ NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=zilliqa NEXT_PUBLIC_VIEWS_ADDRESS_BECH_32_PREFIX=zil NEXT_PUBLIC_VIEWS_ADDRESS_FORMAT=["base16", "bech32"] NEXT_PUBLIC_VIEWS_CONTRACT_DECODED_BYTECODE_ENABLED=true -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','scilla'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.zkevm b/configs/envs/.env.zkevm index 9e804a646f..c2df377278 100644 --- a/configs/envs/.env.zkevm +++ b/configs/envs/.env.zkevm @@ -45,7 +45,6 @@ NEXT_PUBLIC_ROLLUP_TYPE=zkEvm NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://polygon-cdk-stavanger.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com NEXT_PUBLIC_WEB3_WALLETS=['token_pocket', 'metamask'] \ No newline at end of file diff --git a/configs/envs/.env.zksync b/configs/envs/.env.zksync index 102f30ff4d..601126848b 100644 --- a/configs/envs/.env.zksync +++ b/configs/envs/.env.zksync @@ -59,7 +59,6 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://zksync.blockscout.com NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_VIEWS_CONTRACT_EXTRA_VERIFICATION_METHODS=none -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/configs/envs/.env.zora b/configs/envs/.env.zora index f1b4c8faf4..5133f25be4 100644 --- a/configs/envs/.env.zora +++ b/configs/envs/.env.zora @@ -62,6 +62,5 @@ NEXT_PUBLIC_STATS_API_BASE_PATH=/stats-service NEXT_PUBLIC_STATS_API_HOST=https://explorer.zora.energy NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER=blockscout NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST=https://user-ops-indexer-zora-mainnet.k8s-prod-1.blockscout.com -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','geas'] NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true NEXT_PUBLIC_VISUALIZE_API_HOST=https://visualizer.services.blockscout.com \ No newline at end of file diff --git a/deploy/tools/envs-validator/schemas/ui.ts b/deploy/tools/envs-validator/schemas/ui.ts index 55808e9e62..fcafd79637 100644 --- a/deploy/tools/envs-validator/schemas/ui.ts +++ b/deploy/tools/envs-validator/schemas/ui.ts @@ -7,7 +7,7 @@ import { FeaturedNetwork, NETWORK_GROUPS, NetworkExplorer } from 'types/networks import { CustomLink, CustomLinksGroup } from 'types/footerLinks'; import { COLOR_THEME_IDS } from 'types/settings'; import { FontFamily } from 'types/ui'; -import { ContractCodeIde, SMART_CONTRACT_EXTRA_VERIFICATION_METHODS, SMART_CONTRACT_LANGUAGE_FILTERS, type SmartContractVerificationMethodExtra } from 'types/client/contract'; +import { ContractCodeIde, SMART_CONTRACT_EXTRA_VERIFICATION_METHODS, type SmartContractVerificationMethodExtra } from 'types/client/contract'; import type { AddressFormat, AddressViewId } from 'types/views/address'; import { ADDRESS_FORMATS, ADDRESS_VIEWS_IDS, IDENTICON_TYPES } from 'types/views/address'; import { BLOCK_FIELDS_IDS } from 'types/views/block'; @@ -309,11 +309,6 @@ export const viewsSchema = yup.object({ return isNoneSchema.isValidSync(data) || isArrayOfMethodsSchema.isValidSync(data); }), - NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS: yup - .array() - .transform(replaceQuotes) - .json() - .of(yup.string().oneOf(SMART_CONTRACT_LANGUAGE_FILTERS)), NEXT_PUBLIC_VIEWS_TX_HIDDEN_FIELDS: yup .array() diff --git a/deploy/tools/envs-validator/test/.env.base b/deploy/tools/envs-validator/test/.env.base index b5dd8c604a..9d59da2984 100644 --- a/deploy/tools/envs-validator/test/.env.base +++ b/deploy/tools/envs-validator/test/.env.base @@ -73,7 +73,6 @@ NEXT_PUBLIC_VIEWS_ADDRESS_FORMAT=['base16'] NEXT_PUBLIC_VIEWS_ADDRESS_HIDDEN_VIEWS=['top_accounts'] NEXT_PUBLIC_VIEWS_ADDRESS_NATIVE_TOKEN_ADDRESS=0x471EcE3750Da237f93B8E339c536989b8978a438 NEXT_PUBLIC_VIEWS_CONTRACT_EXTRA_VERIFICATION_METHODS=['solidity-hardhat','solidity-foundry'] -NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS=['solidity','vyper','yul','scilla','geas','stylus_rust'] NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS=['burnt_fees','total_reward'] NEXT_PUBLIC_VIEWS_BLOCK_PENDING_UPDATE_ALERT_ENABLED=false NEXT_PUBLIC_VIEWS_NFT_MARKETPLACES=[{'name':'NFT Marketplace','collection_url':'https://example.com/{hash}','instance_url':'https://example.com/{hash}/{id}','logo_url':'https://example.com/logo.png'}] diff --git a/docs/DEPRECATED_ENVS.md b/docs/DEPRECATED_ENVS.md index 75af6504e5..fa98160bb5 100644 --- a/docs/DEPRECATED_ENVS.md +++ b/docs/DEPRECATED_ENVS.md @@ -27,4 +27,5 @@ | NEXT_PUBLIC_RE_CAPTCHA_V3_APP_SITE_KEY | `string` | Google reCAPTCHA v3 site key | - | - | `` | v1.36.x | v2.4.0+ | Replaced with NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY | | NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR | `string` | Text color of the hero plate on the homepage (escape "#" symbol if you use HEX color codes or use rgba-value instead). | - | `white` | `\#DCFE76` | v1.0.x+ | v2.4.0+ | Replaced by NEXT_PUBLIC_HOMEPAGE_HERO_BANNER_CONFIG | | NEXT_PUBLIC_HOMEPAGE_PLATE_BACKGROUND | `string` | Background css value for hero plate on the homepage (escape "#" symbol if you use HEX color codes or use rgba-value instead). | - | `radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%), var(--chakra-colors-blue-400)` | `radial-gradient(at 15% 86%, hsla(350,65%,70%,1) 0px, transparent 50%)` \| `no-repeat bottom 20% right 0px/100% url(https://placekitten/1400/200)` | v1.1.0+ | v2.4.0+ | Replaced by NEXT_PUBLIC_HOMEPAGE_HERO_BANNER_CONFIG | -| NEXT_PUBLIC_GRAPHIQL_TRANSACTION | `string` | Txn hash for default query at GraphQl API. | - | - | `0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62` | v1.0.x+ | v2.5.0+ | Removed, as the latest transaction hash has now being obtained from the API. | \ No newline at end of file +| NEXT_PUBLIC_GRAPHIQL_TRANSACTION | `string` | Txn hash for default query at GraphQl API. | - | - | `0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62` | v1.0.x+ | v2.5.0+ | Removed, as the latest transaction hash has now being obtained from the API. | +| NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS | `Array<'solidity' \| 'vyper' \| 'yul' \| 'scilla' \| 'geas' \| 'stylus_rust'>` | Pass an array of contract languages that will be displayed as options in the filter on the verified contract page. | - | `['solidity','vyper','yul','geas','stylus_rust']` | `['solidity','vyper','yul','scilla']` | v1.37.0+ | upcoming | Replaced with configuration retrieved from the API. | diff --git a/docs/ENVS.md b/docs/ENVS.md index 8520ff627d..67a8e7152e 100644 --- a/docs/ENVS.md +++ b/docs/ENVS.md @@ -305,7 +305,6 @@ Settings for meta tags, OG tags and SEO | NEXT_PUBLIC_VIEWS_ADDRESS_NATIVE_TOKEN_ADDRESS | `string` | The address of a native ERC-20 token that shadows the balance of the native coin; used to exclude its balance from the net worth value of user tokens. | - | - | `0x471EcE3750Da237f93B8E339c536989b8978a438` | v2.4.0+ | | NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED | `boolean` | Set to `true` if SolidityScan reports are supported | - | - | `true` | v1.19.0+ | | NEXT_PUBLIC_VIEWS_CONTRACT_EXTRA_VERIFICATION_METHODS | `Array<'solidity-hardhat' \| 'solidity-foundry'>` | Pass an array of additional methods from which users can choose while verifying a smart contract. Both methods are available by default, pass `'none'` string to disable them all. | - | - | `['solidity-hardhat']` | v1.33.0+ | -| NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS | `Array<'solidity' \| 'vyper' \| 'yul' \| 'scilla' \| 'geas' \| 'stylus_rust'>` | Pass an array of contract languages that will be displayed as options in the filter on the verified contract page. | - | `['solidity','vyper','yul','geas','stylus_rust']` | `['solidity','vyper','yul','scilla']` | v1.37.0+ | | NEXT_PUBLIC_VIEWS_CONTRACT_DECODED_BYTECODE_ENABLED | `boolean` | If set to true, the deployed bytecode for unverified contracts will be parsed on the client side to retrieve the source code. If successful, the source code will be displayed in the snippet along with the content type selector. This feature works only for Scilla contracts. | - | - | `true` | v2.3.0+ | ##### Address views list diff --git a/lib/api/services/general/misc.ts b/lib/api/services/general/misc.ts index ba3005f340..a0344ebc3e 100644 --- a/lib/api/services/general/misc.ts +++ b/lib/api/services/general/misc.ts @@ -7,7 +7,7 @@ import type { import type { Blob } from 'types/api/blobs'; import type { Block } from 'types/api/block'; import type { ChartMarketResponse, ChartSecondaryCoinPriceResponse, ChartTransactionResponse } from 'types/api/charts'; -import type { BackendVersionConfig, CeloConfig, CsvExportConfig } from 'types/api/configs'; +import type { BackendVersionConfig, CeloConfig, ContractLanguagesConfig, CsvExportConfig } from 'types/api/configs'; import type { HotContractsFilters, HotContractsResponse, HotContractsSorting } from 'types/api/contracts'; import type { DepositsResponse, DepositsCounters } from 'types/api/deposits'; import type { CeloEpochDetails, CeloEpochElectionRewardDetailsResponse, CeloEpochListResponse } from 'types/api/epochs'; @@ -262,6 +262,9 @@ export const GENERAL_API_MISC_RESOURCES = { config_celo: { path: '/api/v2/config/celo', }, + config_contract_languages: { + path: '/api/v2/config/smart-contracts/languages', + }, // OTHER api_v2_key: { @@ -295,6 +298,7 @@ R extends 'general:search_check_redirect' ? SearchRedirectResult : R extends 'general:config_backend_version' ? BackendVersionConfig : R extends 'general:config_csv_export' ? CsvExportConfig : R extends 'general:config_celo' ? CeloConfig : +R extends 'general:config_contract_languages' ? ContractLanguagesConfig : R extends 'general:blob' ? Blob : R extends 'general:validators_stability' ? ValidatorsStabilityResponse : R extends 'general:validators_stability_counters' ? ValidatorsStabilityCountersResponse : diff --git a/tools/preset-sync/index.ts b/tools/preset-sync/index.ts index f93973d8c9..daca27bbe3 100755 --- a/tools/preset-sync/index.ts +++ b/tools/preset-sync/index.ts @@ -63,6 +63,7 @@ const IGNORED_ENVS = [ 'NEXT_PUBLIC_RE_CAPTCHA_V3_APP_SITE_KEY', 'NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR', 'NEXT_PUBLIC_HOMEPAGE_PLATE_BACKGROUND', + 'NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS', ]; function parseScriptArgs() { diff --git a/types/api/configs.ts b/types/api/configs.ts index bceb83a7f5..51044f8a69 100644 --- a/types/api/configs.ts +++ b/types/api/configs.ts @@ -9,3 +9,7 @@ export interface CsvExportConfig { export interface CeloConfig { l2_migration_block: number; } + +export interface ContractLanguagesConfig { + languages: Array; +} diff --git a/types/client/contract.ts b/types/client/contract.ts index 4103f59bc1..66fca3531c 100644 --- a/types/client/contract.ts +++ b/types/client/contract.ts @@ -1,5 +1,4 @@ import type { SmartContractLicenseType, SmartContractVerificationConfigRaw, SmartContractVerificationMethodApi } from 'types/api/contract'; -import type { VerifiedContractsFilter } from 'types/api/contracts'; export interface ContractCodeIde { title: string; @@ -26,12 +25,3 @@ export type SmartContractVerificationMethod = SmartContractVerificationMethodApi export interface SmartContractVerificationConfig extends SmartContractVerificationConfigRaw { verification_options: Array; } - -export const SMART_CONTRACT_LANGUAGE_FILTERS: Array = [ - 'solidity', - 'vyper', - 'yul', - 'scilla', - 'geas', - 'stylus_rust', -]; diff --git a/ui/optimismSuperchain/verifiedContracts/OpSuperchainVerifiedContracts.tsx b/ui/optimismSuperchain/verifiedContracts/OpSuperchainVerifiedContracts.tsx index b463879cba..d39ad71337 100644 --- a/ui/optimismSuperchain/verifiedContracts/OpSuperchainVerifiedContracts.tsx +++ b/ui/optimismSuperchain/verifiedContracts/OpSuperchainVerifiedContracts.tsx @@ -1,7 +1,6 @@ import { Box, createListCollection, HStack } from '@chakra-ui/react'; import React from 'react'; -import multichainConfig from 'configs/multichain'; import { MultichainProvider } from 'lib/contexts/multichain'; import useIsMobile from 'lib/hooks/useIsMobile'; import { FilterInput } from 'toolkit/components/filters/FilterInput'; @@ -28,16 +27,11 @@ const OpSuperchainVerifiedContracts = () => { const { query, type, searchTerm, sort, onSearchTermChange, onTypeChange, onSortChange } = useVerifiedContractsQuery({ isMultichain: true }); const { isError, isPlaceholderData, data, pagination, chainValue, onChainValueChange } = query; - const chainConfig = React.useMemo(() => { - return multichainConfig()?.chains.find((chain) => chain.id === chainValue?.[0])?.app_config; - }, [ chainValue ]); - const typeFilter = ( ); diff --git a/ui/pages/Block.pw.tsx b/ui/pages/Block.pw.tsx index 6ce59712f7..38a8ff5831 100644 --- a/ui/pages/Block.pw.tsx +++ b/ui/pages/Block.pw.tsx @@ -20,6 +20,7 @@ test.beforeEach(async({ mockTextAd }) => { }); test('degradation view, details tab', async({ render, mockApiResponse, mockRpcResponse, page }) => { + test.slow(); await mockApiResponse('general:block', null as never, { pathParams: { height_or_hash: height }, status: 500 }); await mockRpcResponse([ { @@ -44,6 +45,7 @@ test('degradation view, details tab', async({ render, mockApiResponse, mockRpcRe }); test('degradation view, txs tab', async({ render, mockApiResponse, mockRpcResponse, page }) => { + test.slow(); const hooksConfig = { router: { query: { height_or_hash: height, tab: 'txs' }, @@ -75,6 +77,7 @@ test('degradation view, txs tab', async({ render, mockApiResponse, mockRpcRespon }); test('degradation view, withdrawals tab', async({ render, mockApiResponse, mockRpcResponse, mockEnvs, page }) => { + test.slow(); const hooksConfig = { router: { query: { height_or_hash: height, tab: 'withdrawals' }, diff --git a/ui/pages/VerifiedContracts.pw.tsx b/ui/pages/VerifiedContracts.pw.tsx index dd998a2204..494adc6fb0 100644 --- a/ui/pages/VerifiedContracts.pw.tsx +++ b/ui/pages/VerifiedContracts.pw.tsx @@ -12,6 +12,7 @@ test('base view +@mobile', async({ render, mockTextAd, mockApiResponse, mockEnvs await mockTextAd(); await mockApiResponse('general:verified_contracts', verifiedContractsMock.baseResponse); await mockApiResponse('general:verified_contracts_counters', verifiedContractsCountersMock); + await mockApiResponse('general:config_contract_languages', { languages: [ 'solidity', 'vyper' ] }); const component = await render(); await expect(component).toHaveScreenshot({ timeout: 10_000 }); }); diff --git a/ui/verifiedContracts/VerifiedContractsFilter.tsx b/ui/verifiedContracts/VerifiedContractsFilter.tsx index 4ed3ba9bf3..9f5271a596 100644 --- a/ui/verifiedContracts/VerifiedContractsFilter.tsx +++ b/ui/verifiedContracts/VerifiedContractsFilter.tsx @@ -3,31 +3,27 @@ import React from 'react'; import type { VerifiedContractsFilter as TVerifiedContractsFilter } from 'types/api/contracts'; -import config from 'configs/app'; +import useApiQuery from 'lib/api/useApiQuery'; +import formatLanguageName from 'lib/contracts/formatLanguageName'; import type { SelectOption } from 'toolkit/chakra/select'; import PopoverFilterRadio from 'ui/shared/filters/PopoverFilterRadio'; -const OPTIONS = [ - { value: 'all', label: 'All' }, - { value: 'solidity', label: 'Solidity' }, - { value: 'vyper', label: 'Vyper' }, - { value: 'yul', label: 'Yul' }, - { value: 'scilla', label: 'Scilla' }, - { value: 'geas', label: 'Geas' }, - { value: 'stylus_rust', label: 'Stylus Rust' }, -]; - interface Props { hasActiveFilter: boolean; defaultValue: TVerifiedContractsFilter | undefined; onChange: (nextValue: string | Array) => void; - chainConfig?: typeof config; } -const VerifiedContractsFilter = ({ onChange, defaultValue, hasActiveFilter, chainConfig }: Props) => { +const VerifiedContractsFilter = ({ onChange, defaultValue, hasActiveFilter }: Props) => { + + const { data, isPending } = useApiQuery('general:config_contract_languages'); + const options = React.useMemo(() => { - return OPTIONS.filter(({ value }) => value === 'all' || (chainConfig || config).UI.views.address.languageFilters.includes(value)); - }, [ chainConfig ]); + return [ + { value: 'all', label: 'All' }, + ...(data?.languages || []).map((language) => ({ value: language, label: formatLanguageName(language) })), + ]; + }, [ data?.languages ]); const collection = React.useMemo(() => { return createListCollection({ items: options }); @@ -39,7 +35,8 @@ const VerifiedContractsFilter = ({ onChange, defaultValue, hasActiveFilter, chai collection={ collection } onChange={ onChange } hasActiveFilter={ hasActiveFilter } - initialValue={ defaultValue || OPTIONS[0].value } + initialValue={ defaultValue || options[0].value } + isLoading={ isPending } /> ); };