Skip to content

Commit 25cc744

Browse files
Merge pull request #414 from multiversx/fix-signing-staking-provider
Fix signing for "staking-provider" commands.
2 parents 7e477e9 + f980b5c commit 25cc744

3 files changed

Lines changed: 75 additions & 13 deletions

File tree

multiversx_sdk_cli/delegation/staking_provider.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,12 @@ def prepare_transaction_for_new_delegation_contract(self, owner: IAccount, args:
5252
tx.version = int(args.version)
5353
tx.options = int(args.options)
5454
tx.guardian = args.guardian
55-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
5655

5756
if args.gas_limit:
5857
tx.gas_limit = int(args.gas_limit)
5958

59+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
60+
6061
return tx
6162

6263
def prepare_transaction_for_adding_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -73,11 +74,12 @@ def prepare_transaction_for_adding_nodes(self, owner: IAccount, args: Any) -> IT
7374
tx.version = int(args.version)
7475
tx.options = int(args.options)
7576
tx.guardian = args.guardian
76-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
7777

7878
if args.gas_limit:
7979
tx.gas_limit = int(args.gas_limit)
8080

81+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
82+
8183
return tx
8284

8385
def prepare_transaction_for_removing_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -94,11 +96,12 @@ def prepare_transaction_for_removing_nodes(self, owner: IAccount, args: Any) ->
9496
tx.version = int(args.version)
9597
tx.options = int(args.options)
9698
tx.guardian = args.guardian
97-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
9899

99100
if args.gas_limit:
100101
tx.gas_limit = int(args.gas_limit)
101102

103+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
104+
102105
return tx
103106

104107
def prepare_transaction_for_staking_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -115,11 +118,12 @@ def prepare_transaction_for_staking_nodes(self, owner: IAccount, args: Any) -> I
115118
tx.version = int(args.version)
116119
tx.options = int(args.options)
117120
tx.guardian = args.guardian
118-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
119121

120122
if args.gas_limit:
121123
tx.gas_limit = int(args.gas_limit)
122124

125+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
126+
123127
return tx
124128

125129
def prepare_transaction_for_unbonding_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -136,11 +140,12 @@ def prepare_transaction_for_unbonding_nodes(self, owner: IAccount, args: Any) ->
136140
tx.version = int(args.version)
137141
tx.options = int(args.options)
138142
tx.guardian = args.guardian
139-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
140143

141144
if args.gas_limit:
142145
tx.gas_limit = int(args.gas_limit)
143146

147+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
148+
144149
return tx
145150

146151
def prepare_transaction_for_unstaking_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -157,11 +162,12 @@ def prepare_transaction_for_unstaking_nodes(self, owner: IAccount, args: Any) ->
157162
tx.version = int(args.version)
158163
tx.options = int(args.options)
159164
tx.guardian = args.guardian
160-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
161165

162166
if args.gas_limit:
163167
tx.gas_limit = int(args.gas_limit)
164168

169+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
170+
165171
return tx
166172

167173
def prepare_transaction_for_unjailing_nodes(self, owner: IAccount, args: Any) -> ITransaction:
@@ -178,11 +184,12 @@ def prepare_transaction_for_unjailing_nodes(self, owner: IAccount, args: Any) ->
178184
tx.version = int(args.version)
179185
tx.options = int(args.options)
180186
tx.guardian = args.guardian
181-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
182187

183188
if args.gas_limit:
184189
tx.gas_limit = int(args.gas_limit)
185190

191+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
192+
186193
return tx
187194

188195
def prepare_transaction_for_changing_service_fee(self, owner: IAccount, args: Any) -> ITransaction:
@@ -197,11 +204,12 @@ def prepare_transaction_for_changing_service_fee(self, owner: IAccount, args: An
197204
tx.version = int(args.version)
198205
tx.options = int(args.options)
199206
tx.guardian = args.guardian
200-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
201207

202208
if args.gas_limit:
203209
tx.gas_limit = int(args.gas_limit)
204210

211+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
212+
205213
return tx
206214

207215
def prepare_transaction_for_modifying_delegation_cap(self, owner: IAccount, args: Any) -> ITransaction:
@@ -216,11 +224,12 @@ def prepare_transaction_for_modifying_delegation_cap(self, owner: IAccount, args
216224
tx.version = int(args.version)
217225
tx.options = int(args.options)
218226
tx.guardian = args.guardian
219-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
220227

221228
if args.gas_limit:
222229
tx.gas_limit = int(args.gas_limit)
223230

231+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
232+
224233
return tx
225234

226235
def prepare_transaction_for_automatic_activation(self, owner: IAccount, args: Any) -> ITransaction:
@@ -243,11 +252,12 @@ def prepare_transaction_for_automatic_activation(self, owner: IAccount, args: An
243252
tx.version = int(args.version)
244253
tx.options = int(args.options)
245254
tx.guardian = args.guardian
246-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
247255

248256
if args.gas_limit:
249257
tx.gas_limit = int(args.gas_limit)
250258

259+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
260+
251261
return tx
252262

253263
def prepare_transaction_for_redelegate_cap(self, owner: IAccount, args: Any) -> ITransaction:
@@ -270,11 +280,12 @@ def prepare_transaction_for_redelegate_cap(self, owner: IAccount, args: Any) ->
270280
tx.version = int(args.version)
271281
tx.options = int(args.options)
272282
tx.guardian = args.guardian
273-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
274283

275284
if args.gas_limit:
276285
tx.gas_limit = int(args.gas_limit)
277286

287+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
288+
278289
return tx
279290

280291
def prepare_transaction_for_setting_metadata(self, owner: IAccount, args: Any) -> ITransaction:
@@ -291,11 +302,12 @@ def prepare_transaction_for_setting_metadata(self, owner: IAccount, args: Any) -
291302
tx.version = int(args.version)
292303
tx.options = int(args.options)
293304
tx.guardian = args.guardian
294-
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
295305

296306
if args.gas_limit:
297307
tx.gas_limit = int(args.gas_limit)
298308

309+
tx.signature = bytes.fromhex(owner.sign_transaction(tx))
310+
299311
return tx
300312

301313
def _load_validators_public_keys(self, args: Any) -> List[ValidatorPublicKey]:

multiversx_sdk_cli/tests/test_cli_staking_provider.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,31 @@ def test_create_new_delegation_contract(capsys: Any):
3232
assert transaction["chainID"] == "T"
3333
assert transaction["gasLimit"] == 60126500
3434
assert transaction["value"] == "1250000000000000000000"
35+
assert transaction["signature"] == "0a6d7249c671b1db00f1b8807770bb64eac51e2e2779e426f35439c6cb7b00dadd023392a061ba1b6ee35d235ac2c0ad87283413b1d5558d8526bc5712588702"
36+
37+
38+
def test_create_new_delegation_contract_with_provided_gas_limit(capsys: Any):
39+
main([
40+
"staking-provider", "create-new-delegation-contract",
41+
"--pem", str(alice),
42+
"--nonce", "7", "--estimate-gas",
43+
"--value", "1250000000000000000000",
44+
"--total-delegation-cap", "10000000000000000000000",
45+
"--service-fee", "100",
46+
"--chain", "T",
47+
"--gas-limit", "60126501"
48+
])
49+
tx = get_transaction(capsys)
50+
data = tx["emittedTransactionData"]
51+
transaction = tx["emittedTransaction"]
52+
53+
assert data == "createNewDelegationContract@021e19e0c9bab2400000@64"
54+
assert transaction["sender"] == "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"
55+
assert transaction["receiver"] == "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqylllslmq6y6"
56+
assert transaction["chainID"] == "T"
57+
assert transaction["gasLimit"] == 60126501
58+
assert transaction["value"] == "1250000000000000000000"
59+
assert transaction["signature"] == "8e28aa5a11454d975a4841086397000de053784b04e68402da9abcf26adc8726d3ce32f415119e3aa38746f2e5524063a6176a0c8cd88c9e8e89f9626d045202"
3560

3661

3762
def test_add_nodes(capsys: Any):
@@ -52,6 +77,31 @@ def test_add_nodes(capsys: Any):
5277
assert data == "addNodes@e7beaa95b3877f47348df4dd1cb578a4f7cabf7a20bfeefe5cdd263878ff132b765e04fef6f40c93512b666c47ed7719b8902f6c922c04247989b7137e837cc81a62e54712471c97a2ddab75aa9c2f58f813ed4c0fa722bde0ab718bff382208@604882237a9845f508ad03877b5aab90569683eeb51fafcbbeb87440ba359992b3c0b837a8757c25be18132549404f88@78689fd4b1e2e434d567fe01e61598a42717d83124308266bd09ccc15d2339dd318c019914b86ac29adbae5dd8a02d0307425e9bd85a296e94943708c72f8c670f0b7c50a890a5719088dbd9f1d062cad9acffa06df834106eebe1a4257ef00d@ec54a009695af56c3585ef623387b67b6df1974b0b3c9138eb64bde6eb33978ae9851112b20c99bf63588e8e949e4388@7188b234a8bf834f2e6258012aa09a2ab93178ffab9c789480275f61fe02cd1b9a58ddc63b79a73abea9e2b7ac5cac0b0d4324eff50aca2f0ec946b9ae6797511fa3ce461b57e77129cba8ab3b51147695d4ce889cbe67905f6586b4e4f22491@c6c637de17db5f89a2fa1d1d935cb60c0e5e8958d3bfc47f903f774dd97398c8fe22093e113865ee98c3afdd1de62694"
5378
assert transaction["sender"] == "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"
5479
assert transaction["receiver"] == "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqthllllsy5r6rh"
80+
assert transaction["gasLimit"] == 20367000
81+
assert transaction["signature"] == "b383909206bf9631d5bef583c6e28250815494b459977fe8f037c2a97d2692a77d1b5c5dda6095d64ad180d213b5fd5eb7038a54af3765a3cb3fd86b86a1f305"
82+
83+
84+
def test_add_nodes_with_gas_limit(capsys: Any):
85+
validators_file = parent / "testdata" / "validators.json"
86+
87+
main([
88+
"staking-provider", "add-nodes",
89+
"--validators-file", str(validators_file),
90+
"--delegation-contract", "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqthllllsy5r6rh",
91+
"--pem", str(alice),
92+
"--chain", "T",
93+
"--nonce", "7",
94+
"--gas-limit", "20367001"
95+
])
96+
tx = get_transaction(capsys)
97+
data = tx["emittedTransactionData"]
98+
transaction = tx["emittedTransaction"]
99+
100+
assert data == "addNodes@e7beaa95b3877f47348df4dd1cb578a4f7cabf7a20bfeefe5cdd263878ff132b765e04fef6f40c93512b666c47ed7719b8902f6c922c04247989b7137e837cc81a62e54712471c97a2ddab75aa9c2f58f813ed4c0fa722bde0ab718bff382208@604882237a9845f508ad03877b5aab90569683eeb51fafcbbeb87440ba359992b3c0b837a8757c25be18132549404f88@78689fd4b1e2e434d567fe01e61598a42717d83124308266bd09ccc15d2339dd318c019914b86ac29adbae5dd8a02d0307425e9bd85a296e94943708c72f8c670f0b7c50a890a5719088dbd9f1d062cad9acffa06df834106eebe1a4257ef00d@ec54a009695af56c3585ef623387b67b6df1974b0b3c9138eb64bde6eb33978ae9851112b20c99bf63588e8e949e4388@7188b234a8bf834f2e6258012aa09a2ab93178ffab9c789480275f61fe02cd1b9a58ddc63b79a73abea9e2b7ac5cac0b0d4324eff50aca2f0ec946b9ae6797511fa3ce461b57e77129cba8ab3b51147695d4ce889cbe67905f6586b4e4f22491@c6c637de17db5f89a2fa1d1d935cb60c0e5e8958d3bfc47f903f774dd97398c8fe22093e113865ee98c3afdd1de62694"
101+
assert transaction["sender"] == "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"
102+
assert transaction["receiver"] == "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqthllllsy5r6rh"
103+
assert transaction["gasLimit"] == 20367001
104+
assert transaction["signature"] == "a889b50844eb5b33d410cbc8c8d2d88eebd64839d22fc1d246b82315123bd3acc6ad4445f9d2430965ce516ff89256faea42a97ebba2e1b386147ff8328b2e01"
55105

56106

57107
def test_remove_nodes_with_bls_keys(capsys: Any):

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "multiversx-sdk-cli"
7-
version = "9.5.1"
7+
version = "9.5.2"
88
authors = [
99
{ name="MultiversX" },
1010
]

0 commit comments

Comments
 (0)