diff --git a/.tool-versions b/.tool-versions
index aac540e2..c69b5af8 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1,2 +1,2 @@
-scarb 2.8.2
-starknet-foundry 0.30.0
+scarb 2.9.2
+starknet-foundry 0.35.0
diff --git a/Scarb.lock b/Scarb.lock
index 4589d79a..f401f76d 100644
--- a/Scarb.lock
+++ b/Scarb.lock
@@ -136,105 +136,126 @@ dependencies = [
[[package]]
name = "openzeppelin"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:5dc87a71f0f5d045e02e5bc5ea7a9b0360bbbc3f388b846006280d266feac192"
+checksum = "sha256:05fd9365be85a4a3e878135d5c52229f760b3861ce4ed314cb1e75b178b553da"
dependencies = [
+ "openzeppelin_access",
+ "openzeppelin_account",
+ "openzeppelin_finance",
+ "openzeppelin_governance",
+ "openzeppelin_introspection",
"openzeppelin_merkle_tree",
"openzeppelin_presets",
"openzeppelin_security",
"openzeppelin_token",
"openzeppelin_upgrades",
+ "openzeppelin_utils",
]
[[package]]
name = "openzeppelin_access"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:b9139449e53d715992b2d9e887c0c723d886419bee7ceb5561648c70bd6d3174"
+checksum = "sha256:7734901a0ca7a7065e69416fea615dd1dc586c8dc9e76c032f25ee62e8b2a06c"
dependencies = [
"openzeppelin_introspection",
- "openzeppelin_utils",
]
[[package]]
name = "openzeppelin_account"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:841bb881adbe98b64fee1dc1329f6e3fbabdfbd9fa65c66ffb54c55f13764bce"
+checksum = "sha256:1aa3a71e2f40f66f98d96aa9bf9f361f53db0fd20fa83ef7df04426a3c3a926a"
dependencies = [
"openzeppelin_introspection",
"openzeppelin_utils",
]
+[[package]]
+name = "openzeppelin_finance"
+version = "0.20.0"
+source = "registry+https://scarbs.xyz/"
+checksum = "sha256:f0c507fbff955e4180ea3fa17949c0ff85518c40101f4948948d9d9a74143d6c"
+dependencies = [
+ "openzeppelin_access",
+ "openzeppelin_token",
+]
+
[[package]]
name = "openzeppelin_governance"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:a9d9c983cfd4369e7bbb69433fb264edf376805ed873b1f70a287825a6bd1eaf"
+checksum = "sha256:c0fb60fad716413d537fabd5fcbb2c499ca6beb95af5f0d1699955ecec4c6f63"
dependencies = [
"openzeppelin_access",
+ "openzeppelin_account",
"openzeppelin_introspection",
+ "openzeppelin_token",
+ "openzeppelin_utils",
]
[[package]]
name = "openzeppelin_introspection"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:312bc2e531f036480ad7392dbb31042c38d875ef9dbb5578ea8de5c05e35b7d8"
+checksum = "sha256:13e04a2190684e6804229a77a6c56de7d033db8b9ef519e5e8dee400a70d8a3d"
[[package]]
name = "openzeppelin_merkle_tree"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:8e264c8d5f0591262a235a445b8ca78dd5580c251707b218b829b6b4d6f84a34"
+checksum = "sha256:039608900e92f3dcf479bf53a49a1fd76452acd97eb86e390d1eb92cacdaf3af"
[[package]]
name = "openzeppelin_presets"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:7bc9db7563e434535ebd06c7598ba0f8494e791c5f80401389b356a3ebd65a08"
+checksum = "sha256:5c07a8de32e5d9abe33988c7927eaa8b5f83bc29dc77302d9c8c44c898611042"
dependencies = [
"openzeppelin_access",
"openzeppelin_account",
+ "openzeppelin_finance",
"openzeppelin_introspection",
"openzeppelin_token",
"openzeppelin_upgrades",
+ "openzeppelin_utils",
]
[[package]]
name = "openzeppelin_security"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:b7497f5e55c6d9f1d7606ad0d12719e3c04765e266fb91fb72740e0af41d03f3"
+checksum = "sha256:27155597019ecf971c48d7bfb07fa58cdc146d5297745570071732abca17f19f"
[[package]]
name = "openzeppelin_token"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:7074c23fbc300b3cccff1037264dfdbe976fb11ae42ce687f4a8ce469adc552a"
+checksum = "sha256:4452f449dc6c1ea97cf69d1d9182749abd40e85bd826cd79652c06a627eafd91"
dependencies = [
+ "openzeppelin_access",
"openzeppelin_account",
- "openzeppelin_governance",
"openzeppelin_introspection",
+ "openzeppelin_utils",
]
[[package]]
name = "openzeppelin_upgrades"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:4de95a7fb8955e63711f34bb954676f6cef127b44b570c0535d7781297821b44"
+checksum = "sha256:15fdd63f6b50a0fda7b3f8f434120aaf7637bcdfe6fd8d275ad57343d5ede5e1"
[[package]]
name = "openzeppelin_utils"
-version = "0.16.0"
+version = "0.20.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:a494aeb5f1371db7f22e922196aa41d1d1698877a766a838350c0b6ffe49fda2"
+checksum = "sha256:44f32d242af1e43982decc49c563e613a9b67ade552f5c3d5cde504e92f74607"
[[package]]
name = "pragma_lib"
version = "1.0.0"
-source = "git+https://github.com/astraly-labs/pragma-lib#86d7ccdc15b349b8b48d9796fc8464c947bea6e1"
+source = "git+https://github.com/astraly-labs/pragma-lib?tag=2.9.1#ee1f3f7e9276cf64e19e267832de380d84c04d28"
[[package]]
name = "simple_account"
@@ -256,15 +277,15 @@ dependencies = [
[[package]]
name = "snforge_scarb_plugin"
-version = "0.2.0"
+version = "0.35.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:2e4ce3ebe3f49548bd26908391b5d78537a765d827df0d96c32aeb88941d0d67"
+checksum = "sha256:20bd6a488fda7201ce2a5fd680d8e715b10e3545147b276747ad079c96c3d5d2"
[[package]]
name = "snforge_std"
-version = "0.30.0"
+version = "0.35.0"
source = "registry+https://scarbs.xyz/"
-checksum = "sha256:2f3c4846881813ac0f5d1460981249c9f5e2a6831e752beedf9b70975495b4ec"
+checksum = "sha256:fe4e1b1526c815441183baed7f93e73bc76a6393d23e1f9c34fbe227bfaedfd6"
dependencies = [
"snforge_scarb_plugin",
]
diff --git a/Scarb.toml b/Scarb.toml
index eca997b2..37e6b8f1 100644
--- a/Scarb.toml
+++ b/Scarb.toml
@@ -12,13 +12,13 @@ test = "$(git rev-parse --show-toplevel)/scripts/test_resolver.sh"
[workspace.tool.snforge]
[workspace.dependencies]
-starknet = "2.8.2"
-cairo_test = "2.8.2"
-assert_macros = "2.8.2"
-snforge_std = "0.30.0"
-openzeppelin = "0.16.0"
+starknet = "2.9.2"
+cairo_test = "2.9.2"
+assert_macros = "2.9.2"
+snforge_std = "0.35.0"
+openzeppelin = "0.20.0"
components = { path = "listings/applications/components" }
-pragma_lib = { git = "https://github.com/astraly-labs/pragma-lib" }
+pragma_lib = { git = "https://github.com/astraly-labs/pragma-lib", tag = "2.9.1" }
[workspace.package]
description = "Collection of examples of how to use the Cairo programming language to create smart contracts on Starknet."
diff --git a/footer.tsx b/footer.tsx
index 41212213..70d07b30 100644
--- a/footer.tsx
+++ b/footer.tsx
@@ -1,6 +1,6 @@
export default function Footer() {
return (
-
+

ICommitmentRevealTraitDispatcher {
let (contract_address, _) = deploy_syscall(
- CommitmentRevealTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, array![].span(), false
+ CommitmentRevealTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, array![].span(), false,
)
- .unwrap_syscall();
+ .unwrap();
ICommitmentRevealTraitDispatcher { contract_address }
}
diff --git a/listings/advanced-concepts/ecdsa_verification/src/ecdsa_verification.cairo b/listings/advanced-concepts/ecdsa_verification/src/ecdsa_verification.cairo
index 5321a85e..c6f601ad 100644
--- a/listings/advanced-concepts/ecdsa_verification/src/ecdsa_verification.cairo
+++ b/listings/advanced-concepts/ecdsa_verification/src/ecdsa_verification.cairo
@@ -9,12 +9,12 @@ use starknet::secp256_trait::{Signature};
// 3. Sign the hash (off chain, keep your private key secret)
#[starknet::interface]
trait IVerifySignature
{
- fn get_signature(self: @TContractState, r: u256, s: u256, v: u32,) -> Signature;
+ fn get_signature(self: @TContractState, r: u256, s: u256, v: u32) -> Signature;
fn verify_eth_signature(
self: @TContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32,
);
fn recover_public_key(
- self: @TContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32
+ self: @TContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32,
);
}
@@ -23,7 +23,7 @@ mod verifySignature {
use super::IVerifySignature;
use core::starknet::eth_address::EthAddress;
use starknet::secp256k1::Secp256k1Point;
- use starknet::secp256_trait::{Signature, signature_from_vrs, recover_public_key,};
+ use starknet::secp256_trait::{Signature, signature_from_vrs, recover_public_key};
use starknet::eth_signature::{verify_eth_signature, public_key_point_to_eth_address};
#[storage]
@@ -46,7 +46,7 @@ mod verifySignature {
/// # Returns
///
/// * `Signature` - The signature struct.
- fn get_signature(self: @ContractState, r: u256, s: u256, v: u32,) -> Signature {
+ fn get_signature(self: @ContractState, r: u256, s: u256, v: u32) -> Signature {
// Create a Signature object from the given v, r, and s values.
let signature: Signature = signature_from_vrs(v, r, s);
signature
@@ -62,7 +62,7 @@ mod verifySignature {
/// * `s` - The S component of the signature.
/// * `v` - The V component of the signature.
fn verify_eth_signature(
- self: @ContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32
+ self: @ContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32,
) {
let signature = self.get_signature(r, s, v);
verify_eth_signature(:msg_hash, :signature, :eth_address);
@@ -79,7 +79,7 @@ mod verifySignature {
/// * `s` - The S component of the signature.
/// * `v` - The V component of the signature.
fn recover_public_key(
- self: @ContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32
+ self: @ContractState, eth_address: EthAddress, msg_hash: u256, r: u256, s: u256, v: u32,
) {
let signature = self.get_signature(r, s, v);
let public_key_point = recover_public_key::(msg_hash, signature)
@@ -93,7 +93,7 @@ mod verifySignature {
#[cfg(test)]
mod tests {
- use starknet::secp256_trait::{Signature, signature_from_vrs, recover_public_key,};
+ use starknet::secp256_trait::{Signature, signature_from_vrs, recover_public_key};
use starknet::EthAddress;
use starknet::secp256k1::{Secp256k1Point};
use starknet::eth_signature::{verify_eth_signature, public_key_point_to_eth_address};
diff --git a/listings/advanced-concepts/hash_trait/src/hash_trait.cairo b/listings/advanced-concepts/hash_trait/src/hash_trait.cairo
index 88fde919..ee8b9fb6 100644
--- a/listings/advanced-concepts/hash_trait/src/hash_trait.cairo
+++ b/listings/advanced-concepts/hash_trait/src/hash_trait.cairo
@@ -1,10 +1,10 @@
#[starknet::interface]
pub trait IHashTrait {
fn save_user_with_poseidon(
- ref self: T, id: felt252, username: felt252, password: felt252
+ ref self: T, id: felt252, username: felt252, password: felt252,
) -> felt252;
fn save_user_with_pedersen(
- ref self: T, id: felt252, username: felt252, password: felt252
+ ref self: T, id: felt252, username: felt252, password: felt252,
) -> felt252;
}
@@ -36,7 +36,7 @@ pub mod HashTraits {
#[abi(embed_v0)]
impl HashTrait of super::IHashTrait {
fn save_user_with_poseidon(
- ref self: ContractState, id: felt252, username: felt252, password: felt252
+ ref self: ContractState, id: felt252, username: felt252, password: felt252,
) -> felt252 {
let login = LoginDetails { username, password };
let user = UserDetails { id, login };
@@ -48,7 +48,7 @@ pub mod HashTraits {
}
fn save_user_with_pedersen(
- ref self: ContractState, id: felt252, username: felt252, password: felt252
+ ref self: ContractState, id: felt252, username: felt252, password: felt252,
) -> felt252 {
let login = LoginDetails { username, password };
let user = UserDetails { id, login };
@@ -64,16 +64,15 @@ pub mod HashTraits {
#[cfg(test)]
mod tests {
- use starknet::SyscallResultTrait;
use super::{HashTraits, IHashTraitDispatcher, IHashTraitDispatcherTrait};
use starknet::syscalls::deploy_syscall;
fn deploy() -> IHashTraitDispatcher {
let mut calldata = array![];
let (address, _) = deploy_syscall(
- HashTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false
+ HashTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false,
)
- .unwrap_syscall();
+ .unwrap();
IHashTraitDispatcher { contract_address: address }
}
diff --git a/listings/advanced-concepts/library_calls/src/tests.cairo b/listings/advanced-concepts/library_calls/src/tests.cairo
index 6458ef4d..90c2707e 100644
--- a/listings/advanced-concepts/library_calls/src/tests.cairo
+++ b/listings/advanced-concepts/library_calls/src/tests.cairo
@@ -1,8 +1,7 @@
mod tests {
use starknet::syscalls::deploy_syscall;
- use starknet::SyscallResultTrait;
use library_calls::library_call::{
- MathUtils, MathUtilsLibraryCall, IMathUtilsDispatcher, IMathUtilsDispatcherTrait
+ MathUtils, MathUtilsLibraryCall, IMathUtilsDispatcher, IMathUtilsDispatcherTrait,
};
#[test]
@@ -12,9 +11,9 @@ mod tests {
.unwrap();
let mut calldata: Array = array![];
let (address, _) = deploy_syscall(
- MathUtilsLibraryCall::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false
+ MathUtilsLibraryCall::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false,
)
- .unwrap_syscall();
+ .unwrap();
let mut contract = IMathUtilsDispatcher { contract_address: address };
contract.set_class_hash(math_utils_class_hash);
diff --git a/listings/advanced-concepts/simple_account/src/simple_account.cairo b/listings/advanced-concepts/simple_account/src/simple_account.cairo
index 6de72c81..f1e1386b 100644
--- a/listings/advanced-concepts/simple_account/src/simple_account.cairo
+++ b/listings/advanced-concepts/simple_account/src/simple_account.cairo
@@ -5,7 +5,7 @@ trait ISRC6 {
fn execute_calls(self: @TContractState, calls: Array) -> Array>;
fn validate_calls(self: @TContractState, calls: Array) -> felt252;
fn is_valid_signature(
- self: @TContractState, hash: felt252, signature: Array
+ self: @TContractState, hash: felt252, signature: Array,
) -> felt252;
}
@@ -30,7 +30,7 @@ mod simpleAccount {
struct Storage {
#[substorage(v0)]
src5: SRC5Component::Storage,
- public_key: felt252
+ public_key: felt252,
}
#[constructor]
@@ -43,7 +43,7 @@ mod simpleAccount {
#[derive(Drop, starknet::Event)]
enum Event {
#[flat]
- SRC5Event: SRC5Component::Event
+ SRC5Event: SRC5Component::Event,
}
#[abi(embed_v0)]
@@ -68,7 +68,7 @@ mod simpleAccount {
}
fn is_valid_signature(
- self: @ContractState, hash: felt252, signature: Array
+ self: @ContractState, hash: felt252, signature: Array,
) -> felt252 {
if self._is_valid_signature(hash, signature.span()) {
starknet::VALIDATED
@@ -81,10 +81,10 @@ mod simpleAccount {
#[generate_trait]
impl SignatureVerificationImpl of SignatureVerification {
fn _is_valid_signature(
- self: @ContractState, hash: felt252, signature: Span
+ self: @ContractState, hash: felt252, signature: Span,
) -> bool {
check_ecdsa_signature(
- hash, self.public_key.read(), *signature.at(0_u32), *signature.at(1_u32)
+ hash, self.public_key.read(), *signature.at(0_u32), *signature.at(1_u32),
)
}
}
diff --git a/listings/advanced-concepts/store_using_packing/src/contract.cairo b/listings/advanced-concepts/store_using_packing/src/contract.cairo
index 8ef6b2db..e1611a22 100644
--- a/listings/advanced-concepts/store_using_packing/src/contract.cairo
+++ b/listings/advanced-concepts/store_using_packing/src/contract.cairo
@@ -1,7 +1,7 @@
#[derive(Copy, Serde, Drop)]
pub struct Time {
pub hour: u8,
- pub minute: u8
+ pub minute: u8,
}
#[starknet::interface]
@@ -18,7 +18,7 @@ pub mod TimeContract {
#[storage]
struct Storage {
- time: Time
+ time: Time,
}
impl TimePackable of StorePacking