diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f6c9d4d1d..e43bd0c1f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - [#3145](https://github.com/poanetwork/blockscout/pull/3145) - Pending txs per address API endpoint ### Fixes +- [#3207](https://github.com/poanetwork/blockscout/pull/3207) - Fix read contract bytes array type output - [#3203](https://github.com/poanetwork/blockscout/pull/3203) - Improve "get mined blocks" query performance - [#3202](https://github.com/poanetwork/blockscout/pull/3202) - Fix contracts verification with experimental features enabled - [#3201](https://github.com/poanetwork/blockscout/pull/3201) - Connect to Metamask button diff --git a/apps/block_scout_web/assets/css/_helpers.scss b/apps/block_scout_web/assets/css/_helpers.scss index f6e6669dda..47338f1331 100644 --- a/apps/block_scout_web/assets/css/_helpers.scss +++ b/apps/block_scout_web/assets/css/_helpers.scss @@ -33,3 +33,7 @@ .hidden { display: none!important; } + +.word-break-all { + word-break: break-all; +} diff --git a/apps/block_scout_web/lib/block_scout_web/templates/smart_contract/_functions.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/smart_contract/_functions.html.eex index be83b63ca1..169f1b61ce 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/smart_contract/_functions.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/smart_contract/_functions.html.eex @@ -60,7 +60,7 @@
<% else %> - + <%= if outputs?(function["outputs"]) do %> <%= for output <- function["outputs"] do %> <%= if address?(output["type"]) do %> diff --git a/apps/explorer/lib/explorer/smart_contract/reader.ex b/apps/explorer/lib/explorer/smart_contract/reader.ex index 72eef9aa95..a3bcfeb9df 100644 --- a/apps/explorer/lib/explorer/smart_contract/reader.ex +++ b/apps/explorer/lib/explorer/smart_contract/reader.ex @@ -321,8 +321,21 @@ defmodule Explorer.SmartContract.Reader do Map.put_new(output, "value", bytes_to_string(value)) end - defp new_value(%{"type" => "bytes" <> _number} = output, values, index) do - Map.put_new(output, "value", bytes_to_string(Enum.at(values, index))) + defp new_value(%{"type" => "bytes" <> number_rest} = output, values, index) do + if String.contains?(number_rest, "[]") do + values_array = Enum.at(values, index) + + values_array_formatted = + Enum.map(values_array, fn value -> + bytes_to_string(value) + end) + + values_array_formatted_3 = values_array_formatted ++ values_array_formatted ++ values_array_formatted + + Map.put_new(output, "value", values_array_formatted_3) + else + Map.put_new(output, "value", bytes_to_string(Enum.at(values, index))) + end end defp new_value(%{"type" => "bytes"} = output, values, index) do