Skip to content

Commit 13ab512

Browse files
authored
feat: update to cairo 2.9.2 (#47)
* update to cairo 2.9.2 * add ci scarb fmt check * update action version in ci to avoid warnings * fix to the new usage of features * add to ci the check to build default without features
1 parent 9438111 commit 13ab512

27 files changed

+539
-441
lines changed

.github/workflows/build.yml

+9-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ on:
99
permissions: read-all
1010

1111
jobs:
12-
check:
12+
build_default:
1313
runs-on: ubuntu-latest
1414
steps:
1515
- uses: actions/checkout@v4
16-
- uses: asdf-vm/actions/install@v3
17-
- run: scarb fmt --check
16+
- uses: asdf-vm/actions/[email protected]
17+
- run: scarb build
18+
19+
build_all_features:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: asdf-vm/actions/[email protected]
1824
- run: scarb build --all-features

.github/workflows/check.yml

+8-1
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,16 @@ jobs:
1919
mdl -s .github/linter/base_style.rb .github
2020
mdl -s .github/linter/book_style.rb book
2121
22+
fmt:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v4
26+
- uses: asdf-vm/actions/[email protected]
27+
- run: scarb fmt --check
28+
2229
test:
2330
runs-on: ubuntu-latest
2431
steps:
2532
- uses: actions/checkout@v4
26-
- uses: asdf-vm/actions/install@v3
33+
- uses: asdf-vm/actions/install@v3.0.2
2734
- run: scarb test --all-features

.tool-versions

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
scarb 2.8.4
2-
starknet-foundry 0.27.0
1+
scarb 2.9.2
2+
starknet-foundry 0.34.0

Scarb.lock

+66-28
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ version = 1
33

44
[[package]]
55
name = "openzeppelin"
6-
version = "0.16.0"
7-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
6+
version = "0.20.0"
7+
source = "registry+https://scarbs.xyz/"
8+
checksum = "sha256:05fd9365be85a4a3e878135d5c52229f760b3861ce4ed314cb1e75b178b553da"
89
dependencies = [
910
"openzeppelin_access",
1011
"openzeppelin_account",
12+
"openzeppelin_finance",
1113
"openzeppelin_governance",
1214
"openzeppelin_introspection",
1315
"openzeppelin_merkle_tree",
@@ -20,85 +22,111 @@ dependencies = [
2022

2123
[[package]]
2224
name = "openzeppelin_access"
23-
version = "0.16.0"
24-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
25+
version = "0.20.0"
26+
source = "registry+https://scarbs.xyz/"
27+
checksum = "sha256:7734901a0ca7a7065e69416fea615dd1dc586c8dc9e76c032f25ee62e8b2a06c"
2528
dependencies = [
2629
"openzeppelin_introspection",
27-
"openzeppelin_utils",
2830
]
2931

3032
[[package]]
3133
name = "openzeppelin_account"
32-
version = "0.16.0"
33-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
34+
version = "0.20.0"
35+
source = "registry+https://scarbs.xyz/"
36+
checksum = "sha256:1aa3a71e2f40f66f98d96aa9bf9f361f53db0fd20fa83ef7df04426a3c3a926a"
3437
dependencies = [
3538
"openzeppelin_introspection",
3639
"openzeppelin_utils",
3740
]
3841

42+
[[package]]
43+
name = "openzeppelin_finance"
44+
version = "0.20.0"
45+
source = "registry+https://scarbs.xyz/"
46+
checksum = "sha256:f0c507fbff955e4180ea3fa17949c0ff85518c40101f4948948d9d9a74143d6c"
47+
dependencies = [
48+
"openzeppelin_access",
49+
"openzeppelin_token",
50+
]
51+
3952
[[package]]
4053
name = "openzeppelin_governance"
41-
version = "0.16.0"
42-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
54+
version = "0.20.0"
55+
source = "registry+https://scarbs.xyz/"
56+
checksum = "sha256:c0fb60fad716413d537fabd5fcbb2c499ca6beb95af5f0d1699955ecec4c6f63"
4357
dependencies = [
4458
"openzeppelin_access",
59+
"openzeppelin_account",
4560
"openzeppelin_introspection",
61+
"openzeppelin_token",
62+
"openzeppelin_utils",
4663
]
4764

4865
[[package]]
4966
name = "openzeppelin_introspection"
50-
version = "0.16.0"
51-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
67+
version = "0.20.0"
68+
source = "registry+https://scarbs.xyz/"
69+
checksum = "sha256:13e04a2190684e6804229a77a6c56de7d033db8b9ef519e5e8dee400a70d8a3d"
5270

5371
[[package]]
5472
name = "openzeppelin_merkle_tree"
55-
version = "0.16.0"
56-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
73+
version = "0.20.0"
74+
source = "registry+https://scarbs.xyz/"
75+
checksum = "sha256:039608900e92f3dcf479bf53a49a1fd76452acd97eb86e390d1eb92cacdaf3af"
5776

5877
[[package]]
5978
name = "openzeppelin_presets"
60-
version = "0.16.0"
61-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
79+
version = "0.20.0"
80+
source = "registry+https://scarbs.xyz/"
81+
checksum = "sha256:5c07a8de32e5d9abe33988c7927eaa8b5f83bc29dc77302d9c8c44c898611042"
6282
dependencies = [
6383
"openzeppelin_access",
6484
"openzeppelin_account",
85+
"openzeppelin_finance",
6586
"openzeppelin_introspection",
6687
"openzeppelin_token",
6788
"openzeppelin_upgrades",
89+
"openzeppelin_utils",
6890
]
6991

7092
[[package]]
7193
name = "openzeppelin_security"
72-
version = "0.16.0"
73-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
94+
version = "0.20.0"
95+
source = "registry+https://scarbs.xyz/"
96+
checksum = "sha256:27155597019ecf971c48d7bfb07fa58cdc146d5297745570071732abca17f19f"
7497

7598
[[package]]
7699
name = "openzeppelin_testing"
77-
version = "0.16.0"
78-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
100+
version = "0.20.0"
101+
source = "registry+https://scarbs.xyz/"
102+
checksum = "sha256:2fa9aaadacffd6a95754781ed18f6ee660f52a30d27b024efcde2b4b5648e0b3"
79103
dependencies = [
80104
"snforge_std",
81105
]
82106

83107
[[package]]
84108
name = "openzeppelin_token"
85-
version = "0.16.0"
86-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
109+
version = "0.20.0"
110+
source = "registry+https://scarbs.xyz/"
111+
checksum = "sha256:4452f449dc6c1ea97cf69d1d9182749abd40e85bd826cd79652c06a627eafd91"
87112
dependencies = [
113+
"openzeppelin_access",
88114
"openzeppelin_account",
89-
"openzeppelin_governance",
90115
"openzeppelin_introspection",
116+
"openzeppelin_utils",
91117
]
92118

93119
[[package]]
94120
name = "openzeppelin_upgrades"
95-
version = "0.16.0"
96-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
121+
version = "0.20.0"
122+
source = "registry+https://scarbs.xyz/"
123+
checksum = "sha256:15fdd63f6b50a0fda7b3f8f434120aaf7637bcdfe6fd8d275ad57343d5ede5e1"
97124

98125
[[package]]
99126
name = "openzeppelin_utils"
100-
version = "0.16.0"
101-
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?tag=v0.16.0#ba00ce76a93dcf25c081ab2698da20690b5a1cfb"
127+
version = "0.20.0"
128+
source = "registry+https://scarbs.xyz/"
129+
checksum = "sha256:44f32d242af1e43982decc49c563e613a9b67ade552f5c3d5cde504e92f74607"
102130

103131
[[package]]
104132
name = "piltover"
@@ -109,7 +137,17 @@ dependencies = [
109137
"snforge_std",
110138
]
111139

140+
[[package]]
141+
name = "snforge_scarb_plugin"
142+
version = "0.34.0"
143+
source = "registry+https://scarbs.xyz/"
144+
checksum = "sha256:56f2b06ff2f0d8bbdfb7fb6c211fba7e4da6e5334ea70ba849af329a739faf11"
145+
112146
[[package]]
113147
name = "snforge_std"
114-
version = "0.27.0"
115-
source = "git+https://github.com/foundry-rs/starknet-foundry?tag=v0.27.0#2d99b7c00678ef0363881ee0273550c44a9263de"
148+
version = "0.34.0"
149+
source = "registry+https://scarbs.xyz/"
150+
checksum = "sha256:bd20964bde07e6fd0f7adb50d41216f05d66abd422ed82241030369333385876"
151+
dependencies = [
152+
"snforge_scarb_plugin",
153+
]

Scarb.toml

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
[package]
22
name = "piltover"
33
version = "0.1.0"
4-
edition = "2023_10"
4+
edition = "2024_07"
55

66
[dependencies]
7-
starknet = "2.8.4"
8-
openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.16.0" }
7+
starknet = "2.9.2"
8+
openzeppelin = "0.20.0"
99

1010
[dev-dependencies]
11-
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.27.0" }
12-
openzeppelin_testing = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.16.0" }
11+
starknet = "2.9.2"
12+
snforge_std = "0.34.0"
13+
openzeppelin_testing = "0.20.0"
14+
15+
[scripts]
16+
test = "snforge test"
1317

1418
[lib]
1519
sierra = true
1620
casm = true
1721

18-
[scripts]
19-
test = "snforge test"
20-
2122
[[target.starknet-contract]]
2223
casm = true
2324
sierra = true

bindings/src/lib.rs

+29
Original file line numberDiff line numberDiff line change
@@ -3644,6 +3644,35 @@ UpgradeableEvent
36443644
new(__call, self.provider(),)
36453645
} #[allow(clippy :: ptr_arg)] #[allow(clippy :: too_many_arguments)] pub
36463646
fn
3647+
add_messages_hashes_from_appchain_getcall(& self, messages_hashes : & Vec
3648+
:: < starknet :: core :: types :: Felt >) -> starknet :: core :: types ::
3649+
Call
3650+
{
3651+
use cainome :: cairo_serde :: CairoSerde; let mut __calldata = vec!
3652+
[];
3653+
__calldata.extend(Vec :: < starknet :: core :: types :: Felt > ::
3654+
cairo_serialize(messages_hashes)); starknet :: core :: types :: Call
3655+
{
3656+
to : self.address, selector : starknet :: macros :: selector!
3657+
("add_messages_hashes_from_appchain"), calldata : __calldata,
3658+
}
3659+
} #[allow(clippy :: ptr_arg)] #[allow(clippy :: too_many_arguments)] pub
3660+
fn
3661+
add_messages_hashes_from_appchain(& self, messages_hashes : & Vec :: <
3662+
starknet :: core :: types :: Felt >) -> starknet :: accounts ::
3663+
ExecutionV1 < A >
3664+
{
3665+
use cainome :: cairo_serde :: CairoSerde; let mut __calldata = vec!
3666+
[];
3667+
__calldata.extend(Vec :: < starknet :: core :: types :: Felt > ::
3668+
cairo_serialize(messages_hashes)); let __call = starknet :: core ::
3669+
types :: Call
3670+
{
3671+
to : self.address, selector : starknet :: macros :: selector!
3672+
("add_messages_hashes_from_appchain"), calldata : __calldata,
3673+
}; self.account.execute_v1(vec! [__call])
3674+
} #[allow(clippy :: ptr_arg)] #[allow(clippy :: too_many_arguments)] pub
3675+
fn
36473676
cancel_message_getcall(& self, to_address : & cainome :: cairo_serde ::
36483677
ContractAddress, selector : & starknet :: core :: types :: Felt, payload :
36493678
& Vec :: < starknet :: core :: types :: Felt > , nonce : & starknet ::

src/appchain.cairo

+25-24
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,20 @@
33
//!
44

55
mod errors {
6-
const INVALID_ADDRESS: felt252 = 'Config: invalid address';
7-
const SNOS_INVALID_PROGRAM_OUTPUT_SIZE: felt252 = 'snos: invalid output size';
8-
const SNOS_INVALID_CONFIG_HASH: felt252 = 'snos: invalid config hash';
9-
const SNOS_INVALID_MESSAGES_SEGMENTS: felt252 = 'snos: invalid messages segments';
10-
const NO_STATE_TRANSITION_PROOF: felt252 = 'no state transition proof';
6+
pub const INVALID_ADDRESS: felt252 = 'Config: invalid address';
7+
pub const SNOS_INVALID_PROGRAM_OUTPUT_SIZE: felt252 = 'snos: invalid output size';
8+
pub const SNOS_INVALID_CONFIG_HASH: felt252 = 'snos: invalid config hash';
9+
pub const SNOS_INVALID_MESSAGES_SEGMENTS: felt252 = 'snos: invalid messages segments';
10+
pub const NO_STATE_TRANSITION_PROOF: felt252 = 'no state transition proof';
1111
}
1212

1313
/// Appchain settlement contract on starknet.
1414
#[starknet::contract]
15-
mod appchain {
15+
pub mod appchain {
1616
use core::iter::IntoIterator;
17-
use core::poseidon::{Poseidon, PoseidonImpl, HashStateImpl, poseidon_hash_span};
17+
use core::poseidon::{PoseidonImpl, poseidon_hash_span};
1818
use openzeppelin::access::ownable::{
1919
OwnableComponent as ownable_cpt, OwnableComponent::InternalTrait as OwnableInternal,
20-
interface::IOwnable,
2120
};
2221
use openzeppelin::security::reentrancyguard::{
2322
ReentrancyGuardComponent,
@@ -28,19 +27,16 @@ mod appchain {
2827
UpgradeableComponent::InternalTrait as UpgradeableInternal, interface::IUpgradeable,
2928
};
3029
use piltover::components::onchain_data_fact_tree_encoder::{
31-
encode_fact_with_onchain_data, DataAvailabilityFact,
30+
DataAvailabilityFact, encode_fact_with_onchain_data,
3231
};
33-
use piltover::config::{config_cpt, config_cpt::InternalTrait as ConfigInternal, IConfig};
32+
use piltover::config::{IConfig, config_cpt, config_cpt::InternalTrait as ConfigInternal};
3433
use piltover::fact_registry::{IFactRegistryDispatcher, IFactRegistryDispatcherTrait};
3534
use piltover::interface::IAppchain;
36-
use piltover::messaging::{
37-
messaging_cpt, messaging_cpt::InternalTrait as MessagingInternal, IMessaging,
38-
};
39-
use piltover::snos_output::StarknetOsOutput;
35+
use piltover::messaging::{messaging_cpt, messaging_cpt::InternalTrait as MessagingInternal};
4036
use piltover::snos_output::deserialize_os_output;
41-
use piltover::state::component::state_cpt::HasComponent;
42-
use piltover::state::{state_cpt, state_cpt::InternalTrait as StateInternal, IState};
43-
use starknet::{ContractAddress, ClassHash};
37+
use piltover::state::{IState, state_cpt, state_cpt::InternalTrait as StateInternal};
38+
use starknet::storage::{StoragePointerReadAccess};
39+
use starknet::{ClassHash, ContractAddress};
4440
use super::errors;
4541

4642
/// The default cancellation delay of 5 days.
@@ -62,6 +58,11 @@ mod appchain {
6258
#[abi(embed_v0)]
6359
impl StateImpl = state_cpt::StateImpl<ContractState>;
6460

61+
#[cfg(feature: 'messaging_test')]
62+
#[abi(embed_v0)]
63+
impl MessagingTestImpl =
64+
messaging_cpt::MessagingTestImpl<ContractState>;
65+
6566
#[storage]
6667
struct Storage {
6768
#[substorage(v0)]
@@ -80,7 +81,7 @@ mod appchain {
8081

8182
#[event]
8283
#[derive(Drop, starknet::Event)]
83-
enum Event {
84+
pub enum Event {
8485
#[flat]
8586
OwnableEvent: ownable_cpt::Event,
8687
#[flat]
@@ -98,15 +99,15 @@ mod appchain {
9899
}
99100

100101
#[derive(Drop, starknet::Event)]
101-
struct LogStateUpdate {
102-
state_root: felt252,
103-
block_number: felt252,
104-
block_hash: felt252,
102+
pub struct LogStateUpdate {
103+
pub state_root: felt252,
104+
pub block_number: felt252,
105+
pub block_hash: felt252,
105106
}
106107

107108
#[derive(Drop, starknet::Event)]
108-
struct LogStateTransitionFact {
109-
state_transition_fact: u256,
109+
pub struct LogStateTransitionFact {
110+
pub state_transition_fact: u256,
110111
}
111112

112113
/// Initializes the contract.

0 commit comments

Comments
 (0)