diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7598ff5d33..62382f5676 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,8 @@
## Current
### Features
+- [#2433](https://github.com/poanetwork/blockscout/pull/2433) - Add a functionality to try Eth RPC methods in the documentation
+- [#2529](https://github.com/poanetwork/blockscout/pull/2529) - show both eth value and token transfers on transaction overview page
- [#2376](https://github.com/poanetwork/blockscout/pull/2376) - Split API and WebApp routes
- [#2477](https://github.com/poanetwork/blockscout/pull/2477) - aggregate token transfers on transaction page
- [#2458](https://github.com/poanetwork/blockscout/pull/2458) - Add LAST_BLOCK var to add ability indexing in the range of blocks
@@ -9,10 +11,12 @@
### Fixes
- [#2509](https://github.com/poanetwork/blockscout/pull/2509) - value-ticker gaps fix
+- [#2532](https://github.com/poanetwork/blockscout/pull/2532) - don't show empty token transfers on the transaction overview page
- [#2528](https://github.com/poanetwork/blockscout/pull/2528) - fix coin history chart data
- [#2520](https://github.com/poanetwork/blockscout/pull/2520) - Hide loading message when fetching is failed
- [#2523](https://github.com/poanetwork/blockscout/pull/2523) - Avoid importing internal_transactions of pending transactions
- [#2519](https://github.com/poanetwork/blockscout/pull/2519) - enable `First` page button in pagination
+- [#2517](https://github.com/poanetwork/blockscout/pull/2517) - remove duplicate indexes
- [#2515](https://github.com/poanetwork/blockscout/pull/2515) - do not aggregate NFT token transfers
- [#2512](https://github.com/poanetwork/blockscout/pull/2512) - alert link fix
- [#2508](https://github.com/poanetwork/blockscout/pull/2508) - logs view columns fix
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index 4de2ef6baf..3075397e8d 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -4,6 +4,7 @@
* Elixir & Erlang/OTP versions (`elixir -version`):
* Operating System:
+* Blockscout Version/branch:
### Steps to reproduce
diff --git a/apps/block_scout_web/assets/css/components/_api.scss b/apps/block_scout_web/assets/css/components/_api.scss
index 820e1e8f01..6f46956780 100644
--- a/apps/block_scout_web/assets/css/components/_api.scss
+++ b/apps/block_scout_web/assets/css/components/_api.scss
@@ -116,6 +116,10 @@ $api-doc-list-item-view-more-color: $api-doc-list-item-title-color !default;
margin: 0;
}
+.api-doc-list-item-description {
+ width: 100%
+}
+
.api-doc-list-item-controls {
display: flex;
flex-direction: column;
diff --git a/apps/block_scout_web/assets/css/components/_button.scss b/apps/block_scout_web/assets/css/components/_button.scss
index d6a9e7b020..53bca7a83a 100644
--- a/apps/block_scout_web/assets/css/components/_button.scss
+++ b/apps/block_scout_web/assets/css/components/_button.scss
@@ -23,6 +23,7 @@ $button-secondary-color: $secondary !default;
background-color: darken($button-primary-color, 10%);
border-color: darken($button-primary-color, 10%);
color: #fff;
+ outline: none !important;
text-decoration: none;
}
diff --git a/apps/block_scout_web/assets/css/components/_form.scss b/apps/block_scout_web/assets/css/components/_form.scss
index 5346afcb7c..4b13065a05 100644
--- a/apps/block_scout_web/assets/css/components/_form.scss
+++ b/apps/block_scout_web/assets/css/components/_form.scss
@@ -9,6 +9,11 @@ $form-control-border-color: #e2e5ec !default;
border-radius: 4px;
}
+ &:focus {
+ border-color: $secondary;
+ box-shadow: none;
+ }
+
&.n-b-r {
border-right: none;
}
diff --git a/apps/block_scout_web/assets/css/theme/_base_variables.scss b/apps/block_scout_web/assets/css/theme/_base_variables.scss
index 2238327bd4..b4cf443f05 100644
--- a/apps/block_scout_web/assets/css/theme/_base_variables.scss
+++ b/apps/block_scout_web/assets/css/theme/_base_variables.scss
@@ -359,7 +359,7 @@ $input-btn-padding-y: 0.375rem !default;
$input-btn-padding-x: 0.75rem !default;
$input-btn-line-height: $line-height-base !default;
-$input-btn-focus-width: 0.2rem !default;
+$input-btn-focus-width: 1px !default;
$input-btn-focus-color: rgba($component-active-bg, 0.25) !default;
$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
diff --git a/apps/block_scout_web/assets/js/app.js b/apps/block_scout_web/assets/js/app.js
index 89059dd306..a33dab821d 100644
--- a/apps/block_scout_web/assets/js/app.js
+++ b/apps/block_scout_web/assets/js/app.js
@@ -59,5 +59,6 @@ import './lib/async_listing_load'
import './lib/tooltip'
import './lib/modals'
import './lib/try_api'
+import './lib/try_eth_api'
import './lib/card_tabs'
import './lib/network_selector'
diff --git a/apps/block_scout_web/assets/js/lib/try_eth_api.js b/apps/block_scout_web/assets/js/lib/try_eth_api.js
new file mode 100644
index 0000000000..a3dd7b6f4e
--- /dev/null
+++ b/apps/block_scout_web/assets/js/lib/try_eth_api.js
@@ -0,0 +1,70 @@
+import $ from 'jquery'
+
+function composeCurlCommand (data) {
+ return `curl -H "content-type: application/json" -X POST --data '${JSON.stringify(data)}'`
+}
+
+function handleResponse (data, xhr, clickedButton) {
+ const module = clickedButton.attr('data-module')
+ const action = clickedButton.attr('data-action')
+ const curl = $(`[data-selector="${module}-${action}-curl"]`)[0]
+ const code = $(`[data-selector="${module}-${action}-server-response-code"]`)[0]
+ const body = $(`[data-selector="${module}-${action}-server-response-body"]`)[0]
+
+ curl.innerHTML = composeCurlCommand(data)
+ code.innerHTML = xhr.status
+ body.innerHTML = JSON.stringify(xhr.responseJSON, undefined, 2)
+ $(`[data-selector="${module}-${action}-try-api-ui-result"]`).show()
+ $(`[data-selector="${module}-${action}-btn-try-api-clear"]`).show()
+ clickedButton.html(clickedButton.data('original-text'))
+ clickedButton.prop('disabled', false)
+}
+
+function wrapJsonRpc (method, params) {
+ return {
+ id: 0,
+ jsonrpc: '2.0',
+ method: method,
+ params: params
+ }
+}
+
+function parseInput (input) {
+ const type = $(input).attr('data-parameter-type')
+ const value = $(input).val()
+
+ switch (type) {
+ case 'string':
+ return value
+ case 'json':
+ return JSON.parse(value)
+ default:
+ return value
+ }
+}
+
+$('button[data-try-eth-api-ui-button-type="execute"]').click(event => {
+ const clickedButton = $(event.target)
+ const module = clickedButton.attr('data-module')
+ const action = clickedButton.attr('data-action')
+ const inputs = $(`input[data-selector="${module}-${action}-try-api-ui"]`)
+ const params = $.map(inputs, parseInput)
+ const formData = wrapJsonRpc(action, params)
+ console.log(formData)
+ const loadingText = ' Loading...'
+
+ clickedButton.prop('disabled', true)
+ clickedButton.data('original-text', clickedButton.html())
+
+ if (clickedButton.html() !== loadingText) {
+ clickedButton.html(loadingText)
+ }
+
+ $.ajax({
+ url: '/api/eth_rpc',
+ type: 'POST',
+ data: JSON.stringify(formData),
+ dataType: 'json',
+ contentType: 'application/json; charset=utf-8'
+ }).then((_data, _status, xhr) => handleResponse(formData, xhr, clickedButton))
+})
diff --git a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex
new file mode 100644
index 0000000000..7f342b4a16
--- /dev/null
+++ b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex
@@ -0,0 +1,182 @@
+
-
-
-
- Supported Method |
- Notes |
- Parameters example |
-
- <%= for {method, info} <- Map.to_list(@documentation) do %>
-
- <%= method %> |
- <%= Map.get(info, :notes, "N/A") %> |
- <%= Map.get(info, :example, "N/A") %> |
-
- <% end %>
-
+ <%= for {method, info} <- Map.to_list(@documentation) do %>
+ <%= render "_eth_rpc_item.html", action: method, info: info %>
+ <% end %>
diff --git a/apps/block_scout_web/lib/block_scout_web/views/transaction_view.ex b/apps/block_scout_web/lib/block_scout_web/views/transaction_view.ex
index 53d64555dd..7ac564fae3 100644
--- a/apps/block_scout_web/lib/block_scout_web/views/transaction_view.ex
+++ b/apps/block_scout_web/lib/block_scout_web/views/transaction_view.ex
@@ -36,7 +36,7 @@ defmodule BlockScoutWeb.TransactionView do
transaction_with_transfers = Repo.preload(transaction, token_transfers: :token)
type = Chain.transaction_token_transfer_type(transaction)
- if type, do: {type, transaction_with_transfers}
+ if type, do: {type, transaction_with_transfers}, else: {nil, transaction_with_transfers}
end
def aggregate_token_transfers(token_transfers) do
@@ -83,7 +83,7 @@ defmodule BlockScoutWeb.TransactionView do
case type do
:erc20 -> gettext("ERC-20 ")
:erc721 -> gettext("ERC-721 ")
- :token_transfer -> ""
+ _ -> ""
end
end
diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot
index 387b5068de..80c33a9495 100644
--- a/apps/block_scout_web/priv/gettext/default.pot
+++ b/apps/block_scout_web/priv/gettext/default.pot
@@ -199,11 +199,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:253
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:54
msgid "Cancel"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:137
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:106
msgid "Clear"
msgstr ""
@@ -220,6 +222,8 @@ msgstr ""
#: lib/block_scout_web/templates/address/_tabs.html.eex:42
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:165
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:187
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:126
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:149
#: lib/block_scout_web/views/address_view.ex:307
msgid "Code"
msgstr ""
@@ -325,18 +329,22 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:146
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:116
msgid "Curl"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:53
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:188
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:60
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:150
msgid "Description"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address/overview.html.eex:8
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:166
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:127
msgid "Details"
msgstr ""
@@ -371,19 +379,22 @@ msgstr ""
#: lib/block_scout_web/templates/layout/app.html.eex:56
#: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20
#: lib/block_scout_web/templates/transaction/_tile.html.eex:29
-#: lib/block_scout_web/templates/transaction/overview.html.eex:179
#: lib/block_scout_web/templates/transaction/overview.html.eex:209
+#: lib/block_scout_web/templates/transaction/_tile.html.eex:30
+#: lib/block_scout_web/templates/transaction/overview.html.eex:211
#: lib/block_scout_web/views/wei_helpers.ex:78
msgid "Ether"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:211
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:164
msgid "Example Value"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:128
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:99
msgid "Execute"
msgstr ""
@@ -485,6 +496,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/overview.html.eex:237
+#: lib/block_scout_web/templates/transaction/overview.html.eex:239
msgid "Limit"
msgstr ""
@@ -550,6 +562,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address_logs/_logs.html.eex:50
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:52
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:59
#: lib/block_scout_web/templates/transaction/_decoded_input_body.html.eex:19
#: lib/block_scout_web/templates/transaction_log/_logs.html.eex:52
msgid "Name"
@@ -584,11 +597,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:19
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:26
msgid "POST"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:33
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:40
msgid "Parameters"
msgstr ""
@@ -653,11 +668,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:173
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:134
msgid "Response Body"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:185
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:147
msgid "Responses"
msgstr ""
@@ -676,6 +693,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:163
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:124
msgid "Server Response"
msgstr ""
@@ -878,6 +896,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:40
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:47
msgid "Try it out"
msgstr ""
@@ -899,6 +918,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/overview.html.eex:231
+#: lib/block_scout_web/templates/transaction/overview.html.eex:233
msgid "Used"
msgstr ""
@@ -920,6 +940,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/overview.html.eex:179
#: lib/block_scout_web/templates/transaction/overview.html.eex:209
+#: lib/block_scout_web/templates/transaction/overview.html.eex:211
msgid "Value"
msgstr ""
@@ -998,6 +1019,7 @@ msgstr ""
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:58
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:69
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:81
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:70
msgid "required"
msgstr ""
@@ -1495,6 +1517,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/transaction/overview.html.eex:227
+#: lib/block_scout_web/templates/transaction/overview.html.eex:229
msgid "Gas"
msgstr ""
diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po
index 1aa6251b40..2c910e276e 100644
--- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po
+++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po
@@ -199,11 +199,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:253
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:54
msgid "Cancel"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:137
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:106
msgid "Clear"
msgstr ""
@@ -220,6 +222,8 @@ msgstr ""
#: lib/block_scout_web/templates/address/_tabs.html.eex:42
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:165
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:187
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:126
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:149
#: lib/block_scout_web/views/address_view.ex:307
msgid "Code"
msgstr ""
@@ -325,18 +329,22 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:146
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:116
msgid "Curl"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:53
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:188
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:60
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:150
msgid "Description"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address/overview.html.eex:8
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:166
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:127
msgid "Details"
msgstr ""
@@ -371,18 +379,21 @@ msgstr ""
#: lib/block_scout_web/templates/layout/app.html.eex:56
#: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20
#: lib/block_scout_web/templates/transaction/_tile.html.eex:30
-#: lib/block_scout_web/templates/transaction/overview.html.eex:196
+#: lib/block_scout_web/templates/transaction/overview.html.eex:179
+#: lib/block_scout_web/templates/transaction/overview.html.eex:211
#: lib/block_scout_web/views/wei_helpers.ex:78
msgid "Ether"
msgstr "POA"
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:211
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:164
msgid "Example Value"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:128
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:99
msgid "Execute"
msgstr ""
@@ -483,7 +494,7 @@ msgid "Less than"
msgstr ""
#, elixir-format
-#: lib/block_scout_web/templates/transaction/overview.html.eex:224
+#: lib/block_scout_web/templates/transaction/overview.html.eex:239
msgid "Limit"
msgstr ""
@@ -549,6 +560,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/address_logs/_logs.html.eex:50
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:52
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:59
#: lib/block_scout_web/templates/transaction/_decoded_input_body.html.eex:19
#: lib/block_scout_web/templates/transaction_log/_logs.html.eex:52
msgid "Name"
@@ -583,11 +595,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:19
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:26
msgid "POST"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:33
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:40
msgid "Parameters"
msgstr ""
@@ -652,11 +666,13 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:173
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:134
msgid "Response Body"
msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:185
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:147
msgid "Responses"
msgstr ""
@@ -675,6 +691,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:163
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:124
msgid "Server Response"
msgstr ""
@@ -877,6 +894,7 @@ msgstr ""
#, elixir-format
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:40
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:47
msgid "Try it out"
msgstr ""
@@ -897,7 +915,7 @@ msgid "Unique Token"
msgstr ""
#, elixir-format
-#: lib/block_scout_web/templates/transaction/overview.html.eex:218
+#: lib/block_scout_web/templates/transaction/overview.html.eex:233
msgid "Used"
msgstr ""
@@ -917,7 +935,8 @@ msgid "Validations"
msgstr ""
#, elixir-format
-#: lib/block_scout_web/templates/transaction/overview.html.eex:196
+#: lib/block_scout_web/templates/transaction/overview.html.eex:179
+#: lib/block_scout_web/templates/transaction/overview.html.eex:211
msgid "Value"
msgstr ""
@@ -996,6 +1015,7 @@ msgstr ""
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:58
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:69
#: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:81
+#: lib/block_scout_web/templates/api_docs/_eth_rpc_item.html.eex:70
msgid "required"
msgstr ""
@@ -1493,7 +1513,7 @@ msgid "View All Transactions"
msgstr ""
#, elixir-format
-#: lib/block_scout_web/templates/transaction/overview.html.eex:214
+#: lib/block_scout_web/templates/transaction/overview.html.eex:229
msgid "Gas"
msgstr ""
@@ -1642,7 +1662,7 @@ msgid "New Smart Contract Verification"
msgstr ""
#, elixir-format
-#: lib/block_scout_web/templates/transaction/overview.html.eex:178
+#: lib/block_scout_web/templates/transaction/overview.html.eex:192
msgid " Token Transfer"
msgstr ""
diff --git a/apps/explorer/lib/explorer/eth_rpc.ex b/apps/explorer/lib/explorer/eth_rpc.ex
index e0864ac279..04d257ffb1 100644
--- a/apps/explorer/lib/explorer/eth_rpc.ex
+++ b/apps/explorer/lib/explorer/eth_rpc.ex
@@ -12,11 +12,30 @@ defmodule Explorer.EthRPC do
"eth_getBalance" => %{
action: :eth_get_balance,
notes: """
- the `earliest` parameter will not work as expected currently, because genesis block balances
+ The `earliest` parameter will not work as expected currently, because genesis block balances
are not currently imported
""",
example: """
- {"id": 0, "jsonrpc": "2.0", "method": "eth_getBalance", "params": ["0x0000000000000000000000000000000000000007", "2"]}
+ {"id": 0, "jsonrpc": "2.0", "method": "eth_getBalance", "params": ["0x0000000000000000000000000000000000000007", "latest"]}
+ """,
+ params: [
+ %{
+ name: "Data",
+ description: "20 Bytes - address to check for balance",
+ type: "string",
+ default: nil,
+ required: true
+ },
+ %{
+ name: "Quantity|Tag",
+ description: "Integer block number, or the string \"latest\", \"earliest\" or \"pending\"",
+ type: "string",
+ default: "latest",
+ required: true
+ }
+ ],
+ result: """
+ {"id": 0, "jsonrpc": "2.0", "result": "0x0234c8a3397aab58"}
"""
},
"eth_getLogs" => %{
@@ -33,6 +52,25 @@ defmodule Explorer.EthRPC do
"fromBlock": "earliest",
"toBlock": "latest",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}]}
+ """,
+ params: [
+ %{name: "Object", description: "The filter options", type: "json", default: nil, required: true}
+ ],
+ result: """
+ {
+ "id":0,
+ "jsonrpc":"2.0",
+ "result": [{
+ "logIndex": "0x1",
+ "blockNumber":"0x1b4",
+ "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
+ "transactionIndex": "0x0",
+ "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
+ "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
+ }]
+ }
"""
}
}
diff --git a/apps/explorer/priv/repo/migrations/20190807111216_remove_duplicate_indexes.exs b/apps/explorer/priv/repo/migrations/20190807111216_remove_duplicate_indexes.exs
new file mode 100644
index 0000000000..ae07c8b1e5
--- /dev/null
+++ b/apps/explorer/priv/repo/migrations/20190807111216_remove_duplicate_indexes.exs
@@ -0,0 +1,17 @@
+defmodule Explorer.Repo.Migrations.RemoveDuplicateIndexes do
+ use Ecto.Migration
+
+ def change do
+ drop_if_exists(
+ index(:decompiled_smart_contracts, [:address_hash], name: "decompiled_smart_contracts_address_hash_index")
+ )
+
+ drop_if_exists(
+ index(:staking_pools_delegators, [:delegator_address_hash],
+ name: "staking_pools_delegators_delegator_address_hash_index"
+ )
+ )
+
+ drop_if_exists(index(:transactions, [:to_address_hash], name: "transactions_to_address_hash_index"))
+ end
+end