Skip to content

Commit 09157d4

Browse files
authored
Merge pull request #544 from multiversx/governance-refactoring
Refactoring: Remove governance wrapper
2 parents 85d7440 + 4e27533 commit 09157d4

4 files changed

Lines changed: 96 additions & 339 deletions

File tree

multiversx_sdk_cli/cli_contracts.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@ def deploy(args: Any):
367367
is_readable=args.metadata_readable,
368368
is_payable=args.metadata_payable,
369369
is_payable_by_sc=args.metadata_payable_by_sc,
370-
guardian=guardian_and_relayer_data.guardian.address if guardian_and_relayer_data.guardian else None,
371-
relayer=guardian_and_relayer_data.relayer.address if guardian_and_relayer_data.relayer else None,
370+
guardian=guardian_and_relayer_data.guardian_address,
371+
relayer=guardian_and_relayer_data.relayer_address,
372372
gas_limit=args.gas_limit,
373373
gas_price=args.gas_price,
374374
)
@@ -428,8 +428,8 @@ def call(args: Any):
428428
arguments=arguments,
429429
native_transfer_amount=int(args.value),
430430
token_transfers=token_transfers,
431-
guardian=guardian_and_relayer_data.guardian.address if guardian_and_relayer_data.guardian else None,
432-
relayer=guardian_and_relayer_data.relayer.address if guardian_and_relayer_data.relayer else None,
431+
guardian=guardian_and_relayer_data.guardian_address,
432+
relayer=guardian_and_relayer_data.relayer_address,
433433
gas_limit=args.gas_limit,
434434
gas_price=args.gas_price,
435435
)
@@ -476,8 +476,8 @@ def upgrade(args: Any):
476476
is_readable=args.metadata_readable,
477477
is_payable=args.metadata_payable,
478478
is_payable_by_sc=args.metadata_payable_by_sc,
479-
guardian=guardian_and_relayer_data.guardian.address if guardian_and_relayer_data.guardian else None,
480-
relayer=guardian_and_relayer_data.relayer.address if guardian_and_relayer_data.relayer else None,
479+
guardian=guardian_and_relayer_data.guardian_address,
480+
relayer=guardian_and_relayer_data.relayer_address,
481481
gas_limit=args.gas_limit,
482482
gas_price=args.gas_price,
483483
)

multiversx_sdk_cli/cli_governance.py

Lines changed: 80 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
GovernanceController,
88
ProposalInfo,
99
ProxyNetworkProvider,
10-
TransactionsFactoryConfig,
10+
VoteType,
1111
)
1212

1313
from multiversx_sdk_cli import cli_shared, utils
@@ -18,7 +18,7 @@
1818
)
1919
from multiversx_sdk_cli.cli_output import CLIOutputBuilder
2020
from 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

2424
def 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+
199215
def 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

363400
def 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):
377410
def 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):
389419
def 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):
401428
def 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)

multiversx_sdk_cli/cli_shared.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -870,30 +870,32 @@ def alter_transaction_and_sign_again_if_needed(
870870

871871
altered = _alter_version_and_options_if_provided(
872872
args=args,
873-
final_transaction=tx,
873+
transaction=tx,
874874
)
875875

876-
if altered: # sign only if something was altered
876+
if altered:
877+
# sign only if something was altered
877878
_sign_transaction(tx, sender, guardian_and_relayer_data)
878879
else:
879-
_sign_transaction(tx, None, guardian_and_relayer_data) # sign only with guardian/relayer if needed
880+
# sign only with guardian/relayer if needed
881+
_sign_transaction(tx, None, guardian_and_relayer_data)
880882

881883

882884
def _alter_version_and_options_if_provided(
883885
args: Any,
884-
final_transaction: Transaction,
886+
transaction: Transaction,
885887
) -> bool:
886888
"""Alters the transaction version and options if they are provided in args.
887889
Returns True if any alteration was made, False otherwise.
888890
"""
889891
altered = False
890892

891-
if args.version != DEFAULT_TX_VERSION and final_transaction.version != args.version:
892-
final_transaction.version = args.version
893+
if args.version != DEFAULT_TX_VERSION and transaction.version != args.version:
894+
transaction.version = args.version
893895
altered = True
894896

895-
if args.options and final_transaction.options != args.options:
896-
final_transaction.options = args.options
897+
if args.options and transaction.options != args.options:
898+
transaction.options = args.options
897899
altered = True
898900

899901
return altered

0 commit comments

Comments
 (0)