mirror of
https://github.com/FiloSpaTeam/plutus-pioneer-program.git
synced 2024-11-25 08:12:00 +01:00
65 lines
1.9 KiB
Haskell
65 lines
1.9 KiB
Haskell
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
import Language.Marlowe.Extended
|
||
|
|
||
|
main :: IO ()
|
||
|
main = print . pretty $ contract "Charles" "Simon" "Alex" $ Constant 100
|
||
|
|
||
|
choiceId :: Party -> ChoiceId
|
||
|
choiceId p = ChoiceId "Winner" p
|
||
|
|
||
|
contract :: Party -> Party -> Party -> Value -> Contract
|
||
|
contract alice bob charlie deposit =
|
||
|
When
|
||
|
[ f alice bob
|
||
|
, f bob alice
|
||
|
]
|
||
|
10 Close
|
||
|
where
|
||
|
f :: Party -> Party -> Case
|
||
|
f x y =
|
||
|
Case
|
||
|
(Deposit
|
||
|
x
|
||
|
x
|
||
|
ada
|
||
|
deposit
|
||
|
)
|
||
|
(When
|
||
|
[Case
|
||
|
(Deposit
|
||
|
y
|
||
|
y
|
||
|
ada
|
||
|
deposit
|
||
|
)
|
||
|
(When
|
||
|
[Case
|
||
|
(Choice
|
||
|
(choiceId charlie)
|
||
|
[Bound 1 2]
|
||
|
)
|
||
|
(If
|
||
|
(ValueEQ
|
||
|
(ChoiceValue $ choiceId charlie)
|
||
|
(Constant 1)
|
||
|
)
|
||
|
(Pay
|
||
|
bob
|
||
|
(Account alice)
|
||
|
ada
|
||
|
deposit
|
||
|
Close
|
||
|
)
|
||
|
(Pay
|
||
|
alice
|
||
|
(Account bob)
|
||
|
ada
|
||
|
deposit
|
||
|
Close
|
||
|
)
|
||
|
)]
|
||
|
30 Close
|
||
|
)]
|
||
|
20 Close
|
||
|
)
|