3030from multiversx_sdk_cli .constants import NUMBER_OF_SHARDS
3131from multiversx_sdk_cli .contract_verification import trigger_contract_verification
3232from multiversx_sdk_cli .docker import is_docker_installed , run_docker
33- from multiversx_sdk_cli .errors import DockerMissingError , QueryContractError
34- from multiversx_sdk_cli .guardian_relayer_data import GuardianRelayerData
35- from multiversx_sdk_cli .signing_wrapper import SigningWrapper
33+ from multiversx_sdk_cli .errors import BadUsage , DockerMissingError , QueryContractError
3634from multiversx_sdk_cli .ux import show_warning
3735
3836logger = logging .getLogger ("cli.contracts" )
@@ -334,13 +332,9 @@ def _initialize_controller(args: Any) -> SmartContractController:
334332 )
335333
336334
337- def _sign_transaction (transaction : Transaction , sender : Any , guardian_and_relayer_data : GuardianRelayerData ):
338- signer = SigningWrapper ()
339- signer .sign_transaction (
340- transaction = transaction ,
341- sender = sender ,
342- guardian_and_relayer = guardian_and_relayer_data ,
343- )
335+ def _ensure_args_for_gas_estimation (args : Any ):
336+ if not args .proxy and not args .gas_limit :
337+ raise BadUsage ("To estimate the gas limit, you need to provide `--proxy` or set a value using `--gas-limit`" )
344338
345339
346340def deploy (args : Any ):
@@ -350,6 +344,8 @@ def deploy(args: Any):
350344 validate_broadcast_args (args )
351345 validate_chain_id_args (args )
352346
347+ _ensure_args_for_gas_estimation (args )
348+
353349 sender = cli_shared .prepare_sender (args )
354350 guardian_and_relayer_data = cli_shared .get_guardian_and_relayer_data (
355351 sender = sender .address .to_bech32 (),
@@ -371,8 +367,8 @@ def deploy(args: Any):
371367 is_readable = args .metadata_readable ,
372368 is_payable = args .metadata_payable ,
373369 is_payable_by_sc = args .metadata_payable_by_sc ,
374- guardian = guardian_and_relayer_data .guardian . address if guardian_and_relayer_data . guardian else None ,
375- 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 ,
376372 gas_limit = args .gas_limit ,
377373 gas_price = args .gas_price ,
378374 )
@@ -384,12 +380,17 @@ def deploy(args: Any):
384380
385381 cli_config = MxpyEnv .from_active_env ()
386382 utils .log_explorer_contract_address (
387- chain = controller . factory . config . chain_id ,
383+ chain = cli_shared . get_chain_id ( args . proxy , args . chain ) ,
388384 address = contract_address .to_bech32 (),
389385 explorer_url = cli_config .explorer_url ,
390386 )
391387
392- _sign_transaction (tx , sender , guardian_and_relayer_data )
388+ cli_shared .alter_transaction_and_sign_again_if_needed (
389+ args = args ,
390+ tx = tx ,
391+ sender = sender ,
392+ guardian_and_relayer_data = guardian_and_relayer_data ,
393+ )
393394 _send_or_simulate (tx , contract_address , args )
394395
395396
@@ -400,6 +401,8 @@ def call(args: Any):
400401 validate_broadcast_args (args )
401402 validate_chain_id_args (args )
402403
404+ _ensure_args_for_gas_estimation (args )
405+
403406 sender = cli_shared .prepare_sender (args )
404407 guardian_and_relayer_data = cli_shared .get_guardian_and_relayer_data (
405408 sender = sender .address .to_bech32 (),
@@ -425,13 +428,18 @@ def call(args: Any):
425428 arguments = arguments ,
426429 native_transfer_amount = int (args .value ),
427430 token_transfers = token_transfers ,
428- guardian = guardian_and_relayer_data .guardian . address if guardian_and_relayer_data . guardian else None ,
429- 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 ,
430433 gas_limit = args .gas_limit ,
431434 gas_price = args .gas_price ,
432435 )
433436
434- _sign_transaction (tx , sender , guardian_and_relayer_data )
437+ cli_shared .alter_transaction_and_sign_again_if_needed (
438+ args = args ,
439+ tx = tx ,
440+ sender = sender ,
441+ guardian_and_relayer_data = guardian_and_relayer_data ,
442+ )
435443 _send_or_simulate (tx , contract_address , args )
436444
437445
@@ -442,6 +450,8 @@ def upgrade(args: Any):
442450 validate_broadcast_args (args )
443451 validate_chain_id_args (args )
444452
453+ _ensure_args_for_gas_estimation (args )
454+
445455 sender = cli_shared .prepare_sender (args )
446456 guardian_and_relayer_data = cli_shared .get_guardian_and_relayer_data (
447457 sender = sender .address .to_bech32 (),
@@ -466,13 +476,18 @@ def upgrade(args: Any):
466476 is_readable = args .metadata_readable ,
467477 is_payable = args .metadata_payable ,
468478 is_payable_by_sc = args .metadata_payable_by_sc ,
469- guardian = guardian_and_relayer_data .guardian . address if guardian_and_relayer_data . guardian else None ,
470- 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 ,
471481 gas_limit = args .gas_limit ,
472482 gas_price = args .gas_price ,
473483 )
474484
475- _sign_transaction (tx , sender , guardian_and_relayer_data )
485+ cli_shared .alter_transaction_and_sign_again_if_needed (
486+ args = args ,
487+ tx = tx ,
488+ sender = sender ,
489+ guardian_and_relayer_data = guardian_and_relayer_data ,
490+ )
476491 _send_or_simulate (tx , contract_address , args )
477492
478493
0 commit comments