Skip to content

Commit e7030f1

Browse files
starknet_os: import random EC point logic (#14195)
1 parent 399a721 commit e7030f1

3 files changed

Lines changed: 4 additions & 23 deletions

File tree

crates/starknet_os/src/hint_processor/aggregator_hint_processor.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::boxed::Box;
33
use std::path::PathBuf;
44

55
use cairo_lang_casm::hints::{CoreHint, CoreHintBase, Hint as Cairo1Hint, StarknetHint};
6-
use cairo_lang_runner::casm_run::{cell_ref_to_relocatable, execute_core_hint_base};
6+
use cairo_lang_runner::casm_run::execute_core_hint_base;
77
use cairo_vm::hint_processor::builtin_hint_processor::builtin_hint_processor_definition::{
88
BuiltinHintProcessor,
99
HintProcessorData as Cairo0Hint,
@@ -14,7 +14,6 @@ use cairo_vm::types::program::Program;
1414
use cairo_vm::vm::errors::hint_errors::HintError as VmHintError;
1515
use cairo_vm::vm::runners::cairo_runner::ResourceTracker;
1616
use cairo_vm::vm::vm_core::VirtualMachine;
17-
use rand::RngExt;
1817
use serde::Deserialize;
1918
use starknet_types_core::felt::Felt;
2019
use tracing::level_filters::LevelFilter;

crates/starknet_os/src/hint_processor/common_hint_processor.rs

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,25 +105,7 @@ macro_rules! impl_common_hint_processor_logic {
105105
// Override the [CoreHint::RandomEcPoint] implementation to make the output
106106
// deterministic (using seeded randomness).
107107
Cairo1Hint::Core(CoreHintBase::Core(CoreHint::RandomEcPoint { x, y })) => {
108-
// TODO(Dori): use the random_ec_point function from the compiler repo when
109-
// available, instead of inlining the implementation.
110-
/// The Beta value of the Starkware elliptic curve.
111-
pub const BETA: Felt = Felt::from_hex_unchecked(
112-
"0x6f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e89",
113-
);
114-
// Use the seeded randomness.
115-
let rng = self.get_rng();
116-
let (random_x, random_y) = loop {
117-
// Randomizing 31 bytes to make sure it is in range.
118-
let x_bytes: [u8; 31] = rng.random();
119-
let random_x = Felt::from_bytes_be_slice(&x_bytes);
120-
let random_y_squared = random_x * random_x * random_x + random_x + BETA;
121-
if let Some(random_y) = random_y_squared.sqrt() {
122-
break (random_x, random_y);
123-
}
124-
};
125-
cairo_lang_runner::insert_value_to_cellref!(vm, x, random_x)?;
126-
cairo_lang_runner::insert_value_to_cellref!(vm, y, random_y)?;
108+
cairo_lang_runner::casm_run::random_ec_point(vm, x, y, self.get_rng())?;
127109
Ok(HintExtension::default())
128110
}
129111
Cairo1Hint::Core(hint) => {

crates/starknet_os/src/hint_processor/snos_hint_processor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use blockifier::state::state_api::StateReader;
99
#[cfg(any(feature = "testing", test))]
1010
use blockifier::test_utils::dict_state_reader::DictStateReader;
1111
use cairo_lang_casm::hints::{CoreHint, CoreHintBase, Hint as Cairo1Hint, StarknetHint};
12-
use cairo_lang_runner::casm_run::{cell_ref_to_relocatable, execute_core_hint_base};
12+
use cairo_lang_runner::casm_run::execute_core_hint_base;
1313
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
1414
use cairo_vm::hint_processor::builtin_hint_processor::builtin_hint_processor_definition::{
1515
BuiltinHintProcessor,
@@ -22,7 +22,7 @@ use cairo_vm::types::relocatable::Relocatable;
2222
use cairo_vm::vm::errors::hint_errors::HintError as VmHintError;
2323
use cairo_vm::vm::runners::cairo_runner::ResourceTracker;
2424
use cairo_vm::vm::vm_core::VirtualMachine;
25-
use rand::{RngExt, SeedableRng};
25+
use rand::SeedableRng;
2626
use starknet_api::core::{ClassHash, CompiledClassHash};
2727
use starknet_api::deprecated_contract_class::ContractClass;
2828
use starknet_types_core::felt::Felt;

0 commit comments

Comments
 (0)