77 GovernanceController ,
88 ProposalInfo ,
99 ProxyNetworkProvider ,
10- TransactionsFactoryConfig ,
10+ VoteType ,
1111)
1212
1313from multiversx_sdk_cli import cli_shared , utils
1818)
1919from multiversx_sdk_cli .cli_output import CLIOutputBuilder
2020from multiversx_sdk_cli .config import get_config_for_network_providers
21- from multiversx_sdk_cli .governance import GovernanceWrapper
21+ from multiversx_sdk_cli .config_env import get_address_hrp
2222
2323
2424def setup_parser (args : list [str ], subparsers : Any ) -> Any :
@@ -196,6 +196,22 @@ def _ensure_args(args: Any):
196196 validate_chain_id_args (args )
197197
198198
199+ def _initialize_controller (args : Any ) -> GovernanceController :
200+ chain = args .chain if hasattr (args , "chain" ) else None
201+ chain_id = cli_shared .get_chain_id (args .proxy , chain )
202+ config = get_config_for_network_providers ()
203+ proxy_url = args .proxy if args .proxy else ""
204+ proxy = ProxyNetworkProvider (url = proxy_url , config = config )
205+ gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
206+
207+ return GovernanceController (
208+ chain_id = chain_id ,
209+ network_provider = proxy ,
210+ address_hrp = get_address_hrp (),
211+ gas_limit_estimator = gas_estimator ,
212+ )
213+
214+
199215def create_proposal (args : Any ):
200216 _ensure_args (args )
201217
@@ -204,24 +220,27 @@ def create_proposal(args: Any):
204220 sender = sender .address .to_bech32 (),
205221 args = args ,
206222 )
207- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
208- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
209- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
210223
224+ controller = _initialize_controller (args )
211225 transaction = controller .create_transaction_for_new_proposal (
212226 sender = sender ,
213227 nonce = sender .nonce ,
214228 commit_hash = args .commit_hash ,
215229 start_vote_epoch = args .start_vote_epoch ,
216230 end_vote_epoch = args .end_vote_epoch ,
217231 native_token_amount = args .value ,
232+ guardian = guardian_and_relayer_data .guardian_address ,
233+ relayer = guardian_and_relayer_data .relayer_address ,
218234 gas_limit = args .gas_limit ,
219235 gas_price = args .gas_price ,
220- version = args .version ,
221- options = args .options ,
222- guardian_and_relayer_data = guardian_and_relayer_data ,
223236 )
224237
238+ cli_shared .alter_transaction_and_sign_again_if_needed (
239+ args = args ,
240+ tx = transaction ,
241+ sender = sender ,
242+ guardian_and_relayer_data = guardian_and_relayer_data ,
243+ )
225244 cli_shared .send_or_simulate (transaction , args )
226245
227246
@@ -233,22 +252,27 @@ def vote(args: Any):
233252 sender = sender .address .to_bech32 (),
234253 args = args ,
235254 )
236- chain_id = cli_shared . get_chain_id ( args . proxy , args . chain )
237- gas_estimator = cli_shared . initialize_gas_limit_estimator ( args )
238- controller = GovernanceWrapper ( config = TransactionsFactoryConfig ( chain_id ), gas_limit_estimator = gas_estimator )
255+
256+ [ vote_value ] = [ v for v in VoteType if v . value == args . vote ]
257+ controller = _initialize_controller ( args )
239258
240259 transaction = controller .create_transaction_for_voting (
241260 sender = sender ,
242261 nonce = sender .nonce ,
243262 proposal_nonce = args .proposal_nonce ,
244- vote = args .vote ,
263+ vote = vote_value ,
264+ guardian = guardian_and_relayer_data .guardian_address ,
265+ relayer = guardian_and_relayer_data .relayer_address ,
245266 gas_limit = args .gas_limit ,
246267 gas_price = args .gas_price ,
247- version = args .version ,
248- options = args .options ,
249- guardian_and_relayer_data = guardian_and_relayer_data ,
250268 )
251269
270+ cli_shared .alter_transaction_and_sign_again_if_needed (
271+ args = args ,
272+ tx = transaction ,
273+ sender = sender ,
274+ guardian_and_relayer_data = guardian_and_relayer_data ,
275+ )
252276 cli_shared .send_or_simulate (transaction , args )
253277
254278
@@ -260,21 +284,24 @@ def close_proposal(args: Any):
260284 sender = sender .address .to_bech32 (),
261285 args = args ,
262286 )
263- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
264- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
265- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
266287
288+ controller = _initialize_controller (args )
267289 transaction = controller .create_transaction_for_closing_proposal (
268290 sender = sender ,
269291 nonce = sender .nonce ,
270292 proposal_nonce = args .proposal_nonce ,
293+ guardian = guardian_and_relayer_data .guardian_address ,
294+ relayer = guardian_and_relayer_data .relayer_address ,
271295 gas_limit = args .gas_limit ,
272296 gas_price = args .gas_price ,
273- version = args .version ,
274- options = args .options ,
275- guardian_and_relayer_data = guardian_and_relayer_data ,
276297 )
277298
299+ cli_shared .alter_transaction_and_sign_again_if_needed (
300+ args = args ,
301+ tx = transaction ,
302+ sender = sender ,
303+ guardian_and_relayer_data = guardian_and_relayer_data ,
304+ )
278305 cli_shared .send_or_simulate (transaction , args )
279306
280307
@@ -286,22 +313,26 @@ def clear_ended_proposals(args: Any):
286313 sender = sender .address .to_bech32 (),
287314 args = args ,
288315 )
289- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
290- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
291- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
292316
293317 proposers = [Address .new_from_bech32 (proposer ) for proposer in args .proposers ]
318+ controller = _initialize_controller (args )
319+
294320 transaction = controller .create_transaction_for_clearing_ended_proposals (
295321 sender = sender ,
296322 nonce = sender .nonce ,
297323 proposers = proposers ,
324+ guardian = guardian_and_relayer_data .guardian_address ,
325+ relayer = guardian_and_relayer_data .relayer_address ,
298326 gas_limit = args .gas_limit ,
299327 gas_price = args .gas_price ,
300- version = args .version ,
301- options = args .options ,
302- guardian_and_relayer_data = guardian_and_relayer_data ,
303328 )
304329
330+ cli_shared .alter_transaction_and_sign_again_if_needed (
331+ args = args ,
332+ tx = transaction ,
333+ sender = sender ,
334+ guardian_and_relayer_data = guardian_and_relayer_data ,
335+ )
305336 cli_shared .send_or_simulate (transaction , args )
306337
307338
@@ -313,20 +344,23 @@ def claim_accumulated_fees(args: Any):
313344 sender = sender .address .to_bech32 (),
314345 args = args ,
315346 )
316- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
317- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
318- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
319347
348+ controller = _initialize_controller (args )
320349 transaction = controller .create_transaction_for_claiming_accumulated_fees (
321350 sender = sender ,
322351 nonce = sender .nonce ,
352+ guardian = guardian_and_relayer_data .guardian_address ,
353+ relayer = guardian_and_relayer_data .relayer_address ,
323354 gas_limit = args .gas_limit ,
324355 gas_price = args .gas_price ,
325- version = args .version ,
326- options = args .options ,
327- guardian_and_relayer_data = guardian_and_relayer_data ,
328356 )
329357
358+ cli_shared .alter_transaction_and_sign_again_if_needed (
359+ args = args ,
360+ tx = transaction ,
361+ sender = sender ,
362+ guardian_and_relayer_data = guardian_and_relayer_data ,
363+ )
330364 cli_shared .send_or_simulate (transaction , args )
331365
332366
@@ -338,10 +372,8 @@ def change_config(args: Any):
338372 sender = sender .address .to_bech32 (),
339373 args = args ,
340374 )
341- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
342- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
343- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
344375
376+ controller = _initialize_controller (args )
345377 transaction = controller .create_transaction_for_changing_config (
346378 sender = sender ,
347379 nonce = sender .nonce ,
@@ -350,24 +382,25 @@ def change_config(args: Any):
350382 min_quorum = args .min_quorum ,
351383 min_veto_threshold = args .min_veto_threshold ,
352384 min_pass_threshold = args .min_pass_threshold ,
385+ guardian = guardian_and_relayer_data .guardian_address ,
386+ relayer = guardian_and_relayer_data .relayer_address ,
353387 gas_limit = args .gas_limit ,
354388 gas_price = args .gas_price ,
355- version = args .version ,
356- options = args .options ,
357- guardian_and_relayer_data = guardian_and_relayer_data ,
358389 )
359390
391+ cli_shared .alter_transaction_and_sign_again_if_needed (
392+ args = args ,
393+ tx = transaction ,
394+ sender = sender ,
395+ guardian_and_relayer_data = guardian_and_relayer_data ,
396+ )
360397 cli_shared .send_or_simulate (transaction , args )
361398
362399
363400def get_voting_power (args : Any ):
364401 validate_proxy_argument (args )
365402
366- config = get_config_for_network_providers ()
367- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
368- chain_id = proxy .get_network_config ().chain_id
369- controller = GovernanceController (chain_id , proxy )
370-
403+ controller = _initialize_controller (args )
371404 user = Address .new_from_bech32 (args .user )
372405
373406 voting_power = controller .get_voting_power (user )
@@ -377,10 +410,7 @@ def get_voting_power(args: Any):
377410def get_config (args : Any ):
378411 validate_proxy_argument (args )
379412
380- config = get_config_for_network_providers ()
381- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
382- chain_id = proxy .get_network_config ().chain_id
383- controller = GovernanceController (chain_id , proxy )
413+ controller = _initialize_controller (args )
384414
385415 contract_config = controller .get_config ()
386416 utils .dump_out_json (_config_to_dict (contract_config ))
@@ -389,10 +419,7 @@ def get_config(args: Any):
389419def get_proposal (args : Any ):
390420 validate_proxy_argument (args )
391421
392- config = get_config_for_network_providers ()
393- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
394- chain_id = proxy .get_network_config ().chain_id
395- controller = GovernanceController (chain_id , proxy )
422+ controller = _initialize_controller (args )
396423
397424 info = controller .get_proposal (args .proposal_nonce )
398425 utils .dump_out_json (_proposal_to_dict (info ))
@@ -401,10 +428,7 @@ def get_proposal(args: Any):
401428def get_delegated_vote_info (args : Any ):
402429 validate_proxy_argument (args )
403430
404- config = get_config_for_network_providers ()
405- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
406- chain_id = proxy .get_network_config ().chain_id
407- controller = GovernanceController (chain_id , proxy )
431+ controller = _initialize_controller (args )
408432
409433 contract = Address .new_from_bech32 (args .contract )
410434 user = Address .new_from_bech32 (args .user )
0 commit comments