Repository navigation
Conversation
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…cout#14654) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…4761) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#14764) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Victor Baranov <baranov.viktor.27@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…blockscout#14965) Co-authored-by: Alexander Kolotov <alexander.kolotov@gmail.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…es (blockscout#14967) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#14979) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…cout#14989) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
There was a problem hiding this comment.
If your organization's extra usage balance is empty, an organization admin can add extra usage credits at claude.ai/admin-settings/usage. If its monthly spend limit was reached, an admin can raise it on the same page. If neither applies, contact Anthropic support.
Once extra usage is available, someone with write access to this repository can comment @claude review on this pull request to trigger a review.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
WalkthroughWarning Review details and warnings were omitted to fit the comment limit. |
There was a problem hiding this comment.
Code Review
This pull request upgrades the codebase to Elixir 1.20 and Erlang/OTP 28, replaces Poison/Jason with the built-in JSON module, adds support for ERC-8056 tokens, and refactors pagination across API v2. The review feedback correctly identifies three critical issues: a potential FunctionClauseError in notifier.ex due to missing keys in a TransactionView.render/2 call, a crash risk in address_controller.ex if BlockNumber.get_max/0 returns nil, and an unsafe log.block.hash access in transaction_view.ex when the block association is not preloaded.
| TransactionView.render("token_transfers.json", %{ | ||
| token_transfers: relevant_token_transfers, | ||
| conn: nil | ||
| }) |
There was a problem hiding this comment.
TransactionView.render("token_transfers.json", ...) expects decoded_transactions_map and next_page_params in its assigns map. Calling it with only token_transfers and conn will fail to match any clause and raise a FunctionClauseError at runtime. Please pass decoded_transactions_map: %{} and next_page_params: nil to satisfy the pattern match.
TransactionView.render("token_transfers.json", %{
token_transfers: relevant_token_transfers,
decoded_transactions_map: %{},
next_page_params: nil,
conn: nil
})
| head_block_number = BlockNumber.get_max() | ||
|
|
||
| if is_nil(end_block_number) or end_block_number >= head_block_number do | ||
| max(head_block_number - tolerance, 0) | ||
| else | ||
| end_block_number | ||
| end |
There was a problem hiding this comment.
If BlockNumber.get_max() returns nil (which can happen if the block number cache is empty or during initial sync/testing), evaluating head_block_number - tolerance will raise an ArithmeticError and crash the request. We should safely handle the nil case.
case BlockNumber.get_max() do
nil ->
end_block_number
head_block_number ->
if is_nil(end_block_number) or end_block_number >= head_block_number do
max(head_block_number - tolerance, 0)
else
end_block_number
end
end
| "smart_contract" => smart_contract_info(transaction_or_hash), | ||
| "block_number" => log.block_number, | ||
| "block_hash" => log.block_hash, | ||
| "block_hash" => log.block.hash, |
There was a problem hiding this comment.
Using log.block.hash is unsafe because if the block association is not loaded (i.e., %NotLoaded{}) or is nil (e.g., for pending logs), this will raise a KeyError or BadMapError at runtime. Since block_hash is a direct field on the Log struct, we should continue using log.block_hash which is always safe and avoids unnecessary association loading.
"block_hash" => log.block_hash,
d6b057c to
db96eb4
Compare
db96eb4 to
f59b53d
Compare
Upstream Sync - v12.0.4
Auto-merge with upstream
v12.0.4failed. Version/workflow conflicts were auto-resolved,but the following files have code conflicts that need manual resolution:
To resolve:
v12.0.4to trigger Docker buildUpstream release notes