diff --git a/CHANGELOG.md b/CHANGELOG.md index 5625090627..696030f669 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ ## Current ### Features + - [#5968](https://github.com/blockscout/blockscout/pull/5968) - Add call type in the response of txlistinternal API method - [#5860](https://github.com/blockscout/blockscout/pull/5860) - Integrate rust verifier micro-service ([blockscout-rs/verifier](https://github.com/blockscout/blockscout-rs/tree/main/verification)) - [#6001](https://github.com/blockscout/blockscout/pull/6001) - Add ETHEREUM_JSONRPC_DISABLE_ARCHIVE_BALANCES env var that filters requests and query node only if the block quantity is "latest" ### Fixes + - [#6017](https://github.com/blockscout/blockscout/pull/6017) - Move "contract interaction" and "Add chain to MM" env vars to runtime - [#6012](https://github.com/blockscout/blockscout/pull/6012) - Fix display of estimated addresses counter on the main page - [#5978](https://github.com/blockscout/blockscout/pull/5978) - Allow timestamp param in the log of eth_getTransactionReceipt method @@ -24,6 +26,32 @@ - [#5948](https://github.com/blockscout/blockscout/pull/5948) - Fix unexpected messages in `CoinBalanceOnDemand` ### Chore + +- [#5939](https://github.com/blockscout/blockscout/pull/5939) - Bump sweetalert2 from 11.4.26 to 11.4.27 in /apps/block_scout_web/assets +- [#5938](https://github.com/blockscout/blockscout/pull/5938) - Bump xss from 1.0.13 to 1.0.14 in /apps/block_scout_web/assets +- [#5743](https://github.com/blockscout/blockscout/pull/5743) - Fixing tracer not found #5729 +- [#5952](https://github.com/blockscout/blockscout/pull/5952) - Bump sweetalert2 from 11.4.27 to 11.4.28 in /apps/block_scout_web/assets +- [#5955](https://github.com/blockscout/blockscout/pull/5955) - Bump ex_doc from 0.28.4 to 0.28.5 +- [#5956](https://github.com/blockscout/blockscout/pull/5956) - Bump bcrypt_elixir from 2.3.1 to 3.0.1 +- [#5964](https://github.com/blockscout/blockscout/pull/5964) - Bump sweetalert2 from 11.4.28 to 11.4.29 in /apps/block_scout_web/assets +- [#5966](https://github.com/blockscout/blockscout/pull/5966) - Bump sass from 1.54.4 to 1.54.5 in /apps/block_scout_web/assets +- [#5967](https://github.com/blockscout/blockscout/pull/5967) - Bump @babel/core from 7.18.10 to 7.18.13 in /apps/block_scout_web/assets +- [#5973](https://github.com/blockscout/blockscout/pull/5973) - Bump prometheus from 4.9.0 to 4.9.1 +- [#5974](https://github.com/blockscout/blockscout/pull/5974) - Bump cldr_utils from 2.19.0 to 2.19.1 +- [#5884](https://github.com/blockscout/blockscout/pull/5884) - Bump nimble_csv from 1.1.0 to 1.2.0 +- [#5984](https://github.com/blockscout/blockscout/pull/5984) - Bump jest from 28.1.3 to 29.0.0 in /apps/block_scout_web/assets +- [#5983](https://github.com/blockscout/blockscout/pull/5983) - Bump core-js from 3.24.1 to 3.25.0 in /apps/block_scout_web/assets +- [#5981](https://github.com/blockscout/blockscout/pull/5981) - Bump eslint-plugin-promise from 6.0.0 to 6.0.1 in /apps/block_scout_web/assets +- [#5982](https://github.com/blockscout/blockscout/pull/5982) - Bump jest-environment-jsdom from 28.1.3 to 29.0.0 in /apps/block_scout_web/assets +- [#5987](https://github.com/blockscout/blockscout/pull/5987) - Bump jest from 29.0.0 to 29.0.1 in /apps/block_scout_web/assets +- [#5988](https://github.com/blockscout/blockscout/pull/5988) - Bump jest-environment-jsdom from 29.0.0 to 29.0.1 in /apps/block_scout_web/assets +- [#5989](https://github.com/blockscout/blockscout/pull/5989) - Bump jquery from 3.6.0 to 3.6.1 in /apps/block_scout_web/assets +- [#5990](https://github.com/blockscout/blockscout/pull/5990) - Bump web3modal from 1.9.8 to 1.9.9 in /apps/block_scout_web/assets +- [#6004](https://github.com/blockscout/blockscout/pull/6004) - Bump luxon from 3.0.1 to 3.0.3 in /apps/block_scout_web/assets +- [#6005](https://github.com/blockscout/blockscout/pull/6005) - Bump ex_cldr from 2.33.1 to 2.33.2 +- [#6006](https://github.com/blockscout/blockscout/pull/6006) - Bump eslint from 8.22.0 to 8.23.0 in /apps/block_scout_web/assets +- [#6015](https://github.com/blockscout/blockscout/pull/6015) - Bump @fortawesome/fontawesome-free from 6.1.2 to 6.2.0 in /apps/block_scout_web/assets +- [#6021](https://github.com/blockscout/blockscout/pull/6021) - Bump sass from 1.54.5 to 1.54.7 in /apps/block_scout_web/assets - [#6018](https://github.com/blockscout/blockscout/pull/6018) - Update chromedriver version - [#5836](https://github.com/blockscout/blockscout/pull/5836) - Bump comeonin from 4.1.2 to 5.3.3 - [#5869](https://github.com/blockscout/blockscout/pull/5869) - Bump reduce-reducers from 0.4.3 to 1.0.4 in /apps/block_scout_web/assets @@ -96,14 +124,17 @@ ## 4.1.7-beta ### Features + - [#5783](https://github.com/blockscout/blockscout/pull/5783) - Allow to setup multiple ranges of blocks to index ### Fixes + - [#5799](https://github.com/blockscout/blockscout/pull/5799) - Fix address_tokens_usd_sum function - [#5798](https://github.com/blockscout/blockscout/pull/5798) - Copy explorer node_modules to result image - [#5797](https://github.com/blockscout/blockscout/pull/5797) - Fix flickering token tooltip ### Chore + - [#5796](https://github.com/blockscout/blockscout/pull/5796) - Add job for e2e tests on every push to master + fix job "Merge 'master' to specific branch after release" ## 4.1.6-beta diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 3075397e8d..1ed9541dc8 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -2,9 +2,11 @@ ### Environment +* Deployment type (Manual/Docker/Docker-compose): * Elixir & Erlang/OTP versions (`elixir -version`): +* Node JS version (`node -v`): * Operating System: -* Blockscout Version/branch: +* Blockscout Version/branch/commit: ### Steps to reproduce diff --git a/README.md b/README.md index cb6173ce67..7654e6e103 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

