Skip to content

Commit 0fa05d0

Browse files
committed
Use Withdrawal struct an amount_wei helper
1 parent 02e6b21 commit 0fa05d0

4 files changed

Lines changed: 18 additions & 12 deletions

File tree

test/state/state.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,8 @@ void finalize(State& state, evmc_revision rev, const address& coinbase,
132132
});
133133
}
134134

135-
// Apply withdrawals. Amount value is in gwei.
136-
for (const auto& withdraw : withdrawals)
137-
state.touch(withdraw.first).balance += intx::uint256{withdraw.second} * 1e9;
135+
for (const auto& withdrawal : withdrawals)
136+
state.touch(withdrawal.recipient).balance += withdrawal.amount_wei();
138137
}
139138

140139
std::variant<TransactionReceipt, std::error_code> transition(

test/state/state.hpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,15 @@ class State
6666
[[nodiscard]] const auto& get_accounts() const noexcept { return m_accounts; }
6767
};
6868

69-
/// Vector of withdrawals in a block. Contains `to` address and ETH `amount` in gwei.
70-
using Withdrawal = std::pair<address, uint64_t>;
69+
struct Withdrawal
70+
{
71+
address recipient;
72+
/// The amount is denominated in gwei.
73+
uint64_t amount;
74+
75+
intx::uint256 amount_wei() const noexcept { return intx::uint256{amount} * 1e9; }
76+
};
77+
7178
using Withdrawals = std::vector<Withdrawal>;
7279

7380
struct BlockInfo

test/statetest/statetest_loader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ state::BlockInfo from_json<state::BlockInfo>(const json::json& j)
174174
state::Withdrawals withdrawals;
175175
if (const auto withdrawals_it = j.find("withdrawals"); withdrawals_it != j.end())
176176
{
177-
for (const auto& withdraw : *withdrawals_it)
177+
for (const auto& withdrawal : *withdrawals_it)
178178
{
179-
withdrawals.push_back({from_json<evmc::address>(withdraw.at("address")),
180-
from_json<uint64_t>(withdraw.at("amount"))});
179+
withdrawals.push_back({from_json<evmc::address>(withdrawal.at("address")),
180+
from_json<uint64_t>(withdrawal.at("amount"))});
181181
}
182182
}
183183

test/unittests/statetest_loader_block_info_test.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ TEST(statetest_loader, block_info_withdrawals)
205205
EXPECT_EQ(bi.timestamp, 0);
206206
EXPECT_EQ(bi.number, 0);
207207
EXPECT_EQ(bi.withdrawals.size(), 2);
208-
EXPECT_EQ(bi.withdrawals[0].first, 0x0000000000000000000000000000000000000100_address);
209-
EXPECT_EQ(bi.withdrawals[0].second, 0x800000000);
210-
EXPECT_EQ(bi.withdrawals[1].first, 0x0000000000000000000000000000000000000200_address);
211-
EXPECT_EQ(bi.withdrawals[1].second, 0xffffffffffffffff);
208+
EXPECT_EQ(bi.withdrawals[0].recipient, 0x0000000000000000000000000000000000000100_address);
209+
EXPECT_EQ(bi.withdrawals[0].amount, 0x800000000);
210+
EXPECT_EQ(bi.withdrawals[1].recipient, 0x0000000000000000000000000000000000000200_address);
211+
EXPECT_EQ(bi.withdrawals[1].amount, 0xffffffffffffffff);
212212
}

0 commit comments

Comments
 (0)