diff --git a/docs/source/guides/transaction.rst b/docs/source/guides/transaction.rst index 5eb039ab..eec9da5e 100644 --- a/docs/source/guides/transaction.rst +++ b/docs/source/guides/transaction.rst @@ -147,7 +147,7 @@ Step 6 Add additional transaction information as needed: >>> builder.ttl = 3600 - >>> builder.reference_inputs.add(tx_in) + >>> builder.reference_inputs.add(utxo) Step 7 diff --git a/pycardano/txbuilder.py b/pycardano/txbuilder.py index 673c1981..02acbc8c 100644 --- a/pycardano/txbuilder.py +++ b/pycardano/txbuilder.py @@ -106,7 +106,7 @@ class TransactionBuilder: withdrawals: Optional[Withdrawals] = field(default=None) - reference_inputs: Set[TransactionInput] = field( + reference_inputs: Set[Union[UTxO, TransactionInput]] = field( init=False, default_factory=lambda: set() ) @@ -237,19 +237,19 @@ def add_script_input( if utxo.output.script: self._inputs_to_scripts[utxo] = utxo.output.script - self.reference_inputs.add(utxo.input) + self.reference_inputs.add(utxo) self._reference_scripts.append(utxo.output.script) elif not script: for i in self.context.utxos(str(utxo.output.address)): if i.output.script: self._inputs_to_scripts[utxo] = i.output.script - self.reference_inputs.add(i.input) + self.reference_inputs.add(i) self._reference_scripts.append(i.output.script) break elif isinstance(script, UTxO): assert script.output.script is not None self._inputs_to_scripts[utxo] = script.output.script - self.reference_inputs.add(script.input) + self.reference_inputs.add(script) self._reference_scripts.append(script.output.script) else: self._inputs_to_scripts[utxo] = script @@ -283,7 +283,7 @@ def add_minting_script( if isinstance(script, UTxO): assert script.output.script is not None self._minting_script_to_redeemers.append((script.output.script, redeemer)) - self.reference_inputs.add(script.input) + self.reference_inputs.add(script) self._reference_scripts.append(script.output.script) else: self._minting_script_to_redeemers.append((script, redeemer)) @@ -777,7 +777,11 @@ def _build_tx_body(self) -> TransactionBody: withdraws=self.withdrawals, collateral_return=self._collateral_return, total_collateral=self._total_collateral, - reference_inputs=list(self.reference_inputs) or None, + reference_inputs=[ + i.input if isinstance(i, UTxO) else i for i in self.reference_inputs + ] + if self.reference_inputs + else None, ) return tx_body