Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moved Cairo code snippets to Scarb projects in docs/listings #2470

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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"
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"
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
Loading