Skip to content

Commit

Permalink
Cairo v0.11.0.1. (bug fix)
Browse files Browse the repository at this point in the history
  • Loading branch information
liorgold2 committed Mar 21, 2023
1 parent f260522 commit 02d5112
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 46 deletions.
2 changes: 1 addition & 1 deletion src/starkware/cairo/lang/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.11.0
0.11.0.1
2 changes: 1 addition & 1 deletion src/starkware/starknet/definitions/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@
GAS_PRICE_LOWER_BOUND = 0
GAS_PRICE_UPPER_BOUND = 2**128
MAX_MESSAGE_TO_L1_LENGTH = 100
MAX_CALLDATA_LENGTH = 2**30
NONCE_LOWER_BOUND = 0
NONCE_UPPER_BOUND = 2**NONCE_BITS
SIERRA_ARRAY_LEN_BOUND = 2**32
SYSCALL_SELECTOR_UPPER_BOUND = FIELD_SIZE
TRANSACTION_COMMITMENT_TREE_HEIGHT = 64
TRANSACTION_HASH_LOWER_BOUND = 0
Expand Down
42 changes: 12 additions & 30 deletions src/starkware/starknet/definitions/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@
from starkware.starknet.definitions import constants
from starkware.starknet.definitions.error_codes import StarknetErrorCode
from starkware.starknet.definitions.transaction_type import TransactionType
from starkware.starkware_utils.field_validators import (
validate_length,
validate_non_negative,
validate_positive,
)
from starkware.starkware_utils.field_validators import validate_non_negative, validate_positive
from starkware.starkware_utils.marshmallow_dataclass_fields import (
BackwardCompatibleIntAsHex,
BytesAsHex,
Expand All @@ -37,15 +33,6 @@
marshmallow_field=mfields.List(everest_fields.FeltField.get_marshmallow_field())
)

bounded_felt_as_hex_list_metadata = dict(
marshmallow_field=mfields.List(
everest_fields.FeltField.get_marshmallow_field(),
validate=validate_length(
field_name="felt_list", max_length=constants.SIERRA_ARRAY_LEN_BOUND - 1
),
)
)

felt_as_hex_or_str_list_metadata = dict(
marshmallow_field=mfields.List(
BackwardCompatibleIntAsHex(
Expand All @@ -54,21 +41,12 @@
)
)

calldata_metadata = felt_as_hex_or_str_list_metadata

felt_list_metadata = dict(
marshmallow_field=mfields.List(IntAsStr(validate=everest_fields.FeltField.validate))
)

bounded_felt_as_hex_or_str_list_metadata = dict(
marshmallow_field=mfields.List(
BackwardCompatibleIntAsHex(
allow_decimal_loading=True, validate=everest_fields.FeltField.validate
),
validate=validate_length(
field_name="felt_list", max_length=constants.SIERRA_ARRAY_LEN_BOUND - 1
),
)
)


def felt_formatter(hex_felt: str) -> str:
return field_element_repr(val=int(hex_felt, 16), prime=everest_fields.FeltField.upper_bound)
Expand All @@ -93,11 +71,6 @@ def new_class_hash_dict_keys_metadata(
marshmallow_field=StrictRequiredInteger(validate=validate_non_negative("timestamp"))
)

calldata_metadata = bounded_felt_as_hex_or_str_list_metadata
signature_metadata = bounded_felt_as_hex_or_str_list_metadata
calldata_as_hex_metadata = bounded_felt_as_hex_list_metadata
retdata_as_hex_metadata = felt_as_hex_list_metadata


# Address.

Expand Down Expand Up @@ -181,6 +154,15 @@ def address_metadata(name: str, error_code: StarknetErrorCode) -> Dict[str, Any]
field_name="Transaction index", required=False, load_default=None
)


# InvokeFunction.

call_data_as_hex_metadata = felt_as_hex_list_metadata
signature_as_hex_metadata = felt_as_hex_or_str_list_metadata
signature_metadata = felt_list_metadata
retdata_as_hex_metadata = felt_as_hex_list_metadata


# L1Handler.

payload_metadata = felt_as_hex_list_metadata
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ def from_internal(cls, internal_tx: InternalTransaction) -> "TransactionSpecific
@marshmallow_dataclass.dataclass(frozen=True) # type: ignore[misc]
class AccountTransactionSpecificInfo(TransactionSpecificInfo):
max_fee: int = field(metadata=fields.fee_metadata)
signature: List[int] = field(metadata=fields.signature_metadata)
signature: List[int] = field(metadata=fields.signature_as_hex_metadata)
nonce: Optional[int] = field(metadata=fields.optional_nonce_metadata)

