Skip to content
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
16 changes: 8 additions & 8 deletions src/Fida/Contract/Insurance.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ import PlutusTx.Prelude
--
-- On chain errors:
--
-- ERROR-INSURANCE-MAIN-VALIDATOR-0: illegal action for main validator
-- ERR-MAIN-0: illegal action for main validator
--
-- ERROR-INSURANCE-MAIN-VALIDATOR-1: TODO
-- ERR-MAIN-1: TODO
--
-- ERROR-INSURANCE-MAIN-VALIDATOR-2: TODO
-- ERR-MAIN-2: TODO
--
-- ERROR-INSURANCE-MAIN-VALIDATOR-3: TODO
-- ERR-MAIN-3: TODO
{-# INLINEABLE mkInsurancePolicyValidator #-}
mkInsurancePolicyValidator ::
InsuranceId ->
Expand All @@ -59,24 +59,24 @@ mkInsurancePolicyValidator iid d (PolicyFunding r) sc =
mkInsurancePolicyValidator iid d (PolicyOnRisk r) sc =
lifecycleOnRiskStateValidator iid d r sc
mkInsurancePolicyValidator (InsuranceId cs) d@(InsuranceInfo {iInfoStartDate, iInfoInsurancePeriod, iInfoState, iInfoFundingDeadline}) PolicyExpire sc =
traceIfFalse "ERROR-INSURANCE-MAIN-VALIDATOR-2" hasExpired
&& traceIfFalse "ERROR-INSURANCE-MAIN-VALIDATOR-3" correctOutputDatum
traceIfFalse "ERR-MAIN-2" hasExpired
&& traceIfFalse "ERR-MAIN-3" correctOutputDatum
where
txInfo = scriptContextTxInfo sc

expireDate =
case (iInfoState, iInfoStartDate) of
(Funding, _) -> iInfoFundingDeadline
(OnRisk, Just startDate) -> startDate + fromMilliSeconds iInfoInsurancePeriod
_ -> traceError "ERROR-INSURANCE-MAIN-VALIDATOR-1"
_ -> traceError "ERR-MAIN-1"

hasExpired = expireDate `before` txInfoValidRange txInfo

outputDatum = untypedOutputDatum cs sc policyInfoTokenName

correctOutputDatum = outputDatum == untypedUpdatePolicyState d Expired
mkInsurancePolicyValidator _ _ _ _ =
trace "ERROR-INSURANCE-MAIN-VALIDATOR-0" False
trace "ERR-MAIN-0" False

{-# INLINEABLE mkInsurancePolicyValidatorUntyped #-}
mkInsurancePolicyValidatorUntyped ::
Expand Down
4 changes: 2 additions & 2 deletions src/Fida/Contract/Insurance/InsuranceId.hs
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ PlutusTx.makeLift ''InsuranceId
{-# INLINEABLE mkInsuranceIdMintingPolicy #-}
mkInsuranceIdMintingPolicy :: TxOutRef -> () -> ScriptContext -> Bool
mkInsuranceIdMintingPolicy ref _ (ScriptContext txInfo (Minting _)) =
traceIfFalse "ERROR-INSURANCE-ID-MINTING-POLICY-0" isTxOutRefUsed
traceIfFalse "ERR-IID-0" isTxOutRefUsed
where
-- Ensure that the TxOutRef is used by the transaction.
-- This parameter ensures the uniqueness of the currency symbol.
isTxOutRefUsed =
ref `elem` map txInInfoOutRef (txInfoInputs txInfo)
mkInsuranceIdMintingPolicy _ _ _ =
trace "ERROR-INSURANCE-ID-MINTING-POLICY-1" False
trace "ERR-IID-1" False

{-# INLINEABLE mkInsuranceIdMintingPolicyUntyped #-}
mkInsuranceIdMintingPolicyUntyped ::
Expand Down
2 changes: 1 addition & 1 deletion src/Fida/Contract/Insurance/Lifecycle/Cancelled.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ lifecycleCancelledStateValidator ::
InsurancePolicyRedeemer ->
ScriptContext ->
Bool
lifecycleCancelledStateValidator _ _ _ _ = trace "ERROR-CANCELLED-VALIDATOR-0" False
lifecycleCancelledStateValidator _ _ _ _ = trace "ERR-CANC-0" False
28 changes: 14 additions & 14 deletions src/Fida/Contract/Insurance/Lifecycle/Funding.hs
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,19 @@ import PlutusTx.Prelude
--
-- On chain errors:
--
-- ERROR-FUNDING-VALIDATOR-0: Illegal action for Funding state
-- ERR-FUND-0: Illegal action for Funding state
--
-- ERROR-FUNDING-VALIDATOR-1: the tx is not signed by the policy authority
-- ERR-FUND-1: the tx is not signed by the policy authority
--
-- ERROR-FUNDING-VALIDATOR-2: the output datum is not updated correctly
-- ERR-FUND-2: the output datum is not updated correctly
--
-- ERROR-FUNDING-VALIDATOR-3: the number of sold fida cards is smaller than the number of fida cards
-- ERR-FUND-3: the number of sold fida cards is smaller than the number of fida cards
--
-- ERROR-FUNDING-VALIDATOR-4: the output datum is not updated correctly
-- ERR-FUND-4: the output datum is not updated correctly
--
-- ERROR-FUNDING-VALIDATOR-5: start date must be before valid range
-- ERR-FUND-5: start date must be before valid range
--
-- ERROR-FUNDING-VALIDATOR-6: tx is not signed by the policy holder or policy authority
-- ERR-FUND-6: tx is not signed by the policy holder or policy authority
{-# INLINEABLE lifecycleFundingStateValidator #-}
lifecycleFundingStateValidator ::
InsuranceId ->
Expand All @@ -60,19 +60,19 @@ lifecycleFundingStateValidator ::
ScriptContext ->
Bool
lifecycleFundingStateValidator (InsuranceId cs) d@InsuranceInfo {iInfoPolicyAuthority} PolicyFundingCancel sc =
traceIfFalse "ERROR-FUNDING-VALIDATOR-1" isSigned
&& traceIfFalse "ERROR-FUNDING-VALIDATOR-2" hasCorrectOutput
traceIfFalse "ERR-FUND-1" isSigned
&& traceIfFalse "ERR-FUND-2" hasCorrectOutput
where
isSigned = isSignedByTheAuthority sc iInfoPolicyAuthority

outputDatum = untypedOutputDatum cs sc policyInfoTokenName

hasCorrectOutput = outputDatum == untypedUpdatePolicyState d Cancelled
lifecycleFundingStateValidator (InsuranceId cs) (iinfo@InsuranceInfo {iInfoState = Funding, iInfoFidaCardNumber, iInfoPolicyHolder, iInfoPolicyAuthority}) (PolicyFundingFundingComplete startDate) sc =
traceIfFalse "ERROR-FUNDING-VALIDATOR-3" (fidaCardsSold >= iInfoFidaCardNumber)
&& traceIfFalse "ERROR-FUNDING-VALIDATOR-4" hasCorrectOutput
&& traceIfFalse "ERROR-FUNDING-VALIDATOR-5" isStartDateCorrect
&& traceIfFalse "ERROR-FUNDING-VALIDATOR-6" (isSignedByPolicyHolder || isSignedByAuthority')
traceIfFalse "ERR-FUND-3" (fidaCardsSold >= iInfoFidaCardNumber)
&& traceIfFalse "ERR-FUND-4" hasCorrectOutput
&& traceIfFalse "ERR-FUND-5" isStartDateCorrect
&& traceIfFalse "ERR-FUND-6" (isSignedByPolicyHolder || isSignedByAuthority')
where
txInfo = scriptContextTxInfo sc

Expand All @@ -97,4 +97,4 @@ lifecycleFundingStateValidator (InsuranceId cs) (iinfo@InsuranceInfo {iInfoState
isSignedByPolicyHolder = txSignedBy txInfo iInfoPolicyHolder

isSignedByAuthority' = isSignedByTheAuthority sc iInfoPolicyAuthority
lifecycleFundingStateValidator _ _ _ _ = trace "ERROR-FUNDING-VALIDATOR-0" False
lifecycleFundingStateValidator _ _ _ _ = trace "ERR-FUND-0" False
30 changes: 15 additions & 15 deletions src/Fida/Contract/Insurance/Lifecycle/Initiated.hs
Original file line number Diff line number Diff line change
Expand Up @@ -49,21 +49,21 @@ import PlutusTx.Prelude
--
-- On chain errors:
--
-- ERROR-INITIATED-VALIDATOR-0: Illegal action for Initiated state
-- ERR-INIT-0: Illegal action for Initiated state
--
-- ERROR-INITIATED-VALIDATOR-1: Transaction not signed by policy authority
-- ERR-INIT-1: Transaction not signed by policy authority
--
-- ERROR-INITIATED-VALIDATOR-2: Insurance policy state not changed to Cancelled
-- ERR-INIT-2: Insurance policy state not changed to Cancelled
--
-- ERROR-INITIATED-VALIDATOR-3: Payments not properly distributed
-- ERR-INIT-3: Payments not properly distributed
--
-- ERROR-INITIATED-VALIDATOR-4: UTxO with policy datum was not spent
-- ERR-INIT-4: UTxO with policy datum was not spent
--
-- ERROR-INITIATED-VALIDATOR-5: Payment info not marked by NFT
-- ERR-INIT-5: Payment info not marked by NFT
--
-- ERROR-INITIATED-VALIDATOR-6: Insurance policy state not changed to Funding
-- ERR-INIT-6: Insurance policy state not changed to Funding
--
-- ERROR-INITIATED-VALIDATOR-7: UTxO with premium payment was not spent
-- ERR-INIT-7: UTxO with premium payment was not spent
{-# INLINEABLE lifecycleInitiatedStateValidator #-}
lifecycleInitiatedStateValidator ::
InsuranceId ->
Expand All @@ -72,17 +72,17 @@ lifecycleInitiatedStateValidator ::
ScriptContext ->
Bool
lifecycleInitiatedStateValidator (InsuranceId cs) datum@(InsuranceInfo {iInfoState = Initiated}) PolicyInitiatedCancel sc =
traceIfFalse "ERROR-INITIATED-VALIDATOR-1" isSigned
&& traceIfFalse "ERROR-INITIATED-VALIDATOR-2" hasCorrectOutput
traceIfFalse "ERR-INIT-1" isSigned
&& traceIfFalse "ERR-INIT-2" hasCorrectOutput
where
isSigned = isSignedByTheAuthority sc $ iInfoPolicyAuthority datum

outputDatum = untypedOutputDatum cs sc policyInfoTokenName

hasCorrectOutput = outputDatum == untypedUpdatePolicyState datum Cancelled
lifecycleInitiatedStateValidator (InsuranceId cs) PremiumPaymentInfo {..} PolicyInitiatedPayPremium sc =
traceIfFalse "ERROR-INITIATED-VALIDATOR-3" (length (nub payments) == length ppInfoPiggyBanks)
&& traceIfNotSingleton "ERROR-INITIATED-VALIDATOR-4" isPolicyInfoSpent
traceIfFalse "ERR-INIT-3" (length (nub payments) == length ppInfoPiggyBanks)
&& traceIfNotSingleton "ERR-INIT-4" isPolicyInfoSpent
where
txInfo = scriptContextTxInfo sc

Expand All @@ -103,8 +103,8 @@ lifecycleInitiatedStateValidator (InsuranceId cs) PremiumPaymentInfo {..} Policy
in paid >= ppInfoPremiumAmountPerPiggyBank && paid == amount
]
lifecycleInitiatedStateValidator (InsuranceId cs) d@InsuranceInfo {} PolicyInitiatedPayPremium sc =
traceIfFalse "ERROR-INITIATED-VALIDATOR-6" hasCorrectOutput
&& traceIfNotSingleton "ERROR-INITIATED-VALIDATOR-7" isPremiumPaymentSpent
traceIfFalse "ERR-INIT-6" hasCorrectOutput
&& traceIfNotSingleton "ERR-INIT-7" isPremiumPaymentSpent
where
txInfo = scriptContextTxInfo sc

Expand All @@ -119,4 +119,4 @@ lifecycleInitiatedStateValidator (InsuranceId cs) d@InsuranceInfo {} PolicyIniti
, valueOf value cs policyPaymentTokenName == 1
]
lifecycleInitiatedStateValidator _ _ _ _ =
trace "ERROR-INITIATED-VALIDATOR-0" False
trace "ERR-INIT-0" False
60 changes: 32 additions & 28 deletions src/Fida/Contract/Insurance/Lifecycle/OnRisk.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,31 +25,31 @@ import Plutus.V2.Ledger.Contexts (txSignedBy)
import PlutusTx.Prelude

-- |
-- ERROR-ON-RISK-VALIDATOR-0: Output datum doesn't match the updated datum
-- ERR-ON-RISK-0: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-1: Not signed by the policy holder
-- ERR-ON-RISK-1: Not signed by the policy holder
--
-- ERROR-ON-RISK-VALIDATOR-2: Not signed by the policy authority
-- ERR-ON-RISK-2: Not signed by the policy authority
--
-- ERROR-ON-RISK-VALIDATOR-3: Output datum doesn't match the updated datum
-- ERR-ON-RISK-3: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-4: Not signed by the policy holder
-- ERR-ON-RISK-4: Not signed by the policy holder or by the policy authority
--
-- ERROR-ON-RISK-VALIDATOR-5: Output datum doesn't match the updated datum
-- ERR-ON-RISK-5: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-6: Not signed by the policy authority
-- ERR-ON-RISK-6: Not signed by the policy authority
--
-- ERROR-ON-RISK-VALIDATOR-7: Output datum doesn't match the updated datum
-- ERR-ON-RISK-7: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-8: Not signed by the policy authority
-- ERR-ON-RISK-8: Not signed by the policy authority
--
-- ERROR-ON-RISK-VALIDATOR-9: Output datum doesn't match the updated datum
-- ERR-ON-RISK-9: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-10: Output datum doesn't match the updated datum
-- ERR-ON-RISK-10: Output datum doesn't match the updated datum
--
-- ERROR-ON-RISK-VALIDATOR-11: Claim expired
-- ERR-ON-RISK-11: Claim expired
--
-- ERROR-ON-RISK-VALIDATOR-12: Not signed by the policy holder
-- ERR-ON-RISK-12: Not signed by the policy holder
{-# INLINEABLE lifecycleOnRiskStateValidator #-}
lifecycleOnRiskStateValidator ::
InsuranceId ->
Expand All @@ -58,8 +58,8 @@ lifecycleOnRiskStateValidator ::
ScriptContext ->
Bool
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoState = OnRisk}) (PolicyOnRiskCreateClaim c@(ClaimInfo {claimAccepted, claimDate})) sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-0" correctOutputDatum
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-1" isSignedByPolicyHolder
traceIfFalse "ERR-ON-RISK-0" correctOutputDatum
&& traceIfFalse "ERR-ON-RISK-1" isSignedByPolicyHolder
where
isSignedByPolicyHolder = txSignedBy (scriptContextTxInfo sc) (iInfoPolicyHolder d)

Expand All @@ -74,40 +74,44 @@ lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoState = On
&& claimAccepted == False
&& isClaimDateValid
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoPolicyAuthority, iInfoClaim = Just c}) PolicyOnRiskAcceptClaim sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-2" (isSignedByTheAuthority sc iInfoPolicyAuthority)
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-3" correctOutputDatum
traceIfFalse "ERR-ON-RISK-2" (isSignedByTheAuthority sc iInfoPolicyAuthority)
&& traceIfFalse "ERR-ON-RISK-3" correctOutputDatum
where
outputDatum = untypedOutputDatum cs sc policyInfoTokenName

correctOutputDatum = outputDatum == untypedUpdateClaim d c {claimAccepted = True}
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoPolicyHolder, iInfoClaim = Just _}) PolicyOnRiskCloseClaim sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-4" (txSignedBy txInfo iInfoPolicyHolder)
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-5" correctOutputDatum
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoPolicyAuthority, iInfoPolicyHolder, iInfoClaim = Just _}) PolicyOnRiskCloseClaim sc =
traceIfFalse "ERR-ON-RISK-4" (isSignedByAuth || isSignedByPolicyHolder)
&& traceIfFalse "ERR-ON-RISK-5" correctOutputDatum
where
txInfo = scriptContextTxInfo sc

outputDatum = untypedOutputDatum cs sc policyInfoTokenName

correctOutputDatum = outputDatum == untypedUnsetClaim d

isSignedByAuth = isSignedByTheAuthority sc iInfoPolicyAuthority

isSignedByPolicyHolder = txSignedBy txInfo iInfoPolicyHolder
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoPolicyAuthority}) PolicyOnRiskFailClaim sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-6" (isSignedByTheAuthority sc iInfoPolicyAuthority)
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-7" correctOutputDatum
traceIfFalse "ERR-ON-RISK-6" (isSignedByTheAuthority sc iInfoPolicyAuthority)
&& traceIfFalse "ERR-ON-RISK-7" correctOutputDatum
where
outputDatum = untypedOutputDatum cs sc policyInfoTokenName

