Skip to content

Commit d4a2f3a

Browse files
committed
Add proper redeemer index computation for withdrawals
1 parent bb61a82 commit d4a2f3a

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

pycardano/txbuilder.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -778,26 +778,31 @@ def _set_redeemer_index(self):
778778
sorted_mint_policies = sorted(self.mint.keys(), key=lambda x: x.to_cbor())
779779
else:
780780
sorted_mint_policies = []
781+
if self.withdrawals:
782+
sorted_withdrawals = sorted(self.withdrawals.keys())
783+
else:
784+
sorted_withdrawals = []
781785

782786
for i, utxo in enumerate(self.inputs):
783787
if (
784788
utxo in self._inputs_to_redeemers
785789
and self._inputs_to_redeemers[utxo].tag == RedeemerTag.SPEND
786790
):
787791
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-
)
796792

797793
for script, redeemer in self._minting_script_to_redeemers:
798794
if redeemer is not None:
799795
redeemer.index = sorted_mint_policies.index(script_hash(script))
800796

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+
801806
self.redeemers.sort(key=lambda r: r.index)
802807

803808
def _build_tx_body(self) -> TransactionBody:

0 commit comments

Comments
 (0)