Skip to main content

makeValidator

[!CAUTION]

This method is deprecated as of Plutus V3

Once on-chain contracts are not typed. Instead they only receive generic data arguments.

This is why makeValidator exists.

The type signature is not too complicated:

export function makeValidator(
typedValidator: Term<
PLam<
PType,
PLam<
PType,
PLam<
typeof PScriptContext,
PBool
>
>
>
>,
errorMessage?: string
): TermFn<[PData,PData,PData], PUnit>

As you can see it takes any typed validator and returns a generic untyped validator so that the node will be able to evaluate it correctly.

use makeValidator only for spending scripts

As you can see; makeValidator expects a contract with 3 arguments.

This means it can only be used for contracts with Spending as PScriptPurpose

For all other purposes you likely want to use makeRedeemerValidator

errorMessage

Optionally you can pass a string that will be included in the on-chain script and passed to ptrace in case of failure