correctOutputDatum = outputDatum == untypedUnsetClaim d
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoPolicyAuthority}) PolicyOnRiskCancel sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-8" isSigned
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-9" correctOutput
traceIfFalse "ERR-ON-RISK-8" isSigned
&& traceIfFalse "ERR-ON-RISK-9" correctOutput
where
isSigned = isSignedByTheAuthority sc iInfoPolicyAuthority

outputDatum = untypedOutputDatum cs sc policyInfoTokenName

correctOutput = outputDatum == untypedUpdatePolicyState d Cancelled
lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoClaim = Just (ClaimInfo {claimDate}), iInfoClaimTimeToLive}) PolicyOnRiskExpireClaim sc =
traceIfFalse "ERROR-ON-RISK-VALIDATOR-10" correctOutputDatum
&& traceIfFalse "ERROR-ON-RISK-VALIDATOR-11" claimExpired
traceIfFalse "ERR-ON-RISK-10" correctOutputDatum
&& traceIfFalse "ERR-ON-RISK-11" claimExpired
where
outputDatum = untypedOutputDatum cs sc policyInfoTokenName

Expand All @@ -117,7 +121,7 @@ lifecycleOnRiskStateValidator (InsuranceId cs) d@(InsuranceInfo {iInfoClaim = Ju

claimExpired = before claimDeadLine (txInfoValidRange $ scriptContextTxInfo sc)
lifecycleOnRiskStateValidator (InsuranceId cs) PolicyClaimPayment PolicyOnRiskClaimPayment sc =
traceIfNotSingleton "ERROR-ON-RISK-VALIDATOR-12" isSignedByPolicyHolder
traceIfNotSingleton "ERR-ON-RISK-12" isSignedByPolicyHolder
where
txInfo = scriptContextTxInfo sc

Expand All @@ -127,4 +131,4 @@ lifecycleOnRiskStateValidator (InsuranceId cs) PolicyClaimPayment PolicyOnRiskCl
, txSignedBy txInfo iInfoPolicyHolder
]
lifecycleOnRiskStateValidator _ _ _ _ =
trace "ERROR-ON-RISK-VALIDATOR-13" False
trace "ERR-ON-RISK-13" False
Loading
Loading