Blockchain Explorer for inspecting and analyzing EVM Chains.

-[![Blockscout](https://github.com/blockscout/blockscout/workflows/Blockscout/badge.svg?branch=master)](https://github.com/blockscout/blockscout/actions) +[![Blockscout](https://github.com/blockscout/blockscout/workflows/Blockscout/badge.svg?branch=master)](https://github.com/blockscout/blockscout/actions)
@@ -20,22 +20,21 @@ Currently available full-featured block explorers (Etherscan, Etherchain, Blockc ## Supported Projects -BlockScout supports a number of projects. Hosted instances include POA Network, Gnosis Chain, Ethereum Classic, Sokol & Kovan testnets, and other EVM chains. +BlockScout supports a number of projects. Hosted instances include POA Network, Gnosis Chain, Ethereum Classic, Sokol & Kovan testnets, and other EVM chains. - [List of hosted mainnets, testnets, and additional chains using BlockScout](https://docs.blockscout.com/for-projects/supported-projects) - [Hosted instance versions](https://docs.blockscout.com/about/use-cases/hosted-blockscout) - ## Getting Started See the [project documentation](https://docs.blockscout.com/) for instructions: + - [Requirements](https://docs.blockscout.com/for-developers/information-and-settings/requirements) - [Ansible deployment](https://docs.blockscout.com/for-developers/ansible-deployment) - [Manual deployment](https://docs.blockscout.com/for-developers/manual-deployment) - [ENV variables](https://docs.blockscout.com/for-developers/information-and-settings/env-variables) - [Configuration options](https://docs.blockscout.com/for-developers/configuration-options) - ## Acknowledgements We would like to thank the [EthPrize foundation](http://ethprize.io/) for their funding support. diff --git a/apps/block_scout_web/README.md b/apps/block_scout_web/README.md index 5f6d2d6701..8c1a622393 100644 --- a/apps/block_scout_web/README.md +++ b/apps/block_scout_web/README.md @@ -8,21 +8,19 @@ This is a tool for inspecting and analyzing the POA Network blockchain from a we * Elixir 1.9+ * Postgres 10.3 - ## Required Accounts * Github for code storage - ## Setup Instructions ### Development To get BlockScout Web interface up and running locally: - * Setup `../explorer` - * Install Node.js dependencies with `$ cd assets && npm install && cd ..` - * Start Phoenix with `$ mix phx.server` (This can be run from this directory or the project root: the project root is recommended.) +* Setup `../explorer` +* Install Node.js dependencies with `$ cd assets && npm install && cd ..` +* Start Phoenix with `$ mix phx.server` (This can be run from this directory or the project root: the project root is recommended.) Now you can visit [`localhost:4000`](http://localhost:4000) from your browser. @@ -30,14 +28,13 @@ You can also run IEx (Interactive Elixir): `$ iex -S mix phx.server` (This can b ### Testing - * Build the assets: `cd assets && npm run build` - * Format the Elixir code: `mix format` - * Lint the Elixir code: `mix credo --strict` - * Run the dialyzer: `mix dialyzer --halt-exit-status` - * Check the Elixir code for vulnerabilities: `mix sobelow --config` - * Update translations templates and translations and check there are no uncommitted changes: `mix gettext.extract --merge` - * Lint the JavaScript code: `cd assets && npm run eslint` - +* Build the assets: `cd assets && npm run build` +* Format the Elixir code: `mix format` +* Lint the Elixir code: `mix credo --strict` +* Run the dialyzer: `mix dialyzer --halt-exit-status` +* Check the Elixir code for vulnerabilities: `mix sobelow --config` +* Update translations templates and translations and check there are no uncommitted changes: `mix gettext.extract --merge` +* Lint the JavaScript code: `cd assets && npm run eslint` ## Internationalization diff --git a/apps/ethereum_jsonrpc/README.md b/apps/ethereum_jsonrpc/README.md index 5d9d469ea4..8f9ab1e94b 100644 --- a/apps/ethereum_jsonrpc/README.md +++ b/apps/ethereum_jsonrpc/README.md @@ -83,4 +83,3 @@ def deps do ] end ``` - diff --git a/apps/explorer/README.md b/apps/explorer/README.md index 2230feff3e..4064224aba 100644 --- a/apps/explorer/README.md +++ b/apps/explorer/README.md @@ -2,35 +2,32 @@ This is a tool for inspecting and analyzing the POA Network blockchain. - ## Machine Requirements * Erlang/OTP 21+ * Elixir 1.9+ * Postgres 10.3 - ## Required Accounts * Github for code storage - ## Setup Instructions ### Development To get BlockScout up and running locally: - * Install dependencies with `$ mix do deps.get, local.rebar, deps.compile, compile` - * Create and migrate your database with `$ mix ecto.create && mix ecto.migrate` - * Run IEx (Interactive Elixir) to access the index and explore: `$ iex -S mix` +* Install dependencies with `$ mix do deps.get, local.rebar, deps.compile, compile` +* Create and migrate your database with `$ mix ecto.create && mix ecto.migrate` +* Run IEx (Interactive Elixir) to access the index and explore: `$ iex -S mix` ### Testing - * Format the Elixir code: `$ mix format` - * Lint the Elixir code: `$ mix credo --strict` - * Run the dialyzer: `mix dialyzer --halt-exit-status` - * Check the Elixir code for vulnerabilities: `$ mix sobelow --config` +* Format the Elixir code: `$ mix format` +* Lint the Elixir code: `$ mix credo --strict` +* Run the dialyzer: `mix dialyzer --halt-exit-status` +* Check the Elixir code for vulnerabilities: `$ mix sobelow --config` ### Benchmarking diff --git a/apps/indexer/README.md b/apps/indexer/README.md index 9161466229..62daba227a 100644 --- a/apps/indexer/README.md +++ b/apps/indexer/README.md @@ -24,7 +24,6 @@ Some data has to be extracted from already fetched data, and there're several tr - `address_token_balances`: creates token balance entities for futher fetching, based on detected token transfers - `blocks`: extracts block signer hash from additional data for Clique chains - ### Root fetchers - `pending_transaction`: fetches pending transactions (i.e. not yet collated into a block) every second (`pending_transaction_interval`) @@ -32,6 +31,7 @@ Some data has to be extracted from already fetched data, and there're several tr - `block/catchup`: gets unfetched ranges of blocks, imports them in batches Both block fetchers retrieve/extract the blocks themselves and the following additional data: + - `block_second_degree_relations` - `transactions` - `logs` @@ -39,16 +39,19 @@ Both block fetchers retrieve/extract the blocks themselves and the following add - `addresses` The following stubs for further async fetching are inserted as well: + - `block_rewards` - `address_coin_balances` - `address_token_balances` - `tokens` Realtime fetcher also immediately fetches from the node: + - current balances for `addresses` - `address_coin_balances` The following async fetchers are launched for importing missing data: + - `replaced_transaction` - `block_reward` - `uncle_block` @@ -62,6 +65,7 @@ The following async fetchers are launched for importing missing data: These are responsible for fetching additional block data not retrieved in root fetchers. Most of them are based off `BufferedTask`, and the basic algorithm goes like this: + 1. Make an initial streaming request to database to fetch identifiers of all existing unfetched items. 2. Accept new identifiers for fetching via `async_fetch()` method. 3. Split identifier in batches and run tasks on `TaskSupervisor` according to `max_batch_size` and `max_concurrency` settings. @@ -80,6 +84,7 @@ Most of them are based off `BufferedTask`, and the basic algorithm goes like thi - `contract_code`: for `transactions` with non-null `created_contract_address_hash` and null `created_contract_code_indexed_at` Additionally: + - `token_updater` is run every 2 days to update token metadata - `coin_balance_on_demand` is triggered from web UI to ensure address balance is as up-to-date as possible diff --git a/docker-compose/README.md b/docker-compose/README.md index effe655f20..cfc504826f 100644 --- a/docker-compose/README.md +++ b/docker-compose/README.md @@ -3,21 +3,26 @@ Runs BlockScout locally in Docker container with usage [docker-compose](https://github.com/docker/compose). ## Prerequisites + - Docker v20.10+ - Docker-compose 2.x.x+ - Running Ethereum JSON RPC client ## Building Docker containers from source + ``` docker-compose up --build ``` This command uses by-default `docker-compose.yml`, which build the explorer into Docker image and runs 2 Docker containers: + - one for the database. Postgres 13.x, which will be available at port 7432 on localhost - and the BlockScout explorer at http://localhost:4000 ## Configs for different Ethereum clients + Also, the repo contains built-in configs for different clients without need to build the image + - Ganache: `docker-compose -f docker-compose-no-build-ganache.yml up -d` - HardHat network: `docker-compose -f docker-compose-no-build-hardhat-network.yml up -d` - Geth: `docker-compose -f docker-compose-no-build-geth.yml up -d` diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml index 081b7ee839..3ebb5d1edf 100644 --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -15,6 +15,7 @@ services: blockscout: depends_on: - db + image: blockscout/blockscout:${DOCKER_TAG:-latest} build: context: .. dockerfile: ./docker/Dockerfile