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

Commit

Permalink
Adding the
Browse files Browse the repository at this point in the history
  • Loading branch information
elielnfinic committed May 16, 2024
1 parent b5f893f commit fec1798
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions crates/pallets/starknet/src/tests/declare_tx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,37 @@ fn create_declare_erc20_v1_transaction(
BlockifierDeclareTransaction::new(tx, tx_hash, ClassInfo::new(&erc20_class, 0, 1).unwrap()).unwrap()
}

fn create_declare_erc20_v0_transaction(
chain_id: Felt252Wrapper,
account_type: AccountType,
sender_address: Option<ContractAddress>,
signature: Option<TransactionSignature>,
nonce: Option<Nonce>,
) -> BlockifierDeclareTransaction {
let sender_address = sender_address.unwrap_or_else(|| get_account_address(None, account_type));

let erc20_class = get_contract_class("ERC20.json", 0);
let erc20_class_hash =
ClassHash(StarkFelt::try_from("0x057eca87f4b19852cfd4551cf4706ababc6251a8781733a0a11cf8e94211da95").unwrap());

let mut tx = StarknetApiDeclareTransaction::V0(DeclareTransactionV0V1 {
max_fee: Fee(u128::MAX),
signature: Default::default(),
nonce: nonce.unwrap_or_default(),
class_hash: erc20_class_hash,
sender_address,
});

let tx_hash = tx.compute_hash(chain_id, false);
// Force to do that because ComputeTransactionHash cannot be implemented on DeclareTransactionV0V1
// directly...
if let StarknetApiDeclareTransaction::V0(tx) = &mut tx {
tx.signature = signature.unwrap_or_else(|| sign_message_hash(tx_hash));
}

BlockifierDeclareTransaction::new(tx, tx_hash, ClassInfo::new(&erc20_class, 0, 1).unwrap()).unwrap()
}

#[test]
fn given_contract_declare_tx_works_once_not_twice() {
new_test_ext::<MockRuntime>().execute_with(|| {
Expand Down Expand Up @@ -349,3 +380,20 @@ fn test_verify_nonce_in_unsigned_tx() {
);
});
}

#[test]
fn test_declare_using_transaction_v0() {
new_test_ext::<MockRuntime>().execute_with(|| {
basic_test_setup(2);

let transaction = create_declare_erc20_v0_transaction(
Starknet::chain_id(),
AccountType::V0(AccountTypeV0Inner::NoValidate),
None,
None,
None,
);

assert!(Starknet::validate_unsigned(TransactionSource::InBlock, &crate::Call::declare { transaction }).is_ok());
});
}

0 comments on commit fec1798

Please sign in to comment.