plu-ts implementation of the "vesting" contract example;
the contract succeeds if the following two conditions are met:
- the transaction is signed by the
PPubKeyHashdefined in the UTxO datum; - the transaction lower bound is
Finiteand greather than the datumdeadlinefield
the contract source code can be found at src/contract.ts;
the repository includes a series of scripts to interact with the contract:
compiles the contract defined in src/contract.ts and saves the result in a file caled testnet/vesting.plutus.json following the cardano-cli format.
run using
npm run vesting:compileAlternatively you can use the
genKeysscript
requires the PRIVATE_TESTNET_PATH environment variable.
the private-testnet folder assumes a structure like the one of the woofpool/cardano-private-testnet-setup
run using
npm run vesting:setupgenerates two pairs of keys and two addresses in the ./testnet folder
run using
npm run vesting:genKeyscreates an utxo on the contract with the testnet/payment2.vkey credentials as beneficiary and a deadline setted to 10 seconds after the execution of the script
run using
npm run vesting:createtries to spend the first utxo on the contract using testnet/payment2.skey as requiredSigner
the transaction might fail if the deadline is not met
run using
npm run vesting:claimcreates a trasaction using all testnet/address1.addr and testnet/address2.addr as input going to the testnet faucet.
run using
npm run vesting:returnFaucetThe vesting example has been upgraded to support either of Blockfrost or Emulator providers.
-
npm run build -
npm run start -
npm run vesting:genKeys -
npm run test:emulatortestVestingE2E()Initializes emulator populating UTXOs for generated addresses- Invokes create of vesting contract
createVesting()- invokes
awaitBlockto for as long as required, ensure create transaction is confirmed - invokes
awaitBlock(blocksToWait)until deadline in the create contract is reached claimVesting()- invokes
awaitBlockto for as long as required, ensure claim transaction is confirmed
To return the test faucets into the preprod faucet address, invoke npm run test:emulator:returnFaucet
To run the same E2E test scenario above with Blockfrost, run npm run test:blockfrost