Skip to content
This repository was archived by the owner on Sep 17, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions locking-contract/locking-contract.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ library
hs-source-dirs: src

exposed-modules: LockingContract
CheckFuncs

build-depends: bytestring
, cardano-api
Expand Down
2 changes: 1 addition & 1 deletion locking-contract/locking_contract.plutus
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "PlutusScriptV1",
"description": "",
"cborHex": "59076b59076801000033232323232323232323232323232332232323232223222323253353330073333573466e1cd55cea802a40004642460020046eb8d5d09aab9e500623263533573803603203002e6666ae68cdc39aab9d3754008900010900091931a99ab9c01b0190180173333573466e1cd55cea8012400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40548c8c8cccd5cd19b8735573aa004900011991091980080180118101aba15002301a357426ae8940088c98d4cd5ce01581481401389aab9e5001137540026ae854028cd4054058d5d0a804999aa80c3ae501735742a010666aa030eb9405cd5d0a80399a80a8101aba15006335015335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805e05a05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700bc0b40b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01581481401389aab9e5001137540026ae854010cd4055d71aba15003335015335502375c40026ae854008c074d5d09aba2500223263533573804e04a04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053016357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008808007c07807407006c4d55cea80089baa001357426ae8940088c98d4cd5ce00d80c80c00b880c09931a99ab9c4910350543500018017135573ca00226ea80044dd50008919118011bac001320013550142233335573e0024a012466a01060086ae84008c00cd5d100100991919191999ab9a3370e6aae75400d20002333222123330010040030023232323333573466e1cd55cea80124000466442466002006004602a6ae854008cd4038050d5d09aba2500223263533573803403002e02c26aae7940044dd50009aba150033335500775ca00c6ae854008cd4029d71aba135744a004464c6a66ae7005805004c0484d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66aa028600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931a99ab9c01201000f00e00d135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c00f00d00c00b135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00680580500489baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98d4cd5ce00800700680600580509aab9d5001137540024646666ae68cdc3a800a4004424400446666ae68cdc3a801240004244002464c6a66ae7003002802402001c4d55ce9baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98d4cd5ce00a00900880800780700680600580509aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6a66ae7003402c0280240204d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263533573801401000e00c00a26aae7540044dd50008891119191999ab9a3370e6aae754009200023355009300635742a004600a6ae84d5d1280111931a99ab9c00a008007006135573ca00226ea80052612001112212330010030024910350543100112323001001223300330020020013222212200233512200212001200101"
"cborHex": "5912965912930100003323232323232323232323232323233223232323222323232323223223232533533300c3333573466e1cd55cea8052400046464646464246666600200c00a0080060046eb8d5d09aba2500b375c6ae854028dd71aba1500a375c6ae854028dd71aba1500a23263533573804003c03a0386666ae68cdc3a802240084244400646666ae68cdc3a802a40044244400246666ae68cdc3a8032400042444004464c6a66ae7008808007c078074070cccd5cd19b8735573aa004900011991091980080180119191919191919191919191999ab9a3370e6aae754029200023333333333222222222212333333333300100b00a00900800700600500400300233501a232323333573466e1cd55cea80124000466442466002006004604a6ae854008c07cd5d09aba2500223263533573806005c05a05826aae7940044dd50009aba1500a33501a01b35742a012666aa03aeb94070d5d0a804199aa80ebae501c35742a00e66a03404a6ae854018cd4068cd540a0099d69aba150053232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40add69aba15002302c357426ae8940088c98d4cd5ce01a01901881809aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a815bad35742a00460586ae84d5d1280111931a99ab9c034032031030135573ca00226ea8004d5d09aba2500223263533573806005c05a05826aae7940044dd50009aba1500433501a75c6ae85400ccd4068cd540a1d710009aba150023022357426ae8940088c98d4cd5ce01601501481409aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aab9e5001137540026ae854008c8c8c8cccd5cd19b875001480188c848888c010014c074d5d09aab9e500323333573466e1d40092004232122223002005301f357426aae7940108cccd5cd19b875003480088c848888c004014c06cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931a99ab9c027025024023022021020135573aa00226ea8004d5d09aba2500223263533573804003c03a038203a264c6a66ae712401035054350001d01c135573ca00226ea80044d55ce9baa001135744a00226ae8940044d5d1280089aab9e5001137540022464460046eb0004c8004d5405088cccd55cf80092804919a80418021aba100230033574400402646464646666ae68cdc39aab9d5003480008ccc88848ccc00401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500e014357426ae8940088c98d4cd5ce00d00c00b80b09aab9e5001137540026ae85400cccd5401dd728031aba1500233500a75c6ae84d5d1280111931a99ab9c016014013012135744a00226aae7940044dd5000899aa800bae75a224464460046eac004c8004d5404888c8cccd55cf80112804119a80399aa80a18031aab9d5002300535573ca00460086ae8800c0484d5d080088910010910911980080200189119191999ab9a3370ea0029000119091180100198029aba135573ca00646666ae68cdc3a801240044244002464c6a66ae7004804003c0380344d55cea80089baa001232323333573466e1cd55cea80124000466442466002006004600a6ae854008dd69aba135744a004464c6a66ae7003c03403002c4d55cf280089baa0012323333573466e1cd55cea800a400046eb8d5d09aab9e500223263533573801a01601401226ea8004488c8c8cccd5cd19b87500148010848880048cccd5cd19b875002480088c84888c00c010c018d5d09aab9e500423333573466e1d400d20002122200223263533573802001c01a01801601426aae7540044dd50009191999ab9a3370ea0029001109100111999ab9a3370ea0049000109100091931a99ab9c00c00a009008007135573a6ea80048c8c8c8c8c8cccd5cd19b8750014803084888888800c8cccd5cd19b875002480288488888880108cccd5cd19b875003480208cc8848888888cc004024020dd71aba15005375a6ae84d5d1280291999ab9a3370ea00890031199109111111198010048041bae35742a00e6eb8d5d09aba2500723333573466e1d40152004233221222222233006009008300c35742a0126eb8d5d09aba2500923333573466e1d40192002232122222223007008300d357426aae79402c8cccd5cd19b875007480008c848888888c014020c038d5d09aab9e500c23263533573802802402202001e01c01a01801601426aae7540104d55cf280189aab9e5002135573ca00226ea80048c8c8c8c8cccd5cd19b875001480088ccc888488ccc00401401000cdd69aba15004375a6ae85400cdd69aba135744a00646666ae68cdc3a80124000464244600400660106ae84d55cf280311931a99ab9c00d00b00a009008135573aa00626ae8940044d55cf280089baa001232323333573466e1d400520022321223001003375c6ae84d55cf280191999ab9a3370ea004900011909118010019bae357426aae7940108c98d4cd5ce00500400380300289aab9d5001137540022244464646666ae68cdc39aab9d5002480008cd54024c018d5d0a80118029aba135744a004464c6a66ae7002802001c0184d55cf280089baa00149848004448848cc00400c0092410350543100112323001001223300330020020013323233223322323232323233223232323232323232323232323232323322323232323232323232323232323232223232223232323232533350071335503030104901134578697420456e64706f696e74204572726f720033355025302012001233320015030001035350241223300233550323012491105369676e696e67205478204572726f7200330105007302400c330023355032301249011353696e676c6520536372697074204572726f7200301430115007001133550303010491134c6f636b20456e64706f696e74204572726f720033355025302012001233320015030001035350241223300233550323012491105369676e696e67205478204572726f720033029330105007302400c330105007500b330023355032301249011353696e676c6520536372697074204572726f72003014301150073300233550323012490110436f6e7420506179696e204572726f7200330135004323233301102e002001500b5003330023301249010d4654204d696e74204572726f72005005330023355032301249010b446174756d204572726f72003006500400113355030301049115556e6c6f636b20456e64706f696e74204572726f720033355025302012001233320015030001035350241223300233550323012491105369676e696e67205478204572726f720033029330105007302400c330105007500b330023355032301249011353696e676c6520536372697074204572726f720030143011500733002335503230124901104e4654205061796f7574204572726f7200333017323500122222222220095007500b500a3300233550323012490110436f6e7420506179696e204572726f7200330135004323233301102e002335530211200123500122335503e0023355302412001235001223355041002337049000800800800a805a80199801198092490d4654204275726e204572726f720050050011533535005223500222222222223302a00a00b21335503023500122200235001220011326353357389201154e6f20496e70757420746f2056616c69646174652e0002d00b1350042235002222222222253353302900a00b2135001223500122233355302a12001223500222235008223500522325335335005233500425335333573466e3c00800414013c5400c413c813c8cd4010813c94cd4ccd5cd19b8f00200105004f15003104f133504f00a0091009153350032153350022133500223350022335002233500223303d00200120522335002205223303d00200122205222233500420522225335333573466e1c01800c15415054cd4ccd5cd19b870050020550541333573466e1c01000415415041504150413454cd4004841344135411803c4c98d4cd5ce2481024c660003801615335323302f50340013235001222222222200750021030221350022225335004133029330200033500c2222200433020002302500c22103732001355034225335001103122153353500222200121533532350012222222222533533355302c12001502d235001225335333573466e3c00803c10c1084d40f000c540ec00884d40e8d400488004540e140188c8c8c8c8c8c854cd4ccccccd5d200391999ab9a3370e6aae75401d2000233335573ea00e4a06e46666aae7d401c940e08cccd55cfa8039281c91999aab9f50072503a233335573ea00e4a07646666aae7cd5d128041299aa99aa99aa99aa99a981d9aba1500d213503e222212333330010060050040030021503c215335303c35742a01a426a07e60040022a07a2a07842a66a60786ae85403084d40fcc008004540f4540f0854cd4c0f0d5d0a805909a81f98010008a81e8a81e10a99a981e1aba1500a213503f30020011503d1503c2503c03d03c03b03a0390382503601525035250352503525035036215335333573466e3cd404c88888014d4004888880140f40f054cd4ccd5cd19b8f3501322222004350012222200403d03c15335333573466e3cd404c8888800cd40048888800c0f40f054cd4ccd5cd19b8f3501322222002350012222200203d03c1333573466e3cd404c88888004d4004888880040f40f040f040f040f040f040ec4d5d1280089aba25001135744a00226ae8940044d55cf280089baa001103413004001135001220021323233502f335503100233502f33550310014800940c140c0c07000cd40088888800c4d4004888880052622233553013120012350012233550300023355301612001235001223355033002333500123300a4800000488cc02c0080048cc02800520000013300e00200122350022222222222533533355301e12001501f25335333573466e3c0300040cc0c84d40b0004540ac00c840cc40c48d40048888888888028894cd400440984cd5ce001012990009aa813911299a80108129109a801111299a9998070068010030815899804002003119801000a4000640026aa04a444a66a0042666ae68cdc38008020120119109a801111a800911299a80090a99a999ab9a3371201201805805626601600e66e0002403040ac54cd4ccd5cd19b8900800b02b02a13300a006008102a48008c8004d5408c88894cd400c4088884d4008888d400c88cd400894cd4ccd5cd19b8f00100a02b02a153350022133300d00800b00a1533533300e00d005009102b133300c00700a009133300c00700a009233300c00700a00922333573466e2000800407c080888ccd54c03048004d405140488d400488ccd54c03c48004d405d40548d400488ccd40048cc0292000001223300b00200123300a00148000004cc01000800488cd54c01c480048d400488cd54090008ccd40048cd54c02c480048d400488cd540a0008d5403400400488ccd5540200340080048cd54c02c480048d400488cd540a0008d54030004004ccd55400c020008004444888ccd54c01048005407ccd54c01c480048d400488cd54090008d54024004ccd54c0104800488d4008894cd4ccd54c03848004c8cd406088ccd400c88008008004d40048800448cc004894cd4008409440040888d400488cc028008014018400c4cd408c01000d4080004cd54c01c480048d400488c8cd5409400cc004014c8004d54094894cd40044d5402800c884d4008894cd4cc03000802044888cc0080280104c01800c008c8004d5407888448894cd40044008884cc014008ccd54c01c480040140100044484888c00c0104484888c004010c8004d5406c8844894cd400454074884cd4078c010008cd54c0184800401000488ccd5cd19b8f002001018017223333500125010250102501023335530041200150052350012253355335333573466e3cd400888008d40108800806c0684ccd5cd19b873500222001350042200101b01a101a135014003150130033200135501822112225335001135003220012213335005220023004002333553007120010050040011335008225335002210031001500b23500122222005235001222220021233500150125013112233550023500550030011123300100200f2253350021001100e123350022233350032200200200135001220011221233001003002223370000400246666666ae900049400c9400c9400c9400c8d4010dd7001002090911801001889100089000891299a80108008a99a8008803080388911801000990009aa803911299a80088011109a8011119803999804001003000801990009aa8031111299a80088011109a80111299a999ab9a3370e00290000050048999804003803001899980400399a80589199800804001801003001891001091000889100109109119800802001889109198008018010891918008009119801980100100099a89100109000900081"
}
78 changes: 78 additions & 0 deletions locking-contract/src/CheckFuncs.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
-- Options
{-# OPTIONS_GHC -fno-strictness #-}
{-# OPTIONS_GHC -fno-ignore-interface-pragmas #-}
{-# OPTIONS_GHC -fno-omit-interface-pragmas #-}
{-# OPTIONS_GHC -fobject-code #-}
{-# OPTIONS_GHC -fno-specialise #-}
{-# OPTIONS_GHC -fexpose-all-unfoldings #-}
module CheckFuncs
( isValueContinuing
, isPKHGettingPaid
, isSingleScript
) where
import qualified Plutus.V1.Ledger.Address as Address
import qualified Plutus.V1.Ledger.Value as Value
import Ledger hiding (singleton)
import PlutusTx.Prelude
{- |
Author : The Ancient Kraken
Copyright: 2022
Version : Rev 2
-}
-------------------------------------------------------------------------------
-- | Search each TxOut for a value.
-------------------------------------------------------------------------------
isValueContinuing :: [TxOut] -> Value -> Bool
isValueContinuing [] _ = False
isValueContinuing (x:xs) val
| checkVal = True
| otherwise = isValueContinuing xs val
where
checkVal :: Bool
checkVal = Value.geq (txOutValue x) val
-------------------------------------------------------------------------------
-- | Search each TxOut for an address and value.
-------------------------------------------------------------------------------
isPKHGettingPaid :: [TxOut] -> PubKeyHash -> Value -> Bool
isPKHGettingPaid [] _pkh _val = False
isPKHGettingPaid (x:xs) pkh val
| checkAddr && checkVal = True
| otherwise = isPKHGettingPaid xs pkh val
where
checkAddr :: Bool
checkAddr = txOutAddress x == Address.pubKeyHashAddress pkh

checkVal :: Bool
checkVal = Value.geq (txOutValue x) val
-------------------------------------------------------------------------------
-- | Force a single script utxo input.
-------------------------------------------------------------------------------
isSingleScript :: [TxInInfo] -> Bool
isSingleScript txInputs = loopInputs txInputs 0
where
loopInputs :: [TxInInfo] -> Integer -> Bool
loopInputs [] counter = counter == 1
loopInputs (x:xs) !counter =
case txOutDatumHash $ txInInfoResolved x of
Nothing -> do counter <= 1 && loopInputs xs counter
Just _ -> do counter <= 1 && loopInputs xs (counter + 1)
Loading