multiversx-sdk-cli 11.4.1__tar.gz → 12.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/PKG-INFO +4 -4
  2. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_contracts.py +1 -0
  3. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_dns.py +1 -1
  4. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_get.py +1 -1
  5. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_shared.py +7 -0
  6. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_transactions.py +3 -0
  7. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/contract_verification.py +2 -0
  8. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cosign_transaction.py +4 -10
  9. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/node_config_toml.py +38 -2
  10. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_config.py +1 -1
  11. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/pyproject.toml +3 -3
  12. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/.gitignore +0 -0
  13. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/LICENSE +0 -0
  14. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/README.md +0 -0
  15. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/__init__.py +0 -0
  16. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/args_converter.py +0 -0
  17. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/args_validation.py +0 -0
  18. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli.py +0 -0
  19. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_config.py +0 -0
  20. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_config_env.py +0 -0
  21. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_config_wallet.py +0 -0
  22. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_data.py +0 -0
  23. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_delegation.py +0 -0
  24. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_deps.py +0 -0
  25. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_faucet.py +0 -0
  26. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_governance.py +0 -0
  27. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_ledger.py +0 -0
  28. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_localnet.py +0 -0
  29. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_multisig.py +0 -0
  30. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_output.py +0 -0
  31. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_password.py +0 -0
  32. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_tokens.py +0 -0
  33. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_validator_wallet.py +0 -0
  34. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_validators.py +0 -0
  35. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/cli_wallet.py +0 -0
  36. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/config.py +0 -0
  37. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/config_env.py +0 -0
  38. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/config_wallet.py +0 -0
  39. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/constants.py +0 -0
  40. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/dependencies/__init__.py +0 -0
  41. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/dependencies/install.py +0 -0
  42. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/dependencies/modules.py +0 -0
  43. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/dependencies/resolution.py +0 -0
  44. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/dns.py +0 -0
  45. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/docker.py +0 -0
  46. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/downloader.py +0 -0
  47. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/errors.py +0 -0
  48. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/guardian_relayer_data.py +0 -0
  49. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/guards.py +0 -0
  50. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/interfaces.py +0 -0
  51. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/__init__.py +0 -0
  52. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_default.py +0 -0
  53. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_general.py +0 -0
  54. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_networking.py +0 -0
  55. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_part.py +0 -0
  56. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_root.py +0 -0
  57. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_sharding.py +0 -0
  58. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/config_software.py +0 -0
  59. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/constants.py +0 -0
  60. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/genesis.py +0 -0
  61. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/genesis_json.py +0 -0
  62. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/genesis_smart_contracts_json.py +0 -0
  63. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/libraries.py +0 -0
  64. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/node.py +0 -0
  65. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/nodes_setup_json.py +0 -0
  66. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/p2p_toml.py +0 -0
  67. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/seednode_p2pKey.pem +0 -0
  68. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_build_software.py +0 -0
  69. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_clean.py +0 -0
  70. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_new.py +0 -0
  71. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_prerequisites.py +0 -0
  72. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/step_start.py +0 -0
  73. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/localnet/wallets.py +0 -0
  74. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/myprocess.py +0 -0
  75. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/sign_verify.py +0 -0
  76. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/signing_wrapper.py +0 -0
  77. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/simulation.py +0 -0
  78. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/transactions.py +0 -0
  79. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/utils.py +0 -0
  80. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/ux.py +0 -0
  81. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/version.py +0 -0
  82. {multiversx_sdk_cli-11.4.1 → multiversx_sdk_cli-12.0.1}/multiversx_sdk_cli/workstation.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: multiversx-sdk-cli
3
- Version: 11.4.1
3
+ Version: 12.0.1
4
4
  Summary: MultiversX Smart Contracts Tools
5
5
  Project-URL: Homepage, https://github.com/multiversx/mx-sdk-py-cli
6
6
  Author: MultiversX
@@ -10,10 +10,10 @@ Classifier: Intended Audience :: Developers
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
- Requires-Python: >=3.10
13
+ Requires-Python: >=3.11
14
14
  Requires-Dist: argcomplete==3.2.2
15
15
  Requires-Dist: ledgercomm[hid]
16
- Requires-Dist: multiversx-sdk[ledger]==2.4.0
16
+ Requires-Dist: multiversx-sdk[ledger]==3.0.0
17
17
  Requires-Dist: requests<3.0.0,>=2.32.0
18
18
  Requires-Dist: rich==13.3.4
19
19
  Requires-Dist: toml>=0.10.2
@@ -592,6 +592,7 @@ def unverify(args: Any) -> None:
592
592
 
593
593
  headers = {"Content-type": "application/json"}
594
594
  response = requests.delete(verifier_url, json=request_payload, headers=headers)
595
+ response.raise_for_status()
595
596
  logger.info(f"Your request to unverify contract {contract} was submitted.")
596
597
  print(response.json().get("message"))
597
598
 
