From e152a3071a3c8d656dabec25e7b40e4539a72ec3 Mon Sep 17 00:00:00 2001 From: jayydy Date: Thu, 2 Oct 2025 15:20:01 +0100 Subject: [PATCH 1/3] feat: added the set and reset balance functions --- starknet_contracts/Scarb.lock | 2 +- starknet_contracts/Scarb.toml | 10 +++++++--- .../src/contracts/HelloStarknet.cairo | 20 ++++++++++++------- .../src/contracts/counter.cairo | 14 ++++++------- .../src/interfaces/ICounter.cairo | 2 +- .../src/interfaces/IHelloStarknet.cairo | 8 ++++++-- 6 files changed, 35 insertions(+), 21 deletions(-) diff --git a/starknet_contracts/Scarb.lock b/starknet_contracts/Scarb.lock index fcb24ad..ec780ec 100644 --- a/starknet_contracts/Scarb.lock +++ b/starknet_contracts/Scarb.lock @@ -17,7 +17,7 @@ dependencies = [ ] [[package]] -name = "Starknet_contracts" +name = "starknet_contracts" version = "0.1.0" dependencies = [ "snforge_std", diff --git a/starknet_contracts/Scarb.toml b/starknet_contracts/Scarb.toml index 361c44a..649feae 100644 --- a/starknet_contracts/Scarb.toml +++ b/starknet_contracts/Scarb.toml @@ -1,20 +1,24 @@ [package] -name = "Starknet_contracts" +name = "starknet_contracts" version = "0.1.0" edition = "2024_07" # See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html [dependencies] -Starknet = "2.11.4" +starknet = "2.11.4" [dev-dependencies] snforge_std = "0.43.1" assert_macros = "2.11.4" -[[target.Starknet-contract]] +[[target.starknet-contract]] sierra = true +[toolchain] +sierra = true +casm = true + [scripts] test = "snforge test" diff --git a/starknet_contracts/src/contracts/HelloStarknet.cairo b/starknet_contracts/src/contracts/HelloStarknet.cairo index a12d4a9..37b4b8e 100644 --- a/starknet_contracts/src/contracts/HelloStarknet.cairo +++ b/starknet_contracts/src/contracts/HelloStarknet.cairo @@ -1,11 +1,11 @@ /// Simple contract for managing balance. -#[Starknet::contract] +#[starknet::contract] pub mod HelloStarknet { - use Starknet_contracts::interfaces::IHelloStarknet::IHelloStarknet; + use starknet_contracts::interfaces::IHelloStarknet::IHellostarknet; // use Starknet::storage::{StoragePointerReadAccess, StoragePathEntry, StoragePointerWriteAccess, Map }; - use Starknet::storage::{Map, StorageMapReadAccess, StorageMapWriteAccess, StoragePointerReadAccess, StoragePointerWriteAccess }; - use Starknet::{ContractAddress, get_caller_address}; + use starknet::storage::{Map, StorageMapReadAccess, StorageMapWriteAccess, StoragePointerReadAccess, StoragePointerWriteAccess }; + use starknet::{ContractAddress, get_caller_address}; #[storage] struct Storage { @@ -14,19 +14,25 @@ pub mod HelloStarknet { } #[event] - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] pub enum Event { Balance : BalanceIncreased, } - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] pub struct BalanceIncreased { pub caller: ContractAddress, pub amount: felt252, } #[abi(embed_v0)] - impl HelloStarknetImpl of IHelloStarknet { + impl HelloStarknetImpl of IHellostarknet { + fn set_balance(ref self: ContractState, amount: felt252) { + self.balance.write(amount); + } + fn reset_balance(ref self: ContractState) { + self.balance.write(0); + } fn increase_balance(ref self: ContractState, amount: felt252) { assert(amount != 0, 'Amount cannot be 0'); let caller = get_caller_address(); diff --git a/starknet_contracts/src/contracts/counter.cairo b/starknet_contracts/src/contracts/counter.cairo index a4828e4..6a5e6fe 100644 --- a/starknet_contracts/src/contracts/counter.cairo +++ b/starknet_contracts/src/contracts/counter.cairo @@ -1,9 +1,9 @@ -#[Starknet::contract] +#[starknet::contract] pub mod Counter { - // use Starknet::ContractAddress; - // use Starknet::get_caller_address; - use Starknet_contracts::interfaces::ICounter::ICounter; - use Starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess}; + // use starknet::ContractAddress; + // use starknet::get_caller_address; + use starknet_contracts::interfaces::ICounter::ICounter; + use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess}; #[storage] struct Storage { @@ -11,12 +11,12 @@ pub mod Counter { } #[event] - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] pub enum Event { CountUpdated : CountUpdated, } - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] struct CountUpdated { old_value: u32, new_value: u32, diff --git a/starknet_contracts/src/interfaces/ICounter.cairo b/starknet_contracts/src/interfaces/ICounter.cairo index b5d41f5..f1657e6 100644 --- a/starknet_contracts/src/interfaces/ICounter.cairo +++ b/starknet_contracts/src/interfaces/ICounter.cairo @@ -1,4 +1,4 @@ -#[Starknet::interface] +#[starknet::interface] pub trait ICounter { fn get_count(self: @TContractState) -> u32; fn increment(ref self: TContractState); diff --git a/starknet_contracts/src/interfaces/IHelloStarknet.cairo b/starknet_contracts/src/interfaces/IHelloStarknet.cairo index 92ed438..0d067c2 100644 --- a/starknet_contracts/src/interfaces/IHelloStarknet.cairo +++ b/starknet_contracts/src/interfaces/IHelloStarknet.cairo @@ -1,7 +1,11 @@ /// Interface representing `HelloContract`. /// This interface allows modification and retrieval of the contract balance. -#[Starknet::interface] -pub trait IHelloStarknet { +#[starknet::interface] +pub trait IHellostarknet { + /// set contract balance. + fn set_balance(ref self: TContractState, amount: felt252); + /// reset contract balance + fn reset_balance(ref self:TContractState); /// Increase contract balance. fn increase_balance(ref self: TContractState, amount: felt252); /// Retrieve contract balance. From c81db21259702aeb8f45ba3c3df3ec4d16880a8a Mon Sep 17 00:00:00 2001 From: jayydy Date: Thu, 2 Oct 2025 15:51:20 +0100 Subject: [PATCH 2/3] feat: added the set and reset balance functions --- starknet_contracts/src/contracts/HelloStarknet.cairo | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/starknet_contracts/src/contracts/HelloStarknet.cairo b/starknet_contracts/src/contracts/HelloStarknet.cairo index 37b4b8e..c4052fb 100644 --- a/starknet_contracts/src/contracts/HelloStarknet.cairo +++ b/starknet_contracts/src/contracts/HelloStarknet.cairo @@ -55,4 +55,9 @@ pub mod HelloStarknet { self.balance.read() } } -} \ No newline at end of file +} + +// this is the link to a hackmd file detailing the steps taken to achieve the process +// https://hackmd.io/@demigodjayydy/B1uVi-23xx + +// stark token transfer transaction hash: 0x007d9c57cc95103408b263c3743b1b88b42277870555dbeb1b2b09e4e60143e4 \ No newline at end of file From bae91c092a5304c2daa21a7bc99c4dbfe2b01066 Mon Sep 17 00:00:00 2001 From: jayydy Date: Thu, 2 Oct 2025 16:29:34 +0100 Subject: [PATCH 3/3] feat: deployed the contract and invoked the functions --- starknet_contracts/Scarb.toml | 2 ++ starknet_contracts/src/contracts/counter.cairo | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/starknet_contracts/Scarb.toml b/starknet_contracts/Scarb.toml index 649feae..4d34874 100644 --- a/starknet_contracts/Scarb.toml +++ b/starknet_contracts/Scarb.toml @@ -14,6 +14,8 @@ assert_macros = "2.11.4" [[target.starknet-contract]] sierra = true +casm = true +path = "starknet_contracts/src/contracts/counter.cairo" [toolchain] sierra = true diff --git a/starknet_contracts/src/contracts/counter.cairo b/starknet_contracts/src/contracts/counter.cairo index 6a5e6fe..d8dd709 100644 --- a/starknet_contracts/src/contracts/counter.cairo +++ b/starknet_contracts/src/contracts/counter.cairo @@ -1,5 +1,5 @@ #[starknet::contract] -pub mod Counter { +pub mod counter { // use starknet::ContractAddress; // use starknet::get_caller_address; use starknet_contracts::interfaces::ICounter::ICounter;