multiversx-sdk-cli 11.1.0__tar.gz → 11.2.0__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.
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/PKG-INFO +2 -2
- multiversx_sdk_cli-11.2.0/multiversx_sdk_cli/args_converter.py +69 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli.py +2 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_contracts.py +114 -74
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_delegation.py +281 -142
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_get.py +4 -4
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_governance.py +79 -56
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_multisig.py +316 -198
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_shared.py +108 -8
- multiversx_sdk_cli-11.2.0/multiversx_sdk_cli/cli_tokens.py +2231 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_transactions.py +59 -29
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_validators.py +141 -100
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/constants.py +1 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/dns.py +13 -8
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/errors.py +0 -2
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/interfaces.py +1 -0
- multiversx_sdk_cli-11.2.0/multiversx_sdk_cli/signing_wrapper.py +69 -0
- multiversx_sdk_cli-11.2.0/multiversx_sdk_cli/transactions.py +40 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/pyproject.toml +2 -2
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/base_transactions_controller.py +0 -172
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/contracts.py +0 -221
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/delegation.py +0 -806
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/governance.py +0 -269
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/multisig.py +0 -922
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/transactions.py +0 -117
- multiversx_sdk_cli-11.1.0/multiversx_sdk_cli/validators.py +0 -539
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/.gitignore +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/LICENSE +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/README.md +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/__init__.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/args_validation.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_config.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_config_env.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_config_wallet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_data.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_deps.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_dns.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_faucet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_ledger.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_localnet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_output.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_password.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_validator_wallet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cli_wallet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/config.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/config_env.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/config_wallet.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/contract_verification.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/cosign_transaction.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/dependencies/__init__.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/dependencies/install.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/dependencies/modules.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/dependencies/resolution.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/docker.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/downloader.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/guardian_relayer_data.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/guards.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/__init__.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_default.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_general.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_networking.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_part.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_root.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_sharding.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/config_software.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/constants.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/genesis.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/genesis_json.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/genesis_smart_contracts_json.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/libraries.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/node.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/node_config_toml.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/nodes_setup_json.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/p2p_toml.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/seednode_p2pKey.pem +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_build_software.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_clean.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_config.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_new.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_prerequisites.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/step_start.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/localnet/wallets.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/myprocess.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/sign_verify.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/simulation.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/utils.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/ux.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/version.py +0 -0
- {multiversx_sdk_cli-11.1.0 → multiversx_sdk_cli-11.2.0}/multiversx_sdk_cli/workstation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multiversx-sdk-cli
|
|
3
|
-
Version: 11.
|
|
3
|
+
Version: 11.2.0
|
|
4
4
|
Summary: MultiversX Smart Contracts Tools
|
|
5
5
|
Project-URL: Homepage, https://github.com/multiversx/mx-sdk-py-cli
|
|
6
6
|
Author: MultiversX
|
|
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
13
|
Requires-Python: >=3.10
|
|
14
14
|
Requires-Dist: argcomplete==3.2.2
|
|
15
15
|
Requires-Dist: ledgercomm[hid]
|
|
16
|
-
Requires-Dist: multiversx-sdk[ledger]==2.
|
|
16
|
+
Requires-Dist: multiversx-sdk[ledger]==2.2.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
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from multiversx_sdk import Address
|
|
5
|
+
from multiversx_sdk.abi import (
|
|
6
|
+
AddressValue,
|
|
7
|
+
BigUIntValue,
|
|
8
|
+
BoolValue,
|
|
9
|
+
BytesValue,
|
|
10
|
+
StringValue,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
from multiversx_sdk_cli.config_env import get_address_hrp
|
|
14
|
+
from multiversx_sdk_cli.constants import (
|
|
15
|
+
ADDRESS_PREFIX,
|
|
16
|
+
FALSE_STR_LOWER,
|
|
17
|
+
HEX_PREFIX,
|
|
18
|
+
MAINCHAIN_ADDRESS_HRP,
|
|
19
|
+
STR_PREFIX,
|
|
20
|
+
TRUE_STR_LOWER,
|
|
21
|
+
)
|
|
22
|
+
from multiversx_sdk_cli.errors import BadUserInput
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger("args_converter")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def convert_args_to_typed_values(arguments: list[str]) -> list[Any]:
|
|
28
|
+
args: list[Any] = []
|
|
29
|
+
|
|
30
|
+
for arg in arguments:
|
|
31
|
+
if arg.startswith(HEX_PREFIX):
|
|
32
|
+
args.append(BytesValue(_hex_to_bytes(arg)))
|
|
33
|
+
elif arg.isnumeric():
|
|
34
|
+
args.append(BigUIntValue(int(arg)))
|
|
35
|
+
elif arg.startswith(ADDRESS_PREFIX):
|
|
36
|
+
args.append(AddressValue.new_from_address(Address.new_from_bech32(arg[len(ADDRESS_PREFIX) :])))
|
|
37
|
+
elif arg.startswith(MAINCHAIN_ADDRESS_HRP):
|
|
38
|
+
# this flow will be removed in the future
|
|
39
|
+
logger.warning(
|
|
40
|
+
"Address argument has no prefix. This flow will be removed in the future. Please provide each address using the `addr:` prefix. (e.g. --arguments addr:erd1...)"
|
|
41
|
+
)
|
|
42
|
+
args.append(AddressValue.new_from_address(Address.new_from_bech32(arg)))
|
|
43
|
+
elif arg.startswith(get_address_hrp()):
|
|
44
|
+
args.append(AddressValue.new_from_address(Address.new_from_bech32(arg)))
|
|
45
|
+
elif arg.lower() == FALSE_STR_LOWER:
|
|
46
|
+
args.append(BoolValue(False))
|
|
47
|
+
elif arg.lower() == TRUE_STR_LOWER:
|
|
48
|
+
args.append(BoolValue(True))
|
|
49
|
+
elif arg.startswith(STR_PREFIX):
|
|
50
|
+
args.append(StringValue(arg[len(STR_PREFIX) :]))
|
|
51
|
+
else:
|
|
52
|
+
raise BadUserInput(
|
|
53
|
+
f"Unknown argument type for argument: `{arg}`. Use `mxpy contract <sub-command> --help` to check all supported arguments"
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
return args
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _hex_to_bytes(arg: str):
|
|
60
|
+
argument = arg[len(HEX_PREFIX) :]
|
|
61
|
+
argument = argument.upper()
|
|
62
|
+
argument = _ensure_even_length(argument)
|
|
63
|
+
return bytes.fromhex(argument)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _ensure_even_length(string: str) -> str:
|
|
67
|
+
if len(string) % 2 == 1:
|
|
68
|
+
return "0" + string
|
|
69
|
+
return string
|
|
@@ -23,6 +23,7 @@ import multiversx_sdk_cli.cli_governance
|
|
|
23
23
|
import multiversx_sdk_cli.cli_ledger
|
|
24
24
|
import multiversx_sdk_cli.cli_localnet
|
|
25
25
|
import multiversx_sdk_cli.cli_multisig
|
|
26
|
+
import multiversx_sdk_cli.cli_tokens
|
|
26
27
|
import multiversx_sdk_cli.cli_transactions
|
|
27
28
|
import multiversx_sdk_cli.cli_validator_wallet
|
|
28
29
|
import multiversx_sdk_cli.cli_validators
|
|
@@ -142,6 +143,7 @@ See:
|
|
|
142
143
|
commands.append(multiversx_sdk_cli.cli_governance.setup_parser(args, subparsers))
|
|
143
144
|
commands.append(multiversx_sdk_cli.cli_config_env.setup_parser(subparsers))
|
|
144
145
|
commands.append(multiversx_sdk_cli.cli_get.setup_parser(subparsers))
|
|
146
|
+
commands.append(multiversx_sdk_cli.cli_tokens.setup_parser(args, subparsers))
|
|
145
147
|
|
|
146
148
|
parser.epilog = """
|
|
147
149
|
----------------------
|
|
@@ -11,12 +11,13 @@ from multiversx_sdk import (
|
|
|
11
11
|
AddressComputer,
|
|
12
12
|
Message,
|
|
13
13
|
ProxyNetworkProvider,
|
|
14
|
+
SmartContractController,
|
|
14
15
|
Transaction,
|
|
15
|
-
TransactionsFactoryConfig,
|
|
16
16
|
)
|
|
17
17
|
from multiversx_sdk.abi import Abi
|
|
18
18
|
|
|
19
19
|
from multiversx_sdk_cli import cli_shared, utils
|
|
20
|
+
from multiversx_sdk_cli.args_converter import convert_args_to_typed_values
|
|
20
21
|
from multiversx_sdk_cli.args_validation import (
|
|
21
22
|
validate_broadcast_args,
|
|
22
23
|
validate_chain_id_args,
|
|
@@ -28,9 +29,8 @@ from multiversx_sdk_cli.config import get_config_for_network_providers
|
|
|
28
29
|
from multiversx_sdk_cli.config_env import MxpyEnv
|
|
29
30
|
from multiversx_sdk_cli.constants import NUMBER_OF_SHARDS
|
|
30
31
|
from multiversx_sdk_cli.contract_verification import trigger_contract_verification
|
|
31
|
-
from multiversx_sdk_cli.contracts import SmartContract
|
|
32
32
|
from multiversx_sdk_cli.docker import is_docker_installed, run_docker
|
|
33
|
-
from multiversx_sdk_cli.errors import DockerMissingError
|
|
33
|
+
from multiversx_sdk_cli.errors import BadUsage, DockerMissingError, QueryContractError
|
|
34
34
|
from multiversx_sdk_cli.ux import show_warning
|
|
35
35
|
|
|
36
36
|
logger = logging.getLogger("cli.contracts")
|
|
@@ -295,6 +295,7 @@ def _add_arguments_arg(sub: Any):
|
|
|
295
295
|
sub.add_argument(
|
|
296
296
|
"--arguments",
|
|
297
297
|
nargs="+",
|
|
298
|
+
default=[],
|
|
298
299
|
help="arguments for the contract transaction, as [number, bech32-address, ascii string, "
|
|
299
300
|
"boolean] or hex-encoded. E.g. --arguments 42 0x64 1000 0xabba str:TOK-a1c2ef true addr:erd1[..]",
|
|
300
301
|
)
|
|
@@ -315,6 +316,27 @@ After installing, use the `sc-meta all build` command. To learn more about `sc-m
|
|
|
315
316
|
show_warning(message)
|
|
316
317
|
|
|
317
318
|
|
|
319
|
+
def _initialize_controller(args: Any) -> SmartContractController:
|
|
320
|
+
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
|
|
321
|
+
config = get_config_for_network_providers()
|
|
322
|
+
proxy_url = args.proxy if args.proxy else ""
|
|
323
|
+
proxy = ProxyNetworkProvider(url=proxy_url, config=config)
|
|
324
|
+
abi = Abi.load(Path(args.abi)) if args.abi else None
|
|
325
|
+
gas_estimator = cli_shared.initialize_gas_limit_estimator(args)
|
|
326
|
+
|
|
327
|
+
return SmartContractController(
|
|
328
|
+
chain_id=chain_id,
|
|
329
|
+
network_provider=proxy,
|
|
330
|
+
abi=abi,
|
|
331
|
+
gas_limit_estimator=gas_estimator,
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
|
|
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`")
|
|
338
|
+
|
|
339
|
+
|
|
318
340
|
def deploy(args: Any):
|
|
319
341
|
logger.debug("deploy")
|
|
320
342
|
|
|
@@ -322,37 +344,33 @@ def deploy(args: Any):
|
|
|
322
344
|
validate_broadcast_args(args)
|
|
323
345
|
validate_chain_id_args(args)
|
|
324
346
|
|
|
347
|
+
_ensure_args_for_gas_estimation(args)
|
|
348
|
+
|
|
325
349
|
sender = cli_shared.prepare_sender(args)
|
|
326
350
|
guardian_and_relayer_data = cli_shared.get_guardian_and_relayer_data(
|
|
327
351
|
sender=sender.address.to_bech32(),
|
|
328
352
|
args=args,
|
|
329
353
|
)
|
|
330
354
|
|
|
331
|
-
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
|
|
332
|
-
config = TransactionsFactoryConfig(chain_id)
|
|
333
|
-
|
|
334
|
-
abi = Abi.load(Path(args.abi)) if args.abi else None
|
|
335
|
-
gas_estimator = cli_shared.initialize_gas_limit_estimator(args)
|
|
336
|
-
contract = SmartContract(config, abi, gas_estimator)
|
|
337
|
-
|
|
338
355
|
arguments, should_prepare_args = _get_contract_arguments(args)
|
|
356
|
+
if should_prepare_args:
|
|
357
|
+
arguments = convert_args_to_typed_values(arguments)
|
|
339
358
|
|
|
340
|
-
|
|
341
|
-
|
|
359
|
+
controller = _initialize_controller(args)
|
|
360
|
+
tx = controller.create_transaction_for_deploy(
|
|
361
|
+
sender=sender,
|
|
362
|
+
nonce=sender.nonce,
|
|
342
363
|
bytecode=Path(args.bytecode),
|
|
343
364
|
arguments=arguments,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
365
|
+
native_transfer_amount=int(args.value),
|
|
366
|
+
is_upgradeable=args.metadata_upgradeable,
|
|
367
|
+
is_readable=args.metadata_readable,
|
|
368
|
+
is_payable=args.metadata_payable,
|
|
369
|
+
is_payable_by_sc=args.metadata_payable_by_sc,
|
|
370
|
+
guardian=guardian_and_relayer_data.guardian_address,
|
|
371
|
+
relayer=guardian_and_relayer_data.relayer_address,
|
|
349
372
|
gas_limit=args.gas_limit,
|
|
350
|
-
gas_price=
|
|
351
|
-
value=int(args.value),
|
|
352
|
-
nonce=sender.nonce,
|
|
353
|
-
version=int(args.version),
|
|
354
|
-
options=int(args.options),
|
|
355
|
-
guardian_and_relayer_data=guardian_and_relayer_data,
|
|
373
|
+
gas_price=args.gas_price,
|
|
356
374
|
)
|
|
357
375
|
|
|
358
376
|
address_computer = AddressComputer(NUMBER_OF_SHARDS)
|
|
@@ -361,8 +379,18 @@ def deploy(args: Any):
|
|
|
361
379
|
logger.info("Contract address: %s", contract_address.to_bech32())
|
|
362
380
|
|
|
363
381
|
cli_config = MxpyEnv.from_active_env()
|
|
364
|
-
utils.log_explorer_contract_address(
|
|
382
|
+
utils.log_explorer_contract_address(
|
|
383
|
+
chain=cli_shared.get_chain_id(args.proxy, args.chain),
|
|
384
|
+
address=contract_address.to_bech32(),
|
|
385
|
+
explorer_url=cli_config.explorer_url,
|
|
386
|
+
)
|
|
365
387
|
|
|
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
|
+
)
|
|
366
394
|
_send_or_simulate(tx, contract_address, args)
|
|
367
395
|
|
|
368
396
|
|
|
@@ -373,42 +401,45 @@ def call(args: Any):
|
|
|
373
401
|
validate_broadcast_args(args)
|
|
374
402
|
validate_chain_id_args(args)
|
|
375
403
|
|
|
404
|
+
_ensure_args_for_gas_estimation(args)
|
|
405
|
+
|
|
376
406
|
sender = cli_shared.prepare_sender(args)
|
|
377
407
|
guardian_and_relayer_data = cli_shared.get_guardian_and_relayer_data(
|
|
378
408
|
sender=sender.address.to_bech32(),
|
|
379
409
|
args=args,
|
|
380
410
|
)
|
|
381
411
|
|
|
382
|
-
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
|
|
383
|
-
config = TransactionsFactoryConfig(chain_id)
|
|
384
|
-
|
|
385
|
-
abi = Abi.load(Path(args.abi)) if args.abi else None
|
|
386
|
-
gas_estimator = cli_shared.initialize_gas_limit_estimator(args)
|
|
387
|
-
contract = SmartContract(config, abi, gas_estimator)
|
|
388
|
-
|
|
389
412
|
arguments, should_prepare_args = _get_contract_arguments(args)
|
|
390
|
-
|
|
413
|
+
if should_prepare_args:
|
|
414
|
+
arguments = convert_args_to_typed_values(arguments)
|
|
391
415
|
|
|
392
|
-
token_transfers =
|
|
416
|
+
token_transfers = []
|
|
393
417
|
if args.token_transfers:
|
|
394
418
|
token_transfers = cli_shared.prepare_token_transfers(args.token_transfers)
|
|
395
419
|
|
|
396
|
-
|
|
397
|
-
|
|
420
|
+
contract_address = Address.new_from_bech32(args.contract)
|
|
421
|
+
controller = _initialize_controller(args)
|
|
422
|
+
|
|
423
|
+
tx = controller.create_transaction_for_execute(
|
|
424
|
+
sender=sender,
|
|
425
|
+
nonce=sender.nonce,
|
|
398
426
|
contract=contract_address,
|
|
399
427
|
function=args.function,
|
|
400
428
|
arguments=arguments,
|
|
401
|
-
|
|
402
|
-
gas_limit=args.gas_limit,
|
|
403
|
-
gas_price=int(args.gas_price),
|
|
404
|
-
value=int(args.value),
|
|
429
|
+
native_transfer_amount=int(args.value),
|
|
405
430
|
token_transfers=token_transfers,
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
431
|
+
guardian=guardian_and_relayer_data.guardian_address,
|
|
432
|
+
relayer=guardian_and_relayer_data.relayer_address,
|
|
433
|
+
gas_limit=args.gas_limit,
|
|
434
|
+
gas_price=args.gas_price,
|
|
410
435
|
)
|
|
411
436
|
|
|
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
|
+
)
|
|
412
443
|
_send_or_simulate(tx, contract_address, args)
|
|
413
444
|
|
|
414
445
|
|
|
@@ -419,41 +450,44 @@ def upgrade(args: Any):
|
|
|
419
450
|
validate_broadcast_args(args)
|
|
420
451
|
validate_chain_id_args(args)
|
|
421
452
|
|
|
453
|
+
_ensure_args_for_gas_estimation(args)
|
|
454
|
+
|
|
422
455
|
sender = cli_shared.prepare_sender(args)
|
|
423
456
|
guardian_and_relayer_data = cli_shared.get_guardian_and_relayer_data(
|
|
424
457
|
sender=sender.address.to_bech32(),
|
|
425
458
|
args=args,
|
|
426
459
|
)
|
|
427
460
|
|
|
428
|
-
chain_id = cli_shared.get_chain_id(args.proxy, args.chain)
|
|
429
|
-
config = TransactionsFactoryConfig(chain_id)
|
|
430
|
-
|
|
431
|
-
abi = Abi.load(Path(args.abi)) if args.abi else None
|
|
432
|
-
gas_estimator = cli_shared.initialize_gas_limit_estimator(args)
|
|
433
|
-
contract = SmartContract(config, abi, gas_estimator)
|
|
434
|
-
|
|
435
461
|
arguments, should_prepare_args = _get_contract_arguments(args)
|
|
462
|
+
if should_prepare_args:
|
|
463
|
+
arguments = convert_args_to_typed_values(arguments)
|
|
464
|
+
|
|
436
465
|
contract_address = Address.new_from_bech32(args.contract)
|
|
466
|
+
controller = _initialize_controller(args)
|
|
437
467
|
|
|
438
|
-
tx =
|
|
439
|
-
|
|
468
|
+
tx = controller.create_transaction_for_upgrade(
|
|
469
|
+
sender=sender,
|
|
470
|
+
nonce=sender.nonce,
|
|
440
471
|
contract=contract_address,
|
|
441
472
|
bytecode=Path(args.bytecode),
|
|
442
473
|
arguments=arguments,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
474
|
+
native_transfer_amount=int(args.value),
|
|
475
|
+
is_upgradeable=args.metadata_upgradeable,
|
|
476
|
+
is_readable=args.metadata_readable,
|
|
477
|
+
is_payable=args.metadata_payable,
|
|
478
|
+
is_payable_by_sc=args.metadata_payable_by_sc,
|
|
479
|
+
guardian=guardian_and_relayer_data.guardian_address,
|
|
480
|
+
relayer=guardian_and_relayer_data.relayer_address,
|
|
448
481
|
gas_limit=args.gas_limit,
|
|
449
|
-
gas_price=
|
|
450
|
-
value=int(args.value),
|
|
451
|
-
nonce=sender.nonce,
|
|
452
|
-
version=int(args.version),
|
|
453
|
-
options=int(args.options),
|
|
454
|
-
guardian_and_relayer_data=guardian_and_relayer_data,
|
|
482
|
+
gas_price=args.gas_price,
|
|
455
483
|
)
|
|
456
484
|
|
|
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
|
+
)
|
|
457
491
|
_send_or_simulate(tx, contract_address, args)
|
|
458
492
|
|
|
459
493
|
|
|
@@ -462,26 +496,32 @@ def query(args: Any):
|
|
|
462
496
|
|
|
463
497
|
validate_proxy_argument(args)
|
|
464
498
|
|
|
465
|
-
# we don't need chainID to query a contract; we use the provided proxy
|
|
466
|
-
factory_config = TransactionsFactoryConfig("")
|
|
467
499
|
abi = Abi.load(Path(args.abi)) if args.abi else None
|
|
468
|
-
|
|
500
|
+
contract_address = Address.new_from_bech32(args.contract)
|
|
501
|
+
function = args.function
|
|
469
502
|
|
|
470
503
|
arguments, should_prepare_args = _get_contract_arguments(args)
|
|
471
|
-
|
|
504
|
+
if should_prepare_args:
|
|
505
|
+
arguments = convert_args_to_typed_values(arguments)
|
|
472
506
|
|
|
473
507
|
network_provider_config = get_config_for_network_providers()
|
|
474
508
|
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
|
|
475
|
-
function = args.function
|
|
476
509
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
arguments=arguments,
|
|
482
|
-
should_prepare_args=should_prepare_args,
|
|
510
|
+
controller = SmartContractController(
|
|
511
|
+
chain_id="",
|
|
512
|
+
network_provider=proxy,
|
|
513
|
+
abi=abi,
|
|
483
514
|
)
|
|
484
515
|
|
|
516
|
+
try:
|
|
517
|
+
result = controller.query(
|
|
518
|
+
contract=contract_address,
|
|
519
|
+
function=function,
|
|
520
|
+
arguments=arguments,
|
|
521
|
+
)
|
|
522
|
+
except Exception as e:
|
|
523
|
+
raise QueryContractError("Couldn't query contract: ", e)
|
|
524
|
+
|
|
485
525
|
utils.dump_out_json(result)
|
|
486
526
|
|
|
487
527
|
|