Skip to content

Commit 2a77e9d

Browse files
authored
Merge pull request #456 from multiversx/fix-egld-in-multi-transfer
Reference newer sdk & add client name
2 parents d1f7988 + 8cdb2d7 commit 2a77e9d

13 files changed

Lines changed: 77 additions & 77 deletions

multiversx_sdk_cli/cli_accounts.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from multiversx_sdk import Address, ProxyNetworkProvider
55

66
from multiversx_sdk_cli import cli_shared, utils
7+
from multiversx_sdk_cli.config import get_config_for_network_providers
78

89
logger = logging.getLogger("cli.accounts")
910

@@ -33,7 +34,8 @@ def _add_address_arg(sub: Any):
3334
def get_account(args: Any):
3435
proxy_url = args.proxy
3536
address = args.address
36-
proxy = ProxyNetworkProvider(proxy_url)
37+
config = get_config_for_network_providers()
38+
proxy = ProxyNetworkProvider(url=proxy_url, config=config)
3739
account = proxy.get_account(Address.new_from_bech32(address))
3840

3941
if args.balance:

multiversx_sdk_cli/cli_contracts.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from multiversx_sdk_cli import cli_shared, projects, utils
1212
from multiversx_sdk_cli.cli_output import CLIOutputBuilder
13+
from multiversx_sdk_cli.config import get_config_for_network_providers
1314
from multiversx_sdk_cli.constants import NUMBER_OF_SHARDS
1415
from multiversx_sdk_cli.contract_verification import \
1516
trigger_contract_verification
@@ -100,7 +101,7 @@ def setup_parser(args: List[str], subparsers: Any) -> Any:
100101
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
101102
_add_function_arg(sub)
102103
_add_arguments_arg(sub)
103-
_add_token_transfers_args(sub)
104+
cli_shared.add_token_transfers_args(sub)
104105
sub.add_argument("--wait-result", action="store_true", default=False,
105106
help="signal to wait for the transaction result - only valid if --send is set")
106107
sub.add_argument("--timeout", default=100, help="max num of seconds to wait for result"
@@ -243,12 +244,6 @@ def _add_arguments_arg(sub: Any):
243244
"E.g. [{ 'to': 'erd1...', 'amount': 10000000000 }]")
244245

245246

246-
def _add_token_transfers_args(sub: Any):
247-
sub.add_argument("--token-transfers", nargs='+',
248-
help="token transfers for transfer & execute, as [token, amount] "
249-
"E.g. --token-transfers NFT-123456-0a 1 ESDT-987654 100000000")
250-
251-
252247
def _add_metadata_arg(sub: Any):
253248
sub.add_argument("--metadata-not-upgradeable", dest="metadata_upgradeable", action="store_false",
254249
help="‼ mark the contract as NOT upgradeable (default: upgradeable)")
@@ -448,14 +443,15 @@ def query(args: Any):
448443
args.chain = ""
449444
cli_shared.prepare_chain_id_in_args(args)
450445

451-
config = TransactionsFactoryConfig(args.chain)
446+
factory_config = TransactionsFactoryConfig(args.chain)
452447
abi = Abi.load(Path(args.abi)) if args.abi else None
453-
contract = SmartContract(config, abi)
448+
contract = SmartContract(factory_config, abi)
454449

455450
arguments, should_prepare_args = _get_contract_arguments(args)
456451
contract_address = Address.new_from_bech32(args.contract)
457452

458-
proxy = ProxyNetworkProvider(args.proxy)
453+
network_provider_config = get_config_for_network_providers()
454+
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
459455
function = args.function
460456

461457
result = contract.query_contract(

multiversx_sdk_cli/cli_delegation.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from multiversx_sdk import ProxyNetworkProvider, TransactionsFactoryConfig
44

55
from multiversx_sdk_cli import cli_shared, errors, utils
6+
from multiversx_sdk_cli.config import get_config_for_network_providers
67
from multiversx_sdk_cli.delegation import DelegationOperations
78

89

@@ -209,7 +210,8 @@ def do_create_delegation_contract(args: Any):
209210
def get_contract_address_by_deploy_tx_hash(args: Any):
210211
args = utils.as_object(args)
211212

212-
proxy = ProxyNetworkProvider(args.proxy)
213+
config = get_config_for_network_providers()
214+
proxy = ProxyNetworkProvider(url=args.proxy, config=config)
213215

214216
transaction = proxy.get_transaction(args.create_tx_hash)
215217
transaction_events = transaction.logs.events

multiversx_sdk_cli/cli_dns.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from prettytable import PrettyTable
55

66
from multiversx_sdk_cli import cli_shared
7+
from multiversx_sdk_cli.config import get_config_for_network_providers
78
from multiversx_sdk_cli.constants import ADDRESS_ZERO_BECH32
89
from multiversx_sdk_cli.dns import (compute_dns_address_for_shard_id,
910
dns_address_for_name, name_hash, register,
@@ -79,14 +80,17 @@ def _ensure_proxy_is_provided(args: Any):
7980
def dns_resolve(args: Any):
8081
_ensure_proxy_is_provided(args)
8182

82-
addr = resolve(args.name, ProxyNetworkProvider(args.proxy))
83+
config = get_config_for_network_providers()
84+
addr = resolve(args.name, ProxyNetworkProvider(url=args.proxy, config=config))
8385
if addr.to_hex() != Address.new_from_bech32(ADDRESS_ZERO_BECH32).to_hex():
8486
print(addr.to_bech32())
8587

8688

8789
def dns_validate_name(args: Any):
8890
_ensure_proxy_is_provided(args)
89-
validate_name(args.name, args.shard_id, ProxyNetworkProvider(args.proxy))
91+
92+
config = get_config_for_network_providers()
93+
validate_name(args.name, args.shard_id, ProxyNetworkProvider(url=args.proxy, config=config))
9094

9195

9296
def get_name_hash(args: Any):
@@ -107,13 +111,16 @@ def get_dns_address_for_name_hex(args: Any):
107111

108112
def get_registration_cost(args: Any):
109113
_ensure_proxy_is_provided(args)
110-
print(registration_cost(args.shard_id, ProxyNetworkProvider(args.proxy)))
114+
115+
config = get_config_for_network_providers()
116+
print(registration_cost(args.shard_id, ProxyNetworkProvider(url=args.proxy, config=config)))
111117

112118

113119
def get_version(args: Any):
114120
_ensure_proxy_is_provided(args)
115121

116-
proxy = ProxyNetworkProvider(args.proxy)
122+
config = get_config_for_network_providers()
123+
proxy = ProxyNetworkProvider(url=args.proxy, config=config)
117124
if args.all:
118125
t = PrettyTable(['Shard ID', 'Contract address (bech32)', 'Contract address (hex)', 'Version'])
119126
for shard_id in range(0, 256):

multiversx_sdk_cli/cli_shared.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
load_password)
1515
from multiversx_sdk_cli.constants import (DEFAULT_TX_VERSION,
1616
TRANSACTION_OPTIONS_TX_GUARDED)
17-
from multiversx_sdk_cli.custom_network_provider import CustomNetworkProvider
1817
from multiversx_sdk_cli.errors import ArgumentsNotProvidedError
1918
from multiversx_sdk_cli.interfaces import ITransaction
2019
from multiversx_sdk_cli.ledger.ledger_functions import do_get_ledger_address
@@ -141,6 +140,12 @@ def add_omit_fields_arg(sub: Any):
141140
sub.add_argument("--omit-fields", default="[]", type=str, required=False, help="omit fields in the output payload (default: %(default)s)")
142141

143142

143+
def add_token_transfers_args(sub: Any):
144+
sub.add_argument("--token-transfers", nargs='+',
145+
help="token transfers for transfer & execute, as [token, amount] "
146+
"E.g. --token-transfers NFT-123456-0a 1 ESDT-987654 100000000")
147+
148+
144149
def parse_omit_fields_arg(args: Any) -> List[str]:
145150
literal = args.omit_fields
146151
parsed = ast.literal_eval(literal)
@@ -182,7 +187,8 @@ def prepare_nonce_in_args(args: Any):
182187

183188
if args.recall_nonce:
184189
account = prepare_account(args)
185-
account.sync_nonce(ProxyNetworkProvider(args.proxy))
190+
network_provider_config = config.get_config_for_network_providers()
191+
account.sync_nonce(ProxyNetworkProvider(url=args.proxy, config=network_provider_config))
186192
args.nonce = account.nonce
187193

188194

@@ -191,7 +197,8 @@ def prepare_chain_id_in_args(args: Any):
191197
raise ArgumentsNotProvidedError("chain ID cannot be decided: `--chain` or `--proxy` should be provided")
192198

193199
if args.chain and args.proxy:
194-
proxy = ProxyNetworkProvider(args.proxy)
200+
network_provider_config = config.get_config_for_network_providers()
201+
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
195202
fetched_chain_id = proxy.get_network_config().chain_id
196203

197204
if args.chain != fetched_chain_id:
@@ -204,7 +211,8 @@ def prepare_chain_id_in_args(args: Any):
204211
if args.chain:
205212
return
206213
elif args.proxy:
207-
proxy = ProxyNetworkProvider(args.proxy)
214+
network_provider_config = config.get_config_for_network_providers()
215+
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
208216
args.chain = proxy.get_network_config().chain_id
209217

210218

@@ -253,7 +261,8 @@ def check_options_for_guarded_tx(options: int):
253261

254262

255263
def send_or_simulate(tx: ITransaction, args: Any, dump_output: bool = True) -> CLIOutputBuilder:
256-
proxy = CustomNetworkProvider(args.proxy)
264+
network_provider_config = config.get_config_for_network_providers()
265+
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
257266

258267
is_set_wait_result = hasattr(args, "wait_result") and args.wait_result
259268
is_set_send = hasattr(args, "send") and args.send

multiversx_sdk_cli/cli_transactions.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
from pathlib import Path
33
from typing import Any, List
44

5+
from multiversx_sdk import ProxyNetworkProvider
6+
57
from multiversx_sdk_cli import cli_shared, utils
68
from multiversx_sdk_cli.cli_output import CLIOutputBuilder
9+
from multiversx_sdk_cli.config import get_config_for_network_providers
710
from multiversx_sdk_cli.cosign_transaction import cosign_transaction
8-
from multiversx_sdk_cli.custom_network_provider import CustomNetworkProvider
911
from multiversx_sdk_cli.errors import NoWalletProvided
1012
from multiversx_sdk_cli.transactions import (compute_relayed_v1_data,
1113
do_prepare_transaction,
@@ -20,7 +22,7 @@ def setup_parser(args: List[str], subparsers: Any) -> Any:
2022

2123
sub = cli_shared.add_command_subparser(subparsers, "tx", "new", f"Create a new transaction.{CLIOutputBuilder.describe()}")
2224
_add_common_arguments(args, sub)
23-
_add_token_transfers_args(sub)
25+
cli_shared.add_token_transfers_args(sub)
2426
cli_shared.add_outfile_arg(sub, what="signed transaction, hash")
2527
cli_shared.add_broadcast_args(sub, relay=True)
2628
cli_shared.add_proxy_arg(sub)
@@ -65,12 +67,6 @@ def _add_common_arguments(args: List[str], sub: Any):
6567
sub.add_argument("--data-file", type=str, default=None, help="a file containing transaction data")
6668

6769

68-
def _add_token_transfers_args(sub: Any):
69-
sub.add_argument("--token-transfers", nargs='+',
70-
help="token transfers for transfer & execute, as [token, amount] "
71-
"E.g. --token-transfers NFT-123456-0a 1 ESDT-987654 100000000")
72-
73-
7470
def create_transaction(args: Any):
7571
args = utils.as_object(args)
7672

@@ -97,7 +93,9 @@ def send_transaction(args: Any):
9793

9894
tx = load_transaction_from_file(args.infile)
9995
output = CLIOutputBuilder()
100-
proxy = CustomNetworkProvider(args.proxy)
96+
97+
config = get_config_for_network_providers()
98+
proxy = ProxyNetworkProvider(url=args.proxy, config=config)
10199

102100
try:
103101
tx_hash = proxy.send_transaction(tx)
@@ -110,7 +108,9 @@ def send_transaction(args: Any):
110108
def get_transaction(args: Any):
111109
args = utils.as_object(args)
112110
omit_fields = cli_shared.parse_omit_fields_arg(args)
113-
proxy = CustomNetworkProvider(args.proxy)
111+
112+
config = get_config_for_network_providers()
113+
proxy = ProxyNetworkProvider(url=args.proxy, config=config)
114114

115115
transaction = proxy.get_transaction(args.hash, True)
116116
output = CLIOutputBuilder().set_transaction_on_network(transaction, omit_fields).build()

multiversx_sdk_cli/config.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from pathlib import Path
33
from typing import Any, Dict, List
44

5+
from multiversx_sdk import NetworkProviderConfig
6+
57
from multiversx_sdk_cli import errors, utils
68

79
SDK_PATH = Path("~/multiversx-sdk").expanduser().resolve()
@@ -242,3 +244,7 @@ def get_dependency_directory(key: str, tag: str) -> Path:
242244

243245
def get_dependency_parent_directory(key: str) -> Path:
244246
return SDK_PATH / key
247+
248+
249+
def get_config_for_network_providers() -> NetworkProviderConfig:
250+
return NetworkProviderConfig(client_name="mxpy")

multiversx_sdk_cli/custom_network_provider.py

Lines changed: 0 additions & 36 deletions
This file was deleted.

multiversx_sdk_cli/interfaces.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, Protocol, Sequence
1+
from typing import Any, Dict, Protocol
22

33

44
class IAddress(Protocol):
@@ -25,11 +25,6 @@ class ITransaction(Protocol):
2525
guardian: str
2626
signature: bytes
2727
guardian_signature: bytes
28-
relayer: str
29-
30-
@property
31-
def inner_transactions(self) -> Sequence["ITransaction"]:
32-
...
3328

3429

3530
class IAccount(Protocol):

multiversx_sdk_cli/tests/test_cli_transactions.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,22 @@ def test_create_multi_transfer_transaction(capsys: Any):
8888
assert signature == "575b029d52ff5ffbfb7bab2f04052de88a6f7d022a6ad368459b8af9acaed3717d3f95db09f460649a8f405800838bc2c432496bd03c9039ea166bd32b84660e"
8989

9090

91+
def test_create_multi_transfer_transaction_with_single_egld_transfer(capsys: Any):
92+
return_code = main([
93+
"tx", "new",
94+
"--pem", str(testdata_path / "alice.pem"),
95+
"--receiver", "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx",
96+
"--nonce", "7",
97+
"--gas-limit", "1300000",
98+
"--token-transfers", "EGLD-000000", "1000000000000000000",
99+
"--chain", "T",
100+
])
101+
assert return_code == 0
102+
tx = _read_stdout(capsys)
103+
tx_json = json.loads(tx)
104+
data = tx_json["emittedTransactionData"]
105+
assert data == "MultiESDTNFTTransfer@8049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f8@01@45474c442d303030303030@@0de0b6b3a7640000"
106+
107+
91108
def _read_stdout(capsys: Any) -> str:
92109
return capsys.readouterr().out.strip()

0 commit comments

Comments
 (0)