From a22d2b686b4a7ce67d64f9888cc90c9c280f0a88 Mon Sep 17 00:00:00 2001 From: Ayrat Badykov Date: Thu, 28 Nov 2019 17:52:23 +0300 Subject: [PATCH 01/31] remove duplicate indexes --- ...128124415_remove_duplicate_indexes_token_entities.exs | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs diff --git a/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs b/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs new file mode 100644 index 0000000000..35a19839d5 --- /dev/null +++ b/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs @@ -0,0 +1,9 @@ +defmodule Explorer.Repo.Migrations.RemoveDuplicateIndexesTokenEntities do + use Ecto.Migration + + def change do + drop(index(:address_token_balances, [:block_number])) + + drop(index(:token_instances, [:token_id])) + end +end From 9c2fddb5d3cd48e45874b08e42d6ba6a47f4685c Mon Sep 17 00:00:00 2001 From: Ayrat Badykov Date: Thu, 28 Nov 2019 17:55:54 +0300 Subject: [PATCH 02/31] add CHANGELOG entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 119599b845..01266e29a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- [#2897]( https://github.com/poanetwork/blockscout/pull/2897) - remove duplicate indexes + ### Chore From 26170d3d44d8bc6abd01f578aa1207d24c0828df Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 8 Jan 2020 13:52:25 +0300 Subject: [PATCH 03/31] utf8 copy tx input tooltip --- CHANGELOG.md | 1 + .../templates/transaction/overview.html.eex | 1 + apps/block_scout_web/priv/gettext/default.pot | 17 +++++++++-------- .../priv/gettext/en/LC_MESSAGES/default.po | 17 +++++++++-------- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..7209b4c034 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2938](https://github.com/poanetwork/blockscout/pull/2938) - utf8 copy tx input tooltip - [#2934](https://github.com/poanetwork/blockscout/pull/2934) - RSK release 1.2.0 breaking changes support - [#2933](https://github.com/poanetwork/blockscout/pull/2933) - Get rid of deadlock in the query to address_current_token_balance table - [#2932](https://github.com/poanetwork/blockscout/pull/2932) - fix duplicate websocket connection diff --git a/apps/block_scout_web/lib/block_scout_web/templates/transaction/overview.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/transaction/overview.html.eex index 68f6fe98b8..d2ed2c8339 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/transaction/overview.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/transaction/overview.html.eex @@ -144,6 +144,7 @@ data-clipboard-text="<%= @transaction.input %>" data-placement="top" data-toggle="tooltip" + title='<%= gettext("Copy Txn Input") %>' style="display: none;" > diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot index 27513a79b2..e49e104647 100644 --- a/apps/block_scout_web/priv/gettext/default.pot +++ b/apps/block_scout_web/priv/gettext/default.pot @@ -13,7 +13,7 @@ msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:193 +#: lib/block_scout_web/templates/transaction/overview.html.eex:194 msgid " Token Transfer" msgstr "" @@ -646,8 +646,8 @@ msgstr "" #: lib/block_scout_web/templates/layout/app.html.eex:32 #: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20 #: lib/block_scout_web/templates/transaction/_tile.html.eex:29 -#: lib/block_scout_web/templates/transaction/overview.html.eex:180 -#: lib/block_scout_web/templates/transaction/overview.html.eex:215 +#: lib/block_scout_web/templates/transaction/overview.html.eex:181 +#: lib/block_scout_web/templates/transaction/overview.html.eex:216 #: lib/block_scout_web/views/wei_helpers.ex:78 msgid "Ether" msgstr "" @@ -999,7 +999,7 @@ msgid "License ID" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:243 +#: lib/block_scout_web/templates/transaction/overview.html.eex:244 msgid "Limit" msgstr "" @@ -1538,7 +1538,7 @@ msgid "Use the search box to find a hosted network, or select from the list of a msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:237 +#: lib/block_scout_web/templates/transaction/overview.html.eex:238 msgid "Used" msgstr "" @@ -1568,8 +1568,8 @@ msgid "Validator Info" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:180 -#: lib/block_scout_web/templates/transaction/overview.html.eex:215 +#: lib/block_scout_web/templates/transaction/overview.html.eex:181 +#: lib/block_scout_web/templates/transaction/overview.html.eex:216 msgid "Value" msgstr "" @@ -1745,7 +1745,7 @@ msgid "Decimals" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:233 +#: lib/block_scout_web/templates/transaction/overview.html.eex:234 msgid "Gas" msgstr "" @@ -1793,6 +1793,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/transaction/overview.html.eex:134 +#: lib/block_scout_web/templates/transaction/overview.html.eex:147 msgid "Copy Txn Input" msgstr "" diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po index 27513a79b2..e49e104647 100644 --- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po @@ -13,7 +13,7 @@ msgstr[0] "" msgstr[1] "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:193 +#: lib/block_scout_web/templates/transaction/overview.html.eex:194 msgid " Token Transfer" msgstr "" @@ -646,8 +646,8 @@ msgstr "" #: lib/block_scout_web/templates/layout/app.html.eex:32 #: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20 #: lib/block_scout_web/templates/transaction/_tile.html.eex:29 -#: lib/block_scout_web/templates/transaction/overview.html.eex:180 -#: lib/block_scout_web/templates/transaction/overview.html.eex:215 +#: lib/block_scout_web/templates/transaction/overview.html.eex:181 +#: lib/block_scout_web/templates/transaction/overview.html.eex:216 #: lib/block_scout_web/views/wei_helpers.ex:78 msgid "Ether" msgstr "" @@ -999,7 +999,7 @@ msgid "License ID" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:243 +#: lib/block_scout_web/templates/transaction/overview.html.eex:244 msgid "Limit" msgstr "" @@ -1538,7 +1538,7 @@ msgid "Use the search box to find a hosted network, or select from the list of a msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:237 +#: lib/block_scout_web/templates/transaction/overview.html.eex:238 msgid "Used" msgstr "" @@ -1568,8 +1568,8 @@ msgid "Validator Info" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:180 -#: lib/block_scout_web/templates/transaction/overview.html.eex:215 +#: lib/block_scout_web/templates/transaction/overview.html.eex:181 +#: lib/block_scout_web/templates/transaction/overview.html.eex:216 msgid "Value" msgstr "" @@ -1745,7 +1745,7 @@ msgid "Decimals" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:233 +#: lib/block_scout_web/templates/transaction/overview.html.eex:234 msgid "Gas" msgstr "" @@ -1793,6 +1793,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/transaction/overview.html.eex:134 +#: lib/block_scout_web/templates/transaction/overview.html.eex:147 msgid "Copy Txn Input" msgstr "" From eaec2df421f885cb6487c1f7dd577ef844274b28 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 8 Jan 2020 17:37:51 +0300 Subject: [PATCH 04/31] Actualize additional_internal_transaction_constraints script --- CHANGELOG.md | 1 + ...ional_internal_transaction_constraints.sql | 76 ++++++++++--------- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..0eb587ba94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2940](https://github.com/poanetwork/blockscout/pull/2940) - Actualize additional_internal_transaction_constraints script - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests diff --git a/apps/explorer/priv/repo/migrations/scripts/20181108205650_additional_internal_transaction_constraints.sql b/apps/explorer/priv/repo/migrations/scripts/20181108205650_additional_internal_transaction_constraints.sql index 69a6fa24dd..2b46109775 100644 --- a/apps/explorer/priv/repo/migrations/scripts/20181108205650_additional_internal_transaction_constraints.sql +++ b/apps/explorer/priv/repo/migrations/scripts/20181108205650_additional_internal_transaction_constraints.sql @@ -1,69 +1,77 @@ +-- UPDATE (2020-08-01): use pending_block_operations table DO $$ DECLARE row_count integer := 1; - batch_size integer := 50000; -- HOW MANY ITEMS WILL BE UPDATED AT TIME + batch_size integer := 500; -- HOW MANY ITEMS WILL BE UPDATED AT TIME iterator integer := batch_size; max_row_number integer; next_iterator integer; - updated_transaction_count integer; + updated_blocks_count integer; deleted_internal_transaction_count integer; deleted_row_count integer; BEGIN - DROP TABLE IF EXISTS transactions_with_deprecated_internal_transactions; + DROP TABLE IF EXISTS blocks_with_deprecated_internal_transactions; -- CREATES TEMP TABLE TO STORE DATA TO BE UPDATED - CREATE TEMP TABLE transactions_with_deprecated_internal_transactions( - hash bytea NOT NULL, + CREATE TEMP TABLE blocks_with_deprecated_internal_transactions( + block_number integer NOT NULL, row_number integer ); - INSERT INTO transactions_with_deprecated_internal_transactions - SELECT DISTINCT ON (transaction_hash) - transaction_hash, + INSERT INTO blocks_with_deprecated_internal_transactions + SELECT DISTINCT ON (a.block_number) + a.block_number, ROW_NUMBER () OVER () - FROM internal_transactions - WHERE - -- call_has_call_type CONSTRAINT - (type = 'call' AND call_type IS NULL) OR - -- call_has_input CONSTRAINT - (type = 'call' AND input IS NULL) OR - -- create_has_init CONSTRAINT - (type = 'create' AND init is NULL) - ORDER BY transaction_hash DESC; - - max_row_number := (SELECT MAX(row_number) FROM transactions_with_deprecated_internal_transactions); - RAISE NOTICE '% transactions to be updated', max_row_number + 1; + FROM ( + SELECT DISTINCT i.block_number, i.transaction_index + FROM internal_transactions i + WHERE + i.block_number IS NOT NULL + AND + -- call_has_call_type CONSTRAINT + ((i.type = 'call' AND i.call_type IS NULL) OR + -- call_has_input CONSTRAINT + (i.type = 'call' AND i.input IS NULL) OR + -- create_has_init CONSTRAINT + (i.type = 'create' AND i.init is NULL)) + ORDER BY i.block_number DESC, i.transaction_index + ) a; + + max_row_number := (SELECT MAX(row_number) FROM blocks_with_deprecated_internal_transactions); + RAISE NOTICE '% blocks to be updated', max_row_number + 1; -- ITERATES THROUGH THE ITEMS UNTIL THE TEMP TABLE IS EMPTY WHILE iterator <= max_row_number LOOP next_iterator := iterator + batch_size; - RAISE NOTICE '-> transactions with deprecated internal transactions % to % to be updated', iterator, next_iterator - 1; + RAISE NOTICE '-> blocks with deprecated internal transactions % to % to be updated', iterator, next_iterator - 1; - UPDATE transactions - SET internal_transactions_indexed_at = NULL, - error = NULL - FROM transactions_with_deprecated_internal_transactions - WHERE transactions.hash = transactions_with_deprecated_internal_transactions.hash AND - transactions_with_deprecated_internal_transactions.row_number < next_iterator; + INSERT INTO pending_block_operations (block_hash, inserted_at, updated_at, fetch_internal_transactions) + SELECT b.hash, NOW(), NOW(), true + FROM blocks_with_deprecated_internal_transactions bd, blocks b + WHERE bd.block_number = b.number + AND bd.row_number < next_iterator + AND b.consensus = true + ON CONFLICT (block_hash) + DO NOTHING; - GET DIAGNOSTICS updated_transaction_count = ROW_COUNT; + GET DIAGNOSTICS updated_blocks_count = ROW_COUNT; - RAISE NOTICE '-> % transactions updated to refetch internal transactions', updated_transaction_count; + RAISE NOTICE '-> % blocks updated to refetch internal transactions', updated_blocks_count; DELETE FROM internal_transactions - USING transactions_with_deprecated_internal_transactions - WHERE internal_transactions.transaction_hash = transactions_with_deprecated_internal_transactions.hash AND - transactions_with_deprecated_internal_transactions.row_number < next_iterator; + USING blocks_with_deprecated_internal_transactions + WHERE internal_transactions.block_number = blocks_with_deprecated_internal_transactions.block_number AND + blocks_with_deprecated_internal_transactions.row_number < next_iterator; GET DIAGNOSTICS deleted_internal_transaction_count = ROW_COUNT; RAISE NOTICE '-> % internal transactions deleted', deleted_internal_transaction_count; - DELETE FROM transactions_with_deprecated_internal_transactions + DELETE FROM blocks_with_deprecated_internal_transactions WHERE row_number < next_iterator; GET DIAGNOSTICS deleted_row_count = ROW_COUNT; - ASSERT updated_transaction_count = deleted_row_count; + ASSERT updated_blocks_count = deleted_row_count; -- COMMITS THE BATCH UPDATES CHECKPOINT; From c9e06657d2346bd35e6276ac662647259321c66d Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 8 Jan 2020 17:56:14 +0300 Subject: [PATCH 05/31] Update CHANGELOG entry --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eb587ba94..4924554fb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## Current ### Features -- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach +- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2940](https://github.com/poanetwork/blockscout/pull/2940) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach - [#2926](https://github.com/poanetwork/blockscout/pull/2926) - API endpoint: sum balances except burnt address - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly @@ -23,7 +23,6 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore -- [#2940](https://github.com/poanetwork/blockscout/pull/2940) - Actualize additional_internal_transaction_constraints script - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests From 7453495b6705a40a355ec52632b74795f2978fa0 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 10 Jan 2020 13:29:17 +0300 Subject: [PATCH 06/31] Fix npm deps --- CHANGELOG.md | 1 + apps/block_scout_web/assets/package-lock.json | 52 +++++++++---------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..a31c105489 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2946](https://github.com/poanetwork/blockscout/pull/2946) - Fix vulnerable NPM deps - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests diff --git a/apps/block_scout_web/assets/package-lock.json b/apps/block_scout_web/assets/package-lock.json index b24d278bae..5cdcd178fd 100644 --- a/apps/block_scout_web/assets/package-lock.json +++ b/apps/block_scout_web/assets/package-lock.json @@ -5883,9 +5883,9 @@ "dev": true }, "handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.6.0.tgz", + "integrity": "sha512-i1ZUP7Qp2JdkMaFon2a+b0m5geE8Z4ZTLaGkgrObkEd+OkUKyRbRWw4KxuFCoHfdETSY1yf9/574eVoNSiK7pw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -11466,9 +11466,9 @@ "dev": true }, "serialize-javascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz", - "integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", "dev": true }, "set-blocking": { @@ -12672,9 +12672,9 @@ "dev": true }, "uglify-js": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", - "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.4.tgz", + "integrity": "sha512-tinYWE8X1QfCHxS1lBS8yiDekyhSXOO6R66yNOCdUJeojxxw+PX2BHAz/BWyW7PQ7pkiWVxJfIEbiDxyLWvUGg==", "dev": true, "optional": true, "requires": { @@ -13312,12 +13312,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13325,20 +13319,31 @@ "dev": true }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" + }, + "dependencies": { + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + } } } } @@ -13586,15 +13591,6 @@ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", From 99710767c9190b898b63831e57917bec49bcfeff Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 10 Jan 2020 14:13:13 +0300 Subject: [PATCH 07/31] improve migrations --- ...20191128124415_remove_duplicate_indexes_token_entities.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs b/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs index 35a19839d5..9a9415ada4 100644 --- a/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs +++ b/apps/explorer/priv/repo/migrations/20191128124415_remove_duplicate_indexes_token_entities.exs @@ -2,8 +2,8 @@ defmodule Explorer.Repo.Migrations.RemoveDuplicateIndexesTokenEntities do use Ecto.Migration def change do - drop(index(:address_token_balances, [:block_number])) + drop_if_exists(index(:address_token_balances, [:block_number], name: "address_token_balances_block_number_index")) - drop(index(:token_instances, [:token_id])) + drop_if_exists(index(:token_instances, [:token_id], name: "token_instances_token_id_index")) end end From 4cb31f20737ab20b08b0f4520433dcffcd1de527 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 10 Jan 2020 14:21:06 +0300 Subject: [PATCH 08/31] Upgrade Circle CI postgres Docker image --- .circleci/config.yml | 8 ++++---- CHANGELOG.md | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 50b28b631b..f93c373f73 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -345,7 +345,7 @@ jobs: # PGUSER: postgres # ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Geth.HTTPWebSocket" # ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Geth" - # - image: circleci/postgres:10.3-alpine + # - image: circleci/postgres:10.10-alpine # environment: # # Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database # POSTGRES_DB: explorer_test @@ -399,7 +399,7 @@ jobs: # PGUSER: postgres # ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Geth.Mox" # ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox" - # - image: circleci/postgres:10.3-alpine + # - image: circleci/postgres:10.10-alpine # environment: # # Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database # POSTGRES_DB: explorer_test @@ -453,7 +453,7 @@ jobs: # PGUSER: postgres # ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.HTTPWebSocket" # ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Parity" - # - image: circleci/postgres:10.3-alpine + # - image: circleci/postgres:10.10-alpine # environment: # # Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database # POSTGRES_DB: explorer_test @@ -507,7 +507,7 @@ jobs: PGUSER: postgres ETHEREUM_JSONRPC_CASE: "EthereumJSONRPC.Case.Parity.Mox" ETHEREUM_JSONRPC_WEB_SOCKET_CASE: "EthereumJSONRPC.WebSocket.Case.Mox" - - image: circleci/postgres:10.3-alpine + - image: circleci/postgres:10.10-alpine environment: # Match apps/explorer/config/test.exs config :explorer, Explorer.Repo, database POSTGRES_DB: explorer_test diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..76f6358dac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2947](https://github.com/poanetwork/blockscout/pull/2947) - Upgrade Circle CI postgres Docker image - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests From 04bce6a0f6247e7e959b199bdf3e7c65e2b1f286 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Thu, 9 Jan 2020 18:21:16 +0300 Subject: [PATCH 09/31] Actualize Docker setup --- CHANGELOG.md | 1 + docker/Dockerfile | 6 +- docker/Makefile | 172 ++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 163 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..f854ed3c11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2942](https://github.com/poanetwork/blockscout/pull/2942) - Actualize Docker setup - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests diff --git a/docker/Dockerfile b/docker/Dockerfile index f73c4b34f0..65a46ccced 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM bitwalker/alpine-elixir-phoenix:1.9.0 +FROM bitwalker/alpine-elixir-phoenix:1.9.1 RUN apk --no-cache --update add alpine-sdk gmp-dev automake libtool inotify-tools autoconf python @@ -15,7 +15,7 @@ ADD apps/explorer/mix.exs ./apps/explorer/ ADD apps/ethereum_jsonrpc/mix.exs ./apps/ethereum_jsonrpc/ ADD apps/indexer/mix.exs ./apps/indexer/ -RUN mix do deps.get, deps.compile +RUN mix do deps.get, local.rebar --force, deps.compile ADD . . @@ -37,6 +37,8 @@ RUN cd apps/explorer/ && \ # RUN mix do ecto.drop --force, ecto.create, ecto.migrate +RUN mix phx.digest + # USER default # CMD ["mix", "phx.server"] diff --git a/docker/Makefile b/docker/Makefile index 6005fbdaeb..7b13f9e860 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -3,7 +3,7 @@ HOST = host.docker.internal DOCKER_IMAGE = blockscout_prod BS_CONTAINER_NAME = blockscout PG_CONTAINER_NAME = postgres -PG_CONTAINER_IMAGE = postgres:10.6 +PG_CONTAINER_IMAGE = postgres:10.10 THIS_FILE = $(lastword $(MAKEFILE_LIST)) ifeq ($(SYSTEM), Linux) @@ -16,35 +16,179 @@ BLOCKSCOUT_CONTAINNER_PARAMS = -e 'MIX_ENV=prod' \ ifeq ($(SYSTEM), Linux) BLOCKSCOUT_CONTAINNER_PARAMS += --network=host endif +ifdef NETWORK + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK=$(NETWORK)' +endif +ifdef SUBNETWORK + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SUBNETWORK=$(SUBNETWORK)' +endif +ifdef NETWORK_ICON + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK_ICON=$(NETWORK_ICON)' +endif +ifdef LOGO + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'LOGO=$(LOGO)' +endif +ifdef LOGO_FOOTER + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'LOGO_FOOTER=$(LOGO_FOOTER)' +endif ifdef ETHEREUM_JSONRPC_VARIANT BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_VARIANT=$(ETHEREUM_JSONRPC_VARIANT)' endif ifdef ETHEREUM_JSONRPC_HTTP_URL BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_HTTP_URL=$(ETHEREUM_JSONRPC_HTTP_URL)' endif +ifdef ETHEREUM_JSONRPC_TRACE_URL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_TRACE_URL=$(ETHEREUM_JSONRPC_TRACE_URL)' +endif ifdef ETHEREUM_JSONRPC_WS_URL BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_WS_URL=$(ETHEREUM_JSONRPC_WS_URL)' endif -ifdef ETHEREUM_JSONRPC_TRACE_URL - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_TRACE_URL=$(ETHEREUM_JSONRPC_TRACE_URL)' +ifdef ETHEREUM_JSONRPC_JSON_RPC_TRANSPORT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ETHEREUM_JSONRPC_JSON_RPC_TRANSPORT=$(ETHEREUM_JSONRPC_JSON_RPC_TRANSPORT)' +endif +ifdef IPC_PATH + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'IPC_PATH=$(IPC_PATH)' +endif +ifdef NETWORK_PATH + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK_PATH=$(NETWORK_PATH)' +endif +ifdef CHECK_ORIGIN + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'CHECK_ORIGIN=$(CHECK_ORIGIN)' endif ifdef COIN BLOCKSCOUT_CONTAINNER_PARAMS += -e 'COIN=$(COIN)' endif -ifdef LOGO - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'LOGO=$(LOGO)' +ifdef METADATA_CONTRACT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'METADATA_CONTRACT=$(METADATA_CONTRACT)' endif -ifdef NETWORK - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK=$(NETWORK)' +ifdef VALIDATORS_CONTRACT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'VALIDATORS_CONTRACT=$(VALIDATORS_CONTRACT)' endif -ifdef SUBNETWORK - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SUBNETWORK=$(SUBNETWORK)' +ifdef SUPPLY_MODULE + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SUPPLY_MODULE=$(SUPPLY_MODULE)' endif -ifdef NETWORK_ICON - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK_ICON=$(NETWORK_ICON)' +ifdef SOURCE_MODULE + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SOURCE_MODULE=$(SOURCE_MODULE)' endif -ifdef NETWORK_PATH - BLOCKSCOUT_CONTAINNER_PARAMS += -e 'NETWORK_PATH=$(NETWORK_PATH)' +ifdef POOL_SIZE + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'POOL_SIZE=$(POOL_SIZE)' +endif +ifdef ECTO_USE_SSL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ECTO_USE_SSL=$(ECTO_USE_SSL)' +endif +ifdef DATADOG_HOST + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DATADOG_HOST=$(DATADOG_HOST)' +endif +ifdef DATADOG_PORT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DATADOG_PORT=$(DATADOG_PORT)' +endif +ifdef SPANDEX_BATCH_SIZE + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SPANDEX_BATCH_SIZE=$(SPANDEX_BATCH_SIZE)' +endif +ifdef SPANDEX_SYNC_THRESHOLD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SPANDEX_SYNC_THRESHOLD=$(SPANDEX_SYNC_THRESHOLD)' +endif +ifdef HEART_BEAT_TIMEOUT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'HEART_BEAT_TIMEOUT=$(HEART_BEAT_TIMEOUT)' +endif +ifdef HEART_COMMAND + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'HEART_COMMAND=$(HEART_COMMAND)' +endif +ifdef BLOCKSCOUT_VERSION + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCKSCOUT_VERSION=$(BLOCKSCOUT_VERSION)' +endif +ifdef RELEASE_LINK + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'RELEASE_LINK=$(RELEASE_LINK)' +endif +ifdef ELIXIR_VERSION + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ELIXIR_VERSION=$(ELIXIR_VERSION)' +endif +ifdef BLOCK_TRANSFORMER + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCK_TRANSFORMER=$(BLOCK_TRANSFORMER)' +endif +ifdef GRAPHIQL_TRANSACTION + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'GRAPHIQL_TRANSACTION=$(GRAPHIQL_TRANSACTION)' +endif +ifdef FIRST_BLOCK + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'FIRST_BLOCK=$(FIRST_BLOCK)' +endif +ifdef LAST_BLOCK + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'LAST_BLOCK=$(LAST_BLOCK)' +endif +ifdef TXS_COUNT_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'TXS_COUNT_CACHE_PERIOD=$(TXS_COUNT_CACHE_PERIOD)' +endif +ifdef ADDRESS_WITH_BALANCES_UPDATE_INTERVAL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ADDRESS_WITH_BALANCES_UPDATE_INTERVAL=$(ADDRESS_WITH_BALANCES_UPDATE_INTERVAL)' +endif +ifdef LINK_TO_OTHER_EXPLORERS + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'LINK_TO_OTHER_EXPLORERS=$(LINK_TO_OTHER_EXPLORERS)' +endif +ifdef COINMARKETCAP_PAGES + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'COINMARKETCAP_PAGES=$(COINMARKETCAP_PAGES)' +endif +ifdef SUPPORTED_CHAINS + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SUPPORTED_CHAINS=$(SUPPORTED_CHAINS)' +endif +ifdef BLOCK_COUNT_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCK_COUNT_CACHE_PERIOD=$(BLOCK_COUNT_CACHE_PERIOD)' +endif +ifdef ADDRESS_SUM_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ADDRESS_SUM_CACHE_PERIOD=$(ADDRESS_SUM_CACHE_PERIOD)' +endif +ifdef ADDRESS_COUNT_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ADDRESS_COUNT_CACHE_PERIOD=$(ADDRESS_COUNT_CACHE_PERIOD)' +endif +ifdef ALLOWED_EVM_VERSIONS + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ALLOWED_EVM_VERSIONS=$(ALLOWED_EVM_VERSIONS)' +endif +ifdef UNCLES_IN_AVERAGE_BLOCK_TIME + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'UNCLES_IN_AVERAGE_BLOCK_TIME=$(UNCLES_IN_AVERAGE_BLOCK_TIME)' +endif +ifdef AVERAGE_BLOCK_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'AVERAGE_BLOCK_CACHE_PERIOD=$(AVERAGE_BLOCK_CACHE_PERIOD)' +endif +ifdef MARKET_HISTORY_CACHE_PERIOD + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'MARKET_HISTORY_CACHE_PERIOD=$(MARKET_HISTORY_CACHE_PERIOD)' +endif +ifdef DISABLE_WEBAPP + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DISABLE_WEBAPP=$(DISABLE_WEBAPP)' +endif +ifdef DISABLE_READ_API + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DISABLE_READ_API=$(DISABLE_READ_API)' +endif +ifdef DISABLE_WRITE_API + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DISABLE_WRITE_API=$(DISABLE_WRITE_API)' +endif +ifdef DISABLE_INDEXER + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DISABLE_INDEXER=$(DISABLE_INDEXER)' +endif +ifdef WEBAPP_URL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'WEBAPP_URL=$(WEBAPP_URL)' +endif +ifdef API_URL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'API_URL=$(API_URL)' +endif +ifdef CHAIN_SPEC_PATH + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'CHAIN_SPEC_PATH=$(CHAIN_SPEC_PATH)' +endif +ifdef COIN_GECKO_ID + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'COIN_GECKO_ID=$(COIN_GECKO_ID)' +endif +ifdef EMISSION_FORMAT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'EMISSION_FORMAT=$(EMISSION_FORMAT)' +endif +ifdef REWARDS_CONTRACT_ADDRESS + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'REWARDS_CONTRACT_ADDRESS=$(REWARDS_CONTRACT_ADDRESS)' +endif +ifdef SHOW_ADDRESS_MARKETCAP_PERCENTAGE + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SHOW_ADDRESS_MARKETCAP_PERCENTAGE=$(SHOW_ADDRESS_MARKETCAP_PERCENTAGE)' +endif +ifdef BLOCKSCOUT_PROTOCOL + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCKSCOUT_PROTOCOL=$(BLOCKSCOUT_PROTOCOL)' +endif +ifdef DECOMPILED_SMART_CONTRACT_TOKEN + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DECOMPILED_SMART_CONTRACT_TOKEN=$(DECOMPILED_SMART_CONTRACT_TOKEN)' endif HAS_BLOCKSCOUT_IMAGE := $(shell docker images | grep ${DOCKER_IMAGE}) @@ -61,7 +205,7 @@ migrate: build postgres @echo "==> Running migrations" @docker run --rm \ $(BLOCKSCOUT_CONTAINNER_PARAMS) \ - $(DOCKER_IMAGE) /bin/sh -c "echo $$MIX_ENV && mix do ecto.drop --force, ecto.create, ecto.migrate" + $(DOCKER_IMAGE) /bin/sh -c "echo $$MIX_ENV && mix do ecto.create, ecto.migrate" PG_EXIST := $(shell docker ps -a --filter name=${PG_CONTAINER_NAME} | grep ${PG_CONTAINER_NAME}) From e1b8ff59c27efbb0fc95b661ace2fe8be751e3a6 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Tue, 14 Jan 2020 14:02:42 +0300 Subject: [PATCH 10/31] Prevent filling pending_block_operations table for RSK variant --- CHANGELOG.md | 2 +- .../explorer/chain/import/runner/blocks.ex | 42 ++++++++++--------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13d14555e..f90788beaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## Current ### Features -- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach +- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2949](https://github.com/poanetwork/blockscout/pull/2949) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach - [#2926](https://github.com/poanetwork/blockscout/pull/2926) - API endpoint: sum balances except burnt address - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly diff --git a/apps/explorer/lib/explorer/chain/import/runner/blocks.ex b/apps/explorer/lib/explorer/chain/import/runner/blocks.ex index 3190c1abae..ddce8d0200 100644 --- a/apps/explorer/lib/explorer/chain/import/runner/blocks.ex +++ b/apps/explorer/lib/explorer/chain/import/runner/blocks.ex @@ -310,25 +310,29 @@ defmodule Explorer.Chain.Import.Runner.Blocks do end defp new_pending_operations(repo, nonconsensus_hashes, hashes, %{timeout: timeout, timestamps: timestamps}) do - sorted_pending_ops = - nonconsensus_hashes - |> MapSet.new() - |> MapSet.union(MapSet.new(hashes)) - |> Enum.sort() - |> Enum.map(fn hash -> - %{block_hash: hash, fetch_internal_transactions: true} - end) - - Import.insert_changes_list( - repo, - sorted_pending_ops, - conflict_target: :block_hash, - on_conflict: PendingBlockOperation.default_on_conflict(), - for: PendingBlockOperation, - returning: true, - timeout: timeout, - timestamps: timestamps - ) + if Application.get_env(:explorer, :json_rpc_named_arguments)[:variant] == EthereumJSONRPC.RSK do + {:ok, []} + else + sorted_pending_ops = + nonconsensus_hashes + |> MapSet.new() + |> MapSet.union(MapSet.new(hashes)) + |> Enum.sort() + |> Enum.map(fn hash -> + %{block_hash: hash, fetch_internal_transactions: true} + end) + + Import.insert_changes_list( + repo, + sorted_pending_ops, + conflict_target: :block_hash, + on_conflict: PendingBlockOperation.default_on_conflict(), + for: PendingBlockOperation, + returning: true, + timeout: timeout, + timestamps: timestamps + ) + end end defp delete_address_token_balances(_, [], _), do: {:ok, []} From bd589433fc517f3d1bf5dc5b50f7f12a2a35eb9e Mon Sep 17 00:00:00 2001 From: Max Alekseenko Date: Thu, 16 Jan 2020 18:50:18 +0300 Subject: [PATCH 11/31] move socket path to env --- apps/block_scout_web/assets/js/socket.js | 2 +- apps/block_scout_web/assets/webpack.config.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/block_scout_web/assets/js/socket.js b/apps/block_scout_web/assets/js/socket.js index 3490157a8b..ef0846220b 100644 --- a/apps/block_scout_web/assets/js/socket.js +++ b/apps/block_scout_web/assets/js/socket.js @@ -1,7 +1,7 @@ import { Socket } from 'phoenix' import { locale } from './locale' -const socket = new Socket('/socket', { params: { locale: locale } }) +const socket = new Socket(process.env.SOCKET_ROOT + '/socket', { params: { locale: locale } }) socket.connect() export default socket diff --git a/apps/block_scout_web/assets/webpack.config.js b/apps/block_scout_web/assets/webpack.config.js index 07452b55c8..76abc70bee 100644 --- a/apps/block_scout_web/assets/webpack.config.js +++ b/apps/block_scout_web/assets/webpack.config.js @@ -5,6 +5,7 @@ const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin') const { ContextReplacementPlugin } = require('webpack') const glob = require('glob') +const webpack = require('webpack') function transpileViewScript(file) { return { @@ -136,7 +137,10 @@ const appJs = filename: '../css/[name].css' }), new CopyWebpackPlugin([{ from: 'static/', to: '../' }]), - new ContextReplacementPlugin(/moment[\/\\]locale$/, /en/) + new ContextReplacementPlugin(/moment[\/\\]locale$/, /en/), + new webpack.DefinePlugin({ + 'process.env.SOCKET_ROOT': JSON.stringify(process.env.SOCKET_ROOT || '') + }) ] } From 2a2789bbf678350b16eef08bf420060df99bd04f Mon Sep 17 00:00:00 2001 From: Max Alekseenko Date: Thu, 16 Jan 2020 19:00:43 +0300 Subject: [PATCH 12/31] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f90788beaf..941303f78b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2955](https://github.com/poanetwork/blockscout/pull/2955) - Move socket path to env - [#2934](https://github.com/poanetwork/blockscout/pull/2934) - RSK release 1.2.0 breaking changes support - [#2933](https://github.com/poanetwork/blockscout/pull/2933) - Get rid of deadlock in the query to address_current_token_balance table - [#2932](https://github.com/poanetwork/blockscout/pull/2932) - fix duplicate websocket connection From 253e43914d7a29d6e5a9d434b9f6889350f4e4c3 Mon Sep 17 00:00:00 2001 From: Max Alekseenko Date: Thu, 16 Jan 2020 19:10:00 +0300 Subject: [PATCH 13/31] fix tests --- apps/block_scout_web/assets/js/socket.js | 2 +- apps/block_scout_web/assets/webpack.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/block_scout_web/assets/js/socket.js b/apps/block_scout_web/assets/js/socket.js index ef0846220b..416052fa20 100644 --- a/apps/block_scout_web/assets/js/socket.js +++ b/apps/block_scout_web/assets/js/socket.js @@ -1,7 +1,7 @@ import { Socket } from 'phoenix' import { locale } from './locale' -const socket = new Socket(process.env.SOCKET_ROOT + '/socket', { params: { locale: locale } }) +const socket = new Socket((process.env.SOCKET_ROOT || '') + '/socket', { params: { locale: locale } }) socket.connect() export default socket diff --git a/apps/block_scout_web/assets/webpack.config.js b/apps/block_scout_web/assets/webpack.config.js index 76abc70bee..1cf3ac2b62 100644 --- a/apps/block_scout_web/assets/webpack.config.js +++ b/apps/block_scout_web/assets/webpack.config.js @@ -139,7 +139,7 @@ const appJs = new CopyWebpackPlugin([{ from: 'static/', to: '../' }]), new ContextReplacementPlugin(/moment[\/\\]locale$/, /en/), new webpack.DefinePlugin({ - 'process.env.SOCKET_ROOT': JSON.stringify(process.env.SOCKET_ROOT || '') + 'process.env.SOCKET_ROOT': JSON.stringify(process.env.SOCKET_ROOT) }) ] } From cfa6fa70b6c93ab6006f63092cdeadf3b714fd75 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Thu, 16 Jan 2020 15:09:04 +0300 Subject: [PATCH 14/31] Upgrade absinthe and ecto --- CHANGELOG.md | 1 + apps/block_scout_web/mix.exs | 10 ++++----- apps/explorer/lib/explorer/admin/role.ex | 2 +- .../lib/explorer/chain/block/range.ex | 2 +- .../chain/block/reward/address_type.ex | 2 +- apps/explorer/lib/explorer/chain/data.ex | 2 +- .../lib/explorer/chain/hash/address.ex | 2 +- apps/explorer/lib/explorer/chain/hash/full.ex | 2 +- .../explorer/lib/explorer/chain/hash/nonce.ex | 2 +- .../chain/import/runner/staking_pools.ex | 6 ++--- .../chain/internal_transaction/call_type.ex | 2 +- .../chain/internal_transaction/type.ex | 2 +- .../lib/explorer/chain/method_identifier.ex | 2 +- .../lib/explorer/chain/transaction/status.ex | 2 +- apps/explorer/lib/explorer/chain/wei.ex | 2 +- apps/explorer/mix.exs | 6 ++--- mix.lock | 22 +++++++++---------- 17 files changed, 35 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f90788beaf..519b6749dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2954](https://github.com/poanetwork/blockscout/pull/2954) - Upgrade absinthe and ecto deps - [#2896](https://github.com/poanetwork/blockscout/pull/2896) - Disable Parity websockets tests diff --git a/apps/block_scout_web/mix.exs b/apps/block_scout_web/mix.exs index 029819a202..6a53ffd4e7 100644 --- a/apps/block_scout_web/mix.exs +++ b/apps/block_scout_web/mix.exs @@ -60,13 +60,13 @@ defmodule BlockScoutWeb.Mixfile do defp deps do [ # GraphQL toolkit - {:absinthe, "~> 1.4"}, + {:absinthe, "~> 1.5.0-rc.2"}, # Integrates Absinthe subscriptions with Phoenix - {:absinthe_phoenix, git: "https://github.com/ayrat555/absinthe_phoenix.git", branch: "ab-update-plug"}, + {:absinthe_phoenix, "~> 1.5.0-rc.0"}, # Plug support for Absinthe - {:absinthe_plug, git: "https://github.com/ayrat555/absinthe_plug.git", branch: "ab-enable-default-query"}, + {:absinthe_plug, "~> 1.5.0-rc.1"}, # Absinthe support for the Relay framework - {:absinthe_relay, "~> 1.4"}, + {:absinthe_relay, "~> 1.5.0-rc.0"}, {:bypass, "~> 1.0", only: :test}, # To add (CORS)(https://www.w3.org/TR/cors/) {:cors_plug, "~> 2.0"}, @@ -76,7 +76,7 @@ defmodule BlockScoutWeb.Mixfile do {:dialyxir, "~> 0.5", only: [:dev, :test], runtime: false}, # Need until https://github.com/absinthe-graphql/absinthe_relay/pull/125 is released, then can be removed # The current `absinthe_relay` is compatible though as shown from that PR - {:ecto, "~> 3.0", override: true}, + {:ecto, "~> 3.3", override: true}, {:ex_cldr, "~> 2.7"}, {:ex_cldr_numbers, "~> 2.6"}, {:ex_cldr_units, "~> 2.5"}, diff --git a/apps/explorer/lib/explorer/admin/role.ex b/apps/explorer/lib/explorer/admin/role.ex index 1fe753d400..ef31ed957c 100644 --- a/apps/explorer/lib/explorer/admin/role.ex +++ b/apps/explorer/lib/explorer/admin/role.ex @@ -3,7 +3,7 @@ defmodule Explorer.Admin.Administrator.Role do Supported roles for an administrator. """ - @behaviour Ecto.Type + use Ecto.Type @typedoc """ Supported role atoms for an administrator. diff --git a/apps/explorer/lib/explorer/chain/block/range.ex b/apps/explorer/lib/explorer/chain/block/range.ex index c60cd2039d..354ccd6d42 100644 --- a/apps/explorer/lib/explorer/chain/block/range.ex +++ b/apps/explorer/lib/explorer/chain/block/range.ex @@ -19,7 +19,7 @@ defmodule Explorer.Chain.Block.Range do to: integer() | :infinity } - @behaviour Ecto.Type + use Ecto.Type @doc """ The underlying Postgres type, `int8range`. diff --git a/apps/explorer/lib/explorer/chain/block/reward/address_type.ex b/apps/explorer/lib/explorer/chain/block/reward/address_type.ex index aac552a16e..9e0fe2ac52 100644 --- a/apps/explorer/lib/explorer/chain/block/reward/address_type.ex +++ b/apps/explorer/lib/explorer/chain/block/reward/address_type.ex @@ -3,7 +3,7 @@ defmodule Explorer.Chain.Block.Reward.AddressType do Block reward address types """ - @behaviour Ecto.Type + use Ecto.Type @typedoc """ * `:emission_funds` diff --git a/apps/explorer/lib/explorer/chain/data.ex b/apps/explorer/lib/explorer/chain/data.ex index a3bec019af..ed07de1249 100644 --- a/apps/explorer/lib/explorer/chain/data.ex +++ b/apps/explorer/lib/explorer/chain/data.ex @@ -9,7 +9,7 @@ defmodule Explorer.Chain.Data do alias Explorer.Chain.Data alias Poison.Encoder.BitString - @behaviour Ecto.Type + use Ecto.Type @typedoc """ A variable-byte-length binary, wrapped in a struct, so that it can use protocols. diff --git a/apps/explorer/lib/explorer/chain/hash/address.ex b/apps/explorer/lib/explorer/chain/hash/address.ex index 4cb1ba751f..80a51e0af8 100644 --- a/apps/explorer/lib/explorer/chain/hash/address.ex +++ b/apps/explorer/lib/explorer/chain/hash/address.ex @@ -8,7 +8,7 @@ defmodule Explorer.Chain.Hash.Address do alias Explorer.Chain.Hash - @behaviour Ecto.Type + use Ecto.Type @behaviour Hash @byte_count 20 diff --git a/apps/explorer/lib/explorer/chain/hash/full.ex b/apps/explorer/lib/explorer/chain/hash/full.ex index f5c0855536..eb8ae148dd 100644 --- a/apps/explorer/lib/explorer/chain/hash/full.ex +++ b/apps/explorer/lib/explorer/chain/hash/full.ex @@ -5,7 +5,7 @@ defmodule Explorer.Chain.Hash.Full do alias Explorer.Chain.Hash - @behaviour Ecto.Type + use Ecto.Type @behaviour Hash @byte_count 32 diff --git a/apps/explorer/lib/explorer/chain/hash/nonce.ex b/apps/explorer/lib/explorer/chain/hash/nonce.ex index e5dbf3fe73..f8be6c2762 100644 --- a/apps/explorer/lib/explorer/chain/hash/nonce.ex +++ b/apps/explorer/lib/explorer/chain/hash/nonce.ex @@ -5,7 +5,7 @@ defmodule Explorer.Chain.Hash.Nonce do alias Explorer.Chain.Hash - @behaviour Ecto.Type + use Ecto.Type @behaviour Hash @byte_count 8 diff --git a/apps/explorer/lib/explorer/chain/import/runner/staking_pools.ex b/apps/explorer/lib/explorer/chain/import/runner/staking_pools.ex index fa4fa97a75..3568b0da6e 100644 --- a/apps/explorer/lib/explorer/chain/import/runner/staking_pools.ex +++ b/apps/explorer/lib/explorer/chain/import/runner/staking_pools.ex @@ -154,7 +154,7 @@ defmodule Explorer.Chain.Import.Runner.StakingPools do total = repo.one!(total_query) - if total > Decimal.new(0) do + if total.value > Decimal.new(0) do update_query = from( p in StakingPool, @@ -162,8 +162,8 @@ defmodule Explorer.Chain.Import.Runner.StakingPools do # ShareLocks order already enforced by `acquire_all_staking_pools` (see docs: sharelocks.md) update: [ set: [ - staked_ratio: p.staked_amount / ^total * 100, - likelihood: p.staked_amount / ^total * 100 + staked_ratio: p.staked_amount / ^total.value * 100, + likelihood: p.staked_amount / ^total.value * 100 ] ] ) diff --git a/apps/explorer/lib/explorer/chain/internal_transaction/call_type.ex b/apps/explorer/lib/explorer/chain/internal_transaction/call_type.ex index 8d354553ee..2f94ca901d 100644 --- a/apps/explorer/lib/explorer/chain/internal_transaction/call_type.ex +++ b/apps/explorer/lib/explorer/chain/internal_transaction/call_type.ex @@ -3,7 +3,7 @@ defmodule Explorer.Chain.InternalTransaction.CallType do Internal transaction types """ - @behaviour Ecto.Type + use Ecto.Type @typedoc """ * `:call` - call a function in a contract by jumping into the contract's context diff --git a/apps/explorer/lib/explorer/chain/internal_transaction/type.ex b/apps/explorer/lib/explorer/chain/internal_transaction/type.ex index 0a13587afe..6c2890c59b 100644 --- a/apps/explorer/lib/explorer/chain/internal_transaction/type.ex +++ b/apps/explorer/lib/explorer/chain/internal_transaction/type.ex @@ -3,7 +3,7 @@ defmodule Explorer.Chain.InternalTransaction.Type do Internal transaction types """ - @behaviour Ecto.Type + use Ecto.Type @typedoc """ * `:call` diff --git a/apps/explorer/lib/explorer/chain/method_identifier.ex b/apps/explorer/lib/explorer/chain/method_identifier.ex index 56cc2d5e93..e6097b59d9 100644 --- a/apps/explorer/lib/explorer/chain/method_identifier.ex +++ b/apps/explorer/lib/explorer/chain/method_identifier.ex @@ -5,7 +5,7 @@ defmodule Explorer.Chain.MethodIdentifier do Represented in the database as a 4 byte integer, decodes into a 4 byte bitstring """ - @behaviour Ecto.Type + use Ecto.Type @type t :: binary diff --git a/apps/explorer/lib/explorer/chain/transaction/status.ex b/apps/explorer/lib/explorer/chain/transaction/status.ex index 22d0eb976e..df4e56597f 100644 --- a/apps/explorer/lib/explorer/chain/transaction/status.ex +++ b/apps/explorer/lib/explorer/chain/transaction/status.ex @@ -8,7 +8,7 @@ defmodule Explorer.Chain.Transaction.Status do for failure. """ - @behaviour Ecto.Type + use Ecto.Type @typedoc """ * `:ok` - transaction succeeded diff --git a/apps/explorer/lib/explorer/chain/wei.ex b/apps/explorer/lib/explorer/chain/wei.ex index 78483632a7..6a2a6f7683 100644 --- a/apps/explorer/lib/explorer/chain/wei.ex +++ b/apps/explorer/lib/explorer/chain/wei.ex @@ -24,7 +24,7 @@ defmodule Explorer.Chain.Wei do defstruct ~w(value)a - @behaviour Ecto.Type + use Ecto.Type @impl Ecto.Type def type, do: :decimal diff --git a/apps/explorer/mix.exs b/apps/explorer/mix.exs index 4d73894d5e..7eb0be4d13 100644 --- a/apps/explorer/mix.exs +++ b/apps/explorer/mix.exs @@ -74,9 +74,9 @@ defmodule Explorer.Mixfile do {:decimal, "~> 1.0"}, {:dialyxir, "~> 0.5", only: [:dev, :test], runtime: false}, # `override: true` for `ex_machina` compatibility - {:ecto, "~> 3.1", override: true}, + {:ecto, "~> 3.3", override: true}, # Storing blockchain data and derived data in PostgreSQL. - {:ecto_sql, "~> 3.1"}, + {:ecto_sql, "~> 3.3"}, # JSONRPC access to query smart contracts {:ethereum_jsonrpc, in_umbrella: true}, # Data factory for testing @@ -110,7 +110,7 @@ defmodule Explorer.Mixfile do # `:spandex` tracing of `:ecto` {:spandex_ecto, "~> 0.4.0"}, # Attach `:prometheus_ecto` to `:ecto` - {:telemetry, "~> 0.4.0"}, + {:telemetry, "~> 0.4.1"}, # `Timex.Duration` for `Explorer.Counters.AverageBlockTime.average_block_time/0` {:timex, "~> 3.6"}, {:con_cache, "~> 0.13"} diff --git a/mix.lock b/mix.lock index 081e2eec49..40d7bc5bb3 100644 --- a/mix.lock +++ b/mix.lock @@ -1,8 +1,8 @@ %{ - "absinthe": {:hex, :absinthe, "1.4.16", "0933e4d9f12652b12115d5709c0293a1bf78a22578032e9ad0dad4efee6b9eb1", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"}, - "absinthe_phoenix": {:git, "https://github.com/ayrat555/absinthe_phoenix.git", "4dbb73a25a0935a4d292e63876698e18534d835f", [branch: "ab-update-plug"]}, - "absinthe_plug": {:git, "https://github.com/ayrat555/absinthe_plug.git", "cbe1c170e11e60b3b0146b925a1ce6ec562840ce", [branch: "ab-enable-default-query"]}, - "absinthe_relay": {:hex, :absinthe_relay, "1.4.6", "ec0e2288994b388556247cf9601245abec785cdf206d6e844f2992d29de21624", [:mix], [{:absinthe, "~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, + "absinthe": {:hex, :absinthe, "1.5.0-rc.2", "132ceb90783a39454cba1a043e833add5385036ed1e6fe8e889b85fc2b7cd89f", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "absinthe_phoenix": {:hex, :absinthe_phoenix, "1.5.0-rc.0", "63558295f77f09c9e412fa0a4ef92a66003eaf539821a810fd928c1c67a6005d", [:mix], [{:absinthe, "~> 1.5.0-rc.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5.0-rc.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm"}, + "absinthe_plug": {:hex, :absinthe_plug, "1.5.0-rc.1", "f6d8a7a74c42cb1547f9d62cf728b8aab960c5246b8415deb0cb1f5aac1fb671", [:mix], [{:absinthe, "~> 1.5.0-rc.2", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, + "absinthe_relay": {:hex, :absinthe_relay, "1.5.0-rc.0", "99048f5a8239dbcecf6c600f6a2410e1b157832df01d3f4859bc804565ddf1bc", [:mix], [{:absinthe, "~> 1.5.0-rc.1", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, "accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm"}, "bcrypt_elixir": {:hex, :bcrypt_elixir, "1.1.1", "6b5560e47a02196ce5f0ab3f1d8265db79a23868c137e973b27afef928ed8006", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm"}, "benchee": {:hex, :benchee, "0.13.2", "30cd4ff5f593fdd218a9b26f3c24d580274f297d88ad43383afe525b1543b165", [:mix], [{:deep_merge, "~> 0.1", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm"}, @@ -22,15 +22,15 @@ "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm"}, "credo": {:hex, :credo, "1.1.2", "02b6422f3e659eb74b05aca3c20c1d8da0119a05ee82577a82e6c2938bf29f81", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, "csv": {:hex, :csv, "2.3.1", "9ce11eff5a74a07baf3787b2b19dd798724d29a9c3a492a41df39f6af686da0e", [:mix], [{:parallel_stream, "~> 1.0.4", [hex: :parallel_stream, repo: "hexpm", optional: false]}], "hexpm"}, - "dataloader": {:hex, :dataloader, "1.0.6", "fb724d6d3fb6acb87d27e3b32dea3a307936ad2d245faf9cf5221d1323d6a4ba", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, - "db_connection": {:hex, :db_connection, "2.1.1", "a51e8a2ee54ef2ae6ec41a668c85787ed40cb8944928c191280fe34c15b76ae5", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm"}, - "decimal": {:hex, :decimal, "1.8.0", "ca462e0d885f09a1c5a342dbd7c1dcf27ea63548c65a65e67334f4b61803822e", [:mix], [], "hexpm"}, + "dataloader": {:hex, :dataloader, "1.0.7", "58351b335673cf40601429bfed6c11fece6ce7ad169b2ac0f0fe83e716587391", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, + "db_connection": {:hex, :db_connection, "2.2.0", "e923e88887cd60f9891fd324ac5e0290954511d090553c415fbf54be4c57ee63", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm"}, + "decimal": {:hex, :decimal, "1.8.1", "a4ef3f5f3428bdbc0d35374029ffcf4ede8533536fa79896dd450168d9acdf3c", [:mix], [], "hexpm"}, "decorator": {:hex, :decorator, "1.3.0", "6203dbd6e4e519a21a079e2a74e50fddaf03e80be22711b92eb4cd410173abea", [:mix], [], "hexpm"}, "deep_merge": {:hex, :deep_merge, "0.2.0", "c1050fa2edf4848b9f556fba1b75afc66608a4219659e3311d9c9427b5b680b3", [:mix], [], "hexpm"}, "dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [:mix], [], "hexpm"}, "earmark": {:hex, :earmark, "1.3.5", "0db71c8290b5bc81cb0101a2a507a76dca659513984d683119ee722828b424f6", [:mix], [], "hexpm"}, - "ecto": {:hex, :ecto, "3.1.7", "fa21d06ef56cdc2fdaa62574e8c3ba34a2751d44ea34c30bc65f0728421043e5", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, - "ecto_sql": {:hex, :ecto_sql, "3.1.6", "1e80e30d16138a729c717f73dcb938590bcdb3a4502f3012414d0cbb261045d8", [:mix], [{:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.9.1", [hex: :mariaex, repo: "hexpm", optional: true]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.14.0 or ~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "ecto": {:hex, :ecto, "3.3.1", "82ab74298065bf0c64ca299f6c6785e68ea5d6b980883ee80b044499df35aba1", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "ecto_sql": {:hex, :ecto_sql, "3.3.2", "92804e0de69bb63e621273c3492252cb08a29475c05d40eeb6f41ad2d483cfd3", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm"}, "ex_abi": {:hex, :ex_abi, "0.1.18", "19db9bffdd201edbdff97d7dd5849291218b17beda045c1b76bff5248964f37d", [:mix], [{:exth_crypto, "~> 0.1.4", [hex: :exth_crypto, repo: "hexpm", optional: false]}], "hexpm"}, "ex_cldr": {:hex, :ex_cldr, "2.7.2", "d79a1af6ed12630a15175d2b88d4381b22db5d6f835c5da8de132f0cf712b233", [:mix], [{:cldr_utils, "~> 2.1", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, @@ -92,7 +92,7 @@ "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"}, - "postgrex": {:hex, :postgrex, "0.15.0", "dd5349161019caeea93efa42f9b22f9d79995c3a86bdffb796427b4c9863b0f0", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "postgrex": {:hex, :postgrex, "0.15.3", "5806baa8a19a68c4d07c7a624ccdb9b57e89cbc573f1b98099e3741214746ae4", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.3", "3dd4da1812b8e0dbee81ea58bb3b62ed7588f2eae0c9e97e434c46807ff82311", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, "prometheus_ex": {:hex, :prometheus_ex, "3.0.5", "fa58cfd983487fc5ead331e9a3e0aa622c67232b3ec71710ced122c4c453a02f", [:mix], [{:prometheus, "~> 4.0", [hex: :prometheus, repo: "hexpm", optional: false]}], "hexpm"}, @@ -108,7 +108,7 @@ "spandex_ecto": {:hex, :spandex_ecto, "0.4.0", "deaeaddc11a35f1c551206c53d09bb93a0da5808dbef751430e465c8c7de01d3", [:mix], [{:spandex, "~> 2.2", [hex: :spandex, repo: "hexpm", optional: false]}], "hexpm"}, "spandex_phoenix": {:hex, :spandex_phoenix, "0.3.2", "e81889d80852a895cf62ce2e25181b15766d21e8647962e0a4458414b935feb3", [:mix], [{:plug, "~> 1.3", [hex: :plug, repo: "hexpm", optional: false]}, {:spandex, "~> 2.2", [hex: :spandex, repo: "hexpm", optional: false]}], "hexpm"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm"}, - "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, + "telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm"}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, "tzdata": {:hex, :tzdata, "1.0.1", "f6027a331af7d837471248e62733c6ebee86a72e57c613aa071ebb1f750fc71a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"}, From 5523508da2bd17cb00470d3c56c85ae7360ff326 Mon Sep 17 00:00:00 2001 From: Max Alekseenko Date: Fri, 17 Jan 2020 13:23:14 +0300 Subject: [PATCH 15/31] allow to set "/" --- apps/block_scout_web/assets/js/socket.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/block_scout_web/assets/js/socket.js b/apps/block_scout_web/assets/js/socket.js index 416052fa20..fcf502a794 100644 --- a/apps/block_scout_web/assets/js/socket.js +++ b/apps/block_scout_web/assets/js/socket.js @@ -1,7 +1,12 @@ import { Socket } from 'phoenix' import { locale } from './locale' -const socket = new Socket((process.env.SOCKET_ROOT || '') + '/socket', { params: { locale: locale } }) +let websocketRootUrl = process.env.SOCKET_ROOT; +if (!websocketRootUrl || websocketRootUrl == '/') { + websocketRootUrl = '' +} + +const socket = new Socket(websocketRootUrl + '/socket', { params: { locale: locale } }) socket.connect() export default socket From 288a69a46eafa1216d6442c27225054fb51fb489 Mon Sep 17 00:00:00 2001 From: Max Alekseenko Date: Fri, 17 Jan 2020 13:33:33 +0300 Subject: [PATCH 16/31] fix linter errors --- apps/block_scout_web/assets/js/socket.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/block_scout_web/assets/js/socket.js b/apps/block_scout_web/assets/js/socket.js index fcf502a794..b2eaa282df 100644 --- a/apps/block_scout_web/assets/js/socket.js +++ b/apps/block_scout_web/assets/js/socket.js @@ -1,8 +1,8 @@ import { Socket } from 'phoenix' import { locale } from './locale' -let websocketRootUrl = process.env.SOCKET_ROOT; -if (!websocketRootUrl || websocketRootUrl == '/') { +let websocketRootUrl = process.env.SOCKET_ROOT +if (!websocketRootUrl || websocketRootUrl === '/') { websocketRootUrl = '' } From a487969ca53f986bcea5d9f6ad758739a5832939 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 17 Jan 2020 13:49:08 +0300 Subject: [PATCH 17/31] Take away block hash, block index dups processing script from migration --- CHANGELOG.md | 2 +- ...054_add_pending_internal_txs_operation.exs | 70 ------------------ ...ock_hash_block_index_dups_to_carnitine.sql | 73 +++++++++++++++++++ 3 files changed, 74 insertions(+), 71 deletions(-) create mode 100644 apps/explorer/priv/repo/migrations/scripts/20191018140054_send_block_hash_block_index_dups_to_carnitine.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index eab2f68be7..a6bf84e290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## Current ### Features -- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2949](https://github.com/poanetwork/blockscout/pull/2949), [#2940](https://github.com/poanetwork/blockscout/pull/2940) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach +- [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2949](https://github.com/poanetwork/blockscout/pull/2949), [#2940](https://github.com/poanetwork/blockscout/pull/2940), [#2958](https://github.com/poanetwork/blockscout/pull/2958) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach - [#2926](https://github.com/poanetwork/blockscout/pull/2926) - API endpoint: sum balances except burnt address - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly diff --git a/apps/explorer/priv/repo/migrations/20191018140054_add_pending_internal_txs_operation.exs b/apps/explorer/priv/repo/migrations/20191018140054_add_pending_internal_txs_operation.exs index 41af522005..13d46ab013 100644 --- a/apps/explorer/priv/repo/migrations/20191018140054_add_pending_internal_txs_operation.exs +++ b/apps/explorer/priv/repo/migrations/20191018140054_add_pending_internal_txs_operation.exs @@ -55,76 +55,6 @@ defmodule Explorer.Repo.Migrations.AddPendingInternalTxsOperation do DELETE FROM internal_transactions WHERE block_hash IS NULL; """) - execute(""" - DO $$ - DECLARE - duplicates_count INTEGER := 0; - blocks_scanned INTEGER := 0; - int_txs_count INTEGER := 0; - temprow RECORD; - BEGIN - SELECT COUNT(*) INTO int_txs_count FROM internal_transactions; - IF int_txs_count < 10000000 THEN - - FOR temprow IN - SELECT block_hash FROM internal_transactions - GROUP BY block_hash, block_index HAVING COUNT(*) > 1 - LOOP - duplicates_count := duplicates_count + 1; - RAISE NOTICE '% duplicates, blocks scanned %, block #%, block hash is %', duplicates_count, blocks_scanned, temprow.number , temprow.hash; - - IF NOT EXISTS ( - SELECT 1 FROM pending_block_operations - WHERE block_hash = temprow.block_hash - ) THEN - INSERT INTO pending_block_operations - (block_hash, inserted_at, updated_at, fetch_internal_transactions) - SELECT b.hash, now(), now(), TRUE FROM blocks b - WHERE b.hash = temprow.block_hash; - END IF; - - DELETE FROM internal_transactions - WHERE block_hash = temprow.block_hash; - - RAISE NOTICE 'DELETED'; - END LOOP; - - ELSE - FOR temprow IN SELECT number, hash FROM blocks LOOP - blocks_scanned := blocks_scanned + 1; - IF EXISTS ( - SELECT 1 FROM transactions WHERE block_hash = temprow.hash - ) THEN - IF EXISTS ( - SELECT block_hash, block_index FROM internal_transactions - WHERE block_hash = temprow.hash - GROUP BY block_hash, block_index HAVING COUNT(*) > 1 - ) THEN - duplicates_count := duplicates_count + 1; - RAISE NOTICE '% duplicates, blocks scanned %, block #%, block hash is %', duplicates_count, blocks_scanned, temprow.number , temprow.hash; - - IF NOT EXISTS ( - SELECT 1 FROM pending_block_operations - WHERE block_hash = temprow.hash - ) THEN - INSERT INTO pending_block_operations - (block_hash, inserted_at, updated_at, fetch_internal_transactions) - SELECT b.hash, now(), now(), TRUE FROM blocks b - WHERE b.hash = temprow.hash; - END IF; - - DELETE FROM internal_transactions - WHERE block_hash = temprow.hash; - - RAISE NOTICE 'DELETED'; - END IF; - END IF; - END LOOP; - END IF; - RAISE NOTICE 'SCRIPT FINISHED'; - END $$; - """) - execute(""" ALTER table internal_transactions DROP CONSTRAINT internal_transactions_pkey, diff --git a/apps/explorer/priv/repo/migrations/scripts/20191018140054_send_block_hash_block_index_dups_to_carnitine.sql b/apps/explorer/priv/repo/migrations/scripts/20191018140054_send_block_hash_block_index_dups_to_carnitine.sql new file mode 100644 index 0000000000..a35667d26f --- /dev/null +++ b/apps/explorer/priv/repo/migrations/scripts/20191018140054_send_block_hash_block_index_dups_to_carnitine.sql @@ -0,0 +1,73 @@ +-- This script should be a part of migration to "pennding_block_operations" internal transactions indexing approach +-- if 20191018140054_add_pending_internal_txs_operation.exs migration failed due to occasional duplicates of +-- {block_hash, block_index} pair in the DB, that could exist due to bugs in previous versions of the application +--, before setting a primary key on those columns. If so, this script should be inserted at line 57 of that migration +-- just before changing of a primary key. + +DO $$ +DECLARE + duplicates_count INTEGER := 0; + blocks_scanned INTEGER := 0; + int_txs_count INTEGER := 0; + temprow RECORD; +BEGIN + SELECT COUNT(*) INTO int_txs_count FROM internal_transactions; + IF int_txs_count < 10000000 THEN + + FOR temprow IN + SELECT block_hash FROM internal_transactions + GROUP BY block_hash, block_index HAVING COUNT(*) > 1 + LOOP + duplicates_count := duplicates_count + 1; + RAISE NOTICE '% duplicates, blocks scanned %, block #%, block hash is %', duplicates_count, blocks_scanned, temprow.number , temprow.hash; + + IF NOT EXISTS ( + SELECT 1 FROM pending_block_operations + WHERE block_hash = temprow.block_hash + ) THEN + INSERT INTO pending_block_operations + (block_hash, inserted_at, updated_at, fetch_internal_transactions) + SELECT b.hash, now(), now(), TRUE FROM blocks b + WHERE b.hash = temprow.block_hash; + END IF; + + DELETE FROM internal_transactions + WHERE block_hash = temprow.block_hash; + + RAISE NOTICE 'DELETED'; + END LOOP; + + ELSE + FOR temprow IN SELECT number, hash FROM blocks LOOP + blocks_scanned := blocks_scanned + 1; + IF EXISTS ( + SELECT 1 FROM transactions WHERE block_hash = temprow.hash + ) THEN + IF EXISTS ( + SELECT block_hash, block_index FROM internal_transactions + WHERE block_hash = temprow.hash + GROUP BY block_hash, block_index HAVING COUNT(*) > 1 + ) THEN + duplicates_count := duplicates_count + 1; + RAISE NOTICE '% duplicates, blocks scanned %, block #%, block hash is %', duplicates_count, blocks_scanned, temprow.number , temprow.hash; + + IF NOT EXISTS ( + SELECT 1 FROM pending_block_operations + WHERE block_hash = temprow.hash + ) THEN + INSERT INTO pending_block_operations + (block_hash, inserted_at, updated_at, fetch_internal_transactions) + SELECT b.hash, now(), now(), TRUE FROM blocks b + WHERE b.hash = temprow.hash; + END IF; + + DELETE FROM internal_transactions + WHERE block_hash = temprow.hash; + + RAISE NOTICE 'DELETED'; + END IF; + END IF; + END LOOP; + END IF; + RAISE NOTICE 'SCRIPT FINISHED'; +END $$; \ No newline at end of file From 2890f04e10c82815bb3ad8bc059ce41436bef543 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 17 Jan 2020 14:36:19 +0300 Subject: [PATCH 18/31] Add SOCKET_ROOT env var --- docker/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/Makefile b/docker/Makefile index 7b13f9e860..b56d7615a5 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -190,6 +190,9 @@ endif ifdef DECOMPILED_SMART_CONTRACT_TOKEN BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DECOMPILED_SMART_CONTRACT_TOKEN=$(DECOMPILED_SMART_CONTRACT_TOKEN)' endif +ifdef SOCKET_ROOT + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'SOCKET_ROOT=$(SOCKET_ROOT)' +endif HAS_BLOCKSCOUT_IMAGE := $(shell docker images | grep ${DOCKER_IMAGE}) build: From 08a1ad9b9e4001b739152df7c04c27e7671f4482 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 17 Jan 2020 15:24:43 +0300 Subject: [PATCH 19/31] Remove logs from test folder too inn the cleaning script --- CHANGELOG.md | 1 + rel/commands/clear_build.sh | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 471f4b6e4a..e686211803 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table ### Chore +- [#2959](https://github.com/poanetwork/blockscout/pull/2959) - Remove logs from test folder too in the cleaning script - [#2947](https://github.com/poanetwork/blockscout/pull/2947) - Upgrade Circle CI postgres Docker image - [#2946](https://github.com/poanetwork/blockscout/pull/2946) - Fix vulnerable NPM deps - [#2942](https://github.com/poanetwork/blockscout/pull/2942) - Actualize Docker setup diff --git a/rel/commands/clear_build.sh b/rel/commands/clear_build.sh index 5a032809ba..7c79a85ec3 100755 --- a/rel/commands/clear_build.sh +++ b/rel/commands/clear_build.sh @@ -4,8 +4,12 @@ rm -rf ./_build rm -rf ./deps logs=$(find . -not -path '*/\.*' -name "logs" -type d) dev=$(find ${logs} -name "dev") -files_and_dirs_in_logs=$(ls -d ${dev}/*) -rm -rf $files_and_dirs_in_logs +files_and_dirs_in_logs_dev=$(ls -d ${dev}/*) +rm -rf $files_and_dirs_in_logs_dev + +test=$(find ${logs} -name "test") +files_and_dirs_in_logs_test=$(ls -d ${test}/*) +rm -rf $files_and_dirs_in_logs_test find . -name "node_modules" -type d -exec rm -rf '{}' + From a50c313aef379d1af0f23c094c589cc4ed8d2421 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Fri, 17 Jan 2020 19:15:15 +0300 Subject: [PATCH 20/31] add BLOCKSCOUT_HOST to Docker setup --- CHANGELOG.md | 4 ++-- docker/Makefile | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e686211803..ec8895d27c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2960](https://github.com/poanetwork/blockscout/pull/2960) - Add BLOCKSCOUT_HOST to docker setup - [#2955](https://github.com/poanetwork/blockscout/pull/2955) - Move socket path to env - [#2938](https://github.com/poanetwork/blockscout/pull/2938) - utf8 copy tx input tooltip - [#2934](https://github.com/poanetwork/blockscout/pull/2934) - RSK release 1.2.0 breaking changes support @@ -15,6 +16,7 @@ - [#2924](https://github.com/poanetwork/blockscout/pull/2924) - Speedup address to logs query - [#2915](https://github.com/poanetwork/blockscout/pull/2915) - Speedup of blocks_without_reward_query - [#2914](https://github.com/poanetwork/blockscout/pull/2914) - Reduce execution time of stream_unfetched_token_instances query +- [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table - [#2908](https://github.com/poanetwork/blockscout/pull/2908) - Fix performance of address page - [#2906](https://github.com/poanetwork/blockscout/pull/2906) - fix address sum cache - [#2902](https://github.com/poanetwork/blockscout/pull/2902) - Offset in blocks retrieval for average block time @@ -22,8 +24,6 @@ - [#2899](https://github.com/poanetwork/blockscout/pull/2899) - fix empty buffered task - [#2887](https://github.com/poanetwork/blockscout/pull/2887) - increase chart loading speed -- [2910](https://github.com/poanetwork/blockscout/pull/2910) - Reorganize queries and indexes for internal_transactions table - ### Chore - [#2959](https://github.com/poanetwork/blockscout/pull/2959) - Remove logs from test folder too in the cleaning script - [#2947](https://github.com/poanetwork/blockscout/pull/2947) - Upgrade Circle CI postgres Docker image diff --git a/docker/Makefile b/docker/Makefile index b56d7615a5..7f23069c15 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -187,6 +187,9 @@ endif ifdef BLOCKSCOUT_PROTOCOL BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCKSCOUT_PROTOCOL=$(BLOCKSCOUT_PROTOCOL)' endif +ifdef BLOCKSCOUT_HOST + BLOCKSCOUT_CONTAINNER_PARAMS += -e 'BLOCKSCOUT_HOST=$(BLOCKSCOUT_HOST)' +endif ifdef DECOMPILED_SMART_CONTRACT_TOKEN BLOCKSCOUT_CONTAINNER_PARAMS += -e 'DECOMPILED_SMART_CONTRACT_TOKEN=$(DECOMPILED_SMART_CONTRACT_TOKEN)' endif From 0e3e9f2b8aac9d7e20b740f7ca66e77abf47aeb3 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Mon, 20 Jan 2020 14:41:00 +0300 Subject: [PATCH 21/31] Handle addresses is enum in values function in read contract page --- CHANGELOG.md | 1 + .../lib/block_scout_web/views/smart_contract_view.ex | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec8895d27c..37e2202f95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2961](https://github.com/poanetwork/blockscout/pull/2961) - Add a guard that addresses is enum in `values` function in `read contract` page - [#2960](https://github.com/poanetwork/blockscout/pull/2960) - Add BLOCKSCOUT_HOST to docker setup - [#2955](https://github.com/poanetwork/blockscout/pull/2955) - Move socket path to env - [#2938](https://github.com/poanetwork/blockscout/pull/2938) - utf8 copy tx input tooltip diff --git a/apps/block_scout_web/lib/block_scout_web/views/smart_contract_view.ex b/apps/block_scout_web/lib/block_scout_web/views/smart_contract_view.ex index c96c5efe91..fef4fbc9d2 100644 --- a/apps/block_scout_web/lib/block_scout_web/views/smart_contract_view.ex +++ b/apps/block_scout_web/lib/block_scout_web/views/smart_contract_view.ex @@ -10,7 +10,7 @@ defmodule BlockScoutWeb.SmartContractView do def named_argument?(%{"name" => _}), do: true def named_argument?(_), do: false - def values(addresses, type) when type == "address[]" do + def values(addresses, type) when is_list(addresses) and type == "address[]" do addresses |> Enum.map(&values(&1, "address")) |> Enum.join(", ") From 0b24d783e22b2df04055a90c4842b8066596e396 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Thu, 16 Jan 2020 19:50:03 +0300 Subject: [PATCH 22/31] Add support of 0.6.x version of Solidity compiler --- CHANGELOG.md | 1 + apps/block_scout_web/assets/package.json | 4 +- apps/explorer/config/config.exs | 2 +- .../lib/explorer/smart_contract/verifier.ex | 16 ++ .../verifier/constructor_arguments.ex | 48 +++-- apps/explorer/package-lock.json | 204 ++---------------- apps/explorer/package.json | 6 +- .../explorer/smart_contract/verifier_test.exs | 1 + 8 files changed, 64 insertions(+), 218 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f90788beaf..bd26decfaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2956](https://github.com/poanetwork/blockscout/pull/2956) - Add support of 0.6.x version of compiler - [#2934](https://github.com/poanetwork/blockscout/pull/2934) - RSK release 1.2.0 breaking changes support - [#2933](https://github.com/poanetwork/blockscout/pull/2933) - Get rid of deadlock in the query to address_current_token_balance table - [#2932](https://github.com/poanetwork/blockscout/pull/2932) - fix duplicate websocket connection diff --git a/apps/block_scout_web/assets/package.json b/apps/block_scout_web/assets/package.json index 8d36aa8797..ec3192a2a4 100644 --- a/apps/block_scout_web/assets/package.json +++ b/apps/block_scout_web/assets/package.json @@ -8,8 +8,8 @@ "author": "POA Network", "license": "GPL-3.0", "engines": { - "node": "9.x", - "npm": "5.x" + "node": "12.x", + "npm": "6.x" }, "scripts": { "deploy": "webpack --mode production", diff --git a/apps/explorer/config/config.exs b/apps/explorer/config/config.exs index 21025cd480..d69ee6238f 100644 --- a/apps/explorer/config/config.exs +++ b/apps/explorer/config/config.exs @@ -12,7 +12,7 @@ config :explorer, token_functions_reader_max_retries: 3, allowed_evm_versions: System.get_env("ALLOWED_EVM_VERSIONS") || - "homestead,tangerineWhistle,spuriousDragon,byzantium,constantinople,petersburg,default", + "homestead,tangerineWhistle,spuriousDragon,byzantium,constantinople,petersburg,istanbul,default", include_uncles_in_average_block_time: if(System.get_env("UNCLES_IN_AVERAGE_BLOCK_TIME") == "true", do: true, else: false), healthy_blocks_period: System.get_env("HEALTHY_BLOCKS_PERIOD") || :timer.minutes(5), diff --git a/apps/explorer/lib/explorer/smart_contract/verifier.ex b/apps/explorer/lib/explorer/smart_contract/verifier.ex index a81bc3d0ec..9b49dca97d 100644 --- a/apps/explorer/lib/explorer/smart_contract/verifier.ex +++ b/apps/explorer/lib/explorer/smart_contract/verifier.ex @@ -151,6 +151,22 @@ defmodule Explorer.SmartContract.Verifier do |> Enum.reverse() |> :binary.list_to_bin() + # Solidity >= 0.6.0 https://github.com/ethereum/solidity/blob/develop/Changelog.md#060-2019-12-17 + # https://github.com/ethereum/solidity/blob/26b700771e9cc9c956f0503a05de69a1be427963/docs/metadata.rst#encoding-of-the-metadata-hash-in-the-bytecode + # IPFS is used instead of Swarm + # The current version of the Solidity compiler usually adds the following to the end of the deployed bytecode: + # 0xa2 + # 0x64 'i' 'p' 'f' 's' 0x58 0x22 <34 bytes IPFS hash> + # 0x64 's' 'o' 'l' 'c' 0x43 <3 byte version encoding> + # 0x00 0x32 + # Note: there is a bug in the docs. Instead of 0x32, 0x33 should be used. + # Fixing PR has been created https://github.com/ethereum/solidity/pull/8174 + "a264697066735822" <> + <<_::binary-size(68)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0033" <> _constructor_arguments -> + extracted + |> Enum.reverse() + |> :binary.list_to_bin() + <> <> rest -> do_extract_bytecode([next | extracted], rest) end diff --git a/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex b/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex index 576ff78168..69e93f450b 100644 --- a/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex +++ b/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex @@ -35,36 +35,32 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do case code do # Solidity ~ 4.23 # https://solidity.readthedocs.io/en/v0.4.23/metadata.html "a165627a7a72305820" <> <<_::binary-size(64)>> <> "0029" <> constructor_arguments -> - check_func_result = check_func.(constructor_arguments) - - if check_func_result do - check_func_result - else - extract_constructor_arguments(constructor_arguments, check_func) - end + extract_constructor_arguments_check_func(constructor_arguments, check_func) # Solidity >= 0.5.10 https://solidity.readthedocs.io/en/v0.5.10/metadata.html "a265627a7a72305820" <> <<_::binary-size(64)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0032" <> constructor_arguments -> - check_func_result = check_func.(constructor_arguments) - - if check_func_result do - check_func_result - else - extract_constructor_arguments(constructor_arguments, check_func) - end + extract_constructor_arguments_check_func(constructor_arguments, check_func) # Solidity >= 0.5.11 https://github.com/ethereum/solidity/blob/develop/Changelog.md#0511-2019-08-12 # Metadata: Update the swarm hash to the current specification, changes bzzr0 to bzzr1 and urls to use bzz-raw:// "a265627a7a72315820" <> <<_::binary-size(64)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0032" <> constructor_arguments -> - check_func_result = check_func.(constructor_arguments) - - if check_func_result do - check_func_result - else - extract_constructor_arguments(constructor_arguments, check_func) - end + extract_constructor_arguments_check_func(constructor_arguments, check_func) + + # Solidity >= 0.6.0 https://github.com/ethereum/solidity/blob/develop/Changelog.md#060-2019-12-17 + # https://github.com/ethereum/solidity/blob/26b700771e9cc9c956f0503a05de69a1be427963/docs/metadata.rst#encoding-of-the-metadata-hash-in-the-bytecode + # IPFS is used instead of Swarm + # The current version of the Solidity compiler usually adds the following to the end of the deployed bytecode: + # 0xa2 + # 0x64 'i' 'p' 'f' 's' 0x58 0x22 <34 bytes IPFS hash> + # 0x64 's' 'o' 'l' 'c' 0x43 <3 byte version encoding> + # 0x00 0x32 + # Note: there is a bug in the docs. Instead of 0x32, 0x33 should be used. + # Fixing PR has been created https://github.com/ethereum/solidity/pull/8174 + "a264697066735822" <> + <<_::binary-size(68)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0033" <> constructor_arguments -> + extract_constructor_arguments_check_func(constructor_arguments, check_func) <<>> -> check_func.("") @@ -74,6 +70,16 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do end end + defp extract_constructor_arguments_check_func(constructor_arguments, check_func) do + check_func_result = check_func.(constructor_arguments) + + if check_func_result do + check_func_result + else + extract_constructor_arguments(constructor_arguments, check_func) + end + end + def find_constructor_arguments(address_hash, abi) do creation_code = address_hash diff --git a/apps/explorer/package-lock.json b/apps/explorer/package-lock.json index 29cf4e81a8..2c3c20aed5 100644 --- a/apps/explorer/package-lock.json +++ b/apps/explorer/package-lock.json @@ -3,19 +3,6 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -38,67 +25,26 @@ "concat-map": "0.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "command-exists": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -116,15 +62,10 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -153,11 +94,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -190,15 +126,6 @@ "graceful-fs": "^4.1.9" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -230,52 +157,16 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -294,42 +185,19 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "solc": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.5.12.tgz", - "integrity": "sha512-OX/AGZT04tuUsagoVXSZBiBZYJReA02hdwZOfRkB03/eeYP9Dl3pr+M+au+1MhssgiuWBlFPN7sRXFiqwkAW2g==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.1.tgz", + "integrity": "sha512-iKqNYps2p++x8L9sBg7JeAJb7EmW8VJ/2asAzwlLYcUhj86AzuWLe94UTSQHv1SSCCj/x6lya8twvXkZtlTbIQ==", "requires": { "command-exists": "^1.2.8", + "commander": "3.0.2", "fs-extra": "^0.30.0", "js-sha3": "0.8.0", "memorystream": "^0.3.1", "require-from-string": "^2.0.0", "semver": "^5.5.0", - "tmp": "0.0.33", - "yargs": "^13.2.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" + "tmp": "0.0.33" } }, "tmp": { @@ -340,56 +208,10 @@ "os-tmpdir": "~1.0.2" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } } diff --git a/apps/explorer/package.json b/apps/explorer/package.json index 9010d39c7d..8fdead7f1d 100644 --- a/apps/explorer/package.json +++ b/apps/explorer/package.json @@ -8,12 +8,12 @@ "author": "POA Network", "license": "GPL-3.0", "engines": { - "node": "9.x", - "npm": "5.x" + "node": "12.x", + "npm": "6.x" }, "scripts": {}, "dependencies": { "keccak": "^2.0.0", - "solc": "^0.5.12" + "solc": "^0.6.1" } } diff --git a/apps/explorer/test/explorer/smart_contract/verifier_test.exs b/apps/explorer/test/explorer/smart_contract/verifier_test.exs index 088820beea..4cab8028c8 100644 --- a/apps/explorer/test/explorer/smart_contract/verifier_test.exs +++ b/apps/explorer/test/explorer/smart_contract/verifier_test.exs @@ -212,6 +212,7 @@ defmodule Explorer.SmartContract.VerifierTest do params = %{ "contract_source_code" => different_code, "compiler_version" => contract_code_info.version, + "evm_version" => "istanbul", "name" => contract_code_info.name, "optimization" => contract_code_info.optimized } From 467b900b64772e908ae1c8bd41c982d752079357 Mon Sep 17 00:00:00 2001 From: EtherCore Contributor Date: Tue, 21 Jan 2020 22:49:11 +0900 Subject: [PATCH 23/31] Add EtherCore support --- .../_ethercore_variables-non-critical.scss | 7 + .../css/theme/_ethercore_variables.scss | 84 ++++++ .../css/theme/_variables-non-critical.scss | 3 +- .../assets/css/theme/_variables.scss | 1 + .../assets/static/images/ethercore_logo.svg | 242 ++++++++++++++++++ 5 files changed, 336 insertions(+), 1 deletion(-) create mode 100644 apps/block_scout_web/assets/css/theme/_ethercore_variables-non-critical.scss create mode 100644 apps/block_scout_web/assets/css/theme/_ethercore_variables.scss create mode 100644 apps/block_scout_web/assets/static/images/ethercore_logo.svg diff --git a/apps/block_scout_web/assets/css/theme/_ethercore_variables-non-critical.scss b/apps/block_scout_web/assets/css/theme/_ethercore_variables-non-critical.scss new file mode 100644 index 0000000000..05844600df --- /dev/null +++ b/apps/block_scout_web/assets/css/theme/_ethercore_variables-non-critical.scss @@ -0,0 +1,7 @@ +// general +$primary: #3a6ea7; +$secondary: #558ac3; +$tertiary: #3a6ea7; +$additional-font: #bdbdff; + +$btn-line-color: $tertiary; // button border and font color && hover bg color diff --git a/apps/block_scout_web/assets/css/theme/_ethercore_variables.scss b/apps/block_scout_web/assets/css/theme/_ethercore_variables.scss new file mode 100644 index 0000000000..e5f99efb54 --- /dev/null +++ b/apps/block_scout_web/assets/css/theme/_ethercore_variables.scss @@ -0,0 +1,84 @@ +// general +$primary: #3a6ea7; +$secondary: #558ac3; +$tertiary: #3a6ea7; +$additional-font: #bdbdff; + +// footer +$footer-background-color: $primary; +$footer-title-color: #fff; +$footer-text-color: $additional-font; +$footer-item-disc-color: $tertiary; +$footer-social-icon-color: #3a6ea7; + +// dashboard +$dashboard-line-color-price: $secondary; +$dashboard-line-color-market: $tertiary; +$dashboard-banner-gradient-start: #7ba4d1; +$dashboard-banner-gradient-end: #3a6ea7; + +$dashboard-banner-chart-legend-label-color: $additional-font; +$dashboard-stats-item-label-color: $additional-font; +$dashboard-banner-chart-legend-value-color: #fff; // chart labels +$dashboard-stats-item-value-color: #fff; // stat values + +$dashboard-stats-item-border-color: $secondary; // stat border +$dashboard-banner-network-plain-container-background-color: #2e5884; // stats bg + +// navigation +$header-icon-border-color-hover: $tertiary; // top border on hover +$header-icon-color-hover: $tertiary; // nav icon on hover + +// buttons +$btn-line-bg: #fff; // button bg +$btn-line-color: $tertiary; // button border and font color && hover bg color +$btn-copy-color: $tertiary; // btn copy +$btn-qr-color: $tertiary; // btn qr-code +$btn-address-card-icon-color: $tertiary; // btn address color +$btn-contract-color: $tertiary; + +//links & tile +$tile-body-a-color: $tertiary; +$tile-type-block-color: $tertiary; +$tile-type-progress-bar-color: $tertiary; +a.tile-title { color: $tertiary !important; } + +// card +$card-background-1: $tertiary; +$card-tab-active: $tertiary; + +// ETC theme's idiosyncrasies +.layout-container { + .navbar { + box-shadow: 0 0 30px 0 rgba(21, 53, 80, 0.12); + } + + .dropdown-item:hover, + .dropdown-item.active, + .dropdown-item:focus { + background-color: rgba($tertiary, .1) !important; + color: $tertiary !important; + } + + .dashboard-banner-container { + background-image: linear-gradient( + to bottom, + $dashboard-banner-gradient-start, + $dashboard-banner-gradient-end + ); + } + + .footer-logo { + filter: brightness(0) invert(1); + } +} + +// Badges +$badge-neutral-color: $tertiary; +$badge-neutral-background-color: rgba($tertiary, .1); +$api-text-monospace-color: $tertiary; + +// Dark theme +$dark-primary: #8588ff; +$dark-secondary: #4ad7a7; +$dark-primary-alternate: #5b5ed8; diff --git a/apps/block_scout_web/assets/css/theme/_variables-non-critical.scss b/apps/block_scout_web/assets/css/theme/_variables-non-critical.scss index 39762ec68a..24c9f77350 100644 --- a/apps/block_scout_web/assets/css/theme/_variables-non-critical.scss +++ b/apps/block_scout_web/assets/css/theme/_variables-non-critical.scss @@ -20,4 +20,5 @@ // @import "sokol_variables-non-critical"; // @import "tobalaba_variables-non-critical"; // @import "tomochain_variables-non-critical"; -// @import "rsk_variables-non-critical"; \ No newline at end of file +// @import "rsk_variables-non-critical"; +// @import "ethercore_variables-non-critical"; diff --git a/apps/block_scout_web/assets/css/theme/_variables.scss b/apps/block_scout_web/assets/css/theme/_variables.scss index 15571b454b..d2108eb342 100644 --- a/apps/block_scout_web/assets/css/theme/_variables.scss +++ b/apps/block_scout_web/assets/css/theme/_variables.scss @@ -21,6 +21,7 @@ // @import "tobalaba_variables"; // @import "tomochain_variables"; // @import "rsk_variables"; +// @import "ethercore_variables"; // responsive breakpoints $breakpoint-xs: 320px; diff --git a/apps/block_scout_web/assets/static/images/ethercore_logo.svg b/apps/block_scout_web/assets/static/images/ethercore_logo.svg new file mode 100644 index 0000000000..4593bc7427 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/ethercore_logo.svg @@ -0,0 +1,242 @@ + + + + + + + From 66cd47dbe60b200a86996275f9afa49cc33c5a40 Mon Sep 17 00:00:00 2001 From: EtherCore Contributor Date: Wed, 22 Jan 2020 11:54:50 +0900 Subject: [PATCH 24/31] Add EtherCore Testnet Support --- .../static/images/ethercore_testnet_logo.svg | 2284 +++++++++++++++++ 1 file changed, 2284 insertions(+) create mode 100644 apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg diff --git a/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg b/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg new file mode 100644 index 0000000000..1d1ba5b215 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg @@ -0,0 +1,2284 @@ + + + + + + + From 5590b29c2d443c9875119e0f60255b6886c8cb77 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 22 Jan 2020 00:54:34 +0300 Subject: [PATCH 25/31] Fix bug in skipping of constructor arguments inn contract verification --- CHANGELOG.md | 1 + .../api/rpc/contract_controller_test.exs | 2 +- ...erified_smart_contract_controller_test.exs | 2 +- .../smart_contract/contract_with_lib.json | 13 ++++++ .../lib/explorer/smart_contract/verifier.ex | 5 +++ .../smart_contract/publisher_test.exs | 2 +- .../explorer/smart_contract/verifier_test.exs | 44 ++++++++++++++++++- .../smart_contract/contract_with_lib.json | 13 ++++++ 8 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 apps/block_scout_web/test/support/fixture/smart_contract/contract_with_lib.json create mode 100644 apps/explorer/test/support/fixture/smart_contract/contract_with_lib.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c3b028b8..328b70a62a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2964](https://github.com/poanetwork/blockscout/pull/2964) - Fix bug in skipping of constructor arguments in contract verification - [#2961](https://github.com/poanetwork/blockscout/pull/2961) - Add a guard that addresses is enum in `values` function in `read contract` page - [#2960](https://github.com/poanetwork/blockscout/pull/2960) - Add BLOCKSCOUT_HOST to docker setup - [#2956](https://github.com/poanetwork/blockscout/pull/2956) - Add support of 0.6.x version of compiler diff --git a/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/contract_controller_test.exs b/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/contract_controller_test.exs index 505520a2c0..b00d457426 100644 --- a/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/contract_controller_test.exs +++ b/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/contract_controller_test.exs @@ -647,7 +647,7 @@ defmodule BlockScoutWeb.API.RPC.ContractControllerTest do test "with external libraries", %{conn: conn} do contract_data = - "#{File.cwd!()}/test/support/fixture/smart_contract/compiler_tests.json" + "#{File.cwd!()}/test/support/fixture/smart_contract/contract_with_lib.json" |> File.read!() |> Jason.decode!() |> List.first() diff --git a/apps/block_scout_web/test/block_scout_web/controllers/api/v1/verified_smart_contract_controller_test.exs b/apps/block_scout_web/test/block_scout_web/controllers/api/v1/verified_smart_contract_controller_test.exs index 7e5d41e930..19dd22151a 100644 --- a/apps/block_scout_web/test/block_scout_web/controllers/api/v1/verified_smart_contract_controller_test.exs +++ b/apps/block_scout_web/test/block_scout_web/controllers/api/v1/verified_smart_contract_controller_test.exs @@ -28,7 +28,7 @@ defmodule BlockScoutWeb.API.V1.VerifiedControllerTest do test "verifying a smart contract with external libraries", %{conn: conn} do contract_data = - "#{File.cwd!()}/test/support/fixture/smart_contract/compiler_tests.json" + "#{File.cwd!()}/test/support/fixture/smart_contract/contract_with_lib.json" |> File.read!() |> Jason.decode!() |> List.first() diff --git a/apps/block_scout_web/test/support/fixture/smart_contract/contract_with_lib.json b/apps/block_scout_web/test/support/fixture/smart_contract/contract_with_lib.json new file mode 100644 index 0000000000..aba02b0ec4 --- /dev/null +++ b/apps/block_scout_web/test/support/fixture/smart_contract/contract_with_lib.json @@ -0,0 +1,13 @@ +[ + { + "compiler_version": "v0.5.11+commit.c082d0b4", + "contract": "pragma solidity 0.5.11;library BadSafeMath { function add(uint256 a, uint256 b) public pure returns (uint256) { uint256 c = a + 2 * b; require(c >= a, \"SafeMath: addition overflow\"); return c; }}contract SimpleStorage { uint256 storedData = 10; using BadSafeMath for uint256; function increment(uint256 x) public { storedData = storedData.add(x); } function set(uint256 x) public { storedData = x; } function get() public view returns (uint256) { return storedData; }}", + "expected_bytecode": "608060405234801561001057600080fd5b50600436106100415760003560e01c806360fe47b1146100465780636d4ce63c146100655780637cf5dab01461007f575b600080fd5b6100636004803603602081101561005c57600080fd5b503561009c565b005b61006d6100a1565b60408051918252519081900360200190f35b6100636004803603602081101561009557600080fd5b50356100a7565b600055565b60005490565b600054733662e222908fa35f013bee37695d0510098b6d7363771602f79091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561010257600080fd5b505af4158015610116573d6000803e3d6000fd5b505050506040513d602081101561012c57600080fd5b50516000555056fea265627a7a723158203e59bfb9a5a2e55d38231922c86d8b2ec9b66cb2f6595613674bc4e15290b60764736f6c634300050b0032", + "external_libraries": { + "BadSafeMath": "0x3662e222908fa35f013bee37695d0510098b6d73" + }, + "name": "SimpleStorage", + "optimize": true + } + ] + \ No newline at end of file diff --git a/apps/explorer/lib/explorer/smart_contract/verifier.ex b/apps/explorer/lib/explorer/smart_contract/verifier.ex index 9b49dca97d..5eef57d64a 100644 --- a/apps/explorer/lib/explorer/smart_contract/verifier.ex +++ b/apps/explorer/lib/explorer/smart_contract/verifier.ex @@ -60,6 +60,7 @@ defmodule Explorer.SmartContract.Verifier do defp compare_bytecodes({:error, :name}, _, _, _), do: {:error, :name} defp compare_bytecodes({:error, _}, _, _, _), do: {:error, :compilation} + # credo:disable-for-next-line /Complexity/ defp compare_bytecodes( {:ok, %{"abi" => abi, "bytecode" => bytecode}}, address_hash, @@ -73,6 +74,7 @@ defmodule Explorer.SmartContract.Verifier do |> Chain.smart_contract_bytecode() blockchain_bytecode_without_whisper = extract_bytecode(blockchain_bytecode) + empty_constructor_arguments = arguments_data == "" or arguments_data == nil cond do generated_bytecode != blockchain_bytecode_without_whisper && @@ -88,6 +90,9 @@ defmodule Explorer.SmartContract.Verifier do {:error, :constructor_arguments} end + has_constructor_with_params?(abi) && empty_constructor_arguments -> + {:error, :constructor_arguments} + has_constructor_with_params?(abi) && !ConstructorArguments.verify(address_hash, blockchain_bytecode_without_whisper, arguments_data) -> {:error, :constructor_arguments} diff --git a/apps/explorer/test/explorer/smart_contract/publisher_test.exs b/apps/explorer/test/explorer/smart_contract/publisher_test.exs index 7a0d33fb45..79fbe55f63 100644 --- a/apps/explorer/test/explorer/smart_contract/publisher_test.exs +++ b/apps/explorer/test/explorer/smart_contract/publisher_test.exs @@ -131,7 +131,7 @@ defmodule Explorer.SmartContract.PublisherTest do test "validates and creates smart contract with external libraries" do contract_data = - "#{File.cwd!()}/test/support/fixture/smart_contract/compiler_tests.json" + "#{File.cwd!()}/test/support/fixture/smart_contract/contract_with_lib.json" |> File.read!() |> Jason.decode!() |> List.first() diff --git a/apps/explorer/test/explorer/smart_contract/verifier_test.exs b/apps/explorer/test/explorer/smart_contract/verifier_test.exs index 4cab8028c8..1fdbc2331b 100644 --- a/apps/explorer/test/explorer/smart_contract/verifier_test.exs +++ b/apps/explorer/test/explorer/smart_contract/verifier_test.exs @@ -30,7 +30,7 @@ defmodule Explorer.SmartContract.VerifierTest do test "verifies the generated bytecode with external libraries" do contract_data = - "#{File.cwd!()}/test/support/fixture/smart_contract/compiler_tests.json" + "#{File.cwd!()}/test/support/fixture/smart_contract/contract_with_lib.json" |> File.read!() |> Jason.decode!() |> List.first() @@ -113,8 +113,17 @@ defmodule Explorer.SmartContract.VerifierTest do bytecode = "0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063256fec88146100545780633fa4f245146100a9578063812600df146100d2575b600080fd5b341561005f57600080fd5b6100676100f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100b457600080fd5b6100bc61011b565b6040518082815260200191505060405180910390f35b34156100dd57600080fd5b6100f36004808035906020019091905050610121565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b806000540160008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505600a165627a7a72305820b81379d1ae9d8e0fde05ee02b8bd170f43f8bd3d54da8b7ec203434a23a298980029" + constructor_arguments = "000000000000000000000000000000000000000000000000000000000000000a" + contract_address = insert(:contract_address, contract_code: bytecode) + :transaction + |> insert( + created_contract_address_hash: contract_address.hash, + input: bytecode <> constructor_arguments + ) + |> with_block() + code = """ pragma solidity ^0.4.15; contract Incrementer { @@ -137,7 +146,8 @@ defmodule Explorer.SmartContract.VerifierTest do "compiler_version" => "v0.4.15+commit.bbb8e64f", "evm_version" => "homestead", "name" => "Incrementer", - "optimization" => false + "optimization" => false, + "constructor_arguments" => constructor_arguments } assert {:ok, %{abi: abi}} = Verifier.evaluate_authenticity(contract_address.hash, params) @@ -222,6 +232,36 @@ defmodule Explorer.SmartContract.VerifierTest do assert {:error, :generated_bytecode} = response end + test "returns error when contract has constructor arguments ut they were not provided" do + path = File.cwd!() <> "/test/support/fixture/smart_contract/solidity_0.5.9_smart_contract.sol" + contract = File.read!(path) + + constructor_arguments = "" + + bytecode = + "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633177029f116100715780633177029f1461025f57806354fd4d50146102c557806370a082311461034857806395d89b41146103a0578063a9059cbb14610423578063dd62ed3e14610489576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b6610501565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061059f565b604051808215151515815260200191505060405180910390f35b61019f610691565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610696565b604051808215151515815260200191505060405180910390f35b61024361090f565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610922565b604051808215151515815260200191505060405180910390f35b6102cd610a14565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561030d5780820151818401526020810190506102f2565b50505050905090810190601f16801561033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61038a6004803603602081101561035e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ab2565b6040518082815260200191505060405180910390f35b6103a8610afa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e85780820151818401526020810190506103cd565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b98565b604051808215151515815260200191505060405180910390f35b6104eb6004803603604081101561049f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cfe565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105975780601f1061056c57610100808354040283529160200191610597565b820191906000526020600020905b81548152906001019060200180831161057a57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600090565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610762575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561076e5750600082115b1561090357816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610908565b600090505b9392505050565b600460009054906101000a900460ff1681565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aaa5780601f10610a7f57610100808354040283529160200191610aaa565b820191906000526020600020905b815481529060010190602001808311610a8d57829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610be85750600082115b15610cf357816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610cf8565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490509291505056fea265627a7a72305820fe0ba5210ac95870683c2cb054304b04565703bd16c7d7e956df694c9643c6d264736f6c63430005090032" + + contract_address = insert(:contract_address, contract_code: bytecode) + + :transaction + |> insert( + created_contract_address_hash: contract_address.hash, + input: bytecode <> constructor_arguments + ) + |> with_block() + + params = %{ + "contract_source_code" => contract, + "compiler_version" => "v0.5.9+commit.e560f70d", + "evm_version" => "petersburg", + "name" => "TestToken", + "optimization" => false, + "constructor_arguments" => constructor_arguments + } + + assert {:error, :generated_bytecode} = Verifier.evaluate_authenticity(contract_address.hash, params) + end + test "returns error when there is a compilation problem", %{contract_code_info: contract_code_info} do contract_address = insert(:contract_address, contract_code: contract_code_info.bytecode) diff --git a/apps/explorer/test/support/fixture/smart_contract/contract_with_lib.json b/apps/explorer/test/support/fixture/smart_contract/contract_with_lib.json new file mode 100644 index 0000000000..aba02b0ec4 --- /dev/null +++ b/apps/explorer/test/support/fixture/smart_contract/contract_with_lib.json @@ -0,0 +1,13 @@ +[ + { + "compiler_version": "v0.5.11+commit.c082d0b4", + "contract": "pragma solidity 0.5.11;library BadSafeMath { function add(uint256 a, uint256 b) public pure returns (uint256) { uint256 c = a + 2 * b; require(c >= a, \"SafeMath: addition overflow\"); return c; }}contract SimpleStorage { uint256 storedData = 10; using BadSafeMath for uint256; function increment(uint256 x) public { storedData = storedData.add(x); } function set(uint256 x) public { storedData = x; } function get() public view returns (uint256) { return storedData; }}", + "expected_bytecode": "608060405234801561001057600080fd5b50600436106100415760003560e01c806360fe47b1146100465780636d4ce63c146100655780637cf5dab01461007f575b600080fd5b6100636004803603602081101561005c57600080fd5b503561009c565b005b61006d6100a1565b60408051918252519081900360200190f35b6100636004803603602081101561009557600080fd5b50356100a7565b600055565b60005490565b600054733662e222908fa35f013bee37695d0510098b6d7363771602f79091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561010257600080fd5b505af4158015610116573d6000803e3d6000fd5b505050506040513d602081101561012c57600080fd5b50516000555056fea265627a7a723158203e59bfb9a5a2e55d38231922c86d8b2ec9b66cb2f6595613674bc4e15290b60764736f6c634300050b0032", + "external_libraries": { + "BadSafeMath": "0x3662e222908fa35f013bee37695d0510098b6d73" + }, + "name": "SimpleStorage", + "optimize": true + } + ] + \ No newline at end of file From 87092a4fa218de59a4429707256f85a95ea5b5f9 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Thu, 23 Jan 2020 01:11:45 +0300 Subject: [PATCH 26/31] Fix contract constructor require msg appearance in constructor arguments encoded view --- CHANGELOG.md | 1 + .../lib/explorer/smart_contract/verifier.ex | 24 +- .../verifier/constructor_arguments.ex | 99 +++- .../verifier/constructor_arguments_test.exs | 559 +++++++++++++++++- 4 files changed, 662 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 328b70a62a..286a35b121 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly ### Fixes +- [#2969](https://github.com/poanetwork/blockscout/pull/2969) - Fix contract constructor require msg appearance in constructor arguments encoded view - [#2964](https://github.com/poanetwork/blockscout/pull/2964) - Fix bug in skipping of constructor arguments in contract verification - [#2961](https://github.com/poanetwork/blockscout/pull/2961) - Add a guard that addresses is enum in `values` function in `read contract` page - [#2960](https://github.com/poanetwork/blockscout/pull/2960) - Add BLOCKSCOUT_HOST to docker setup diff --git a/apps/explorer/lib/explorer/smart_contract/verifier.ex b/apps/explorer/lib/explorer/smart_contract/verifier.ex index 5eef57d64a..ce55258358 100644 --- a/apps/explorer/lib/explorer/smart_contract/verifier.ex +++ b/apps/explorer/lib/explorer/smart_contract/verifier.ex @@ -54,18 +54,25 @@ defmodule Explorer.SmartContract.Verifier do external_libs: external_libraries ) - compare_bytecodes(solc_output, address_hash, constructor_arguments, autodetect_contructor_arguments) + compare_bytecodes( + solc_output, + address_hash, + constructor_arguments, + autodetect_contructor_arguments, + contract_source_code + ) end - defp compare_bytecodes({:error, :name}, _, _, _), do: {:error, :name} - defp compare_bytecodes({:error, _}, _, _, _), do: {:error, :compilation} + defp compare_bytecodes({:error, :name}, _, _, _, _), do: {:error, :name} + defp compare_bytecodes({:error, _}, _, _, _, _), do: {:error, :compilation} # credo:disable-for-next-line /Complexity/ defp compare_bytecodes( {:ok, %{"abi" => abi, "bytecode" => bytecode}}, address_hash, arguments_data, - autodetect_contructor_arguments + autodetect_contructor_arguments, + contract_source_code ) do generated_bytecode = extract_bytecode(bytecode) @@ -82,7 +89,7 @@ defmodule Explorer.SmartContract.Verifier do {:error, :generated_bytecode} has_constructor_with_params?(abi) && autodetect_contructor_arguments -> - result = ConstructorArguments.find_constructor_arguments(address_hash, abi) + result = ConstructorArguments.find_constructor_arguments(address_hash, abi, contract_source_code) if result do {:ok, %{abi: abi, contructor_arguments: result}} @@ -94,7 +101,12 @@ defmodule Explorer.SmartContract.Verifier do {:error, :constructor_arguments} has_constructor_with_params?(abi) && - !ConstructorArguments.verify(address_hash, blockchain_bytecode_without_whisper, arguments_data) -> + !ConstructorArguments.verify( + address_hash, + blockchain_bytecode_without_whisper, + arguments_data, + contract_source_code + ) -> {:error, :constructor_arguments} true -> diff --git a/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex b/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex index 69e93f450b..f93eaf3c58 100644 --- a/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex +++ b/apps/explorer/lib/explorer/smart_contract/verifier/constructor_arguments.ex @@ -5,7 +5,7 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do alias ABI.{FunctionSelector, TypeDecoder} alias Explorer.Chain - def verify(address_hash, contract_code, arguments_data) do + def verify(address_hash, contract_code, arguments_data, contract_source_code) do arguments_data = arguments_data |> String.trim_trailing() |> String.trim_leading("0x") creation_code = @@ -18,7 +18,7 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do if verify_older_version(creation_code, contract_code, check_func) do true else - extract_constructor_arguments(creation_code, check_func) + extract_constructor_arguments(creation_code, check_func, contract_source_code) end end @@ -31,22 +31,22 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do |> check_func.() end - defp extract_constructor_arguments(code, check_func) do + defp extract_constructor_arguments(code, check_func, contract_source_code) do case code do # Solidity ~ 4.23 # https://solidity.readthedocs.io/en/v0.4.23/metadata.html "a165627a7a72305820" <> <<_::binary-size(64)>> <> "0029" <> constructor_arguments -> - extract_constructor_arguments_check_func(constructor_arguments, check_func) + extract_constructor_arguments_check_func(constructor_arguments, check_func, contract_source_code) # Solidity >= 0.5.10 https://solidity.readthedocs.io/en/v0.5.10/metadata.html "a265627a7a72305820" <> <<_::binary-size(64)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0032" <> constructor_arguments -> - extract_constructor_arguments_check_func(constructor_arguments, check_func) + extract_constructor_arguments_check_func(constructor_arguments, check_func, contract_source_code) # Solidity >= 0.5.11 https://github.com/ethereum/solidity/blob/develop/Changelog.md#0511-2019-08-12 # Metadata: Update the swarm hash to the current specification, changes bzzr0 to bzzr1 and urls to use bzz-raw:// "a265627a7a72315820" <> <<_::binary-size(64)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0032" <> constructor_arguments -> - extract_constructor_arguments_check_func(constructor_arguments, check_func) + extract_constructor_arguments_check_func(constructor_arguments, check_func, contract_source_code) # Solidity >= 0.6.0 https://github.com/ethereum/solidity/blob/develop/Changelog.md#060-2019-12-17 # https://github.com/ethereum/solidity/blob/26b700771e9cc9c956f0503a05de69a1be427963/docs/metadata.rst#encoding-of-the-metadata-hash-in-the-bytecode @@ -60,27 +60,47 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do # Fixing PR has been created https://github.com/ethereum/solidity/pull/8174 "a264697066735822" <> <<_::binary-size(68)>> <> "64736f6c6343" <> <<_::binary-size(6)>> <> "0033" <> constructor_arguments -> - extract_constructor_arguments_check_func(constructor_arguments, check_func) + extract_constructor_arguments_check_func(constructor_arguments, check_func, contract_source_code) <<>> -> check_func.("") <<_::binary-size(2)>> <> rest -> - extract_constructor_arguments(rest, check_func) + extract_constructor_arguments(rest, check_func, contract_source_code) end end - defp extract_constructor_arguments_check_func(constructor_arguments, check_func) do + defp extract_constructor_arguments_check_func(constructor_arguments, check_func, contract_source_code) do + constructor_arguments = + remove_require_messages_from_constructor_arguments(contract_source_code, constructor_arguments) + check_func_result = check_func.(constructor_arguments) if check_func_result do check_func_result else - extract_constructor_arguments(constructor_arguments, check_func) + extract_constructor_arguments(constructor_arguments, check_func, contract_source_code) end end - def find_constructor_arguments(address_hash, abi) do + def remove_require_messages_from_constructor_arguments(contract_source_code, constructor_arguments) do + msgs_list = + contract_source_code + |> extract_require_messages_from_constructor() + |> Enum.reverse() + + Enum.reduce(msgs_list, constructor_arguments, fn msg, pure_constructor_arguments -> + case String.split(pure_constructor_arguments, msg, parts: 2) do + [_, constructor_arguments_part] -> + constructor_arguments_part + + [_] -> + pure_constructor_arguments + end + end) + end + + def find_constructor_arguments(address_hash, abi, contract_source_code) do creation_code = address_hash |> Chain.contract_creation_input_data() @@ -103,6 +123,61 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArguments do end end - extract_constructor_arguments(creation_code, check_func) + extract_constructor_arguments(creation_code, check_func, contract_source_code) + end + + def extract_require_messages_from_constructor(contract_source_code) do + constructor = find_constructor_content(contract_source_code) + require_contents = find_require_in_constructor(constructor) + + messages_list = + Enum.reduce(require_contents, [], fn require_content, msgs -> + msg = get_require_message_hex(require_content) + if msg, do: [msg | msgs] + end) + + if messages_list, do: messages_list, else: [] + end + + def find_constructor_content(contract_source_code) do + case String.split(contract_source_code, "constructor", parts: 2) do + [_, right_from_contstructor] -> + [_, right_from_contstructor_inside] = String.split(right_from_contstructor, "{", parts: 2) + [constructor, _] = String.split(right_from_contstructor_inside, "}", parts: 2) + constructor + + [_] -> + nil + end + end + + def find_require_in_constructor(constructor) do + if constructor do + [_ | requires] = String.split(constructor, "require") + + Enum.reduce(requires, [], fn right_from_require, requires_list -> + [_ | [right_from_require_inside]] = String.split(right_from_require, "(", parts: 2) + [require_content | _] = String.split(right_from_require_inside, ");", parts: 2) + [require_content | requires_list] + end) + else + [] + end + end + + def get_require_message_hex(require_content) do + case String.split(require_content, ",", parts: 2) do + [_ | [msg]] -> + msg + |> String.trim() + |> String.trim_leading("\"") + |> String.trim_trailing("\"") + |> String.trim_leading("'") + |> String.trim_trailing("'") + |> Base.encode16(case: :lower) + + [_] -> + nil + end end end diff --git a/apps/explorer/test/explorer/smart_contract/verifier/constructor_arguments_test.exs b/apps/explorer/test/explorer/smart_contract/verifier/constructor_arguments_test.exs index 968ae4131b..24a40e03ee 100644 --- a/apps/explorer/test/explorer/smart_contract/verifier/constructor_arguments_test.exs +++ b/apps/explorer/test/explorer/smart_contract/verifier/constructor_arguments_test.exs @@ -23,7 +23,7 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArgumentsTest do |> insert(created_contract_address_hash: address.hash, input: input_data) |> with_block() - assert ConstructorArguments.verify(address.hash, "", constructor_arguments) + assert ConstructorArguments.verify(address.hash, "", constructor_arguments, "") end test "verifies with multiple nested constructor arguments" do @@ -43,7 +43,7 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArgumentsTest do |> insert(created_contract_address_hash: address.hash, input: input_data) |> with_block() - assert ConstructorArguments.verify(address.hash, "", constructor_arguments) + assert ConstructorArguments.verify(address.hash, "", constructor_arguments, "") end test "verifies older version of Solidity where constructor_arguments were directly appended to source code" do @@ -64,7 +64,560 @@ defmodule Explorer.SmartContract.Verifier.ConstructorArgumentsTest do |> insert(created_contract_address_hash: address.hash, input: input_data) |> with_block() - assert ConstructorArguments.verify(address.hash, source_code, constructor_arguments) + assert ConstructorArguments.verify(address.hash, source_code, constructor_arguments, "") end + + test "verifies with require messages" do + address = insert(:address) + + source_code = """ + pragma solidity ^0.5.8; + + contract ValidatorProxy { + mapping(address => bool) public isValidator; + address public systemAddress = 0xffffFFFfFFffffffffffffffFfFFFfffFFFfFFfE; + address[] public validators; + + constructor(address[] memory _validators) public { + validators = _validators; + + for (uint i = 0; i < _validators.length; i++) { + isValidator[_validators[i]] = true; + } + } + + function updateValidators(address[] memory newValidators) public { + require( + tx.origin == systemAddress, // solium-disable-line security/no-tx-origin + "Only the system address can be responsible for the call of this function." + ); + + for (uint i = 0; i < validators.length; i++) { + isValidator[validators[i]] = false; + } + + for (uint i = 0; i < newValidators.length; i++) { + isValidator[newValidators[i]] = true; + } + + validators = newValidators; + } + + function numberOfValidators() public view returns (uint) { + return validators.length; + } + + function getValidators() public view returns (address[] memory) { + return validators; + } + } + + + contract HomeBridge { + struct TransferState { + mapping(address => bool) isConfirmedByValidator; + address[] confirmingValidators; + bool isCompleted; + } + + event Confirmation( + bytes32 transferHash, + bytes32 transactionHash, + uint256 amount, + address recipient, + address indexed validator + ); + event TransferCompleted( + bytes32 transferHash, + bytes32 transactionHash, + uint256 amount, + address recipient, + bool coinTransferSuccessful + ); + + mapping(bytes32 => TransferState) public transferState; + ValidatorProxy public validatorProxy; + uint public validatorsRequiredPercent; + + constructor(ValidatorProxy _proxy, uint _validatorsRequiredPercent) public { + require( + address(_proxy) != address(0), + "proxy must not be the zero address!" + ); + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + "_validatorsRequiredPercent must be between 0 and 100" + ); + validatorProxy = _proxy; + validatorsRequiredPercent = _validatorsRequiredPercent; + } + + function fund() external payable {} + + function confirmTransfer( + bytes32 transferHash, + bytes32 transactionHash, + uint256 amount, + address payable recipient + ) public { + // We compute a keccak hash for the transfer and use that as an identifier for the transfer + bytes32 transferStateId = keccak256( + abi.encodePacked(transferHash, transactionHash, amount, recipient) + ); + + require( + !transferState[transferStateId].isCompleted, + "transfer already completed" + ); + + require( + validatorProxy.isValidator(msg.sender), + "must be validator to confirm transfers" + ); + + require( + recipient != address(0), + "recipient must not be the zero address!" + ); + + require(amount > 0, "amount must not be zero"); + + if (_confirmTransfer(transferStateId, msg.sender)) { + // We have to emit the events here, because _confirmTransfer + // doesn't even receive the necessary information to do it on + // its own + + emit Confirmation( + transferHash, + transactionHash, + amount, + recipient, + msg.sender + ); + } + + if (_requiredConfirmationsReached(transferStateId)) { + transferState[transferStateId].isCompleted = true; + delete transferState[transferStateId].confirmingValidators; + bool coinTransferSuccessful = recipient.send(amount); + emit TransferCompleted( + transferHash, + transactionHash, + amount, + recipient, + coinTransferSuccessful + ); + } + } + + // check if a 2nd confirmTransfer would complete a transfer. this + // can happen after validator set changes. + function reconfirmCompletesTransfer( + bytes32 transferHash, + bytes32 transactionHash, + uint256 amount, + address payable recipient + ) public view returns (bool) { + require( + recipient != address(0), + "recipient must not be the zero address!" + ); + require(amount > 0, "amount must not be zero"); + + // We compute a keccak hash for the transfer and use that as an identifier for the transfer + bytes32 transferStateId = keccak256( + abi.encodePacked(transferHash, transactionHash, amount, recipient) + ); + + require( + !transferState[transferStateId].isCompleted, + "transfer already completed" + ); + + address[] storage confirmingValidators = transferState[transferStateId] + .confirmingValidators; + uint numConfirming = 0; + for (uint i = 0; i < confirmingValidators.length; i++) { + if (validatorProxy.isValidator(confirmingValidators[i])) { + numConfirming += 1; + } + } + return numConfirming >= _getNumRequiredConfirmations(); + } + + function _purgeConfirmationsFromExValidators(bytes32 transferStateId) + internal + { + address[] storage confirmingValidators = transferState[transferStateId] + .confirmingValidators; + + uint i = 0; + while (i < confirmingValidators.length) { + if (validatorProxy.isValidator(confirmingValidators[i])) { + i++; + } else { + confirmingValidators[i] = confirmingValidators[confirmingValidators + .length - + 1]; + confirmingValidators.length--; + } + } + } + + function _getNumRequiredConfirmations() internal view returns (uint) { + return + ( + validatorProxy.numberOfValidators() * + validatorsRequiredPercent + + 99 + ) / + 100; + } + + function _confirmTransfer(bytes32 transferStateId, address validator) + internal + returns (bool) + { + if (transferState[transferStateId].isConfirmedByValidator[validator]) { + return false; + } + + transferState[transferStateId].isConfirmedByValidator[validator] = true; + transferState[transferStateId].confirmingValidators.push(validator); + + return true; + } + + function _requiredConfirmationsReached(bytes32 transferStateId) + internal + returns (bool) + { + uint numRequired = _getNumRequiredConfirmations(); + + /* We now check if we have enough confirmations. If that is the + case, we purge ex-validators from the list of confirmations + and do the check again, so we do not count + confirmations from ex-validators. + + This means that old confirmations stay valid over validator set changes given + that the validator doesn't lose its validator status. + + The double check is here to save some gas. If checking the validator + status for all confirming validators becomes too costly, we can introduce + a 'serial number' for the validator set changes and determine if there + was a change of the validator set between the first confirmation + and the last confirmation and skip calling into + _purgeConfirmationsFromExValidators if there were no changes. + */ + + if ( + transferState[transferStateId].confirmingValidators.length < + numRequired + ) { + return false; + } + + _purgeConfirmationsFromExValidators(transferStateId); + + if ( + transferState[transferStateId].confirmingValidators.length < + numRequired + ) { + return false; + } + + return true; + } + } + """ + + constructor_arguments = + "5f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e642031303070726f7879206d757374206e6f7420626520746865207a65726f206164647265737321000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" + + input = + "608060405234801561001057600080fd5b50604051604080610ebb8339810180604052604081101561003057600080fd5b5080516020909101516001600160a01b038216610098576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610e986023913960400191505060405180910390fd5b60648111156100f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180610e646034913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b039390931692909217909155600255610d3f806101256000396000f3fe6080604052600436106100655760003560e01c8063397bc64111610043578063397bc64114610135578063b60d42881461015f578063f176cde71461016957610065565b806305dab2881461006a5780630b1ec76014610091578063236459c7146100cf575b600080fd5b34801561007657600080fd5b5061007f6101bb565b60408051918252519081900360200190f35b34801561009d57600080fd5b506100a66101c1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100db57600080fd5b50610121600480360360808110156100f257600080fd5b508035906020810135906040810135906060013573ffffffffffffffffffffffffffffffffffffffff166101dd565b604080519115158252519081900360200190f35b34801561014157600080fd5b506101216004803603602081101561015857600080fd5b5035610484565b61016761049c565b005b34801561017557600080fd5b506101676004803603608081101561018c57600080fd5b508035906020810135906040810135906060013573ffffffffffffffffffffffffffffffffffffffff1661049e565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff821661024b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cc76027913960400191505060405180910390fd5b600083116102ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f616d6f756e74206d757374206e6f74206265207a65726f000000000000000000604482015290519081900360640190fd5b604080516020808201889052818301879052606080830187905273ffffffffffffffffffffffffffffffffffffffff8616901b608083015282516074818403018152609490920183528151918101919091206000818152918290529190206002015460ff161561038b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c65746564000000000000604482015290519081900360640190fd5b600081815260208190526040812060010190805b825481101561046e57600154835473ffffffffffffffffffffffffffffffffffffffff9091169063facd743b908590849081106103d857fe5b600091825260209182902001546040805163ffffffff851660e01b815273ffffffffffffffffffffffffffffffffffffffff90921660048301525160248083019392829003018186803b15801561042e57600080fd5b505afa158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b505115610466576001820191505b60010161039f565b506104776108a7565b1115979650505050505050565b60006020819052908152604090206002015460ff1681565b565b604080516020808201879052818301869052606080830186905273ffffffffffffffffffffffffffffffffffffffff8516901b608083015282516074818403018152609490920183528151918101919091206000818152918290529190206002015460ff161561056f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c65746564000000000000604482015290519081900360640190fd5b600154604080517ffacd743b000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163facd743b91602480820192602092909190829003018186803b1580156105e057600080fd5b505afa1580156105f4573d6000803e3d6000fd5b505050506040513d602081101561060a57600080fd5b5051610661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610cee6026913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166106cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cc76027913960400191505060405180910390fd5b6000831161073c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f616d6f756e74206d757374206e6f74206265207a65726f000000000000000000604482015290519081900360640190fd5b6107468133610954565b156107ab57604080518681526020810186905280820185905273ffffffffffffffffffffffffffffffffffffffff84166060820152905133917fdee96a12459a8c17d4cf9571d9ab18de19fa1055adff514e2d25595382d218df919081900360800190a25b6107b481610a35565b156108a05760008181526020819052604081206002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915561080392910190610c67565b60405160009073ffffffffffffffffffffffffffffffffffffffff84169085156108fc0290869084818181858888f1604080518c8152602081018c90528082018b905273ffffffffffffffffffffffffffffffffffffffff8a166060820152821515608082015290519196507f546c8621785b0cc9f951c75b68621fbdfce93ba6df3943b1271813c3598852d1955081900360a0019350915050a1505b5050505050565b60006064600254600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6832ea96040518163ffffffff1660e01b815260040160206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d602081101561094057600080fd5b5051026063018161094d57fe5b0490505b90565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561099257506000610a2f565b5060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff851680855281845291842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155848452908101805480830182559085529290932090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b92915050565b600080610a406108a7565b600084815260208190526040902060010154909150811115610a66576000915050610a98565b610a6f83610a9d565b600083815260208190526040902060010154811115610a92576000915050610a98565b60019150505b919050565b6000818152602081905260408120600101905b8154811015610c6257600154825473ffffffffffffffffffffffffffffffffffffffff9091169063facd743b90849084908110610ae957fe5b600091825260209182902001546040805163ffffffff851660e01b815273ffffffffffffffffffffffffffffffffffffffff90921660048301525160248083019392829003018186803b158015610b3f57600080fd5b505afa158015610b53573d6000803e3d6000fd5b505050506040513d6020811015610b6957600080fd5b505115610b7857600101610c5d565b815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ba857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281548110610bdf57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558154610c5b837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301610c88565b505b610ab0565b505050565b5080546000825590600052602060002090810190610c859190610ca8565b50565b815481835581811115610c6257600083815260209020610c629181019083015b61095191905b80821115610cc25760008155600101610cae565b509056fe726563697069656e74206d757374206e6f7420626520746865207a65726f2061646472657373216d7573742062652076616c696461746f7220746f20636f6e6669726d207472616e7366657273a165627a7a7230582050f9daa0f47602e3462444b6fc1dc592b21ec7e054969a8a5a1846570c2570cc00295f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e642031303070726f7879206d757374206e6f7420626520746865207a65726f206164647265737321000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" + + input_data = %Data{ + bytes: Base.decode16!(input, case: :lower) + } + + :transaction + |> insert(created_contract_address_hash: address.hash, input: input_data) + |> with_block() + + assert ConstructorArguments.verify(address.hash, input, constructor_arguments, source_code) + end + + test "get require messages from constructor" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(address _proxy, uint256 _validatorsRequiredPercent) public { + require ( + address(_proxy) != address(0), + + + + "proxy must not be the zero address!" + ); + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + "_validatorsRequiredPercent must be between 0 and 100" + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [ + "70726f7879206d757374206e6f7420626520746865207a65726f206164647265737321", + "5f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e6420313030" + ] + end + + test "get require messages with a single quote from constructor" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(address _proxy, uint256 _validatorsRequiredPercent) public { + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + '_validatorsRequiredPercent must be between 0 and 100' + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [ + "5f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e6420313030" + ] + end + + test "get require messages with different quotes inside from constructor" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(uint256 _validatorsRequiredPercent) public { + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + "_val\"idatorsReq'uiredPercent must be ' between \" 0 and 100" + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [ + "5f76616c22696461746f727352657127756972656450657263656e74206d7573742062652027206265747765656e2022203020616e6420313030" + ] + end + + test "get empty require messages from constructor with require without message" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(uint256 _validatorsRequiredPercent) public { + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100 + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [] + end + + test "get empty require messages from constructor" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(address _proxy, uint256 _validatorsRequiredPercent) public { + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [] + end + end + + test "get empty require messages if no constructor" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + } + """ + + result = ConstructorArguments.extract_require_messages_from_constructor(contract_source_code) + + assert result == [] + end + + test "returns purified constructor arguments" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(address _proxy, uint256 _validatorsRequiredPercent) public { + require ( + address(_proxy) != address(0), + + + + "proxy must not be the zero address!" + ); + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + "_validatorsRequiredPercent must be between 0 and 100" + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + dirty_constructor_arguments = + "5f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e642031303070726f7879206d757374206e6f7420626520746865207a65726f206164647265737321000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" + + result = + ConstructorArguments.remove_require_messages_from_constructor_arguments( + contract_source_code, + dirty_constructor_arguments + ) + + assert result == + "000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" + end + + test "didn't replace text param if it is the same as message in require" do + contract_source_code = """ + pragma solidity 0.5.11; + + + contract HomeBridge { + string public param; + uint public param2; + + constructor(string memory test, uint test2) public { + require( + test2 != 0, + + "proxy must not be the zero address!" + ); + + param = test; + param2 = test2; + } + } + """ + + dirty_constructor_arguments = + "70726f7879206d757374206e6f7420626520746865207a65726f2061646472657373210000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002370726f7879206d757374206e6f7420626520746865207a65726f2061646472657373210000000000000000000000000000000000000000000000000000000000" + + result = + ConstructorArguments.remove_require_messages_from_constructor_arguments( + contract_source_code, + dirty_constructor_arguments + ) + + # Arg [0] (string) : 70726f7879206d757374206e6f7420626520746865207a65726f206164647265737321 + # Arg [1] (uint256) : 45 + assert result == + "0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002370726f7879206d757374206e6f7420626520746865207a65726f2061646472657373210000000000000000000000000000000000000000000000000000000000" + end + + test "returns the same constructor arguments if no matches in require hexed messages" do + contract_source_code = """ + pragma solidity 0.6.1; + + + contract HomeBridge { + uint public validatorsRequiredPercent; + + constructor(address _proxy, uint256 _validatorsRequiredPercent) public { + require ( + address(_proxy) != address(0), + + + + "proxy must not be the zero address!" + ); + + + require( + _validatorsRequiredPercent >= 0 && + _validatorsRequiredPercent <= 100, + "_validatorsRequiredPercent must be between 0 and 100" + ); + validatorsRequiredPercent = _validatorsRequiredPercent; + } + } + """ + + dirty_constructor_arguments = + "4f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e642031303070726f7879206d757374206e6f7420626520746864207a65726f206164647265737321000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" + + result = + ConstructorArguments.remove_require_messages_from_constructor_arguments( + contract_source_code, + dirty_constructor_arguments + ) + + assert result == + "4f76616c696461746f7273526571756972656450657263656e74206d757374206265206265747765656e203020616e642031303070726f7879206d757374206e6f7420626520746864207a65726f206164647265737321000000000000000000000000fb5a36f0e12cef9f88d95f0e02cad4ba183336dc0000000000000000000000000000000000000000000000000000000000000032" end end From ca9a8cf629b23f5589ce15fe7ff430acb29075e5 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Sun, 26 Jan 2020 13:12:45 +0300 Subject: [PATCH 27/31] Compiler nightly builds as an option --- CHANGELOG.md | 1 + .../assets/js/pages/verification_form.js | 40 +++++++++++++++++++ .../new.html.eex | 32 ++++++++++++--- apps/block_scout_web/priv/gettext/default.pot | 34 ++++++++-------- .../priv/gettext/en/LC_MESSAGES/default.po | 34 ++++++++-------- 5 files changed, 104 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 328b70a62a..45a71bcfb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Features - [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2949](https://github.com/poanetwork/blockscout/pull/2949), [#2940](https://github.com/poanetwork/blockscout/pull/2940), [#2958](https://github.com/poanetwork/blockscout/pull/2958) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach +- [#2975](https://github.com/poanetwork/blockscout/pull/2975) - Refine UX of contracts verification - [#2926](https://github.com/poanetwork/blockscout/pull/2926) - API endpoint: sum balances except burnt address - [#2918](https://github.com/poanetwork/blockscout/pull/2918) - Add tokenID for tokentx API action explicitly diff --git a/apps/block_scout_web/assets/js/pages/verification_form.js b/apps/block_scout_web/assets/js/pages/verification_form.js index 1267d12c39..795cbf757b 100644 --- a/apps/block_scout_web/assets/js/pages/verification_form.js +++ b/apps/block_scout_web/assets/js/pages/verification_form.js @@ -88,6 +88,26 @@ const elements = { const $contractVerificationPage = $('[data-page="contract-verification"]') +function filterNightlyBuilds (filter) { + var select, options + select = document.getElementById('smart_contract_compiler_version') + options = select.getElementsByTagName('option') + for (const option of options) { + var txtValue = option.textContent || option.innerText + if (filter) { + if (txtValue.toLowerCase().indexOf('nightly') > -1) { + option.style.display = 'none' + } else { + option.style.display = '' + } + } else { + if (txtValue.toLowerCase().indexOf('nightly') > -1) { + option.style.display = '' + } + } + } +} + if ($contractVerificationPage.length) { const store = createStore(reducer) const addressHash = $('#smart_contract_address_hash').val() @@ -116,6 +136,10 @@ if ($contractVerificationPage.length) { }) $(function () { + setTimeout(function () { + $('.nightly-builds-false').trigger('click') + }, 10) + $('.js-btn-add-contract-libraries').on('click', function () { $('.js-smart-contract-libraries-wrapper').show() $(this).hide() @@ -129,6 +153,22 @@ if ($contractVerificationPage.length) { if ($(this).prop('checked')) { $('.constructor-arguments').hide() } }) + $('.nightly-builds-true').on('click', function () { + if ($(this).prop('checked')) { filterNightlyBuilds(false) } + }) + + $('.nightly-builds-false').on('click', function () { + if ($(this).prop('checked')) { filterNightlyBuilds(true) } + }) + + $('.optimization-false').on('click', function () { + if ($(this).prop('checked')) { $('.optimization-runs').hide() } + }) + + $('.optimization-true').on('click', function () { + if ($(this).prop('checked')) { $('.optimization-runs').show() } + }) + $('.js-smart-contract-form-reset').on('click', function () { $('.js-contract-library-form-group').removeClass('active') $('.js-contract-library-form-group').first().addClass('active') diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex index ddaa85a18b..1002375ac2 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex @@ -35,6 +35,28 @@ +
+
+ <%= label f, "Include nightly builds" %> +
+
+
+ <%= radio_button f, :nightly_builds, false, checked: true, class: "form-check-input nightly-builds-false" %> +
+ <%= label :nightly_builds, :false, gettext("No"), class: "radio-text" %> +
+
+ <%= radio_button f, :nightly_builds, true, class: "form-check-input nightly-builds-true", "aria-describedby": "nightly_builds-help-block" %> +
+ <%= label :nightly_builds, :true, gettext("Yes"), class: "radio-text" %> +
+
+ <%= error_tag f, :nightly_builds, id: "nightly_builds-help-block", class: "text-danger form-error" %> +
+
Select yes if you want to show nightly builds.
+
+
+
<%= label f, :compiler_version, gettext("Compiler") %> @@ -62,12 +84,12 @@
- <%= radio_button f, :optimization, false, checked: true, class: "form-check-input" %> + <%= radio_button f, :optimization, false, class: "form-check-input optimization-false" %>
<%= label :smart_contract_optimization, :false, gettext("No"), class: "radio-text" %>
- <%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> + <%= radio_button f, :optimization, true, checked: true, class: "form-check-input optimization-true", "aria-describedby": "optimization-help-block" %>
<%= label :smart_contract_optimization, :true, gettext("Yes"), class: "radio-text" %>
@@ -78,7 +100,7 @@
-
+
<%= label f, :name, gettext("Optimization runs") %>
@@ -110,12 +132,12 @@ <%= label :autodetect_contructor_args, :false, gettext("No"), class: "radio-text" %>
- <%= radio_button f, :autodetect_contructor_args, true, class: "form-check-input autodetecttrue", "aria-describedby": "optimization-help-block" %> + <%= radio_button f, :autodetect_contructor_args, true, class: "form-check-input autodetecttrue", "aria-describedby": "autodetect_contructor_args-help-block" %>
<%= label :autodetect_contructor_args, :true, gettext("Yes"), class: "radio-text" %>
- <%= error_tag f, :autodetect_contructor_args, id: "optimization-help-block", class: "text-danger form-error" %> + <%= error_tag f, :autodetect_contructor_args, id: "autodetect_contructor_args-help-block", class: "text-danger form-error" %>
diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot index e49e104647..1e2f2ccea3 100644 --- a/apps/block_scout_web/priv/gettext/default.pot +++ b/apps/block_scout_web/priv/gettext/default.pot @@ -87,7 +87,7 @@ msgid "A string with the name of the module to be invoked." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:125 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:147 msgid "ABI-encoded Constructor Arguments (if required by the contract)" msgstr "" @@ -266,7 +266,7 @@ msgid "Call Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:274 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:296 #: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47 #: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:54 msgid "Cancel" @@ -289,7 +289,7 @@ msgid "Clear" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:40 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:62 msgid "Compiler" msgstr "" @@ -370,7 +370,7 @@ msgid "Contract Creation Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:139 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:161 msgid "Contract Libraries" msgstr "" @@ -579,7 +579,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address_contract/index.html.eex:45 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:51 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:73 msgid "EVM Version" msgstr "" @@ -599,7 +599,7 @@ msgid "Emission Reward" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:93 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:115 msgid "Enter the Solidity Contract Code" msgstr "" @@ -971,20 +971,20 @@ msgid "Less than" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:154 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:176 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:198 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:220 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:242 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:264 msgid "Library Address" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:144 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:166 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:188 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:210 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:232 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:254 msgid "Library Name" msgstr "" @@ -1010,7 +1010,7 @@ msgid "Loading..." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:268 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:290 msgid "Loading...." msgstr "" @@ -1096,8 +1096,9 @@ msgid "New Smart Contract Verification" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:67 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:110 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:46 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:89 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:132 msgid "No" msgstr "" @@ -1114,7 +1115,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address_contract/index.html.eex:39 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:83 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:105 msgid "Optimization runs" msgstr "" @@ -1218,7 +1219,7 @@ msgid "Request URL" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:271 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:293 msgid "Reset" msgstr "" @@ -1580,7 +1581,7 @@ msgid "Verify & Publish" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:270 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:292 msgid "Verify & publish" msgstr "" @@ -1654,8 +1655,9 @@ msgid "Wei" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:72 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:115 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:51 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:94 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:137 msgid "Yes" msgstr "" diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po index e49e104647..1e2f2ccea3 100644 --- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po @@ -87,7 +87,7 @@ msgid "A string with the name of the module to be invoked." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:125 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:147 msgid "ABI-encoded Constructor Arguments (if required by the contract)" msgstr "" @@ -266,7 +266,7 @@ msgid "Call Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:274 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:296 #: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47 #: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:54 msgid "Cancel" @@ -289,7 +289,7 @@ msgid "Clear" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:40 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:62 msgid "Compiler" msgstr "" @@ -370,7 +370,7 @@ msgid "Contract Creation Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:139 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:161 msgid "Contract Libraries" msgstr "" @@ -579,7 +579,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address_contract/index.html.eex:45 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:51 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:73 msgid "EVM Version" msgstr "" @@ -599,7 +599,7 @@ msgid "Emission Reward" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:93 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:115 msgid "Enter the Solidity Contract Code" msgstr "" @@ -971,20 +971,20 @@ msgid "Less than" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:154 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:176 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:198 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:220 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:242 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:264 msgid "Library Address" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:144 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:166 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:188 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:210 #: lib/block_scout_web/templates/address_contract_verification/new.html.eex:232 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:254 msgid "Library Name" msgstr "" @@ -1010,7 +1010,7 @@ msgid "Loading..." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:268 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:290 msgid "Loading...." msgstr "" @@ -1096,8 +1096,9 @@ msgid "New Smart Contract Verification" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:67 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:110 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:46 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:89 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:132 msgid "No" msgstr "" @@ -1114,7 +1115,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address_contract/index.html.eex:39 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:83 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:105 msgid "Optimization runs" msgstr "" @@ -1218,7 +1219,7 @@ msgid "Request URL" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:271 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:293 msgid "Reset" msgstr "" @@ -1580,7 +1581,7 @@ msgid "Verify & Publish" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:270 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:292 msgid "Verify & publish" msgstr "" @@ -1654,8 +1655,9 @@ msgid "Wei" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:72 -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:115 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:51 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:94 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:137 msgid "Yes" msgstr "" From 694ff3b8fb704afb5e3ac9414907bd2403c05ba2 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Tue, 28 Jan 2020 14:57:50 +0300 Subject: [PATCH 28/31] digest changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f19cd82a17..1dc4c0cdc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## Current +### Features + +### Fixes + +### Chore + + +## 3.0.0-beta + ### Features - [#2835](https://github.com/poanetwork/blockscout/pull/2835), [#2871](https://github.com/poanetwork/blockscout/pull/2871), [#2872](https://github.com/poanetwork/blockscout/pull/2872), [#2886](https://github.com/poanetwork/blockscout/pull/2886), [#2925](https://github.com/poanetwork/blockscout/pull/2925), [#2936](https://github.com/poanetwork/blockscout/pull/2936), [#2949](https://github.com/poanetwork/blockscout/pull/2949), [#2940](https://github.com/poanetwork/blockscout/pull/2940), [#2958](https://github.com/poanetwork/blockscout/pull/2958) - Add "block_hash" to logs, token_transfers and internal transactions and "pending blocks operations" approach - [#2975](https://github.com/poanetwork/blockscout/pull/2975) - Refine UX of contracts verification From a8d232057e498c4c4bad245d58774b89db7e99d6 Mon Sep 17 00:00:00 2001 From: EtherCore Contributor Date: Wed, 29 Jan 2020 19:42:07 +0900 Subject: [PATCH 29/31] Switch EtherCore logo --- .../assets/static/images/ethercore_logo.svg | 10369 +++++++++++++++- .../static/images/ethercore_testnet_logo.svg | 7646 ++++++++---- 2 files changed, 15505 insertions(+), 2510 deletions(-) diff --git a/apps/block_scout_web/assets/static/images/ethercore_logo.svg b/apps/block_scout_web/assets/static/images/ethercore_logo.svg index 4593bc7427..993c43dec0 100644 --- a/apps/block_scout_web/assets/static/images/ethercore_logo.svg +++ b/apps/block_scout_web/assets/static/images/ethercore_logo.svg @@ -2,241 +2,10138 @@ - + y="0px" width="5899px" height="1720px" viewBox="0 0 5899 1720" enable-background="new 0 0 5899 1720" xml:space="preserve"> + diff --git a/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg b/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg index 1d1ba5b215..d114fb8cd5 100644 --- a/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg +++ b/apps/block_scout_web/assets/static/images/ethercore_testnet_logo.svg @@ -2,2283 +2,5381 @@ - + +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv +IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS +ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD +cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNl +SUQ9InhtcC5paWQ6NkI1MUZCRkY0MjgzMTFFQThCQTdCOTc5NjE1QkRBRjIiIHhtcE1NOkRvY3Vt +ZW50SUQ9InhtcC5kaWQ6NkI1MUZDMDA0MjgzMTFFQThCQTdCOTc5NjE1QkRBRjIiPiA8eG1wTU06 +RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QjUxRkJGRDQyODMxMUVBOEJB +N0I5Nzk2MTVCREFGMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QjUxRkJGRTQyODMxMUVB +OEJBN0I5Nzk2MTVCREFGMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w +bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhgORSkABKkZSURBVHja7NxbrCVXeh/2b62q2vuc06ev +HLKHHHKGl5nR3KTRwJY8ii+SZcUex0hsB47jGLIDA7aDBE5kRw8G/JAgSGIgDwmQhwC5PAaIAcEI +HAQI4jh29BDHlizrBlujGXGGHF56SHaz733O2buq1krVPqebTXJG0002m2Tz9zu9dtWuWmvtWl8V +i2//VGsNgPvh537+P/lAXc/8/kspTTslzn7isXjy08/EsePHY71e3fVcm3kmfT+kvu/nuev0EcMw +xFhKbM6me7+Gv/Ln/rQHCwAAAAAAAAAAAAAAAAAAAAAAAAB4X7RKAHxU5ZxjHIa4fv1GHDu5FzVS +5LaNNB17J3PllOP1i5fSd8+dy6v1ejx16nT91JNPxsMPP7wJua2lKDoAAAAAAAAAAAAAAAAAAAAA +AAAA8MAQbgt8ZNVaI6UUy+Uitre3YmtrGVvLZaTp+F2/TNs2mqaJ69euLb/5zW8+dPX6jQvPfOaz +B1/48o/GZz73+djf24txHBUdAAAAAAAAAAAAAAAAAAAAAAAAAHhgCLcF7puDvWv3dL5S6yZQdrlY +TNsujbW2taYxpSh3PMk0R92E2aZITRup7abt3YfQ5mlcbnIMpT5+Y3/17636/u9Nh/9Jk/PYTseb +1usWAAAAAAAAAAAAAAAAAAAAAAAAAHiwSFsE7pszjzx+T+dLKcU4jnFwcBDrsU9Nyts519V0anXH +k+Q8/cub3b6U6Icx+vHuw23necZapxZP15R+frq6XGv59TqO18exxDgMm2sFAAAAAAAAAAAAAAAA +AAAAAAAAAHhQCLcF7psv/8Qfu6fzbW1tx4XzF+I3/8W/jKvnX6wfOxZjm8daIt/xHDXViKaZdkqs +9vfjRttEv17f9bX0fbsJyR2HdTS5TnNdH/evXy3LLsfJ3RylLGPdD5GS5wAAAAAAAAAAAAAAAAAA +AAAAAAAAeDAItwXumyee+dI9ne/4bkSzdSbid15KN/qX2+M1NyVSX+pdhNtOf/3U1tPrcKhtjLWL +oZS7vpZU2mmWHGMsV2M+Fn0+ePrifvzwbz577uvNzplr88ztdFml1ntag0+fecqDBQAAAAAAAAAA +AAAAAAAAAAAAAAC8L4TbAvfN6mDvns7XNTuxXu1FKv1OiXTy+tCWVJpVRLrjOUopse5LHK9bkZen +YrF9Kko6uPuXadtG0+Qo3emDg3x6mnD7py+X4yf/z1/6nf/pG8+f//tfeOLUlYePb9WDfrinNfj9 +XxRuCwAAAAAAAAAAAAAAAAAAAAAAAAC8P4TbAvdNGcZ3N0GNTW5tbppop9Z1EYuuiUXbRE45D5Ej +1ZruKtx2mnOoOcr8OszLSM3c6l1fWmra6bryPMc4puV0Ye2pVSz+yMVXr/xiXe3/o8d2I+3m4/XG +qvcgAAAAAAAAAAAAAAAAAAAAAAAAAAAPBOG2wH2TUnpX42/G1tZaYyxj9H3EONa0Cbvt2qFt8vQb +08m7CbedupZpXM7TTh2nucfN9p1c3Hxd09hplWOkMkSbuu+eOLa8cOL4Tloulk3TtqUdPQcAAAAA +AAAAAAAAAAAAAAAAAAAAwINBuC1w3yxPL97V+KaJKDXi0qsX4pWXX43r+zW/+vr1s69dGX6mdsfb +0oy/mHJ9fZOCe4dKKlHaFKVp52DcSLVEinrX1zaP2bRU55jbTdBtLeV4k+JrBwerGy+ee/UXr12s +Lw/jUGI+H8kDAQAAAAAAAAAAAAAAAAAAAAAAAAB8qAm3Be6brXcZbttNw8cx4tzLV+O5578Z33rp +xuLitfR7Fsvl/7i1OPbtPu//Ss6l1LsJt40afa5RUrOJm81HIbV3K90ad9Tqpu3mlP7k/sHB4y+e +e/2F87H3Wk7jKt0Kt62bbofjAQAAAAAAAAAAAAAAAAAAAAAAAAA+XITbAh++F1eu0TU15zqWqPly +16ShzbmrZUyljDFH1N6pWmqUYYzNVHMobppjZt9J1OzRuKNg3aZpom3b6IfN/NNmuFbS2ORcjuWc +Dsp0oev1Koa+P/o58bYAAAAAAAAAAAAAAAAAAAAAAAAAwIeLcFvg/qnvbnie819zxGpo0/X1Yru0 +u2e6nebJ6BbXhrR/voxzQmy5q5TYUmqspzbUMn+bpi/TJOWury1txt3c1luLTdP15jxdecnP1Nwe +pDatSi0vRpvHUycfiuXWdtRa331xAAAAAAAAAAAAAAAAAAAAAAAAAADuM+G2wP174byLN86c/7q9 +PNy/suri2xfbkzdK92fT1tbP7tV4KOrwK000dQ6nrdHc8bxz7/3ps48UOYapzXv9XV/fHGg7zzDP +kWqJceijH9po2i6arvt8Wbd/s4/691LOf3e9fzAutrbi0We+FE8+80MxjEOM4+gBAQAAAAAAAAAA +AAAAAAAAAAAAAAA+VITbAvfN+fP772hcSilSTvHqK9fj0qUrzTeefeXRy/vpT/TR/Pttk59JuY2m +Lh5Jtf3JGuMrEfm1O517Drct0/ia8+ZbinFq5e6vcTP25rZGrdPMdYxS5iPlRI7m94x1fKUf4hdW +/di2200cf+js+OiTPxTrYR3jdAIAAAAAAAAAAAAAAAAAAAAAAAAA4MNEuC1w37zw4sV3NK5pmmjb +Jp779nP567/1jbNX9tLPLruTf31Y9af7VYmtrd1YtO1XUuSnoqRvRsp//07nnoNo2zyNTIfRtFGP +tnct3dYOrznnJvp+iFKGmC4/Uq3fHYdhDr09Pf1uHlar1w72rg3roY8yvNNw2zMeLAAAAAAAAAAA +AAAAAAAAAAAAAADgfSHcFrhvrt9Y33HfWiNyTtG1KZaLHDVH3Nhv0isX22a/T586dmrrbLfdRk1N +jNPJfqyLLuKRaciT9W6yad+aZVvf5SLrYWBuSmlqeVrDtB+H119j+aVS2z/dp/E319F8PXeLWC6X +m9/vPR4AAAAAAAAAAAAAAAAAAAAAAAAAwIeMcFvgvtla3vkrZ86bvZkzO5Yh0jCmdrHb7Z55qltd +Pbiyqk3sbB2L3DRx7fpBjEMtbRslNemVejfptnlucxDtGzm36R0E3M5j0mGw7fTr5XCeadJ2ur40 +B9umMaYVfHU6+NVhXf67VWm/s7/q24OD/aHv+xiGwQMCAAAAAAAAAAAAAAAAAAAAAAAAAHyoCLcF +7ptHTnZ33HfZNnF1r4/fefl6vHL+teiGS4sr19sfKfX0n+wWy58aYoy+HyKNJcZSo8nNr7Vt93fa +pv5SKc0d/06JGm1J0TTz6/D2SN136ChXt5QSZRwjNznyJt12nI6Nm9jbnJuvTecPvvWtb/3dg/29 +Xz++s3Ww7NrNmLv+9d//pAcLAAAAAAAAAAAAAAAAAAAAAAAAAHhfCLcF7puHdu883HZ3u41axrh4 +dS9++9vnm2b16vGUdv9w3j7xt7qmm86VGNb9Jpw2ao62Tc/mHP9HTnE+8l1c1DR8Ghcp3du11lqP +2rQ/zV2mj1TqtK1zuO0zw1h+/vkXXrp+4cKFF5545PSrp4/vjMMwTOuJo3zd+SN5aAAAAAAAAAAA +AAAAAAAAAAAAAACADyzhtsB9M4e93qlSDvs2uS6bxe6xnLfqWJYXSu2iRopmen2VNIfSbuJgp+3Y +1GHV1dhPNe48RLdOv1P7Puo4tWlkTWkTRnvXa0tHIbbT5xy4m5omctNN6xg3gbZNztP3xXylMYfY +9uMYNbeX02J7aBezbpVzLuthjH6+njqvqXpoAAAAAAAAAAAAAAAAAAAAAAAAAIAPLOG2wH1TI99R +rzkANjdt5JyiDKutYaxPNvnk8RKLZ6Zze1OXnTT3mcNk0zRrrpFqaevYL2r0dxUJuwm3nYNt63AP +1znPWzahtinl6XuNoYyb603zR9NN19weDCU9NbXPH6xWz11P43fXQynb21tx5tTJw7UX4bYAAAAA +AAAAAAAAAAAAAAAAAAAAwAeXcFvgvsn5zsNtl4su2qaJ1Wq/v3b18mPbi/qXm2b39zbtcitSilrr +m4fMpuPz2MN2h9Lt4969dDTP0A/TG7aP7a2tzdQH++sYyhBt28ViazkVo11c3z/4t29cv/b4xRL/ +9V4u5/bXJZ5+8vF47OxD0/oXse57Dw0AAAAAAAAAAAAAAAAAAAAAAAAA8IEl3Ba4by5dev0H9mma +FONY4sWXDtK3z904ef5y/lKzOPunS+7+ZE7d1CNH1BJzou1hJG2djpRpW8pRm/fv+JpuG7/5XuON +rNy7UW9vKUdtptfr1GpuNtm5edrPOU3ra6arjKmN00LS2WkV/+a1vdXLe2W1Hsf69ah1b3dnq86h +uAertYcGAAAAAAAAAAAAAAAAAAAAAAAAAPjAEm4L3DevnX/lB/ZZLpo4WA3xa7/1wtZvfWf94/n4 +F3/u2MnHfnoYDkoaVzmVPqKOEalskmTz9FFjnLZDyTGOOcp0dLyLq5rDbYdNuO08U9nE3d69m8G2 +JU0zpRy5a6PptqKvKXIt0XaLaNJ02dP5vdU6Vv0Q3WIZi62dMi3pr9QyPtG29b+aTv9qP4zrZjrf +D4OHBgAAAAAAAAAAAAAAAAAAAAAAAAD4wBJuC9w3q4Prbz9YD0Nh27aNbrGItsnRpCHKuBpX63G/ +6evZpstbteRINU8909umSLeiZW9vd+qdjPnBShk34bRp+supbAJup51ommZzxSnlwzV304Kj3xr6 +eLLvV1tp6re9tYyd7e3NFa1XqxjmkNu0GeUhAgAAAAAAAAAAAAAAAAAAAAAAAAA+MITbAvfN1s6J +73uulBLrfoha+lgNudnaObU8daqkG1HOr9fXI8cwtTE2IbRvyXitmwNvbXcjv4Mxv5sU4zhGHYZo +2uk1W2uUoT/6mS5yTrFYtNM2T6fqJvA2N82Vfsgn9lb97pVr16+s1uuxn+rRtl0st+ag2+oBAgAA +AAAAAAAAAAAAAAAAAAAAAAA+UITbAvfNiY9/+m3Hco7ouohzL70Wz37rt2N/NUbeOr19/trOH+pz ++xdyu/hiG0OMQx9jHaPkOeT1MOo1pWlvaiXmkNhm+jJNtAnAvYtXW51mKnUzfg7Jralu5rxbh+Nq +lJRjTG3UNkez3IrFchm59DHsr6dLm8N7UzS5na49xzCsox+n6y1DtM3W57ZOHPurF66vH/qnv/Yv +/0Gqw8tnTp+sX/rSD8cnPvnJWK/XmwBgAAAAAAAAAAAAAAAAAAAAAAAAAIAPCuG2wH1z7MzDbzvW +NBFb2xEvv7If3331cnrl9f1j3cnFV/t0/OdL3v3DkZtIc2BtLhG1bAJk4/DfLZtQ2sjTTjPPeNTu +0BxuW+dXYT78nt7dGg+vpT283radLmkOzR0j5xR5/q2Y1jCvY+pXyrhpc9BtNN3Zqf+fuHD1WnPu +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 +GKZKvv4plAIAAAAAR/GZCoJbMJ/ARYgWBvLZ9XLCRT1OGNFtt92FKhwBkWrm1lHRzmhZIyJfVxTr +fuVs3bX3uu/4XI/Fafoe55O17SwnoxRFcURZVlCW56RNoCjqlWHrSKbDcIT3GIf8Hg7z0EFPffBz +iezUd4ScyvPtwleS246rsYwcW8c1VIbrWhbSUXC8PkK7UulGIn4sXhucf4GiEGuRQ1ob7t2w/o9H +tqr/6KOtVIu1N4VyoQdFqMF78q6gojVOS5atpseddwmdcfZiqiUZ5VmLWu02Oa6H6gH5Z6me5NdZ +cH9qtnNq5YVVOtq3ZOlS079oaHys2f5qu9n8HneavcrEr+S+91bH7SNwExAJKt9PjuuhReY5z6WT +IjkVWXReFNd5576TZflJK5YNPXTW2WffPzE2svX++zbaiWbLjzdbpShW6toL/tdq/Vvi187tN6d6 +rUZr1p5JZ549QvtGx6k1upuU87x6e3P9ioQ3iePGju1b09HRCZdn7Wekif6jSEVFULqPaulg0AlZ +HudscOUgJ2OWDIsi89XGUJzEonPmMdGWdVCdQXWytjUcpnfJFI+ltp0+Ra06wrZgjo6jIovmOidx +TYTpe1qtiY8tW7L02+esO31HkqSh4DE05bo3m216YNOmcryRJohPG4fnWWc8E0UAAAAAwGT+miC3 +XciI2HYZ52GUAgAAwCwiV8t6NlUnr5yHcgAwY7yX8w9UXeQCAADA7CGC2zdR9VXWG1AOAOYF8nnm +WpRhTrCFcy7nNs4QygHAUSEntr6Z6KArVQMAAJg7dC8Qdx3nqSgHADPGWzgf5mxEKQAAAAAAZpRt +VO3DvZsguAW9yxWc13IsSjFnEJHjxVTtQ7kS5QBgykBsO//4HOdP8H4LAAAAAEdBV3B7K+c9KAfo +UXARooXHHxHktieMaMeO3ajCkbaivBmNjKY4jqkRa1IqkDEJZZZaiRktjGvdRqrxUa2in08i/QxS +1O+sJUnwjpTxdHhFnheDZSkkpNBVFx4QBlYiwxOp1uO/pdxBtzvaWaJSI3s4dPW4kil5XiPzi5Dx +UMli6MhIJ8sZVSmylVm1iByDLucPOnQLUL6CUmbKN4z8pwzXXx941rK0jrTzaz35tSKMjEy9fFkP +D4+8Ydu+lls52L8h1Bt7CpUWkfJFFEXOGNNT7+JCKQEuqF5v0MpVp9N4MU63b7if+vqH6Fk//VOk +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 +Eix7UbVGM/dfYmnr9u+uXdZb485DbudyInKOPJeTUokyv2OJvV0CbnOZ1rVOL1xfNa8eHB2O7d7h ++vDoaJtlu4xrmmZX1zsI2QUAAAAAAAAAAAAAAAAAAAAAAAAAeK90t++8aheAe8YS7LoEvO4fHsWH +H3kspu4g2ibF6ubD4yu3x6+/fnvzD6bU/a2+7//mEiSbS45hM0SUKR+07dQ2qyjRXvh9qdTo5ta2 +baRtqG39qaxjCentuja6vom25mjqJkoeI+ccZ5v1N/YOVv/s55566qtPfuzxV0tN9dr161HndW6G +Ifb61hcBAAAAAAAAAAAAAAAAAAAAAAAAALjndXfvvmEXgHtHrUsybHTdKm7dOIi0BMM2EU13a7w9 +3P3e5qU3NlNMv9C1e9G284NUYxinKDXnrmtzU0qtpe4yatOPf12aO6bzfsu4Wn9ay0jb2du2j26J +zR03UUr+wZTH747j5tePru9/7YknPvL9z372s2UYhjg9O41hGGOcxug74bYAAAAAAAAAAAAAAAAA +AAAAAAAAwL2vm8ZiF4B7TI08jZHSuA2pbZoUbZPLMExjLaUbx+Hmph1j/+ggVqs2cs3Rzj9lbRO5 +TFMM6/Gi2bZRSt2Fym6G+Z1lvl5e2byDiptdS02a21JITFOeiyjRpjrPOx9L/p2U8hf7rrzYt/Vg +XmN7dnZWhnGc+07beVJKUX9aCbsAAAAAAAAAAAAAAAAAAAAAAAAAAO+i7hOfftQuAPe0Ju1CXx86 +G/PjHx9e/IP/8/3/+N3nXn08uu4LR3172PVd1LMSm+Gse/ih43jo0UeWoNuYLpDdveTILsGyDz5w +M+7/8Ieiqyk2r9/ZBswu77ywZaI3W6RITTsfuijzfHm+1c33cil5GDbfHYfN98ZpHKec81RKTLnM +zyIuFscLAAAAAAAAAAAAAAAAAAAAAAAAAHBv6D77+Y/bBeBKOKi1bmrcbf9L+5XvvfBGWa/H/dVe +90tN20fOpT85OV098tgn0l/75V+K/T7ibLjozDW6rom2a+ONF16Lk9fvRMlle31Zdftnma+Nvu+j +LHm3858mpSXy9kZEujV3+sP5ePbDAQAAAAAAAAAAAAAAAAAAAAAAAAAAV093vNfZBeBKODg/fvbJ ++07uPn/jt771/Kvja2enf2d/7/BvpzR+rHSrdv/4OO4/3ovDud/JwcXmTbHLmJ3mdndvP2JvHt2W ++ReyuXhxfT+PaSK1XU0lRzOu51vzddNFU87W6ezVX338/qN/+/HHn3h6f9Wu276LJx44itV0d35V +jjJ/AAAAAAAAAAAAAAAAAAAAAAAAAACukm5tD4ArYohdCO1HH9yP9s/fvLPZvPzfX/r2a4e12fyl +pmnupsPDaUpdnIwRpY84HS4+d9NEpDSPizSP3Y+c5rNLhNvm83Db2nQp1SnScBptV6Jb7Q9tWf9m +DG988Wc+9OD/+Buf//nx/ps3487padRSo4y3t+PTNmIXAAAAAAAAAAAAAAAAAAAAAAAAAODq6GwB +cFXU82PbRKy6JlarLnVd93JN6R9GNCepbc5S07W1xrj0rfVycy/xsuOU43S9iTyVaC8Rbtvnuf9c +2GaclvdHSktcbXp9HMYvzRV9+caN4+du3Tgue6s++q6d6+/md01Rp23nuW/1HwwAAAAAAAAAAAAA +AAAAAAAAAAAAXCnCbYErYwmfXSJgh6nEeihRU1f7vn+2S/WZMm76+Vlf89g1za5vc/Fs2nhzTMk5 +ps1ZTGOO2rcXnyCPUdom5vc3S/hu3zVL2O2m5PrVtut++/q14/Vq/zDONmP0p2fzcThf1K5I0bYA +AAAAAAAAAAAAAAAAAAAAAAAAwFUj3Ba4umo6TbU8v8rjfcPZ3VvrYYzI63Q0/7IdzI+b/hJTzS0v +P4ptxCqVaFKOLqULj2/nMUsU7n4X+XDVRJpS9E19aNU2hwerZi6snORSi/80AAAAAAAAAAAAAAAA +AAAAAAAAAOCDomvsAXBFLOGxdXvSREopco065TzWunmjzeu9puTjl55/oXn6D/44Vl3EZvzxc9Za +o8zt6HAvjo+vx3i2iSaV+cexbo8Xrm0biDuflLwq09BMw/puk+p/6FZ735irPcnTVErOsXRZ+jXJ +/ycAAAAAAAAAAAAAAAAAAAAAAAAAcLV1rT0ArogljHsJt61Nuw23rfNFLhFTqeuu33vxYK/tnv3u +8/HKS/95fh7b5z9OKTWGcYgPP/pIfOpnPxnXDo9ivjW/o9keL6rGUk+a5xqP7p6cxsnp6e8fRvqn +fbS/t9fGmNuyDdJd6to2/50AAAAAAAAAAAAAAAAAAAAAAAAAwBXXPfft79oF4EpYAmG34bZ378Td +u6dx/2ETn3rkeuzV/ehSHaLtXhrWm2F9drrtly6QIFtLjWYco9ucRT09i2bVx36b3grPvai+jWia +FKtU/uiwT//owUcf+u3HHnvs6bbrN6t5vr2mxNGt++LO2MR4WmJ+JQAAAAAAAAAAAAAAAAAAAAAA +AADAldZ953f/p10Arpi6/ffwtS4eOrr1tptxcn68xFQ1SilxcHQ9rh3vR99FlHT5iro2op3bYVue +vXnY/fNPfOIjr37mM5/Z1HnuaZq2fZbA3NeGefJxumyVAAAAAAAAAAAAAAAAAAAAAAAAAAD3nG44 +O7MLwNWSmmi7NlZz69p2mxNbY0mkreXSc9UaSwBtv6TTxhJ0O1/X+k6m2Y6bpjGNwyb1bTNdPzqM +nHMM47h9PuUS4zTN76vboFsAAAAAAAAAAAAAAAAAAAAAAAAAgKus6/f27AJwJU2lzi3/hLMsgbYl +6jhFOw7L5Xx9+TlTLCG5TWw2Q3N6tu7mls7Wm+3c4zi+1a9dMm0F2wIAAAAAAAAAAAAAAAAAAAAA +AAAAHwCdLQD+bEvbsNlUc8R4GpGXgNty+WnK/HPaNpGmzTxJPDNPOtlbAAAAAAAAAAAAAAAAAAAA +AAAAAOCDTLgtwBJwW0ukPG5DblOtl58hzeOjSfP4nFLKS2AuAAAAAAAAAAAAAAAAAAAAAAAAAMAH +2f8DMJjHxTKWV1gAAAAASUVORK5CYII="> From b89860205117177a197f5a77678f698ac56bb4f8 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 29 Jan 2020 13:34:46 +0300 Subject: [PATCH 30/31] Fix web manifest accessibility --- CHANGELOG.md | 4 ++-- .../assets/static/{site.webmanifest => manifest.webmanifest} | 0 apps/block_scout_web/lib/block_scout_web/endpoint.ex | 4 ++-- .../lib/block_scout_web/templates/layout/app.html.eex | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename apps/block_scout_web/assets/static/{site.webmanifest => manifest.webmanifest} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 283fb93df2..635849b4c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,8 @@ ### Features ### Fixes - -- [#2897]( https://github.com/poanetwork/blockscout/pull/2897) - remove duplicate indexes +- [#2988](https://github.com/poanetwork/blockscout/pull/2988) - Fix web manifest accessibility +- [#2897](https://github.com/poanetwork/blockscout/pull/2897) - remove duplicate indexes ### Chore diff --git a/apps/block_scout_web/assets/static/site.webmanifest b/apps/block_scout_web/assets/static/manifest.webmanifest similarity index 100% rename from apps/block_scout_web/assets/static/site.webmanifest rename to apps/block_scout_web/assets/static/manifest.webmanifest diff --git a/apps/block_scout_web/lib/block_scout_web/endpoint.ex b/apps/block_scout_web/lib/block_scout_web/endpoint.ex index 86e86ad79b..f293f83ec3 100644 --- a/apps/block_scout_web/lib/block_scout_web/endpoint.ex +++ b/apps/block_scout_web/lib/block_scout_web/endpoint.ex @@ -29,9 +29,9 @@ defmodule BlockScoutWeb.Endpoint do browserconfig.xml mstile-150x150.png safari-pinned-tab.svg - site.manifest robots.txt - ) + ), + only_matching: ~w(manifest) ) # Code reloading can be explicitly enabled under the diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex index cde1169f3d..ecab786228 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex @@ -12,7 +12,7 @@ "> "> "> - "> + "> " color="#5bbad5"> "> From ec9de71d178c31536f04b3146ba9a7795fb25674 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Wed, 29 Jan 2020 16:40:01 +0300 Subject: [PATCH 31/31] Introduce API_PATH env var --- CHANGELOG.md | 4 ++-- .../assets/js/lib/try_eth_api.js | 9 ++++---- apps/block_scout_web/config/config.exs | 3 ++- apps/block_scout_web/config/dev.exs | 3 ++- apps/block_scout_web/config/prod.exs | 3 ++- .../block_scout_web/views/api_docs_view.ex | 21 +++++++++++++++---- .../views/tokens/instance/overview_view.ex | 5 +++-- apps/block_scout_web/priv/gettext/default.pot | 4 ++-- .../priv/gettext/en/LC_MESSAGES/default.po | 4 ++-- .../views/api_docs_view_test.exs | 6 +++--- 10 files changed, 39 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 283fb93df2..79432c24bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,8 @@ ### Features ### Fixes - -- [#2897]( https://github.com/poanetwork/blockscout/pull/2897) - remove duplicate indexes +- [#2989](https://github.com/poanetwork/blockscout/pull/2989) - Introduce API_PATH env var +- [#2897](https://github.com/poanetwork/blockscout/pull/2897) - remove duplicate indexes ### Chore diff --git a/apps/block_scout_web/assets/js/lib/try_eth_api.js b/apps/block_scout_web/assets/js/lib/try_eth_api.js index 30299431be..fa611e5c4a 100644 --- a/apps/block_scout_web/assets/js/lib/try_eth_api.js +++ b/apps/block_scout_web/assets/js/lib/try_eth_api.js @@ -44,8 +44,9 @@ function parseInput (input) { } } -function dropDomain (url) { - return new URL(url).pathname +function composeRequestUrl () { + const url = $('[data-endpoint-url]').attr('data-endpoint-url') + return url } $('button[data-try-eth-api-ui-button-type="execute"]').click(event => { @@ -64,10 +65,8 @@ $('button[data-try-eth-api-ui-button-type="execute"]').click(event => { clickedButton.html(loadingText) } - const url = $('[data-endpoint-url]').attr('data-endpoint-url') - $.ajax({ - url: dropDomain(url), + url: composeRequestUrl(), type: 'POST', data: JSON.stringify(formData), dataType: 'json', diff --git a/apps/block_scout_web/config/config.exs b/apps/block_scout_web/config/config.exs index e5d7ed947c..8c96401f9a 100644 --- a/apps/block_scout_web/config/config.exs +++ b/apps/block_scout_web/config/config.exs @@ -41,7 +41,8 @@ config :block_scout_web, BlockScoutWeb.Endpoint, url: [ scheme: System.get_env("BLOCKSCOUT_PROTOCOL") || "http", host: System.get_env("BLOCKSCOUT_HOST") || "localhost", - path: System.get_env("NETWORK_PATH") || "/" + path: System.get_env("NETWORK_PATH") || "/", + api_path: System.get_env("API_PATH") || "/" ], render_errors: [view: BlockScoutWeb.ErrorView, accepts: ~w(html json)], pubsub: [name: BlockScoutWeb.PubSub] diff --git a/apps/block_scout_web/config/dev.exs b/apps/block_scout_web/config/dev.exs index de386f1a5d..fa1e25341d 100644 --- a/apps/block_scout_web/config/dev.exs +++ b/apps/block_scout_web/config/dev.exs @@ -21,7 +21,8 @@ config :block_scout_web, BlockScoutWeb.Endpoint, url: [ scheme: "http", host: System.get_env("BLOCKSCOUT_HOST") || "localhost", - path: System.get_env("NETWORK_PATH") || "/" + path: System.get_env("NETWORK_PATH") || "/", + api_path: System.get_env("API_PATH") || "/" ], https: [ port: (port && port + 1) || 4001, diff --git a/apps/block_scout_web/config/prod.exs b/apps/block_scout_web/config/prod.exs index 00cedfe8c3..4d97721ce4 100644 --- a/apps/block_scout_web/config/prod.exs +++ b/apps/block_scout_web/config/prod.exs @@ -23,7 +23,8 @@ config :block_scout_web, BlockScoutWeb.Endpoint, scheme: System.get_env("BLOCKSCOUT_PROTOCOL") || "https", port: System.get_env("PORT"), host: System.get_env("BLOCKSCOUT_HOST") || "localhost", - path: System.get_env("NETWORK_PATH") || "/" + path: System.get_env("NETWORK_PATH") || "/", + api_path: System.get_env("API_PATH") || "/" ] config :block_scout_web, BlockScoutWeb.Tracer, env: "production", disabled?: true diff --git a/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex b/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex index a75bd2dcbf..08ccab4256 100644 --- a/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex +++ b/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex @@ -34,10 +34,17 @@ defmodule BlockScoutWeb.APIDocsView do end) end - def blockscout_url do + def blockscout_url(is_api) do url_params = Application.get_env(:block_scout_web, BlockScoutWeb.Endpoint)[:url] host = url_params[:host] - path = url_params[:path] + + path = + if is_api do + url_params[:api_path] + else + url_params[:path] + end + scheme = Keyword.get(url_params, :scheme, "http") if host != "localhost" do @@ -49,12 +56,18 @@ defmodule BlockScoutWeb.APIDocsView do end def api_url do - blockscout_url() + is_api = true + + is_api + |> blockscout_url() |> Path.join("api") end def eth_rpc_api_url do - blockscout_url() + is_api = true + + is_api + |> blockscout_url() |> Path.join("api/eth_rpc") end end diff --git a/apps/block_scout_web/lib/block_scout_web/views/tokens/instance/overview_view.ex b/apps/block_scout_web/lib/block_scout_web/views/tokens/instance/overview_view.ex index f56d10761e..3ad44bfcd5 100644 --- a/apps/block_scout_web/lib/block_scout_web/views/tokens/instance/overview_view.ex +++ b/apps/block_scout_web/lib/block_scout_web/views/tokens/instance/overview_view.ex @@ -4,7 +4,7 @@ defmodule BlockScoutWeb.Tokens.Instance.OverviewView do alias BlockScoutWeb.CurrencyHelpers alias Explorer.Chain.{Address, SmartContract, Token} - import BlockScoutWeb.APIDocsView, only: [blockscout_url: 0] + import BlockScoutWeb.APIDocsView, only: [blockscout_url: 1] @tabs ["token_transfers", "metadata"] @@ -55,7 +55,8 @@ defmodule BlockScoutWeb.Tokens.Instance.OverviewView do def qr_code(conn, token_id, hash) do token_instance_path = token_instance_path(conn, :show, to_string(hash), to_string(token_id)) - url = Path.join(blockscout_url(), token_instance_path) + is_api = false + url = Path.join(blockscout_url(is_api), token_instance_path) url |> QRCode.to_png() diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot index 1e2f2ccea3..36b02fec4c 100644 --- a/apps/block_scout_web/priv/gettext/default.pot +++ b/apps/block_scout_web/priv/gettext/default.pot @@ -898,7 +898,7 @@ msgstr "" #: lib/block_scout_web/templates/transaction/_tabs.html.eex:4 #: lib/block_scout_web/templates/transaction_token_transfer/index.html.eex:7 #: lib/block_scout_web/views/address_view.ex:308 -#: lib/block_scout_web/views/tokens/instance/overview_view.ex:71 +#: lib/block_scout_web/views/tokens/instance/overview_view.ex:72 #: lib/block_scout_web/views/tokens/overview_view.ex:35 #: lib/block_scout_web/views/transaction_view.ex:314 msgid "Token Transfers" @@ -1774,7 +1774,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/tokens/instance/metadata/index.html.eex:18 #: lib/block_scout_web/templates/tokens/instance/overview/_tabs.html.eex:10 -#: lib/block_scout_web/views/tokens/instance/overview_view.ex:72 +#: lib/block_scout_web/views/tokens/instance/overview_view.ex:73 msgid "Metadata" msgstr "" diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po index 1e2f2ccea3..36b02fec4c 100644 --- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po @@ -898,7 +898,7 @@ msgstr "" #: lib/block_scout_web/templates/transaction/_tabs.html.eex:4 #: lib/block_scout_web/templates/transaction_token_transfer/index.html.eex:7 #: lib/block_scout_web/views/address_view.ex:308 -#: lib/block_scout_web/views/tokens/instance/overview_view.ex:71 +#: lib/block_scout_web/views/tokens/instance/overview_view.ex:72 #: lib/block_scout_web/views/tokens/overview_view.ex:35 #: lib/block_scout_web/views/transaction_view.ex:314 msgid "Token Transfers" @@ -1774,7 +1774,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/tokens/instance/metadata/index.html.eex:18 #: lib/block_scout_web/templates/tokens/instance/overview/_tabs.html.eex:10 -#: lib/block_scout_web/views/tokens/instance/overview_view.ex:72 +#: lib/block_scout_web/views/tokens/instance/overview_view.ex:73 msgid "Metadata" msgstr "" diff --git a/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs b/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs index 31922b4486..a353c9f870 100644 --- a/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs +++ b/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs @@ -14,7 +14,7 @@ defmodule BlockScoutWeb.ApiDocsViewTest do test "adds slash before path" do Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, - url: [scheme: "https", host: "blockscout.com", port: 9999, path: "/chain/dog"] + url: [scheme: "https", host: "blockscout.com", port: 9999, api_path: "/chain/dog"] ) assert APIDocsView.api_url() == "https://blockscout.com/chain/dog/api" @@ -22,7 +22,7 @@ defmodule BlockScoutWeb.ApiDocsViewTest do test "does not add slash to empty path" do Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, - url: [scheme: "https", host: "blockscout.com", port: 9999, path: ""] + url: [scheme: "https", host: "blockscout.com", port: 9999, api_path: ""] ) assert APIDocsView.api_url() == "https://blockscout.com/api" @@ -49,7 +49,7 @@ defmodule BlockScoutWeb.ApiDocsViewTest do test "adds slash before path" do Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, - url: [scheme: "https", host: "blockscout.com", port: 9999, path: "/chain/dog"] + url: [scheme: "https", host: "blockscout.com", port: 9999, api_path: "/chain/dog"] ) assert APIDocsView.eth_rpc_api_url() == "https://blockscout.com/chain/dog/api/eth_rpc"