Skip to content

Commit 74d8b3c

Browse files
committed
fix(v03/get_state_update): add replaced classes, rename other fields
1 parent a1799c1 commit 74d8b3c

File tree

2 files changed

+68
-14
lines changed

2 files changed

+68
-14
lines changed

crates/rpc/fixtures/0.50.0/state_update.json

+16-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
]
1616
}
1717
],
18-
"deprecated_declared_contract_hashes": [
18+
"deprecated_declared_classes": [
1919
"0xcdef",
2020
"0xcdee"
2121
],
22-
"declared_contract_hashes": [
22+
"declared_classes": [
2323
{
2424
"class_hash": "0xabcd",
2525
"compiled_class_hash": "0xdcba"
@@ -31,6 +31,12 @@
3131
"class_hash": "0xcdef"
3232
}
3333
],
34+
"replaced_classes": [
35+
{
36+
"contract_address": "0xcad",
37+
"class_hash": "0xdac"
38+
}
39+
],
3440
"nonces": [
3541
{
3642
"contract_address": "0xca",
@@ -54,11 +60,11 @@
5460
]
5561
}
5662
],
57-
"deprecated_declared_contract_hashes": [
63+
"deprecated_declared_classes": [
5864
"0xcdef",
5965
"0xcdee"
6066
],
61-
"declared_contract_hashes": [
67+
"declared_classes": [
6268
{
6369
"class_hash": "0xabcd",
6470
"compiled_class_hash": "0xdcba"
@@ -70,6 +76,12 @@
7076
"class_hash": "0xcdef"
7177
}
7278
],
79+
"replaced_classes": [
80+
{
81+
"contract_address": "0xcad",
82+
"class_hash": "0xdac"
83+
}
84+
],
7385
"nonces": [
7486
{
7587
"contract_address": "0xca",

crates/rpc/src/v03/method/get_state_update.rs

+52-10
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,10 @@ mod types {
124124
pub struct StateDiff {
125125
pub storage_diffs: Vec<StorageDiff>,
126126
#[serde_as(as = "Vec<RpcFelt>")]
127-
pub deprecated_declared_contract_hashes: Vec<ClassHash>,
128-
pub declared_contract_hashes: Vec<DeclaredSierraClass>,
127+
pub deprecated_declared_classes: Vec<ClassHash>,
128+
pub declared_classes: Vec<DeclaredSierraClass>,
129129
pub deployed_contracts: Vec<DeployedContract>,
130+
pub replaced_classes: Vec<ReplacedClass>,
130131
pub nonces: Vec<Nonce>,
131132
}
132133

@@ -142,8 +143,8 @@ mod types {
142143
.collect();
143144
Self {
144145
storage_diffs,
145-
deprecated_declared_contract_hashes: state_diff.old_declared_contracts,
146-
declared_contract_hashes: state_diff
146+
deprecated_declared_classes: state_diff.old_declared_contracts,
147+
declared_classes: state_diff
147148
.declared_classes
148149
.into_iter()
149150
.map(Into::into)
@@ -153,6 +154,11 @@ mod types {
153154
.into_iter()
154155
.map(Into::into)
155156
.collect(),
157+
replaced_classes: state_diff
158+
.replaced_classes
159+
.into_iter()
160+
.map(Into::into)
161+
.collect(),
156162
nonces: state_diff
157163
.nonces
158164
.into_iter()
@@ -200,12 +206,12 @@ mod types {
200206
.collect();
201207
Self {
202208
storage_diffs,
203-
deprecated_declared_contract_hashes: diff
209+
deprecated_declared_classes: diff
204210
.declared_contracts
205211
.into_iter()
206212
.map(|d| d.class_hash)
207213
.collect(),
208-
declared_contract_hashes: diff
214+
declared_classes: diff
209215
.declared_sierra_classes
210216
.into_iter()
211217
.map(Into::into)
@@ -215,6 +221,7 @@ mod types {
215221
.into_iter()
216222
.map(Into::into)
217223
.collect(),
224+
replaced_classes: diff.replaced_classes.into_iter().map(Into::into).collect(),
218225
nonces: diff.nonces.into_iter().map(Into::into).collect(),
219226
}
220227
}
@@ -314,6 +321,36 @@ mod types {
314321
}
315322
}
316323

324+
/// L2 state diff replaced class item.
325+
#[serde_with::serde_as]
326+
#[derive(Clone, Debug, Serialize, PartialEq, Eq)]
327+
#[cfg_attr(any(test, feature = "rpc-full-serde"), derive(serde::Deserialize))]
328+
#[serde(deny_unknown_fields)]
329+
pub struct ReplacedClass {
330+
#[serde_as(as = "RpcFelt251")]
331+
pub contract_address: ContractAddress,
332+
#[serde_as(as = "RpcFelt")]
333+
pub class_hash: ClassHash,
334+
}
335+
336+
impl From<starknet_gateway_types::reply::state_update::ReplacedClass> for ReplacedClass {
337+
fn from(r: starknet_gateway_types::reply::state_update::ReplacedClass) -> Self {
338+
Self {
339+
contract_address: r.address,
340+
class_hash: r.class_hash,
341+
}
342+
}
343+
}
344+
345+
impl From<pathfinder_storage::types::state_update::ReplacedClass> for ReplacedClass {
346+
fn from(r: pathfinder_storage::types::state_update::ReplacedClass) -> Self {
347+
Self {
348+
contract_address: r.address,
349+
class_hash: r.class_hash,
350+
}
351+
}
352+
}
353+
317354
/// L2 state diff nonce item.
318355
#[serde_with::serde_as]
319356
#[derive(Clone, Debug, Serialize, PartialEq, Eq)]
@@ -354,18 +391,22 @@ mod types {
354391
value: StorageValue(felt!("0x55")),
355392
}],
356393
}],
357-
deprecated_declared_contract_hashes: vec![
394+
deprecated_declared_classes: vec![
358395
ClassHash(felt!("0xcdef")),
359396
ClassHash(felt!("0xcdee")),
360397
],
361-
declared_contract_hashes: vec![DeclaredSierraClass {
398+
declared_classes: vec![DeclaredSierraClass {
362399
class_hash: SierraHash(felt!("0xabcd")),
363400
compiled_class_hash: CasmHash(felt!("0xdcba")),
364401
}],
365402
deployed_contracts: vec![DeployedContract {
366403
address: ContractAddress::new_or_panic(felt!("0xadd")),
367404
class_hash: ClassHash(felt!("0xcdef")),
368405
}],
406+
replaced_classes: vec![ReplacedClass {
407+
contract_address: ContractAddress::new_or_panic(felt!("0xcad")),
408+
class_hash: ClassHash(felt!("0xdac")),
409+
}],
369410
nonces: vec![Nonce {
370411
contract_address: ContractAddress::new_or_panic(felt!("0xca")),
371412
nonce: ContractNonce(felt!("0x404ce")),
@@ -588,8 +629,8 @@ mod tests {
588629
},
589630
],
590631
}],
591-
deprecated_declared_contract_hashes: vec![],
592-
declared_contract_hashes: vec![],
632+
deprecated_declared_classes: vec![],
633+
declared_classes: vec![],
593634
deployed_contracts: vec![
594635
DeployedContract {
595636
address: ContractAddress::new_or_panic(felt_bytes!(
@@ -604,6 +645,7 @@ mod tests {
604645
class_hash: ClassHash(felt_bytes!(b"pending contract 1 hash")),
605646
},
606647
],
648+
replaced_classes: vec![],
607649
nonces: vec![],
608650
},
609651
};

0 commit comments

Comments
 (0)