Skip to content

Commit

Permalink
Moved Cairo code snippets to Scarb projects in docs/listings
Browse files Browse the repository at this point in the history
commit-id:e2a3655e
  • Loading branch information
integraledelebesgue committed Sep 19, 2024
1 parent 78e3e24 commit 5df9a0b
Show file tree
Hide file tree
Showing 123 changed files with 2,185 additions and 1,434 deletions.
13 changes: 13 additions & 0 deletions docs/listings/sncast_library/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[workspace]
members = ["scripts/*"]

[workspace.dependencies]
starknet = "2.7.0"
snforge_std = { path = "../../../snforge_std" }
sncast_std = { path = "../../../sncast_std" }

[[target.starknet-contract]]
sierra = true

[scripts]
test = "snforge test"
14 changes: 14 additions & 0 deletions docs/listings/sncast_library/scripts/call/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "call"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
sncast_std.workspace = true

[[target.lib]]
sierra = true

[scripts]
test = "snforge test"
14 changes: 14 additions & 0 deletions docs/listings/sncast_library/scripts/call/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use sncast_std::{call, CallResult};
use starknet::ContractAddress;

fn main() {
let contract_address: ContractAddress =
0x1e52f6ebc3e594d2a6dc2a0d7d193cb50144cfdfb7fdd9519135c29b67e427
.try_into()
.expect('Invalid contract address value');

let result = call(contract_address, selector!("get"), array![0x1]).expect('call failed');

println!("call result: {}", result);
println!("debug call result: {:?}", result);
}
17 changes: 17 additions & 0 deletions docs/listings/sncast_library/scripts/declare/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[package]
name = "declare"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
sncast_std.workspace = true

[[target.starknet-contract]]
sierra = true

[[target.lib]]
sierra = true

[scripts]
test = "snforge test"
15 changes: 15 additions & 0 deletions docs/listings/sncast_library/scripts/declare/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use sncast_std::{declare, DeclareResult, FeeSettings, EthFeeSettings};

fn main() {
let max_fee = 9999999;

let result = declare(
"HelloStarknet",
FeeSettings::Eth(EthFeeSettings { max_fee: Option::Some(max_fee) }),
Option::None
)
.expect('declare failed');

println!("declare result: {}", result);
println!("debug declare result: {:?}", result);
}
14 changes: 14 additions & 0 deletions docs/listings/sncast_library/scripts/deploy/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "deploy"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
sncast_std.workspace = true

[[target.lib]]
sierra = true

[scripts]
test = "snforge test"
25 changes: 25 additions & 0 deletions docs/listings/sncast_library/scripts/deploy/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
use starknet::ClassHash;
use sncast_std::{deploy, DeployResult, FeeSettings, EthFeeSettings};

fn main() {
let max_fee = 9999999;
let salt = 0x1;
let nonce = 0x1;

let class_hash: ClassHash = 0x03a8b191831033ba48ee176d5dde7088e71c853002b02a1cfa5a760aa98be046
.try_into()
.expect('Invalid class hash value');

let result = deploy(
class_hash,
ArrayTrait::new(),
Option::Some(salt),
true,
FeeSettings::Eth(EthFeeSettings { max_fee: Option::Some(max_fee) }),
Option::Some(nonce)
)
.expect('deploy failed');

println!("deploy result: {}", result);
println!("debug deploy result: {:?}", result);
}
15 changes: 15 additions & 0 deletions docs/listings/sncast_library/scripts/get_nonce/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "get_nonce"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
snforge_std.workspace = true
sncast_std.workspace = true

[[target.starknet-contract]]
sierra = true

[scripts]
test = "snforge test"
7 changes: 7 additions & 0 deletions docs/listings/sncast_library/scripts/get_nonce/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use sncast_std::get_nonce;

fn main() {
let nonce = get_nonce('latest');
println!("nonce: {}", nonce);
println!("debug nonce: {:?}", nonce);
}
15 changes: 15 additions & 0 deletions docs/listings/sncast_library/scripts/invoke/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "invoke"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
snforge_std.workspace = true
sncast_std.workspace = true

[[target.starknet-contract]]
sierra = true

[scripts]
test = "snforge test"
21 changes: 21 additions & 0 deletions docs/listings/sncast_library/scripts/invoke/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
use starknet::ContractAddress;
use sncast_std::{invoke, InvokeResult, FeeSettings, EthFeeSettings};

fn main() {
let contract_address: ContractAddress =
0x1e52f6ebc3e594d2a6dc2a0d7d193cb50144cfdfb7fdd9519135c29b67e427
.try_into()
.expect('Invalid contract address value');

let result = invoke(
contract_address,
selector!("put"),
array![0x1, 0x2],
FeeSettings::Eth(EthFeeSettings { max_fee: Option::None }),
Option::None
)
.expect('invoke failed');

println!("invoke result: {}", result);
println!("debug invoke result: {:?}", result);
}
15 changes: 15 additions & 0 deletions docs/listings/sncast_library/scripts/tx_status/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "tx_status"
version = "0.1.0"
edition = "2023_11"

