+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :profile %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/common/_nav.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/common/_nav.html.eex
new file mode 100644
index 000000000000..cf28ad5d855c
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/common/_nav.html.eex
@@ -0,0 +1,25 @@
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/form.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/form.html.eex
new file mode 100644
index 000000000000..c54477c82466
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/form.html.eex
@@ -0,0 +1,39 @@
+<% abi = format_abi(@custom_abi) %>
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :custom_abis %>
+
+
+
+
+
+ <% path = if @method == :update, do: custom_abi_path(@conn, @method, @custom_abi.data.id), else: custom_abi_path(@conn, @method) %>
+ <%= form_for @custom_abi, path, fn f -> %>
+
+ <%= label f, :name, gettext("Name"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :name, class: "form-control", placeholder: gettext("Name this Custom ABI"), maxlength: 255 %>
+ <%= error_tag f, :name, class: "text-danger form-error" %>
+
+
+ <%= label f, :address_hash, gettext("Contract Address"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :address_hash, class: "form-control", placeholder: "0x0000000000000000000000000000000000000000", maxlength: 42 %>
+ <%= error_tag f, :address_hash, class: "text-danger form-error" %>
+ <%= error_tag f, :identity_id, class: "text-danger form-error" %>
+
+
+ <%= label f, :abi, gettext("ABI"), class: "control-label", style: "font-size: 14px" %>
+ <%= textarea f, :abi, class: "form-control", placeholder: "[{...}]", value: abi %>
+ <%= error_tag f, :abi, class: "text-danger form-error" %>
+
+
+
+ <% end %>
+
+
+
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/index.html.eex
new file mode 100644
index 000000000000..409a4ffaa027
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/index.html.eex
@@ -0,0 +1,51 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :custom_abis %>
+
+
+
+
+
+ <%= if Enum.count(@custom_abis) < CustomABI.get_max_custom_abis_count() do %>
+
+
+ <%= gettext "Create a Custom ABI to interact with contracts." %>
+
+
+ <% else %>
+
+
+ <%= gettext "You can create up to 15 Custom ABIs per account." %>
+
+
+ <% end %>
+
+
+ <%= if @custom_abis != [] do %>
+
+
+
+ <%= gettext "Name" %>
+ <%= gettext "Contract Address" %>
+
+
+
+
+
+ <%= Enum.map(@custom_abis, fn key ->
+ render("row.html", custom_abi: key, conn: @conn)
+ end) %>
+
+
+ <% end %>
+
+
+ <%= if Enum.count(@custom_abis) < CustomABI.get_max_custom_abis_count() do %>
+
<%= gettext "Add Custom ABI" %>
+ <% end %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/row.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/row.html.eex
new file mode 100644
index 000000000000..36c2740aa809
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/custom_abi/row.html.eex
@@ -0,0 +1,18 @@
+
+ <%= @custom_abi.name %>
+
+ <%= link(@custom_abi.address_hash, to: address_contract_path(@conn, :index, @custom_abi.address_hash)) %>
+ <%= render BlockScoutWeb.CommonComponentsView, "_btn_copy.html",
+ additional_classes: ["btn-copy-icon-small", "btn-copy-icon-custom", "btn-copy-icon-no-borders"], clipboard_text: @custom_abi.address_hash, aria_label: gettext("Copy Contract Address"), title: gettext("Copy Contract Address"), style: "display: inline-block; vertical-align: text-bottom; position: initial; margin-top: 1px;" %>
+
+
+
+ <%= gettext("Remove") %>
+
+
+ <%= link gettext("Edit"), to: custom_abi_path(@conn, :edit, @custom_abi.id) %>
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/address_field.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/address_field.html.eex
new file mode 100644
index 000000000000..a0b78f313da7
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/address_field.html.eex
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/form.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/form.html.eex
new file mode 100644
index 000000000000..86cfd1df22b7
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/form.html.eex
@@ -0,0 +1,72 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :public_tags %>
+
+
+
+
+
+ <% path = if @method == :update, do: public_tags_request_path(@conn, @method, @public_tags_request.data.id), else: public_tags_request_path(@conn, @method) %>
+ <%= form_for @public_tags_request, path, fn f -> %>
+
+
+
+ <%= radio_button(f, :is_owner, true) %>
+ <%= label f, :is_owner_true, "I want to add tags for my project" %>
+
+
+ <%= radio_button(f, :is_owner, false) %>
+ <%= label f, :is_owner_false, "I want to report an incorrect public tag" %>
+
+ <%= error_tag f, :is_owner, class: "text-danger form-error" %>
+
+
+ <%= label f, :tags, gettext("Public tags* (2 tags maximum, please use \";\" as a divider)"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :tags, class: "form-control", placeholder: "Public tags", maxlength: 71 %>
+ <%= error_tag f, :tags, class: "text-danger form-error" %>
+
+ <%= render "address_field.html", f: f %>
+
+ <%= label f, :additional_comment, gettext("Description*"), class: "control-label", style: "font-size: 14px" %>
+ <%= textarea f, :additional_comment, class: "form-control", placeholder: "Specify the reason for adding tags and color preference(s).", maxlength: 255 %>
+ <%= error_tag f, :additional_comment, class: "text-danger form-error" %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/index.html.eex
new file mode 100644
index 000000000000..bd9451947338
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/index.html.eex
@@ -0,0 +1,44 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :public_tags %>
+
+
+
+
+
+
+
+ <%= gettext "You can request a public category tag which is displayed to all Blockscout users. Public tags may be added to contract or external addresses, and any associated transactions will inherit that tag. Clicking a tag opens a page with related information and helps provide context and data organization. Requests are sent to a moderator for review and approval. This process can take several days." %>
+
+
+
+
+ <%= if @public_tags_requests != [] do %>
+
+
+
+ <%= gettext "Public tag" %>
+ <%= gettext "Smart contract / Address" %>
+ <%= gettext "Submission date" %>
+
+
+
+
+
+ <%= Enum.map(@public_tags_requests, fn x ->
+ render("row.html", public_tags_request: x, conn: @conn)
+ end) %>
+
+
+ <% end %>
+
+
+ <%= if Enum.count(@public_tags_requests) < PublicTagsRequest.get_max_public_tags_request_count() do %>
+
<%= gettext "Request to add public tag" %>
+ <% end %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/row.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/row.html.eex
new file mode 100644
index 000000000000..f7d2772e479c
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/public_tags_request/row.html.eex
@@ -0,0 +1,20 @@
+
+
+ <%= for tag <- String.split(@public_tags_request.tags, ";") do %>
+ <%= tag %>
+ <% end %>
+
+ <%= Enum.join(@public_tags_request.addresses, "\n") %>
+ <%= Calendar.strftime(@public_tags_request.inserted_at, "%b %d, %Y") %>
+
+ <%= link (render BlockScoutWeb.CommonComponentsView, "_svg_pen.html"), to: public_tags_request_path(@conn, :edit, @public_tags_request.id) %>
+
+
+
+ <%= (render BlockScoutWeb.CommonComponentsView, "_svg_trash.html") %>
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/form.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/form.html.eex
new file mode 100644
index 000000000000..ec4d930cf1f3
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/form.html.eex
@@ -0,0 +1,33 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :address_tags %>
+
+
+
+
+
+ <%= form_for @tag_address, tag_address_path(@conn, :create), fn f -> %>
+
+ <%= label f, :address_hash, gettext("Address"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :address_hash, class: "form-control", placeholder: "0x0000000000000000000000000000000000000000", maxlength: 42 %>
+ <%= error_tag f, :address_hash, class: "text-danger form-error" %>
+ <%= error_tag f, :identity_id, class: "text-danger form-error" %>
+
+
+
+ <%= label f, :name, gettext("Name"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :name, class: "form-control", placeholder: gettext("Name this address"), maxlength: 35 %>
+ <%= error_tag f, :name, class: "text-danger form-error" %>
+
+
+
+ <% end %>
+
+
+
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/index.html.eex
new file mode 100644
index 000000000000..511405cdda51
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/index.html.eex
@@ -0,0 +1,41 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :address_tags %>
+
+
+
+
+
+
+
+ <%= if @address_tags == [] do %>
+
+
+ <%= gettext "You don't have address tags yet" %>
+
+
+
+ <% else %>
+
+
+
+ <%= gettext "Name" %>
+ <%= gettext "Address" %>
+ <%= gettext "Action" %>
+
+
+
+ <%= Enum.map(@address_tags, fn at ->
+ render("row.html", address_tag: at, conn: @conn)
+ end) %>
+
+
+ <% end %>
+
+
+ <%= if Enum.count(@address_tags) < TagAddress.get_max_tags_count() do %>
+
<%= gettext "Add address tag" %>
+ <% end %>
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/row.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/row.html.eex
new file mode 100644
index 000000000000..5fd4445741e7
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_address/row.html.eex
@@ -0,0 +1,15 @@
+<%= if @address_tag.address_hash do %>
+
+ <%= @address_tag.name %>
+
+
+ <%= link(trimmed_hash(@address_tag.address_hash), to: address_path(@conn, :show, @address_tag.address_hash)) %>
+ <%= render BlockScoutWeb.CommonComponentsView, "_btn_copy.html",
+ additional_classes: ["btn-copy-icon-small", "btn-copy-icon-custom", "btn-copy-icon-no-borders"], clipboard_text: @address_tag.address_hash, aria_label: gettext("Copy Address"), title: gettext("Copy Address"), style: "display: inline-block; vertical-align: text-bottom; position: initial; margin-top: 1px;" %>
+
+
+ <%= link "Remove Tag", to: tag_address_path(@conn, :delete, @address_tag.id), method: :delete %>
+
+
+
+<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/form.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/form.html.eex
new file mode 100644
index 000000000000..40d9c03f83be
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/form.html.eex
@@ -0,0 +1,33 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :transaction_tags %>
+
+
+
+
+
+ <%= form_for @tag_transaction, tag_transaction_path(@conn, :create), fn f -> %>
+
+ <%= label f, :tx_hash, gettext("Transaction"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :tx_hash, class: "form-control", placeholder: "0x0000000000000000000000000000000000000000000000000000000000000000", maxlength: 66 %>
+ <%= error_tag f, :tx_hash, class: "text-danger form-error" %>
+ <%= error_tag f, :identity_id, class: "text-danger form-error" %>
+
+
+
+ <%= label f, :name, gettext("Name"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :name, class: "form-control", placeholder: gettext("Name this transaction"), maxlength: 35 %>
+ <%= error_tag f, :name, class: "text-danger form-error" %>
+
+
+
+ <% end %>
+
+
+
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/index.html.eex
new file mode 100644
index 000000000000..c1cca8adec1c
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/index.html.eex
@@ -0,0 +1,41 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :transaction_tags %>
+
+
+
+
+
+
+
+ <%= if @tx_tags == [] do %>
+
+
+ <%= gettext "You don't have transaction tags yet" %>
+
+
+
+ <% else %>
+
+
+
+ <%= gettext "Name" %>
+ <%= gettext "Transaction" %>
+ <%= gettext "Action" %>
+
+
+
+ <%= Enum.map(@tx_tags, fn at ->
+ render("row.html", tx_tag: at, conn: @conn)
+ end) %>
+
+
+ <% end %>
+
+
+ <%= if Enum.count(@tx_tags) < TagTransaction.get_max_tags_count() do %>
+
<%= gettext "Add transaction tag" %>
+ <% end %>
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/row.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/row.html.eex
new file mode 100644
index 000000000000..55151ae0ac34
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/tag_transaction/row.html.eex
@@ -0,0 +1,18 @@
+<%= if @tx_tag.tx_hash do %>
+
+ <%= @tx_tag.name %>
+
+
+ <%= link(@tx_tag.tx_hash,
+ to: transaction_path(BlockScoutWeb.Endpoint, :show, @tx_tag.tx_hash),
+ "data-test": "transaction_hash_link",
+ class: "text-truncate") %>
+ <%= render BlockScoutWeb.CommonComponentsView, "_btn_copy.html",
+ additional_classes: ["btn-copy-icon-small", "btn-copy-icon-custom", "btn-copy-icon-no-borders"], clipboard_text: @tx_tag.tx_hash, aria_label: gettext("Copy Address"), title: gettext("Copy Address"), style: "display: inline-block; vertical-align: text-bottom; position: initial; margin-top: 1px;" %>
+
+
+
+ <%= link "Remove Tag", to: tag_transaction_path(@conn, :delete, @tx_tag.id), method: :delete %>
+
+
+<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist/show.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist/show.html.eex
new file mode 100644
index 000000000000..592532f625e8
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist/show.html.eex
@@ -0,0 +1,42 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :watchlist %>
+
+
+
+
+
+
+
+ <%= if @watchlist.watchlist_addresses == [] do %>
+
+
+ <%= gettext "You don't have addresses on you watchlist yet" %>
+
+
+
+ <% else %>
+
+
+
+ <%= gettext "Name" %>
+ <%= gettext "Address" %>
+ <%= gettext "Balance" %>
+ <%= gettext "Actions" %>
+
+
+
+ <%= Enum.map(@watchlist.watchlist_addresses, fn wa ->
+ render(WatchlistAddressView, "row.html", watchlist_address: wa, exchange_rate: exchange_rate(), conn: @conn)
+ end) %>
+
+
+ <% end %>
+
+
+ <%= if Enum.count(@watchlist.watchlist_addresses) < WatchlistAddress.get_max_watchlist_addresses_count() do %>
+
<%= gettext "Add address" %>
+ <% end %>
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/form.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/form.html.eex
new file mode 100644
index 000000000000..c2a6dce56989
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/form.html.eex
@@ -0,0 +1,91 @@
+
+
+ <%= render BlockScoutWeb.Account.CommonView, "_nav.html", conn: @conn, active_item: :watchlist %>
+
+
+
+
+
+ <% path = if @method == :update, do: watchlist_address_path(@conn, @method, @watchlist_address.data.id), else: watchlist_address_path(@conn, @method) %>
+ <%= form_for @watchlist_address, path, fn f -> %>
+
+ <%= label f, :address_hash, gettext("Address"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :address_hash, class: "form-control", placeholder: "0x0000000000000000000000000000000000000000", maxlength: 42 %>
+ <%= error_tag f, :address_hash, class: "text-danger form-error" %>
+ <%= error_tag f, :watchlist_id, class: "text-danger form-error" %>
+
+
+
+ <%= label f, :name, gettext("Name"), class: "control-label", style: "font-size: 14px" %>
+ <%= text_input f, :name, class: "form-control", placeholder: gettext("Name this address"), maxlength: 35 %>
+ <%= error_tag f, :name, class: "text-danger form-error" %>
+
+
+
<%= gettext("Please select what types of notifications you will receive:") %>
+
+
+
<%= Explorer.coin_name() %>
+
+ <%= checkbox f, :watch_coin_input, class: "form-checkbox" %>
+ <%= label f, :watch_coin_input, gettext("Incoming"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_coin_input, class: "text-danger form-error" %>
+
+
+ <%= checkbox f, :watch_coin_output, class: "form-checkbox" %>
+ <%= label f, :watch_coin_output, gettext("Outgoing"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_coin_output, class: "text-danger form-error" %>
+
+
+
+
<%= gettext "ERC-20 tokens (beta)" %>
+
+ <%= checkbox f, :watch_erc_20_input, class: "form-checkbox" %>
+ <%= label f, :watch_erc_20_input, gettext("Incoming"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_erc_20_input, class: "text-danger form-error" %>
+
+
+ <%= checkbox f, :watch_erc_20_output, class: "form-checkbox" %>
+ <%= label f, :watch_erc_20_output, gettext("Outgoing"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_erc_20_output, class: "text-danger form-error" %>
+
+
+
+
<%= gettext "ERC-721, ERC-1155 tokens (NFT) (beta)" %>
+
+ <%= checkbox f, :watch_erc_721_input, class: "form-checkbox" %>
+ <%= label f, :watch_erc_721_input, gettext("Incoming"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_erc_721_input, class: "text-danger form-error" %>
+
+
+ <%= checkbox f, :watch_erc_721_output, class: "form-checkbox" %>
+ <%= label f, :watch_erc_721_output, gettext("Outgoing"), class: "label-checkbox" %>
+ <%= error_tag f, :watch_erc_721_output, class: "text-danger form-error" %>
+
+
+
+
+
+
<%= gettext "Please select notification methods:"%>
+
+ <%= checkbox f, :notify_email, class: "form-checkbox" %>
+ <%= label f, :notify_email, gettext("Email notifications"), class: "label-checkbox" %>
+ <%= error_tag f, :notify_email, class: "text-danger form-error" %>
+
+
+
+ <%= if @method != :create do %>
+ <%= link gettext("Remove from Watch list"), to: watchlist_address_path(@conn, :delete, @watchlist_address.data.id), method: :delete, class: "btn btn-danger white button-sm", style: "color: #fff !important;" %>
+ <% end %>
+
+ <% end %>
+
+
+
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/row.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/row.html.eex
new file mode 100644
index 000000000000..95c92d9b8f76
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/account/watchlist_address/row.html.eex
@@ -0,0 +1,29 @@
+
+ <%= @watchlist_address.name %>
+
+
+ <%= link(trimmed_hash(@watchlist_address.address_hash), to: address_path(@conn, :show, @watchlist_address.address_hash)) %>
+ <%= render BlockScoutWeb.CommonComponentsView, "_btn_copy.html",
+ additional_classes: ["btn-copy-icon-small", "btn-copy-icon-custom", "btn-copy-icon-no-borders"], clipboard_text: @watchlist_address.address_hash, aria_label: gettext("Copy From Address"), title: gettext("Copy Address"), style: "display: inline-block; vertical-align: text-bottom; position: initial; margin-top: 1px;" %>
+
+
+
+ <%= balance_ether(@watchlist_address.fetched_coin_balance) %>
+
+
+
+ (
+ )
+
+
+
+ <%= link(gettext("Edit"), to: watchlist_address_path(@conn, :edit, @watchlist_address.id)) %>
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/_current_coin_balance.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/_current_coin_balance.html.eex
index 76ba32bf9f72..405f7e6899a2 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address/_current_coin_balance.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address/_current_coin_balance.html.eex
@@ -8,7 +8,7 @@
data-placement="top"
data-toggle="tooltip"
data-html="true"
- title='<%= "@ " <> usd_value <> "/" <> gettext("Ether") %>'
+ title='<%= "@ " <> usd_value <> "/" <> Explorer.coin_name() %>'
>
)
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/_labels.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/_labels.html.eex
new file mode 100644
index 000000000000..dbfb5bac756e
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address/_labels.html.eex
@@ -0,0 +1,19 @@
+<%= for common_tag <- @tags.common_tags do %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: common_tag.display_name, additional_classes: [tag_name_to_label(common_tag.label), "ml-1"] %>
+<% end %>
+<%= for personal_tag <- @tags.personal_tags do %>
+ <%= if personal_tag.address_hash do %>
+ <%= if personal_tag.label =~ "dark forest" do %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: personal_tag.display_name, additional_classes: ["df", "ml-1"] %>
+ <% else %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: personal_tag.display_name, additional_classes: [tag_name_to_label(personal_tag.label), "ml-1"] %>
+ <% end %>
+ <% end %>
+<% end %>
+<%= for watchlist_name <- @tags.watchlist_names do %>
+ <%= if watchlist_name.label =~ "dark forest" do %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: watchlist_name.display_name, additional_classes: ["df", "ml-1"] %>
+ <% else %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: watchlist_name.display_name, additional_classes: [tag_name_to_label(watchlist_name.label), "ml-1"] %>
+ <% end %>
+<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/_responsive_hash.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/_responsive_hash.html.eex
index 06b0954cb05e..c3dc9af56103 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address/_responsive_hash.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address/_responsive_hash.html.eex
@@ -12,7 +12,7 @@
<%= if @use_custom_tooltip == true do %>
<%= name %> (<%= short_hash(@address) %>...)
<% else %>
-
">
+ ">
<%= short_contract_name(name, 30) %>
<%= short_contract_name(name, 10) %>
(<%= BlockScoutWeb.AddressView.trimmed_hash(@address.hash) %>)
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/_tabs.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/_tabs.html.eex
index 0145c72a6448..ce533de13a2c 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address/_tabs.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address/_tabs.html.eex
@@ -76,7 +76,7 @@
<% end %>
<% end %>
- <%= if smart_contract_with_read_only_functions?(@address) do %>
+ <%= if smart_contract_with_read_only_functions?(@address) || has_address_custom_abi_with_read_functions?(@conn, @address.hash) do %>
<%= link(
gettext("Read Contract"),
to: AccessHelpers.get_path(@conn, :address_read_contract_path, :index, @address.hash),
@@ -90,14 +90,14 @@
class: "card-tab #{tab_status("read-proxy", @conn.request_path)}")
%>
<% end %>
- <%= if smart_contract_with_write_functions?(@address) do %>
+ <%= if smart_contract_with_write_functions?(@address) || has_address_custom_abi_with_write_functions?(@conn, @address.hash) do %>
<%= link(
gettext("Write Contract"),
to: AccessHelpers.get_path(@conn, :address_write_contract_path, :index, @address.hash),
class: "card-tab #{tab_status("write-contract", @conn.request_path)}")
%>
<% end %>
- <%= if smart_contract_with_write_functions?(@address) && @is_proxy do %>
+ <%= if smart_contract_with_write_functions?(@address) && @is_proxy do %>
<%= link(
gettext("Write Proxy"),
to: AccessHelpers.get_path(@conn, :address_write_proxy_path, :index, @address.hash),
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/index.html.eex
index a1cfb6fa762a..57dba32da773 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address/index.html.eex
@@ -2,7 +2,7 @@
<%= render BlockScoutWeb.Advertisement.TextAdView, "index.html", conn: @conn %>
-
<%= gettext "Ether" %> <%= gettext "Addresses" %>
+ <%= Explorer.coin_name() %> <%= gettext "Addresses" %>
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 24158e10ea7e..0a9f89f2ca55 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
@@ -33,6 +33,13 @@
<%= label :verify_via, :false, gettext("Via Sourcify: Sources and metadata JSON file"), class: "radio-text" %>
<% end %>
+ <%= if RustVerifierInterface.enabled?() do %>
+
+ <%= radio_button f, :verify_via, false, class: "form-check-input verify-via-multi-part-files" %>
+
+ <%= label :verify_via, :false, gettext("Via multi-part files"), class: "radio-text" %>
+
+ <% end %>
<%= radio_button f, :verify_via, false, class: "form-check-input verify-vyper-contract" %>
@@ -95,7 +102,15 @@
<%= link(
gettext("Next"),
to: address_verify_contract_via_standard_json_input_path(@conn, :new, @address_hash),
- id: "verify_via_standard_json_input",
+ id: "verify_via_standard_json_input_button",
+ class: "btn-full-primary mr-2",
+ style: "display: none;",
+ "data-button-loading": "animation"
+ ) %>
+ <%= link(
+ gettext("Next"),
+ to: address_verify_contract_via_multi_part_files_path(@conn, :new, @address_hash),
+ id: "verify_via_multi_part_files_button",
class: "btn-full-primary mr-2",
style: "display: none;",
"data-button-loading": "animation"
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification_common_fields/_compiler_field.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification_common_fields/_compiler_field.html.eex
index fd98aaf149e9..bd2a179d80ee 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification_common_fields/_compiler_field.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification_common_fields/_compiler_field.html.eex
@@ -1,6 +1,6 @@
-
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_decompiled_contract/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_decompiled_contract/index.html.eex
index 7ab239233639..18abbbcdfdcd 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_decompiled_contract/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_decompiled_contract/index.html.eex
@@ -1,7 +1,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
<% contract = last_decompiled_contract_version(@address.decompiled_smart_contracts) %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_internal_transaction/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_internal_transaction/index.html.eex
index d89f3e34fbf1..feb70111791c 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_internal_transaction/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_internal_transaction/index.html.eex
@@ -1,12 +1,12 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
-
+
<%= gettext "More internal transactions have come in" %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_logs/_logs.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_logs/_logs.html.eex
index 90d009f21434..eaa2d7d56fed 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_logs/_logs.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_logs/_logs.html.eex
@@ -1,7 +1,7 @@
">
<% decoded_result = decode(@log, @log.transaction) %>
<%= case decoded_result do %>
- <%= {:error, :contract_not_verified, _cadidates} -> %>
+ <% {:error, :contract_not_verified, _cadidates} -> %>
<%= gettext "To see accurate decoded input data, the contract must be verified." %>
<%= case @log.transaction do %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_logs/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_logs/index.html.eex
index d4ef3d3ccbdf..3dc20d3a7f78 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_logs/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_logs/index.html.eex
@@ -1,12 +1,12 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
-
+
<%= gettext "Logs" %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_read_contract/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_read_contract/index.html.eex
index 7631094bfb25..58ff9c96f561 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_read_contract/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_read_contract/index.html.eex
@@ -2,16 +2,57 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
-
-
-
- <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
+ <%= if @need_wallet do %>
+
+ <%= render BlockScoutWeb.SmartContractView, "_connect_container.html" %>
-
+ <% end %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% else %>
+ <%= if assigns[:custom_abi] do %>
+
<%= gettext "Custom ABI from account" %>
+ <% end %>
+ <% end %>
+ <%=
+ for status <- ["error", "warning", "success", "question"] do
+ render BlockScoutWeb.CommonComponentsView, "_modal_status.html", status: status
+ end
+ %>
+ <%= render BlockScoutWeb.SmartContractView, "_pending_contract_write.html" %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% end %>
+ <%= if @non_custom_abi do %>
+
+
+
+ <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
+
+
+ <% end %>
+ <%= if assigns[:custom_abi] do %>
+
+
" id="custom" role="tabpanel" aria-labelledby="custom-tab" data-smart-contract-functions-custom data-hash="<%= to_string(@address.hash) %>" data-type="<%= @type %>" data-action="<%= @action %>" data-url="<%= smart_contract_path(@conn, :index) %>">
+
+ <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
+
+
+ <% end %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_read_proxy/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_read_proxy/index.html.eex
index 7631094bfb25..a3577a7cb925 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_read_proxy/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_read_proxy/index.html.eex
@@ -2,7 +2,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token/_tokens.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token/_tokens.html.eex
index f42fd4c16726..7691bb3aed86 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token/_tokens.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token/_tokens.html.eex
@@ -3,7 +3,7 @@
<%= if System.get_env("DISPLAY_TOKEN_ICONS") === "true" do %>
- <% chain_id_for_token_icon = System.get_env("CHAIN_ID") %>
+ <% chain_id_for_token_icon = Application.get_env(:block_scout_web, :chain_id) %>
<% address_hash = @token.contract_address_hash %>
<%=
render BlockScoutWeb.TokensView,
@@ -17,7 +17,7 @@
<%= link(
to: address_token_transfers_path(@conn, :index, to_string(@address.hash), to_string(@token.contract_address_hash)),
class: "tile-title-lg",
- "data-test": "token_transfers_#{@token_balance.token.contract_address_hash}"
+ "data-test": "token_transfers_#{@token.contract_address_hash}"
) do %>
<%= token_name(@token) %>
<% end %>
@@ -33,14 +33,14 @@
- <% token_price = if @token_balance.token.usd_value, do: @token_balance.token.usd_value, else: nil %>
- <%= ChainView.format_currency_value(token_price, "@") %>
+ <% token_price = if @token.usd_value, do: @token.usd_value, else: nil %>
+ <%= ChainView.format_currency_value(token_price, "@") %>
- <%= if @token_balance.token.usd_value do %>
+ <%= if @token.usd_value do %>
- <%= ChainView.format_usd_value(Chain.balance_in_usd(@token_balance)) %>
+ <%= ChainView.format_usd_value(Chain.balance_in_usd(@token_balance, @token)) %>
<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token/index.html.eex
index 8c682078ac4e..1fd811570f6b 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token/index.html.eex
@@ -1,7 +1,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token/overview.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token/overview.html.eex
index 11da76cfc8df..6f922375b973 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token/overview.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token/overview.html.eex
@@ -1,4 +1,4 @@
-<% native_coin = gettext("ETH") %>
+<% native_coin = Explorer.coin_name() %>
<% wei_value = if @address.fetched_coin_balance, do: @address.fetched_coin_balance.value %>
<% raw_usd_value =
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_token_balances.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_token_balances.html.eex
index d0c1adf6367f..9b3f6a70f764 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_token_balances.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_token_balances.html.eex
@@ -47,7 +47,7 @@
placeholder: gettext("Search tokens")
) %>
- <%= if Enum.any?(@token_balances, fn {token_balance, _} -> token_balance.token.type == "ERC-721" end) do %>
+ <%= if Enum.any?(@token_balances, fn {_token_balance, token} -> token.type == "ERC-721" end) do %>
<%= render(
"_tokens.html",
conn: @conn,
@@ -56,7 +56,7 @@
) %>
<% end %>
- <%= if Enum.any?(@token_balances, fn {token_balance, _} -> token_balance.token.type == "ERC-1155" end) do %>
+ <%= if Enum.any?(@token_balances, fn {_token_balance, token} -> token.type == "ERC-1155" end) do %>
<%= render(
"_tokens.html",
conn: @conn,
@@ -65,7 +65,7 @@
) %>
<% end %>
- <%= if Enum.any?(@token_balances, fn {token_balance, _} -> token_balance.token.type == "ERC-20" end) do %>
+ <%= if Enum.any?(@token_balances, fn {_token_balance, token} -> token.type == "ERC-20" end) do %>
<%= render(
"_tokens.html",
conn: @conn,
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_tokens.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_tokens.html.eex
index ed696b319a3c..ceaf90505ae2 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_tokens.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token_balance/_tokens.html.eex
@@ -7,13 +7,13 @@
<% path = cond do
- token_balance.token_type == "ERC-721" && !is_nil(token_balance.token_id) -> token_instance_path(@conn, :show, token_balance.token.contract_address_hash, to_string(token_balance.token_id))
- token_balance.token_type == "ERC-1155" && !is_nil(token_balance.token_id) -> token_instance_path(@conn, :show, token_balance.token.contract_address_hash, to_string(token_balance.token_id))
- true -> token_path(@conn, :show, to_string(token_balance.token.contract_address_hash))
+ token_balance.token_type == "ERC-721" && !is_nil(token_balance.token_id) -> token_instance_path(@conn, :show, token.contract_address_hash, to_string(token_balance.token_id))
+ token_balance.token_type == "ERC-1155" && !is_nil(token_balance.token_id) -> token_instance_path(@conn, :show, token.contract_address_hash, to_string(token_balance.token_id))
+ true -> token_path(@conn, :show, to_string(token.contract_address_hash))
end
%>
<%= link(
@@ -22,7 +22,7 @@
) do %>
<%= if System.get_env("DISPLAY_TOKEN_ICONS") === "true" do %>
- <% chain_id_for_token_icon = System.get_env("CHAIN_ID") %>
+ <% chain_id_for_token_icon = Application.get_env(:block_scout_web, :chain_id) %>
<% address_hash = token.contract_address_hash %>
<%=
render BlockScoutWeb.TokensView,
@@ -32,31 +32,32 @@
additional_classes: ["token-wallet-icon"]
%>
<% end %>
-
<%= token_name(token) %>
+
"><%= token_name(token) %>
- <%= if token_balance.token.usd_value do %>
+ <%= if token.usd_value do %>
-
+
<% end %>
- <% col_md = if token_balance.token.usd_value, do: "col-md-6", else: "col-md-12" %>
-
+ <%= if token.usd_value do %>
+
+
+
+ <% end %>
+
+
+
">
<%= if token_balance.token_type == "ERC-721" && !is_nil(token_balance.token_id) do %>
1
<% else %>
- <%= format_according_to_decimals(token_balance.value, token_balance.token.decimals) %> <%= token_symbol(token_balance.token) %>
+ <%= format_according_to_decimals(token_balance.value, token.decimals) %> <%= token_symbol(token) %>
<% end %>
<%= if (token_balance.token_type == "ERC-721" && !is_nil(token_balance.token_id)) or token_balance.token_type == "ERC-1155" do %>
<%= " TokenID " <> to_string(token_balance.token_id) %>
<% end %>
- <%= if token_balance.token.usd_value do %>
-
-
-
- <% end %>
<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_token_transfer/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_token_transfer/index.html.eex
index 7e7f0173958d..94f202d1c359 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_token_transfer/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_token_transfer/index.html.eex
@@ -1,12 +1,12 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
-
+
<%= if assigns[:token] do %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex
index 0bc1b9bce431..a5b57868439b 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex
@@ -2,7 +2,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_validation/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_validation/index.html.eex
index 143190b9b5dd..e435195fe3b1 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_validation/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_validation/index.html.eex
@@ -1,7 +1,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_write_contract/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_write_contract/index.html.eex
index 7631094bfb25..a1d915d2ec81 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_write_contract/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_write_contract/index.html.eex
@@ -2,16 +2,55 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
-
-
-
- <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
-
+
+ <%= render BlockScoutWeb.SmartContractView, "_connect_container.html" %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% else %>
+ <%= if assigns[:custom_abi] do %>
+
<%= gettext "Custom ABI from account" %>
+ <% end %>
+ <% end %>
+ <%=
+ for status <- ["error", "warning", "success", "question"] do
+ render BlockScoutWeb.CommonComponentsView, "_modal_status.html", status: status
+ end
+ %>
+ <%= render BlockScoutWeb.SmartContractView, "_pending_contract_write.html" %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% end %>
+ <%= if @non_custom_abi do %>
+
+
+
+ <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
+
+
+ <% end %>
+ <%= if assigns[:custom_abi] do %>
+
+
" id="custom" role="tabpanel" aria-labelledby="custom-tab" data-smart-contract-functions-custom data-hash="<%= to_string(@address.hash) %>" data-type="<%= @type %>" data-action="<%= @action %>" data-url="<%= smart_contract_path(@conn, :index) %>">
+
+ <%= render BlockScoutWeb.CommonComponentsView, "_loading_spinner.html", loading_text: gettext("Loading...") %>
+
+
+ <% end %>
+ <%= if @non_custom_abi && assigns[:custom_abi] do %>
+
+ <% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_write_proxy/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_write_proxy/index.html.eex
index 7631094bfb25..a3577a7cb925 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/address_write_proxy/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/address_write_proxy/index.html.eex
@@ -2,7 +2,7 @@
<% is_proxy = BlockScoutWeb.AddressView.smart_contract_is_proxy?(@address) %>
- <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path %>
+ <%= render BlockScoutWeb.AddressView, "overview.html", address: @address, is_proxy: is_proxy, conn: @conn, exchange_rate: @exchange_rate, coin_balance_status: @coin_balance_status, counters_path: @counters_path, tags: @tags %>
<%= render BlockScoutWeb.AddressView, "_tabs.html", address: @address, is_proxy: is_proxy, conn: @conn %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_model_table.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_model_table.html.eex
index 8eb37d09a521..1452cc9e6fe5 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_model_table.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_model_table.html.eex
@@ -9,7 +9,7 @@
<%= if details[:type] != "model", do: details.type %>
<%= if details[:definition] do %>
-
<%= if @block.size do %>
- <%= Cldr.Unit.new(:byte, @block.size) |> cldr_unit_to_string!() %>
+ <%= Cldr.Unit.new!(:byte, @block.size) |> cldr_unit_to_string!() %>
<% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/block/overview.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/block/overview.html.eex
index 597eaaea98d1..500e35a86833 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/block/overview.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/block/overview.html.eex
@@ -113,7 +113,7 @@
text: gettext("Size of the block in bytes.") %>
<%= gettext("Size") %>
- <%= if !is_nil(@block.size), do: (Cldr.Unit.new(:byte, @block.size) |> cldr_unit_to_string!()), else: gettext("N/A bytes") %>
+ <%= if !is_nil(@block.size), do: (Cldr.Unit.new!(:byte, @block.size) |> cldr_unit_to_string!()), else: gettext("N/A bytes") %>
@@ -212,7 +212,7 @@
<%= render BlockScoutWeb.CommonComponentsView, "_i_tooltip_2.html",
- text: gettext("Ether") <> " " <> gettext("burned from transactions included in the block (Base fee (per unit of gas) * Gas Used).") %>
+ text: Explorer.coin_name() <> " " <> gettext("burned from transactions included in the block (Base fee (per unit of gas) * Gas Used).") %>
<%= gettext("Burnt Fees") %>
<%= format_wei_value(burned_fee, :ether) %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/chain/show.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/chain/show.html.eex
index 5719a2160843..07e77ebefb40 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/chain/show.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/chain/show.html.eex
@@ -38,7 +38,7 @@
<%= if Enum.member?(market_chart_config, :price) do %>
- <%= System.get_env("COIN_NAME") || System.get_env("COIN") %> <%= gettext "Price" %>
+ <%= Explorer.coin_name() %> <%= gettext "Price" %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_i_tooltip_2.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_i_tooltip_2.html.eex
index 7efeb4c501bb..87a55cf445cb 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_i_tooltip_2.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_i_tooltip_2.html.eex
@@ -7,5 +7,5 @@
data-toggle="tooltip"
title="<%= @text %>"
>
-
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_status_icon.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_status_icon.html.eex
index 358c66c8e8b6..bda361e37a18 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_status_icon.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_status_icon.html.eex
@@ -1,10 +1,10 @@
<%= case @status do %>
<% :success -> %>
-
+
<% {:error, _} -> %>
-
+
<% :awaiting_internal_transactions -> %>
-
+
<% :pending -> %>
<% _ -> %>
<% end %>
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_minus.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_minus.html.eex
new file mode 100644
index 000000000000..1c08c85c02d0
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_minus.html.eex
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_pen.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_pen.html.eex
new file mode 100644
index 000000000000..559468d51879
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_pen.html.eex
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_plus.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_plus.html.eex
new file mode 100644
index 000000000000..4f93df8c6d56
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_plus.html.eex
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_trash.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_trash.html.eex
new file mode 100644
index 000000000000..7d83186dfce9
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/common_components/_svg_trash.html.eex
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/csv_export/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/csv_export/index.html.eex
index 0060e01d31c2..d1b5b394bd9f 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/csv_export/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/csv_export/index.html.eex
@@ -21,21 +21,32 @@
-
-
address_checksum(@address_hash_string), "from_period" => default_period_start(), "to_period" => default_period_end()}) %>><%= gettext("Download") %>
+
address_checksum(@address_hash_string), "from_period" => default_period_start(), "to_period" => default_period_end()}) %>><%= gettext("Download") %>
-
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/error422/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/error422/index.html.eex
index bbf314d4bb62..fb188f65886c 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/error422/index.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/error422/index.html.eex
@@ -1,12 +1,12 @@
-
+
-
+
-
Unprocessable Entity
-
The request was well-formed but was unable to be followed due to semantic errors. Maybe, you mistype a hash of tx/block/address?
-
Back Home
+
<%= gettext "Request cannot be processed" %>
+
<%= gettext "Your request contained an error, perhaps a mistyped tx/block/address hash. Try again, and check the developer tools console for more info." %>
+
<%= gettext "Back to home" %>
-
\ No newline at end of file
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/icons/_blockchain_icon.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/icons/_blockchain_icon.html.eex
new file mode 100644
index 000000000000..f8234731c29d
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/icons/_blockchain_icon.html.eex
@@ -0,0 +1,3 @@
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/internal_server_error/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/internal_server_error/index.html.eex
new file mode 100644
index 000000000000..df7ff8c5a0f5
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/internal_server_error/index.html.eex
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
<%= gettext "Internal server error" %>
+
<%= gettext "An unexpected error has occurred. Try reloading the page, or come back soon and try again." %>
+
<%= gettext "Back to home" %>
+
+
+
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/internal_transaction/_tile.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/internal_transaction/_tile.html.eex
index b7ae6e7f2fd3..d88a6d9c5ccb 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/internal_transaction/_tile.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/internal_transaction/_tile.html.eex
@@ -21,7 +21,7 @@
- <%= BlockScoutWeb.TransactionView.value(@internal_transaction, include_label: false) %> <%= gettext "Ether" %>
+ <%= BlockScoutWeb.TransactionView.value(@internal_transaction, include_label: false) %> <%= Explorer.coin_name() %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_account_menu_item.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_account_menu_item.html.eex
new file mode 100644
index 000000000000..e8f8e58f6203
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_account_menu_item.html.eex
@@ -0,0 +1,33 @@
+<%= if Explorer.Account.enabled?() do %>
+ <%= if @current_user do %>
+
+
+
+
+
+
+
+
+ <% else %>
+
+
+
+ <%= render BlockScoutWeb.IconsView, "_accounts_icon.html" %>
+
+ Sign in
+
+
+ <% end %>
+<% end %>
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_add_chain_to_mm.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_add_chain_to_mm.html.eex
new file mode 100644
index 000000000000..0e777ee945c2
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_add_chain_to_mm.html.eex
@@ -0,0 +1,13 @@
+
+
+<% sub_network = Keyword.get(Application.get_env(:block_scout_web, BlockScoutWeb.Chain), :subnetwork) %>
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_footer.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_footer.html.eex
index fe6c84c84814..e63fe8a9456b 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_footer.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_footer.html.eex
@@ -21,7 +21,7 @@
<% main_nets = main_nets(other_networks()) %>
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector.html.eex
deleted file mode 100644
index d0419e5b0bae..000000000000
--- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector.html.eex
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
<%= gettext("Change Network") %>
-
<%= gettext("Use the search box to find a hosted network, or select from the list of available networks below.") %>
-
-
-
-
<%= gettext("All") %>
-
<%= gettext("Mainnet") %>
-
<%= gettext("Testnet") %>
-
<%= gettext("Favorites") %>
-
-
- <% main_nets = dropdown_main_nets() %>
- <% test_nets = dropdown_test_nets() %>
-
- <%= for %{url: url, title: title} <- main_nets do %>
- <%= render BlockScoutWeb.LayoutView, "_network_selector_item.html", title: title, url: url, tab_type: "Mainnet" %>
- <% end %>
- <%= for %{url: url, title: title} <- test_nets do %>
- <%= render BlockScoutWeb.LayoutView, "_network_selector_item.html", title: title, url: url, tab_type: "Testnet" %>
- <% end %>
-
-
- <%= for %{url: url, title: title} <- main_nets do %>
- <%= render BlockScoutWeb.LayoutView, "_network_selector_item.html", title: title, url: url, tab_type: "Mainnet" %>
- <% end %>
-
-
- <%= for %{url: url, title: title} <- test_nets do %>
- <%= render BlockScoutWeb.LayoutView, "_network_selector_item.html", title: title, url: url, tab_type: "Testnet" %>
- <% end %>
-
-
-
-
-
-
\ No newline at end of file
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector_item.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector_item.html.eex
deleted file mode 100644
index 74ab4ed7baa2..000000000000
--- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_network_selector_item.html.eex
+++ /dev/null
@@ -1,25 +0,0 @@
-
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_search.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_search.html.eex
index 012f71825177..18dbd0331bbf 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_search.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_search.html.eex
@@ -6,7 +6,7 @@
id="<%= @id %>"
class="main-search-autocomplete"
data-test="search_input"
- data-chain-id="<%= System.get_env("CHAIN_ID") %>"
+ data-chain-id="<%= Application.get_env(:block_scout_web, :chain_id) %>"
data-display-token-icons="<%= System.get_env("DISPLAY_TOKEN_ICONS") %>"
type="text"
tabindex="1"
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex
index bd8a2e8be763..494934049d6e 100644
--- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex
+++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex
@@ -1,4 +1,7 @@
<% apps_menu = Application.get_env(:block_scout_web, :apps_menu) %>
+<% other_nets = dropdown_other_nets() %>
+<% test_nets = test_nets(dropdown_nets()) %>
+<% main_nets = dropdown_head_main_nets() %>
<%= link to: webapp_url(@conn), class: "navbar-brand", "data-test": "header_logo" do %>
@@ -8,6 +11,9 @@
<%= if logo_text() do %>
"> <%= logo_text() %>
<% end %>
+ <%= if Application.get_env(:block_scout_web, BlockScoutWeb.Chain)[:enable_testnet_label] do %>
+ <%= render BlockScoutWeb.FormView, "_tag.html", text: Application.get_env(:block_scout_web, BlockScoutWeb.Chain)[:testnet_label_text], additional_classes: ["testnet-label", "ml-2"] %>
+ <% end %>
<% end %>
">
@@ -18,45 +24,50 @@
- <%= render BlockScoutWeb.IconsView, "_block_icon.html" %>
-
- <%= gettext("Blocks") %>
-
-
-
-
-
-
- <%= render BlockScoutWeb.IconsView, "_transaction_icon.html" %>
+ <%= render BlockScoutWeb.IconsView, "_blockchain_icon.html" %>
- <%= gettext("Transactions") %>
+ <%= gettext("Blockchain") %>
-
<%= render BlockScoutWeb.LayoutView, "_search.html", conn: @conn, id: "main-search-autocomplete-mobile", additional_classes: ["mobile-search-show"] %>
-
\ No newline at end of file
+
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 42fa7cd61490..60c0754acf5a 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
@@ -41,11 +41,11 @@
window.localized = {
'Blocks Indexed': '<%= gettext("Blocks Indexed") %>',
'Block Processing': '<%= gettext("Block Mined, awaiting import...") %>',
- 'Indexing Tokens': '<%= gettext("Indexing Tokens") %>',
+ 'Blocks With Internal Transactions Indexed': '<%= gettext("Blocks With Internal Transactions Indexed") %>',
'Less than': '<%= gettext("Less than") %>',
'Market Cap': '<%= gettext("Market Cap") %>',
'Price': '<%= gettext("Price") %>',
- 'Ether': '<%= gettext("Ether") %>',
+ 'Ether': '<%= Explorer.coin_name() %>',
'Tx/day': '<%= gettext("Tx/day") %>'
}
@@ -53,8 +53,14 @@
@@ -288,5 +304,11 @@
<% end %>
+ <%= if @view_module in [Elixir.BlockScoutWeb.AddressContractVerificationView, Elixir.BlockScoutWeb.AddressContractVerificationVyperView, Elixir.BlockScoutWeb.AddressContractVerificationViaFlattenedCodeView, Elixir.BlockScoutWeb.AddressContractVerificationViaMultiPartFilesView, Elixir.BlockScoutWeb.AddressContractVerificationViaJsonView, Elixir.BlockScoutWeb.AddressContractVerificationViaStandardJsonInputView] do %>
+
+ <% end %>
+ <%= if @view_module in [Elixir.BlockScoutWeb.AddressContractVerificationViaMultiPartFilesView, Elixir.BlockScoutWeb.AddressContractVerificationViaJsonView, Elixir.BlockScoutWeb.AddressContractVerificationViaStandardJsonInputView] do %>
+
+ <% end %>