Skip to content

Commit 950fd83

Browse files
Merge pull request #2012 from multiversx/set-state-overwrite-fix
fix and tests for the setStateOverwrite functionality in interactor
2 parents a50b7bf + 526d649 commit 950fd83

File tree

4 files changed

+157
-55
lines changed

4 files changed

+157
-55
lines changed

contracts/examples/adder/interactor/set_state.json

Lines changed: 63 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,96 @@
11
[
22
{
33
"address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa",
4-
"nonce": 6221,
5-
"balance": "37980784869999986",
4+
"nonce": 6608,
5+
"balance": "3017433794349999985",
66
"pairs": {
7-
"454c524f4e44657364745453542d343265356138": "1209004563918244f40000",
8-
"454c524f4e44657364745453542d393836646663": "12020064",
9-
"454c524f4e4465736474544553542d61366131663601": "080512020001223a080112056d794e46541a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60201e32003a090000000000000002032a0510e2f09003",
10-
"454c524f4e44657364745453542d306632306637": "12020064",
11-
"454c524f4e44657364745453542d656338383735": "12020064",
12-
"454c524f4e4465736474544553542d65373261666101": "080512020001223a080112056d794e46541a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1201e32003a09000000000000000203",
7+
"454c524f4e44657364745453542d623136363735": "1209004563918244f40000",
138
"454c524f4e44657364745453542d303362373664": "12020064",
14-
"454c524f4e44726f6c6565736474544553542d396262623231": "0a1545534454526f6c654d6f6469667943726561746f72",
15-
"454c524f4e4465736474544553542d39626262323101": "080512020001223a080112056d794e46541a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60201e32003a090000000000000002032a0510f9f5ae03",
16-
"454c524f4e44657364745453542d336339363762": "12020064",
17-
"454c524f4e44657364745453542d343562383235": "12020064",
18-
"454c524f4e44657364745453542d363437383930": "1209004563918244f40000",
19-
"454c524f4e4465736474424358535542542d33393264366172": "080112020001",
20-
"454c524f4e44726f6c656573647450544d2d353336666162": "0a1145534454526f6c654e46544372656174650a0f45534454526f6c654e46544275726e",
21-
"454c524f4e44657364744c5453542d346638343965": "1209000de0b6b3a763fc19",
22-
"454c524f4e44657364745453542d353966316165": "1209004563918244f40000",
9+
"454c524f4e44657364745453542d346230653865": "1209004563918244f40000",
2310
"454c524f4e44657364745453542d343138613232": "1209004563918244f40000",
24-
"454c524f4e44657364745453542d363434633935": "12020064",
25-
"454c524f4e44657364745453542d633636666535": "1209004563918244f40000",
26-
"454c524f4e44657364745453542d643862306438": "12020064",
27-
"454c524f4e44657364745453542d333639646531": "1209004563918244f40000",
28-
"454c524f4e44657364744c5453542d376266336431": "1209000de0b6b3a763fc19",
29-
"454c524f4e44657364745453542d643964336136": "1209004563918244f40000",
30-
"454c524f4e44657364745453542d393864633566": "1209004563918244f40000",
31-
"454c524f4e4465736474475245454e2d306531363163": "120b00152d02c7e14af67fffdc",
32-
"454c524f4e44657364745453542d353538616434": "12020064",
33-
"454c524f4e44657364745453542d623136363735": "1209004563918244f40000",
34-
"454c524f4e446573647450544d2d35333666616201": "08021202000122ef0108011212546573742d5061696e742d486172766573741a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed6020c4132a2e516d57564239575362674b52655a64615a434344766b454b70705a6b4d696d397563736e7857565041414c6a4374324368747470733a2f2f697066732e696f2f697066732f516d57564239575362674b52655a64615a434344766b454b70705a6b4d696d397563736e7857565041414c6a43743a3d746167733a3b6d657461646174613a516d52635039346b5872357a5a6a52477669376d4a36756e374c7078556859565234523452706963787a67596b74",
35-
"454c524f4e44657364745453542d303637373232": "1209004563918244f40000",
11+
"454c524f4e44657364745453542d333331386638": "1209004563918244f40000",
12+
"454c524f4e4465736474544553542d326130616532": "12020064",
3613
"454c524f4e44657364745453542d396230323030": "1209004563918244f40000",
37-
"454c524f4e44657364745453542d623830663863": "1209004563918244f40000",
3814
"454c524f4e446573647455544b2d313464353764": "120b0001e6ce88d5ebbfd00000",
15+
"454c524f4e4465736474544553542d65373261666101": "080512020001223a080112056d794e46541a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1201e32003a09000000000000000203",
16+
"454c524f4e44657364745453542d643862306438": "12020064",
17+
"454c524f4e44657364745453542d336339363762": "12020064",
18+
"454c524f4e44657364745453542d643964336136": "1209004563918244f40000",
19+
"454c524f4e44657364745453542d393836646663": "12020064",
3920
"454c524f4e44657364745453542d363835303064": "1209004563918244f40000",
40-
"454c524f4e44657364745453542d373639313337": "1209004563918244f40000",
41-
"454c524f4e44657364745453542d613562663131": "12020064",
42-
"454c524f4e44657364745453542d386564363538": "1209004563918244f40000",
43-
"454c524f4e44657364745453542d333331386638": "1209004563918244f40000",
21+
"454c524f4e44726f6c6565736474544553542d396262623231": "0a1545534454526f6c654d6f6469667943726561746f72",
22+
"454c524f4e44726f6c656573647450544d2d353336666162": "0a1145534454526f6c654e46544372656174650a0f45534454526f6c654e46544275726e",
4423
"454c524f4e44657364745745474c442d613238633539": "120900389351ce08f09e12",
45-
"454c524f4e4465736474544553542d393236313861": "1202005a",
46-
"454c524f4e44657364745453542d346634303238": "12020064",
47-
"454c524f4e44726f6c6565736474544553542d613661316636": "0a1545534454526f6c654d6f6469667943726561746f72",
48-
"454c524f4e44657364745453542d346230653865": "1209004563918244f40000",
24+
"454c524f4e4465736474475245454e2d306531363163": "120b00152d02c7e14af67ffe38",
25+
"454c524f4e44657364745453542d656338383735": "12020064",
26+
"454c524f4e44657364745453542d393864633566": "1209004563918244f40000",
4927
"454c524f4e44657364745453542d623130616461": "1209004563918244f40000",
50-
"454c524f4e4465736474544553542d326130616532": "12020064",
51-
"454c524f4e446e6f6e636550544d2d353336666162": "01",
28+
"454c524f4e44726f6c6565736474544553542d653864643263": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
29+
"454c524f4e44657364745453542d633933336139": "1209004563918244f40000",
30+
"454c524f4e44657364745453542d343562383235": "12020064",
31+
"454c524f4e4465736474544553542d61366131663601": "080512020001223a080112056d794e46541a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60201e32003a090000000000000002032a0510e2f09003",
32+
"454c524f4e4465736474544553542d39626262323101": "080512020001223a080112056d794e46541a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60201e32003a090000000000000002032a0510f9f5ae03",
33+
"454c524f4e44657364744c5453542d376266336431": "1209000de0b6b3a763fc19",
34+
"454c524f4e4465736474544553542d393236313861": "1202005a",
5235
"454c524f4e44657364745453542d323833633361": "12020064",
36+
"454c524f4e44726f6c6565736474544553542d306262343562": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
37+
"454c524f4e44657364745453542d623830663863": "1209004563918244f40000",
38+
"454c524f4e44657364745453542d343265356138": "1209004563918244f40000",
39+
"454c524f4e44657364745453542d363437383930": "1209004563918244f40000",
40+
"454c524f4e44657364745453542d333639646531": "1209004563918244f40000",
41+
"454c524f4e44657364745453542d386564363538": "1209004563918244f40000",
42+
"454c524f4e44726f6c6565736474544553542d313432353663": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
43+
"454c524f4e44726f6c6565736474544553542d373733313365": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
44+
"454c524f4e44657364745453542d353538616434": "12020064",
5345
"454c524f4e44657364745453542d633565303835": "1209004563918244f40000",
54-
"454c524f4e44657364745453542d633933336139": "1209004563918244f40000"
46+
"454c524f4e446e6f6e636550544d2d353336666162": "01",
47+
"454c524f4e4465736474494e5445524e532d656161643135": "120b00152d02c7e14af67ffc16",
48+
"454c524f4e4465736474424358535542542d33393264366172": "080112020001",
49+
"454c524f4e44726f6c6565736474544553542d353265376364": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
50+
"454c524f4e44657364745453542d306632306637": "12020064",
51+
"454c524f4e44657364744c5453542d346638343965": "1209000de0b6b3a763f2b9",
52+
"454c524f4e44657364745453542d373639313337": "1209004563918244f40000",
53+
"454c524f4e446573647450544d2d35333666616201": "08021202000122ef0108011212546573742d5061696e742d486172766573741a20e32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed6020c4132a2e516d57564239575362674b52655a64615a434344766b454b70705a6b4d696d397563736e7857565041414c6a4374324368747470733a2f2f697066732e696f2f697066732f516d57564239575362674b52655a64615a434344766b454b70705a6b4d696d397563736e7857565041414c6a43743a3d746167733a3b6d657461646174613a516d52635039346b5872357a5a6a52477669376d4a36756e374c7078556859565234523452706963787a67596b74",
54+
"454c524f4e44657364745453542d363434633935": "12020064",
55+
"454c524f4e44726f6c6565736474544553542d643264333539": "0a1145534454526f6c654e46544372656174650a1545534454526f6c654d6f6469667943726561746f72",
56+
"454c524f4e44657364745453542d633636666535": "1209004563918244f40000",
57+
"454c524f4e44726f6c6565736474544553542d613661316636": "0a1545534454526f6c654d6f6469667943726561746f72",
58+
"454c524f4e44657364745453542d353966316165": "1209004563918244f40000",
59+
"454c524f4e44657364745453542d346634303238": "12020064",
60+
"454c524f4e44657364745453542d613562663131": "12020064",
61+
"454c524f4e44657364745453542d303637373232": "1209004563918244f40000"
5562
},
5663
"code": "",
5764
"code_hash": "",
58-
"root_hash": "bm7koGXVtATCN5jJdsU2nmEx9MQGQ3Szb9Gq/Yb7Di0=",
65+
"root_hash": "sRJ9NofX80V7elbUblyFUeMUuAGRXKZrjMXjZgd6G+I=",
5966
"code_metadata": "",
6067
"owner_address": "",
6168
"developer_reward": "0"
6269
},
6370
{
6471
"address": "erd13x29rvmp4qlgn4emgztd8jgvyzdj0p6vn37tqxas3v9mfhq4dy7shalqrx",
65-
"nonce": 1550,
66-
"balance": "4950745448587014056",
72+
"nonce": 1763,
73+
"balance": "1971212795616943856",
6774
"pairs": {
68-
"454c524f4e446573647445564e544e4f544946592d393634383835": "120b00152d02c7e14af6800000",
69-
"454c524f4e44657364744e4943552d393730323932": "120b00d3c21bcecceda1000000",
70-
"454c524f4e4465736474424358535542542d3339326436616e": "080112020001",
71-
"454c524f4e4465736474494e5445524e532d63393332356601": "0801120b0013097d1fb962e12fff47",
72-
"454c524f4e446573647442534b2d343736343730": "120b00021e19e0c9bab23fff7b",
73-
"454c524f4e44657364744e455453432d623635306261": "120b00d137965aa7a731800000",
74-
"454c524f4e446e6f6e6365494e5445524e532d633933323566": "01",
75-
"454c524f4e44726f6c6565736474494e5445524e532d633933323566": "0a1145534454526f6c654e46544372656174650a1645534454526f6c654e46544164645175616e74697479",
76-
"454c524f4e44657364744e45543253432d306438663962": "120f0004ee2d6d3f3d6bcc25c64dc00000",
7775
"454c524f4e4465736474424358535542542d3339326436616c": "080112020001",
76+
"454c524f4e446573647442534b2d343736343730": "120b00021d045283b19e6fff71",
77+
"454c524f4e4465736474524457474c442d306631643033": "1209003782dace9d8ffc18",
78+
"454c524f4e44657364744e45543253432d306438663962": "120f0004ee2d6d3d706b1705e4dd74d800",
79+
"454c524f4e44726f6c6565736474494e5445524e532d633933323566": "0a1145534454526f6c654e46544372656174650a1645534454526f6c654e46544164645175616e74697479",
80+
"454c524f4e44657364744e455453432d623635306261": "120b00d137965aa7a731800000",
81+
"454c524f4e4465736474524457474c442d663939383964": "120a0001158e460913cffc18",
82+
"454c524f4e4465736474424358535542542d3339326436616e": "080112020001",
83+
"454c524f4e44657364744e4943552d393730323932": "120b00d3c1e44bf21f03700000",
7884
"454c524f4e44657364745745474c442d613238633539": "120800010593b233281b",
7985
"454c524f4e446e6f6e63654d4554414e46542d643062623339": "01",
86+
"454c524f4e4465736474494e5445524e532d63393332356601": "0801120b0013097d1fb962e12fff47",
87+
"454c524f4e446573647445564e544e4f544946592d393634383835": "120b00152d02c7e14af6800000",
88+
"454c524f4e446e6f6e6365494e5445524e532d633933323566": "01",
8089
"454c524f4e44726f6c65657364744d4554414e46542d643062623339": "0a1145534454526f6c654e4654437265617465"
8190
},
8291
"code": "",
8392
"code_hash": "",
84-
"root_hash": "AJ2jyOcPXgZAl0kHAlbWZIlG3F1VDtcoLAHR6eqehBA=",
93+
"root_hash": "abTYqASy/pomqBIye9mmEbmMHWTPnKRd9aM01bs5xHQ=",
8594
"code_metadata": "",
8695
"owner_address": "",
8796
"developer_reward": "0"

contracts/examples/adder/interactor/tests/basic_interactor_cs_test.rs

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,88 @@ async fn set_state_from_file_cs_test() {
121121

122122
println!("mike's storage keys in chain simulator {:#?}", storage);
123123
}
124+
125+
#[tokio::test]
126+
#[serial]
127+
#[cfg_attr(not(feature = "chain-simulator-tests"), ignore)]
128+
async fn set_state_overwrite_cs_test() {
129+
let account_address = test_wallets::mike();
130+
let account_address_2 = test_wallets::ivan();
131+
132+
let mut real_chain_interact = AdderInteract::new(Config::load_config()).await;
133+
let simulator_interact = AdderInteract::new(Config::chain_simulator_config()).await;
134+
135+
// now we should have current mike and ivan accounts in the set state file
136+
real_chain_interact
137+
.interactor
138+
.retrieve_account(&Bech32Address::from(&account_address.to_address()))
139+
.await;
140+
141+
real_chain_interact
142+
.interactor
143+
.retrieve_account(&Bech32Address::from(&account_address_2.to_address()))
144+
.await;
145+
146+
let set_state_response = simulator_interact
147+
.interactor
148+
.set_state_for_saved_accounts()
149+
.await;
150+
151+
simulator_interact
152+
.interactor
153+
.generate_blocks(2u64)
154+
.await
155+
.unwrap();
156+
157+
assert!(set_state_response.is_ok());
158+
159+
let storage = simulator_interact
160+
.interactor
161+
.get_account_storage(&account_address.to_address())
162+
.await;
163+
164+
assert!(storage.len() > 1);
165+
166+
println!("mike's storage keys in chain simulator {:#?}", storage);
167+
168+
// overwrite accounts with empty
169+
let account_1 = SetStateAccount::from_address(
170+
Bech32Address::from(&account_address.to_address()).to_bech32_string(),
171+
);
172+
let account_2 = SetStateAccount::from_address(
173+
Bech32Address::from(&account_address_2.to_address()).to_bech32_string(),
174+
);
175+
176+
let overwrite_vec = vec![account_1, account_2];
177+
178+
simulator_interact
179+
.interactor
180+
.set_state_overwrite(overwrite_vec)
181+
.await
182+
.unwrap();
183+
184+
simulator_interact
185+
.interactor
186+
.generate_blocks(2u64)
187+
.await
188+
.unwrap();
189+
190+
// verify keys
191+
let storage_1 = simulator_interact
192+
.interactor
193+
.get_account_storage(&account_address.to_address())
194+
.await;
195+
196+
assert!(storage_1.is_empty());
197+
198+
println!("mike's storage keys in chain simulator {:#?}", storage_1);
199+
200+
let storage_2 = simulator_interact
201+
.interactor
202+
.get_account_storage(&account_address.to_address())
203+
.await;
204+
205+
assert!(storage_2.is_empty());
206+
207+
println!("ivan's storage keys in chain simulator {:#?}", storage_2);
208+
}

sdk/core/src/gateway.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const GENERATE_BLOCKS_UNTIL_TX_PROCESSED_ENDPOINT: &str =
6666
const GENERATE_BLOCKS_UNTIL_EPOCH_REACHED_ENDPOINT: &str =
6767
"simulator/generate-blocks-until-epoch-reached";
6868
const SET_STATE_ENDPOINT: &str = "simulator/set-state";
69-
const SET_STATE_OVERWRITE_ENDPOINT: &str = "/simulator/set-state-overwrite";
69+
const SET_STATE_OVERWRITE_ENDPOINT: &str = "simulator/set-state-overwrite";
7070

7171
pub enum GatewayRequestType {
7272
Get,

sdk/core/src/gateway/gateway_chain_simulator_set_state.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ impl SetStateAccount {
6161
self
6262
}
6363

64+
/// Creates a SetStateAccount from an address
65+
pub fn from_address(address: String) -> Self {
66+
Self {
67+
address,
68+
..Default::default()
69+
}
70+
}
71+
6472
/// Kept for backwards compatibility.
6573
#[deprecated(since = "0.56.0", note = "Use `with_storage` instead.")]
6674
pub fn with_keys(self, keys: HashMap<String, String>) -> Self {

0 commit comments

Comments
 (0)