Skip to content

Commit

Permalink
1 (#9)
Browse files Browse the repository at this point in the history
* feat: precompiled contracts ABI import (#9899)

* Initial implementation of precompiled contracts ABI import

* Documention added

* address Sobelow finding

* another attempt address Sobelow finding

* Apply evident suggestions from code review

Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>

* Fix afer merge

* Small inconsistency in spec

* different path for different mix environment

* fix for formatting issue

---------

Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>

* Update README.md

* chore: Bump floki from 0.36.1 to 0.36.2 (#9979)

Bumps [floki](https://github.com/philss/floki) from 0.36.1 to 0.36.2.
- [Release notes](https://github.com/philss/floki/releases)
- [Changelog](https://github.com/philss/floki/blob/main/CHANGELOG.md)
- [Commits](https://github.com/philss/floki/compare/v0.36.1...v0.36.2)

---
updated-dependencies:
- dependency-name: floki
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump redix from 1.4.1 to 1.5.0 (#9977)

Bumps [redix](https://github.com/whatyouhide/redix) from 1.4.1 to 1.5.0.
- [Changelog](https://github.com/whatyouhide/redix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/whatyouhide/redix/compare/v1.4.1...v1.5.0)

---
updated-dependencies:
- dependency-name: redix
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Enhance indexer memory metrics (#9984)

* chore: Bump @babel/core in /apps/block_scout_web/assets (#9996)

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.3 to 7.24.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump @fortawesome/fontawesome-free (#10002)

Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 6.5.1 to 6.5.2.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.1...6.5.2)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump mixpanel-browser in /apps/block_scout_web/assets (#10000)

Bumps [mixpanel-browser](https://github.com/mixpanel/mixpanel-js) from 2.49.0 to 2.50.0.
- [Release notes](https://github.com/mixpanel/mixpanel-js/releases)
- [Changelog](https://github.com/mixpanel/mixpanel-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mixpanel/mixpanel-js/compare/v2.49.0...v2.50.0)

---
updated-dependencies:
- dependency-name: mixpanel-browser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump sweetalert2 in /apps/block_scout_web/assets (#9998)

Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.10.7 to 11.10.8.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.10.7...v11.10.8)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump css-loader in /apps/block_scout_web/assets (#10003)

Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.10.0 to 7.1.1.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.10.0...v7.1.1)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump @amplitude/analytics-browser in /apps/block_scout_web/assets (#10001)

Bumps [@amplitude/analytics-browser](https://github.com/amplitude/Amplitude-TypeScript) from 2.6.1 to 2.7.0.
- [Release notes](https://github.com/amplitude/Amplitude-TypeScript/releases)
- [Commits](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-browser@2.6.1...@amplitude/analytics-browser@2.7.0)

---
updated-dependencies:
- dependency-name: "@amplitude/analytics-browser"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump @babel/preset-env in /apps/block_scout_web/assets (#9999)

Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.3 to 7.24.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.5/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump mini-css-extract-plugin in /apps/block_scout_web/assets (#9997)

Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.8.1 to 2.9.0.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.8.1...v2.9.0)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump style-loader in /apps/block_scout_web/assets (#9995)

Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 3.3.4 to 4.0.0.
- [Release notes](https://github.com/webpack-contrib/style-loader/releases)
- [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/style-loader/compare/v3.3.4...v4.0.0)

---
updated-dependencies:
- dependency-name: style-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump ex_cldr_units from 3.16.5 to 3.17.0 (#9931)

* chore: Bump ex_cldr_units from 3.16.5 to 3.17.0

Bumps [ex_cldr_units](https://github.com/elixir-cldr/cldr_units) from 3.16.5 to 3.17.0.
- [Release notes](https://github.com/elixir-cldr/cldr_units/releases)
- [Changelog](https://github.com/elixir-cldr/cldr_units/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-cldr/cldr_units/commits/v3.17.0)

---
updated-dependencies:
- dependency-name: ex_cldr_units
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add cldr to dialyzer ignore

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Viktor Baranov <baranov.viktor.27@gmail.com>

* chore: Bump ex_cldr from 2.38.0 to 2.38.1 (#10009)

Bumps [ex_cldr](https://github.com/elixir-cldr/cldr) from 2.38.0 to 2.38.1.
- [Release notes](https://github.com/elixir-cldr/cldr/releases)
- [Changelog](https://github.com/elixir-cldr/cldr/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-cldr/cldr/compare/v2.38.0...v2.38.1)

---
updated-dependencies:
- dependency-name: ex_cldr
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump ex_cldr_numbers from 2.32.4 to 2.33.1 (#9978)

Bumps [ex_cldr_numbers](https://github.com/elixir-cldr/cldr_numbers) from 2.32.4 to 2.33.1.
- [Release notes](https://github.com/elixir-cldr/cldr_numbers/releases)
- [Changelog](https://github.com/elixir-cldr/cldr_numbers/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-cldr/cldr_numbers/compare/v2.32.4...v2.33.1)

---
updated-dependencies:
- dependency-name: ex_cldr_numbers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove update of latest tag except release CI for chains, which managed via CHAIN_TYPE

* CI for Arbitrum on-demand Docker images

* feat: Omit balanceOf requests for tokens that doesn't support it (#10018)

* feat: Omit balanceOf requests for tokens that doesn't support it

* Missing balanceOf token refactoring

* Fix failed token balance error matching

* feat: Detect EIP-1967 proxy pattern on unverified smart-contracts (#9864)

* Detect EIP-1967 proxy even for not verified smart-contracts

* put_verified_from_twin/2 function

* Implement proxy implementation model

* Fix test

* Fix DB migration

* Refactoring

* Fix tests

* Change schema to store implementation arrays

* Refactoring

* Update apps/explorer/lib/explorer/etherscan/contracts.ex

Co-authored-by: nikitosing <32202610+nikitosing@users.noreply.github.com>

* Process review comments

* Fix call of Implementation.get_implementation_address_hash

* Refactor save_implementation_data/5 to save_implementation_data/4

* Process review comment

* Remove duplicate call of implementation_updated_at

* Eliminate metadata_from_verified_bytecode_twin from save_implementation_data function

* Fix formatting

* Set non-nil smart-contract into Implementation.get_implementation_address_hash(...)

* Simplify clauses in save_implementation_data/3

* Get implementation data in a single DB request

* Fix tests

* Set different proxy verification success message in case of single/plural implementations

* Refactoring

---------

Co-authored-by: nikitosing <32202610+nikitosing@users.noreply.github.com>

* fix: Handle DB unavailability by PolygonZkevm.TransactionBatch fetcher (#10031)

Co-authored-by: POA <33550681+poa@users.noreply.github.com>

* Fix typo

* feat: save smart-contract proxy type in the DB (#10033)

* feat: save smart-contract proxy type in the DB

* Add tests

* Allow null proxy type in DB

* Fix tests

* Update stats.yml (#10030)

Stats container env variables was not working correctly

* chore: Migrate to GET variant of {{metadata_url}}/api/v1/metadata (#9994)

* chore: Migrate to GET variant of {{metadata_url}}/api/v1/metadata

* Fix test

* fix: Don't put error to NFT metadata (#9940)

* fix: Don't put error to NFT metadata

* Remove unused Explorer.Helper.maybe_decode/1

* feat: add user ops indexer to docker compose configs (#10010)

* feat: add user ops indexer to docker compose configs

* fix: missing env in .gitignore

* fix: search for long integers (#9651)

* fix: search for long integers

* fix: ignore negative block numbers

* chore: move `safe_parse_block_number` to `Explorer.Helper`

* refactor: make function name more generic

* refactor: utilize `safe_parse_non_negative_integer` in `paging_options`

* Show blocks range in internal transactions fetching error (#10028)

* feat: Diamond proxy (EIP-2535) support (#10034)

* feat: Diamond proxy (eip-2535)

* Additional logic change

* Refactoring & backward compatibility

* Refactor specs

* Remove prepare_value function

* implementation_address_hash_from_db, implementation_name_from_db to plural form

* Remove check implementation_address_hash_strings is list

* address_hash_to_smart_contract_with_bytecode_twin function: return options param into the call of single_implementation_smart_contract_from_proxy

* Remove fallback "|| [burn_address_hash_string()]"

* Update spec of set_proxy_verification_result

* Fix web tests

* Change the order of enum values to match db enum

* Remove duplicated clause in save_implementation_data/4

* Remove duplicated line

* Add clause for [] to set_proxy_verification_result

* chore: Update outdated links to ETH JSON RPC Specification in docstrings (#10041)

* Update outdated links to ETH JSON RPC Specification in docstrings

* Remove empty line

* feat: MUD API support (#9869)

* feat: mud support

* chore: fix ci warnings

* feat: skip missing schemas

* ci: build redstone image

* chore: fix dialyzer

* chore: remove noop migration

* feat: full-text table search

* fix: don't show deleted records

* fix: type specs and dializer fixes

* feat: checksum addresses

* fix: handle invalid params

* chore: add missing envs

* chore: Add support of Blast-specific L1 OP withdrawal events (#10049)

* Add support of Blast-specific L1 OP withdrawal events

* mix format

---------

Co-authored-by: POA <33550681+poa@users.noreply.github.com>

* feat: Improve retry NFT fetcher (#10027)

* feat: Improve retry NFT fetcher

* Process review comments

* Fix spelling

* chore: remove `has_methods` from `/addresses` (#10051)

* chore: remove `has_methods_` `read`/`read_proxy`/`write`/`write_proxy` from `/addresses`

* chore: move proxy contract test to `smart_contract_controller_test.exs`

* refactor: test database config (#9662)

* refactor: test database config

* feat: configure test db with special envs

* fix: prefer `url` from config over raw env

* refactor: remove redundant fallback

* refactor: use `ConfigHelper.init_repo_module/2` to configure `ZkSync` repo

* fix: Fix Unknown UID bug at smart-contract verification (#9986)

* fix: Fix Unknown UID bug

* Fix credo

* Fix credo

* Refactoring

* Fix aliases

* chore: Bump ex_doc from 0.32.1 to 0.32.2 (#10061)

Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.32.1 to 0.32.2.
- [Release notes](https://github.com/elixir-lang/ex_doc/releases)
- [Changelog](https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-lang/ex_doc/compare/v0.32.1...v0.32.2)

---
updated-dependencies:
- dependency-name: ex_doc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump redix from 1.5.0 to 1.5.1 (#10059)

Bumps [redix](https://github.com/whatyouhide/redix) from 1.5.0 to 1.5.1.
- [Changelog](https://github.com/whatyouhide/redix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/whatyouhide/redix/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: redix
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump credo from 1.7.5 to 1.7.6 (#10060)

Bumps [credo](https://github.com/rrrene/credo) from 1.7.5 to 1.7.6.
- [Release notes](https://github.com/rrrene/credo/releases)
- [Changelog](https://github.com/rrrene/credo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rrrene/credo/compare/v1.7.5...v1.7.6)

---
updated-dependencies:
- dependency-name: credo
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor: Refactor get_additional_sources/4 -> get_additional_sources/3 (#10046)

* fix: vyper contracts re-verificaiton (#10053)

* Add test case for publishing re-verified solidity contract

* Add (failing) test case for publishing re-verified vyper contract

* fix: allow for vyper contracts re-verification

* Remove commented line

* feat: Clone with immutable arguments proxy pattern (#10039)

* feat: Clone with immutable arguments proxy pattern

* refactor: rename unverified_proxy_only? to proxy_without_abi?

* fix: Disallow batched queries in GraphQL endpoint (#10050)

* Disallow multiple queries in GraphQL endpoint

* Fix mix credo

* Add Plug.Parsers to each pipeline

* Process review comments

* Process review comments

* chore: Update hackney pool size: add new fetchers accounting (#9941)

* feat: Blueprint contracts support (#10058)

* Update smart-contract to have 'is_blueprint' flag

* Store into the database 'is_blueprint' value retrieved from verification or lookup results

* Make use of TestHelper module for smart_contract_controller_test

* Make use of TestHelper module for verification_controller_test. Fix invalid 'is_blueprint' value in fixture

* Fix spelling. Simplify Vyper.publish method

* Add 'Averify' into spelling check

* Add PR url to the comment with rationale behind url-encoding ':' symbol

* fix: Separate indexer setup (#10032)

* fix: Separate indexer setup

* Configure CI for sepate images for indexer and API

* Change CI for every push to master branch (build separate indexer/api images)

* Add DISABLE_API env var

* Indexing status improvements for api instance

---------

Co-authored-by: Viktor Baranov <baranov.viktor.27@gmail.com>

* feat: Add optional retry of NFT metadata fetch in Indexer.Fetcher.Tok… (#10036)

* feat: Add optional retry of NFT metadata fetch in Indexer.Fetcher.TokenInstance.Realtime

* Rename env

* Process review comments

* Rename var

* fix: Eliminate from_address_hash == #{address_hash} clause for transactions query in case of smart-contracts (#9469)

* Eliminate from_address_hash equal to address clause for transactions query in case of smart-contracts

* Fix tests

* Fix web tests

* Fix web tests

* Process review comments

* Update apps/explorer/lib/explorer/etherscan/logs.ex

Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>

* mix format

* Remove or_where import

* Update smart-contract controller test

---------

Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>

* fix: Rework revert_reason (#9212)

* fix: rework revert_reason

* fix: format

* fix: tests

* fix: chain_type_fields

* chore: refactor

* fix: decode functions refactor

* 6.6.0

* fix: Add healthcheck endpoints for indexer-only setup (#10076)

* fix: Update Vyper inner compilers list to support all compilers (#10091)

Increases the number of items retrieved for Vyper releases to 100. Allows to get the oldest vyper compilers when using internal verification (i.e., sc_verifier is disabled)

When not set, the default number of items retrieved is 30, which is less than total number of currently existing releases (46). This makes the oldest compilers unavailable when using vyper verificaiton method.

Should fix the failing `/api/v2/smart-contracts/{address_hash}/verification/via/vyper-code success verification` test

* Fix certified flag in the search API v2 endpoint (#10094)

* Update CHANGELOG for 6.6.0

* Remove custom release CI for Immutable

* feat: implement fetch_first_trace for Geth (#10087)

* feat: implement fetch_first_trace for Geth

* chore: add missing doc & spec

* Update CHANGELOG

* Fix GA pre-release && release workflows

* Improve response of address API to return multiple implementations for Diamond proxy (#10113)

* Update CHANGELOG

* Indexer/API separated images for Redstone

* chore: Bump ecto_sql from 3.11.1 to 3.11.2

updated-dependencies:
- dependency-name: ecto_sql
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: indexer for cross level messages on Arbitrum (#9312)

* Initial version of x-level messages indexer

* fixes for cspell and credo

* new state of x-level messages

* Monitoring of new L1-to-L2 messages on L1

* new batches discovery

* fetcher workers in separate modules

* proper name

* Fix for responses without "id", e.g. "Too Many Requests"

* update DB with new batches and corresponding data

* update DB with confirmed blocks

* fixes for cspell and credo

* tracking commitments confirmations for L1 to L2 messages

* Proper usign of max function

* tracking completion of L2 to L1 messages

* catchup historical messages to L2

* incorrect version of committed file

* catchup historical messages from L2 and completion of L1-to-L2 messages

* historical batches catchup

* status for historical l2-to-l1 messages

* address matching issue

* catchup historical executions of L2-to-L1 messages

* db query to find unconfirmed blocks gaps

* first changes to catchup historical confirmations

* finalized catchup of historical confirmations

* 4844 blobs support

* fix for the issue with multiple confirmations

* limit amount of batches to handle at once

* Use latest L1 block by fetchers if start block is not configured

* merge issue fix

* missed file

* historical messages discovery

* reduce logs severity

* first iteration to improve documentation for new functionality

* second iteration to improve documentation for new functionality

* third iteration to improve documentation for new functionality

* fourth iteration to improve documentation for new functionality

* fifth iteration to improve documentation for new functionality

* final iteration to improve documentation for new functionality

* merge issues addressed

* code review issues addressed

* code review issues addressed

* fix merge issue

* raising exception in the case of DB inconsistency

* fix formatting issue

* termination case for RollupMessagesCatchup

* code review comments addressed

* code review comments addressed

* consistency in primary keys

* dialyzer fix

* code review comments addressed

* missed doc comment

* code review comments addressed

* updated indices creation as per code review comments

* fix merge issue

* configuration of intervals as time variables

* TODO added to reflect improvement ability

* database fields refactoring

* association renaming

* feat: APIv2 endpoints for Arbitrum messages and batches (#9963)

* Arbitrum related info in Transaction and Block views

* Views to get info about batches and messages

* usage of committed for batches instead of confirmed

* merge issues addressed

* changes after merge

* formatting issue fix

* code review comment addressed

* associations and fields in api response renamed

* format issue addressed

* feat: Arbitrum-specific fields in the block and transaction API endpoints (#10067)

* Arbitrum related info in Transaction and Block views

* Views to get info about batches and messages

* usage of committed for batches instead of confirmed

* merge issues addressed

* changes after merge

* formatting issue fix

* block and transaction views extended

* code review comment addressed

* associations and fields in api response renamed

* format issue addressed

* fix credo issue

* fix tests issues

* ethereumjsonrpc test fail investigation

* test issues fixes

* --- (#10096)

updated-dependencies:
- dependency-name: phoenix_ecto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* hide chain specific fields behind Map.get (#10131)

* fix: Hotfix for Indexer.Fetcher.Optimism.WithdrawalEvent and EthereumJSONRPC.Receipt (#10130)

* fix: Hotfix for Indexer.Fetcher.Optimism.WithdrawalEvent

* Small refactoring

* Small refactoring

* Consider nil in game_index

* Add empty handler for Optimism Fjord tx receipt fields

---------

Co-authored-by: POA <33550681+poa@users.noreply.github.com>

* fix: missing nil case for revert reason (#10136)

* Explicit message on token balance update error (#10129)

* fix: Add missing preloads to tokens endpoints (#10072)

* fix: Add healthcheck endpoints for indexer-only setup (#10076)

* fix: Update Vyper inner compilers list to support all compilers (#10091)

Increases the number of items retrieved for Vyper releases to 100. Allows to get the oldest vyper compilers when using internal verification (i.e., sc_verifier is disabled)

When not set, the default number of items retrieved is 30, which is less than total number of currently existing releases (46). This makes the oldest compilers unavailable when using vyper verificaiton method.

Should fix the failing `/api/v2/smart-contracts/{address_hash}/verification/via/vyper-code success verification` test

* Fix certified flag in the search API v2 endpoint (#10094)

* Update CHANGELOG for 6.6.0

* Remove custom release CI for Immutable

* feat: implement fetch_first_trace for Geth (#10087)

* feat: implement fetch_first_trace for Geth

* chore: add missing doc & spec

* Update CHANGELOG

* Fix GA pre-release && release workflows

* Improve response of address API to return multiple implementations for Diamond proxy (#10113)

* Update CHANGELOG

* Indexer/API separated images for Redstone

* chore: Bump ecto_sql from 3.11.1 to 3.11.2

updated-dependencies:
- dependency-name: ecto_sql
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: indexer for cross level messages on Arbitrum (#9312)

* Initial version of x-level messages indexer

* fixes for cspell and credo

* new state of x-level messages

* Monitoring of new L1-to-L2 messages on L1

* new batches discovery

* fetcher workers in separate modules

* proper name

* Fix for responses without "id", e.g. "Too Many Requests"

* update DB with new batches and corresponding data

* update DB with confirmed blocks

* fixes for cspell and credo

* tracking commitments confirmations for L1 to L2 messages

* Proper usign of max function

* tracking completion of L2 to L1 messages

* catchup historical messages to L2

* incorrect version of committed file

* catchup historical messages from L2 and completion of L1-to-L2 messages

* historical batches catchup

* status for historical l2-to-l1 messages

* address matching issue

* catchup historical executions of L2-to-L1 messages

* db query to find unconfirmed blocks gaps

* first changes to catchup historical confirmations

* finalized catchup of historical confirmations

* 4844 blobs support

* fix for the issue with multiple confirmations

* limit amount of batches to handle at once

* Use latest L1 block by fetchers if start block is not configured

* merge issue fix

* missed file

* historical messages discovery

* reduce logs severity

* first iteration to improve documentation for new functionality

* second iteration to improve documentation for new functionality

* third iteration to improve documentation for new functionality

* fourth iteration to improve documentation for new functionality

* fifth iteration to improve documentation for new functionality

* final iteration to improve documentation for new functionality

* merge issues addressed

* code review issues addressed

* code review issues addressed

* fix merge issue

* raising exception in the case of DB inconsistency

* fix formatting issue

* termination case for RollupMessagesCatchup

* code review comments addressed

* code review comments addressed

* consistency in primary keys

* dialyzer fix

* code review comments addressed

* missed doc comment

* code review comments addressed

* updated indices creation as per code review comments

* fix merge issue

* configuration of intervals as time variables

* TODO added to reflect improvement ability

* database fields refactoring

* association renaming

* feat: APIv2 endpoints for Arbitrum messages and batches (#9963)

* Arbitrum related info in Transaction and Block views

* Views to get info about batches and messages

* usage of committed for batches instead of confirmed

* merge issues addressed

* changes after merge

* formatting issue fix

* code review comment addressed

* associations and fields in api response renamed

* format issue addressed

* feat: Arbitrum-specific fields in the block and transaction API endpoints (#10067)

* Arbitrum related info in Transaction and Block views

* Views to get info about batches and messages

* usage of committed for batches instead of confirmed

* merge issues addressed

* changes after merge

* formatting issue fix

* block and transaction views extended

* code review comment addressed

* associations and fields in api response renamed

* format issue addressed

* fix credo issue

* fix tests issues

* ethereumjsonrpc test fail investigation

* test issues fixes

* --- (#10096)

updated-dependencies:
- dependency-name: phoenix_ecto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* hide chain specific fields behind Map.get (#10131)

* fix: Hotfix for Indexer.Fetcher.Optimism.WithdrawalEvent and EthereumJSONRPC.Receipt (#10130)

* fix: Hotfix for Indexer.Fetcher.Optimism.WithdrawalEvent

* Small refactoring

* Small refactoring

* Consider nil in game_index

* Add empty handler for Optimism Fjord tx receipt fields

---------

Co-authored-by: POA <33550681+poa@users.noreply.github.com>

* fix: missing nil case for revert reason (#10136)

* fix: Add missing preloads to tokens endpoints

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>
Co-authored-by: Rim Rakhimov <rimrakhimov@gmail.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Kolotov <alexandr.kolotov@gmail.com>
Co-authored-by: varasev <33550681+varasev@users.noreply.github.com>
Co-authored-by: POA <33550681+poa@users.noreply.github.com>

* feat: Add window between balance fetch retries for missing balanceOf tokens (#10142)

* refactor: Remove hardcoded numResults from fetch_pending_transactions_besu (#10117)

* update remove fixed value

* refactor fetch_pending_transactions_besu

* add PR number and revised CHANGLOG.md

* remove change in CHANGELOG.md

* chore(deps-dev): bump @babel/core in /apps/block_scout_web/assets (#10172)

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.5 to 7.24.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.6/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: Fix Retry NFT fetcher (#10146)

* chore(deps-dev): bump eslint-plugin-promise (#10168)

Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.1.1 to 6.2.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.1.1...v6.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-promise
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump core-js in /apps/block_scout_web/assets (#10175)

Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.36.1 to 3.37.1.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.37.1/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump sweetalert2 in /apps/block_scout_web/assets (#10171)

Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.10.8 to 11.11.0.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.10.8...v11.11.0)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump mixpanel-browser in /apps/block_scout_web/assets (#10170)

Bumps [mixpanel-browser](https://github.com/mixpanel/mixpanel-js) from 2.50.0 to 2.51.0.
- [Release notes](https://github.com/mixpanel/mixpanel-js/releases)
- [Changelog](https://github.com/mixpanel/mixpanel-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mixpanel/mixpanel-js/compare/v2.50.0...v2.51.0)

---
updated-dependencies:
- dependency-name: mixpanel-browser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump css-minimizer-webpack-plugin (#10173)

Bumps [css-minimizer-webpack-plugin](https://github.com/webpack-contrib/css-minimizer-webpack-plugin) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/compare/v6.0.0...v7.0.0)

---
updated-dependencies:
- dependency-name: css-minimizer-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump solc from 0.8.25 to 0.8.26 in /apps/explorer (#10177)

Bumps [solc](https://github.com/ethereum/solc-js) from 0.8.25 to 0.8.26.
- [Commits](https://github.com/ethereum/solc-js/compare/v0.8.25...v0.8.26)

---
updated-dependencies:
- dependency-name: solc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump @amplitude/analytics-browser (#10176)

Bumps [@amplitude/analytics-browser](https://github.com/amplitude/Amplitude-TypeScript) from 2.7.0 to 2.8.1.
- [Release notes](https://github.com/amplitude/Amplitude-TypeScript/releases)
- [Commits](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-browser@2.7.0...@amplitude/analytics-browser@2.8.1)

---
updated-dependencies:
- dependency-name: "@amplitude/analytics-browser"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/preset-env in /apps/block_scout_web/assets (#10174)

Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.5 to 7.24.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.6/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump chart.js in /apps/block_scout_web/assets (#10169)

Bumps [chart.js](https://github.com/chartjs/Chart.js) from 4.4.2 to 4.4.3.
- [Release notes](https://github.com/chartjs/Chart.js/releases)
- [Commits](https://github.com/chartjs/Chart.js/compare/v4.4.2...v4.4.3)

---
updated-dependencies:
- dependency-name: chart.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: Add a separate db url for events listener (#10164)

* fix: Move auth routes to general router (#10153)

* fix: Move auth routes to general router

* Move account routes to the separate router

* chore: Return is verified=true for verified minimal proxy pattern (#10132)

* Return is verified=true for verified minimal proxy pattern

* Refactor proxy object for API

* chore: Exclude write methods from read tabs (#10111)

* Exclude write methods from Read tab

* Reverse corresponding test

* chore: Refactor PendingTransactionsSanitizer to use batched requests (#10101)

* fix: Add the ability to allow empty traces (#10200)

* fix: Resolve flaky address_controller test for web

* feat: Add Fee column to Internal transactions CSV export (#10204)

* feat: Add Fee column to Internal transactions CSV export

* Fix tests

* Fix flaky test

* fix: Filter WETH transfers in indexer + migration to delete historical incorrect WETH transfers (#10134)

* feat: Set dynamic ttl of cache modules derived from MapCache (#10109)

* Set dynamic ttl of cache modules derived from MapCache

* Update apps/explorer/lib/explorer/chain/cache/helper.ex

Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>

---------

Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>

* fix: excessive logging for Arbitrum batches confirmations (#10205)

* revisited logging to explore start block of confirmation range

* improvement of logging

* feat: Batch read methods requests (#10192)

* feat: Batch read methods requests

* Fix tests

* Process review comments

* feat: Add feature toggle for WETH filtering (#10208)

* feat: Add feature toggle for WETH filtering

* Add new envs to docker-compose/envs/common-blockscout.env

* Fix tests

* perf: replace individual queries with ecto preload (#10203)

* feat: Push relevant entries to the front of bound queue (#10193)

* feat: Push relevant entries to the front of bound queue

* Refactor realtime? parameter in async_import_remaining_block_data

* feat: Get ERC-1155 token name from contractURI getter fallback (#10187)

* Get ERC-1155 token name from contractURI getter fallback

* Process review comments

* Change doc and spec for stream_cataloged_tokens function

* feat: Adding Mobula price source (#9971)

* Adding Mobula as data provider

* push Mobula source

* add chain setup

* remove useless params

* remove useless functions

* add mobula price history provider

* adding mobula history url

* add possibility to fetch_market_data_for_token_addresses with Mobula on source.ex

* update chain => chain_id

* mix format

* mix credo

* removed useless alias Helper & Chain

* Adding "Mobula" to cspell.json

* Adding Mobula to config_helper

* Fix dialyzer

* mix format

* Set Mobula as a default source if the EXCHANGE_RATES_COINGECKO_API_KEY is not set

* fix compilation error on config_helper

* Remove Mobula fallback on config_helper exchange_rates_source

* Update apps/explorer/lib/explorer/exchange_rates/source/mobula.ex

Co-authored-by: Fedor Ivanov <ivnfedor@gmail.com>

* Update mobula.ex

* add Mobula to exchange_rates_market_cap_source

* Adding secondary_coin support

* EXCHANGE_RATES_MOBULA_PLATFORM_ID into EXCHANGE_RATES_MOBULA_CHAIN_ID

* should fix mix credo

* adding mobula secondary id env

* update env in runtime.exs

* Push requests

---------

Co-authored-by: Fedor Ivanov <ivnfedor@gmail.com>

* feat(ci): use remote arm64 builder (#9468)

* feat(ci): multi-platform remote build

* set arm runner secret, update runner hosts

* select one builder and persist it

* select one builder and persist it

* find the least busy arm builder

* chore: update ci configs post rebase

* enable remote build in every workflow

---------

Co-authored-by: aagaev <alik@agaev.me>

* fixed the field name (#10216)

* chore(deps): bump remote_ip from 1.1.0 to 1.2.0 (#10224)

Bumps [remote_ip](https://github.com/ajvondrak/remote_ip) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/ajvondrak/remote_ip/releases)
- [Commits](https://github.com/ajvondrak/remote_ip/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: remote_ip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump cldr_utils from 2.25.0 to 2.26.0 (#10223)

Bumps [cldr_utils](https://github.com/elixir-cldr/cldr_utils) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/elixir-cldr/cldr_utils/releases)
- [Changelog](https://github.com/elixir-cldr/cldr_utils/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-cldr/cldr_utils/compare/v2.25.0...v2.26.0)

---
updated-dependencies:
- dependency-name: cldr_utils
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump wallaby from 0.30.6 to 0.30.7 (#10221)

Bumps [wallaby](https://github.com/elixir-wallaby/wallaby) from 0.30.6 to 0.30.7.
- [Release notes](https://github.com/elixir-wallaby/wallaby/releases)
- [Changelog](https://github.com/elixir-wallaby/wallaby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/elixir-wallaby/wallaby/compare/v0.30.6...v0.30.7)

---
updated-dependencies:
- dependency-name: wallaby
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: Fix unknown UID bug (#10226)

* fix: Fix unknown UID bug

* Fix timestamp comparison

* fix: Replace empty arg names with argN (#9748)

* fix: Replace empty arg names with argN

* Fix dialyzer

* Remove dbg

* Fix dialyzer

* Fix test

* Fix test

---------

Co-authored-by: Maxim Filonov <53992153+sl1depengwyn@users.noreply.github.com>

* fix: ERC-1155 tokens metadata retrieve (#10231)

* fix: cannot truncate chardata (#10227)

* chore(deps-dev): bump benchee from 1.3.0 to 1.3.1 (#10222)

Bumps [benchee](https://github.com/bencheeorg/benchee) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/bencheeorg/benchee/releases)
- [Changelog](https://github.com/bencheeorg/benchee/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bencheeorg/benchee/compare/1.3.0...1.3.1)

---
updated-dependencies:
- dependency-name: benchee
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: add proxy_implementations preloads (#10225)

* fix: add proxy_implementations preloads

* Add preloads to channels

* Add preload to cache

* fix: add smart contracts preloads to from_address (#10236)

* feat: Advanced Filters (#9769)

* feat: Advanced Filters

* Fix query performance

* Fix timestamp filtering; Fix query construction

* Add csv export

* Frontend integration

Add search_params to response
Add limit to tokens endpoint
Add fee in api response
Add exclusion/inclusion of from/to addresses
Remove raw_input from api response

* Remove comment

* Add methods search; Optimize internal txs query

* Fix `method_id_to_name_from_params`

* Fix filtering by amount; add filter by native

* Fix review comments

* Handle all token types

* Optimize query

* Process review comments

* Process review comments

---------

Co-authored-by: Viktor Baranov <baranov.viktor.27@gmail.com>

* Fix nil abi issue in get_naive_implementation_abi and get_master_copy_pattern methods (#10239)

* fix: batch transactions view recovered and support of proofs through ZkSync Hyperchain (#10234)

* unified tx_hash field with Arbitrum batch transaction

* Supported yet another contract function to submit batches proofs

* fixed formatting issue

* feat: API endpoint to re-fetch token instance metadata (#10097)

* feat: Re-fetch token instance metadata

* Partially process review comments

* Process reviewer comments. Part 2

* Process reviewer comments. Part 3

* Process reviewer comments. Part 4

* Fix events

* Add test

* Remove :token preload

* fix formatting

* Fix tests

* Remove unused aliases

* Add reCAPTCHA for token instance re-fetch API endpoint

* Check event on websocket at /api/v2/tokens/{address_hash}/instances/{token_id}/refetch-metadata endpoint

* 6.7.0

* fix: Fix possible unknown UID bug (#10240)

* Update CHANGELOG

* fix: pipe through  api_v2_no_forgery_protect POST requests in SmartContractsApiV2Router

* fix: proper hex-encoded transaction hash recognition in ZkSync batches status checker (#10255)

* proper hex-encoded transaction hash recognition

* mix format

---------

Co-authored-by: Viktor Baranov <baranov.viktor.27@gmail.com>

* fix: advanced filter contract creation transaction (#10257)

* feat: Chain & explorer Prometheus metrics (#10063)

* feat: Chain & explorer Prometheus metrics

* Process review

* Add consensus filter, account token transfers and internal transactions in active users metric

* Refactor, run metrics async

* Raise error on metrics query execution timed out

* Move chain & explorer mterics to a separate (public) endpoint

* Set 1h timeout for DB request

* fix: add preloads to summary and tokens endpoints (#10259)

* Update CHANGELOG

* fix: add preloads for tx summary endpoint (#10261)

* fix: `getsourcecode` in API v1 for verified proxy (#10273)

* Update CHANGELOG

* Fix ci setup repo error (#10277)

* try to trim BUILDER_IP env

* Revert "try to trim BUILDER_IP env"

This reverts commit 9a95ce948bb723b5a256420c9fe34d71eb0e95bd.

* trim BEST_BUILDER env and disable debug message

* feat: Public metrics toggler (#10279)

* Public metrics toggler

* Update apps/explorer/lib/explorer/chain/metrics.ex

Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>

---------

Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>

* Update CHANGELOG

* Pre-release workflow for Arbitrum

* Update CHANGELOG

* fix: set timeout in seconds (#10283)

* Update CHANGELOG

* Disable weekly_active_addresses_number metric because it affects DB performance: query should be optimized in the future

* Speed-up query execution for weekly_new_token_transfers_number_query (#10289)

* fix: add token instances preloads (#10288)

* Update CHANGELOG

* fix: token instance preload (#10297)

* fix: update `ex_abi` to fix type decoder for huge lists (#10294)

* chore: update `ex_abi` to fix type decoder for huge lists

* chore: add a todo note

* fix: update `ex_abi` to parse function ABI without `outputs` field

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Alexander Kolotov <alexandr.kolotov@gmail.com>
Co-authored-by: Kirill Fedoseev <kirill@blockscout.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Qwerty5Uiop <105209995+Qwerty5Uiop@users.noreply.github.com>
Co-authored-by: nikitosing <32202610+nikitosing@users.noreply.github.com>
Co-authored-by: varasev <33550681+varasev@users.noreply.github.com>
Co-authored-by: POA <33550681+poa@users.noreply.github.com>
Co-authored-by: Ramazan Fatih Karadeniz <61462812+ramazanfatih-karadeniz@users.noreply.github.com>
Co-authored-by: Fedor Ivanov <ivnfedor@gmail.com>
Co-authored-by: Kevin Mathew <kevinam99@gmail.com>
Co-authored-by: Rim Rakhimov <rimrakhimov@gmail.com>
Co-authored-by: sirawt <31649128+MASDXI@users.noreply.github.com>
Co-authored-by: Maxim Filonov <53992153+sl1depengwyn@users.noreply.github.com>
Co-authored-by: NBMXyeu <121313170+xyeuu@users.noreply.github.com>
Co-authored-by: aagaev <alik@agaev.me>
  • Loading branch information
17 people committed Jun 22, 2024
1 parent 30d0bb5 commit 53f2b5d
Show file tree
Hide file tree
Showing 440 changed files with 27,111 additions and 6,653 deletions.
1 change: 1 addition & 0 deletions .dialyzer-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ lib/phoenix/router.ex:402
lib/explorer/smart_contract/reader.ex:435
lib/explorer/exchange_rates/source.ex:139
lib/explorer/exchange_rates/source.ex:142
lib/block_scout_web/cldr.ex:1
lib/block_scout_web/views/api/v2/transaction_view.ex:431
lib/block_scout_web/views/api/v2/transaction_view.ex:472
lib/explorer/chain/transaction.ex:171
23 changes: 0 additions & 23 deletions .github/actions/setup-repo-and-short-sha/action.yml

This file was deleted.

65 changes: 62 additions & 3 deletions .github/actions/setup-repo/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,69 @@ inputs:
docker-password:
description: 'Docker password'
required: true
docker-remote-multi-platform:
description: 'Docker remote multi-platform builder'
required: true
default: 'false'
docker-arm-host:
description: 'Docker remote arm builder'
required: false
docker-arm-host-key:
description: 'Docker remote arm builder ssh private key'
required: false
docker-image:
description: 'Docker image'
required: true
default: blockscout/blockscout
outputs:
docker-builder:
description: 'Docker builder'
value: ${{ steps.builder_local.outputs.name || steps.builder_multi.outputs.name }}
docker-tags:
description: 'Docker metadata tags'
value: ${{ steps.meta.outputs.tags }}
docker-labels:
description: 'Docker metadata labels'
value: ${{ steps.meta.outputs.labels }}
docker-platforms:
description: 'Docker build platforms'
value: ${{ steps.builder_local.outputs.platforms || steps.builder_multi.outputs.platforms }}
runs:
using: "composite"
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up SSH key
shell: bash
run: |
mkdir -p ~/.ssh
echo "${{ inputs.docker-arm-host-key }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: Find builder
if: ${{ inputs.docker-remote-multi-platform }}
shell: bash
run: echo "BUILDER_IP=$(./.github/scripts/select-builder.sh ${{ inputs.docker-arm-host }} ubuntu ~/.ssh/id_rsa)" >> $GITHUB_ENV
- name: Set up SSH
if: ${{ inputs.docker-remote-multi-platform }}
uses: MrSquaare/ssh-setup-action@523473d91581ccbf89565e12b40faba93f2708bd # v1.1.0
with:
host: ${{ env.BUILDER_IP }}
private-key: ${{ inputs.docker-arm-host-key }}

- name: Set up Docker Buildx
if: ${{ !inputs.docker-remote-multi-platform }}
uses: docker/setup-buildx-action@v3
id: builder_local
with:
platforms: linux/amd64

- name: Set up Multi-platform Docker Buildx
if: ${{ inputs.docker-remote-multi-platform }}
uses: docker/setup-buildx-action@v3
id: builder_multi
with:
platforms: linux/amd64
append: |
- endpoint: ssh://ubuntu@${{ env.BUILDER_IP }}
platforms: linux/arm64/v8
- name: Log in to Docker Hub
uses: docker/login-action@v3
Expand All @@ -26,4 +81,8 @@ runs:
id: meta
uses: docker/metadata-action@v5
with:
images: blockscout/blockscout
images: ${{ inputs.docker-image }}

- name: Add SHORT_SHA env property with commit short sha
shell: bash
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
44 changes: 44 additions & 0 deletions .github/scripts/select-builder.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash

# Check if a domain is provided as an argument
if [ -z "$1" ]; then
echo "Usage: $0 <domain>"
exit 1
fi

DOMAIN=$1
SSH_USER=$2
SSH_KEY=$3

# Resolve A records
IP_LIST=$(dig +short A $DOMAIN)
if [ -z "$IP_LIST" ]; then
echo "No IPs found for domain $DOMAIN"
exit 1
fi

MIN_LA=1000000
BEST_BUILDER=""

for IP in $IP_LIST; do
# Check if the host is reachable via SSH
ssh -o StrictHostKeychecking=no -o ConnectTimeout=5 -o BatchMode=yes -i $SSH_KEY $SSH_USER@$IP "exit" 2>/dev/null
if [ $? -eq 0 ]; then
# Get the load average
LA=$(ssh -o StrictHostKeychecking=no -i $SSH_KEY $SSH_USER@$IP "uptime | awk -F'load average:' '{ print \$2 }' | cut -d, -f1" 2>/dev/null)
if [ $? -eq 0 ]; then
# Compare and find the minimum load average
LA=$(echo $LA | xargs) # Trim whitespace
if (( $(echo "$LA < $MIN_LA" | bc -l) )); then
MIN_LA=$LA
BEST_BUILDER=$IP
fi
fi
fi
done

if [ -n "$BEST_BUILDER" ]; then
echo "$BEST_BUILDER" | tr -d '[:space:]'
else
echo "No reachable hosts found."
fi
9 changes: 5 additions & 4 deletions .github/workflows/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ on:
push:
branches:
- master
- production-arbitrum
- production-core
- production-eth-experimental
- production-eth-goerli
- production-eth-sepolia
- production-filecoin
- production-fuse
- production-optimism
- production-immutable
Expand All @@ -29,8 +29,6 @@ on:
types: [opened, synchronize, reopened, labeled]
branches:
- master
- production-optimism
- production-zksync

env:
MIX_ENV: test
Expand Down Expand Up @@ -583,6 +581,7 @@ jobs:
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Nethermind.Mox"
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
CHAIN_TYPE: ${{ matrix.chain-type != 'default' && matrix.chain-type || '' }}
WETH_TOKEN_TRANSFERS_FILTERING_ENABLED: "true"
test_nethermind_mox_indexer:
strategy:
fail-fast: false
Expand Down Expand Up @@ -649,6 +648,7 @@ jobs:
ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Nethermind.Mox"
ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox"
CHAIN_TYPE: ${{ matrix.chain-type != 'default' && matrix.chain-type || '' }}
WETH_TOKEN_TRANSFERS_FILTERING_ENABLED: "true"
test_nethermind_mox_block_scout_web:
strategy:
fail-fast: false
Expand Down Expand Up @@ -749,3 +749,4 @@ jobs:
ACCOUNT_REDIS_URL: "redis://localhost:6379"
SOURCIFY_INTEGRATION_ENABLED: "true"
CHAIN_TYPE: ${{ matrix.chain-type != 'default' && matrix.chain-type || '' }}
WETH_TOKEN_TRANSFERS_FILTERING_ENABLED: "true"
97 changes: 97 additions & 0 deletions .github/workflows/pre-release-arbitrum.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Pre-release for Arbitrum

on:
workflow_dispatch:
inputs:
number:
type: number
required: true

env:
OTP_VERSION: ${{ vars.OTP_VERSION }}
ELIXIR_VERSION: ${{ vars.ELIXIR_VERSION }}

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
env:
RELEASE_VERSION: ${{ vars.RELEASE_VERSION }}
steps:
- uses: actions/checkout@v4
- name: Setup repo
uses: ./.github/actions/setup-repo
id: setup
with:
docker-username: ${{ secrets.DOCKER_USERNAME }}
docker-password: ${{ secrets.DOCKER_PASSWORD }}
docker-remote-multi-platform: true
docker-arm-host: ${{ secrets.ARM_RUNNER_HOSTNAME }}
docker-arm-host-key: ${{ secrets.ARM_RUNNER_KEY }}

- name: Build and push Docker image for Arbitrum (indexer + API)
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile
push: true
tags: blockscout/blockscout-arbitrum:${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}
labels: ${{ steps.setup.outputs.docker-labels }}
platforms: |
linux/amd64
linux/arm64/v8
build-args: |
DISABLE_WEBAPP=false
API_V1_READ_METHODS_DISABLED=false
API_V1_WRITE_METHODS_DISABLED=false
CACHE_EXCHANGE_RATES_PERIOD=
CACHE_TOTAL_GAS_USAGE_COUNTER_ENABLED=
CACHE_ADDRESS_WITH_BALANCES_UPDATE_INTERVAL=
ADMIN_PANEL_ENABLED=false
BLOCKSCOUT_VERSION=v${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}
RELEASE_VERSION=${{ env.RELEASE_VERSION }}
CHAIN_TYPE=arbitrum
- name: Build and push Docker image for Arbitrum (indexer)
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile
push: true
tags: blockscout/blockscout-arbitrum:${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}-indexer
labels: ${{ steps.setup.outputs.docker-labels }}
platforms: |
linux/amd64
linux/arm64/v8
build-args: |
DISABLE_API=true
DISABLE_WEBAPP=true
CACHE_EXCHANGE_RATES_PERIOD=
CACHE_TOTAL_GAS_USAGE_COUNTER_ENABLED=
CACHE_ADDRESS_WITH_BALANCES_UPDATE_INTERVAL=
ADMIN_PANEL_ENABLED=false
BLOCKSCOUT_VERSION=v${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}
RELEASE_VERSION=${{ env.RELEASE_VERSION }}
CHAIN_TYPE=arbitrum
- name: Build and push Docker image for Arbitrum (API)
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile
push: true
tags: blockscout/blockscout-arbitrum:${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}-api
labels: ${{ steps.setup.outputs.docker-labels }}
platforms: |
linux/amd64
linux/arm64/v8
build-args: |
DISABLE_INDEXER=true
DISABLE_WEBAPP=true
CACHE_EXCHANGE_RATES_PERIOD=
CACHE_TOTAL_GAS_USAGE_COUNTER_ENABLED=
CACHE_ADDRESS_WITH_BALANCES_UPDATE_INTERVAL=
ADMIN_PANEL_ENABLED=false
BLOCKSCOUT_VERSION=v${{ env.RELEASE_VERSION }}-alpha.${{ inputs.number }}
RELEASE_VERSION=${{ env.RELEASE_VERSION }}
CHAIN_TYPE=arbitrum
Loading

0 comments on commit 53f2b5d

Please sign in to comment.