[dependencies]
starknet.workspace = true
snforge_std.workspace = true
sncast_std.workspace = true

[[target.starknet-contract]]
sierra = true

[scripts]
test = "snforge test"
8 changes: 8 additions & 0 deletions docs/listings/sncast_library/scripts/tx_status/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
use sncast_std::{tx_status};

fn main() {
let transaction_hash = 0x00ae35dacba17cde62b8ceb12e3b18f4ab6e103fa2d5e3d9821cb9dc59d59a3c;
let status = tx_status(transaction_hash).expect('Failed to get status');

println!("transaction status: {:?}", status);
}
1 change: 1 addition & 0 deletions docs/listings/sncast_overview/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
scripts/**/*state.json
18 changes: 18 additions & 0 deletions docs/listings/sncast_overview/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[workspace]
members = ["scripts/*", "crates/*"]

[workspace.dependencies]
starknet = "2.7.0"
snforge_std = { path = "../../../snforge_std" }
sncast_std = { path = "../../../sncast_std" }
assert_macros = "0.1.0"

[[target.starknet-contract]]
sierra = true

[[target.lib]]
sierra = true
casm = true

[scripts]
test = "snforge test"
13 changes: 13 additions & 0 deletions docs/listings/sncast_overview/crates/map/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "map"
version = "0.1.0"
edition = "2024_07"

[[target.starknet-contract]]
sierra = true

[[target.lib]]
sierra = false

[dependencies]
starknet.workspace = true
26 changes: 26 additions & 0 deletions docs/listings/sncast_overview/crates/map/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#[starknet::interface]
pub trait IMapContract<State> {
fn put(ref self: State, key: felt252, value: felt252);
fn get(self: @State, key: felt252) -> felt252;
}

#[starknet::contract]
pub mod MapContract {
use starknet::storage::{Map, StorageMapReadAccess, StorageMapWriteAccess};

#[storage]
struct Storage {
storage: Map<felt252, felt252>,
}

#[abi(embed_v0)]
impl MapContractImpl of super::IMapContract<ContractState> {
fn put(ref self: ContractState, key: felt252, value: felt252) {
self.storage.write(key, value);
}

fn get(self: @ContractState, key: felt252) -> felt252 {
self.storage.read(key)
}
}
}
13 changes: 13 additions & 0 deletions docs/listings/sncast_overview/scripts/basic_example/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "basic_example"
version = "0.1.0"
edition = "2024_07"

# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html

[dependencies]
sncast_std.workspace = true
starknet.workspace = true

[[target.lib]]
sierra = true
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
use starknet::ContractAddress;
use sncast_std::{call, CallResult};

// A real contract deployed on Sepolia network
const CONTRACT_ADDRESS: felt252 =
0x07e867f1fa6da2108dd2b3d534f1fbec411c5ec9504eb3baa1e49c7a0bef5ab5;

fn main() {
let call_result = call(
CONTRACT_ADDRESS.try_into().unwrap(), selector!("get_greeting"), array![]
)
.expect('call failed');

assert(*call_result.data[1] == 'Hello, Starknet!', *call_result.data[1]);

println!("{:?}", call_result);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mod basic_example;
14 changes: 14 additions & 0 deletions docs/listings/sncast_overview/scripts/error_handling/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "error_handling"
version = "0.1.0"
edition = "2024_07"

# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html

[dependencies]
sncast_std.workspace = true
starknet.workspace = true
assert_macros.workspace = true

[[target.lib]]
sierra = true
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
use starknet::ContractAddress;
use sncast_std::{call, CallResult};

// Some nonexistent contract
const CONTRACT_ADDRESS: felt252 = 0x2137;

fn main() {
// This call fails
let call_result = call(
CONTRACT_ADDRESS.try_into().unwrap(), selector!("get_greeting"), array![]
);

// Make some assertion
assert!(call_result.is_err());

// Print the result error
println!("Received error: {:?}", call_result.unwrap_err());
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mod error_handling;
16 changes: 16 additions & 0 deletions docs/listings/sncast_overview/scripts/full_example/Scarb.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[package]
name = "full_example"
version = "0.1.0"
edition = "2024_07"

# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html

[dependencies]
sncast_std.workspace = true
map = { path = "../../crates/map" }

[[target.starknet-contract]]
build-external-contracts = ["map::MapContract"]

[[target.lib]]
sierra = true
Loading

0 comments on commit 5df9a0b

Please sign in to comment.