Fix read contract bytes array type

pull/3207/head
Victor Baranov 4 years ago
parent da42a3bdcd
commit 024823cd3b
  1. 1
      CHANGELOG.md
  2. 13
      apps/explorer/lib/explorer/smart_contract/reader.ex

@ -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

@ -321,9 +321,20 @@ 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
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)
Map.put_new(output, "value", values_array_formatted)
else
Map.put_new(output, "value", bytes_to_string(Enum.at(values, index)))
end
end
defp new_value(%{"type" => "bytes"} = output, values, index) do
Map.put_new(output, "value", bytes_to_string(Enum.at(values, index)))

Loading…
Cancel
Save