starknet_api 0.18.0-rc.0

Starknet Rust types related to computation and execution.
Documentation
use starknet_types_core::felt::Felt;
use starknet_types_core::hash::Poseidon;

use super::calculate_messages_sent_hash;
use crate::block_hash::receipt_commitment::{
    calculate_receipt_commitment,
    calculate_receipt_hash,
    get_revert_reason_hash,
    ReceiptElement,
};
use crate::block_hash::test_utils::{generate_message_to_l1, get_transaction_output};
use crate::core::ReceiptCommitment;
use crate::transaction::{RevertedTransactionExecutionStatus, TransactionExecutionStatus};
use crate::{felt, tx_hash};

#[test]
fn test_receipt_hash_regression() {
    let transaction_receipt = ReceiptElement {
        transaction_hash: tx_hash!(1234),
        transaction_output: get_transaction_output(),
    };

    let expected_hash = felt!("0x6276abf21e7c68b2eecfdc8a845b11b44401901f5f040efe10c60d625049646");
    assert_eq!(calculate_receipt_hash(&transaction_receipt), expected_hash);

    let expected_root = ReceiptCommitment(felt!(
        "0x31963cb891ebb825e83514deb748c89b6967b5368cbc48a9b56193a1464ca87"
    ));
    assert_eq!(calculate_receipt_commitment::<Poseidon>(&[transaction_receipt]), expected_root);
}

#[test]
fn test_messages_sent_regression() {
    let messages_sent = vec![generate_message_to_l1(0), generate_message_to_l1(1)];
    let messages_hash = calculate_messages_sent_hash(&messages_sent);
    let expected_hash = felt!("0x00c89474a9007dc060aed76caf8b30b927cfea1ebce2d134b943b8d7121004e4");
    assert_eq!(messages_hash, expected_hash);
}

#[test]
fn test_revert_reason_hash_regression() {
    let execution_succeeded = TransactionExecutionStatus::Succeeded;
    assert_eq!(get_revert_reason_hash(&execution_succeeded), Felt::ZERO);
    let execution_reverted =
        TransactionExecutionStatus::Reverted(RevertedTransactionExecutionStatus {
            revert_reason: "ABC".to_string(),
        });
    let expected_hash = felt!("0x01629b9dda060bb30c7908346f6af189c16773fa148d3366701fbaa35d54f3c8");
    assert_eq!(get_revert_reason_hash(&execution_reverted), expected_hash);
}