Skip to content

Commit e8f0f46

Browse files
committed
remove validators wrapper
1 parent 5a5c0cf commit e8f0f46

2 files changed

Lines changed: 94 additions & 639 deletions

File tree

multiversx_sdk_cli/cli_validators.py

Lines changed: 94 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
from pathlib import Path
22
from typing import Any
33

4-
from multiversx_sdk import Address, ValidatorPublicKey, ValidatorsSigners
4+
from multiversx_sdk import (
5+
Address,
6+
Transaction,
7+
ValidatorPublicKey,
8+
ValidatorsController,
9+
ValidatorsSigners,
10+
)
511

612
from multiversx_sdk_cli import cli_shared, utils
713
from multiversx_sdk_cli.args_validation import (
@@ -10,7 +16,9 @@
1016
validate_nonce_args,
1117
validate_receiver_args,
1218
)
13-
from multiversx_sdk_cli.validators import ValidatorsController
19+
from multiversx_sdk_cli.guardian_relayer_data import GuardianRelayerData
20+
from multiversx_sdk_cli.interfaces import IAccount
21+
from multiversx_sdk_cli.signing_wrapper import SigningWrapper
1422

1523

1624
def setup_parser(args: list[str], subparsers: Any) -> Any:
@@ -151,8 +159,18 @@ def validate_args(args: Any) -> None:
151159
validate_chain_id_args(args)
152160

153161

162+
def _sign_transaction(transaction: Transaction, sender: IAccount, guardian_and_relayer_data: GuardianRelayerData):
163+
signer = SigningWrapper()
164+
signer.sign_transaction(
165+
transaction=transaction,
166+
sender=sender,
167+
guardian_and_relayer=guardian_and_relayer_data,
168+
)
169+
170+
154171
def do_stake(args: Any):
155172
validate_args(args)
173+
156174
sender = cli_shared.prepare_sender(args)
157175
guardian_and_relayer_data = cli_shared.get_guardian_and_relayer_data(
158176
sender=sender.address.to_bech32(),
@@ -167,37 +185,35 @@ def do_stake(args: Any):
167185
if args.top_up:
168186
tx = controller.create_transaction_for_topping_up(
169187
sender=sender,
170-
native_amount=native_amount,
188+
nonce=sender.nonce,
189+
amount=native_amount,
190+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
191+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
171192
gas_limit=args.gas_limit,
172193
gas_price=args.gas_price,
173-
nonce=sender.nonce,
174-
version=args.version,
175-
options=args.options,
176-
guardian_and_relayer_data=guardian_and_relayer_data,
177194
)
178195
else:
179196
validators_signers = _load_validators_signers(args.validators_pem)
180197
tx = controller.create_transaction_for_staking(
181198
sender=sender,
182-
validators=validators_signers,
183-
native_amount=native_amount,
184-
gas_limit=args.gas_limit,
185-
gas_price=args.gas_price,
186199
nonce=sender.nonce,
187-
version=args.version,
188-
options=args.options,
200+
validators_file=validators_signers,
201+
amount=native_amount,
189202
rewards_address=rewards_address,
190-
guardian_and_relayer_data=guardian_and_relayer_data,
203+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
204+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
205+
gas_limit=args.gas_limit,
206+
gas_price=args.gas_price,
191207
)
192208

209+
_sign_transaction(tx, sender, guardian_and_relayer_data)
193210
cli_shared.send_or_simulate(tx, args)
194211

195212

196-
def _get_validators_controller(args: Any):
213+
def _get_validators_controller(args: Any) -> ValidatorsController:
197214
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
198215
gas_estimator = cli_shared.initialize_gas_limit_estimator(args)
199-
validators = ValidatorsController(chain_id=chain_id, gas_limit_estimator=gas_estimator)
200-
return validators
216+
return ValidatorsController(chain_id=chain_id, gas_limit_estimator=gas_estimator)
201217

202218

203219
def _load_validators_signers(validators_pem: str) -> ValidatorsSigners:
@@ -224,22 +240,20 @@ def do_unstake(args: Any):
224240
args=args,
225241
)
226242

227-
native_amount = int(args.value)
228243
keys = _parse_public_bls_keys(args.nodes_public_keys)
229-
230244
controller = _get_validators_controller(args)
245+
231246
tx = controller.create_transaction_for_unstaking(
232247
sender=sender,
233-
keys=keys,
234-
native_amount=native_amount,
248+
nonce=sender.nonce,
249+
public_keys=keys,
250+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
251+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
235252
gas_limit=args.gas_limit,
236253
gas_price=args.gas_price,
237-
nonce=sender.nonce,
238-
version=args.version,
239-
options=args.options,
240-
guardian_and_relayer_data=guardian_and_relayer_data,
241254
)
242255

