diff --git a/my_contract.png b/my_contract.png new file mode 100644 index 0000000..73a6988 Binary files /dev/null and b/my_contract.png differ diff --git a/my_contract_1.png b/my_contract_1.png new file mode 100644 index 0000000..1bbf4b5 Binary files /dev/null and b/my_contract_1.png differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..aac842b --- /dev/null +++ b/readme.md @@ -0,0 +1,18 @@ +# Declare +sncast declare --contract-name StakingContract --network sepolia + +# Deploy +sncast deploy --class-hash 0xABC... --constructor-calldata arg1 arg2 --network sepolia + +# Call (read) +sncast call --contract-address 0x... --function get_counter --arguments 0x123 + +# Invoke (write) +sncast invoke --contract-address 0x... --function transfer --arguments 0x456 1000 + + +screenshot for the terminal actions for deploying and interacting with contract{ +cairo-bootcamp-5\my_contract.png +cairo-bootcamp-5\my_contract_1.png} + +Transaction hash = 0x04b1476289183b9940d504060e2d37e81553fc64e0ec0ddf66ccddcef70579f5 diff --git a/starknet_contracts/src/contracts/HelloStarknet.cairo b/starknet_contracts/src/contracts/HelloStarknet.cairo index a12d4a9..cab577e 100644 --- a/starknet_contracts/src/contracts/HelloStarknet.cairo +++ b/starknet_contracts/src/contracts/HelloStarknet.cairo @@ -1,11 +1,10 @@ -/// 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,17 +13,27 @@ pub mod HelloStarknet { } #[event] - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] pub enum Event { Balance : BalanceIncreased, + Balances: BalanceChanged, } - #[derive(Drop, Starknet::Event)] + #[derive(Drop, starknet::Event)] pub struct BalanceIncreased { pub caller: ContractAddress, pub amount: felt252, } + #[derive(Drop, starknet::Event)] + pub struct BalanceChanged { + pub caller: ContractAddress, + pub amount: felt252, + pub old_balance: felt252, + } + + + #[abi(embed_v0)] impl HelloStarknetImpl of IHelloStarknet { fn increase_balance(ref self: ContractState, amount: felt252) { @@ -45,6 +54,20 @@ pub mod HelloStarknet { self.emit(BalanceIncreased{caller, amount}); } + fn set_balance(ref self: ContractState, amount: felt252) { + let caller = get_caller_address(); + let old_bal = self.balances.read(caller); + self.balances.write(caller, amount); + self.emit(BalanceChanged{caller, amount, old_balance: old_bal}); + + + + } + + fn reset_balance(ref self: ContractState){ + self.balance.write(0); + } + fn get_balance(self: @ContractState) -> felt252 { self.balance.read() }