@@ -71,14 +71,14 @@ struct monad_state_override
7171{
7272 struct monad_state_override_object
7373 {
74- std::optional<byte_string > balance{std::nullopt };
74+ std::optional<uint256_t > balance{std::nullopt };
7575 std::optional<uint64_t > nonce{std::nullopt };
7676 std::optional<byte_string> code{std::nullopt };
77- std::map<byte_string, byte_string > state{};
78- std::map<byte_string, byte_string > state_diff{};
77+ std::map<bytes32_t , bytes32_t > state{};
78+ std::map<bytes32_t , bytes32_t > state_diff{};
7979 };
8080
81- std::map<byte_string , monad_state_override_object> override_sets;
81+ std::map<Address , monad_state_override_object> override_sets;
8282};
8383
8484namespace
@@ -195,7 +195,8 @@ void add_override_address(
195195
196196 MONAD_ASSERT (addr);
197197 MONAD_ASSERT (addr_len == sizeof (Address));
198- byte_string const address{addr, addr + addr_len};
198+ Address address;
199+ std::memcpy (address.bytes , addr, sizeof (Address));
199200
200201 MONAD_ASSERT (m->override_sets .find (address) == m->override_sets .end ());
201202 m->override_sets .emplace (address, StateOverrideObj{});
@@ -210,11 +211,13 @@ void set_override_balance(
210211
211212 MONAD_ASSERT (addr);
212213 MONAD_ASSERT (addr_len == sizeof (Address));
213- byte_string const address{addr, addr + addr_len};
214+ Address address;
215+ std::memcpy (address.bytes , addr, sizeof (Address));
214216 MONAD_ASSERT (m->override_sets .find (address) != m->override_sets .end ());
215217
216218 MONAD_ASSERT (balance);
217- byte_string const b{balance, balance + balance_len};
219+ MONAD_ASSERT (balance_len == sizeof (uint256_t ));
220+ uint256_t const b = intx::be::unsafe::load<uint256_t >(balance);
218221 m->override_sets [address].balance = std::move (b);
219222}
220223
@@ -226,7 +229,8 @@ void set_override_nonce(
226229
227230 MONAD_ASSERT (addr);
228231 MONAD_ASSERT (addr_len == sizeof (Address));
229- byte_string const address{addr, addr + addr_len};
232+ Address address;
233+ std::memcpy (address.bytes , addr, sizeof (Address));
230234 MONAD_ASSERT (m->override_sets .find (address) != m->override_sets .end ());
231235
232236 m->override_sets [address].nonce = nonce;
@@ -240,7 +244,8 @@ void set_override_code(
240244
241245 MONAD_ASSERT (addr);
242246 MONAD_ASSERT (addr_len == sizeof (Address));
243- byte_string const address{addr, addr + addr_len};
247+ Address address;
248+ std::memcpy (address.bytes , addr, sizeof (Address));
244249 MONAD_ASSERT (m->override_sets .find (address) != m->override_sets .end ());
245250
246251 MONAD_ASSERT (code);
@@ -257,15 +262,19 @@ void set_override_state_diff(
257262
258263 MONAD_ASSERT (addr);
259264 MONAD_ASSERT (addr_len == sizeof (Address));
260- byte_string const address{addr, addr + addr_len};
265+ Address address;
266+ std::memcpy (address.bytes , addr, sizeof (Address));
261267 MONAD_ASSERT (m->override_sets .find (address) != m->override_sets .end ());
262268
263269 MONAD_ASSERT (key);
264270 MONAD_ASSERT (key_len == sizeof (bytes32_t ));
265- byte_string const k{key, key + key_len};
271+ bytes32_t k;
272+ std::memcpy (k.bytes , key, sizeof (bytes32_t ));
266273
267274 MONAD_ASSERT (value);
268- byte_string const v{value, value + value_len};
275+ MONAD_ASSERT (value_len == sizeof (bytes32_t ));
276+ bytes32_t v;
277+ std::memcpy (v.bytes , value, sizeof (bytes32_t ));
269278
270279 auto &state_object = m->override_sets [address].state_diff ;
271280 MONAD_ASSERT (state_object.find (k) == state_object.end ());
@@ -281,15 +290,19 @@ void set_override_state(
281290
282291 MONAD_ASSERT (addr);
283292 MONAD_ASSERT (addr_len == sizeof (Address));
284- byte_string const address{addr, addr + addr_len};
293+ Address address;
294+ std::memcpy (address.bytes , addr, sizeof (Address));
285295 MONAD_ASSERT (m->override_sets .find (address) != m->override_sets .end ());
286296
287297 MONAD_ASSERT (key);
288298 MONAD_ASSERT (key_len == sizeof (bytes32_t ));
289- byte_string const k{key, key + key_len};
299+ bytes32_t k;
300+ std::memcpy (k.bytes , key, sizeof (bytes32_t ));
290301
291302 MONAD_ASSERT (value);
292- byte_string const v{value, value + value_len};
303+ MONAD_ASSERT (value_len == sizeof (bytes32_t ));
304+ bytes32_t v;
305+ std::memcpy (v.bytes , value, sizeof (bytes32_t ));
293306
294307 auto &state_object = m->override_sets [address].state ;
295308 MONAD_ASSERT (state_object.find (k) == state_object.end ());
0 commit comments