Skip to main content

Vesting contract

🚧 Work in progress 🚧

struct VestingDatum {
beneficiary: PubKeyHash,
deadline: int
}

contract Vesting
{
spend unlock(inputIdx: int)
{
const { tx, spendingRef } = context;
const { resolved: spendingInput, ref: inputSpendingRef } = tx.inputs[inputIdx];

assert inputSpendingRef === spendingRef;

const InlineDatum{
datum: {
beneficiary,
deadline
} as VestingDatum
} = spendingInput.datum;

assert tx.requiredSigners.includes( beneficiary );

const Finite{ n } = tx.validityInterval.from.boundary;
assert n >= deadline;
}
}