@property
Expand Down Expand Up @@ -307,7 +307,7 @@ class DeploySpecificInfo(TransactionSpecificInfo):
contract_address: int = field(metadata=fields.contract_address_metadata)
contract_address_salt: int = field(metadata=fields.contract_address_salt_metadata)
class_hash: Optional[int] = field(metadata=fields.OptionalClassHashIntField.metadata())
constructor_calldata: List[int] = field(metadata=fields.calldata_as_hex_metadata)
constructor_calldata: List[int] = field(metadata=fields.call_data_as_hex_metadata)

tx_type: ClassVar[TransactionType] = TransactionType.DEPLOY

Expand All @@ -328,7 +328,7 @@ class DeployAccountSpecificInfo(AccountTransactionSpecificInfo):
contract_address: int = field(metadata=fields.contract_address_metadata)
contract_address_salt: int = field(metadata=fields.contract_address_salt_metadata)
class_hash: int = field(metadata=fields.ClassHashIntField.metadata())
constructor_calldata: List[int] = field(metadata=fields.calldata_as_hex_metadata)
constructor_calldata: List[int] = field(metadata=fields.call_data_as_hex_metadata)
version: int = field(metadata=fields.tx_version_metadata)
# Repeat `nonce` to narrow its type to non-optional int.
nonce: int = field(metadata=fields.nonce_metadata)
Expand Down Expand Up @@ -364,7 +364,7 @@ class InvokeSpecificInfo(AccountTransactionSpecificInfo):
entry_point_selector: Optional[int] = field(
metadata=fields.optional_entry_point_selector_metadata
)
calldata: List[int] = field(metadata=fields.calldata_as_hex_metadata)
calldata: List[int] = field(metadata=fields.call_data_as_hex_metadata)

tx_type: ClassVar[TransactionType] = TransactionType.INVOKE_FUNCTION

Expand Down Expand Up @@ -421,7 +421,7 @@ class L1HandlerSpecificInfo(TransactionSpecificInfo):
contract_address: int = field(metadata=fields.contract_address_metadata)
entry_point_selector: int = field(metadata=fields.entry_point_selector_metadata)
nonce: Optional[int] = field(metadata=fields.optional_nonce_metadata)
calldata: List[int] = field(metadata=fields.calldata_as_hex_metadata)
calldata: List[int] = field(metadata=fields.call_data_as_hex_metadata)

tx_type: ClassVar[TransactionType] = TransactionType.L1_HANDLER

Expand Down Expand Up @@ -754,7 +754,7 @@ class FunctionInvocation(BaseResponseObject, SerializableMarshmallowDataclass):
metadata=fields.L2AddressField.metadata(field_name="caller_address")
)
contract_address: int = field(metadata=fields.contract_address_metadata)
calldata: List[int] = field(metadata=fields.calldata_as_hex_metadata)
calldata: List[int] = field(metadata=fields.call_data_as_hex_metadata)
call_type: Optional[CallType] = field(metadata=nonrequired_optional_metadata)
class_hash: Optional[int] = field(metadata=fields.OptionalClassHashIntField.metadata())
selector: Optional[int] = field(metadata=fields.optional_entry_point_selector_metadata)
Expand Down Expand Up @@ -811,7 +811,7 @@ class TransactionTrace(ValidatedResponseObject):
validate_invocation: Optional[FunctionInvocation]
function_invocation: Optional[FunctionInvocation]
fee_transfer_invocation: Optional[FunctionInvocation]
signature: List[int] = field(metadata=fields.signature_metadata)
signature: List[int] = field(metadata=fields.signature_as_hex_metadata)


@marshmallow_dataclass.dataclass(frozen=True)
Expand Down
11 changes: 4 additions & 7 deletions src/starkware/starkware_utils/field_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,11 @@ def validate_equal(field_name: str, *, allowed_value: T) -> ValidatorType:
return marshmallow.validate.Equal(comparable=allowed_value, error=error_message)


def validate_length(field_name: str, *, max_length: int) -> ValidatorType:
error_message = (
"Invalid {field_name}: {{input}}; "
"must be of length less than or equal to: {max_length}.".format(
field_name=field_name, max_length=max_length
)
def validate_length(field_name: str, *, length: int) -> ValidatorType:
error_message = "Invalid {field_name}: {{input}}; must be of length: {length}".format(
field_name=field_name, length=length
)
return marshmallow.validate.Length(max=max_length, error=error_message)
return marshmallow.validate.Length(equal=length, error=error_message)


def validate_in_range(
Expand Down

0 comments on commit 02d5112

Please sign in to comment.