<p>The payment credential for any address in a collateral input must be a vkey credential (so not even native script).</p>
<p>You can see this check in the <code>feesOK</code> function in Figure 2 of the <a href="https://hydra.iohk.io/job/Cardano/cardano-ledger/specs.babbage-ledger/latest/download-by-type/doc-pdf/babbage-changes" rel="nofollow noreferrer">Babbage spec</a>. Or <a href="https://github.com/input-output-hk/cardano-ledger/blob/ef7e340e48d8e4f5957892d5a463985251345ca4/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs#L308" rel="nofollow noreferrer">here</a> in the implementation.</p>

CC BY-SA 4.0
2022-11-02T21:02:15.307Z
Thank you, Jared!
Vantuz Subhuman
CC BY-SA 4.0
2022-11-02T20:20:47.527Z
2022-11-02T20:20:47.527Z
Jared Corduan
<p><a href="https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl#L61" rel="nofollow noreferrer">Collateral inputs</a> are required to be added to a transaction when any Plutus script is executed within that tx (i.e. spending a Plutus address utxo or minting a Plutus policy asset).</p>
<p>Obvious that a collateral input cannot be from a Plutus script address, as spending them would require for the script to be executed, which then would require a different collateral to be used, in case the script fails.</p>
<p>But what <a href="https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl#L160-L170" rel="nofollow noreferrer">address types</a> are allowed for collateral inputs at all? Is it only general vkey addresses or Native script addresses are allowed as well (since they themselves don't require collateral to be spent)?</p>

<plutus><script><script-addresses><collateral>
Which address types are allowed for collateral inputs
# Which address types are allowed for collateral inputs

(Asked by: username_0 on 2022-11-02)

[Collateral inputs](https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl#L61) are required to be added to a transaction when any Plutus script is executed within that tx (i.e. spending a Plutus address utxo or minting a Plutus policy asset).

Obvious that a collateral input cannot be from a Plutus script address, as spending them would require for the script to be executed, which then would require a different collateral to be used, in case the script fails.

But what [address types](https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl#L160-L170) are allowed for collateral inputs at all? Is it only general vkey addresses or Native script addresses are allowed as well (since they themselves don't require collateral to be spent)?

**Tags:** plutus, script, script-addresses, collateral

---

## 1 answers

### Answer by username_1 on 2022-11-02. Score: 1

The payment credential for any address in a collateral input must be a vkey credential (so not even native script).

You can see this check in the `feesOK` function in Figure 2 of the [Babbage spec](https://hydra.iohk.io/job/Cardano/cardano-ledger/specs.babbage-ledger/latest/download-by-type/doc-pdf/babbage-changes). Or [here](https://github.com/input-output-hk/cardano-ledger/blob/ef7e340e48d8e4f5957892d5a463985251345ca4/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs#L308) in the implementation.

> **Comments:**
> **username_0**: Thank you, Jared!  

---

