Skip to main content

Developer FAQs

The easiest way is by using Autoscout. Other methods are listed in https://docs.blockscout.com/setup/deployment
BlockScout can be resource intensive. If your instance is running slowly:Instructions for accessing and upgrading CPUs/memory will differ based on your setup. If you are running BlockScout on AWS, these settings can be accessed through your AWS services portal.
Use git clone https://github.com/blockscout/blockscout.git -b <version>
Exchange Rates Coin Name
  • Specify coin name for exchange rates fetcher with the COIN ENV variables
BlockScout utilizes the COIN environment variable which pulls the associated market data from the Coinmarketcap.com API or CoinGecko API to provide pricing data throughout the application.Displayed Coin SymbolIn order to set displayed coin symbol, instance maintainer should set COIN_NAME runtime environment variable:
export COIN_NAME=
For instance, in case of POA instance of Blockscout:
export COIN_NAME=POA
  1. Visit CodeDeploy in AWS. You will see a list of your deployments. Select the deployment id to view details https://console.aws.amazon.com/codesuite/codedeploy/deployments?region=us-east-1
  2. Deployment status consists of several steps. Once step 2 is complete (application is installed on replacement instances), you manually reroute traffic. Click the Reroute traffic button to initiate.
  1. Once traffic is rerouted, you’ll be asked to terminate the original instance. Click the Terminate button to initiate.
  1. Once complete, use the public DNS address of the Amazon EC2 instance to view in a web browser. (To get the public DNS value, choose your Amazon EC2 instance in the Amazon EC2 console, and look for the value in Public DNS in the Description tab).
Currently the best existing way is through docker compose https://github.com/blockscout/blockscout/tree/master/docker-compose.We are currently working on deployment through Kubernetes (K8s) and other methods for easily spinning up an instance on AWS.

Missing Assets

  1. Find the public ip of corresponding Blockscout instance in the EC2 -> Instances of AWS Dashboard.
  2. Connect to the host via SSH ssh -i <host.pem> ec2-user@<public_ip>, where <host.pem> is host’s private key file, <public_ip> is the public ip of the host, that can be found in the AWS dashboard.
  3. Go to assets folder cd /opt/app/apps/block_scout_web/priv/static
  4. Add missing assets there or to ./images folder depending on what is missing. Refresh Blockscout instance page. For example, if favicon.ico is missing in ./images folder, just copy it from the root assets folder `cp favicon.ico ./images/. You should see now the missing assets.
The app version number should be in the footer of BlockScout instance
  1. Find the public ip of corresponding Blockscout instance in the EC2 -> Instances of AWS Dashboard
  2. Connect to the host via SSH ssh -i <host.pem> ec2-user@<public_ip>, where <host.pem> is host’s private key file, <public_ip> is the public ip of the host, that can be found in the AWS dashboard.
  3. Go to layout folder /opt/app/apps/block_scout_web/lib/block_scout_web/templates/layout
  4. Open _footer.html.eex footer template in the favorite text editor. For example nano ./_footer.html.eex and fix the line <% version = version() %> (it is in the bottom of the file) with the hardcoded new version, for example, <% version = 'v1.3.3-beta' %> and save.
  5. Restart the Blockscout instance with sudo systemctl restart explorer.service
You may receive this error after making changes to a specific BlockScout application.(Gettext.Error) translation with msgid '...<msg_here>...' has a non-empty msgstrTo update gettext, run the following command in the app’s folder where the changes were made.
  1. Go to the ./apps/name_of_app folder where the changes were made.
  2. Run mix gettext.extract —merge
  3. Repeat for other app folders as required.
More information on Gettext is available here.
See the Branding configs page for details related to different UI elements.For updates like adding elements/links etc you will need to change .eex templates. When changing .eex templates you don’t need to rebuild. Run the application in dev mode (MIX_ENV=dev), and change the template. You’ll see changes on-the-fly. When changing js/scss while running the application, you need to run mix phx.digest to apply the changes.
Use the JSON RPC listcontracts endpoint. For example, to view verified contracts, use the following query. Pagination is available
curl -X GET "
https://gnosis.blockscout.com/api?module=contract&action=listcontracts&page=1&offset=50&filter=verified
" -H "accept: application/json"
One reason may be related to the CoinGecko API refusing Blockscout requests without an API key.If impacted, apply this pull request to your instance:https://github.com/blockscout/blockscout/pull/5613It implements CoinGecko API key management and alternative CoinMarketCap exchange rates.
There are several ways:
Change the Explorer.ExchangeRates variable from enabled: true to enabled: false
  • config :explorer, Explorer.ExchangeRates, enabled: false, store: :ets
https://github.com/poanetwork/blockscout/blob/7aeecb2a04838cda0289a7fe432db74481cf575a/apps/explorer/config/config.exs#L32
You may want to do this if you are creating a new instance or resyncing a new node.
  1. Backup the smart_contracts table
  2. Restore this table following the resync.
Yes you can. The ethereum_json_rpc_http variable can be set to any url, it does not need to be a localhost. Client variant env variable should be specified in either case.
No, it is not required. If ws is disabled, leave the ETHEREUM_JSONRPC_WS_URL env var empty or unset it.
Try increasing time for the ETHEREUM_JSONRPC_DEBUG_TRACE_TRANSACTION_TIMEOUT ENV variable. The default is 5 sec.
In a self-hosted or locally deployed instance, when attempting to do a write transaction on a verified contract, the following errors may appear:Unauthorized“You connected to Unknown Private Network chain in the wallet, but the current instance of Blockscout is for Unknown Private Network chain”“No “from” address specified in neither the give options, nor the default options.”To Troubleshoot:
  • Check that you set the correct CHAIN_ID env variable
  • Check correct variable for NETWORK_ID
Yes, the FAVICON_MASTER_URL ENV accepts a URL to a jpg/png/svg image.
Yes, Blockscout supports ERC-20, ERC-721, ERC-1155 and ERC-404 token standards.
Ubuntu 24.04 has been configured in Blockscout CI
We recommend using ElixirLS: Elixir support and debugger
Some customization is available by setting environments variables https://docs.blockscout.com/setup/env-variables/backend-env-variables.
Use the compatibility table to find the correct version.  https://docs.blockscout.com/setup/requirements/back-front-compatibility-matrix
No, Blockscout uses a dedicated endpoint. Contact Cryptorank for API key.
Use  host.docker.internal instead of 127.0.0.1 e.g.http://host.docker.internal:8545/