@@ -778,26 +778,31 @@ def _set_redeemer_index(self):
778
778
sorted_mint_policies = sorted (self .mint .keys (), key = lambda x : x .to_cbor ())
779
779
else :
780
780
sorted_mint_policies = []
781
+ if self .withdrawals :
782
+ sorted_withdrawals = sorted (self .withdrawals .keys ())
783
+ else :
784
+ sorted_withdrawals = []
781
785
782
786
for i , utxo in enumerate (self .inputs ):
783
787
if (
784
788
utxo in self ._inputs_to_redeemers
785
789
and self ._inputs_to_redeemers [utxo ].tag == RedeemerTag .SPEND
786
790
):
787
791
self ._inputs_to_redeemers [utxo ].index = i
788
- elif (
789
- utxo in self ._inputs_to_redeemers
790
- and self ._inputs_to_redeemers [utxo ].tag == RedeemerTag .MINT
791
- ):
792
- redeemer = self ._inputs_to_redeemers [utxo ]
793
- redeemer .index = sorted_mint_policies .index (
794
- script_hash (self ._inputs_to_scripts [utxo ])
795
- )
796
792
797
793
for script , redeemer in self ._minting_script_to_redeemers :
798
794
if redeemer is not None :
799
795
redeemer .index = sorted_mint_policies .index (script_hash (script ))
800
796
797
+ for script , redeemer in self ._withdrawal_script_to_redeemers :
798
+ if redeemer is not None :
799
+ script_staking_credential = Address (
800
+ staking_part = script_hash (script ), network = self .context .network
801
+ )
802
+ redeemer .index = sorted_withdrawals .index (
803
+ script_staking_credential .to_primitive ()
804
+ )
805
+
801
806
self .redeemers .sort (key = lambda r : r .index )
802
807
803
808
def _build_tx_body (self ) -> TransactionBody :
0 commit comments