* get client key on 429 error * set key to cookie and pass it in query params * move csrf-token header to useApiFetch * pin host for preview * actual layout * support new changes in API * proxy headers from API * add header to request * remove next.js proxy flag * fix ts * refactor * add tests
15 KiB
Run-time environment variables
The app instance could be customized by passing following variables to NodeJS environment at runtime. See their list below.
IMPORTANT NOTE! For production build purposes all json-like values should be single-quoted. If it contains a hash (#) or a dollar-sign ($) the whole value should be wrapped in single quotes as well (see dotenv readme for the reference)
Network configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| 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_ID | number |
Chain id, see https://chainlist.org for the reference | yes | - | 99 |
| NEXT_PUBLIC_NETWORK_RPC_URL | string |
Chain server RPC url, see 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_SYMBOL | string |
Network currency symbol | - | - | ETH |
| 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_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_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_TESTNET | boolean |
Set to true if network is testnet | - | false |
true |
UI configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| 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 list of available properties for particular network |
- | - | https://example.com/featured_networks_config.json |
| NEXT_PUBLIC_OTHER_LINKS | Array<{url: string; text: string}> |
List of links for the "Other" navigation menu | - | - | [{'url':'https://blockscout.com','text':'Blockscout'}] |
| NEXT_PUBLIC_FOOTER_LINKS | string |
URL of configuration file (.json format only) which contains list of link groups to be displayed in the footer. See below list of available properties for particular group |
- | - | https://example.com/footer_links_config.json |
| 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 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_NETWORK_EXPLORERS | Array<NetworkExplorer> where NetworkExplorer can have following 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_HOMEPAGE_CHARTS | Array<'daily_txs' | 'coin_price' | 'market_cap'> |
List of charts displayed on the home page | - | - | ['daily_txs','coin_price','market_cap'] |
| NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR | string |
Text color of the hero plate on the homepage (escape "#" symbol if you use HEX color codes) | \#FFFFFF | rgb(220, 254, 118) |
\#DCFE76 |
|
| NEXT_PUBLIC_HOMEPAGE_PLATE_BACKGROUND | string |
Background css value for hero plate on the homepage (escape "#" symbol if you use HEX color codes) | - | radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%), var(--chakra-colors-blue-400) |
radial-gradient(at 15% 86%, hsla(350,65%,70%,1) 0px, transparent 50%) | no-repeat bottom 20% right 0px/100% url(https://placekitten/1400/200) |
| 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_AD_ADBUTLER_CONFIG_DESKTOP | { id: string; width: string; height: string } |
Placement config for desktop Adbutler banner | - | - | {'id':'123456','width':'728','height':'90'} |
| NEXT_PUBLIC_AD_ADBUTLER_CONFIG_MOBILE | { id: string; width: number; height: number } |
Placement config for mobile Adbutler banner | - | - | {'id':'654321','width':'300','height':'100'} |
| NEXT_PUBLIC_AD_BANNER_PROVIDER | slise | adbutler | coinzilla | none |
Banner ad provider. Set to none to disable ad banners |
- | slise |
coinzilla |
| NEXT_PUBLIC_AD_TEXT_PROVIDER | coinzilla | none |
Text ad provider. Set to none to disable text ad |
- | coinzilla |
none |
| NEXT_PUBLIC_API_SPEC_URL | string |
Spec to be displayed on api-docs page | - | - | https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml |
| NEXT_PUBLIC_GRAPHIQL_TRANSACTION | string |
Txn hash for default query at GraphQl playground page | - | - | 0x69e3923eef50eada197c3336d546936d0c994211492c9f947a24c02827568f9f |
| NEXT_PUBLIC_WEB3_DEFAULT_WALLET | metamask | coinbase |
Type of Web3 wallet which will be used by default to add tokens or chains to | - | metamask |
coinbase |
| NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET | boolean |
Set to true to hide icon "Add to your wallet" next to token addresses |
- | false |
true |
| NEXT_PUBLIC_HIDE_INDEXING_ALERT | boolean |
Set to true to hide indexing alert, if the chain indexing isn't completed |
- | false |
true |
Marketplace app configuration properties
| Property | Type | Description | Example value |
|---|---|---|---|
| id | string |
Used as slug for the app. Must be unique in the app list. | 'app' |
| external | boolean |
If true means that the application opens in a new window, but not in an iframe. | true |
| title | string |
Displayed title of the app. | 'The App' |
| logo | string |
URL to logo file. Should be at least 288x288. | 'https://foo.app/icon.png' |
| shortDescription | string |
Displayed only in the app list. | 'Awesome app' |
| categories | Array<MarketplaceCategoryId> |
Displayed category. Select one of the following bellow. | ['security', 'tools'] |
| author | string |
Displayed author of the app | 'Bob' |
| url | string |
URL of the app which will be launched in the iframe. | 'https://foo.app/launch' |
| description | string |
Displayed only in the modal dialog with additional info about the app. | 'The best app' |
| site | string (optional) |
Displayed site link | 'https://blockscout.com' |
string (optional) |
Displayed twitter link | 'https://twitter.com/blockscoutcom' |
|
| telegram | string (optional) |
Displayed telegram link | 'https://t.me/poa_network' |
| github | string (optional) |
Displayed github link | 'https://github.com/blockscout' |
Marketplace categories ids
For each application, you need to specify the MarketplaceCategoryId to which it belongs. Select one of the following:
defiexchangesfinancegamesmarketplacesnftsecuritysocialtoolsyieldFarming
Featured network configuration properties
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| title | string |
Displayed name of the network | yes | - | Gnosis Chain |
| 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 |
| 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 |
| isActive | boolean |
Pass true if item should be shonw as active in the menu |
- | - | true |
| invertIconInDarkMode | boolean |
Pass true if icon colors should be inverted in dark mode |
- | - | true |
Network explorer configuration properties
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| title | string |
Displayed name of the explorer | yes | - | Anyblock |
| baseUrl | string |
Base url of the explorer | yes | - | https://explorer.anyblock.tools |
| paths | Record<'tx' | 'block' | 'address' | 'token', string> |
Map of explorer entities and their paths | yes | - | {'tx':'/ethereum/poa/core/tx'} |
Note The url of an entity will be constructed as <baseUrl><paths[<entity-type>]><entity-id>, e.g https://explorer.anyblock.tools/ethereum/poa/core/tx/<tx-id>
Footer links configuration properties
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| title | string |
Title of link group | yes | - | Company |
| links | Array<{'text':string;'url':string;}> |
list of links | yes | - | [{'text':'Homepage','url':'https://www.blockscout.com'}] |
Account configuration
In order to enable "My Account" feature you have to configure following set of variables. All variables are required.
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED | boolean |
Set to true if network has account feature | yes | false |
true |
| NEXT_PUBLIC_AUTH0_CLIENT_ID | string |
Client id for Auth0 provider | yes | - | <secret> |
| NEXT_PUBLIC_AUTH_URL | string |
Account auth base url; it is used for building login URL (${ NEXT_PUBLIC_AUTH_URL }/auth/auth0) and logout return URL (${ NEXT_PUBLIC_AUTH_URL }/auth/logout); if not provided the base app URL will be used instead |
yes | - | https://blockscout.com |
| NEXT_PUBLIC_LOGOUT_URL | string |
Account logout url. Required if account is supported for the app instance. | yes | - | https://blockscoutcom.us.auth0.com/v2/logout |
App configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_APP_INSTANCE | string |
Name of app instance | - | - | wonderful_kepler |
| NEXT_PUBLIC_APP_PROTOCOL | http | https |
App url schema | - | https |
http |
| NEXT_PUBLIC_APP_HOST | string |
App host | yes | - | blockscout.com |
| NEXT_PUBLIC_APP_PORT | number |
Port where app is running | - | 3000 |
3001 |
| NEXT_PUBLIC_APP_ENV | string |
Current app env (e.g development, review or production). Used for Sentry.io configuration | - | equals to process.env.NODE_ENV |
production |
| NEXT_PUBLIC_USE_NEXT_JS_PROXY | boolean |
Tells the app to proxy all APIs request through the NextJs app. We strongly advise not to use it in the production environment | - | false |
true |
API configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_API_PROTOCOL | http | https |
Main API protocol | - | https |
http |
| NEXT_PUBLIC_API_HOST | string |
Main API host | yes | - | blockscout.com |
| NEXT_PUBLIC_API_PORT | number |
Port where API is running on the host | - | - | 3001 |
| NEXT_PUBLIC_API_BASE_PATH | string |
Base path for Main API endpoint url | - | - | /poa/core |
| NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL | ws | wss |
Main API websocket protocol | - | wss |
ws |
| NEXT_PUBLIC_STATS_API_HOST | string |
Stats API endpoint url | - | - | https://stats.services.blockscout.com |
| NEXT_PUBLIC_VISUALIZE_API_HOST | string |
Visualize API endpoint url | - | - | https://visualizer.services.blockscout.com |
| NEXT_PUBLIC_CONTRACT_INFO_API_HOST | string |
Contract Info API endpoint url | - | - | https://contracts-info.services.blockscout.com |
| NEXT_PUBLIC_ADMIN_SERVICE_API_HOST | string |
Admin Service API endpoint url | - | - | https://admin-rs.services.blockscout.com |
External services configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_SENTRY_DSN | string |
Client key for your Sentry.io app | - | - | <secret> |
| SENTRY_CSP_REPORT_URI | string |
URL for sending CSP-reports to your Sentry.io app | - | - | <secret> |
| NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID | string |
Project id for WalletConnect integration | - | - | <secret> |
| NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY | string |
Site key for reCAPTCHA service | - | - | <secret> |
| NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID | string |
Property ID for Google Analytics service | - | - | UA-XXXXXX-X |
| NEXT_PUBLIC_MIXPANEL_PROJECT_TOKEN | string |
Project token for Mixpanel analytics service | - | - | <secret> |
L2 configuration
Note All variables are required only for roll-up instances
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_IS_L2_NETWORK | boolean |
Set to true for L2 solutions (Optimism Bedrock based) | yes | - | true |
| NEXT_PUBLIC_L1_BASE_URL | string |
Base Blockscout URL for L1 network | yes | - | 'http://eth-goerli.blockscout.com' |
| NEXT_PUBLIC_L2_WITHDRAWAL_URL | string |
URL for L2 -> L1 withdrawals | yes | - | https://app.optimism.io/bridge/withdraw |
Beacon chain configuration
| Variable | Type | Description | Is required | Default value | Example value |
|---|---|---|---|---|---|
| NEXT_PUBLIC_HAS_BEACON_CHAIN | boolean |
Set to true for networks with the beacon chain | - | - | true |
| NEXT_PUBLIC_BEACON_CHAIN_CURRENCY_SYMBOL | string |
Beacon network currency symbol | - | NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL | ETH |