256+
_sign_transaction(tx, sender, guardian_and_relayer_data)
243257
cli_shared.send_or_simulate(tx, args)
244258

245259

@@ -258,16 +272,16 @@ def do_unjail(args: Any):
258272
controller = _get_validators_controller(args)
259273
tx = controller.create_transaction_for_unjailing(
260274
sender=sender,
261-
keys=keys,
262-
native_amount=native_amount,
275+
nonce=sender.nonce,
276+
public_keys=keys,
277+
amount=native_amount,
278+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
279+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
263280
gas_limit=args.gas_limit,
264281
gas_price=args.gas_price,
265-
nonce=sender.nonce,
266-
version=args.version,
267-
options=args.options,
268-
guardian_and_relayer_data=guardian_and_relayer_data,
269282
)
270283

284+
_sign_transaction(tx, sender, guardian_and_relayer_data)
271285
cli_shared.send_or_simulate(tx, args)
272286

273287

@@ -280,22 +294,20 @@ def do_unbond(args: Any):
280294
args=args,
281295
)
282296

283-
native_amount = int(args.value)
284297
keys = _parse_public_bls_keys(args.nodes_public_keys)
285-
286298
controller = _get_validators_controller(args)
299+
287300
tx = controller.create_transaction_for_unbonding(
288301
sender=sender,
289-
keys=keys,
290-
native_amount=native_amount,
302+
nonce=sender.nonce,
303+
public_keys=keys,
304+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
305+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
291306
gas_limit=args.gas_limit,
292307
gas_price=args.gas_price,
293-
nonce=sender.nonce,
294-
version=args.version,
295-
options=args.options,
296-
guardian_and_relayer_data=guardian_and_relayer_data,
297308
)
298309

310+
_sign_transaction(tx, sender, guardian_and_relayer_data)
299311
cli_shared.send_or_simulate(tx, args)
300312

301313

@@ -308,22 +320,20 @@ def change_reward_address(args: Any):
308320
args=args,
309321
)
310322

311-
native_amount = int(args.value)
312323
rewards_address = Address.new_from_bech32(args.reward_address)
313-
314324
controller = _get_validators_controller(args)
325+
315326
tx = controller.create_transaction_for_changing_rewards_address(
316327
sender=sender,
328+
nonce=sender.nonce,
317329
rewards_address=rewards_address,
318-
native_amount=native_amount,
330+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
331+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
319332
gas_limit=args.gas_limit,
320333
gas_price=args.gas_price,
321-
nonce=sender.nonce,
322-
version=args.version,
323-
options=args.options,
324-
guardian_and_relayer_data=guardian_and_relayer_data,
325334
)
326335

336+
_sign_transaction(tx, sender, guardian_and_relayer_data)
327337
cli_shared.send_or_simulate(tx, args)
328338

329339

@@ -336,20 +346,17 @@ def do_claim(args: Any):
336346
args=args,
337347
)
338348

339-
native_amount = int(args.value)
340-
341349
controller = _get_validators_controller(args)
342350
tx = controller.create_transaction_for_claiming(
343351
sender=sender,
344-
native_amount=native_amount,
352+
nonce=sender.nonce,
353+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
354+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
345355
gas_limit=args.gas_limit,
346356
gas_price=args.gas_price,
347-
nonce=sender.nonce,
348-
version=args.version,
349-
options=args.options,
350-
guardian_and_relayer_data=guardian_and_relayer_data,
351357
)
352358

359+
_sign_transaction(tx, sender, guardian_and_relayer_data)
353360
cli_shared.send_or_simulate(tx, args)
354361

355362

@@ -362,22 +369,20 @@ def do_unstake_nodes(args: Any):
362369
args=args,
363370
)
364371

365-
native_amount = int(args.value)
366372
keys = _parse_public_bls_keys(args.nodes_public_keys)
367-
368373
controller = _get_validators_controller(args)
374+
369375
tx = controller.create_transaction_for_unstaking_nodes(
370376
sender=sender,
371-
keys=keys,
372-
native_amount=native_amount,
377+
nonce=sender.nonce,
378+
public_keys=keys,
379+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
380+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
373381
gas_limit=args.gas_limit,
374382
gas_price=args.gas_price,
375-
nonce=sender.nonce,
376-
version=args.version,
377-
options=args.options,
378-
guardian_and_relayer_data=guardian_and_relayer_data,
379383
)
380384

385+
_sign_transaction(tx, sender, guardian_and_relayer_data)
381386
cli_shared.send_or_simulate(tx, args)
382387

383388

@@ -390,22 +395,20 @@ def do_unstake_tokens(args: Any):
390395
args=args,
391396
)
392397

