Merge branch 'master' into fix/etc-theme-fixes

pull/2090/head
Victor Baranov 6 years ago committed by GitHub
commit a26204f614
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      CHANGELOG.md
  2. 4
      apps/block_scout_web/assets/css/components/_dropdown.scss
  3. 6
      apps/block_scout_web/assets/css/components/_log-search.scss
  4. 20
      apps/block_scout_web/assets/css/components/_modal_status.scss
  5. 4
      apps/block_scout_web/assets/css/components/_navbar.scss
  6. 29
      apps/block_scout_web/lib/block_scout_web/templates/common_components/_icon_question_modal.html.eex
  7. 22
      apps/block_scout_web/lib/block_scout_web/templates/common_components/_modal_status.html.eex
  8. 2
      apps/block_scout_web/lib/block_scout_web/templates/layout/_footer.html.eex
  9. 2
      apps/block_scout_web/lib/block_scout_web/templates/transaction/overview.html.eex
  10. 4
      apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/block.ex
  11. 35
      apps/ethereum_jsonrpc/lib/ethereum_jsonrpc/geth/call.ex
  12. 54
      apps/ethereum_jsonrpc/test/ethereum_jsonrpc/block_test.exs
  13. 43
      apps/ethereum_jsonrpc/test/ethereum_jsonrpc/geth/call_test.exs

