Skip to content

Commit 8744a20

Browse files
blockifier: add l3 compatibility for addresses
1 parent 5d86548 commit 8744a20

File tree

11 files changed

+74
-19
lines changed

11 files changed

+74
-19
lines changed

crates/apollo_batcher/src/cende_client_types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ fn get_l2_to_l1_messages(execution_info: &TransactionExecutionInfo) -> Vec<L2ToL
255255
let messages =
256256
call.execution.l2_to_l1_messages.iter().map(|l2_to_l1_message| L2ToL1Message {
257257
from_address: call.call.caller_address,
258-
to_address: l2_to_l1_message.message.to_address,
258+
to_address: EthAddress::try_from(l2_to_l1_message.message.to_address).unwrap(),
259259
payload: l2_to_l1_message.message.payload.clone(),
260260
});
261261
l2_to_l1_messages.extend(messages);

crates/apollo_consensus_orchestrator/src/cende/central_objects_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ use starknet_api::block::{
7979
};
8080
use starknet_api::consensus_transaction::InternalConsensusTransaction;
8181
use starknet_api::contract_class::{ContractClass, EntryPointType, SierraVersion};
82-
use starknet_api::core::{ClassHash, CompiledClassHash, EntryPointSelector, EthAddress};
82+
use starknet_api::core::{ClassHash, CompiledClassHash, EntryPointSelector, L1Address};
8383
use starknet_api::data_availability::{DataAvailabilityMode, L1DataAvailabilityMode};
8484
use starknet_api::executable_transaction::L1HandlerTransaction;
8585
use starknet_api::execution_resources::{GasAmount, GasVector};
@@ -502,7 +502,7 @@ fn call_info() -> CallInfo {
502502
l2_to_l1_messages: vec![OrderedL2ToL1Message {
503503
order: 1,
504504
message: MessageToL1 {
505-
to_address: EthAddress::try_from(felt!(1_u8)).unwrap(),
505+
to_address: L1Address::from(felt!(1_u8)),
506506
payload: L2ToL1Payload(felt_vector()),
507507
},
508508
}],

crates/apollo_rpc_execution/src/objects.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use starknet_api::core::{
2929
ClassHash,
3030
ContractAddress,
3131
EntryPointSelector,
32+
EthAddress,
3233
Nonce,
3334
SequencerContractAddress,
3435
};
@@ -463,7 +464,7 @@ impl OrderedL2ToL1Message {
463464
order: blockifier_message.order,
464465
message: MessageToL1 {
465466
from_address,
466-
to_address: blockifier_message.message.to_address,
467+
to_address: EthAddress::try_from(blockifier_message.message.to_address).unwrap(),
467468
payload: blockifier_message.message.payload,
468469
},
469470
}

crates/blockifier/src/execution/call_info.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use cairo_vm::types::builtin_name::BuiltinName;
66
use cairo_vm::vm::runners::cairo_runner::ExecutionResources;
77
use serde::Serialize;
88
use starknet_api::block::{BlockHash, BlockNumber};
9-
use starknet_api::core::{ClassHash, ContractAddress, EthAddress};
9+
use starknet_api::core::{ClassHash, ContractAddress, L1Address};
1010
use starknet_api::execution_resources::{GasAmount, GasVector};
1111
use starknet_api::state::StorageKey;
1212
use starknet_api::transaction::fields::GasVectorComputationMode;
@@ -43,7 +43,7 @@ pub struct OrderedEvent {
4343
#[cfg_attr(feature = "transaction_serde", derive(serde::Deserialize))]
4444
#[derive(Debug, Default, Eq, PartialEq, Serialize)]
4545
pub struct MessageToL1 {
46-
pub to_address: EthAddress,
46+
pub to_address: L1Address,
4747
pub payload: L2ToL1Payload,
4848
}
4949

crates/blockifier/src/execution/deprecated_syscalls/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use deprecated_syscall_executor::{
66
};
77
use serde::Deserialize;
88
use starknet_api::block::{BlockNumber, BlockTimestamp};
9-
use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, EthAddress};
9+
use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector};
1010
use starknet_api::state::StorageKey;
1111
use starknet_api::transaction::fields::{Calldata, ContractAddressSalt};
1212
use starknet_api::transaction::{EventContent, EventData, EventKey, L2ToL1Payload};
@@ -424,7 +424,8 @@ impl SyscallRequest for SendMessageToL1Request {
424424
vm: &VirtualMachine,
425425
ptr: &mut Relocatable,
426426
) -> DeprecatedSyscallExecutorBaseResult<SendMessageToL1Request> {
427-
let to_address = EthAddress::try_from(felt_from_ptr(vm, ptr)?)?;
427+
let felt_to_address = felt_from_ptr(vm, ptr)?;
428+
let to_address = felt_to_address.into();
428429
let payload =
429430
L2ToL1Payload(read_felt_array::<DeprecatedSyscallExecutorBaseError>(vm, ptr)?);
430431

crates/blockifier/src/execution/native/syscall_handler.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -568,8 +568,15 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> {
568568
self.gas_costs().syscalls.send_message_to_l1.base_syscall_cost(),
569569
)?;
570570

571-
let to_address = EthAddress::try_from(to_address)
572-
.map_err(|err| self.handle_error(remaining_gas, err.into()))?;
571+
if !self.base.context.tx_context.block_context.chain_info.is_layer_3 {
572+
let err = SyscallExecutorBaseError::InvalidSyscallInExecutionMode;
573+
574+
EthAddress::try_from(to_address)
575+
.map_err(|err| self.handle_error(remaining_gas, err.into()))?;
576+
}
577+
578+
let to_address =
579+
to_address.into().map_err(|err| self.handle_error(remaining_gas, err.into()))?;
573580
let message = MessageToL1 { to_address, payload: L2ToL1Payload(payload.to_vec()) };
574581

575582
self.base.send_message_to_l1(message).map_err(|err| self.handle_error(remaining_gas, err))

crates/blockifier/src/execution/syscalls/syscall_tests/send_message_to_l1.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn test_send_message_to_l1(runnable_version: RunnableCairo1) {
4242
..trivial_external_entry_point_new(test_contract)
4343
};
4444

45-
let to_address = EthAddress::try_from(to_address).unwrap();
45+
let to_address = EthAddress::try_from(to_address).unwrap().into();
4646
let message = MessageToL1 { to_address, payload: L2ToL1Payload(payload) };
4747

4848
let mut execution = entry_point_call.execute_directly(&mut state).unwrap().execution;
@@ -58,8 +58,8 @@ fn test_send_message_to_l1(runnable_version: RunnableCairo1) {
5858
OrderedL2ToL1Message {
5959
order: 0,
6060
message: MessageToL1 {
61-
to_address: EthAddress(
62-
0x00000000000000000000000000000000000004d2,
61+
to_address: L1Address(
62+
0x4d2,
6363
),
6464
payload: L2ToL1Payload(
6565
[

crates/blockifier/src/execution/syscalls/vm_syscall_utils.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use cairo_vm::vm::errors::vm_errors::VirtualMachineError;
99
use cairo_vm::vm::vm_core::VirtualMachine;
1010
use num_traits::ToPrimitive;
1111
use starknet_api::block::{BlockHash, BlockNumber};
12-
use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, EthAddress};
12+
use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector};
1313
use starknet_api::execution_resources::GasAmount;
1414
use starknet_api::state::StorageKey;
1515
use starknet_api::transaction::fields::{Calldata, ContractAddressSalt, TransactionSignature};
@@ -404,7 +404,8 @@ impl SyscallRequest for SendMessageToL1Request {
404404
vm: &VirtualMachine,
405405
ptr: &mut Relocatable,
406406
) -> SyscallBaseResult<SendMessageToL1Request> {
407-
let to_address = EthAddress::try_from(felt_from_ptr(vm, ptr)?)?;
407+
let felt_to_address = felt_from_ptr(vm, ptr)?;
408+
let to_address = felt_to_address.into();
408409
let payload = L2ToL1Payload(read_felt_array::<SyscallExecutorBaseError>(vm, ptr)?);
409410

410411
Ok(SendMessageToL1Request { message: MessageToL1 { to_address, payload } })

crates/blockifier/src/transaction/objects_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::collections::HashMap;
22

33
use rstest::rstest;
4-
use starknet_api::core::{ClassHash, ContractAddress, EthAddress};
4+
use starknet_api::core::{ClassHash, ContractAddress, L1Address};
55
use starknet_api::execution_resources::GasAmount;
66
use starknet_api::state::StorageKey;
77
use starknet_api::transaction::L2ToL1Payload;
@@ -65,7 +65,7 @@ impl TestExecutionSummary {
6565
.map(|i| OrderedL2ToL1Message {
6666
order: i,
6767
message: MessageToL1 {
68-
to_address: EthAddress::default(),
68+
to_address: L1Address::default(),
6969
payload: L2ToL1Payload(vec![Felt::default()]),
7070
},
7171
})

crates/blockifier/src/transaction/transactions_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use starknet_api::abi::abi_utils::{
2020
use starknet_api::abi::constants::CONSTRUCTOR_ENTRY_POINT_NAME;
2121
use starknet_api::block::{FeeType, GasPriceVector};
2222
use starknet_api::contract_class::EntryPointType;
23-
use starknet_api::core::{ascii_as_felt, ClassHash, ContractAddress, EthAddress, Nonce};
23+
use starknet_api::core::{ascii_as_felt, ClassHash, ContractAddress, Nonce};
2424
use starknet_api::executable_transaction::{
2525
AccountTransaction as ApiExecutableTransaction,
2626
DeployAccountTransaction,
@@ -951,7 +951,7 @@ fn test_invoke_tx_advanced_operations(
951951
let expected_msg = OrderedL2ToL1Message {
952952
order: 0,
953953
message: MessageToL1 {
954-
to_address: EthAddress::try_from(to_address).unwrap(),
954+
to_address: to_address.into(),
955955
payload: L2ToL1Payload(vec![felt!(12_u32), felt!(34_u32)]),
956956
},
957957
};

0 commit comments

Comments
 (0)