Commit eecd3ea3 authored by tom's avatar tom

Merge branch 'main' of github.com:blockscout/frontend into feat/verified-tokens

parents d7b41395 271e351c
...@@ -10,9 +10,10 @@ NEXT_PUBLIC_AUTH_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_AUTH_URL__ ...@@ -10,9 +10,10 @@ NEXT_PUBLIC_AUTH_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_AUTH_URL__
NEXT_PUBLIC_NETWORK_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_NAME__ NEXT_PUBLIC_NETWORK_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_NAME__
NEXT_PUBLIC_NETWORK_SHORT_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_SHORT_NAME__ NEXT_PUBLIC_NETWORK_SHORT_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_SHORT_NAME__
NEXT_PUBLIC_NETWORK_LOGO=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_LOGO__ NEXT_PUBLIC_NETWORK_LOGO=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_LOGO__
NEXT_PUBLIC_NETWORK_SMALL_LOGO=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_SMALL_LOGO__ NEXT_PUBLIC_NETWORK_LOGO_DARK=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_LOGO_DARK__
NEXT_PUBLIC_NETWORK_ICON=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ICON__
NEXT_PUBLIC_NETWORK_ICON_DARK=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ICON_DARK__
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME__ NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME__
NEXT_PUBLIC_NETWORK_TYPE=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_TYPE__
NEXT_PUBLIC_NETWORK_ID=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ID__ NEXT_PUBLIC_NETWORK_ID=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ID__
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_NAME__ NEXT_PUBLIC_NETWORK_CURRENCY_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_NAME__
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL__ NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL__
...@@ -31,11 +32,12 @@ NEXT_PUBLIC_FOOTER_TELEGRAM_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_TELEGRAM_L ...@@ -31,11 +32,12 @@ NEXT_PUBLIC_FOOTER_TELEGRAM_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_TELEGRAM_L
NEXT_PUBLIC_FOOTER_STAKING_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_STAKING_LINK__ NEXT_PUBLIC_FOOTER_STAKING_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_STAKING_LINK__
NEXT_PUBLIC_FEATURED_NETWORKS=__PLACEHOLDER_FOR_NEXT_PUBLIC_FEATURED_NETWORKS__ NEXT_PUBLIC_FEATURED_NETWORKS=__PLACEHOLDER_FOR_NEXT_PUBLIC_FEATURED_NETWORKS__
NEXT_PUBLIC_NETWORK_EXPLORERS=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_EXPLORERS__ NEXT_PUBLIC_NETWORK_EXPLORERS=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_EXPLORERS__
NEXT_PUBLIC_MARKETPLACE_APP_LIST=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_APP_LIST__ NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_CONFIG_URL__
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM__ NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM__
NEXT_PUBLIC_LOGOUT_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_URL__ NEXT_PUBLIC_LOGOUT_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_URL__
NEXT_PUBLIC_LOGOUT_RETURN_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_RETURN_URL__ NEXT_PUBLIC_LOGOUT_RETURN_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_RETURN_URL__
NEXT_PUBLIC_HOMEPAGE_CHARTS=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_CHARTS__ NEXT_PUBLIC_HOMEPAGE_CHARTS=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_CHARTS__
NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR__
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT__ NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT__
NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER__ NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER__
NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME__ NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME__
......
node_modules node_modules
node_modules_linux node_modules_linux
playwright/envs.js playwright/envs.js
\ No newline at end of file
...@@ -14,4 +14,4 @@ for file in `git diff --diff-filter=ACMRT --cached --name-only | grep ".svg\$"` ...@@ -14,4 +14,4 @@ for file in `git diff --diff-filter=ACMRT --cached --name-only | grep ".svg\$"`
git add $file git add $file
done done
echo ✅ All pre-commit jobs are done echo ✅ All pre-commit jobs are done
\ No newline at end of file
...@@ -365,6 +365,7 @@ ...@@ -365,6 +365,7 @@
"options": [ "options": [
"", "",
"--update-snapshots", "--update-snapshots",
"--ui",
], ],
"default": "" "default": ""
}, },
......
/* eslint-disable no-restricted-properties */ /* eslint-disable no-restricted-properties */
import type { AppItemOverview } from 'types/client/apps'; import type { NetworkExplorer } from 'types/networks';
import type { FeaturedNetwork, NetworkExplorer, PreDefinedNetwork } from 'types/networks';
import type { ChainIndicatorId } from 'ui/home/indicators/types'; import type { ChainIndicatorId } from 'ui/home/indicators/types';
const getEnvValue = (env: string | undefined) => env?.replaceAll('\'', '"'); const getEnvValue = (env: string | undefined) => env?.replaceAll('\'', '"');
...@@ -61,9 +60,14 @@ const config = Object.freeze({ ...@@ -61,9 +60,14 @@ const config = Object.freeze({
env, env,
isDev, isDev,
network: { network: {
type: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_TYPE) as PreDefinedNetwork | undefined, logo: {
logo: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO), 'default': getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO),
smallLogo: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_SMALL_LOGO), dark: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO_DARK),
},
icon: {
'default': getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ICON),
dark: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ICON_DARK),
},
name: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_NAME), name: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_NAME),
id: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ID), id: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ID),
shortName: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_SHORT_NAME), shortName: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_SHORT_NAME),
...@@ -85,10 +89,10 @@ const config = Object.freeze({ ...@@ -85,10 +89,10 @@ const config = Object.freeze({
telegram: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_TELEGRAM_LINK), telegram: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_TELEGRAM_LINK),
staking: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_STAKING_LINK), staking: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_STAKING_LINK),
}, },
featuredNetworks: parseEnvJson<Array<FeaturedNetwork>>(getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS)) || [], featuredNetworks: getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS),
blockScoutVersion: getEnvValue(process.env.NEXT_PUBLIC_BLOCKSCOUT_VERSION), blockScoutVersion: getEnvValue(process.env.NEXT_PUBLIC_BLOCKSCOUT_VERSION),
isAccountSupported: getEnvValue(process.env.NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED) === 'true', isAccountSupported: getEnvValue(process.env.NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED) === 'true',
marketplaceAppList: parseEnvJson<Array<AppItemOverview>>(getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_APP_LIST)) || [], marketplaceConfigUrl: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_CONFIG_URL),
marketplaceSubmitForm: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM), marketplaceSubmitForm: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM),
protocol: appSchema, protocol: appSchema,
host: appHost, host: appHost,
...@@ -129,8 +133,11 @@ const config = Object.freeze({ ...@@ -129,8 +133,11 @@ const config = Object.freeze({
}, },
homepage: { homepage: {
charts: parseEnvJson<Array<ChainIndicatorId>>(getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_CHARTS)) || [], charts: parseEnvJson<Array<ChainIndicatorId>>(getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_CHARTS)) || [],
plateGradient: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT) || plate: {
'radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%)', gradient: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT) ||
'radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%)',
textColor: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR) || 'white',
},
showGasTracker: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER) === 'false' ? false : true, showGasTracker: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER) === 'false' ? false : true,
showAvgBlockTime: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME) === 'false' ? false : true, showAvgBlockTime: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME) === 'false' ? false : true,
}, },
......
...@@ -11,7 +11,6 @@ NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout ...@@ -11,7 +11,6 @@ NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
# api config # api config
NEXT_PUBLIC_API_HOST=blockscout.com NEXT_PUBLIC_API_HOST=blockscout.com
NEXT_PUBLIC_STATS_API_HOST=https://stats-test.aws-k8s.blockscout.com NEXT_PUBLIC_STATS_API_HOST=https://stats-test.aws-k8s.blockscout.com
......
This diff is collapsed.
This diff is collapsed.
# ui config # ui config
NEXT_PUBLIC_FEATURED_NETWORKS=[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}] NEXT_PUBLIC_FEATURED_NETWORKS=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS= NEXT_PUBLIC_NETWORK_EXPLORERS=
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=linear-gradient(136.9deg,rgb(107 94 236) 1.5%,rgb(0 82 255) 56.84%,rgb(82 62 231) 98.54%) NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=linear-gradient(136.9deg,rgb(107 94 236) 1.5%,rgb(0 82 255) 56.84%,rgb(82 62 231) 98.54%)
NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62 NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62
...@@ -8,7 +8,8 @@ NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b29075 ...@@ -8,7 +8,8 @@ NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b29075
NEXT_PUBLIC_NETWORK_NAME=Base Göerli NEXT_PUBLIC_NETWORK_NAME=Base Göerli
NEXT_PUBLIC_NETWORK_SHORT_NAME=Base NEXT_PUBLIC_NETWORK_SHORT_NAME=Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=optimism NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=optimism
NEXT_PUBLIC_NETWORK_TYPE=base_goerli NEXT_PUBLIC_NETWORK_LOGO=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/network-icons/base.svg
NEXT_PUBLIC_NETWORK_ID=420 NEXT_PUBLIC_NETWORK_ID=420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=Ether NEXT_PUBLIC_NETWORK_CURRENCY_NAME=Ether
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH
...@@ -17,8 +18,8 @@ NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS= ...@@ -17,8 +18,8 @@ NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS=
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation
NEXT_PUBLIC_NETWORK_RPC_URL=https://goerli.optimism.io NEXT_PUBLIC_NETWORK_RPC_URL=https://goerli.optimism.io
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/shrqUAcjgGJ4jU88C NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST=[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]
NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs'] NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs']
NEXT_PUBLIC_IS_TESTNET=true NEXT_PUBLIC_IS_TESTNET=true
......
This diff is collapsed.
This diff is collapsed.
...@@ -9,17 +9,39 @@ NEXT_PUBLIC_APP_ENV=testing ...@@ -9,17 +9,39 @@ NEXT_PUBLIC_APP_ENV=testing
NEXT_PUBLIC_BLOCKSCOUT_VERSION=v4.1.7-beta NEXT_PUBLIC_BLOCKSCOUT_VERSION=v4.1.7-beta
NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_FOOTER_TELEGRAM_LINK=https://t.me/poa_network
NEXT_PUBLIC_FOOTER_STAKING_LINK=https://duneanalytics.com/maxaleks/xdai-staking
NEXT_PUBLIC_NETWORK_EXPLORERS=[{'title':'Anyblock','baseUrl':'https://explorer.anyblock.tools','paths':{'tx':'/ethereum/poa/core/transaction','address':'/ethereum/poa/core/address'}}]
NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs','coin_price','market_cup']
NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=true NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=true
NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=true NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=true
NEXT_PUBLIC_FEATURED_NETWORKS=
NEXT_PUBLIC_NETWORK_LOGO= NEXT_PUBLIC_NETWORK_LOGO=
NEXT_PUBLIC_NETWORK_SMALL_LOGO= NEXT_PUBLIC_NETWORK_LOGO_DARK=
NEXT_PUBLIC_NETWORK_RPC_URL=https://core.poa.network NEXT_PUBLIC_NETWORK_ICON=
NEXT_PUBLIC_NETWORK_ICON_DARK=
NEXT_PUBLIC_NETWORK_RPC_URL=https://localhost:1111
NEXT_PUBLIC_IS_TESTNET=true NEXT_PUBLIC_IS_TESTNET=true
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=https://localhost:3000/marketplace-config.json
NEXT_PUBLIC_IS_L2_NETWORK=false NEXT_PUBLIC_IS_L2_NETWORK=false
# network config
NEXT_PUBLIC_NETWORK_NAME=Blockscout
NEXT_PUBLIC_NETWORK_SHORT_NAME=Blockscout
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=ethereum
NEXT_PUBLIC_NETWORK_ID=1
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=Ether
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH
NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18
NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS=
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://localhost:3000/marketplace-submit-form
# api config # api config
NEXT_PUBLIC_API_HOST=blockscout.com NEXT_PUBLIC_API_HOST=https://localhost:3003
NEXT_PUBLIC_STATS_API_HOST=https://stats-test.aws-k8s.blockscout.com NEXT_PUBLIC_STATS_API_HOST=https://localhost:3004
NEXT_PUBLIC_CONTRACT_INFO_API_HOST=https://localhost:3005
NEXT_PUBLIC_ADMIN_SERVICE_API_HOST=https://localhost:3006
NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY=xxx NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY=xxx
NEXT_PUBLIC_CONTRACT_INFO_API_HOST=https://contracts-info-test.aws-k8s.blockscout.com NEXT_PUBLIC_API_BASE_PATH=/
NEXT_PUBLIC_ADMIN_SERVICE_API_HOST=https://admin-rs-test.aws-k8s.blockscout.com
...@@ -143,7 +143,7 @@ postgres: ...@@ -143,7 +143,7 @@ postgres:
command: '["docker-entrypoint.sh", "-c"]' command: '["docker-entrypoint.sh", "-c"]'
args: '["max_connections=300"]' args: '["max_connections=300"]'
customShm: customShm:
enabled: false enabled: false
...@@ -317,10 +317,10 @@ frontend: ...@@ -317,10 +317,10 @@ frontend:
- "/accounts" - "/accounts"
- "/visualize" - "/visualize"
- "/api-docs" - "/api-docs"
- "/output-roots" - "/l2-output-roots"
- "/txn-batches" - "/l2-txn-batches"
- "/withdrawals" - "/l2-withdrawals"
- "/deposits" - "/l2-deposits"
resources: resources:
limits: limits:
memory: memory:
...@@ -349,8 +349,6 @@ frontend: ...@@ -349,8 +349,6 @@ frontend:
_default: Base _default: Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME: NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME:
_default: optimism _default: optimism
NEXT_PUBLIC_NETWORK_TYPE:
_default: base_goerli
NEXT_PUBLIC_NETWORK_ID: NEXT_PUBLIC_NETWORK_ID:
_default: 420 _default: 420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME: NEXT_PUBLIC_NETWORK_CURRENCY_NAME:
...@@ -363,8 +361,12 @@ frontend: ...@@ -363,8 +361,12 @@ frontend:
_default: validation _default: validation
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED: NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED:
_default: 'true' _default: 'true'
NEXT_PUBLIC_NETWORK_LOGO:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/base.svg
NEXT_PUBLIC_FEATURED_NETWORKS: NEXT_PUBLIC_FEATURED_NETWORKS:
_default: "[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}]" _default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_API_HOST: NEXT_PUBLIC_API_HOST:
_default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com _default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_APP_HOST: NEXT_PUBLIC_APP_HOST:
...@@ -373,8 +375,6 @@ frontend: ...@@ -373,8 +375,6 @@ frontend:
_default: / _default: /
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM: NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM:
_default: https://airtable.com/shrqUAcjgGJ4jU88C _default: https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST:
_default: "[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]"
NEXT_PUBLIC_LOGOUT_URL: NEXT_PUBLIC_LOGOUT_URL:
_default: https://blockscoutcom.us.auth0.com/v2/logout _default: https://blockscoutcom.us.auth0.com/v2/logout
NEXT_PUBLIC_LOGOUT_RETURN_URL: NEXT_PUBLIC_LOGOUT_RETURN_URL:
...@@ -383,6 +383,8 @@ frontend: ...@@ -383,6 +383,8 @@ frontend:
_default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com _default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_API_SPEC_URL: NEXT_PUBLIC_API_SPEC_URL:
_default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml _default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS: NEXT_PUBLIC_NETWORK_EXPLORERS:
_default: '' _default: ''
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT: NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT:
...@@ -443,14 +445,14 @@ allowance: ...@@ -443,14 +445,14 @@ allowance:
resources: resources:
limits: limits:
memory: memory:
_default: "0.3Gi" _default: 768Mi
cpu: cpu:
_default: "0.2" _default: 500m
requests: requests:
memory: memory:
_default: "0.3Gi" _default: 384Mi
cpu: cpu:
_default: "0.2" _default: 250m
# node label # node label
nodeSelector: nodeSelector:
......
This diff is collapsed.
...@@ -40,22 +40,22 @@ frontend: ...@@ -40,22 +40,22 @@ frontend:
- "/csv-export" - "/csv-export"
- "/verified-contracts" - "/verified-contracts"
- "/graphiql" - "/graphiql"
- "/output-roots" - "/l2-output-roots"
- "/txn-batches" - "/l2-txn-batches"
- "/withdrawals" - "/l2-withdrawals"
- "/deposits" - "/l2-deposits"
resources: resources:
limits: limits:
memory: memory:
_default: "1Gi" _default: 768Mi
cpu: cpu:
_default: "0.5" _default: "1"
requests: requests:
memory: memory:
_default: "1Gi" _default: 384Mi
cpu: cpu:
_default: "0.5" _default: 250m
environment: environment:
NEXT_PUBLIC_BLOCKSCOUT_VERSION: NEXT_PUBLIC_BLOCKSCOUT_VERSION:
_default: v5.1.0-beta _default: v5.1.0-beta
...@@ -73,8 +73,6 @@ frontend: ...@@ -73,8 +73,6 @@ frontend:
_default: Base _default: Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME: NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME:
_default: optimism _default: optimism
NEXT_PUBLIC_NETWORK_TYPE:
_default: base_goerli
NEXT_PUBLIC_NETWORK_ID: NEXT_PUBLIC_NETWORK_ID:
_default: 420 _default: 420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME: NEXT_PUBLIC_NETWORK_CURRENCY_NAME:
...@@ -87,8 +85,12 @@ frontend: ...@@ -87,8 +85,12 @@ frontend:
_default: validation _default: validation
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED: NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED:
_default: 'true' _default: 'true'
NEXT_PUBLIC_NETWORK_LOGO:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/base.svg
NEXT_PUBLIC_FEATURED_NETWORKS: NEXT_PUBLIC_FEATURED_NETWORKS:
_default: "[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}]" _default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_API_HOST: NEXT_PUBLIC_API_HOST:
_default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com _default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
review: blockscout-optimism-goerli.test.aws-k8s.blockscout.com review: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
...@@ -98,8 +100,6 @@ frontend: ...@@ -98,8 +100,6 @@ frontend:
_default: / _default: /
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM: NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM:
_default: https://airtable.com/shrqUAcjgGJ4jU88C _default: https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST:
_default: "[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]"
NEXT_PUBLIC_LOGOUT_URL: NEXT_PUBLIC_LOGOUT_URL:
_default: https://blockscoutcom.us.auth0.com/v2/logout _default: https://blockscoutcom.us.auth0.com/v2/logout
NEXT_PUBLIC_LOGOUT_RETURN_URL: NEXT_PUBLIC_LOGOUT_RETURN_URL:
...@@ -109,6 +109,8 @@ frontend: ...@@ -109,6 +109,8 @@ frontend:
_default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com _default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_API_SPEC_URL: NEXT_PUBLIC_API_SPEC_URL:
_default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml _default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS: NEXT_PUBLIC_NETWORK_EXPLORERS:
_default: '' _default: ''
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT: NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT:
...@@ -133,5 +135,5 @@ frontend: ...@@ -133,5 +135,5 @@ frontend:
_default: https://blockscout-main.test.aws-k8s.blockscout.com _default: https://blockscout-main.test.aws-k8s.blockscout.com
NEXT_PUBLIC_L2_WITHDRAWAL_URL: NEXT_PUBLIC_L2_WITHDRAWAL_URL:
_default: https://app.optimism.io/bridge/withdraw _default: https://app.optimism.io/bridge/withdraw
NEXT_PUBLIC_GRAPHIQL_TRANSACTION: NEXT_PUBLIC_GRAPHIQL_TRANSACTION:
_default: 0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62 _default: 0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62
This diff is collapsed.
...@@ -10,7 +10,6 @@ The app instance could be customized by passing following variables to NodeJS en ...@@ -10,7 +10,6 @@ The app instance could be customized by passing following variables to NodeJS en
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| NEXT_PUBLIC_NETWORK_NAME | `string` | Displayed name of the network | yes | - | `Gnosis Chain` | | NEXT_PUBLIC_NETWORK_NAME | `string` | Displayed name of the network | yes | - | `Gnosis Chain` |
| NEXT_PUBLIC_NETWORK_SHORT_NAME | `string` | Used for SEO attributes (page title and description) | - | - | `OoG` | | NEXT_PUBLIC_NETWORK_SHORT_NAME | `string` | Used for SEO attributes (page title and description) | - | - | `OoG` |
| NEXT_PUBLIC_NETWORK_TYPE | `string` | Network type (used for matching pre-defined assets, e.g network logo and icon, which are stored in the project). See all possible values here | - | - | `xdai_mainnet` |
| NEXT_PUBLIC_NETWORK_ID | `number` | Chain id, see [https://chainlist.org](https://chainlist.org) for the reference | yes | - | `99` | | NEXT_PUBLIC_NETWORK_ID | `number` | Chain id, see [https://chainlist.org](https://chainlist.org) for the reference | yes | - | `99` |
| NEXT_PUBLIC_NETWORK_RPC_URL | `string` | Chain server RPC url, see [https://chainlist.org](https://chainlist.org) for the reference. If not provided, some functionality of the explorer, related to smart contracts interaction and third-party apps integration, will be unavailable | - | - | `https://core.poa.network` | | NEXT_PUBLIC_NETWORK_RPC_URL | `string` | Chain server RPC url, see [https://chainlist.org](https://chainlist.org) for the reference. If not provided, some functionality of the explorer, related to smart contracts interaction and third-party apps integration, will be unavailable | - | - | `https://core.poa.network` |
| NEXT_PUBLIC_NETWORK_CURRENCY_NAME | `string` | Network currency name | - | - | `Ether` | | NEXT_PUBLIC_NETWORK_CURRENCY_NAME | `string` | Network currency name | - | - | `Ether` |
...@@ -18,8 +17,10 @@ The app instance could be customized by passing following variables to NodeJS en ...@@ -18,8 +17,10 @@ The app instance could be customized by passing following variables to NodeJS en
| NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS | `string` | Network currency decimals | - | `18` | `6` | | NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS | `string` | Network currency decimals | - | `18` | `6` |
| NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS | `string` | Address of network's native token | - | - | `0x029a799563238d0e75e20be2f4bda0ea68d00172` | | NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS | `string` | Address of network's native token | - | - | `0x029a799563238d0e75e20be2f4bda0ea68d00172` |
| NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME | `string` | Network name for constructing url of token logos according to template `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${assetsNamePath}/assets/${tokenAddress}/logo.png`. It should match network name in TrustWallet assets repo, see the full list [here](https://github.com/trustwallet/assets/tree/master/blockchains) | - | - | `ethereum` | | NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME | `string` | Network name for constructing url of token logos according to template `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${assetsNamePath}/assets/${tokenAddress}/logo.png`. It should match network name in TrustWallet assets repo, see the full list [here](https://github.com/trustwallet/assets/tree/master/blockchains) | - | - | `ethereum` |
| NEXT_PUBLIC_NETWORK_LOGO | `string` | Network logo; if not provided, will fallback to logo predefined in the project; if the project doesn't have logo for such network then the common placeholder will be shown; *Note* that logo height should be 20px and width less than 120px | - | - | `https://placekitten.com/240/40` | | NEXT_PUBLIC_NETWORK_LOGO | `string` | Network logo; if not provided, placeholder will be shown; *Note* the logo height should be 20px and width less than 120px | - | - | `https://placekitten.com/240/40` |
| NEXT_PUBLIC_NETWORK_SMALL_LOGO | `string` | Small version of network logo; if not provided, will fallback to logo predefined in the project; if the project doesn't have logo for such network then the common placeholder will be shown; *Note* that logo should have square format (e.g 60px by 60px) | - | - | `https://placekitten.com/60/60` | | NEXT_PUBLIC_NETWORK_LOGO_DARK | `string` | Network logo for dark color mode; if not provided, **inverted** regular logo will be used instead | - | - | `https://placekitten.com/240/40` |
| NEXT_PUBLIC_NETWORK_ICON | `string` | Network icon; used as a replacement for regular network logo when nav bar is collapsed; if not provided, placeholder will be shown; *Note* the icon size should be at least 60px by 60px | - | - | `https://placekitten.com/60/60` |
| NEXT_PUBLIC_NETWORK_ICON_DARK | `string` | Network icon for dark color mode; if not provided, **inverted** regular icon will be used instead | - | - | `https://placekitten.com/60/60` |
| NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED | `boolean` | Set to true if network has account feature | - | `false` | `true` | | NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED | `boolean` | Set to true if network has account feature | - | `false` | `true` |
| NEXT_PUBLIC_IS_TESTNET | `boolean`| Set to true if network is testnet | - | `false` | `true` | | NEXT_PUBLIC_IS_TESTNET | `boolean`| Set to true if network is testnet | - | `false` | `true` |
...@@ -27,13 +28,13 @@ The app instance could be customized by passing following variables to NodeJS en ...@@ -27,13 +28,13 @@ The app instance could be customized by passing following variables to NodeJS en
| Variable | Type| Description | Is required | Default value | Example value | | Variable | Type| Description | Is required | Default value | Example value |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| NEXT_PUBLIC_FEATURED_NETWORKS | `Array<FeaturedNetwork>` where `FeaturedNetwork` can have following [properties](#featured-network-configuration-properties) | Configuration of featured networks that will be shown in the network menu | - | - | `[{'title':'Gnosis Chain','url':'https://blockscout.com/xdai/mainnet','group':'mainnets'}]` | | NEXT_PUBLIC_FEATURED_NETWORKS | `string` | URL of configuration file (`.json` format only) which contains list of featured networks that will be shown in the network menu. See [below](#featured-network-configuration-properties) list of available properties for particular network | - | - | `https://example.com/featured_networks_config.json` |
| NEXT_PUBLIC_BLOCKSCOUT_VERSION | `string` | Current running version of Blockscout (used to display link to release in the footer) | - | - | `v.5.1.0-beta` | NEXT_PUBLIC_BLOCKSCOUT_VERSION | `string` | Current running version of Blockscout (used to display link to release in the footer) | - | - | `v.5.1.0-beta`
| NEXT_PUBLIC_FOOTER_GITHUB_LINK | `string` | Link to Github in the footer | - | - | `https://github.com/blockscout/blockscout` | | NEXT_PUBLIC_FOOTER_GITHUB_LINK | `string` | Link to Github in the footer | - | - | `https://github.com/blockscout/blockscout` |
| NEXT_PUBLIC_FOOTER_TWITTER_LINK | `string` | Link to Twitter in the footer | - | - | `https://www.twitter.com/blockscoutcom` | | NEXT_PUBLIC_FOOTER_TWITTER_LINK | `string` | Link to Twitter in the footer | - | - | `https://www.twitter.com/blockscoutcom` |
| NEXT_PUBLIC_FOOTER_TELEGRAM_LINK | `string` | Link to Telegram in the footer | - | - | `https://t.me/poa_network` | | NEXT_PUBLIC_FOOTER_TELEGRAM_LINK | `string` | Link to Telegram in the footer | - | - | `https://t.me/poa_network` |
| NEXT_PUBLIC_FOOTER_STAKING_LINK | `string` | Link to staking dashboard in the footer | - | - | `https://duneanalytics.com/maxaleks/xdai-staking` | | NEXT_PUBLIC_FOOTER_STAKING_LINK | `string` | Link to staking dashboard in the footer | - | - | `https://duneanalytics.com/maxaleks/xdai-staking` |
| NEXT_PUBLIC_MARKETPLACE_APP_LIST | `Array<MarketplaceApp>` where `MarketplaceApp` can have following [properties](#marketplace-app-configuration-properties) | List of apps that will be shown on the marketplace page | - | - | `[{'author': 'Bob', 'id': 'app', 'external': true, 'title': 'The App', 'logo': 'https://foo.app/icon.png', 'categories': ['security'], 'shortDescription': 'Awesome app', 'site': 'https://foo.app', 'description': 'The best app', 'url': 'https://foo.app/launch'}]` | | NEXT_PUBLIC_MARKETPLACE_CONFIG_URL | `string` | URL of configuration file (`.json` format only) which contains list of apps that will be shown on the marketplace page. See [below](#marketplace-app-configuration-properties) list of available properties for an app | - | - | `https://example.com/marketplace_config.json` |
| NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM | `string` | Link to form where authors can submit their dapps to the marketplace | - | - | `https://airtable.com/shrqUAcjgGJ4jU88C` | | NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM | `string` | Link to form where authors can submit their dapps to the marketplace | - | - | `https://airtable.com/shrqUAcjgGJ4jU88C` |
| NEXT_PUBLIC_NETWORK_EXPLORERS | `Array<NetworkExplorer>` where `NetworkExplorer` can have following [properties](#network-explorer-configuration-properties) | Used to build up links to transactions, blocks, addresses in other chain explorers. | - | - | `[{'title':'Anyblock','baseUrl':'https://explorer.anyblock.tools','paths':{'tx':'/ethereum/poa/core/tx'}}]` | | NEXT_PUBLIC_NETWORK_EXPLORERS | `Array<NetworkExplorer>` where `NetworkExplorer` can have following [properties](#network-explorer-configuration-properties) | Used to build up links to transactions, blocks, addresses in other chain explorers. | - | - | `[{'title':'Anyblock','baseUrl':'https://explorer.anyblock.tools','paths':{'tx':'/ethereum/poa/core/tx'}}]` |
| NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE | `validation` or `mining` | Verification type in the network | - | `mining` | `validation` | | NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE | `validation` or `mining` | Verification type in the network | - | `mining` | `validation` |
...@@ -41,6 +42,7 @@ The app instance could be customized by passing following variables to NodeJS en ...@@ -41,6 +42,7 @@ The app instance could be customized by passing following variables to NodeJS en
| NEXT_PUBLIC_LOGOUT_URL | `string` | Account logout url. Required if account is supported for the app instance. | - | - | `https://blockscoutcom.us.auth0.com/v2/logout` | | NEXT_PUBLIC_LOGOUT_URL | `string` | Account logout url. Required if account is supported for the app instance. | - | - | `https://blockscoutcom.us.auth0.com/v2/logout` |
| NEXT_PUBLIC_LOGOUT_RETURN_URL | `string` | Account logout return url. Required if account is supported for the app instance. | - | - | `https://blockscout.com/poa/core/auth/logout` | | NEXT_PUBLIC_LOGOUT_RETURN_URL | `string` | Account logout return url. Required if account is supported for the app instance. | - | - | `https://blockscout.com/poa/core/auth/logout` |
| NEXT_PUBLIC_HOMEPAGE_CHARTS | `Array<'daily_txs' \| 'coin_price' \| 'market_cup'>` | List of charts displayed on the home page | - | - | `['daily_txs','coin_price','market_cup']` | | NEXT_PUBLIC_HOMEPAGE_CHARTS | `Array<'daily_txs' \| 'coin_price' \| 'market_cup'>` | List of charts displayed on the home page | - | - | `['daily_txs','coin_price','market_cup']` |
| NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR | `string` | Text color of the hero plate on the homepage | `#FFFFFF` | `'#DCFE76'` |
| NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT | `string` | Gradient value for hero plate on the homepage | - | `radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%)` | `radial-gradient(at 15% 86%, hsla(350,65%,70%,1) 0px, transparent 50%), radial-gradient(at 72% 57%, hsla(14,95%,76%,1) 0px, transparent 50%)` | | NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT | `string` | Gradient value for hero plate on the homepage | - | `radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%)` | `radial-gradient(at 15% 86%, hsla(350,65%,70%,1) 0px, transparent 50%), radial-gradient(at 72% 57%, hsla(14,95%,76%,1) 0px, transparent 50%)` |
| NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER | `boolean` | Set to false if network doesn't have gas tracker | - | `true` | `false` | | NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER | `boolean` | Set to false if network doesn't have gas tracker | - | `true` | `false` |
| NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME | `boolean` | Set to false if average block time is useless for the network | - | `true` | `false` | | NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME | `boolean` | Set to false if average block time is useless for the network | - | `true` | `false` |
...@@ -88,9 +90,9 @@ For each application, you need to specify the `MarketplaceCategoryId` to which i ...@@ -88,9 +90,9 @@ For each application, you need to specify the `MarketplaceCategoryId` to which i
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| title | `string` | Displayed name of the network | yes | - | `Gnosis Chain` | | title | `string` | Displayed name of the network | yes | - | `Gnosis Chain` |
| url | `string` | Network explorer main page url | yes | - | `https://blockscout.com/xdai/mainnet` | | url | `string` | Network explorer main page url | yes | - | `https://blockscout.com/xdai/mainnet` |
| group | `mainnets \| testnets \| other` | Indicates in which tab network appears in the menu | yes | - | `mainnets` | | group | `Mainnets \| Testnets \| Other` | Indicates in which tab network appears in the menu | yes | - | `Mainnets` |
| icon | `string` | Network icon; if not provided, will fallback to icon predefined in the project; if the project doesn't have icon for such network then the common placeholder will be shown; *Note* that icon size should be at least 30px by 30px | - | - | `https://placekitten.com/60/60` | | icon | `string` | Network icon; if not provided, the common placeholder will be shown; *Note* that icon size should be at least 60px by 60px | - | - | `https://placekitten.com/60/60` |
| type | `string` | Network type (used for matching pre-defined network icon, which is stored in the project). See all possible values here | - | - | `xdai_mainnet` | | isActive | `boolean` | Pass `true` if item should be shonw as active in the menu | - | - | `true` |
### Network explorer configuration properties ### Network explorer configuration properties
......
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.461 4H4v5.176h8.461V4ZM26 4h-8.462v5.176H26V4Zm0 12.51h-5.077v4.313h-3.385V26H26v-9.49Zm-16.923 0H4V26h8.461v-5.177H9.077V16.51Z" fill="#48A9A6"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="m4 15.793 7.071-6.472M4 15.793l7.857 4.921M4 15.793 8.15 5.415M4 15.793l6.226 8.716m.845-15.188L19.358 5m-8.287 4.321-2.92-3.906M19.358 5l2.076 8.643M19.358 5 26 13.302M19.358 5l-11.207.415m13.283 8.228v10.036m0-10.036L26 13.302m-4.566 10.377-9.577-2.965m9.577 2.965-11.208.83m11.208-.83L26 13.302m-14.143 7.412-1.63 3.795m7.471-13.283h-5.396l3.32 3.321-3.32 3.736h5.396" stroke="#129C6B" stroke-width="1.4" stroke-linejoin="round"/>
</svg>
<svg viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.978 26C21.066 26 26 21.075 26 15S21.066 4 14.978 4C9.29 4 4.608 8.3 4.02 13.821h14.502v2.161H4C4.498 21.597 9.223 26 14.978 26Z" fill="#2151F5"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<rect x="4" y="4" width="22" height="22" rx="11" fill="#328332"/>
<path opacity=".6" d="M10.325 15.703c1.714.91 3.503 1.862 4.884 2.6l4.843-2.6a2325.737 2325.737 0 0 1-4.843 7.175c-1.632-2.396-3.433-5.039-4.884-7.175Zm.187-.72 4.702-2.508 4.641 2.49-4.638 2.513-4.706-2.494Zm4.697-3.313-4.884 2.571 4.863-7.119 4.864 7.135-4.843-2.586Z" fill="#fff"/>
<path opacity=".7" d="m15.209 18.303 4.843-2.6c-1.753 2.605-4.843 7.175-4.843 7.175v-4.575Zm.005-5.829 4.641 2.492-4.638 2.512-.003-5.004Zm-.005-.803-.021-4.549 4.864 7.135-4.843-2.586Z" fill="#fff"/>
<path opacity=".7" d="m10.512 14.984 4.703.386 4.64-.402-4.638 2.512-4.705-2.496Z" fill="#fff"/>
<path d="m15.214 15.37 4.642-.402-4.639 2.512-.003-2.11Z" fill="#fff"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<rect x="4" y="4" width="22" height="22" rx="11" fill="#627EEA"/>
<path d="M15.224 12.912V6.998c-.01 0-.015.004-.022.009a.07.07 0 0 1-.049.016c-.186.364-.384.715-.585 1.072l-.24.426c-.378.66-.755 1.345-1.133 2.03-.202.372-.41.743-.619 1.115-.204.364-.409.73-.608 1.094a87.06 87.06 0 0 1-.578 1.028c-.194.343-.389.686-.578 1.028-.034.063-.07.119-.104.175a4.41 4.41 0 0 0-.108.18h.024c.014.016.02.013.027.007.005-.003.01-.006.02-.006a8.69 8.69 0 0 0 .26-.127c.088-.045.176-.09.259-.127.225-.121.428-.219.63-.316l.03-.014.779-.381.637-.305.778-.38c.166-.1.345-.183.517-.263l.144-.067c.085-.04.164-.079.243-.118.075-.037.149-.074.229-.111.024 0 .047-.025.047-.05Zm-.021 10.153c.005.002.011.002.021.002V19.08c0-.025 0-.051-.024-.051a5.308 5.308 0 0 0-.188-.114c-.065-.038-.13-.076-.189-.114a68.01 68.01 0 0 0-1.099-.705c-.375-.237-.75-.474-1.119-.717a140.9 140.9 0 0 0-.967-.61c-.324-.202-.649-.405-.967-.608-.012 0-.018-.007-.024-.013-.006-.006-.011-.012-.023-.012 0 .012.006.018.011.025.006.006.012.012.012.025l.354.533c.285.453.58.895.873 1.333.166.25.332.5.495.749l1.416 2.132.674 1.02c.237.36.474.72.718 1.087.014.015.02.021.026.024Z" fill="#fff"/>
<path d="M15.22 6.933v8.292h4.62l-4.62-8.292Zm-4.62 8.195 4.62-2.217v5.206l-4.62-2.989Zm4.62 3.953v3.953l4.53-6.749-4.53 2.796Z" fill="#C0CBF6"/>
<path d="M15.22 18.117v-5.206l4.62 2.314-4.62 2.892Z" fill="#8197EE"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.809 9.496c.034.03.062.054.088.079.276.268.55.538.83.803.064.06.064.1.019.168-.587.888-.8 1.861-.605 2.892.263 1.383 1.068 2.391 2.383 2.998.776.36 1.6.451 2.447.326a4.14 4.14 0 0 0 1.588-.578c.08-.05.125-.044.19.02.715.703 1.435 1.401 2.149 2.104.078.078.12.087.204.004.816-.797 1.639-1.589 2.455-2.386.09-.088.146-.103.264-.034.713.415 1.491.582 2.322.544 1.65-.074 3.158-1.191 3.67-2.724.387-1.161.243-2.263-.388-3.311-.041-.069-.045-.11.018-.17.23-.214.454-.435.68-.653.021-.02.045-.038.067-.058a10.323 10.323 0 0 1-1.13 13.055c-4.03 4.223-10.68 4.551-15.12.927-4.51-3.68-5.046-9.723-2.131-14.006Z" fill="#276749"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.566 8.13C18.24 3.846 11.203 4.21 7.45 7.96c.022.023.043.049.066.071 2.48 2.407 4.961 4.814 7.44 7.222.07.068.11.06.173-.003.32-.314.643-.626.967-.937 2.091-2.012 4.183-4.025 6.276-6.036.056-.054.126-.095.195-.147Zm-7.53 8.643L5.968 7.961c.022-.028.04-.055.061-.078C7.12 6.71 8.387 5.763 9.865 5.089a11.91 11.91 0 0 1 2.518-.828 12.308 12.308 0 0 1 3.046-.25A12.06 12.06 0 0 1 19.725 5c1.645.711 3.034 1.75 4.212 3.063.069.076.03.11-.023.16l-4.397 4.237-4.386 4.228c-.027.026-.055.05-.095.086Zm-3.899-2.061c-.614.545-1.979.67-2.883-.204-.906-.877-.782-2.174-.187-2.849l3.07 3.053Zm7.943-.21c1.027-.999 2.05-1.993 3.074-2.986.433.469.634 1.666-.115 2.548-.833.981-2.208.976-2.96.438Z" fill="#276749"/>
</svg>
<svg viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.822 15.052h-6.9v2.731h3.19l-.01 3.433c-.123.132-.269.24-.43.319-.21.108-.43.197-.656.267a5.653 5.653 0 0 1-1.656.247 3.012 3.012 0 0 1-2.715-1.424 7.746 7.746 0 0 1-.9-4.064v-2.6a9.44 9.44 0 0 1 .265-2.36 5.76 5.76 0 0 1 .715-1.71c.267-.427.63-.785 1.06-1.047.4-.237.858-.36 1.323-.357a2.922 2.922 0 0 1 2.191.735c.526.615.84 1.383.895 2.191h3.627a8.472 8.472 0 0 0-.615-2.458 5.315 5.315 0 0 0-1.304-1.857 5.626 5.626 0 0 0-2.047-1.164 9.016 9.016 0 0 0-2.84-.4 6.71 6.71 0 0 0-2.774.572A6.354 6.354 0 0 0 2.016 7.77a7.927 7.927 0 0 0-1.483 2.659 10.954 10.954 0 0 0-.532 3.557v2.575a11.475 11.475 0 0 0 .51 3.557c.3.97.793 1.871 1.45 2.646a6.251 6.251 0 0 0 2.264 1.65 7.406 7.406 0 0 0 2.966.573c.765.005 1.529-.07 2.278-.221a10.497 10.497 0 0 0 1.914-.58 7.636 7.636 0 0 0 1.477-.8 5.2 5.2 0 0 0 .98-.87l-.018-7.464Zm2.66 2.783c-.01.97.143 1.935.451 2.855.281.837.73 1.61 1.317 2.269a5.985 5.985 0 0 0 2.133 1.5 7.278 7.278 0 0 0 2.88.54 7.194 7.194 0 0 0 2.86-.54 5.935 5.935 0 0 0 2.118-1.5 6.602 6.602 0 0 0 1.311-2.27c.308-.92.46-1.884.45-2.854v-.274a8.673 8.673 0 0 0-.45-2.84 6.532 6.532 0 0 0-1.317-2.27 6.078 6.078 0 0 0-2.125-1.508 7.812 7.812 0 0 0-5.74 0 6.082 6.082 0 0 0-2.12 1.508 6.516 6.516 0 0 0-1.317 2.27 8.647 8.647 0 0 0-.45 2.84v.274Zm3.681-.273a7.394 7.394 0 0 1 .174-1.625c.1-.478.284-.936.541-1.352a2.633 2.633 0 0 1 2.357-1.26c.495-.016.984.1 1.418.337.387.224.712.542.947.923.253.417.435.874.535 1.352a7.4 7.4 0 0 1 .173 1.625v.273a7.613 7.613 0 0 1-.172 1.659c-.1.478-.281.935-.537 1.352a2.622 2.622 0 0 1-2.337 1.255 2.818 2.818 0 0 1-1.424-.338 2.759 2.759 0 0 1-.96-.917 4.143 4.143 0 0 1-.541-1.352 7.6 7.6 0 0 1-.174-1.659v-.274.001Zm-1.747-10.3c.086.196.212.37.37.514.167.147.36.262.57.338.472.164.985.164 1.456 0 .21-.076.404-.19.57-.338.16-.143.285-.318.37-.514a1.594 1.594 0 0 0 0-1.274 1.562 1.562 0 0 0-.37-.52 1.7 1.7 0 0 0-.57-.344 2.206 2.206 0 0 0-1.456 0 1.7 1.7 0 0 0-.57.345 1.562 1.562 0 0 0-.502 1.157c0 .219.045.436.133.637v-.001Zm6.357.013c.086.197.212.374.37.52a1.7 1.7 0 0 0 .57.345c.47.165.984.165 1.456 0a1.7 1.7 0 0 0 .57-.345c.157-.146.283-.323.37-.52.089-.205.134-.427.132-.65a1.561 1.561 0 0 0-.503-1.151 1.761 1.761 0 0 0-.57-.338 2.206 2.206 0 0 0-1.456 0c-.21.075-.403.19-.57.338a1.546 1.546 0 0 0-.503 1.151c-.002.224.043.446.134.65Z" fill="currentColor"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.809 9.496c.034.03.062.054.088.079.276.268.55.538.83.803.064.06.064.1.019.168-.587.888-.8 1.861-.605 2.892.263 1.383 1.068 2.391 2.383 2.998.776.36 1.6.451 2.447.326a4.14 4.14 0 0 0 1.588-.578c.08-.05.125-.044.19.02.715.703 1.435 1.401 2.149 2.104.078.078.12.087.204.004.816-.797 1.639-1.589 2.455-2.386.09-.088.146-.103.264-.034.713.415 1.491.582 2.322.544 1.65-.074 3.158-1.191 3.67-2.724.387-1.161.243-2.263-.388-3.311-.041-.069-.045-.11.018-.17.23-.214.454-.435.68-.653.021-.02.045-.038.067-.058a10.323 10.323 0 0 1-1.13 13.055c-4.03 4.223-10.68 4.551-15.12.927-4.51-3.68-5.046-9.723-2.131-14.006Z" fill="#DD6B20"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.566 8.13C18.24 3.846 11.203 4.21 7.45 7.96c.022.023.043.049.066.071 2.48 2.407 4.961 4.814 7.44 7.222.07.068.11.06.173-.003.32-.314.643-.626.967-.937 2.091-2.012 4.183-4.025 6.276-6.036.056-.054.126-.095.195-.147Zm-7.53 8.643L5.968 7.961c.022-.028.04-.055.061-.078C7.12 6.71 8.387 5.763 9.865 5.089a11.91 11.91 0 0 1 2.518-.828 12.308 12.308 0 0 1 3.046-.25A12.06 12.06 0 0 1 19.725 5c1.645.711 3.034 1.75 4.212 3.063.069.076.03.11-.023.16l-4.397 4.237-4.386 4.228c-.027.026-.055.05-.095.086Zm-3.899-2.061c-.614.545-1.979.67-2.883-.204-.906-.877-.782-2.174-.187-2.849l3.07 3.053Zm7.943-.21c1.027-.999 2.05-1.993 3.074-2.986.433.469.634 1.666-.115 2.548-.833.981-2.208.976-2.96.438Z" fill="#DD6B20"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 12a2 2 0 0 1 2-2h15.753a2 2 0 0 1 1.92 1.436L26 19.35H14.45l-.825-3.85H4V12Zm0 5.35v-.75h8.8l.55 2.75H6a2 2 0 0 1-2-2Zm4.4-6.25H5.65l1.1 3.3H9.5l-1.1-3.3Zm4.4 0h-2.75l1.1 3.3h2.75l-1.1-3.3Zm6.05 5.5h1.336l.314 1.1h-1.336l-.314-1.1Zm5.186 0H22.7l.314 1.1h1.336l-.314-1.1Zm-7.386-5.5h5.5l1.65 4.95h-5.5l-1.65-4.95Z" fill="#38B2AC"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.502 13.858v1.071a.5.5 0 0 1-.5.5h-3.806a.5.5 0 0 1-.5-.5V6.048c0-.027.021-.048.048-.048h5.634a3.929 3.929 0 1 1 0 7.858h-.876ZM9.07 15.32a.5.5 0 0 1 .848 0l4.994 7.986a.5.5 0 0 1-.424.765H4.501a.5.5 0 0 1-.424-.765L9.07 15.32Zm11.638 9.537c2.875 0 5.206-2.287 5.206-5.107 0-2.821-2.331-5.108-5.206-5.108-2.876 0-5.206 2.287-5.206 5.108 0 2.82 2.33 5.107 5.206 5.107Z" fill="#5B2DA4"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.214 7.4c.749 0 1.288-.574 1.288-1.2S15.962 5 15.214 5s-1.288.574-1.288 1.2.54 1.2 1.288 1.2Zm.534.94a2.282 2.282 0 0 0 1.483-1.1l3.964 2.2a2.131 2.131 0 0 0-.25 1.785l-3.741 2.078c-.33-.64-.847-1.115-1.456-1.299V8.34Zm-1.144 3.667V8.321a2.28 2.28 0 0 1-1.402-1.073L9.239 9.449c.334.525.43 1.171.244 1.776l3.691 2.05c.328-.623.835-1.084 1.43-1.268Zm-1.78 2.343-3.93-2.182a2.319 2.319 0 0 1-1.154.589v4.486c.454.088.88.308 1.209.643l3.913-2.173a3.727 3.727 0 0 1-.039-1.363Zm.45 2.404-3.77 2.093a2.133 2.133 0 0 1-.271 1.714l3.964 2.2a2.28 2.28 0 0 1 1.407-1.082v-3.833c-.537-.166-1.003-.558-1.33-1.092Zm2.475 4.906c.645.149 1.184.56 1.488 1.11l3.963-2.2a2.133 2.133 0 0 1-.276-1.721l-3.82-2.12c-.329.55-.806.954-1.356 1.121v3.811Zm1.759-5.98 3.972 2.206c.33-.335.754-.554 1.208-.643v-4.486a2.32 2.32 0 0 1-1.153-.589l-3.99 2.215a3.765 3.765 0 0 1-.037 1.297Zm-.006-9.48v.004l4.49 2.493.004-.002c1.094-.608 2.494-.247 3.125.805.632 1.052.257 2.398-.837 3.005-.17.095-.348.166-.528.214v4.562c.18.048.358.12.528.214 1.095.607 1.47 1.953.838 3.005-.63 1.05-2.026 1.411-3.119.809l-4.5 2.5c-.007 1.21-1.029 2.191-2.29 2.191-1.263 0-2.288-.985-2.288-2.2v-.003l-4.49-2.494-.004.002c-1.094.608-2.493.247-3.125-.805-.632-1.052-.257-2.398.837-3.005.17-.095.348-.166.528-.214v-4.562a2.345 2.345 0 0 1-.527-.214c-1.095-.607-1.47-1.953-.838-3.005.632-1.052 2.031-1.413 3.125-.805l.016.008 4.478-2.488V6.2c0-1.215 1.025-2.2 2.288-2.2 1.264 0 2.288.985 2.288 2.2ZM15.214 25c.749 0 1.288-.574 1.288-1.2s-.54-1.2-1.288-1.2-1.288.574-1.288 1.2.54 1.2 1.288 1.2ZM8.396 11.215c.338-.563.15-1.314-.478-1.663-.628-.348-1.399-.13-1.737.433-.338.563-.15 1.315.478 1.663.628.348 1.399.13 1.737-.433Zm15.851 8.8c.338-.563.15-1.314-.477-1.663-.628-.348-1.399-.13-1.737.433-.338.563-.15 1.314.478 1.663.628.348 1.399.13 1.736-.433ZM6.66 18.352c.628-.348 1.398-.13 1.736.433.339.563.15 1.314-.477 1.663-.628.348-1.399.13-1.737-.433-.338-.563-.15-1.314.478-1.663Zm15.852-8.8c.628-.348 1.398-.13 1.736.433.338.563.15 1.314-.478 1.663-.627.348-1.398.13-1.736-.433-.338-.563-.15-1.315.478-1.663ZM14.605 15v1.738c-.433-.288-.826-.895-.826-1.811 0-1.33.826-2.007 1.402-2.007.577 0 1.403.677 1.403 2.007 0 .923-.399 1.532-.835 1.818V15h-1.144Z" fill="#27AA8B"/>
</svg>
<svg viewBox="0 0 87 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.017 8.474a.652.652 0 0 1 .103.292.517.517 0 0 1-.052.263L17.75 18.6v.046a.573.573 0 0 1-.13.137.856.856 0 0 1-.166.074h-.085l-10.445 1h-.057a.568.568 0 0 1-.24-.057.57.57 0 0 1-.164-.148l-6.4-8.263v-.069A.538.538 0 0 1 0 11.114h.051a.573.573 0 0 1 0-.194.08.08 0 0 0 0-.034.046.046 0 0 0 0-.029l4.24-9.525a.571.571 0 0 1 .142-.189l.086-.034a.603.603 0 0 1 .222-.075L15.174 0h.08a.46.46 0 0 1 .273.08.514.514 0 0 1 .171.12.07.07 0 0 1 0 .029l6.32 8.245Zm-5.55-5.36 1.294 5.11h2.632l-3.926-5.11ZM9.214 15.326l7.532 2.189V8.863l-1.874-7.429-7.641 4.28L1.533 11l7.68 4.326ZM7.123 4.474l5.458-3.068-6.843.68 1.385 2.388Zm-.93.67L4.867 2.856l-2.65 5.96 3.932-3.64.046-.034Zm-3.447 7.85 4.092 5.292 1.361-2.223-5.453-3.068Zm11.556 4.995-5.066-1.474-1.259 2.108 6.325-.634Zm3.584-8.623V15.6l2.786-6.234h-2.786ZM13.322 6a.57.57 0 0 1 0 1.143h-3.34l2.07 2.492a.573.573 0 0 1 0 .731l-2.07 2.492h3.34a.57.57 0 0 1 0 1.142H8.764a.573.573 0 0 1-.439-.937L10.872 10 8.325 6.938A.573.573 0 0 1 8.764 6h4.558Zm49.305-2.009-2.389-1.058v9.095h2.389V3.99Zm-30.26-1.235L29.87 3.835l-2.092 8.193h2.424l.557-2.265.436-2.016 1.171-4.991Zm3.976 9.272h2.625L34.241 0l-1.954 1.145 4.056 10.883Zm20.322-9.539h9.519V.42h-9.52v2.07Zm13.964 9.539h2.391V.42h-2.39v11.607Zm9.676-8.688c-.227-.514-.942-1.717-1.273-2.07-.506.282-1.184 1.15-1.184 2.636 0 1.893.68 2.583 2.563 3.061l2.18.566c1.603.425 1.69.672 1.69 1.132a2.136 2.136 0 0 1-.056.4c-.068.25-.273.671-1.081.939a6.102 6.102 0 0 1-1.635.236c-1.08 0-2.79-.194-3.487-.354v1.93c.628.229 2.18.406 3.295.406.333 0 .75-.015 1.153-.05.24-.008 1.812-.089 2.926-.89l.024-.018a.867.867 0 0 0 .082-.065 2.64 2.64 0 0 0 .74-.887l.015-.034.008-.018c.234-.451.402-1.052.402-1.861 0-1.823-.715-2.496-3.19-3.15l-1.884-.477c-1.259-.337-1.36-.55-1.36-1.062.006-.127.03-.252.07-.371l.002.001Zm2.822-1.134v.001c-1.255 0-2.197.16-2.824.425.104-.567.54-1.822.854-2.212.65-.125 1.309-.19 1.97-.195 1.046 0 2.32.142 2.93.283v1.946a23.339 23.339 0 0 0-2.93-.248ZM50.113 12.06l-1.349-3.716c-.406.027-.82.026-1.225.025h-2.166v3.687H42.98V2.909l2.393.976v2.5h1.817c.873 0 1.939-.125 2.288-.337.401-.249.646-.905.646-1.614 0-1.276-.611-1.931-2.603-1.931H44.36l-1.991-.284V.429h5.365c3.878 0 4.804 1.523 4.804 4.077 0 .887-.323 2.475-1.482 3.28l1.828 4.271-2.77.004Zm-19.321 4.85c-.298-.533-.784-.8-1.459-.8-.282 0-.53.05-.743.152a1.18 1.18 0 0 0-.492.409.99.99 0 0 0-.171.56c0 .294.104.522.314.686.21.164.566.29 1.07.378.388.068.659.152.812.251.152.1.228.233.228.4a.513.513 0 0 1-.263.461c-.175.109-.412.163-.709.163-.301 0-.552-.062-.752-.186a1.173 1.173 0 0 1-.455-.523l-.394.32c.14.248.346.446.615.595.268.149.593.223.975.223.29 0 .545-.045.766-.134a1.16 1.16 0 0 0 .512-.378c.12-.162.18-.35.18-.563 0-.298-.104-.53-.312-.698-.207-.168-.561-.293-1.06-.377a3.323 3.323 0 0 1-.627-.158.77.77 0 0 1-.323-.208.466.466 0 0 1-.097-.303c0-.187.083-.34.249-.46.166-.12.393-.181.683-.181.275 0 .49.053.65.157.157.105.294.283.408.535l.395-.32Zm1.505 3.032h.458v-3.775h-.458v3.775Zm5.275 0v-1.905h-1.619v.43h1.201v.13c0 .314-.104.554-.311.721-.208.168-.476.252-.804.252-.415 0-.734-.132-.955-.397-.221-.265-.332-.638-.332-1.118a1.9 1.9 0 0 1 .16-.81c.107-.226.257-.401.45-.523.192-.122.416-.183.671-.183.267 0 .495.057.684.172a.974.974 0 0 1 .409.491l.417-.228a1.524 1.524 0 0 0-.586-.652c-.242-.141-.55-.212-.924-.212-.35 0-.658.08-.923.237a1.614 1.614 0 0 0-.618.678c-.146.294-.22.637-.22 1.03 0 .396.072.74.215 1.032.142.291.346.516.609.675.263.158.572.237.926.237.282 0 .523-.049.724-.146.2-.097.355-.237.466-.42l.017.509h.343Zm4.794 0h.435v-3.775h-.704l-.823 2.3-.292.937h-.011l-.286-.943-.83-2.294h-.703v3.775h.435v-2.374l-.052-.995h.006l1.24 3.369h.39l1.24-3.369h.006l-.051.995v2.374Zm2.592-1.047h1.71l.4 1.047h.487l-1.464-3.775h-.544l-1.47 3.775h.481l.4-1.047Zm1.035-1.767.51 1.338h-1.379l.515-1.355.166-.51h.011l.177.527Zm8.285 2.814h.434v-3.775h-.703l-.824 2.3-.291.937h-.012l-.286-.943-.829-2.294h-.703v3.775h.434v-2.374l-.051-.995h.006l1.24 3.369h.39l1.24-3.369h.006l-.051.995v2.374Zm2.592-1.047h1.71l.4 1.047h.487l-1.465-3.775h-.543l-1.47 3.775h.48l.401-1.047Zm1.035-1.767.51 1.338h-1.38l.516-1.355.166-.51h.01l.178.527Zm2.838 2.814h.458v-3.775h-.458v3.775Zm4.6 0h.566v-3.775h-.434v2.665l.023.607h-.006l-.406-.755-1.573-2.517h-.566v3.775h.434v-2.665l-.022-.606h.005l.4.743 1.58 2.528Zm4.709 0h.566v-3.775h-.435v2.665l.023.607H70.2l-.406-.755-1.573-2.517h-.566v3.775h.435v-2.665l-.023-.606h.006l.4.743 1.579 2.528Zm5.045 0v-.43h-2.276v-1.269h1.704v-.429h-1.704v-1.218h2.19v-.429h-2.647v3.775h2.733Zm2.764-3.346h1.316v-.429h-3.089v.43h1.316v3.345h.457v-3.346Z" fill="#129C6B"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 404 112" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M112 56c0 30.928-25.121 56-56.11 56C26.59 112 2.534 89.586 0 61h73.925V50H.098c3-28.107 26.834-50 55.792-50C86.879 0 112 25.072 112 56Zm212.983-22.244c-.492-4.27-2.487-7.586-5.985-9.945-3.498-2.36-7.788-3.54-12.87-3.54-3.717 0-6.969.618-9.756 1.854-2.76 1.236-4.918 2.936-6.476 5.099-1.53 2.163-2.295 4.621-2.295 7.374 0 2.304.532 4.285 1.598 5.942a14.364 14.364 0 0 0 4.181 4.088 29.617 29.617 0 0 0 5.328 2.655 64.816 64.816 0 0 0 5.124 1.643l8.526 2.36c2.186.59 4.618 1.405 7.296 2.444 2.705 1.04 5.288 2.458 7.747 4.256 2.487 1.77 4.536 4.046 6.149 6.827 1.612 2.781 2.418 6.195 2.418 10.24 0 4.664-1.189 8.878-3.566 12.642-2.35 3.765-5.793 6.757-10.329 8.976-4.509 2.22-9.988 3.329-16.437 3.329-6.012 0-11.218-.997-15.617-2.992-4.372-1.995-7.815-4.776-10.33-8.344-2.486-3.568-3.893-7.711-4.221-12.431h10.493c.273 3.259 1.339 5.956 3.197 8.091 1.886 2.107 4.263 3.68 7.132 4.72 2.897 1.01 6.012 1.517 9.346 1.517 3.88 0 7.364-.646 10.452-1.939 3.088-1.32 5.534-3.146 7.337-5.478 1.804-2.36 2.705-5.113 2.705-8.26 0-2.865-.778-5.197-2.336-6.995-1.557-1.798-3.607-3.259-6.148-4.382-2.542-1.124-5.288-2.107-8.239-2.95l-10.329-3.034c-6.559-1.939-11.751-4.706-15.577-8.302-3.825-3.596-5.738-8.302-5.738-14.117 0-4.832 1.271-9.046 3.812-12.642 2.569-3.624 6.012-6.433 10.329-8.428C296.249 12.011 301.1 11 306.456 11c5.41 0 10.22.997 14.428 2.992 4.208 1.966 7.542 4.663 10.001 8.09 2.487 3.428 3.799 7.32 3.935 11.674h-9.837ZM126 12.18v86.303h30.332c6.613 0 11.983-1.011 16.109-3.034 4.126-2.023 7.146-4.762 9.059-8.218 1.912-3.455 2.869-7.346 2.869-11.672 0-4.551-.875-8.4-2.623-11.547-1.749-3.146-3.922-5.562-6.518-7.248-2.596-1.685-5.178-2.612-7.747-2.781v-.843a22.47 22.47 0 0 0 6.682-3.118c2.076-1.405 3.743-3.315 5-5.731 1.285-2.416 1.927-5.478 1.927-9.187 0-4.214-.929-8.049-2.788-11.504-1.858-3.484-4.686-6.25-8.484-8.302-3.799-2.079-8.622-3.118-14.47-3.118H126Zm30.332 77.032h-20.167V59.208h20.659c3.662 0 6.832.759 9.509 2.276 2.678 1.489 4.742 3.483 6.19 5.984 1.448 2.472 2.172 5.169 2.172 8.09 0 3.793-1.407 7.024-4.222 9.693-2.787 2.64-7.501 3.961-14.141 3.961Zm-1.311-39.106h-18.856V21.451h19.183c5.575 0 9.647 1.334 12.215 4.003 2.569 2.641 3.853 5.857 3.853 9.65 0 3.034-.738 5.675-2.213 7.923-1.449 2.247-3.416 3.989-5.903 5.225-2.459 1.236-5.219 1.854-8.279 1.854Zm38.837 48.377h10.657l8.44-24.441h33.947l8.44 24.44h10.657L235.175 12.18h-10.493l-30.824 86.303Zm49.843-33.712-13.445-38.938h-.655l-13.445 38.938h27.545Zm108.98-52.591v86.303H404v-9.27h-41.153v-29.33h37.874v-9.271h-37.874V21.45h40.497v-9.27h-50.663Z" fill="#2151F5"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 71 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 7.467 0 10.4 6 0v7.467Z" fill="#828083"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.188-6 2.945 6 3.477V7.188Z" fill="#353336"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 15.046-6-3.854L6 20v-4.954Z" fill="#848285"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.467 6 2.933L6 0v7.467Z" fill="#2F2D30"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.188 6 2.942-6 3.476V7.189Z" fill="#121212"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 15.046 6-3.854L6 20v-4.954Z" fill="#302E31"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.783 8.886a2.945 2.945 0 0 0 .008 3.904 2.578 2.578 0 0 0 4.056-.333.222.222 0 0 0-.192-.334.233.233 0 0 0-.193.11 2.16 2.16 0 0 1-1.847.93 1.933 1.933 0 0 1-1.445-.614 2.37 2.37 0 0 1-.675-1.467h4.48a.206.206 0 0 0 .24-.225 2.858 2.858 0 0 0-.744-1.962 2.455 2.455 0 0 0-3.688-.009Zm.387.251a1.995 1.995 0 0 1 2.89 0 2.4 2.4 0 0 1 .675 1.477h-4.24a2.4 2.4 0 0 1 .675-1.477Zm7.467-2.697a.224.224 0 1 0-.448 0v1.742h-1.152a.233.233 0 1 0 0 .467h1.152v4.673a.224.224 0 1 0 .448 0V8.65h1.2a.233.233 0 0 0 0-.467h-1.2V6.44Zm3.776 2.782V3.926a.224.224 0 1 0-.448 0v9.36a.224.224 0 1 0 .448 0v-2.328a2.613 2.613 0 0 1 .4-1.675 1.68 1.68 0 0 1 1.481-.749 1.409 1.409 0 0 1 1.195.606c.284.376.43.838.414 1.308v2.839a.224.224 0 0 0 .448 0v-2.849a2.511 2.511 0 0 0-.544-1.632 1.837 1.837 0 0 0-1.52-.733 2.031 2.031 0 0 0-1.872 1.152l-.002-.003Zm6.72-.333a2.944 2.944 0 0 0 .008 3.904 2.578 2.578 0 0 0 4.056-.333.221.221 0 0 0-.303-.303.234.234 0 0 0-.083.08 2.16 2.16 0 0 1-1.847.93 1.934 1.934 0 0 1-1.445-.615 2.365 2.365 0 0 1-.674-1.467h4.479a.204.204 0 0 0 .177-.053.206.206 0 0 0 .064-.172 2.858 2.858 0 0 0-.744-1.963 2.456 2.456 0 0 0-3.688-.01v.002Zm.386.251a1.996 1.996 0 0 1 2.891 0 2.4 2.4 0 0 1 .675 1.477h-4.24c.046-.557.285-1.08.677-1.48l-.003.003Zm7.406-.592a2.69 2.69 0 0 0-.784.837V8.4a.224.224 0 1 0-.448 0v4.867a.224.224 0 0 0 .448 0v-2.133a2.765 2.765 0 0 1 .466-1.643 1.967 1.967 0 0 1 1.44-.862.22.22 0 0 0 .208-.239.199.199 0 0 0-.149-.205.2.2 0 0 0-.09-.002c-.392.009-.77.135-1.089.363l-.002.002Zm3.44.34a2.944 2.944 0 0 0 .008 3.905 2.578 2.578 0 0 0 4.056-.333.221.221 0 0 0-.303-.303.235.235 0 0 0-.083.08 2.159 2.159 0 0 1-1.847.93 1.934 1.934 0 0 1-1.445-.615 2.365 2.365 0 0 1-.674-1.467h4.479a.204.204 0 0 0 .177-.053.206.206 0 0 0 .064-.172 2.858 2.858 0 0 0-.744-1.963 2.456 2.456 0 0 0-3.686-.01l-.002.002Zm.386.252a1.996 1.996 0 0 1 2.891 0 2.4 2.4 0 0 1 .675 1.477h-4.24c.046-.557.285-1.08.677-1.48l-.003.003Zm10.03-.733v1.824c0 1.973-.62 2.96-1.857 2.96a1.43 1.43 0 0 1-1.215-.608 2.105 2.105 0 0 1-.4-1.312V8.404a.223.223 0 0 0-.31-.207.225.225 0 0 0-.138.207v2.872a2.52 2.52 0 0 0 .544 1.637 1.83 1.83 0 0 0 1.52.738 1.988 1.988 0 0 0 1.856-1.267v.928a.224.224 0 1 0 .448 0V8.407a.224.224 0 0 0-.448 0Zm6.863 1.088A1.867 1.867 0 0 0 64.74 8.07a2.035 2.035 0 0 0-1.872 1.133V8.4a.224.224 0 1 0-.448 0v4.887a.224.224 0 0 0 .448 0V11.02a3.047 3.047 0 0 1 .4-1.786 1.685 1.685 0 0 1 1.472-.702 1.431 1.431 0 0 1 1.2.59c.285.375.432.837.416 1.308v2.857a.224.224 0 0 0 .448 0v-2.2a3.346 3.346 0 0 1 .416-1.707 1.6 1.6 0 0 1 1.44-.845 1.404 1.404 0 0 1 1.2.59c.285.375.432.837.416 1.308v2.854a.224.224 0 0 0 .448 0V10.42a2.56 2.56 0 0 0-.56-1.656 1.83 1.83 0 0 0-1.504-.696 2.095 2.095 0 0 0-2.016 1.424v.003Z" fill="#1B1635"/>
</svg>
<svg viewBox="0 0 85 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#gnosis_svg__a)">
<path d="M2.634 9.03c0-.485.159-.925.434-1.274l2.916 2.915a2.067 2.067 0 0 1-1.274.434A2.07 2.07 0 0 1 2.634 9.03Zm8.673 2.069a2.07 2.07 0 0 0 2.077-2.076c0-.478-.16-.918-.435-1.274l-2.916 2.915c.35.275.79.435 1.274.435Zm2.254-3.95a2.94 2.94 0 0 1-4.14 4.139l-1.415 1.414-1.415-1.414a2.94 2.94 0 0 1-4.14-4.139l-.663-.66-.63-.631A7.997 7.997 0 0 0 8 18c4.416 0 8-3.582 8-7.997a7.805 7.805 0 0 0-1.146-4.145L13.56 7.149ZM8 11.48 1.653 5.134a9.34 9.34 0 0 1 .564-.655A7.986 7.986 0 0 1 8.006 2c2.278 0 4.336.955 5.788 2.48.202.202.393.428.552.649L8 11.479Zm-4.913-6.4 4.918 4.917 4.918-4.917a6.856 6.856 0 0 0-4.918-2.039A6.868 6.868 0 0 0 3.087 5.08Zm14.685 4.926v.018c0 4.405 3.574 7.975 7.982 7.975h3.373V15.93h-3.32a5.917 5.917 0 0 1-5.917-6.044c.069-3.233 2.79-5.784 6.026-5.784h3.21V2.053h-3.395c-4.395 0-7.959 3.561-7.959 7.953ZM60.19 2.053h8.57V18h-8.57V2.053Zm1.517 4.804a2.769 2.769 0 1 0 5.537 0 2.769 2.769 0 0 0-5.537 0Zm-20.953.542a1.5 1.5 0 0 1-.467 1.116 1.53 1.53 0 0 1-1.106.456h-4.742c-.441 0-.814-.151-1.117-.456a1.515 1.515 0 0 1-.456-1.116V2.053h-2.052V18h2.052v-5.451c0-.44.152-.813.456-1.116a1.52 1.52 0 0 1 1.117-.456h4.742c.425 0 .794.152 1.106.456a1.5 1.5 0 0 1 .467 1.116V18h2.03V2.053h-2.03V7.4Zm37.132-5.346h-7.44V18h2.052V9.475a5.375 5.375 0 0 1 5.377-5.373 5.375 5.375 0 0 1 5.377 5.373v8.524h2.034V9.45a7.397 7.397 0 0 0-7.4-7.396Zm-25.207.848L59.444 18h-15.9l6.834-15.098c.27-.6.654-.901 1.15-.901.496 0 .88.3 1.15.901Zm-1.15 6.942a2.769 2.769 0 1 0 0 5.537 2.769 2.769 0 0 0 0-5.537Z" fill="#133629"/>
</g>
<defs>
<clipPath id="gnosis_svg__a">
<path fill="#fff" d="M0 0h85v20H0z"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20">
<path data-name="-e-logo_top" d="M13.82 10.054h-6.9v2.731h3.191l-.011 3.432a1.456 1.456 0 0 1-.43.319 4 4 0 0 1-.655.267 5.306 5.306 0 0 1-.795.182 5.647 5.647 0 0 1-.861.065 3.012 3.012 0 0 1-2.715-1.424 7.745 7.745 0 0 1-.9-4.063v-2.6a9.439 9.439 0 0 1 .265-2.36 5.76 5.76 0 0 1 .715-1.71 3.229 3.229 0 0 1 1.059-1.047 2.57 2.57 0 0 1 1.324-.357 2.922 2.922 0 0 1 2.191.735 3.762 3.762 0 0 1 .894 2.191h3.628a8.468 8.468 0 0 0-.616-2.458A5.315 5.315 0 0 0 11.9 2.1 5.626 5.626 0 0 0 9.854.936a9.017 9.017 0 0 0-2.84-.4 6.711 6.711 0 0 0-2.774.572 6.354 6.354 0 0 0-2.225 1.664A7.926 7.926 0 0 0 .532 5.431 10.952 10.952 0 0 0 0 8.988v2.575a11.473 11.473 0 0 0 .51 3.556 7.5 7.5 0 0 0 1.45 2.646 6.25 6.25 0 0 0 2.264 1.651 7.406 7.406 0 0 0 2.966.572 11.15 11.15 0 0 0 2.278-.221 10.5 10.5 0 0 0 1.913-.579 7.641 7.641 0 0 0 1.477-.8 5.159 5.159 0 0 0 .98-.871zm2.661 2.783a8.686 8.686 0 0 0 .451 2.854 6.513 6.513 0 0 0 1.317 2.269 5.984 5.984 0 0 0 2.132 1.5 7.277 7.277 0 0 0 2.88.54 7.194 7.194 0 0 0 2.86-.54 5.934 5.934 0 0 0 2.119-1.5 6.6 6.6 0 0 0 1.311-2.269 8.713 8.713 0 0 0 .45-2.854v-.274a8.673 8.673 0 0 0-.45-2.841 6.532 6.532 0 0 0-1.318-2.269 6.078 6.078 0 0 0-2.125-1.508 7.813 7.813 0 0 0-5.74 0 6.082 6.082 0 0 0-2.119 1.508 6.515 6.515 0 0 0-1.317 2.269 8.647 8.647 0 0 0-.451 2.841v.273zm3.681-.273a7.394 7.394 0 0 1 .173-1.625 4.223 4.223 0 0 1 .542-1.352 2.633 2.633 0 0 1 2.357-1.261 2.777 2.777 0 0 1 1.417.338 2.693 2.693 0 0 1 .947.923 4.31 4.31 0 0 1 .536 1.352 7.394 7.394 0 0 1 .173 1.625v.273a7.606 7.606 0 0 1-.173 1.658 4.227 4.227 0 0 1-.536 1.352 2.621 2.621 0 0 1-2.337 1.255 2.818 2.818 0 0 1-1.424-.338 2.758 2.758 0 0 1-.96-.917 4.143 4.143 0 0 1-.542-1.352 7.606 7.606 0 0 1-.173-1.658v-.274zm-1.747-10.3a1.492 1.492 0 0 0 .37.514 1.761 1.761 0 0 0 .57.338 2.207 2.207 0 0 0 1.456 0 1.761 1.761 0 0 0 .57-.338 1.492 1.492 0 0 0 .37-.514 1.593 1.593 0 0 0 0-1.274 1.562 1.562 0 0 0-.37-.52 1.7 1.7 0 0 0-.57-.344 2.206 2.206 0 0 0-1.456 0 1.7 1.7 0 0 0-.57.345 1.562 1.562 0 0 0-.37.52 1.593 1.593 0 0 0 0 1.274zm6.356.013a1.558 1.558 0 0 0 .37.52 1.7 1.7 0 0 0 .57.345 2.207 2.207 0 0 0 1.456 0 1.7 1.7 0 0 0 .57-.345 1.558 1.558 0 0 0 .37-.52 1.593 1.593 0 0 0 .133-.65 1.562 1.562 0 0 0-.133-.637 1.492 1.492 0 0 0-.37-.514 1.762 1.762 0 0 0-.57-.338 2.206 2.206 0 0 0-1.456 0 1.762 1.762 0 0 0-.57.338 1.492 1.492 0 0 0-.37.514 1.546 1.546 0 0 0-.133.637 1.576 1.576 0 0 0 .133.651z" fill="currentColor" fill-rule="evenodd"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 67 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#poa_svg__a)">
<path opacity=".8" fill-rule="evenodd" clip-rule="evenodd" d="M10.316 15.436h-.938v2.658h-.003l.003.015c0 .492-.42.89-.939.89H.937C.42 19 0 18.602 0 18.11l.003-.015H0V1.932h.003L0 1.917c0-.492.42-.891.937-.891h9.379c4.143 0 7.5 3.226 7.5 7.205 0 3.98-3.357 7.205-7.5 7.205ZM29.07 1.026c5.18 0 9.377 4.024 9.377 8.988 0 4.963-4.198 8.986-9.377 8.986-5.178 0-9.377-4.023-9.377-8.986 0-4.964 4.198-8.988 9.377-8.988ZM60.016 18.43c0 .307-.26.556-.58.556H38.161c-.025.003-.047.014-.073.014a.569.569 0 0 1-.578-.562c0-.123.048-.23.116-.322l-.009-.018L48.178 1.444h.023A.566.566 0 0 1 48.758 1c.28 0 .502.192.557.444h.024L60.016 18.21l-.037.048a.51.51 0 0 1 .037.173Z" fill="#5C34A2"/>
</g>
<defs>
<clipPath id="poa_svg__a">
<path fill="#fff" d="M0 0h66.667v20H0z"/>
</clipPath>
</defs>
</svg>
<svg viewBox="0 0 43 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.493 14.318h-2.018l-2.002-3.523-1.066.117v3.406h-1.788V2.498h1.788v6.828l1.018-.1L40.36 5.97h2.002l-2.363 3.907 2.494 4.441ZM31.378 9.351c.913.161 1.562.415 1.944.76.383.345.575.957.575 1.836 0 .88-.277 1.525-.829 1.937-.552.412-1.359.617-2.42.617-.667 0-1.509-.094-2.526-.284l-.509-.083.066-1.519c1.313.178 2.258.267 2.838.267.58 0 .992-.072 1.239-.217.245-.144.368-.384.368-.718 0-.333-.117-.564-.352-.692-.235-.129-.798-.268-1.69-.418-.892-.15-1.544-.386-1.96-.71-.416-.322-.623-.912-.623-1.77 0-.856.287-1.496.86-1.92.575-.423 1.31-.634 2.207-.634.7 0 1.558.09 2.576.268l.508.1-.032 1.519c-1.291-.178-2.226-.268-2.806-.268-.58 0-.982.07-1.206.21-.224.139-.336.359-.336.659 0 .3.123.512.37.634.245.123.825.264 1.738.426Zm-7.587-.86v5.827h-1.788V5.97h1.771v1.002c.93-.612 1.86-1.008 2.79-1.186v1.82c-.942.19-1.745.434-2.412.735l-.361.15ZM18 13.959c0 1.111-.885 2.013-1.977 2.013a1.95 1.95 0 0 1-1.374-.569l-3.716 2.179c.026.131.044.265.044.404C10.977 19.099 10.092 20 9 20s-1.977-.901-1.977-2.014c0-.142.019-.277.046-.41l-3.717-2.174a1.95 1.95 0 0 1-1.374.57C.885 15.972 0 15.07 0 13.959a2.002 2.002 0 0 1 1.438-1.929V7.97A2.002 2.002 0 0 1 0 6.042C0 4.93.885 4.027 1.978 4.027a1.95 1.95 0 0 1 1.471.68L7.11 2.55a2.05 2.05 0 0 1-.079-.534C7.031.901 7.913 0 9 0c1.088 0 1.969.902 1.969 2.015 0 .158-.022.31-.055.456l3.69 2.171a1.953 1.953 0 0 1 1.419-.614c1.092 0 1.977.902 1.977 2.014a2.002 2.002 0 0 1-1.438 1.928v4.06A2.002 2.002 0 0 1 18 13.959Zm-3.89.483a2.028 2.028 0 0 1-.064-.483c0-.138.014-.272.039-.402l-3.372-1.972c-.342.605-.806 1.141-1.166 1.51v2.965c.339.1.638.292.876.544l3.687-2.162ZM9 9.937c.302 0 .547.245.547.548v1.261c.38-.432.816-1.063.816-1.677C10.364 8.986 9 7.848 9 7.848s-1.363 1.14-1.363 2.222c0 .614.437 1.245.816 1.677v-1.261c0-.303.245-.547.547-.547Zm0 8.952c.49 0 .887-.404.887-.903A.895.895 0 0 0 9 17.084a.895.895 0 0 0-.886.902c0 .498.397.903.886.903Zm-1.421-2.288c.239-.254.54-.44.874-.541v-2.965c-.348-.357-.795-.87-1.135-1.451l-3.395 1.991c.017.106.032.213.032.324 0 .168-.026.329-.065.485L7.579 16.6Zm-6.488-2.642c0 .498.397.902.887.902a.894.894 0 0 0 .886-.902.894.894 0 0 0-.886-.903.894.894 0 0 0-.887.903Zm.887-8.82a.894.894 0 0 0-.887.902c0 .5.397.903.887.903a.894.894 0 0 0 .886-.902.894.894 0 0 0-.886-.903Zm1.374 2.346a1.96 1.96 0 0 1-.82.48v4.072c.36.11.68.314.923.595l3.436-2.014a2.37 2.37 0 0 1-.073-.549 2.3 2.3 0 0 1 .067-.518L3.352 7.485ZM7.68 3.502 3.923 5.718c.017.106.032.214.032.325 0 .168-.026.329-.065.485l3.413 1.996c.342-.593.796-1.114 1.15-1.478V3.942a1.976 1.976 0 0 1-.773-.44ZM9 .973a.895.895 0 0 0-.886.903c0 .498.397.903.886.903.49 0 .887-.405.887-.903A.895.895 0 0 0 9 .972Zm5.09 4.65-3.703-2.177c-.23.235-.52.402-.84.498v3.102c.355.364.81.886 1.151 1.48l3.412-2a2.032 2.032 0 0 1-.064-.484c0-.144.016-.283.043-.419Zm.559 1.864-3.532 2.071c.038.17.065.342.065.512 0 .161-.024.322-.059.483l3.466 2.027c.24-.256.543-.443.88-.543V7.965a1.972 1.972 0 0 1-.82-.479Zm2.26-1.444a.894.894 0 0 0-.886-.903.875.875 0 0 0-.682.332l-.147.26a.894.894 0 0 0 .829 1.213c.49 0 .886-.404.886-.903Zm-.886 7.014a.894.894 0 0 0-.886.903c0 .498.396.902.886.902s.886-.404.886-.902a.894.894 0 0 0-.886-.903Z" fill="#27AA8B"/>
</svg>
<svg viewBox="0 0 53 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.522 14.154c-.392 0-.793-.033-1.204-.098a7.78 7.78 0 0 1-1.162-.252 4.695 4.695 0 0 1-.98-.42.974.974 0 0 1-.434-.434 1.084 1.084 0 0 1-.098-.56c.028-.187.098-.35.21-.49a.77.77 0 0 1 .448-.28c.187-.047.392-.014.616.098.383.215.798.373 1.246.476.457.103.91.154 1.358.154.681 0 1.167-.103 1.456-.308.29-.215.434-.48.434-.798a.771.771 0 0 0-.308-.644c-.205-.159-.565-.294-1.078-.406l-1.582-.336c-.896-.187-1.563-.504-2.002-.952-.43-.457-.644-1.055-.644-1.792 0-.467.098-.891.294-1.274.196-.383.471-.714.826-.994s.775-.495 1.26-.644a5.6 5.6 0 0 1 1.624-.224c.523 0 1.036.065 1.54.196.504.121.947.303 1.33.546a.845.845 0 0 1 .378.434.9.9 0 0 1 .07.518.77.77 0 0 1-.21.448.76.76 0 0 1-.434.252c-.177.037-.392-.005-.644-.126a3.955 3.955 0 0 0-.98-.35 5.02 5.02 0 0 0-1.064-.112c-.392 0-.728.051-1.008.154-.27.103-.48.247-.63.434-.14.187-.21.401-.21.644 0 .27.098.49.294.658.196.168.537.303 1.022.406l1.582.336c.915.196 1.596.513 2.044.952.448.43.672.999.672 1.708 0 .467-.093.891-.28 1.274a2.763 2.763 0 0 1-.812.966c-.355.27-.78.48-1.274.63-.495.14-1.05.21-1.666.21Zm6.323-.028c-.346 0-.612-.093-.798-.28-.178-.187-.266-.453-.266-.798V5.082c0-.355.088-.62.266-.798.186-.187.452-.28.798-.28.336 0 .592.093.77.28.186.177.28.443.28.798v3.332h-.196c.214-.457.532-.807.952-1.05.43-.252.914-.378 1.456-.378.55 0 1.003.107 1.358.322.354.205.62.523.798.952.177.42.266.957.266 1.61v3.178c0 .345-.094.611-.28.798-.178.187-.439.28-.784.28-.336 0-.598-.093-.784-.28-.178-.187-.266-.453-.266-.798v-3.08c0-.476-.089-.817-.266-1.022-.168-.215-.43-.322-.784-.322-.448 0-.808.14-1.078.42-.262.28-.392.653-.392 1.12v2.884c0 .719-.35 1.078-1.05 1.078Zm8.326-.014c-.345 0-.611-.098-.798-.294-.177-.205-.266-.49-.266-.854V8.176c0-.373.089-.658.266-.854.187-.205.453-.308.798-.308.336 0 .593.103.77.308.187.196.28.48.28.854v4.788c0 .364-.089.649-.266.854-.177.196-.439.294-.784.294Zm0-8.246c-.392 0-.695-.089-.91-.266-.205-.187-.308-.448-.308-.784 0-.345.103-.607.308-.784.215-.187.518-.28.91-.28s.69.093.896.28c.205.177.308.439.308.784 0 .336-.103.597-.308.784-.205.177-.504.266-.896.266Zm6.924 8.288c-.55 0-1.04-.135-1.47-.406a2.01 2.01 0 0 1-.84-1.106l.154-.462v.868c0 .345-.089.611-.266.798-.177.187-.434.28-.77.28s-.597-.093-.784-.28c-.177-.187-.266-.453-.266-.798V5.082c0-.355.089-.62.266-.798.187-.187.453-.28.798-.28.336 0 .593.093.77.28.187.177.28.443.28.798V8.4h-.168c.15-.42.434-.76.854-1.022.42-.261.9-.392 1.442-.392.607 0 1.134.145 1.582.434.448.29.798.7 1.05 1.232s.378 1.167.378 1.904c0 .737-.126 1.377-.378 1.918-.252.541-.607.957-1.064 1.246-.448.29-.97.434-1.568.434Zm-.63-1.582c.299 0 .56-.075.784-.224.233-.15.41-.369.532-.658.13-.299.196-.677.196-1.134 0-.681-.14-1.18-.42-1.498-.28-.327-.644-.49-1.092-.49-.299 0-.565.07-.798.21-.224.14-.401.36-.532.658-.13.29-.196.663-.196 1.12 0 .681.14 1.19.42 1.526.28.327.649.49 1.106.49Zm7.467 1.582c-.579 0-1.06-.107-1.442-.322a1.972 1.972 0 0 1-.854-.966c-.177-.439-.266-.98-.266-1.624V8.078c0-.355.089-.62.266-.798.187-.177.448-.266.784-.266s.597.089.784.266c.187.177.28.443.28.798v3.22c0 .41.084.719.252.924.168.196.434.294.798.294.401 0 .728-.14.98-.42.261-.29.392-.667.392-1.134V8.078c0-.355.089-.62.266-.798.187-.177.448-.266.784-.266.345 0 .607.089.784.266.187.177.28.443.28.798v4.97c0 .719-.34 1.078-1.022 1.078-.336 0-.593-.093-.77-.28-.177-.187-.266-.453-.266-.798v-.938l.21.546c-.205.476-.5.845-.882 1.106-.383.261-.835.392-1.358.392Zm7.6 2.492a.915.915 0 0 1-.602-.196.775.775 0 0 1-.28-.518c-.028-.205.01-.425.112-.658l.938-2.072v.868l-2.478-5.684a1.357 1.357 0 0 1-.098-.672.756.756 0 0 1 .308-.504c.177-.13.42-.196.728-.196.252 0 .452.06.602.182.158.112.303.331.434.658l1.652 4.2H41.4l1.708-4.214c.13-.317.275-.532.434-.644.168-.121.392-.182.672-.182.242 0 .434.065.574.196a.73.73 0 0 1 .266.49c.037.205 0 .43-.112.672l-3.29 7.462c-.14.317-.299.532-.476.644-.168.112-.383.168-.644.168Zm7.776-2.492c-.504 0-.957-.098-1.358-.294a2.321 2.321 0 0 1-.938-.798 1.998 1.998 0 0 1-.336-1.134c0-.504.13-.9.392-1.19.261-.299.686-.509 1.274-.63.588-.13 1.367-.196 2.338-.196h.742v1.092h-.728c-.476 0-.864.028-1.162.084-.29.047-.5.13-.63.252-.121.121-.182.29-.182.504a.85.85 0 0 0 .266.644c.187.168.453.252.798.252.27 0 .508-.06.714-.182.215-.13.383-.303.504-.518.121-.224.182-.476.182-.756v-1.61c0-.41-.093-.7-.28-.868-.187-.177-.504-.266-.952-.266a3.91 3.91 0 0 0-.826.098 5.52 5.52 0 0 0-.966.294c-.205.093-.387.117-.546.07a.69.69 0 0 1-.364-.28.856.856 0 0 1-.126-.448c0-.168.046-.327.14-.476.093-.159.247-.275.462-.35a6.01 6.01 0 0 1 2.31-.462c.718 0 1.306.107 1.764.322a2.12 2.12 0 0 1 1.05.966c.233.43.35.985.35 1.666v3.108c0 .345-.084.611-.252.798-.168.187-.41.28-.728.28-.317 0-.565-.093-.742-.28-.168-.187-.252-.453-.252-.798v-.518l.098.084a1.799 1.799 0 0 1-1.05 1.358 2.41 2.41 0 0 1-.966.182Z" fill="#000"/>
</svg>
<svg viewBox="0 0 74 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.44 4.331c-1.658.473-4.105 1.461-6.347 3.487-2.253 2.12-.723 4.01-.708 4.03 0 0-.825-1.523 1.172-3.4.025-.021 2.574-2.223 6.28-3.278.473-.135.95-.247 1.42-.334l.033-.006.597-.967-.146.01c-.01.001-.941.071-2.301.458Z" fill="#5928B1"/>
<path d="M14.991 1.62c-.382-.32-.763-.575-.767-.578l-.023-.015-.027.004c-.01 0-1.04.127-2.457.531-2.535.722-5.945 2.204-7.792 5.157-.877 1.34-.17 2.946-.17 2.946l-.022-.409c-.002-.043-.123-4.37 8.746-6.897.777-.221 1.61-.425 2.48-.607l.151-.031-.119-.1Z" fill="#764BC4"/>
<path d="M15.527 2.186c-.011.001-1.178.125-2.804.588-1.72.49-4.225 1.441-6.389 3.185-1.275.99-2.083 2.186-2.215 3.28-.065.534.561 1.667.561 1.667l-.132-.403c-.006-.018-.565-1.851 2.268-3.978 1.587-1.192 3.241-2.008 5.205-2.567 1.013-.288 1.983-.478 3.055-.678l.038-.007.016-.035c.081-.174.468-.935.472-.942l.062-.124-.137.014Z" fill="#764BC4"/>
<path d="M3.13 7.751c.107-1.717 1.407-3.304 3.869-4.718a16.835 16.835 0 0 1 4.31-1.891 15.596 15.596 0 0 1 2.444-.49l-.9-.652c-.009.001-.839.103-2.025.441C3.22 2.608 2.278 6.342 2.36 7.843c.148 2.617 3.23 4.479 3.23 4.479s-2.62-2.012-2.46-4.57Z" fill="#BBA5E1"/>
<path d="M3.224 15.67c1.659-.473 4.106-1.462 6.347-3.487 2.253-2.12.724-4.01.708-4.03 0 0 .825 1.523-1.171 3.399-.026.022-2.574 2.223-6.281 3.279-.473.135-.95.247-1.42.333l-.033.006-.597.967.147-.01c.009 0 .94-.07 2.3-.458Z" fill="#5928B1"/>
<path d="M.673 18.38c.382.32.763.575.767.578l.023.015.027-.004c.01 0 1.04-.128 2.457-.531 2.535-.723 5.945-2.204 7.792-5.157.877-1.341.171-2.946.171-2.946l.021.408c.003.044.124 4.371-8.746 6.898-.777.221-1.61.425-2.48.606l-.151.032.12.1Z" fill="#764BC4"/>
<path d="M.137 17.814c.011-.002 1.178-.126 2.804-.589 1.72-.49 4.226-1.44 6.389-3.184 1.276-.991 2.083-2.187 2.215-3.28.065-.534-.56-1.667-.56-1.667l.13.402c.007.019.566 1.852-2.267 3.979-1.587 1.191-3.241 2.007-5.205 2.567-1.012.288-1.983.477-3.055.678l-.038.007-.016.035c-.081.174-.467.934-.471.942L0 17.828l.137-.014Z" fill="#764BC4"/>
<path d="M12.534 12.25c-.107 1.717-1.407 3.304-3.869 4.717a16.84 16.84 0 0 1-4.309 1.892 15.76 15.76 0 0 1-2.445.49l.9.651a14.67 14.67 0 0 0 2.026-.44c7.607-2.168 8.55-5.902 8.466-7.403-.147-2.617-3.23-4.478-3.23-4.478s2.62 2.011 2.461 4.57Z" fill="#BBA5E1"/>
<path d="M28.754 12.002c0 .316-.04.602-.122.858a2.562 2.562 0 0 1-.32.67 2.11 2.11 0 0 1-.468.494 2.74 2.74 0 0 1-.552.336 2.79 2.79 0 0 1-1.138.253h-6.238v-1.608h6.238c.311 0 .553-.092.724-.275.172-.181.258-.424.258-.729 0-.147-.023-.284-.07-.409a.864.864 0 0 0-.507-.53 1.074 1.074 0 0 0-.405-.074h-3.72c-.26 0-.542-.047-.844-.14a2.574 2.574 0 0 1-.844-.45 2.475 2.475 0 0 1-.647-.81c-.172-.334-.258-.743-.258-1.225 0-.482.086-.89.258-1.223.173-.332.389-.602.647-.81.26-.208.542-.358.844-.452.302-.093.584-.14.844-.14h5.506v1.608h-5.506c-.306 0-.545.094-.717.28-.173.185-.26.43-.26.737 0 .31.087.554.26.734.172.178.41.267.717.267h3.733a2.786 2.786 0 0 1 1.133.275c.193.09.377.204.552.343.173.137.327.302.462.496.136.195.243.418.32.668.08.252.12.537.12.855Zm2.972-6.264v3.626h5.678V5.738h1.616v8.875h-1.616v-3.625h-5.678v3.625H30.11V5.738h1.616Zm10.815 0v8.875h-1.618V5.738h1.618ZM53.33 9.451v1.45a3.84 3.84 0 0 1-.284 1.491 3.536 3.536 0 0 1-.78 1.173 3.591 3.591 0 0 1-1.18.77 3.923 3.923 0 0 1-1.487.278h-4.365a.805.805 0 0 1-.584-.232.776.776 0 0 1-.17-.257.838.838 0 0 1-.06-.322V6.55a.817.817 0 0 1 .23-.576.786.786 0 0 1 .584-.235H49.6c.535 0 1.03.094 1.486.28.457.185.85.441 1.181.769a3.5 3.5 0 0 1 .78 1.177c.19.456.284.952.284 1.487Zm-1.616 1.45V9.45c0-.313-.051-.6-.154-.858a1.85 1.85 0 0 0-.432-.666 1.91 1.91 0 0 0-.669-.427 2.32 2.32 0 0 0-.86-.154h-3.563v5.659h3.563c.315 0 .602-.051.86-.153.26-.1.483-.243.669-.428.187-.183.332-.403.432-.66a2.32 2.32 0 0 0 .154-.864Zm10.534-1.537v1.624h-5.105V9.364h5.105Zm.727 3.64v1.609h-5.832c-.225 0-.47-.04-.735-.119a2.119 2.119 0 0 1-.735-.385 2.178 2.178 0 0 1-.568-.7c-.15-.287-.225-.638-.225-1.054V6.55a.815.815 0 0 1 .233-.576.792.792 0 0 1 .581-.235h7.281v1.608h-6.48v5.01c0 .209.056.369.168.48.113.113.278.169.493.169h5.82Zm10.473-7.266v8.188a.82.82 0 0 1-.064.323.842.842 0 0 1-.175.256.816.816 0 0 1-.575.232.89.89 0 0 1-.303-.055.711.711 0 0 1-.27-.18l-5.907-6.139v6.25h-1.616V6.425c0-.166.046-.315.138-.449a.862.862 0 0 1 .358-.298.805.805 0 0 1 .889.18l5.91 6.13v-6.25h1.615Z" fill="#5928B1"/>
</svg>
<svg viewBox="0 0 101 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M90.748 14.993a.697.697 0 0 1-.488.18.718.718 0 0 1-.505-.18c-.132-.12-.197-.29-.197-.507v-10.9c0-.218.065-.387.197-.507.13-.12.3-.18.505-.18.193 0 .356.06.487.18s.197.29.197.506v10.901c0 .218-.066.386-.197.507Zm-5.142-.318c-.605.355-1.3.532-2.088.532-.787 0-1.48-.177-2.079-.532a3.54 3.54 0 0 1-1.386-1.52c-.325-.657-.487-1.421-.487-2.291 0-.87.162-1.633.487-2.292a3.545 3.545 0 0 1 1.386-1.519c.6-.355 1.292-.532 2.08-.532.786 0 1.482.177 2.087.532A3.52 3.52 0 0 1 87 8.573c.326.658.488 1.421.488 2.291 0 .87-.162 1.634-.488 2.292a3.521 3.521 0 0 1-1.394 1.519ZM85.4 8.504c-.444-.555-1.072-.833-1.882-.833-.81 0-1.437.278-1.882.833-.445.555-.667 1.342-.667 2.36 0 1.03.219 1.82.659 2.369.438.55 1.07.824 1.89.824.822 0 1.452-.272 1.891-.816.44-.543.659-1.335.659-2.377 0-1.018-.223-1.805-.668-2.36Zm-8.137 6.669c-.145 0-.296-.07-.453-.206l-4.385-3.863v3.382c0 .218-.064.386-.193.507a.676.676 0 0 1-.479.18.699.699 0 0 1-.495-.18c-.13-.12-.194-.29-.194-.507v-10.9c0-.218.065-.387.194-.507a.7.7 0 0 1 .495-.18c.19 0 .35.06.48.18.128.12.192.29.192.506v6.97l4.015-3.76a.62.62 0 0 1 .454-.206.59.59 0 0 1 .436.19.617.617 0 0 1 .185.446.69.69 0 0 1-.235.515l-3.309 3.021 3.628 3.227c.18.172.269.355.269.55 0 .171-.059.32-.176.446a.566.566 0 0 1-.429.189Zm-11.525-.498c-.607.355-1.305.532-2.094.532-.79 0-1.485-.177-2.086-.532a3.543 3.543 0 0 1-1.39-1.52c-.327-.657-.49-1.421-.49-2.291 0-.87.163-1.633.49-2.292a3.548 3.548 0 0 1 1.39-1.519c.6-.355 1.296-.532 2.086-.532.79 0 1.487.177 2.094.532a3.53 3.53 0 0 1 1.399 1.52c.326.658.489 1.421.489 2.291 0 .87-.163 1.634-.49 2.292a3.525 3.525 0 0 1-1.398 1.519Zm-.206-6.171c-.446-.555-1.076-.833-1.888-.833-.813 0-1.443.278-1.889.833-.446.555-.67 1.342-.67 2.36 0 1.03.221 1.82.662 2.369.44.55 1.072.824 1.897.824.824 0 1.456-.272 1.896-.816.44-.543.661-1.335.661-2.377 0-1.018-.223-1.805-.67-2.36ZM52.654 9.997c.283.12.689.238 1.22.352.783.172 1.39.36 1.823.567.432.206.74.457.925.755.184.298.276.675.276 1.133 0 .72-.305 1.302-.916 1.742-.61.44-1.417.661-2.42.661a5.917 5.917 0 0 1-1.513-.189 4.627 4.627 0 0 1-1.27-.532 1.695 1.695 0 0 1-.441-.386.73.73 0 0 1-.13-.438c0-.149.044-.271.13-.369a.43.43 0 0 1 .337-.146c.139 0 .34.086.605.257.346.206.689.37 1.029.49.34.12.763.18 1.27.18.623 0 1.107-.108 1.453-.326a1.05 1.05 0 0 0 .518-.944c0-.252-.063-.455-.19-.61-.127-.154-.346-.291-.657-.412-.311-.12-.767-.242-1.366-.368-1.014-.218-1.74-.51-2.178-.876-.438-.366-.657-.864-.657-1.493 0-.493.139-.927.415-1.305.277-.378.66-.675 1.15-.893.49-.217 1.046-.326 1.668-.326.45 0 .884.06 1.305.18.396.11.773.28 1.115.507.392.274.588.56.588.858a.547.547 0 0 1-.285.491.426.426 0 0 1-.182.04c-.138 0-.346-.096-.622-.29a5.527 5.527 0 0 0-.917-.481c-.288-.115-.645-.172-1.07-.172-.543 0-.978.12-1.306.36-.329.24-.493.561-.493.962 0 .252.06.455.181.609.122.154.323.292.605.412ZM40.737 19H20.842l-1.895-6.632h-18c-.93 0-.947-.947-.947-.947V2.895C0 1.083 1.895 1 1.895 1h35.052c1.109 0 1.895 2.842 1.895 2.842l3.79 13.263S42.654 19 40.737 19ZM9.015 3.838h-5.23l1.401 5.696h5.23l-1.4-5.696Zm8.53 0h-5.23l1.402 5.696h5.23l-1.402-5.696ZM29.97 16.153h2.238l-.601-1.884h-2.238l.601 1.884ZM36.23 3.84h-9.701l2.605 9.475h9.701L36.229 3.84Zm2.962 10.43h-2.237l.6 1.884h2.238l-.6-1.884ZM18.474 19H1.894C.056 19 0 17.105 0 17.105v-2.842h17.053L18.473 19Z" fill="#40BFB2"/>
</svg>
<svg viewBox="0 0 78 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.346 5.51 6.368.355A.234.234 0 0 1 6.572 0H9.21a.219.219 0 0 1 .204.12l1.658 2.896a.219.219 0 0 1 0 .233l-1.32 2.262a.234.234 0 0 1-.406 0ZM14.35.355l1.304 2.284a.22.22 0 0 0 .204.098h2.623a.234.234 0 0 0 .204-.354L17.366.121A.24.24 0 0 0 17.178 0H14.54a.234.234 0 0 0-.189.354Zm-3.015 8.602-1.32-2.262a.234.234 0 0 1 0-.241l3.31-5.752a.234.234 0 0 1 .407 0l1.32 2.262a.219.219 0 0 1 0 .233l-3.31 5.737a.233.233 0 0 1-.407.023Zm3.852.701h-2.639a.234.234 0 0 1-.21-.354l3.316-5.737a.219.219 0 0 1 .204-.12h2.638a.241.241 0 0 1 .204.361l-3.31 5.73a.24.24 0 0 1-.203.12Zm1.342 0h5.948a.234.234 0 0 0 .203-.354l-1.32-2.262a.226.226 0 0 0-.225-.143h-3.287a.226.226 0 0 0-.204.12L16.326 9.28a.234.234 0 0 0 .204.377Zm-.79 6.896a.226.226 0 0 0 .119.032h2.638a.233.233 0 0 0 .204-.355l-3.31-5.736a.24.24 0 0 0-.203-.121h-2.639a.234.234 0 0 0-.21.354l3.316 5.737c.02.037.05.068.085.089Zm-5.723-2.984 3.309 5.73a.234.234 0 0 0 .407 0l1.32-2.262a.219.219 0 0 0 0-.234l-3.31-5.737a.234.234 0 0 0-.407 0l-1.32 2.262a.234.234 0 0 0 0 .241Zm7.279 6.397a.242.242 0 0 1-.118.034H14.54a.234.234 0 0 1-.211-.355l1.319-2.261a.24.24 0 0 1 .21-.12h2.64a.233.233 0 0 1 .203.354l-1.32 2.261a.241.241 0 0 1-.085.087ZM9.21 20H6.572a.234.234 0 0 1-.204-.355l2.978-5.126a.234.234 0 0 1 .407 0l1.319 2.262a.219.219 0 0 1 0 .233L9.414 19.88a.219.219 0 0 1-.204.12Zm-3.438-.702 2.97-5.148a.234.234 0 0 0-.203-.355H5.901a.249.249 0 0 0-.204.113L4.04 16.78a.256.256 0 0 0 0 .234l1.319 2.262a.241.241 0 0 0 .414.022Zm15.364-6.196h-3.287a.241.241 0 0 1-.204-.114l-1.319-2.261a.233.233 0 0 1 .204-.354h5.925a.234.234 0 0 1 .204.354l-1.32 2.261a.242.242 0 0 1-.203.114Zm-11.926 0H2.591a.233.233 0 0 1-.203-.347l1.319-2.261a.226.226 0 0 1 .203-.121h6.62a.234.234 0 0 1 .21.354L9.414 12.99a.226.226 0 0 1-.204.113ZM3.707 9.536l-1.32-2.262a.234.234 0 0 1 .204-.354H9.21a.241.241 0 0 1 .211.12l1.32 2.262a.233.233 0 0 1-.212.354H3.91a.226.226 0 0 1-.203-.12Zm-3.679.58 1.35 2.285a.241.241 0 0 0 .384-.023l1.32-2.261a.256.256 0 0 0 0-.234l-1.32-2.261a.241.241 0 0 0-.415 0L.028 9.883a.256.256 0 0 0 0 .234Zm5.67-4.025L4.037 3.22a.256.256 0 0 1 0-.234L5.359.724a.241.241 0 0 1 .414 0l2.97 5.148a.234.234 0 0 1-.203.355H5.901a.249.249 0 0 1-.204-.136Zm28.253 7.915h-1.168a1.46 1.46 0 0 1-1.086-.407 1.448 1.448 0 0 1-.377-1.07V8.835h2.593v-2.05h-2.608v-2.48h-.49l-3.77 3.987v.573h1.72v4.018a3.354 3.354 0 0 0 .904 2.48 3.311 3.311 0 0 0 2.458.905h1.824v-2.262Zm12.74-7.221h2.54l-3.105 9.506h-2.058l-2.149-4.908-2.095 4.908h-2.066l-3.136-9.506h2.6l1.87 5.646 2.465-5.579h.754l2.54 5.594 1.84-5.661Zm13.373 0H58.15l-.294.92a4.523 4.523 0 0 0-3.105-1.161 5.08 5.08 0 0 0-2.548.648 4.62 4.62 0 0 0-1.78 1.794 5.097 5.097 0 0 0-.64 2.548 5.157 5.157 0 0 0 .656 2.593 4.59 4.59 0 0 0 1.779 1.802 5.013 5.013 0 0 0 2.548.656 4.523 4.523 0 0 0 3.083-1.16l.226.843h1.99V6.785Zm-5.612 7.324a2.579 2.579 0 0 1-1.33-.728v.008a2.533 2.533 0 0 1-.755-1.847 2.511 2.511 0 0 1 .754-1.855 2.48 2.48 0 0 1 1.847-.754 2.51 2.51 0 0 1 2.578 2.601 2.578 2.578 0 0 1-3.094 2.575Zm8.07 2.182V3.392h2.563v12.899h-2.563Zm14.662-9.507h-1.922l-.272.95a4.523 4.523 0 0 0-3.113-1.16 5.051 5.051 0 0 0-2.54.648 4.644 4.644 0 0 0-1.787 1.794 5.096 5.096 0 0 0-.641 2.548 5.157 5.157 0 0 0 .64 2.563 4.615 4.615 0 0 0 1.787 1.802 4.98 4.98 0 0 0 2.54.655 4.523 4.523 0 0 0 3.069-1.16l.226.844h2.013V6.784Zm-5.1 7.335a2.668 2.668 0 0 1-1.843-.738v.007a2.54 2.54 0 0 1-.754-1.87 2.52 2.52 0 0 1 .754-1.854 2.457 2.457 0 0 1 1.84-.754 2.488 2.488 0 0 1 1.846.754 2.525 2.525 0 0 1 .754 1.862 2.51 2.51 0 0 1-.754 1.855 2.668 2.668 0 0 1-1.843.738Z" fill="#7A13CE"/>
</svg>
...@@ -29,11 +29,13 @@ import type { BlocksResponse, BlockTransactionsResponse, Block, BlockFilters } f ...@@ -29,11 +29,13 @@ import type { BlocksResponse, BlockTransactionsResponse, Block, BlockFilters } f
import type { ChartMarketResponse, ChartTransactionResponse } from 'types/api/charts'; import type { ChartMarketResponse, ChartTransactionResponse } from 'types/api/charts';
import type { SmartContract, SmartContractReadMethod, SmartContractWriteMethod, SmartContractVerificationConfig } from 'types/api/contract'; import type { SmartContract, SmartContractReadMethod, SmartContractWriteMethod, SmartContractVerificationConfig } from 'types/api/contract';
import type { VerifiedContractsResponse, VerifiedContractsFilters, VerifiedContractsCounters } from 'types/api/contracts'; import type { VerifiedContractsResponse, VerifiedContractsFilters, VerifiedContractsCounters } from 'types/api/contracts';
import type { DepositsResponse, DepositsItem } from 'types/api/deposits';
import type { IndexingStatus } from 'types/api/indexingStatus'; import type { IndexingStatus } from 'types/api/indexingStatus';
import type { InternalTransactionsResponse } from 'types/api/internalTransaction'; import type { InternalTransactionsResponse } from 'types/api/internalTransaction';
import type { L2DepositsResponse, L2DepositsItem } from 'types/api/l2Deposits';
import type { L2OutputRootsResponse } from 'types/api/l2OutputRoots';
import type { L2TxnBatchesResponse } from 'types/api/l2TxnBatches';
import type { L2WithdrawalsResponse } from 'types/api/l2Withdrawals';
import type { LogsResponseTx, LogsResponseAddress } from 'types/api/log'; import type { LogsResponseTx, LogsResponseAddress } from 'types/api/log';
import type { OutputRootsResponse } from 'types/api/outputRoots';
import type { RawTracesResponse } from 'types/api/rawTrace'; import type { RawTracesResponse } from 'types/api/rawTrace';
import type { SearchRedirectResult, SearchResult, SearchResultFilters } from 'types/api/search'; import type { SearchRedirectResult, SearchResult, SearchResultFilters } from 'types/api/search';
import type { Counters, StatsCharts, StatsChart, HomeStats } from 'types/api/stats'; import type { Counters, StatsCharts, StatsChart, HomeStats } from 'types/api/stats';
...@@ -49,11 +51,9 @@ import type { ...@@ -49,11 +51,9 @@ import type {
import type { TokensResponse, TokensFilters, TokenInstanceTransferResponse } from 'types/api/tokens'; import type { TokensResponse, TokensFilters, TokenInstanceTransferResponse } from 'types/api/tokens';
import type { TokenTransferResponse, TokenTransferFilters } from 'types/api/tokenTransfer'; import type { TokenTransferResponse, TokenTransferFilters } from 'types/api/tokenTransfer';
import type { TransactionsResponseValidated, TransactionsResponsePending, Transaction } from 'types/api/transaction'; import type { TransactionsResponseValidated, TransactionsResponsePending, Transaction } from 'types/api/transaction';
import type { TxnBatchesResponse } from 'types/api/txnBatches';
import type { TTxsFilters } from 'types/api/txsFilters'; import type { TTxsFilters } from 'types/api/txsFilters';
import type { TxStateChanges } from 'types/api/txStateChanges'; import type { TxStateChanges } from 'types/api/txStateChanges';
import type { VisualizedContract } from 'types/api/visualization'; import type { VisualizedContract } from 'types/api/visualization';
import type { WithdrawalsResponse } from 'types/api/withdrawals';
import type { ArrayElement } from 'types/utils'; import type { ArrayElement } from 'types/utils';
import appConfig from 'configs/app/config'; import appConfig from 'configs/app/config';
...@@ -422,43 +422,43 @@ export const RESOURCES = { ...@@ -422,43 +422,43 @@ export const RESOURCES = {
}, },
// L2 // L2
deposits: { l2_deposits: {
path: '/api/v2/optimism/deposits', path: '/api/v2/optimism/deposits',
paginationFields: [ 'nonce' as const, 'items_count' as const ], paginationFields: [ 'nonce' as const, 'items_count' as const ],
filterFields: [], filterFields: [],
}, },
deposits_count: { l2_deposits_count: {
path: '/api/v2/optimism/deposits/count', path: '/api/v2/optimism/deposits/count',
}, },
withdrawals: { l2_withdrawals: {
path: '/api/v2/optimism/withdrawals', path: '/api/v2/optimism/withdrawals',
paginationFields: [ 'nonce' as const, 'items_count' as const ], paginationFields: [ 'nonce' as const, 'items_count' as const ],
filterFields: [], filterFields: [],
}, },
withdrawals_count: { l2_withdrawals_count: {
path: '/api/v2/optimism/withdrawals/count', path: '/api/v2/optimism/withdrawals/count',
}, },
output_roots: { l2_output_roots: {
path: '/api/v2/optimism/output-roots', path: '/api/v2/optimism/output-roots',
paginationFields: [ 'index' as const, 'items_count' as const ], paginationFields: [ 'index' as const, 'items_count' as const ],
filterFields: [], filterFields: [],
}, },
output_roots_count: { l2_output_roots_count: {
path: '/api/v2/optimism/output-roots/count', path: '/api/v2/optimism/output-roots/count',
}, },
txn_batches: { l2_txn_batches: {
path: '/api/v2/optimism/txn-batches', path: '/api/v2/optimism/txn-batches',
paginationFields: [ 'block_number' as const, 'items_count' as const ], paginationFields: [ 'block_number' as const, 'items_count' as const ],
filterFields: [], filterFields: [],
}, },
txn_batches_count: { l2_txn_batches_count: {
path: '/api/v2/optimism/txn-batches/count', path: '/api/v2/optimism/txn-batches/count',
}, },
...@@ -521,7 +521,7 @@ export type PaginatedResources = 'blocks' | 'block_txs' | ...@@ -521,7 +521,7 @@ export type PaginatedResources = 'blocks' | 'block_txs' |
'token_transfers' | 'token_holders' | 'token_inventory' | 'tokens' | 'token_transfers' | 'token_holders' | 'token_inventory' | 'tokens' |
'token_instance_transfers' | 'token_instance_transfers' |
'verified_contracts' | 'verified_contracts' |
'output_roots' | 'withdrawals' | 'txn_batches' | 'deposits'; 'l2_output_roots' | 'l2_withdrawals' | 'l2_txn_batches' | 'l2_deposits';
export type PaginatedResponse<Q extends PaginatedResources> = ResourcePayload<Q>; export type PaginatedResponse<Q extends PaginatedResources> = ResourcePayload<Q>;
...@@ -542,7 +542,7 @@ Q extends 'homepage_chart_txs' ? ChartTransactionResponse : ...@@ -542,7 +542,7 @@ Q extends 'homepage_chart_txs' ? ChartTransactionResponse :
Q extends 'homepage_chart_market' ? ChartMarketResponse : Q extends 'homepage_chart_market' ? ChartMarketResponse :
Q extends 'homepage_blocks' ? Array<Block> : Q extends 'homepage_blocks' ? Array<Block> :
Q extends 'homepage_txs' ? Array<Transaction> : Q extends 'homepage_txs' ? Array<Transaction> :
Q extends 'homepage_deposits' ? Array<DepositsItem> : Q extends 'homepage_deposits' ? Array<L2DepositsItem> :
Q extends 'homepage_indexing_status' ? IndexingStatus : Q extends 'homepage_indexing_status' ? IndexingStatus :
Q extends 'stats_counters' ? Counters : Q extends 'stats_counters' ? Counters :
Q extends 'stats_lines' ? StatsCharts : Q extends 'stats_lines' ? StatsCharts :
...@@ -590,14 +590,14 @@ Q extends 'verified_contracts' ? VerifiedContractsResponse : ...@@ -590,14 +590,14 @@ Q extends 'verified_contracts' ? VerifiedContractsResponse :
Q extends 'verified_contracts_counters' ? VerifiedContractsCounters : Q extends 'verified_contracts_counters' ? VerifiedContractsCounters :
Q extends 'visualize_sol2uml' ? VisualizedContract : Q extends 'visualize_sol2uml' ? VisualizedContract :
Q extends 'contract_verification_config' ? SmartContractVerificationConfig : Q extends 'contract_verification_config' ? SmartContractVerificationConfig :
Q extends 'output_roots' ? OutputRootsResponse : Q extends 'l2_output_roots' ? L2OutputRootsResponse :
Q extends 'withdrawals' ? WithdrawalsResponse : Q extends 'l2_withdrawals' ? L2WithdrawalsResponse :
Q extends 'deposits' ? DepositsResponse : Q extends 'l2_deposits' ? L2DepositsResponse :
Q extends 'txn_batches' ? TxnBatchesResponse : Q extends 'l2_txn_batches' ? L2TxnBatchesResponse :
Q extends 'output_roots_count' ? number : Q extends 'l2_output_roots_count' ? number :
Q extends 'withdrawals_count' ? number : Q extends 'l2_withdrawals_count' ? number :
Q extends 'deposits_count' ? number : Q extends 'l2_deposits_count' ? number :
Q extends 'txn_batches_count' ? number : Q extends 'l2_txn_batches_count' ? number :
never; never;
/* eslint-enable @typescript-eslint/indent */ /* eslint-enable @typescript-eslint/indent */
......
...@@ -12,16 +12,7 @@ const MAIN_DOMAINS = [ ...@@ -12,16 +12,7 @@ const MAIN_DOMAINS = [
// eslint-disable-next-line no-restricted-properties // eslint-disable-next-line no-restricted-properties
const REPORT_URI = process.env.SENTRY_CSP_REPORT_URI; const REPORT_URI = process.env.SENTRY_CSP_REPORT_URI;
function getMarketplaceAppsHosts() {
return {
frames: appConfig.marketplaceAppList.map(({ url }) => new URL(url).host),
logos: appConfig.marketplaceAppList.map(({ logo }) => new URL(logo).host),
};
}
export function app(): CspDev.DirectiveDescriptor { export function app(): CspDev.DirectiveDescriptor {
const marketplaceAppsHosts = getMarketplaceAppsHosts();
return { return {
'default-src': [ 'default-src': [
// KEY_WORDS.NONE, // KEY_WORDS.NONE,
...@@ -111,7 +102,8 @@ export function app(): CspDev.DirectiveDescriptor { ...@@ -111,7 +102,8 @@ export function app(): CspDev.DirectiveDescriptor {
], ],
'frame-src': [ 'frame-src': [
...marketplaceAppsHosts.frames, // improve: allow only frames from marketplace config
'*',
], ],
...(REPORT_URI && !appConfig.isDev ? { ...(REPORT_URI && !appConfig.isDev ? {
......
...@@ -64,7 +64,7 @@ export function isInternalItem(item: NavItem): item is NavItemInternal { ...@@ -64,7 +64,7 @@ export function isInternalItem(item: NavItem): item is NavItemInternal {
} }
export default function useNavItems(): ReturnType { export default function useNavItems(): ReturnType {
const isMarketplaceFilled = appConfig.marketplaceAppList.length > 0 && appConfig.network.rpcUrl; const isMarketplaceAvailable = Boolean(appConfig.marketplaceConfigUrl && appConfig.network.rpcUrl);
const hasAPIDocs = appConfig.apiDoc.specUrl; const hasAPIDocs = appConfig.apiDoc.specUrl;
const router = useRouter(); const router = useRouter();
...@@ -103,16 +103,16 @@ export default function useNavItems(): ReturnType { ...@@ -103,16 +103,16 @@ export default function useNavItems(): ReturnType {
[ [
txs, txs,
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
{ text: `Deposits (L1${ rightLineArrow }L2)`, nextRoute: { pathname: '/deposits' as const }, icon: depositsIcon, isActive: pathname === '/deposits', isNewUi: true }, { text: `Deposits (L1${ rightLineArrow }L2)`, nextRoute: { pathname: '/l2-deposits' as const }, icon: depositsIcon, isActive: pathname === '/l2-deposits', isNewUi: true },
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
{ text: `Withdrawals (L2${ rightLineArrow }L1)`, nextRoute: { pathname: '/withdrawals' as const }, icon: withdrawalsIcon, isActive: pathname === '/withdrawals', isNewUi: true }, { text: `Withdrawals (L2${ rightLineArrow }L1)`, nextRoute: { pathname: '/l2-withdrawals' as const }, icon: withdrawalsIcon, isActive: pathname === '/l2-withdrawals', isNewUi: true },
], ],
[ [
blocks, blocks,
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
{ text: 'Txn batches', nextRoute: { pathname: '/txn-batches' as const }, icon: txnBatchIcon, isActive: pathname === '/txn-batches', isNewUi: true }, { text: 'Txn batches', nextRoute: { pathname: '/l2-txn-batches' as const }, icon: txnBatchIcon, isActive: pathname === '/l2-txn-batches', isNewUi: true },
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
{ text: 'Output roots', nextRoute: { pathname: '/output-roots' as const }, icon: outputRootsIcon, isActive: pathname === '/output-roots', isNewUi: true }, { text: 'Output roots', nextRoute: { pathname: '/l2-output-roots' as const }, icon: outputRootsIcon, isActive: pathname === '/l2-output-roots', isNewUi: true },
], ],
[ [
topAccounts, topAccounts,
...@@ -170,7 +170,7 @@ export default function useNavItems(): ReturnType { ...@@ -170,7 +170,7 @@ export default function useNavItems(): ReturnType {
isActive: pathname.startsWith('/token'), isActive: pathname.startsWith('/token'),
isNewUi: true, isNewUi: true,
}, },
isMarketplaceFilled ? { isMarketplaceAvailable ? {
text: 'Apps', text: 'Apps',
nextRoute: { pathname: '/apps' as const }, nextRoute: { pathname: '/apps' as const },
icon: appsIcon, icon: appsIcon,
...@@ -241,5 +241,5 @@ export default function useNavItems(): ReturnType { ...@@ -241,5 +241,5 @@ export default function useNavItems(): ReturnType {
}; };
return { mainNavItems, accountNavItems, profileItem }; return { mainNavItems, accountNavItems, profileItem };
}, [ hasAPIDocs, isMarketplaceFilled, pathname ]); }, [ hasAPIDocs, isMarketplaceAvailable, pathname ]);
} }
import type { FeaturedNetwork } from 'types/networks';
import appConfig from 'configs/app/config';
import ASSETS from 'lib/networks/networkAssets';
// for easy .env.example update
// const FEATURED_NETWORKS = JSON.stringify([
// {
// title: 'Ethereum',
// url: 'https://blockscout.com/eth/mainnet',
// group: 'mainnets',
// type: 'eth_mainnet',
// },
// {
// title: 'Ethereum Classic',
// url: 'https://blockscout.com/etx/mainnet',
// group: 'mainnets',
// type: 'etc_mainnet',
// },
// {
// title: 'Gnosis Chain',
// url: 'https://blockscout.com/xdai/mainnet',
// group: 'mainnets',
// type: 'xdai_mainnet',
// },
// {
// title: 'Astar (EVM)',
// url: 'https://blockscout.com/astar',
// group: 'mainnets',
// type: 'astar',
// },
// {
// title: 'Shiden (EVM)',
// url: 'https://blockscout.com/shiden',
// group: 'mainnets',
// type: 'astar',
// },
// {
// title: 'Klaytn Mainnet (Cypress)',
// url: 'https://klaytn-mainnet.aws-k8s.blockscout.com/',
// group: 'mainnets',
// type: 'klaytn',
// },
// {
// title: 'Goerli',
// url: 'https://blockscout.com/eth/goerli/',
// group: 'testnets',
// type: 'goerli',
// },
// {
// title: 'Optimism Goerli',
// url: 'https://blockscout.com/optimism/goerli/',
// group: 'testnets',
// type: 'optimism_goerli',
// },
// {
// title: 'Optimism Bedrock Alpha',
// url: 'https://blockscout.com/optimism/bedrock-alpha',
// group: 'testnets',
// type: 'optimism_bedrock_alpha',
// },
// {
// title: 'Gnosis Chiado',
// url: 'https://blockscout.com/gnosis/chiado/',
// group: 'testnets',
// type: 'gnosis_chiado',
// },
// {
// title: 'Shibuya (EVM)',
// url: 'https://blockscout.com/shibuya',
// group: 'testnets',
// type: 'shibuya',
// },
// {
// title: 'Optimism Opcraft',
// url: 'https://blockscout.com/optimism/opcraft',
// group: 'other',
// type: 'optimism_opcraft',
// },
// {
// title: 'Optimism on Gnosis Chain',
// url: 'https://blockscout.com/xdai/optimism',
// group: 'other',
// type: 'optimism_gnosis',
// },
// {
// title: 'ARTIS-Σ1',
// url: 'https://blockscout.com/artis/sigma1',
// group: 'other',
// type: 'artis_sigma1',
// },
// {
// title: 'LUKSO L14',
// url: 'https://blockscout.com/lukso/l14',
// group: 'other',
// type: 'lukso_l14',
// },
// {
// title: 'POA',
// url: 'https://blockscout.com/poa/core',
// group: 'other',
// type: 'poa_core',
// },
// {
// title: 'POA Sokol',
// url: 'https://blockscout.com/poa/sokol',
// group: 'other',
// type: 'poa_sokol',
// },
// ]).replaceAll('"', '\'');
const featuredNetworks: Array<FeaturedNetwork> = (() => {
return appConfig.featuredNetworks.map((network) => ({
...network,
icon: network.icon || (network.type ? ASSETS[network.type]?.icon : undefined),
}));
})();
export default featuredNetworks;
import type React from 'react';
import type { PreDefinedNetwork } from 'types/networks';
import arbitrumIcon from 'icons/networks/icons/arbitrum.svg';
import artisIcon from 'icons/networks/icons/artis.svg';
import baseIcon from 'icons/networks/icons/base.svg';
import ethereumClassicIcon from 'icons/networks/icons/ethereum-classic.svg';
import ethereumIcon from 'icons/networks/icons/ethereum.svg';
import gnosisIcon from 'icons/networks/icons/gnosis.svg';
import goerliIcon from 'icons/networks/icons/goerli.svg';
import optimismIcon from 'icons/networks/icons/optimism.svg';
import poaSokolIcon from 'icons/networks/icons/poa-sokol.svg';
import poaIcon from 'icons/networks/icons/poa.svg';
import rskIcon from 'icons/networks/icons/rsk.svg';
import artisLogo from 'icons/networks/logos/artis.svg';
import astarLogo from 'icons/networks/logos/astar.svg';
import baseLogo from 'icons/networks/logos/base.svg';
import etcLogo from 'icons/networks/logos/etc.svg';
import ethLogo from 'icons/networks/logos/eth.svg';
import gnosisLogo from 'icons/networks/logos/gnosis.svg';
import goerliLogo from 'icons/networks/logos/goerli.svg';
import luksoLogo from 'icons/networks/logos/lukso.svg';
import poaLogo from 'icons/networks/logos/poa.svg';
import rskLogo from 'icons/networks/logos/rsk.svg';
import shibuyaLogo from 'icons/networks/logos/shibuya.svg';
import shidenLogo from 'icons/networks/logos/shiden.svg';
import sokolLogo from 'icons/networks/logos/sokol.svg';
interface NetworkAssets {
icon?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
logo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
smallLogo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
}
const networkAssets: Partial<Record<PreDefinedNetwork, NetworkAssets>> = {
xdai_mainnet: {
icon: gnosisIcon,
logo: gnosisLogo,
},
xdai_optimism: {
icon: optimismIcon,
},
xdai_aox: {
icon: arbitrumIcon,
},
eth_mainnet: {
icon: ethereumIcon,
logo: ethLogo,
},
etc_mainnet: {
icon: ethereumClassicIcon,
logo: etcLogo,
},
poa_core: {
icon: poaIcon,
logo: poaLogo,
},
rsk_mainnet: {
icon: rskIcon,
logo: rskLogo,
},
xdai_testnet: {
icon: arbitrumIcon,
logo: gnosisLogo,
},
poa_sokol: {
icon: poaSokolIcon,
logo: sokolLogo,
},
artis_sigma1: {
icon: artisIcon,
logo: artisLogo,
},
lukso_l14: {
logo: luksoLogo,
},
astar: {
logo: astarLogo,
},
shiden: {
logo: shidenLogo,
},
shibuya: {
logo: shibuyaLogo,
},
goerli: {
logo: goerliLogo,
icon: goerliIcon,
},
base_goerli: {
logo: baseLogo,
icon: baseIcon,
},
};
export default networkAssets;
import React from 'react';
import appConfig from 'configs/app/config';
import featuredNetworks from 'lib/networks/featuredNetworks';
export default function useNetworkNavigationItems() {
return React.useMemo(() => {
return featuredNetworks.map((network) => {
return {
...network,
isActive: network.type ? appConfig.network.type === network.type : false,
};
});
}, []);
}
...@@ -28,7 +28,7 @@ export function middleware(req: NextRequest) { ...@@ -28,7 +28,7 @@ export function middleware(req: NextRequest) {
const end = Date.now(); const end = Date.now();
const res = NextResponse.next(); const res = NextResponse.next();
res.headers.append(appConfig.isDev ? 'Content-Security-Policy' : 'Content-Security-Policy-Report-Only', cspPolicy); res.headers.append('Content-Security-Policy', cspPolicy);
res.headers.append('Server-Timing', `middleware;dur=${ end - start }`); res.headers.append('Server-Timing', `middleware;dur=${ end - start }`);
return res; return res;
......
import type { FeaturedNetwork } from 'types/networks'; import type { FeaturedNetwork } from 'types/networks';
const FEATURED_NETWORKS: Array<FeaturedNetwork> = [ const FEATURED_NETWORKS: Array<FeaturedNetwork> = [
{ title: 'Gnosis Chain', url: 'https://blockscout.com/xdai/mainnet', group: 'mainnets', type: 'xdai_mainnet' }, { title: 'Gnosis Chain', url: 'https://blockscout.com/xdai/mainnet', group: 'Mainnets', isActive: true },
{ title: 'Optimism on Gnosis Chain', url: 'https://blockscout.com/xdai/optimism', group: 'mainnets', type: 'xdai_optimism' }, { title: 'Arbitrum on xDai', url: 'https://blockscout.com/xdai/aox', group: 'Mainnets' },
{ title: 'Arbitrum on xDai', url: 'https://blockscout.com/xdai/aox', group: 'mainnets' }, { title: 'Ethereum', url: 'https://blockscout.com/eth/mainnet', group: 'Mainnets' },
{ title: 'Ethereum', url: 'https://blockscout.com/eth/mainnet', group: 'mainnets', type: 'eth_mainnet' }, { title: 'Ethereum Classic', url: 'https://blockscout.com/etx/mainnet', group: 'Mainnets', icon: 'https://localhost:3000/my-logo.png' },
{ title: 'Ethereum Classic', url: 'https://blockscout.com/etx/mainnet', group: 'mainnets', type: 'etc_mainnet', icon: 'https://example.com/my-logo.png' }, { title: 'POA', url: 'https://blockscout.com/poa/core', group: 'Mainnets' },
{ title: 'POA', url: 'https://blockscout.com/poa/core', group: 'mainnets', type: 'poa_core' }, { title: 'RSK', url: 'https://blockscout.com/rsk/mainnet', group: 'Mainnets' },
{ title: 'RSK', url: 'https://blockscout.com/rsk/mainnet', group: 'mainnets', type: 'rsk_mainnet' }, { title: 'Gnosis Chain Testnet', url: 'https://blockscout.com/xdai/testnet', group: 'Testnets' },
{ title: 'Gnosis Chain Testnet', url: 'https://blockscout.com/xdai/testnet', group: 'testnets', type: 'xdai_testnet' }, { title: 'POA Sokol', url: 'https://blockscout.com/poa/sokol', group: 'Testnets' },
{ title: 'POA Sokol', url: 'https://blockscout.com/poa/sokol', group: 'testnets', type: 'poa_sokol' }, { title: 'ARTIS Σ1', url: 'https://blockscout.com/artis/sigma1', group: 'Other' },
{ title: 'ARTIS Σ1', url: 'https://blockscout.com/artis/sigma1', group: 'other', type: 'artis_sigma1' }, { title: 'LUKSO L14', url: 'https://blockscout.com/lukso/l14', group: 'Other' },
{ title: 'LUKSO L14', url: 'https://blockscout.com/lukso/l14', group: 'other', type: 'lukso_l14' }, { title: 'Astar', url: 'https://blockscout.com/astar', group: 'Other' },
{ title: 'Astar', url: 'https://blockscout.com/astar', group: 'other', type: 'astar' },
]; ];
export const FEATURED_NETWORKS_MOCK = JSON.stringify(FEATURED_NETWORKS).replaceAll('"', '\''); export const FEATURED_NETWORKS_MOCK = JSON.stringify(FEATURED_NETWORKS);
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
"format-svg": "./node_modules/.bin/svgo -r ./icons", "format-svg": "./node_modules/.bin/svgo -r ./icons",
"test:pw": "./playwright/make-envs-script.sh && NODE_OPTIONS=\"--max-old-space-size=4096\" playwright test -c playwright-ct.config.ts", "test:pw": "./playwright/make-envs-script.sh && NODE_OPTIONS=\"--max-old-space-size=4096\" playwright test -c playwright-ct.config.ts",
"test:pw:local": "export NODE_PATH=$(pwd)/node_modules && rm -rf ./playwright/.cache && yarn test:pw", "test:pw:local": "export NODE_PATH=$(pwd)/node_modules && rm -rf ./playwright/.cache && yarn test:pw",
"test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.31.0-focal ./playwright/run-tests.sh", "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.32.0-focal ./playwright/run-tests.sh",
"test:jest": "jest", "test:jest": "jest",
"test:jest:watch": "jest --watch" "test:jest:watch": "jest --watch"
}, },
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
"wagmi": "^0.10.6" "wagmi": "^0.10.6"
}, },
"devDependencies": { "devDependencies": {
"@playwright/experimental-ct-react": "1.31.0", "@playwright/experimental-ct-react": "1.32.3",
"@svgr/webpack": "^6.5.1", "@svgr/webpack": "^6.5.1",
"@testing-library/react": "^13.4.0", "@testing-library/react": "^13.4.0",
"@total-typescript/ts-reset": "^0.3.7", "@total-typescript/ts-reset": "^0.3.7",
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
"lint-staged": ">=10", "lint-staged": ">=10",
"mockdate": "^3.0.5", "mockdate": "^3.0.5",
"next-transpile-modules": "^10.0.0", "next-transpile-modules": "^10.0.0",
"playwright": "1.31.0", "playwright": "1.32.3",
"style-loader": "^3.3.1", "style-loader": "^3.3.1",
"svgo": "^2.8.0", "svgo": "^2.8.0",
"ts-jest": "^29.0.3", "ts-jest": "^29.0.3",
......
import type { NextPage } from 'next'; import type { NextPage } from 'next';
import Head from 'next/head'; import Head from 'next/head';
import { useRouter } from 'next/router'; import React from 'react';
import React, { useEffect, useState } from 'react';
import type { AppItemOverview } from 'types/client/apps';
import appConfig from 'configs/app/config';
import { apos } from 'lib/html-entities';
import EmptySearchResult from 'ui/apps/EmptySearchResult';
import MarketplaceApp from 'ui/pages/MarketplaceApp'; import MarketplaceApp from 'ui/pages/MarketplaceApp';
import Page from 'ui/shared/Page/Page'; import Page from 'ui/shared/Page/Page';
const AppPage: NextPage = () => { const AppPage: NextPage = () => {
const router = useRouter();
const [ isLoading, setIsLoading ] = useState(true);
const [ app, setApp ] = useState<AppItemOverview | undefined>(undefined);
const id = router.query.id;
useEffect(() => {
if (!id) {
return;
}
const app = appConfig.marketplaceAppList.find((app) => app.id === id);
setApp(app);
setIsLoading(false);
}, [ id ]);
if (app || isLoading) {
return (
<>
<Head><title>{ app ? `Blockscout | ${ app.title }` : 'Loading app..' }</title></Head>
<MarketplaceApp app={ app } isLoading={ isLoading }/>
</>
);
}
return ( return (
<Page> <Page wrapChildren={ false }>
<Head><title>Blockscout | No app found</title></Head> <Head><title>Blockscout | Marketplace</title></Head>
<EmptySearchResult text={ `Couldn${ apos }t find an app.` }/> <MarketplaceApp/>
</Page> </Page>
); );
}; };
......
...@@ -10,7 +10,7 @@ const AppsPage: NextPage = () => { ...@@ -10,7 +10,7 @@ const AppsPage: NextPage = () => {
return ( return (
<Page> <Page>
<PageTitle text="Apps"/> <PageTitle text="Apps"/>
<Head><title>Apps</title></Head> <Head><title>Blockscout | Marketplace</title></Head>
<Apps/> <Apps/>
</Page> </Page>
......
...@@ -3,7 +3,7 @@ import Head from 'next/head'; ...@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react'; import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle'; import getNetworkTitle from 'lib/networks/getNetworkTitle';
import Deposits from 'ui/pages/Deposits'; import L2Deposits from 'ui/pages/L2Deposits';
const DepositsPage: NextPage = () => { const DepositsPage: NextPage = () => {
const title = getNetworkTitle(); const title = getNetworkTitle();
...@@ -12,7 +12,7 @@ const DepositsPage: NextPage = () => { ...@@ -12,7 +12,7 @@ const DepositsPage: NextPage = () => {
<Head> <Head>
<title>{ title }</title> <title>{ title }</title>
</Head> </Head>
<Deposits/> <L2Deposits/>
</> </>
); );
}; };
......
...@@ -3,7 +3,7 @@ import Head from 'next/head'; ...@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react'; import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle'; import getNetworkTitle from 'lib/networks/getNetworkTitle';
import OutputRoots from 'ui/pages/OutputRoots'; import L2OutputRoots from 'ui/pages/L2OutputRoots';
const OutputRootsPage: NextPage = () => { const OutputRootsPage: NextPage = () => {
const title = getNetworkTitle(); const title = getNetworkTitle();
...@@ -12,7 +12,7 @@ const OutputRootsPage: NextPage = () => { ...@@ -12,7 +12,7 @@ const OutputRootsPage: NextPage = () => {
<Head> <Head>
<title>{ title }</title> <title>{ title }</title>
</Head> </Head>
<OutputRoots/> <L2OutputRoots/>
</> </>
); );
}; };
......
...@@ -3,7 +3,7 @@ import Head from 'next/head'; ...@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react'; import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle'; import getNetworkTitle from 'lib/networks/getNetworkTitle';
import TxnBatches from 'ui/pages/TxnBatches'; import L2TxnBatches from 'ui/pages/L2TxnBatches';
const TxnBatchesPage: NextPage = () => { const TxnBatchesPage: NextPage = () => {
const title = getNetworkTitle(); const title = getNetworkTitle();
...@@ -12,7 +12,7 @@ const TxnBatchesPage: NextPage = () => { ...@@ -12,7 +12,7 @@ const TxnBatchesPage: NextPage = () => {
<Head> <Head>
<title>{ title }</title> <title>{ title }</title>
</Head> </Head>
<TxnBatches/> <L2TxnBatches/>
</> </>
); );
}; };
......
...@@ -3,7 +3,7 @@ import Head from 'next/head'; ...@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react'; import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle'; import getNetworkTitle from 'lib/networks/getNetworkTitle';
import Withdrawals from 'ui/pages/Withdrawals'; import L2Withdrawals from 'ui/pages/L2Withdrawals';
const WithdrawalsPage: NextPage = () => { const WithdrawalsPage: NextPage = () => {
const title = getNetworkTitle(); const title = getNetworkTitle();
...@@ -12,7 +12,7 @@ const WithdrawalsPage: NextPage = () => { ...@@ -12,7 +12,7 @@ const WithdrawalsPage: NextPage = () => {
<Head> <Head>
<title>{ title }</title> <title>{ title }</title>
</Head> </Head>
<Withdrawals/> <L2Withdrawals/>
</> </>
); );
}; };
......
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 209.322 209.322">
<path d="M105.572 101.811c9.889-6.368 27.417-16.464 28.106-42.166.536-20.278-9.971-49.506-49.155-50.878C53.041 7.659 39.9 28.251 36.071 46.739l-.928-.126c-1.932 0-3.438 1.28-5.34 2.889-2.084 1.784-4.683 3.979-7.792 4.308-3.573.361-8.111-1.206-11.698-2.449-4.193-1.431-6.624-2.047-8.265-.759C.545 51.765-.13 53.864.02 56.828c.331 6.326 4.971 18.917 16.016 25.778 7.67 4.765 16.248 5.482 20.681 5.482h.006c2.37 0 4.945-.239 7.388-.726 2.741 4.218 5.228 7.476 6.037 9.752 2.054 5.851-27.848 25.087-27.848 55.01 0 29.916 22.013 48.475 56.727 48.475h55.004c30.593 0 70.814-29.908 75.291-92.48-28.541 24.072-42.294-9.969-103.75-6.308zM18.941 77.945C8.775 71.617 4.992 58.922 5.294 55.525c.897.24 2.194.689 3.228 1.042 4.105 1.415 9.416 3.228 14.068 2.707 4.799-.499 8.253-3.437 10.778-5.574.607-.509 1.393-1.176 1.872-1.491.87.315.962.693 1.176 3.14.196 2.26.473 5.37 2.362 9.006 1.437 2.761 3.581 5.705 5.646 8.542 1.701 2.336 4.278 5.871 4.535 6.404-.445 1.184-4.907 3.282-12.229 3.282-6.553.008-13.04-1.679-17.789-4.638zM56.86 49.368c0-4.938 4.001-8.943 8.931-8.943a8.942 8.942 0 0 1 8.942 8.943c0 4.931-4.001 8.942-8.942 8.942-4.937.001-8.931-4.011-8.931-8.942zm92.299 106.03-20.63 11.169 13.408 9.293s-49.854 15.813-72.198-6.885c-11.006-11.16-13.06-28.533 4.124-38.84 17.184-10.312 84.609 3.943 84.609 3.943L134.295 147.8l14.864 7.598z" fill="#ffef07"/>
</svg>
import type { test } from '@playwright/experimental-ct-react'; import type { test } from '@playwright/experimental-ct-react';
import type { PlaywrightWorkerArgs } from '@playwright/test'; import type { Browser } from '@playwright/test';
interface Env { interface Env {
name: string; name: string;
...@@ -16,7 +16,7 @@ export default function contextWithEnvsFixture(envs: Array<Env>): Parameters<typ ...@@ -16,7 +16,7 @@ export default function contextWithEnvsFixture(envs: Array<Env>): Parameters<typ
}; };
} }
export function createContextWithEnvs(browser: PlaywrightWorkerArgs['browser'], envs: Array<Env>) { export async function createContextWithEnvs(browser: Browser, envs: Array<Env>) {
return browser.newContext({ return browser.newContext({
storageState: { storageState: {
origins: [ origins: [
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
targetFile='./playwright/envs.js' targetFile='./playwright/envs.js'
declare -a envFiles=('./configs/envs/.env.pw' './configs/envs/.env.poa_core') declare -a envFiles=('./configs/envs/.env.pw')
touch $targetFile; touch $targetFile;
truncate -s 0 $targetFile; truncate -s 0 $targetFile;
...@@ -26,7 +26,7 @@ do ...@@ -26,7 +26,7 @@ do
# if there is a value, escape it and add line to target file # if there is a value, escape it and add line to target file
escapedConfigValue=$(echo $configValue | sed s/\'/\"/g); escapedConfigValue=$(echo $configValue | sed s/\'/\"/g);
echo "window.process.env.${configName} = localStorage.getItem('${configName}') || '${escapedConfigValue}';" >> $targetFile; echo "window.process.env.${configName} = localStorage.getItem('${configName}') ?? '${escapedConfigValue}';" >> $targetFile;
done < $envFile done < $envFile
done done
......
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 123 24">
<g clip-path="url(#network-logo_svg__a)">
<mask id="network-logo_svg__b" width="123" height="22" x="0" y="1" maskUnits="userSpaceOnUse" style="mask-type:luminance">
<path fill="#fff" d="M122.375 1H0v22h122.375V1Z"/>
</mask>
<g fill="#51AA8F" mask="url(#network-logo_svg__b)">
<path d="M22.28 18.796V4.093h6.204c1.1 0 2.038.169 2.798.506.759.337 1.338.803 1.728 1.398.39.595.58 1.289.58 2.082 0 .615-.11 1.16-.34 1.656-.23.495-.57.902-1.03 1.239-.459.337-1.008.565-1.668.694v.129c.5.119.92.317 1.26.595.339.277.619.614.838 1.001.23.396.43.872.61 1.447l1.269 3.946h-3.157l-1.12-3.51c-.16-.564-.35-1-.569-1.318a1.82 1.82 0 0 0-.86-.684c-.359-.139-.819-.218-1.398-.218h-2.058v5.72h-3.088v.02Zm5.674-8.09c.52 0 .97-.08 1.36-.228.379-.149.679-.387.889-.704.21-.317.32-.714.32-1.17 0-.466-.11-.852-.32-1.16a1.795 1.795 0 0 0-.89-.674 3.98 3.98 0 0 0-1.358-.218h-2.588v4.164h2.587v-.01Zm12.691 8.338c-1.12 0-2.128-.248-3.028-.733a5.355 5.355 0 0 1-2.138-2.073c-.52-.892-.779-1.913-.779-3.063 0-1.14.26-2.162.77-3.054a5.443 5.443 0 0 1 2.127-2.092c.91-.505 1.929-.753 3.068-.753s2.158.248 3.057.753c.9.496 1.609 1.2 2.118 2.092.51.893.77 1.914.77 3.064 0 1.14-.26 2.161-.78 3.053a5.486 5.486 0 0 1-2.128 2.082c-.909.476-1.928.724-3.057.724Zm0-2.449a2.85 2.85 0 0 0 1.528-.416c.45-.278.81-.674 1.08-1.19.26-.515.4-1.12.4-1.814 0-.684-.13-1.29-.39-1.815a2.937 2.937 0 0 0-1.07-1.2 2.892 2.892 0 0 0-1.538-.425c-.57 0-1.08.138-1.529.426-.45.277-.81.684-1.069 1.2-.26.515-.39 1.13-.39 1.824 0 .684.13 1.289.4 1.804.26.516.62.912 1.07 1.19.429.277.938.416 1.508.416Zm12.748 2.449c-1.119 0-2.128-.248-3.027-.733a5.354 5.354 0 0 1-2.138-2.073c-.52-.892-.78-1.913-.78-3.063 0-1.14.26-2.162.77-3.054a5.442 5.442 0 0 1 2.128-2.092c.909-.505 1.928-.753 3.067-.753 1.14 0 2.158.248 3.058.753a5.426 5.426 0 0 1 2.118 2.092c.51.893.769 1.914.769 3.064 0 1.14-.26 2.161-.78 3.053a5.485 5.485 0 0 1-2.128 2.082c-.909.476-1.928.724-3.057.724Zm0-2.449c.57 0 1.08-.139 1.529-.416a2.98 2.98 0 0 0 1.079-1.19c.26-.515.4-1.12.4-1.814 0-.684-.13-1.29-.39-1.815a2.937 2.937 0 0 0-1.07-1.2 2.892 2.892 0 0 0-1.538-.425c-.57 0-1.079.138-1.529.426-.45.277-.809.684-1.069 1.2-.26.515-.39 1.13-.39 1.824 0 .684.13 1.289.4 1.804.26.516.62.912 1.07 1.19.43.277.939.416 1.508.416Zm12.06 2.38c-.949 0-1.708-.149-2.258-.446-.56-.298-.949-.704-1.169-1.2-.23-.506-.34-1.1-.34-1.785v-5.74h-2.008v-2.31h2.009V4.668h2.927v2.826h2.638v2.3h-2.638v5.592c0 .386.12.684.36.892.24.208.63.307 1.169.307.34 0 .699-.04 1.079-.109v2.221a5.416 5.416 0 0 1-1.769.278Zm7.355.079c-1.259 0-2.308-.278-3.147-.833-.84-.555-1.409-1.348-1.709-2.39l2.398-.802c.2.585.51 1.04.92 1.358.41.317.919.476 1.508.476.6 0 1.05-.11 1.36-.317.309-.209.459-.496.459-.833 0-.278-.07-.506-.21-.664-.14-.169-.38-.308-.71-.437-.329-.119-.809-.248-1.418-.386-.96-.208-1.719-.446-2.268-.714-.55-.268-.96-.605-1.219-1.031-.26-.426-.4-.952-.4-1.606 0-.724.19-1.349.56-1.894.37-.545.899-.962 1.598-1.269.7-.297 1.499-.446 2.408-.446.8 0 1.509.109 2.128.337.62.228 1.12.565 1.519 1.011.4.446.68.992.83 1.626l-2.379.793a2.55 2.55 0 0 0-.789-1.17 2.056 2.056 0 0 0-1.289-.426c-.35 0-.65.04-.91.129-.258.09-.459.218-.599.387a.904.904 0 0 0-.21.595c0 .257.06.466.19.614.12.149.35.278.67.387.32.109.79.228 1.399.357 1.008.218 1.808.456 2.378.724.57.257.999.604 1.268 1.02.27.427.41.962.41 1.637 0 .763-.18 1.417-.55 1.982-.369.556-.909.992-1.618 1.31-.709.316-1.568.475-2.578.475Zm10.918-.079c-.95 0-1.709-.149-2.258-.446-.56-.298-.95-.704-1.17-1.2-.229-.506-.339-1.1-.339-1.785v-5.74h-2.008v-2.31h2.008V4.668h2.927v2.826h2.638v2.3h-2.638v5.592c0 .386.12.684.36.892.24.208.63.307 1.17.307.34 0 .699-.04 1.078-.109v2.221a5.401 5.401 0 0 1-1.768.278Zm8.454.069c-1.119 0-2.128-.248-3.027-.733a5.357 5.357 0 0 1-2.138-2.073c-.52-.892-.78-1.913-.78-3.063 0-1.14.26-2.162.77-3.054a5.44 5.44 0 0 1 2.128-2.092c.91-.505 1.928-.753 3.068-.753 1.139 0 2.158.248 3.057.753.9.496 1.609 1.2 2.118 2.092.51.893.77 1.914.77 3.064 0 1.14-.26 2.161-.78 3.053a5.482 5.482 0 0 1-2.128 2.082c-.91.476-1.919.724-3.057.724Zm0-2.449a2.85 2.85 0 0 0 1.529-.416c.45-.278.81-.674 1.08-1.19.26-.515.399-1.12.399-1.814 0-.684-.13-1.29-.39-1.815a2.919 2.919 0 0 0-1.07-1.2 2.89 2.89 0 0 0-1.538-.425c-.569 0-1.078.138-1.528.426-.45.277-.81.684-1.07 1.2-.259.515-.389 1.13-.389 1.824 0 .684.13 1.289.4 1.804.26.516.619.912 1.069 1.19.44.277.939.416 1.509.416Zm13.01 2.459c-1.059 0-2.038-.218-2.937-.664-.91-.446-1.629-1.11-2.178-1.993-.55-.882-.82-1.943-.82-3.173 0-1.219.26-2.27.789-3.172a5.42 5.42 0 0 1 2.138-2.072c.9-.486 1.899-.724 2.988-.724.9 0 1.709.169 2.428.506.72.337 1.329.793 1.809 1.378a5.274 5.274 0 0 1 1.028 1.992l-2.527.724a3.355 3.355 0 0 0-.55-1.1 2.723 2.723 0 0 0-.889-.764c-.35-.188-.76-.277-1.209-.277-.6 0-1.139.148-1.608.436a2.91 2.91 0 0 0-1.1 1.22 4.043 4.043 0 0 0-.399 1.804c0 .704.139 1.309.419 1.824.28.516.66.912 1.129 1.18.47.268.98.406 1.539.406.449 0 .85-.089 1.209-.267.36-.179.659-.427.909-.724.25-.307.44-.644.57-1.011l2.518.743a5.096 5.096 0 0 1-.959 1.854c-.46.565-1.06 1.021-1.799 1.369-.729.327-1.559.505-2.498.505Zm6.685-.258V4.093h2.927v7.912l4.596-4.511h3.387l-4.896 4.7 4.866 6.602h-3.417l-3.527-4.838-1.019.952v3.886h-2.917ZM9.06 6.82a2.747 2.747 0 0 0 2.758-2.737 2.747 2.747 0 0 0-2.757-2.736 2.747 2.747 0 0 0-2.758 2.736A2.747 2.747 0 0 0 9.061 6.82Z"/>
<path d="M16.724 12.54c-1.319-.753-3.007-.307-3.766 1.002a2.72 2.72 0 0 0-.37 1.427c.03 1.21-1.07 1.835-2.108 1.21-.04-.02-.08-.05-.13-.07-1.05-.584-1.05-1.824 0-2.399a2.744 2.744 0 0 0 1.449-2.409v-.06c-.03-1.209 1.069-1.834 2.108-1.209.83.506 1.908.545 2.807.03a2.726 2.726 0 0 0 1.01-3.738 2.77 2.77 0 0 0-3.767-1.001 2.74 2.74 0 0 0-1.379 2.429c.03 1.21-1.07 1.834-2.098 1.21a2.732 2.732 0 0 0-1.439-.407c-.53 0-1.02.148-1.439.396-1.039.615-2.128-.01-2.098-1.21a2.73 2.73 0 0 0-1.379-2.428A2.774 2.774 0 0 0 .358 6.324a2.73 2.73 0 0 0 1.02 3.738 2.785 2.785 0 0 0 2.807-.03c1.04-.625 2.128 0 2.098 1.21v.059c0 1.041.58 1.943 1.45 2.41 1.048.584 1.048 1.823 0 2.399-.04.02-.08.05-.12.069-1.04.615-2.129-.01-2.099-1.21.01-.486-.11-.981-.37-1.437-.759-1.309-2.448-1.755-3.766-1.002-1.32.774-1.769 2.45-1.01 3.758a2.77 2.77 0 0 0 3.767 1.001c.02-.01.03-.02.05-.03 1.04-.624 2.128 0 2.098 1.21v.07c0 1.506 1.24 2.736 2.758 2.736 1.519 0 2.758-1.23 2.758-2.736v-.06c-.03-1.21 1.069-1.834 2.108-1.21.02.01.04.02.06.04 1.319.754 3.007.307 3.766-1.001.76-1.339.31-3.014-1.009-3.768Z"/>
</g>
</g>
<defs>
<clipPath id="network-logo_svg__a">
<path fill="#fff" d="M0 1h122.375v22H0z"/>
</clipPath>
</defs>
</svg>
...@@ -3,7 +3,7 @@ import { compile } from 'path-to-regexp'; ...@@ -3,7 +3,7 @@ import { compile } from 'path-to-regexp';
import type { ResourceName, ResourcePathParams } from 'lib/api/resources'; import type { ResourceName, ResourcePathParams } from 'lib/api/resources';
import { RESOURCES } from 'lib/api/resources'; import { RESOURCES } from 'lib/api/resources';
export default function buildApiUrl<R extends ResourceName>(resourceName: R, pathParams?: ResourcePathParams<R>, noBasePath?: boolean) { export default function buildApiUrl<R extends ResourceName>(resourceName: R, pathParams?: ResourcePathParams<R>) {
const resource = RESOURCES[resourceName]; const resource = RESOURCES[resourceName];
return compile(`/node-api/proxy${ noBasePath ? '' : '/poa/core' }` + resource.path)(pathParams); return compile('/node-api/proxy' + resource.path)(pathParams);
} }
export type DepositsItem = { export type L2DepositsItem = {
l1_block_number: number; l1_block_number: number;
l1_tx_hash: string; l1_tx_hash: string;
l1_block_timestamp: string; l1_block_timestamp: string;
...@@ -7,8 +7,8 @@ export type DepositsItem = { ...@@ -7,8 +7,8 @@ export type DepositsItem = {
l2_tx_hash: string; l2_tx_hash: string;
} }
export type DepositsResponse = { export type L2DepositsResponse = {
items: Array<DepositsItem>; items: Array<L2DepositsItem>;
next_page_params: { next_page_params: {
items_count: number; items_count: number;
l1_block_number: number; l1_block_number: number;
......
export type OutputRootsItem = { export type L2OutputRootsItem = {
l1_block_number: number; l1_block_number: number;
l1_timestamp: string; l1_timestamp: string;
l1_tx_hash: string; l1_tx_hash: string;
...@@ -7,8 +7,8 @@ export type OutputRootsItem = { ...@@ -7,8 +7,8 @@ export type OutputRootsItem = {
output_root: string; output_root: string;
} }
export type OutputRootsResponse = { export type L2OutputRootsResponse = {
items: Array<OutputRootsItem>; items: Array<L2OutputRootsItem>;
total: number; total: number;
next_page_params: { next_page_params: {
index: number; index: number;
......
export type TxnBatchesItem = { export type L2TxnBatchesItem = {
epoch_number: number; epoch_number: number;
l1_tx_hashes: Array<string>; l1_tx_hashes: Array<string>;
l1_timestamp: string; l1_timestamp: string;
...@@ -6,8 +6,8 @@ export type TxnBatchesItem = { ...@@ -6,8 +6,8 @@ export type TxnBatchesItem = {
tx_count: number; tx_count: number;
} }
export type TxnBatchesResponse = { export type L2TxnBatchesResponse = {
items: Array<TxnBatchesItem>; items: Array<L2TxnBatchesItem>;
total: number; total: number;
next_page_params: { next_page_params: {
index: number; index: number;
......
import type { AddressParam } from './addressParams'; import type { AddressParam } from './addressParams';
export type WithdrawalsItem = { export type L2WithdrawalsItem = {
'challenge_period_end': string | null; 'challenge_period_end': string | null;
'from': AddressParam | null; 'from': AddressParam | null;
'l1_tx_hash': string | null; 'l1_tx_hash': string | null;
...@@ -11,15 +11,15 @@ export type WithdrawalsItem = { ...@@ -11,15 +11,15 @@ export type WithdrawalsItem = {
'status': string; 'status': string;
} }
export type WithdrawalStatus = export type L2WithdrawalStatus =
'In challenge period' | 'In challenge period' |
'Ready for relay' | 'Ready for relay' |
'Relayed' | 'Relayed' |
'Waiting for state root' | 'Waiting for state root' |
'Ready to prove'; 'Ready to prove';
export type WithdrawalsResponse = { export type L2WithdrawalsResponse = {
items: Array<WithdrawalsItem>; items: Array<L2WithdrawalsItem>;
'next_page_params': { 'next_page_params': {
'items_count': number; 'items_count': number;
'nonce': string; 'nonce': string;
......
export enum MarketplaceCategoryId {
'all',
'favorites',
'defi',
'exchanges',
'finance',
'games',
'marketplaces',
'nft',
'security',
'social',
'tools',
'yieldFarming',
}
export type MarketplaceCategoriesIds = keyof typeof MarketplaceCategoryId;
export type MarketplaceCategory = { id: MarketplaceCategoriesIds; name: string }
export type AppItemPreview = { export type AppItemPreview = {
id: string; id: string;
external: boolean; external?: boolean;
title: string; title: string;
logo: string; logo: string;
shortDescription: string; shortDescription: string;
categories: Array<MarketplaceCategoriesIds>; categories: Array<string>;
url: string; url: string;
} }
...@@ -35,3 +16,8 @@ export type AppItemOverview = AppItemPreview & { ...@@ -35,3 +16,8 @@ export type AppItemOverview = AppItemPreview & {
telegram?: string; telegram?: string;
github?: string; github?: string;
} }
export enum AppCategory {
ALL = 'All apps',
FAVORITES = 'Favorites',
}
import type { FunctionComponent, SVGAttributes } from 'react'; export type NetworkGroup = 'Mainnets' | 'Testnets' | 'Other';
export type NetworkGroup = 'mainnets' | 'testnets' | 'other';
export type PreDefinedNetwork = 'xdai_mainnet' | 'xdai_optimism' | 'xdai_aox' | 'eth_mainnet' | 'etc_mainnet' | 'poa_core' |
'rsk_mainnet' | 'xdai_testnet' | 'poa_sokol' | 'artis_sigma1' | 'lukso_l14' | 'astar' | 'shiden' | 'shibuya' | 'goerli' | 'base_goerli';
export interface FeaturedNetwork { export interface FeaturedNetwork {
title: string; title: string;
url: string; url: string;
group: NetworkGroup; group: NetworkGroup;
icon?: FunctionComponent<SVGAttributes<SVGElement>> | string; icon?: string;
type?: PreDefinedNetwork; isActive?: boolean;
invertIconInDarkMode?: boolean;
} }
export interface NetworkExplorer { export interface NetworkExplorer {
......
...@@ -26,23 +26,23 @@ declare module "nextjs-routes" { ...@@ -26,23 +26,23 @@ declare module "nextjs-routes" {
| DynamicRoute<"/block/[height]", { "height": string }> | DynamicRoute<"/block/[height]", { "height": string }>
| StaticRoute<"/blocks"> | StaticRoute<"/blocks">
| StaticRoute<"/csv-export"> | StaticRoute<"/csv-export">
| StaticRoute<"/deposits">
| StaticRoute<"/graph"> | StaticRoute<"/graph">
| StaticRoute<"/graphiql"> | StaticRoute<"/graphiql">
| StaticRoute<"/"> | StaticRoute<"/">
| StaticRoute<"/l2-deposits">
| StaticRoute<"/l2-output-roots">
| StaticRoute<"/l2-txn-batches">
| StaticRoute<"/l2-withdrawals">
| StaticRoute<"/login"> | StaticRoute<"/login">
| StaticRoute<"/output-roots">
| StaticRoute<"/search-results"> | StaticRoute<"/search-results">
| StaticRoute<"/stats"> | StaticRoute<"/stats">
| DynamicRoute<"/token/[hash]", { "hash": string }> | DynamicRoute<"/token/[hash]", { "hash": string }>
| DynamicRoute<"/token/[hash]/instance/[id]", { "hash": string; "id": string }> | DynamicRoute<"/token/[hash]/instance/[id]", { "hash": string; "id": string }>
| StaticRoute<"/tokens"> | StaticRoute<"/tokens">
| DynamicRoute<"/tx/[hash]", { "hash": string }> | DynamicRoute<"/tx/[hash]", { "hash": string }>
| StaticRoute<"/txn-batches">
| StaticRoute<"/txs"> | StaticRoute<"/txs">
| StaticRoute<"/verified-contracts"> | StaticRoute<"/verified-contracts">
| StaticRoute<"/visualize/sol2uml"> | StaticRoute<"/visualize/sol2uml">;
| StaticRoute<"/withdrawals">;
interface StaticRoute<Pathname> { interface StaticRoute<Pathname> {
pathname: Pathname; pathname: Pathname;
......
import _capitalize from 'lodash/capitalize';
import React from 'react'; import React from 'react';
import { useAccount, useSigner } from 'wagmi'; import { useAccount, useSigner, useNetwork, useSwitchNetwork } from 'wagmi';
import type { SmartContractWriteMethod } from 'types/api/contract'; import type { SmartContractWriteMethod } from 'types/api/contract';
...@@ -16,7 +15,7 @@ import ContractCustomAbiAlert from './ContractCustomAbiAlert'; ...@@ -16,7 +15,7 @@ import ContractCustomAbiAlert from './ContractCustomAbiAlert';
import ContractImplementationAddress from './ContractImplementationAddress'; import ContractImplementationAddress from './ContractImplementationAddress';
import ContractMethodCallable from './ContractMethodCallable'; import ContractMethodCallable from './ContractMethodCallable';
import ContractWriteResult from './ContractWriteResult'; import ContractWriteResult from './ContractWriteResult';
import { getNativeCoinValue, isExtendedError } from './utils'; import { getNativeCoinValue } from './utils';
interface Props { interface Props {
addressHash?: string; addressHash?: string;
...@@ -27,6 +26,8 @@ interface Props { ...@@ -27,6 +26,8 @@ interface Props {
const ContractWrite = ({ addressHash, isProxy, isCustomAbi }: Props) => { const ContractWrite = ({ addressHash, isProxy, isCustomAbi }: Props) => {
const { data: signer } = useSigner(); const { data: signer } = useSigner();
const { isConnected } = useAccount(); const { isConnected } = useAccount();
const { chain } = useNetwork();
const { switchNetworkAsync } = useSwitchNetwork();
const { data, isLoading, isError } = useApiQuery(isProxy ? 'contract_methods_write_proxy' : 'contract_methods_write', { const { data, isLoading, isError } = useApiQuery(isProxy ? 'contract_methods_write_proxy' : 'contract_methods_write', {
pathParams: { hash: addressHash }, pathParams: { hash: addressHash },
...@@ -56,50 +57,34 @@ const ContractWrite = ({ addressHash, isProxy, isCustomAbi }: Props) => { ...@@ -56,50 +57,34 @@ const ContractWrite = ({ addressHash, isProxy, isCustomAbi }: Props) => {
throw new Error('Wallet is not connected'); throw new Error('Wallet is not connected');
} }
try { if (chain?.id && String(chain.id) !== config.network.id) {
if (!_contract) { await switchNetworkAsync?.(Number(config.network.id));
throw new Error('Something went wrong. Try again later.'); }
}
if (!_contract) {
if (item.type === 'receive') { throw new Error('Something went wrong. Try again later.');
const value = args[0] ? getNativeCoinValue(args[0]) : '0'; }
const result = await signer?.sendTransaction({
to: addressHash, if (item.type === 'receive') {
value, const value = args[0] ? getNativeCoinValue(args[0]) : '0';
}); const result = await signer?.sendTransaction({
return { hash: result?.hash as string }; to: addressHash,
}
const _args = item.stateMutability === 'payable' ? args.slice(0, -1) : args;
const value = item.stateMutability === 'payable' ? getNativeCoinValue(args[args.length - 1]) : undefined;
const methodName = item.type === 'fallback' ? 'fallback' : item.name;
const result = await _contract[methodName](..._args, {
gasLimit: 100_000,
value, value,
}); });
return { hash: result?.hash as string };
return { hash: result.hash as string };
} catch (error) {
if (isExtendedError(error)) {
if ('reason' in error && error.reason === 'underlying network changed') {
if ('detectedNetwork' in error && typeof error.detectedNetwork === 'object' && error.detectedNetwork !== null) {
const networkName = error.detectedNetwork.name;
if (networkName) {
throw new Error(
// eslint-disable-next-line max-len
`You connected to ${ _capitalize(networkName) } chain in the wallet, but the current instance of Blockscout is for ${ config.network.name } chain`,
);
}
}
throw new Error('Wrong network detected, please make sure you are switched to the correct network, and try again');
}
}
throw error;
} }
}, [ _contract, addressHash, isConnected, signer ]);
const _args = item.stateMutability === 'payable' ? args.slice(0, -1) : args;
const value = item.stateMutability === 'payable' ? getNativeCoinValue(args[args.length - 1]) : undefined;
const methodName = item.type === 'fallback' ? 'fallback' : item.name;
const result = await _contract[methodName](..._args, {
gasLimit: 100_000,
value,
});
return { hash: result.hash as string };
}, [ _contract, addressHash, chain, isConnected, signer, switchNetworkAsync ]);
const renderContent = React.useCallback((item: SmartContractWriteMethod, index: number, id: number) => { const renderContent = React.useCallback((item: SmartContractWriteMethod, index: number, id: number) => {
return ( return (
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment