Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

refactor: add BlockWeights for the future bouncer #1444

Merged
merged 1 commit into from
Feb 21, 2024

Conversation

Yael-Starkware
Copy link
Contributor

@Yael-Starkware Yael-Starkware commented Feb 6, 2024

This change is Reviewable

@Yael-Starkware Yael-Starkware force-pushed the yael/port_bouncer_to_blockifier branch 3 times, most recently from 758b42f to dbdeeed Compare February 11, 2024 08:55
@codecov-commenter
Copy link

codecov-commenter commented Feb 11, 2024

Codecov Report

Attention: 2 lines in your changes are missing coverage. Please review.

Comparison is base (f045651) 69.31% compared to head (519278e) 72.89%.
Report is 56 commits behind head on main.

Files Patch % Lines
crates/blockifier/src/bouncer.rs 75.00% 0 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1444      +/-   ##
==========================================
+ Coverage   69.31%   72.89%   +3.57%     
==========================================
  Files          59       60       +1     
  Lines        8093     9345    +1252     
  Branches     8093     9345    +1252     
==========================================
+ Hits         5610     6812    +1202     
- Misses       2026     2091      +65     
+ Partials      457      442      -15     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As part of the parallelism effort, we are moving the bouncer to the blockifier.
This is the first PR to implement the bouncer, it defines the struct Bouncer and an add() function that gets tx_weights and adds them to the batch accumulated weights. If there is no more room in this batch , it returns an erros.
It also gets a tx_timestamp and updates the batch oldest timestamp if needed.

Reviewable status: 0 of 3 files reviewed, all discussions resolved (waiting on @elintul and @noaov1)

Copy link
Collaborator

@noaov1 noaov1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please create a new module called bouncer that will contains boucer.rs and error.rs files?

Reviewable status: 0 of 3 files reviewed, all discussions resolved (waiting on @elintul)

noaov1
noaov1 previously requested changes Feb 13, 2024
Copy link
Collaborator

@noaov1 noaov1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 3 files reviewed, 3 unresolved discussions (waiting on @elintul and @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

#[allow(dead_code)]
pub struct Bouncer {
    max_block_weights: HashMap<String, u64>,

Is this a property of the bouncer or a configurable value?
Same question for max_tx_lifespan.

Code quote:

max_block_weights: HashMap<String, u64>,

crates/blockifier/src/bouncer.rs line 37 at r4 (raw file):

pub struct Bouncer {
    max_block_weights: HashMap<String, u64>,
    accumulated_block_weights: HashMap<String, u64>,

Consider defining an enum instead of using strings.

Code quote:

    accumulated_block_weights: HashMap<String, u64>,

crates/blockifier/src/bouncer.rs line 61 at r4 (raw file):

            if !self.max_block_weights.contains_key(key) {
                continue;
            }

Can you please explain why?
Are there weights with no upper bound?

Code quote:

        for (key, weight) in weights.iter() {
            if !self.max_block_weights.contains_key(key) {
                continue;
            }

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

this change kind of mixed everything here , sorry for that

Reviewable status: 0 of 6 files reviewed, 2 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, noaov1 (Noa Oved) wrote…

Is this a property of the bouncer or a configurable value?
Same question for max_tx_lifespan.

added a TODO for now, asking @giladchase if this should be in versioned_constants


crates/blockifier/src/bouncer.rs line 37 at r4 (raw file):

Previously, noaov1 (Noa Oved) wrote…

Consider defining an enum instead of using strings.

Done


crates/blockifier/src/bouncer.rs line 61 at r4 (raw file):

Previously, noaov1 (Noa Oved) wrote…

Can you please explain why?
Are there weights with no upper bound?

following our huddle, I replaced the continue with an assert.

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 3 of 6 files at r5.
Reviewable status: 3 of 6 files reviewed, 3 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 2 at r5 (raw file):

pub mod counting_bouncer;
pub mod errors;

Do you foresee additional files in this directory?
Maybe we should start with src/bouncer[_test].rs?

Code quote:

pub mod counting_bouncer;
pub mod errors;

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed all commit messages.
Reviewable status: 3 of 6 files reviewed, 7 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer/counting_bouncer.rs line 13 at r5 (raw file):

pub type BouncerResult<T> = Result<T, BouncerError>;

#[derive(Eq, PartialEq, Hash, Clone, Display)]

Alphabetize.

Code quote:

Eq, PartialEq, Hash, Clone, Display

crates/blockifier/src/bouncer/counting_bouncer.rs line 15 at r5 (raw file):

#[derive(Eq, PartialEq, Hash, Clone, Display)]
pub enum BouncerWeights {
    GasWeight,

Suggestion:

Gas

crates/blockifier/src/bouncer/counting_bouncer.rs line 18 at r5 (raw file):

    MessageSegmentLength,
    NSteps,
    NStepsWithKeccak, // TODO: how to handle Keccak?

Let's add a TODO to handle Keccak separately.

Suggestion:

    NumberOfSteps,

crates/blockifier/src/bouncer/counting_bouncer.rs line 20 at r5 (raw file):

    NStepsWithKeccak, // TODO: how to handle Keccak?
    StateDiffSize,
    StateDiffSizeWithKzg,

This too.

Code quote:

StateDiffSizeWithKzg,

@Yael-Starkware Yael-Starkware force-pushed the yael/port_bouncer_to_blockifier branch 3 times, most recently from 1955162 to d9c7a30 Compare February 15, 2024 10:04
Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 1 of 8 files reviewed, 7 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

added a TODO for now, asking @giladchase if this should be in versioned_constants

added to versioned constants
done


crates/blockifier/src/bouncer.rs line 2 at r5 (raw file):

Previously, elintul (Elin) wrote…

Do you foresee additional files in this directory?
Maybe we should start with src/bouncer[_test].rs?

That was what I did initially, but @noaov1 suggested to move to a dedicated directory. whatever you decide if fine with me.

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 1 of 8 files reviewed, 4 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


crates/blockifier/src/bouncer/counting_bouncer.rs line 15 at r5 (raw file):

#[derive(Eq, PartialEq, Hash, Clone, Display)]
pub enum BouncerWeights {
    GasWeight,

done


crates/blockifier/src/bouncer/counting_bouncer.rs line 18 at r5 (raw file):

Previously, elintul (Elin) wrote…

Let's add a TODO to handle Keccak separately.

done


crates/blockifier/src/bouncer/counting_bouncer.rs line 20 at r5 (raw file):

Previously, elintul (Elin) wrote…

This too.

done

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed all commit messages.
Reviewable status: 1 of 8 files reviewed, 4 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

added to versioned constants
done

They should also be configurable from Python, please make sure they are (


crates/blockifier/src/bouncer/counting_bouncer.rs line 30 at r8 (raw file):

    type Output = Self;

    fn add(self, other: Self) -> Self {

Do we need this, or is derive_more::Add is enough?

Code quote:

add

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 1 of 8 files reviewed, 6 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer/counting_bouncer.rs line 46 at r8 (raw file):

#[allow(dead_code)]
impl BouncerWeights {
    pub fn exceeds_limit(self, versioned_constants: &VersionedConstants) -> bool {

Let's use CheckedSub trait instead.

Code quote:

exceeds_limit

crates/blockifier/src/bouncer/counting_bouncer.rs line 61 at r8 (raw file):

#[allow(dead_code)]
#[derive(Default)]
pub struct Bouncer {

Let's move to another PR and only include BouncerWeights here.

Code quote:

Bouncer

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 7 files at r6.
Reviewable status: 2 of 8 files reviewed, 6 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, elintul (Elin) wrote…

They should also be configurable from Python, please make sure they are (

I think the fact they're pub is enough, but let's make sure). This also should be a part of a different PR.


crates/blockifier/src/bouncer.rs line 2 at r5 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

That was what I did initially, but @noaov1 suggested to move to a dedicated directory. whatever you decide if fine with me.

Let's continue this way and decide if to consolidate in the end. Add a TODO, please?

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 2 of 8 files reviewed, 7 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


-- commits line 2 at r8:
Let's try to keep PRs as self-contained as possible.

Suggestion:

add BouncerWeights

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 3 of 7 files at r6, 1 of 1 files at r7, 2 of 2 files at r8.
Reviewable status: all files reviewed, 11 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer/counting_bouncer.rs line 1 at r8 (raw file):

use std::ops::Add;

bouncer.rs, we'll only have one kind (in Python we previously thought of more than one implementation).


crates/blockifier/src/bouncer/counting_bouncer.rs line 22 at r8 (raw file):

    message_segment_length: u64,
    state_diff_size: u64,
    state_diff_size_with_kzg: u64,

Suggestion:

    gas: u64,
    n_steps: u64,
    message_segment_length: u64,
    state_diff_size: u64,

crates/blockifier/src/bouncer/counting_bouncer.rs line 23 at r8 (raw file):

    state_diff_size: u64,
    state_diff_size_with_kzg: u64,
    // TODO(yael) add more weights (n_memory_holes, builtin_steps)

No need for memory holes, they are counted as steps.
You can add the builtins now.

Code quote:

// TODO(yael) add more weights (n_memory_holes, builtin_steps)

crates/blockifier/src/bouncer/counting_bouncer.rs line 24 at r8 (raw file):

    state_diff_size_with_kzg: u64,
    // TODO(yael) add more weights (n_memory_holes, builtin_steps)
    // TODO(yael) understand n_steps_with_keccak and state_diff_size_with_kzg special handling

This affect the max weights.

Code quote:

// TODO(yael) understand n_steps_with_keccak and state_diff_size_with_kzg special handling

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 10 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


-- commits line 2 at r8:

Previously, elintul (Elin) wrote…

Let's try to keep PRs as self-contained as possible.

done in a different PR


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, elintul (Elin) wrote…

I think the fact they're pub is enough, but let's make sure). This also should be a part of a different PR.

what should be configurable?


crates/blockifier/src/bouncer.rs line 61 at r4 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

following our huddle, I replaced the continue with an assert.

@noaov1 please resolve


crates/blockifier/src/bouncer.rs line 2 at r5 (raw file):

Previously, elintul (Elin) wrote…

Let's continue this way and decide if to consolidate in the end. Add a TODO, please?

I removed the directory in the new PR because there is only one file.
adding a TODO,
Done


crates/blockifier/src/bouncer/counting_bouncer.rs line 13 at r5 (raw file):

Previously, elintul (Elin) wrote…

Alphabetize.

done.


crates/blockifier/src/bouncer/counting_bouncer.rs line 1 at r8 (raw file):

Previously, elintul (Elin) wrote…

bouncer.rs, we'll only have one kind (in Python we previously thought of more than one implementation).

Done.


crates/blockifier/src/bouncer/counting_bouncer.rs line 22 at r8 (raw file):

    message_segment_length: u64,
    state_diff_size: u64,
    state_diff_size_with_kzg: u64,

Done.


crates/blockifier/src/bouncer/counting_bouncer.rs line 23 at r8 (raw file):

Previously, elintul (Elin) wrote…

No need for memory holes, they are counted as steps.
You can add the builtins now.

done


crates/blockifier/src/bouncer/counting_bouncer.rs line 24 at r8 (raw file):

Previously, elintul (Elin) wrote…

This affect the max weights.

let talk f2f to see that I get this right.


crates/blockifier/src/bouncer/counting_bouncer.rs line 30 at r8 (raw file):

Previously, elintul (Elin) wrote…

Do we need this, or is derive_more::Add is enough?

Nice!
done


crates/blockifier/src/bouncer/counting_bouncer.rs line 46 at r8 (raw file):

Previously, elintul (Elin) wrote…

Let's use CheckedSub trait instead.

not sure I understand how to use it. Iiuc the CheckedSub trait is substracting the 2 struct and returns None in case of an overflow, but I don't want to substract them, only to get the overflow check


crates/blockifier/src/bouncer/counting_bouncer.rs line 61 at r8 (raw file):

Previously, elintul (Elin) wrote…

Let's move to another PR and only include BouncerWeights here.

Done.

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 1 of 8 files reviewed, 10 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


crates/blockifier/src/bouncer/counting_bouncer.rs line 30 at r8 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

Nice!
done

deleted this for checked_sub

Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 5 of 7 files at r9, all commit messages.
Reviewable status: 6 of 8 files reviewed, 9 unresolved discussions (waiting on @giladchase, @noaov1, and @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

what should be configurable?

The capacities. Let's move this offline.


crates/blockifier/src/bouncer.rs line 10 at r9 (raw file):

mod test;

pub trait CheckedSub: Sized + Sub<Self, Output = Self> {

Why redefine, can't we use the Rust one?

Code quote:

CheckedSub

crates/blockifier/src/bouncer.rs line 14 at r9 (raw file):

}

// TODO decide if a separate directory is needed for the bouncer.

WDYM?

Code quote:

// TODO decide if a separate directory is needed for the bouncer.

crates/blockifier/src/bouncer.rs line 16 at r9 (raw file):

// TODO decide if a separate directory is needed for the bouncer.
#[allow(dead_code)]
#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Sub)]

Alphabetize, throughout the file.

Code quote:

derive

crates/blockifier/src/bouncer.rs line 16 at r9 (raw file):

// TODO decide if a separate directory is needed for the bouncer.
#[allow(dead_code)]
#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Sub)]

Fully qualified name, so it's clear where the trait is coming from.
BTW, is there a derive_more::CheckedSub?

Suggestion:

derive_more::Sub

crates/blockifier/src/bouncer.rs line 18 at r9 (raw file):

#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Sub)]
// TODO how to initialize the max values
pub struct BouncerWeights {

Please add a short docstring.

Code quote:

BouncerWeights

crates/blockifier/src/bouncer.rs line 24 at r9 (raw file):

    state_diff_size: u64,
    builtin_count: BuiltinCount,
    // TODO(yael) understand n_steps_with_keccak and state_diff_size_with_kzg special handling

This TODO belongs in the area we decide on the capacity of the bouncer.

Code quote:

// TODO(yael) understand n_steps_with_keccak and state_diff_size_with_kzg special handling

crates/blockifier/src/bouncer/counting_bouncer.rs line 30 at r8 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

deleted this for checked_sub

:)

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 6 of 8 files reviewed, 7 unresolved discussions (waiting on @elintul, @giladchase, and @noaov1)


crates/blockifier/src/bouncer.rs line 36 at r4 (raw file):

Previously, elintul (Elin) wrote…

The capacities. Let's move this offline.

this too moves to my notes.


crates/blockifier/src/bouncer.rs line 10 at r9 (raw file):

Previously, elintul (Elin) wrote…

Why redefine, can't we use the Rust one?

it is not implemented for this type, only for native types.
maybe I should define it just as a regular impl and not a trait?


crates/blockifier/src/bouncer.rs line 14 at r9 (raw file):

Previously, elintul (Elin) wrote…

WDYM?

just a TODO that came from one of our previous discussions here, regarding the location of the files.
deleting the todo from here and moving to my notes


crates/blockifier/src/bouncer.rs line 16 at r9 (raw file):

Previously, elintul (Elin) wrote…

Alphabetize, throughout the file.

Am I really bad in English? it feels alphabetised to me


crates/blockifier/src/bouncer.rs line 16 at r9 (raw file):

Previously, elintul (Elin) wrote…

Fully qualified name, so it's clear where the trait is coming from.
BTW, is there a derive_more::CheckedSub?

No sir :(

done.


crates/blockifier/src/bouncer.rs line 18 at r9 (raw file):

Previously, elintul (Elin) wrote…

Please add a short docstring.

done


crates/blockifier/src/bouncer.rs line 24 at r9 (raw file):

Previously, elintul (Elin) wrote…

This TODO belongs in the area we decide on the capacity of the bouncer.

I'll move this to my offline notes for now.

@Yael-Starkware Yael-Starkware dismissed stale reviews from elintul and noaov1 February 20, 2024 14:06

Vacation

Copy link
Collaborator

@noaov1 noaov1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 3 of 7 files at r6.
Reviewable status: 6 of 8 files reviewed, all discussions resolved (waiting on @giladchase)

giladchase
giladchase previously approved these changes Feb 20, 2024
Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 2 files at r11, 1 of 1 files at r12, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 15 at r12 (raw file):

        })
    };
}

Is it possible to add the whole fn checked_sub(self, v: Self) -> Option<Self> { into the macro as well?
That sig part is also repetative now.
Only if the macro is still relatively simple looking and this doesn't give any trouble.

Code quote:

macro_rules! checked_sub_struct {
    ($self:expr, $other:expr, $( $field:ident ),*) => {
        Some(Self {
            $(
                $field: $self.$field.checked_sub($other.$field)?,
            )*
        })
    };
}

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 7 of 8 files reviewed, all discussions resolved (waiting on @giladchase)


crates/blockifier/src/bouncer.rs line 15 at r12 (raw file):

Previously, giladchase wrote…

Is it possible to add the whole fn checked_sub(self, v: Self) -> Option<Self> { into the macro as well?
That sig part is also repetative now.
Only if the macro is still relatively simple looking and this doesn't give any trouble.

done

Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 1 files at r14, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @Yael-Starkware)

Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

}

#[allow(dead_code)]

Is this necessary?

Code quote:

#[allow(dead_code)]

Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

Previously, giladchase wrote…

Is this necessary?

ditto for BouncerWeights

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @giladchase)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

Previously, giladchase wrote…

ditto for BouncerWeights

yes, otherwise there are many warnings

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @giladchase)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

yes, otherwise there are many warnings

will deleted all of them once code is used.

Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

Previously, Yael-Starkware (YaelD) wrote…

will deleted all of them once code is used.

Unused code shouldn't be a problem for public interface, only for private functions.
I think the macro is generating a private method instead of a public method, that should fix the issue and allow removing the dead_code.

Copy link
Contributor Author

@Yael-Starkware Yael-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 7 of 8 files reviewed, 1 unresolved discussion (waiting on @giladchase)


crates/blockifier/src/bouncer.rs line 21 at r14 (raw file):

Previously, giladchase wrote…

Unused code shouldn't be a problem for public interface, only for private functions.
I think the macro is generating a private method instead of a public method, that should fix the issue and allow removing the dead_code.

wow nice, it solved it! impressive stuff!
done.

giladchase
giladchase previously approved these changes Feb 21, 2024
Copy link
Collaborator

@giladchase giladchase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 1 files at r15, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @Yael-Starkware)

elintul
elintul previously approved these changes Feb 21, 2024
Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 1 files at r15, all commit messages.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @Yael-Starkware)


crates/blockifier/src/bouncer.rs line 23 at r15 (raw file):

#[derive(Clone, Copy, Debug, Default, derive_more::Sub, Deserialize, PartialEq)]
/// Counted weights of the execution of transactions in a block.
/// These weights are limited by the block's maximum weights.

Move before the derive. A shorter suggestion: "Represents the execution resources counted throughout block creation.`.

Code quote:

/// Counted weights of the execution of transactions in a block.
/// These weights are limited by the block's maximum weights.

@Yael-Starkware Yael-Starkware changed the title refactor: add Bouncer add function to the blockifier refactor: add BlockWeights for the future bouncer Feb 21, 2024
Copy link
Collaborator

@elintul elintul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewed 1 of 1 files at r12, 1 of 1 files at r16, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @Yael-Starkware)

@Yael-Starkware Yael-Starkware merged commit e2de5ec into main Feb 21, 2024
15 checks passed
@Yael-Starkware Yael-Starkware deleted the yael/port_bouncer_to_blockifier branch February 21, 2024 14:34
@Yael-Starkware Yael-Starkware restored the yael/port_bouncer_to_blockifier branch February 21, 2024 14:39
rodrigo-pino added a commit to NethermindEth/blockifier that referenced this pull request Mar 7, 2024
* Run cargo update

Signed-off-by: Dori Medini <dori@starkware.co>

* Detach native_blockifier

* Bump cairo-vm and cairo compiler

New cairo-vm version includes performance optimizations.
New cairo version only includes the new vm version.

* Release 0.4.1-rc.0

* Re-attach native_blockifier, bump papyrus_storage

* native_blockifier: Allow querying for `Blockifier` version. (starkware-libs#1249)

This allows one to do:
```
import native_blockifier
native_blockifier.blockifier_version()
```
And get the version the native was compiled with.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* Add updated version of estimate_casm_hash_computation_resources(). (starkware-libs#1314)

* Resolve conflicts.

* Reconnect nnative-blockifier

Signed-off-by: Dori Medini <dori@starkware.co>

* Add the field kzg_resources to PyBouncerInfo. (starkware-libs#1321)

* Add use_kzg_da flag to PyBlockInfo. (starkware-libs#1319)

* Merge `main-v0.13.0` into `main` (resolve conflicts).

* Remove gas price bounds from general config (starkware-libs#1329)

Signed-off-by: Dori Medini <dori@starkware.co>

* Bump cairo-vm version (starkware-libs#1330)

Signed-off-by: Dori Medini <dori@starkware.co>

* Update cairo compiler version and fix related TODOs. (starkware-libs#1332)

* Small fix in into_block_context. (starkware-libs#1337)

* Data gas prices in block context (starkware-libs#1336)

Signed-off-by: Dori Medini <dori@starkware.co>

* Use try_from instead of as (starkware-libs#1322)

* Use into instead of as (starkware-libs#1333)

* Add MAX_L1_GAS_AMOUNT_U128 (starkware-libs#1335)

* Refactor calculate_tx_gas_usage (starkware-libs#1320)

* Change additional as to try_from and try_to (starkware-libs#1342)

* Remove PyKzgResources. Reveal the state diff size. (starkware-libs#1341)

* Make `BlockContext` a newtype around `BlockInfo` (starkware-libs#1323)

The crux of this commit is the change in `block_context.rs`, which
converts `BlockContext` into a wrapper around `BlockInfo` (which used to be
`BlockContext`).

Everything else is just delegating the accessors to the internal block_info, made
by search-and-replace (no other changes).

Motivation:
- This change the groundwork for future refactor and consolidation of
contexts.
- Subsequent commits will extract non block-specific constants from
`BlockInfo` into separate `ChainInfo` and `VersionedConstants` structs,
which will be siblings of `block_info` inside `BlockContext`.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* Extract from `BlockInfo` into `ChainInfo` (starkware-libs#1344)

`BlockInfo` should only contain block-level info, whereas chain-level
information should be held at the `BlockContext` level, encapsulated in
a dedicated `ChainInfo` struct.

Changes:
Only extract from `BlockInfo` and store in `BlockContext.chain_info:
ChainInfo`. All other changes are search-replace + moving the
fee_token_address getter into `ChainInfo`.

TODO: extract more stuff from BlockInfo: version-dependant constants should
be extracted into a dedicated VersionedConstants, which will be a member of BlockContext

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* Revert changes of 776d7a5 (starkware-libs#1352)

* fix(native_blockifier): Remove `PyGasPrices` (starkware-libs#1353)

`PyX` types are intended to represent (a subset) of the real
structure of object in Python.
Currently Python is broken do to PyBlockInfo's FromPyObject expecting
there to be a `PyGasPrices`, which doesn't exist in Ptyhon

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* Rename `{into,to}_actual_cost_builder` (starkware-libs#1355)

`into` implies `owned -> owned` cast, whereas `to` can imply `borrowed
-> owned`.

See this reference for naming convention: https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* add missing internal panic in cairo1 (starkware-libs#1340)

* add missing internal panic in cairo1

* update `test_stack_trace` and make it work with Cairo1 as well as Cairo0

* Align block info fields (starkware-libs#1358)

Signed-off-by: Dori Medini <dori@starkware.co>

* ci: add commitlint in CI (starkware-libs#1313)

Signed-off-by: Dori Medini <dori@starkware.co>

* Create the function calculate_tx_blob_gas_usage. (starkware-libs#1346)

* Add direct cast from PyFelt into ContractAddress + Deref (starkware-libs#1345)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* fix: revert "Add direct cast from PyFelt into ContractAddress + Deref (starkware-libs#1345)" (starkware-libs#1364)

This reverts commit 6b524c9.

Python is fussy about derive_more, will TAL at it again later

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* refactor(fee): split tx l1 gas computation to da and non-da sum, add fee test for empty transaction (starkware-libs#1339)

* test: add stack trace regressions tests in Cairo1 for various call chains (starkware-libs#1367)

* feat(fee): preparation-add the calldata length to the resource calcaultion (starkware-libs#1361)

* build(fee): added new struct and field in preparation for using blob_gas (starkware-libs#1356)

* feat(fee): modified calculate_tx_l1_gas_usage(s) added calculate_tx_gas_and_blob_gas_usage (starkware-libs#1357)

* style: remove some unnecessary variables (starkware-libs#1366)

* feat(fee): modified calculate_tx_l1_gas_usage(s), added calculate_tx_gas_and_blob_gas_usage (starkware-libs#1370)

* refactor(state): replace GlobalContractCache default with GlobalContractCache new (starkware-libs#1368)

* feat(fee): check gas amount including discounted data gas (starkware-libs#1374)

Signed-off-by: Dori Medini <dori@starkware.co>

* test: add cairo0 variants to the new stack trace regression tests (starkware-libs#1371)

* feat(fee): calculates messages size field (starkware-libs#1290)

* fix(native_blockifier): change failure_flag type to bool (starkware-libs#1334)

* fix(execution): convert all local errors to stack trace (starkware-libs#1378)

Signed-off-by: Dori Medini <dori@starkware.co>

* fix(execution): change additional as to from (starkware-libs#1373)

* Merge `main-v0.13.1` into `main` (resolve conflicts).

* fix(native_blockifier): use PyCallType and PyEntryPointType instead of as (starkware-libs#1383)

* ci: prevent PR title check on merges

Signed-off-by: Dori Medini <dori@starkware.co>

* ci: ignore merge PRs when linting PR titles (starkware-libs#1388)

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor(native_blockifier): pybouncerinfo tx_weights field (starkware-libs#1347)

* style(fee): fix error handle unpack (starkware-libs#1390)

* feat(fee): add linear combination for gas and blob_gas (starkware-libs#1360)

* refactor: change CustomHint error usage into VirtualMachineError::Other(anyhow::Error) (starkware-libs#1397)

* refactor(state): use get_nonce_updates (starkware-libs#1398)

* refactor: make the BlockContext constructor private as preparation for pre_process_block changes (starkware-libs#1385)

* refactor: change variable and function names for gas_vector (starkware-libs#1400)

* fix(fee): modified estimate_minimal_gas_vector, extracted compute_discounted_gas_from_gas_vector (starkware-libs#1401)

* refactor: modified extraction in extract_l1_blob_gas_usage (from unwrap_or(0) to expect) (starkware-libs#1402)

* test: update test_call_contract to new infra (starkware-libs#1404)

Signed-off-by: Dori Medini <dori@starkware.co>

* feat: add VersionedConstants

- Currently only covers the constants previously contained in `BlockInfo`.
TODO: Add check if this covers all chain ids, which might have different
contstants
- Remove `BlockContextArgs`: no longer needed now that BlockContext can
  be initialized by 3 args of public types.

* test: update test_replace_class to new infra (starkware-libs#1405)

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor: restructure old_block_number_and_hash as a struct (starkware-libs#1403)

* chore(fee): gas computation refactor (starkware-libs#1408)

Changes:
1. Implemented get_da_gas_cost, which returns a GasVector (depending on
   use_kzg_da flag).
2. Deleted calculate_tx_gas_usage_vector, because
   calculate_tx_l1_gas_usage does the same thing.
3. Derived derive_more::Add for GasVector to easily sum up gas costs.

Signed-off-by: Dori Medini <dori@starkware.co>

* chore(fee): use GasVector as a return type for gas computations (starkware-libs#1409)

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor: rename context modules

- Rename block_context.rs -> context.rs. This will hold all context
  types.
- Rename block_execution.rs -> block.rs and move `BlockInfo` and
  `GasPrices` there (`GasPrices` is only used inside `BlockInfo`).

No other changes.

* chore(fee): integer VM gas usage (starkware-libs#1410)

* chore(fee): use GasVector as a return type for gas computations

Signed-off-by: Dori Medini <dori@starkware.co>

* chore(fee): integer VM gas usage

Signed-off-by: Dori Medini <dori@starkware.co>

* perf(native_blockifier): transaction execution info add serialize (starkware-libs#1315)

* feat(fee): adding a slope paramters to the os resources (starkware-libs#1362)

* feat(fee): set the resources slope values (starkware-libs#1363)

* refactor: make `AccountTransactionContext` hold BlockContext

- Rename `AccountTransactionContext` into `TransactionInfo`: i want to
  use `Context` for something else, and `Account` is a misnomer, since
  L1Transactions also generate this instance.
- Create a new `AccountTransactionContext`, which holds `BlockContext`
  and `TransactionInfo`: This mirrors `BlockContext`, which holds
  `BlockInfo` as well as higher level contexts.
- Remove all unnecessary `get_account_tx` calls.
- Replace all functions that take both `block_context` and `tx_info` with
a single `TransactionContext`.
- Make `EntryPointExecutionContext` hold an `Arc<TransactionContext>`
  instead of both a block_context and `tx_info`: previously every entry
  point cloned the blockContext and generated a new tx_info, now they
  all share the same (identical) one.

* feat: add more constants to`VersionedConstants`

- Add gateway constants, these are only for transparency, and aren't
  used directly by the Blockifier whatsoever.
- Pass `validate_max_n_steps` into the blockifier via native_blockifier,
  to override versioned constants defaults.
- Sort json

* fix: remove dead code `block_context.rs` (starkware-libs#1423)

The module has already taken out of lib.rs in
`8ba2662f93999b526ef7fd0a7fc49d1314657184` (making this module
dead-code), but the file wasn't actually deleted there.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* fix: delete dead code block_execution.rs (starkware-libs#1425)

Was already removed from lib.rs.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* chore(execution): enforce nonzero gas prices (starkware-libs#1391)

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor(execution)!: pre_process_block refactor for full_nodes simulate transaction (starkware-libs#1387)

* refactor(native_blockifier): flat fields in bouncerinfo (starkware-libs#1394)

* feat: add Starknet OS constants to `VersionedConstants` - unused

1. Currently not using the new consts, just adding
the deserialization logic and tests.
In upcoming commits this will replace the gas costs in `constants.rs`.

The idea is that values inside `cairo_constants` that are json objects,
that is, have the form:
```json
"step_gas_cost": {
  foo_cost: x,
  bar_cost: y,
  ...
}
```
should be parsed as:
```
step_gas_cost = foo_cost*x + bar_cost*y + ...,
```
where {x,y} must be unsigned integers (otherwise an error is thrown),
and where {foo_cost, bar_cost,...} must correspond to keys that
have already* been parsed in the JSON.

Note: JSON standard doesn't enforce order on the keys, but our
implementation does; we should consider using a format that ensures
order, rather than relying on serde's implementation and `IndexMap`.

2. validate the os costs on creation (except for in tests): under
this assumption `get_gas_cost` will _panic_ if given a non-whitelisted
gas cost name.

3. hide the two hashmaps inside `VersionedConstants`, they have
invariants, set accessors accordingly.

* chore(execution): saturate step bound on overflow (starkware-libs#1429)

Signed-off-by: Dori Medini <dori@starkware.co>

* feat(fee): add signature length to ActualCostBuilder (starkware-libs#1431)

* feat(execution): use gas costs only from `VersionedConstants`

- Remove from constants module and replace all usages with
  `VersionedConstants#gas_cost(..)`
  - Move all comments from the constants module into the const whitelist
    in `VersionedConstants`.
- Add gas cost getter to `EntryPointExecutionContext`, for readability
  - enclose in closure inside hint_processor.rs for even more brevity.
- Move `Transaction::Initial_gas` into `VersionedConstants`: it is now
  derived from the constants json.
- No other logic changes.

* feat(fee): add os resources to versioned constants

- Move hardcoded os resources json into the versioned constants json,
  move `OsResources` into into `OsResources` module.
- Indent versioned_constants.json at 4.
- Delete os_usage.rs: all logic is now called from methods in
  `VersionedConstants`(todo: extract into submodules, currently
  just a big module).
- Delete os_usage_test.rs: these are not post-deserialize validations of
  `OsResources`.
- sorted versioned_constants (where possible, which is everywhere except
  for inside os_constants keys).

* chore(execution): fix the tests using create_state_changes_for_test for readability and correctness (starkware-libs#1430)

* refactor(execution, native_blockifier): make TransactionExecutor.execute() work w/o Py objects (starkware-libs#1414)

* refactor(execution, native_blockifier): make TransactionExecutor.finalize() work without Py objects (starkware-libs#1418)

* refactor(execution, native_blockifier): decouple BouncerInfo from Python (starkware-libs#1428)

* refactor: split InnerCallExecutionError into CallContractExecutionError & LibraryCallExecutionError.
Add storage_address to both new types and class_hash to LibraryCallExecutionError (starkware-libs#1432)

* feat(execution): moved global max step limit to input validation (starkware-libs#1415)

Signed-off-by: Dori Medini <dori@starkware.co>

* test(execution): improve covrage of test_count_actual_storage_changes (starkware-libs#1436)

* refactor(execution): the struct state changes and state changes count (starkware-libs#1417)

* chore(fee): update os resources and fix expected

* fix(native_blockifier): fix unused imports (starkware-libs#1442)

* chore(execution): consume state_changes on state_changes_count from (starkware-libs#1443)

* feat(execution): calculate the syscall resources for every entry point (starkware-libs#1437)

* feat(execution): add entry_point_syscall_counter (starkware-libs#1407)

* refactor(execution): split get_additional_os_resources (starkware-libs#1411)

* feat(execution): add the syscall resources to vm_resources (starkware-libs#1412)

* fix(fee): fix doc of usize u128 conversions (starkware-libs#1446)

* fix: memory holes tests (starkware-libs#1451)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* fix: remove unused dep ctor (starkware-libs#1455)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* refactor(execution): replace StateChangesCount::from with state_changes.count() (starkware-libs#1452)

* refactor(transaction): make DeclareTransaction fields public (starkware-libs#1441)

* refactor: remove enum VirtualMachineExecutionError (starkware-libs#1453)

* fix(native_blockifier): fix build for mac + unused import (starkware-libs#1406)

* feat(fee): add ClassInfo struct (starkware-libs#1434)

* Merge `main-v0.13.1` into `main` (resolve conflicts).

* feat(fee): add GasVector to TransactionExecutionInfo (starkware-libs#1399)

* feat(fee): add DA GasVector to TransactionExecutionInfo

Signed-off-by: Dori Medini <dori@starkware.co>

* chore(fee): rename blob_gas to l1_data_gas

Signed-off-by: Dori Medini <dori@starkware.co>

* chore(fee): delete unused PyGasVector

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor(execution): remove syscall_counter from ExecutionResources (starkware-libs#1424)

* Update syscall resources (starkware-libs#1459)

* fix: os resources (starkware-libs#1465)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* feat(state): bouncer DA count: define StateWriteKeys (starkware-libs#1461)

* chore: alphabetize top level keys in versioned constants (starkware-libs#1466)

Co-authored-by: Gilad Chase <gilad@starkware.com>

* feat(state): bouncer DA count: use StateWriteKeys to count state diff size (starkware-libs#1462)

* refactor(execution, native_blockifier): move Bouncer to blockifier crate (starkware-libs#1445)

* refactor(transaction): use ClassInfo in Declare transaction (starkware-libs#1456)

* feat(fee): add gas cost for calldata bytes (starkware-libs#1426)

* chore: bump CI versions (starkware-libs#1473)

- Remove the deprecated `actions-rs/toolchain@v1` wherever it is still
  used.
- Bump everything to latest versions.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* refactor(execution): delete enrty point ExecutionResources (starkware-libs#1447)

* fix: limit the syscall emit_event resources, keys, data and number of events (starkware-libs#1463)

* fix(transaction): set l1 hanlder payload size to None for non-l1 hanlder txs (bouncer count) (starkware-libs#1470)

* feat(fee): charge for signatures per byte (starkware-libs#1474)

* Merge `main-v0.13.0-hotfix` into `main-v0.13.1` (resolve conflicts).

* feat(execution): round block_number and timestamp for the execution info syscall in validate_mode (starkware-libs#1467)

* feat(fee): add gas cost for code bytes (starkware-libs#1475)

* feat(fee): add events gas cost (starkware-libs#1458)

* chore(execution): increase invoke_tx_max_n_steps (starkware-libs#1477)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* chore(fee): update vm resource and l2 resource costs (starkware-libs#1479)

* chore: upgrade cairo and sn-api versions (starkware-libs#1454)

* chore: upgrade cairo and sn-api versions

* chore: upgrade cairo and sn-api versions (starkware-libs#1460)

* fix: fix cargo.lock - remove cargo update (starkware-libs#1481)

* fix: undo cargo update from previous commit 984431a

* fix: update cargo.lock to take into account changes in 984431a

they wered reverted in previous commit.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* fix: fix versioned_constants.json

* chore(fee): small fixes (starkware-libs#1484)

* refactor(fee): moving calculate_tx_gas_usage_vector to ActualCostBuilder (starkware-libs#1478)

* Release v0.5.0-rc.1

* refactor(execution): remove fee weights from config (starkware-libs#1487)

* fix: update the event limit constants (starkware-libs#1483)

* Merge `main-v0.13.0-hotfix` into `main-v0.13.1` (resolve conflicts).

* refactor(execution, native_blockifier): move TransactionExecutor to blockifier (starkware-libs#1497)

* refactor(state): remove unnecessary derive (starkware-libs#1505)

* refactor(execution): move bouncer, block and block_test to blockifier dir (starkware-libs#1502)

* feat(fee): add n_events field to BouncerInfo (starkware-libs#1489)

* refactor: move the event size limit constants into versioned_constants (starkware-libs#1490)

* refactor(transaction): remove public fields, add new function (starkware-libs#1480)

* refactor(execution): type of additional_data in test_validate_accounts_tx (starkware-libs#1485)

* refactor: move validate_block_number_rounding and validate_timestamp_rounding to versioned_constants (starkware-libs#1506)

* test(execution): add get_execution_info scenario to test_validate_accounts_tx (starkware-libs#1486)

* test(execution): get_sequencer_address in test_validate_accounts_tx (starkware-libs#1496)

* refactor: use versioned_constants function when possible (starkware-libs#1508)

* test(execution): get_block_number and get_block_timestamp in test_validate_accounts_tx for Cairo0 (starkware-libs#1512)

* chore(fee): Update os resources to include 4844 calculations (starkware-libs#1498)

* refactor: replaced default_invoke_tx_args with macro that enforces to explicitly define max_fee (starkware-libs#1510)

* feat(fee): calculate n_events field for BouncerInfo in a naive way (starkware-libs#1499)

* fix: state trait does not require &mut self (starkware-libs#1325)

* fix: state trait does not require &mut self

fix: sachedState use interior mutability

* chore: remove clippy allow

* fix: small review fix

* fix: remove to_state_diff from StateApi (starkware-libs#1326)

* chore: merge branch main-v0.13.1 into main (resolve conflicts)

* feat: add merge_branches script (starkware-libs#1513)

* chore: bump compiler version to 2.6.0-rc.1 (starkware-libs#1525)

Signed-off-by: Dori Medini <dori@starkware.co>

* chore: move validate consts into os constants (starkware-libs#1523)

* chore: move validate consts into os constants

Had to bump serde_json due to some apparent bug with the recent stable
rust.

* feat: make 13_1 consts backwards compatible

Assign the following defaults for keys missing in versioned_constants
files (for example, they are missing in versioned_constants_13_0.json).

- EventSizeLimit => max values
- L2ResourceGasCosts => 0 values
- validate rounding numbers => 1 (to preserve past no-rounding
  behavior). This required bundling them up in a specialized struct in
  order to define a custom default as 1 (rather than 0).
- Add test for default values: required extracting validation logic of
  `OsResources` so it won't trigger automatically in tests.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* chore!: limit pointer width in both crates (starkware-libs#1527)

Signed-off-by: Dori Medini <dori@starkware.co>

* feat: backwards compatibility for calldata_factor

If os resources' inner tx is missing `constant` and `calldata_factor`
keys, then:
- assume it is a flat `ExecutionResources` instance, and put its
  contents inside a `constant` key.
- initialize calldata_factor as default (all zeros).

* feat: add versioned_constants_13_0.json (starkware-libs#1520)

Changes between this and the current versioned_constants:
- no `event_size_limit`
- invoke_tx_max_n_steps is 3_000_000 instead of 4_000_000
- no `l2_resource_gas_costs`
- multiple value changes in os_resources
- `vm_resource_fee_cost` is X2 for all values
- no constants for validate's block number and timestamp rounding

No other changes (in particular, os constants is indeed _unchanged_)

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* Merge `main-v0.13.1` into `main` (resolve conflicts).

* fix: versioned constants validate (starkware-libs#1537)

- validate invocation had a syntax error, which was hidden by the cfg
- remove `testing` from the cfg, since we all compile with `testing`
  during development, and it's just not what we want.

Co-Authored-By: Gilad Chase <gilad@starkware.com>

* fix: update the tx event limit constants (starkware-libs#1517)

* chore: release 0.5.0-rc.2: 13_0.json support

* fix: generate_starknet_os_resources python target fix (starkware-libs#1541)

* No conflicts in main-v0.13.1 -> main merge, this commit is for any change needed to pass the CI.

* fix: generate_starknet_os_resources python target fix (starkware-libs#1548)

* refactor: remove some magic numbers from tests (starkware-libs#1547)

* fix!: update max_contract_bytecode_size to 81k (starkware-libs#1549)

* chore: add merge_status.py script (starkware-libs#1543)

Signed-off-by: Dori Medini <dori@starkware.co>

* chore: merge branch main-v0.13.1 into main (resolve conflicts)

* ci: advance setup-python action version (starkware-libs#1555)

* refactor(native_blockifier): rename l1_gas_amount to gas_weight in bouncerInfo (starkware-libs#1524)

* chore: release v0.5.0-rc.3

* chore: panic if u128_from_usize fails (starkware-libs#1522)

Signed-off-by: Dori Medini <dori@starkware.co>

* refactor: make StateError::UndeclaredClassHash a one-line error (starkware-libs#1563)

Change previous error which prints out as:
```
Class with hash ClassHash(
    StarkFelt(
        "0x00000000000000000000000000000000000000000000000000000000000004d2",
    ),
) is not declared.
```
into:
```
Class with hash 0x00000000000000000000000000000000000000000000000000000000000004d2 is not declared.
```

* test(fee): test get_message_segment_length function (starkware-libs#1471)

* refactor: add BlockWeights for the future bouncer (starkware-libs#1444)

* refactor: remove f64 usage at blockifier (starkware-libs#1519)

* fix: unwrap called on u128 (starkware-libs#1570)

Signed-off-by: Dori Medini <dori@starkware.co>

* test: use FeatureContract in create_test_state and tests which uses it (starkware-libs#1556)

* No conflicts in main-v0.13.1 -> main merge, this commit is for any change needed to pass the CI.

* chore: remove final f64s (starkware-libs#1574)

Signed-off-by: Dori Medini <dori@starkware.co>

* chore: remove some 'as' conversions and enforce no 'as' conversions (starkware-libs#1575)

* chore: remove final f64s

Signed-off-by: Dori Medini <dori@starkware.co>

* chore: remove some 'as' conversions and enforce no 'as' conversions

Signed-off-by: Dori Medini <dori@starkware.co>

* Restore workflow

* Rename ci

* Add commit lint rules

* nightly format

* update .env

* Test global env and composite action

* attemp fix to composite action

* Minor fix

* Modify .github structure

* Add composite action to jobs?

* Minor yaml fix

* Fix compilation errors

* WIP

* Storage_read_write_gas

* add tests for vm & native

* modify test_get_execution_info

* Review tests

* rename syscalls_test.rs -> syscall_tests.rs

* Fix minor compilation bug

* Update dependencies

---------

Signed-off-by: Dori Medini <dori@starkware.co>
Co-authored-by: Dori Medini <dori@starkware.co>
Co-authored-by: Gilad Chase <gilad@starkware.com>
Co-authored-by: giladchase <gilad@starkware.co>
Co-authored-by: Lior Goldberg <lior@starkware.co>
Co-authored-by: liorgold2 <38202661+liorgold2@users.noreply.github.com>
Co-authored-by: Arnon Hod <arnon@starkware.co>
Co-authored-by: Elin Tulchinsky <elin@starkware.co>
Co-authored-by: OriStarkware <76900983+OriStarkware@users.noreply.github.com>
Co-authored-by: Ayelet Zilber <138376632+ayeletstarkware@users.noreply.github.com>
Co-authored-by: zuphitf <51879558+zuphitf@users.noreply.github.com>
Co-authored-by: aner-starkware <147302140+aner-starkware@users.noreply.github.com>
Co-authored-by: Noa Oved <104720318+noaov1@users.noreply.github.com>
Co-authored-by: Yoni <78365039+Yoni-Starkware@users.noreply.github.com>
Co-authored-by: YaelD <70628564+Yael-Starkware@users.noreply.github.com>
Co-authored-by: mohammad-starkware <130282237+MohammadNassar1@users.noreply.github.com>
Co-authored-by: barak-b-starkware <110763103+barak-b-starkware@users.noreply.github.com>
Co-authored-by: Lucas @ StarkWare <70894690+LucasLvy@users.noreply.github.com>
Co-authored-by: dafnamatsry <92669167+dafnamatsry@users.noreply.github.com>
Co-authored-by: avi-starkware <avi.cohen@starkware.co>
Co-authored-by: Tzahi <tzahi@starkware.co>
Co-authored-by: nimrod-starkware <143319383+nimrod-starkware@users.noreply.github.com>
Co-authored-by: Timothée Delabrouille <34384633+tdelabro@users.noreply.github.com>
Co-authored-by: Barak <barakb@starkware.co>
Co-authored-by: Yonatan Iluz <yonatan@starkware.co>
Co-authored-by: Rodrigo <rodrodpino@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants