@@ -328,7 +328,7 @@ def deposit(
328328 break
329329
330330 try :
331- call : GenericCall = self .subtensor_api ._subtensor .substrate .compose_call (
331+ move_call : GenericCall = self .subtensor_api ._subtensor .substrate .compose_call (
332332 call_module = "SubtensorModule" ,
333333 call_function = "move_stake" ,
334334 call_params = {
@@ -341,7 +341,7 @@ def deposit(
341341 )
342342
343343 move_extrinsic : GenericExtrinsic = self .subtensor_api ._subtensor .substrate .create_signed_extrinsic (
344- call = call ,
344+ call = move_call ,
345345 keypair = vault_wallet .coldkey ,
346346 )
347347
@@ -350,14 +350,6 @@ def deposit(
350350 wait_for_inclusion = True ,
351351 )
352352
353- stake_added_event : dict = list (
354- filter (lambda ev : ev ["event" ]["event_id" ] == "StakeAdded" , result .triggered_events )
355- )[0 ]["event" ]
356- stake_added = Balance .from_rao (
357- stake_added_event ["attributes" ][3 ] - 1 , # -1 is temporary fix for accuracy,
358- netuid = self .network .netuid ,
359- )
360-
361353 if result .is_success :
362354 break
363355 else :
@@ -371,30 +363,42 @@ def deposit(
371363 # 3. Revert the stake transfer if the stake move fails.
372364 for j in range (max_reverts ):
373365 try :
374- success = self .subtensor_api .extrinsics .transfer_stake (
375- wallet = vault_wallet ,
376- destination_coldkey_ss58 = sender ,
377- hotkey_ss58 = origin_hotkey ,
378- origin_netuid = self .network .netuid ,
379- destination_netuid = self .network .netuid ,
380- amount = stake_added ,
366+ revert_extrinsic : GenericExtrinsic = self .create_stake_transfer_extrinsic (
367+ amount = stake_added .rao ,
368+ source_stake = origin_hotkey ,
369+ source_wallet = vault_wallet ,
370+ dest = sender ,
371+ )
372+
373+ result : ExtrinsicReceipt = self .subtensor_api ._subtensor .substrate .submit_extrinsic (
374+ revert_extrinsic ,
381375 wait_for_inclusion = True ,
382376 )
383377
384- if success :
378+ if result . is_success :
385379 break
386380 else :
387- raise RuntimeError ( "Failed transfer the stake back to the source address." )
381+ raise ChainError . from_error ( result . error_message )
388382
389383 except BaseException as e :
390384 if j < max_reverts - 1 :
391385 time .sleep (max (2 ** j , max_backoff ))
392386 continue
393387 else :
388+ # When the revert fails, raise a critical error.
394389 raise CriticalError (f"Failed to revert the stake transfer: { e } " ) from e
395390
391+ # After reverting the stake transfer, raise an error for the stake move failure.
396392 raise SubtensorError (f"Failed to move the stake to the vault's stake address: { e } " ) from e
397393
394+ stake_added_event : dict = list (
395+ filter (lambda ev : ev ["event" ]["event_id" ] == "StakeAdded" , result .triggered_events ) # pyright: ignore[reportPossiblyUnboundVariable]
396+ )[0 ]["event" ]
397+ stake_added = Balance .from_rao (
398+ stake_added_event ["attributes" ][3 ] - 1 , # -1 is temporary fix for accuracy,
399+ netuid = self .network .netuid ,
400+ )
401+
398402 # 4. Deposit the collateral into the EVM contract.
399403 for i in range (max_retries ):
400404 try :
@@ -428,28 +432,32 @@ def deposit(
428432 # 4. Revert the stake transfer if deposit in the EVM fails.
429433 for j in range (max_reverts ):
430434 try :
431- success = self .subtensor_api .extrinsics .transfer_stake (
432- wallet = vault_wallet ,
433- destination_coldkey_ss58 = sender ,
434- hotkey_ss58 = vault_stake ,
435- origin_netuid = self .network .netuid ,
436- destination_netuid = self .network .netuid ,
437- amount = stake_added ,
435+ revert_extrinsic : GenericExtrinsic = self .create_stake_transfer_extrinsic (
436+ amount = stake_added .rao ,
437+ source_stake = vault_stake ,
438+ source_wallet = vault_wallet ,
439+ dest = sender ,
440+ )
441+
442+ result : ExtrinsicReceipt = self .subtensor_api ._subtensor .substrate .submit_extrinsic (
443+ revert_extrinsic ,
438444 wait_for_inclusion = True ,
439445 )
440446
441- if success :
447+ if result . is_success :
442448 break
443449 else :
444- raise RuntimeError ( "Failed transfer the stake back to the source address." )
450+ raise ChainError . from_error ( result . error_message )
445451
446452 except BaseException as e :
447453 if j < max_reverts - 1 :
448454 time .sleep (max (2 ** j , max_backoff ))
449455 continue
450456 else :
457+ # When the revert fails, raise a critical error.
451458 raise CriticalError (f"Failed to revert the stake transfer: { e } " ) from e
452459
460+ # After reverting the stake transfer, raise an error for the deposit failure.
453461 raise EVMError (f"Failed to deposit into the EVM contract: { e } " ) from e
454462
455463 return stake_added
@@ -751,22 +759,22 @@ def withdraw(
751759 # 2. Transfer the stake to the destination address.
752760 for i in range (max_retries ):
753761 try :
754- extrinsic : GenericExtrinsic = self .create_stake_transfer_extrinsic (
755- amount = amount .tao , # pyright: ignore[reportArgumentType]
762+ transfer_extrinsic : GenericExtrinsic = self .create_stake_transfer_extrinsic (
763+ amount = amount .rao ,
756764 source_stake = vault_stake ,
757765 source_wallet = vault_wallet ,
758766 dest = dest ,
759767 )
760768
761769 result : ExtrinsicReceipt = self .subtensor_api ._subtensor .substrate .submit_extrinsic (
762- extrinsic ,
770+ transfer_extrinsic ,
763771 wait_for_inclusion = True ,
764772 )
765773
766774 if result .is_success :
767775 break
768776 else :
769- ChainError .from_error (result .error_message )
777+ raise ChainError .from_error (result .error_message )
770778
771779 except BaseException as e :
772780 if i < max_retries - 1 :
@@ -789,10 +797,12 @@ def withdraw(
789797 time .sleep (max (2 ** j , max_backoff ))
790798 continue
791799 else :
800+ # When the revert fails, raise a critical error.
792801 raise CriticalError (
793802 f"Failed to revert the withdrawal from the EVM contract: { e } "
794803 ) from e
795804
805+ # After reverting the withdrawal, raise an error for the stake transfer failure.
796806 raise SubtensorError (f"Failed to transfer the stake to the destination wallet: { e } " ) from e
797807
798808 return amount
0 commit comments