393-
native_amount = int(args.value)
394398
value = int(args.unstake_value)
395-
396399
controller = _get_validators_controller(args)
400+
397401
tx = controller.create_transaction_for_unstaking_tokens(
398402
sender=sender,
399-
value=value,
400-
native_amount=native_amount,
403+
nonce=sender.nonce,
404+
amount=value,
405+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
406+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
401407
gas_limit=args.gas_limit,
402408
gas_price=args.gas_price,
403-
nonce=sender.nonce,
404-
version=args.version,
405-
options=args.options,
406-
guardian_and_relayer_data=guardian_and_relayer_data,
407409
)
408410

411+
_sign_transaction(tx, sender, guardian_and_relayer_data)
409412
cli_shared.send_or_simulate(tx, args)
410413

411414

@@ -418,22 +421,20 @@ def do_unbond_nodes(args: Any):
418421
args=args,
419422
)
420423

421-
native_amount = int(args.value)
422424
keys = _parse_public_bls_keys(args.nodes_public_keys)
423-
424425
controller = _get_validators_controller(args)
426+
425427
tx = controller.create_transaction_for_unbonding_nodes(
426428
sender=sender,
427-
keys=keys,
428-
native_amount=native_amount,
429+
nonce=sender.nonce,
430+
public_keys=keys,
431+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
432+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
429433
gas_limit=args.gas_limit,
430434
gas_price=args.gas_price,
431-
nonce=sender.nonce,
432-
version=args.version,
433-
options=args.options,
434-
guardian_and_relayer_data=guardian_and_relayer_data,
435435
)
436436

437+
_sign_transaction(tx, sender, guardian_and_relayer_data)
437438
cli_shared.send_or_simulate(tx, args)
438439

439440

@@ -446,22 +447,20 @@ def do_unbond_tokens(args: Any):
446447
args=args,
447448
)
448449

449-
native_amount = int(args.value)
450450
value = int(args.unbond_value)
451-
452451
controller = _get_validators_controller(args)
452+
453453
tx = controller.create_transaction_for_unbonding_tokens(
454454
sender=sender,
455-
value=value,
456-
native_amount=native_amount,
455+
nonce=sender.nonce,
456+
amount=value,
457+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
458+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
457459
gas_limit=args.gas_limit,
458460
gas_price=args.gas_price,
459-
nonce=sender.nonce,
460-
version=args.version,
461-
options=args.options,
462-
guardian_and_relayer_data=guardian_and_relayer_data,
463461
)
464462

463+
_sign_transaction(tx, sender, guardian_and_relayer_data)
465464
cli_shared.send_or_simulate(tx, args)
466465

467466

@@ -474,20 +473,17 @@ def do_clean_registered_data(args: Any):
474473
args=args,
475474
)
476475

477-
native_amount = int(args.value)
478-
479476
controller = _get_validators_controller(args)
480477
tx = controller.create_transaction_for_cleaning_registered_data(
481478
sender=sender,
482-
native_amount=native_amount,
479+
nonce=sender.nonce,
480+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
481+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
483482
gas_limit=args.gas_limit,
484483
gas_price=args.gas_price,
485-
nonce=sender.nonce,
486-
version=args.version,
487-
options=args.options,
488-
guardian_and_relayer_data=guardian_and_relayer_data,
489484
)
490485

486+
_sign_transaction(tx, sender, guardian_and_relayer_data)
491487
cli_shared.send_or_simulate(tx, args)
492488

493489

@@ -500,20 +496,18 @@ def do_restake_unstaked_nodes(args: Any):
500496
args=args,
501497
)
502498

503-
native_amount = int(args.value)
504499
keys = _parse_public_bls_keys(args.nodes_public_keys)
505-
506500
controller = _get_validators_controller(args)
501+
507502
tx = controller.create_transaction_for_restaking_unstaked_nodes(
508503
sender=sender,
509-
keys=keys,
510-
native_amount=native_amount,
504+
nonce=sender.nonce,
505+
public_keys=keys,
506+
guardian=guardian_and_relayer_data.guardian_address if guardian_and_relayer_data.guardian_address else None,
507+
relayer=guardian_and_relayer_data.relayer_address if guardian_and_relayer_data.relayer_address else None,
511508
gas_limit=args.gas_limit,
512509
gas_price=args.gas_price,
513-
nonce=sender.nonce,
514-
version=args.version,
515-
options=args.options,
516-
guardian_and_relayer_data=guardian_and_relayer_data,
517510
)
518511

512+
_sign_transaction(tx, sender, guardian_and_relayer_data)
519513
cli_shared.send_or_simulate(tx, args)

0 commit comments

Comments
 (0)