NethermindEth / blockifier

Blockifier is a Rust implementation for the transaction-executing component in the StarkNet sequencer, in charge of creating state diffs and blocks.
Apache License 2.0
1 stars 4 forks source link

Verify contract class version for Sierra #133

Open PearsonWhite opened 2 weeks ago

PearsonWhite commented 2 weeks ago

Issue for todo! in ContractClass::V1Native(_) => todo!("Sierra verify contract class version"), We should do the same as V0 here.

pub fn verify_contract_class_version(
    contract_class: &ContractClass,
    declare_version: TransactionVersion,
) -> Result<(), TransactionExecutionError> {
    match contract_class {
        // TODO: Make TransactionVersion an enum and use match here.
        ContractClass::V0(_) => {
            if declare_version == TransactionVersion::ZERO
                || declare_version == TransactionVersion::ONE
            {
                return Ok(());
            }
            Err(TransactionExecutionError::ContractClassVersionMismatch {
                declare_version,
                cairo_version: 0,
            })
        }
        ContractClass::V1(_) => {
            if declare_version == TransactionVersion::TWO
                || declare_version == TransactionVersion::THREE
            {
                return Ok(());
            }
            Err(TransactionExecutionError::ContractClassVersionMismatch {
                declare_version,
                cairo_version: 1,
            })
        }
        ContractClass::V1Native(_) => todo!("Sierra verify contract class version"),
    }
}