@@ -37,7 +37,7 @@ def setup_parser(args: list[str], subparsers: Any) -> Any:
37
37
  cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
38
38
  cli_shared.add_guardian_wallet_args(args, sub)
39
39
  cli_shared.add_relayed_v3_wallet_args(args, sub)
40
- sub.add_argument("--name", help="the name to register")
40
+ sub.add_argument("--name", required=True, help="the name to register")
41
41
  sub.set_defaults(func=register)
42
42
 
43
43
  sub = cli_shared.add_command_subparser(subparsers, "dns", "resolve", "Find the address for a name")
@@ -202,7 +202,7 @@ def get_network_config(args: Any):
202
202
 
203
203
  def get_network_status(args: Any):
204
204
  proxy = _get_proxy(args)
205
- status = proxy.get_network_status()
205
+ status = proxy.get_network_status(args.shard)
206
206
 
207
207
  dump_out_json(status.raw)
208
208
 
@@ -361,6 +361,7 @@ def add_wait_result_and_timeout_args(sub: Any):
361
361
  )
362
362
  sub.add_argument(
363
363
  "--timeout",
364
+ type=int,
364
365
  default=100,
365
366
  help="max num of seconds to wait for result" " - only valid if --wait-result is set",
366
367
  )
@@ -813,6 +814,12 @@ def prepare_token_transfers(transfers: list[str]) -> list[TokenTransfer]:
813
814
  token_computer = TokenComputer()
814
815
  token_transfers: list[TokenTransfer] = []
815
816
 
817
+ if len(transfers) % 2 != 0:
818
+ raise ArgumentsNotProvidedError(
819
+ "Invalid number of arguments for token transfers. "
820
+ "Expected pairs of [token, amount], but got an odd number of arguments."
821
+ )
822
+
816
823
  for i in range(0, len(transfers) - 1, 2):
817
824
  extended_identifier = transfers[i]
818
825
  amount = int(transfers[i + 1])
@@ -206,6 +206,9 @@ def sign_transaction(args: Any):
206
206
  if tx.guardian and not tx_computer.has_options_set_for_guarded_transaction(tx):
207
207
  raise BadUsage("Guardian wallet provided but the transaction has incorrect options")
208
208
 