@ -9,6 +9,7 @@
## 2.0.0-beta
### Features
- [#2091](https://github.com/poanetwork/blockscout/pull/2091) - Added "Question" modal.
- [#1963](https://github.com/poanetwork/blockscout/pull/1963), [#1959](https://github.com/poanetwork/blockscout/pull/1959), [#1948](https://github.com/poanetwork/blockscout/pull/1948), [#1936](https://github.com/poanetwork/blockscout/pull/1936), [#1925](https://github.com/poanetwork/blockscout/pull/1925), [#1922](https://github.com/poanetwork/blockscout/pull/1922), [#1903](https://github.com/poanetwork/blockscout/pull/1903), [#1874](https://github.com/poanetwork/blockscout/pull/1874), [#1895](https://github.com/poanetwork/blockscout/pull/1895), [#2031](https://github.com/poanetwork/blockscout/pull/2031), [#2073](https://github.com/poanetwork/blockscout/pull/2073), [#2074](https://github.com/poanetwork/blockscout/pull/2074), - added new themes and logos for poa, eth, rinkeby, goerli, ropsten, kovan, sokol, xdai, etc, rsk and default theme
- [#1726](https://github.com/poanetwork/blockscout/pull/2071) - Updated styles for the new smart contract page.
- [#2081](https://github.com/poanetwork/blockscout/pull/2081) - Tooltip for 'more' button, explorers logos added
@ -33,6 +34,8 @@
### Fixes
- [#2090](https://github.com/poanetwork/blockscout/pull/2090) - updated some ETC theme colors
- [#2099](https://github.com/poanetwork/blockscout/pull/2099) - logs search input width
- [#2098](https://github.com/poanetwork/blockscout/pull/2098) - nav dropdown issue, logo size issue
- [#2082](https://github.com/poanetwork/blockscout/pull/2082) - dropdown styles, tooltip gap fix, 404 page added
- [#2077](https://github.com/poanetwork/blockscout/pull/2077) - ui issues
- [#2072](https://github.com/poanetwork/blockscout/pull/2072) - Fixed checkmarks not showing correctly in tabs.
@ -66,6 +69,8 @@
- [#2014](https://github.com/poanetwork/blockscout/pull/2014) - fix: use better queries for listLogs endpoint
- [#2027](https://github.com/poanetwork/blockscout/pull/2027) - fix: `BlocksTransactionsMismatch` ignoring blocks without transactions
- [#2070](https://github.com/poanetwork/blockscout/pull/2070) - reduce `max_concurrency` of `BlocksTransactionsMismatch` fetcher
- [#2083](https://github.com/poanetwork/blockscout/pull/2083) - allow total_difficuly to be nil
- [#2086](https://github.com/poanetwork/blockscout/pull/2086) - fix geth's staticcall without output
### Chore

@ -30,8 +30,10 @@
font-size: 12px;
padding: 10px 20px;
&:hover {
&:hover, &.active {
color: #fff;
background-color: rgba($primary, .1) !important;
color: $primary;
}
&:first-child {

@ -12,8 +12,10 @@
.logs-search {
display: flex;
position: relative;
width: 52%;
@media (max-width: 599px) {
margin-bottom: 30px;
width: 100%;
}
}
@ -57,8 +59,8 @@
transition: .1s ease-in;
position: absolute;
top: 0;
left: 136px;
right: 59px;
&:hover {
color: #333;
}
}
}

@ -1,6 +1,7 @@
$modal-status-graph-error: #ff0d51 !default;
$modal-status-graph-warning: #ff8502 !default;
$modal-status-graph-success: $primary !default;
$modal-status-graph-question: #329ae9 !default;
.modal-status {
max-width: 100%;
@ -32,6 +33,10 @@ $modal-status-graph-success: $primary !default;
background-color: $modal-status-graph-success;
}
&-question {
background-color: $modal-status-graph-question;
}
svg {
margin-top: 15px;
}
@ -62,3 +67,18 @@ $modal-status-graph-success: $primary !default;
margin: 0 0 25px;
text-align: center;
}
.modal-status-button-wrapper {
display: flex;
justify-content: space-between;
width: 100%;
.btn-line {
flex-grow: 1;
margin-right: 20px;
&:last-child {
margin-right: 0;
}
}
}

@ -10,7 +10,7 @@ $header-textfield-text-color: $header-links-color !default;
$header-textfield-background-color: #f5f6fa !default;
$header-textfield-magnifier-color: $header-links-color !default;
$header-link-horizontal-padding: 0.71rem;
$navbar-logo-height: 1.5em !default;
$navbar-logo-height: 18px !default;
$navbar-logo-width: auto !default;
.navbar.navbar-primary {
@ -208,7 +208,7 @@ $navbar-logo-width: auto !default;
}
.navbar-logo {
height: $navbar-logo-height;
max-height: $navbar-logo-height;
width: $navbar-logo-width;
}

@ -0,0 +1,29 @@
<svg xmlns="http://www.w3.org/2000/svg" width="62" height="85">
<defs>
<filter id="questiona" width="62" height="85" x="0" y="0" filterUnits="userSpaceOnUse">
<feOffset dy="6" in="SourceAlpha"/>
<feGaussianBlur result="blurOut" stdDeviation="3.464"/>
<feFlood flood-color="#2674AF" result="floodOut"/>
<feComposite in="floodOut" in2="blurOut" operator="atop"/>
<feComponentTransfer>
<feFuncA slope=".6" type="linear"/>
</feComponentTransfer>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<filter id="questionb">
<feOffset dy="-4" in="SourceAlpha"/>
<feGaussianBlur result="blurOut" stdDeviation="2.828"/>
<feFlood flood-color="#329AE9" result="floodOut"/>
<feComposite in="floodOut" in2="blurOut" operator="out" result="compOut"/>
<feComposite in="compOut" in2="SourceAlpha" operator="in"/>
<feComponentTransfer>
<feFuncA slope=".5" type="linear"/>
</feComponentTransfer>
<feBlend in2="SourceGraphic"/>
</filter>
</defs>
<path fill="#FFF" fill-rule="evenodd" d="M30.385 46.419c1.149 0 2.146-.344 2.995-1.033.847-.689 1.381-1.664 1.6-2.928.273-1.205.889-2.368 1.846-3.487.957-1.119 2.339-2.454 4.144-4.004 1.915-1.779 3.474-3.3 4.678-4.563 1.203-1.262 2.228-2.784 3.077-4.564.848-1.779 1.272-3.731 1.272-5.855 0-2.87-.794-5.438-2.38-7.707-1.587-2.267-3.774-4.046-6.565-5.338-2.79-1.292-5.963-1.937-9.518-1.937-3.174 0-6.333.531-9.478 1.593-3.147 1.062-5.95 2.54-8.412 4.434-.931.747-1.6 1.522-2.01 2.325-.41.804-.616 1.808-.616 3.013 0 1.78.479 3.287 1.436 4.521.957 1.235 2.12 1.851 3.488 1.851 1.149 0 2.653-.545 4.513-1.636l1.97-1.033c1.531-.918 2.913-1.621 4.144-2.11a10.075 10.075 0 0 1 3.734-.732c1.53 0 2.734.374 3.61 1.12.875.747 1.313 1.752 1.313 3.014 0 1.263-.315 2.41-.943 3.444-.63 1.033-1.574 2.268-2.832 3.702-1.751 1.895-3.118 3.746-4.103 5.554-.984 1.808-1.477 4.062-1.477 6.759 0 1.78.397 3.158 1.19 4.133.793.977 1.9 1.464 3.324 1.464zm.164 20.579c2.297 0 4.198-.803 5.703-2.411 1.504-1.606 2.257-3.587 2.257-5.941 0-2.353-.753-4.334-2.257-5.941-1.505-1.607-3.406-2.411-5.703-2.411-2.244 0-4.117.804-5.621 2.411-1.506 1.607-2.257 3.588-2.257 5.941 0 2.354.751 4.335 2.257 5.941 1.504 1.608 3.377 2.411 5.621 2.411z" filter="url(#questionb)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -17,6 +17,11 @@
render BlockScoutWeb.CommonComponentsView, "_icon_warning_modal.html"
end
%>
<%=
if @status == "question" do
render BlockScoutWeb.CommonComponentsView, "_icon_question_modal.html"
end
%>
</div>
<%= render BlockScoutWeb.CommonComponentsView, "_modal_close_button.html" %>
<div class="modal-body modal-status-body">
@ -26,9 +31,20 @@
<%= if assigns[:text] do %>
<p class="modal-status-text"><%= @text %></p>
<% end %>
<button class="btn-line" type="button" data-dismiss="modal">
<span class="btn-line-text">Ok</span>
</button>
<div class="modal-status-button-wrapper">
<%= if @status !== "question" do %>
<button class="btn-line" type="button" data-dismiss="modal">
<span class="btn-line-text">Ok</span>
</button>
<% else %>
<button class="btn-line except" type="button" data-dismiss="modal">
<span class="btn-line-text">No</span>
</button>
<button class="btn-line accept" type="button" data-dismiss="modal">
<span class="btn-line-text">Yes</span>
</button>
<% end %>
</div>
</div>
</div>
</div>

@ -84,4 +84,4 @@
</div>
<% end %>
</div>
</footer>
</footer>

@ -51,7 +51,7 @@
</span>
</div>
<!-- Verify in other explorers -->
<%# <%= render BlockScoutWeb.AddressView, "_verify_other_explorers.html", hash: hash(@transaction), type: "tx" %> %>
<!-- <%= render BlockScoutWeb.AddressView, "_verify_other_explorers.html", hash: hash(@transaction), type: "tx" %> -->
<hr>
<!-- Block Hash -->
<dl class="row">

@ -439,8 +439,8 @@ defmodule EthereumJSONRPC.Block do
{key, quantity_to_integer(quantity)}
end
# Size may be `nil` for uncle blocks
defp entry_to_elixir({key, nil}) when key in ~w(size) do
# Size and totalDifficulty may be `nil` for uncle blocks
defp entry_to_elixir({key, nil}) when key in ~w(size totalDifficulty) do
{key, nil}
end

@ -385,22 +385,23 @@ defmodule EthereumJSONRPC.Geth.Call do
}
end
defp elixir_to_internal_transaction_params(%{
"blockNumber" => block_number,
"transactionIndex" => transaction_index,
"transactionHash" => transaction_hash,
"index" => index,
"traceAddress" => trace_address,
"type" => "call" = type,
"callType" => "staticcall" = call_type,
"from" => from_address_hash,
"to" => to_address_hash,
"input" => input,
"output" => output,
"gas" => gas,
"gasUsed" => gas_used,
"value" => 0 = value
}) do
defp elixir_to_internal_transaction_params(
%{
"blockNumber" => block_number,
"transactionIndex" => transaction_index,
"transactionHash" => transaction_hash,
"index" => index,
"traceAddress" => trace_address,
"type" => "call" = type,
"callType" => "staticcall" = call_type,
"from" => from_address_hash,
"to" => to_address_hash,
"input" => input,
"gas" => gas,
"gasUsed" => gas_used,
"value" => 0 = value
} = params
) do
%{
block_number: block_number,
transaction_index: transaction_index,
@ -414,7 +415,7 @@ defmodule EthereumJSONRPC.Geth.Call do
gas: gas,
gas_used: gas_used,
input: input,
output: output,
output: params["output"],
value: value
}
end

@ -2,4 +2,58 @@ defmodule EthereumJSONRPC.BlockTest do
use ExUnit.Case, async: true
doctest EthereumJSONRPC.Block
alias EthereumJSONRPC.Block
describe "elixir_to_params/1" do
test "sets totalDifficuly to nil if it's empty" do
result =
Block.elixir_to_params(%{
"difficulty" => 17_561_410_778,
"extraData" => "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",
"gasLimit" => 5000,
"gasUsed" => 0,
"hash" => "0x4d9423080290a650eaf6db19c87c76dff83d1b4ab64aefe6e5c5aa2d1f4b6623",
"logsBloom" =>
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"miner" => "0xbb7b8287f3f0a933474a79eae42cbca977791171",
"mixHash" => "0xbbb93d610b2b0296a59f18474ac3d6086a9902aa7ca4b9a306692f7c3d496fdf",
"nonce" => 5_539_500_215_739_777_653,
"number" => 59,
"parentHash" => "0xcd5b5c4cecd7f18a13fe974255badffd58e737dc67596d56bc01f063dd282e9e",
"receiptsRoot" => "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"sha3Uncles" => "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"size" => 542,
"stateRoot" => "0x6fd0a5d82ca77d9f38c3ebbde11b11d304a5fcf3854f291df64395ab38ed43ba",
"timestamp" => Timex.parse!("2015-07-30T15:32:07Z", "{ISO:Extended:Z}"),
"totalDifficulty" => nil,
"transactions" => [],
"transactionsRoot" => "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"uncles" => []
})
assert result == %{
difficulty: 17_561_410_778,
extra_data: "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",
gas_limit: 5000,
gas_used: 0,
hash: "0x4d9423080290a650eaf6db19c87c76dff83d1b4ab64aefe6e5c5aa2d1f4b6623",
logs_bloom:
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
mix_hash: "0xbbb93d610b2b0296a59f18474ac3d6086a9902aa7ca4b9a306692f7c3d496fdf",
miner_hash: "0xbb7b8287f3f0a933474a79eae42cbca977791171",
nonce: 5_539_500_215_739_777_653,
number: 59,
parent_hash: "0xcd5b5c4cecd7f18a13fe974255badffd58e737dc67596d56bc01f063dd282e9e",
receipts_root: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3_uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 542,
state_root: "0x6fd0a5d82ca77d9f38c3ebbde11b11d304a5fcf3854f291df64395ab38ed43ba",
timestamp: Timex.parse!("2015-07-30T15:32:07Z", "{ISO:Extended:Z}"),
total_difficulty: nil,
transactions_root: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
end
end
end

@ -2,4 +2,47 @@ defmodule EthereumJSONRPC.Geth.CallTest do
use ExUnit.Case, async: true
doctest EthereumJSONRPC.Geth.Call
alias EthereumJSONRPC.Geth.Call
describe "to_internal_transaction_params/1" do
test "does not fail decoding static_call without output" do
result =
Call.to_internal_transaction_params(%{
"blockNumber" => 584_340,
"callType" => "staticcall",
"error" => "execution reverted",
"from" => "0x3858636f27e269d23db2ef1fcca5f93dcaa564cd",
"gas" => "0x0",
"gasUsed" => "0x0",
"index" => 1,
"input" =>
"0x09d10a5e00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002",
"to" => "0x79073fc2117dd054fcedacad1e7018c9cbe3ec0b",
"traceAddress" => [1, 3],
"transactionHash" => "0xbc38745b826f058ed2f6c93fa5b145323857f06bbb5230b6a6a50e09e0915857",
"transactionIndex" => 0,
"type" => "call",
"value" => "0x0"
})
assert result == %{
block_number: 584_340,
call_type: "staticcall",
from_address_hash: "0x3858636f27e269d23db2ef1fcca5f93dcaa564cd",
gas: 0,
gas_used: 0,
index: 1,
input:
"0x09d10a5e00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002",
output: nil,
to_address_hash: "0x79073fc2117dd054fcedacad1e7018c9cbe3ec0b",
trace_address: [1, 3],
transaction_hash: "0xbc38745b826f058ed2f6c93fa5b145323857f06bbb5230b6a6a50e09e0915857",
transaction_index: 0,
type: "call",
value: 0
}
end
end
end

Loading…
Cancel
Save