diff --git a/apps/explorer/lib/explorer/chain.ex b/apps/explorer/lib/explorer/chain.ex
index 69166410e5..79a978ebcd 100644
--- a/apps/explorer/lib/explorer/chain.ex
+++ b/apps/explorer/lib/explorer/chain.ex
@@ -491,6 +491,7 @@ defmodule Explorer.Chain do
query =
from(
address in Address,
+ preload: [:smart_contract],
where: address.hash == ^hash
)
diff --git a/apps/explorer/test/explorer/smart_contract/verifier_test.exs b/apps/explorer/test/explorer/smart_contract/verifier_test.exs
index 451638dea1..d2104768b6 100644
--- a/apps/explorer/test/explorer/smart_contract/verifier_test.exs
+++ b/apps/explorer/test/explorer/smart_contract/verifier_test.exs
@@ -64,8 +64,7 @@ defmodule Explorer.SmartContract.VerifierTest do
address_hash = "0x0f95fa9bc0383e699325f2658d04e8d96d87b90c"
params = %{
- "contract_source_code" =>
- "pragma solidity ^0.4.24; contract SimpleStorage { ",
+ "contract_source_code" => "pragma solidity ^0.4.24; contract SimpleStorage { ",
"compiler" => "0.4.24",
"name" => "SimpleStorage",
"optimization" => false
diff --git a/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex b/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex
index 46c418389f..baf46761b7 100644
--- a/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex
+++ b/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex
@@ -24,10 +24,14 @@
<%= if contract?(@address) do %>
<%= link(
- gettext("Code"),
- class: "nav-link",
- to: address_contract_path(@conn, :index, @conn.assigns.locale, @conn.params["address_id"])
- ) %>
+ to: address_contract_path(@conn, :index, @conn.assigns.locale, @conn.params["address_id"]),
+ class: "nav-link") do %>
+ <%= gettext("Code") %>
+
+ <%= if smart_contract_verified?(@address) do %>
+
+ <% end %>
+ <% end %>
<% end %>
diff --git a/apps/explorer_web/lib/explorer_web/templates/address_transaction/index.html.eex b/apps/explorer_web/lib/explorer_web/templates/address_transaction/index.html.eex
index 1644de9737..a9323e1c88 100644
--- a/apps/explorer_web/lib/explorer_web/templates/address_transaction/index.html.eex
+++ b/apps/explorer_web/lib/explorer_web/templates/address_transaction/index.html.eex
@@ -24,10 +24,14 @@
<%= if contract?(@address) do %>
<%= link(
- gettext("Code"),
- class: "nav-link",
- to: address_contract_path(@conn, :index, @conn.assigns.locale, @conn.params["address_id"])
- ) %>
+ to: address_contract_path(@conn, :index, @conn.assigns.locale, @conn.params["address_id"]),
+ class: "nav-link") do %>
+ <%= gettext("Code") %>
+
+ <%= if smart_contract_verified?(@address) do %>
+
+ <% end %>
+ <% end %>
<% end %>
diff --git a/apps/explorer_web/lib/explorer_web/views/address_contract_view.ex b/apps/explorer_web/lib/explorer_web/views/address_contract_view.ex
index 74f64dbb68..11377e816d 100644
--- a/apps/explorer_web/lib/explorer_web/views/address_contract_view.ex
+++ b/apps/explorer_web/lib/explorer_web/views/address_contract_view.ex
@@ -1,8 +1,5 @@
defmodule ExplorerWeb.AddressContractView do
use ExplorerWeb, :view
- alias Explorer.Chain.{Address, SmartContract}
-
- def smart_contract_verified?(%Address{smart_contract: nil}), do: false
- def smart_contract_verified?(%Address{smart_contract: %SmartContract{}}), do: true
+ import ExplorerWeb.AddressView, only: [smart_contract_verified?: 1]
end
diff --git a/apps/explorer_web/lib/explorer_web/views/address_internal_transaction_view.ex b/apps/explorer_web/lib/explorer_web/views/address_internal_transaction_view.ex
index edde922751..ddcd7f9ea4 100644
--- a/apps/explorer_web/lib/explorer_web/views/address_internal_transaction_view.ex
+++ b/apps/explorer_web/lib/explorer_web/views/address_internal_transaction_view.ex
@@ -1,7 +1,7 @@
defmodule ExplorerWeb.AddressInternalTransactionView do
use ExplorerWeb, :view
- import ExplorerWeb.AddressView, only: [contract?: 1]
+ import ExplorerWeb.AddressView, only: [contract?: 1, smart_contract_verified?: 1]
def format_current_filter(filter) do
case filter do
diff --git a/apps/explorer_web/lib/explorer_web/views/address_transaction_view.ex b/apps/explorer_web/lib/explorer_web/views/address_transaction_view.ex
index 155e5e3e01..abebb26c8c 100644
--- a/apps/explorer_web/lib/explorer_web/views/address_transaction_view.ex
+++ b/apps/explorer_web/lib/explorer_web/views/address_transaction_view.ex
@@ -1,7 +1,7 @@
defmodule ExplorerWeb.AddressTransactionView do
use ExplorerWeb, :view
- import ExplorerWeb.AddressView, only: [contract?: 1]
+ import ExplorerWeb.AddressView, only: [contract?: 1, smart_contract_verified?: 1]
alias ExplorerWeb.TransactionView
diff --git a/apps/explorer_web/lib/explorer_web/views/address_view.ex b/apps/explorer_web/lib/explorer_web/views/address_view.ex
index fe130f9c29..c801a29292 100644
--- a/apps/explorer_web/lib/explorer_web/views/address_view.ex
+++ b/apps/explorer_web/lib/explorer_web/views/address_view.ex
@@ -1,7 +1,8 @@
defmodule ExplorerWeb.AddressView do
use ExplorerWeb, :view
- alias Explorer.Chain.{Address, Wei}
+ alias Explorer.Chain.{Address, Wei, SmartContract}
+
alias Explorer.ExchangeRates.Token
alias ExplorerWeb.ExchangeRates.USD
@@ -51,4 +52,7 @@ defmodule ExplorerWeb.AddressView do
|> QRCode.to_png()
|> Base.encode64()
end
+
+ def smart_contract_verified?(%Address{smart_contract: %SmartContract{}}), do: true
+ def smart_contract_verified?(%Address{smart_contract: nil}), do: false
end