209
+ if not sender and not guardian and not relayer:
210
+ raise NoWalletProvided()
211
+
209
212
  guardian_and_relayer = GuardianRelayerData(
210
213
  guardian=guardian,
211
214
  guardian_address=tx.guardian,
@@ -146,6 +146,7 @@ def query_status_with_task_id(url: str, task_id: str, interval: int = 10):
146
146
  def _do_post(url: str, payload: Any) -> tuple[int, str, dict[str, Any]]:
147
147
  logger.debug(f"_do_post() to {url}")
148
148
  response = requests.post(url, json=payload)
149
+ response.raise_for_status()
149
150
 
150
151
  try:
151
152
  data = response.json()
@@ -159,6 +160,7 @@ def _do_post(url: str, payload: Any) -> tuple[int, str, dict[str, Any]]:
159
160
  def _do_get(url: str) -> tuple[int, str, dict[str, Any]]:
160
161
  logger.debug(f"_do_get() from {url}")
161
162
  response = requests.get(url)
163
+ response.raise_for_status()
162
164
 
163
165
  try:
164
166
  data = response.json()
@@ -1,5 +1,3 @@
1
- from typing import Any
2
-
3
1
  import requests
4
2
  from multiversx_sdk import Transaction
5
3
 
@@ -15,15 +13,11 @@ def cosign_transaction(transaction: Transaction, service_url: str, guardian_code
15
13
  # we call sign-multiple-transactions to be allowed a bigger payload (e.g. deploying large contracts)
16
14
  url = f"{service_url}/sign-multiple-transactions"
17
15
  response = requests.post(url, json=payload)
18
- check_for_guardian_error(response.json())
16
+ try:
17
+ response.raise_for_status()
18
+ except requests.exceptions.HTTPError as e:
19
+ raise GuardianServiceError(f"Guardian service returned an error: {str(e)}")
19
20
 
20
21
  # we only send 1 transaction
21
22
  tx_as_dict = response.json()["data"]["transactions"][0]
22
23
  transaction.guardian_signature = bytes.fromhex(tx_as_dict["guardianSignature"])
23
-
24
-
25
- def check_for_guardian_error(response: dict[str, Any]):
26
- error = response["error"]
27
-
28
- if error:
29
- raise GuardianServiceError(error)
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict
1
+ from typing import Any, Dict, Optional
2
2
 
3
3
  from multiversx_sdk_cli.localnet.config_root import ConfigRoot
4
4
  from multiversx_sdk_cli.localnet.constants import (
@@ -10,7 +10,16 @@ from multiversx_sdk_cli.localnet.nodes_setup_json import CHAIN_ID
10
10
  ConfigDict = Dict[str, Any]
11
11
 
12
12
 
13
- def patch_config(data: ConfigDict, config: ConfigRoot, enable_epochs_config: ConfigDict):
13
+ def patch_config(
14
+ data: ConfigDict,
15
+ config: ConfigRoot,
16
+ enable_epochs_config: ConfigDict,
17
+ enable_rounds_config: ConfigDict,
18
+ ):
19
+ """
20
+ Note: "enable_rounds_config" must be the original (not yet patched) "enableRounds.toml",
21
+ so that we can detect the default (upstream) Supernova activation round.
22
+ """
14
23
  supernova_activation_epoch = enable_epochs_config["EnableEpochs"].get("SupernovaEnableEpoch", None)
15
24
 
16
25
  data["GeneralSettings"]["ChainID"] = CHAIN_ID
@@ -77,6 +86,26 @@ def patch_config(data: ConfigDict, config: ConfigRoot, enable_epochs_config: Con
77
86
  if enable_epoch == supernova_activation_epoch:
78
87
  item["StartRound"] = _compute_supernova_activation_round(config, supernova_activation_epoch)
79
88
 
89
+ # Adjust the "*ByRound" configs: entries defined (upstream) at the default Supernova activation round
90
+ # must be moved to the (localnet-specific) computed Supernova activation round.
91
+ # Otherwise, the node fails with "supernova activation configs mismatch".
92
+ default_supernova_activation_round = _get_supernova_activation_round(enable_rounds_config)
93
+
94
+ if supernova_activation_epoch is not None and default_supernova_activation_round is not None:
95
+ supernova_activation_round = _compute_supernova_activation_round(config, supernova_activation_epoch)
96
+
97
+ configs_by_round = [
98
+ (data["GeneralSettings"].get("ProcessConfigsByRound", []), "EnableRound"),
99
+ (data["GeneralSettings"].get("EpochStartConfigsByRound", []), "EnableRound"),
100
+ (data["GeneralSettings"].get("ConsensusConfigsByRound", []), "EnableRound"),
101
+ (data.get("Antiflood", {}).get("ConfigsByRound", []), "Round"),
102
+ ]
103
+
104
+ for items, round_key in configs_by_round:
105
+ for item in items:
106
+ if int(item.get(round_key, 0)) == default_supernova_activation_round:
107
+ item[round_key] = supernova_activation_round
108
+
80
109
 
81
110
  def patch_api(data: ConfigDict, config: ConfigRoot):
82
111
  routes = data["APIPackages"]["transaction"]["Routes"]
@@ -121,6 +150,13 @@ def patch_enable_rounds(data: ConfigDict, config: ConfigRoot, enable_epochs_conf
121
150
  supernova_entry["Round"] = str(supernova_computed_activation_round)
122
151
 
123
152
 
153
+ def _get_supernova_activation_round(enable_rounds_config: ConfigDict) -> Optional[int]:
154
+ supernova_entry = enable_rounds_config.get("RoundActivations", {}).get("SupernovaEnableRound")
155
+ if not supernova_entry:
156
+ return None
157
+ return int(supernova_entry["Round"])
158
+
159
+
124
160
  def _compute_supernova_activation_round(config: ConfigRoot, supernova_activation_epoch: int) -> int:
125
161
  # Epochs are zero-indexed.
126
162
  return (
@@ -112,7 +112,7 @@ def patch_node_config(config: ConfigRoot):
112
112
  enable_rounds_config_data = utils.read_toml_file(enable_rounds_config_file)
113
113
  genesis_smart_contracts_data = utils.read_json_file(genesis_smart_contracts_file)
114
114
 
115
- node_config_toml.patch_config(node_config_data, config, enable_epochs_config_data)
115
+ node_config_toml.patch_config(node_config_data, config, enable_epochs_config_data, enable_rounds_config_data)
116
116
  node_config_toml.patch_api(api_config_data, config)
117
117
  node_config_toml.patch_enable_epochs(enable_epochs_config_data, config)
118
118
  node_config_toml.patch_enable_rounds(enable_rounds_config_data, config, enable_epochs_config_data)
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "multiversx-sdk-cli"
7
- version = "11.4.1"
7
+ version = "12.0.1"
8
8
  authors = [
9
9
  { name="MultiversX" },
10
10
  ]
11
11
  license = "MIT"
12
12
  description = "MultiversX Smart Contracts Tools"
13
13
  readme = "README.md"
14
- requires-python = ">=3.10"
14
+ requires-python = ">=3.11"
15
15
  classifiers = [
16
16
  "Programming Language :: Python :: 3",
17
17
  "License :: OSI Approved :: MIT License",
@@ -25,7 +25,7 @@ dependencies = [
25
25
  "ledgercomm[hid]",
26
26
  "rich==13.3.4",
27
27
  "argcomplete==3.2.2",
28
- "multiversx-sdk[ledger]==2.4.0"
28
+ "multiversx-sdk[ledger]==3.0.0"
29
29
  ]
30
30
 
31
31
  [project.scripts]