Last active
January 22, 2021 15:05
-
-
Save brunjlar/4b855e6cf857696097004a98b8fe9855 to your computer and use it in GitHub Desktop.
Selling Ada
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<xml xmlns="https://developers.google.com/blockly/xml"><block type="BaseContractType" id="root_contract" deletable="false" x="13" y="187"><statement name="BaseContractType"><block type="WhenContractType" id="tcf~K:vpj%b}dN.]WEG^"><field name="timeout">1</field><statement name="case"><block type="DepositActionType" id="0(PWomg?{y:Jf@y|H:!C"><value name="from_party"><block type="RolePartyType" id="ty$m{-$9$~ta!8vMNRpx"><field name="role">buyer</field></block></value><value name="value"><block type="ConstantValueType" id="JMtSE}},TrK);~r:/7]g"><field name="constant">1000000000</field></block></value><value name="token"><block type="CustomTokenType" id="LWk}C?]!XaTT;l@9djDE"><field name="currency_symbol">dd</field><field name="token_name">dd</field></block></value><value name="party"><block type="RolePartyType" id="R:_D!h)b-$^{;FHqiZ9`"><field name="role">buyer</field></block></value><statement name="contract"><block type="WhenContractType" id=".*a62qyaufq/B[*$sHiz"><field name="timeout">2</field><statement name="case"><block type="DepositActionType" id="!8Xgo=_2d7yZ#9LROtN}"><value name="from_party"><block type="RolePartyType" id="nz!4((m)Kf!?%%/QL{f8"><field name="role">seller</field></block></value><value name="value"><block type="ConstantValueType" id="/k[NqWntyr_FB`~;.AOI"><field name="constant">1000000000</field></block></value><value name="token"><block type="AdaTokenType" id="86{Ns%IV|Q6UHM~7_pCy"/></value><value name="party"><block type="RolePartyType" id="p95Zh^eLn5]Ls2lTajZ+"><field name="role">seller</field></block></value><statement name="contract"><block type="WhenContractType" id="P6#k93$g~cI,_Us?.@C;"><field name="timeout">3</field><statement name="case"><block type="ChoiceActionType" id="a08IRa$VZrH5hR[:YJ]h"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="Dx[xFQEXT$u.*us,-rxn"><field name="role">kraken</field></block></value><statement name="bounds"><block type="BoundsType" id="Xo_#+!cU#}b$r^h7JFrp"><field name="from">1000000</field><field name="to">1000000000</field></block></statement><statement name="contract"><block type="IfContractType" id="A/-mgM$Hxm-J$@1:34*o"><value name="observation"><block type="ValueLEObservationType" id="b;:n8f)(*li26^$uh=a1"><value name="value1"><block type="ScaleValueType" id="_//g2LxX:%)^uX%N^sBb"><field name="numerator">10</field><field name="denominator">1</field><value name="value"><block type="ChoiceValueValueType" id="bPbHrlo4cvT:k`]zfiMY"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="xGHzo+hXF-h(B#aL{Z[d"><field name="role">kraken</field></block></value></block></value></block></value><value name="value2"><block type="ConstantValueType" id="h6?dQFB)aQ7.F%P,)TQT"><field name="constant">1000000000</field></block></value></block></value><statement name="contract1"><block type="PayContractType" id="e|qOYS@R7V/-.e^:U2uc"><value name="payee"><block type="PartyPayeeType" id="pqO||689:}VovPmhG0DA"><value name="party"><block type="RolePartyType" id=",!bg/674@Cfq!tG/y~$}"><field name="role">seller</field></block></value></block></value><value name="value"><block type="ScaleValueType" id="Z~~T$SzY(2S`bO~RHZ`}"><field name="numerator">10</field><field name="denominator">1</field><value name="value"><block type="ChoiceValueValueType" id="Y#j[)1A;OCOO0Qm-}:-j"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="V7=4izxb`dxdz{n]y#k1"><field name="role">kraken</field></block></value></block></value></block></value><value name="token"><block type="CustomTokenType" id="jYx9$^#S5#fMEhF7ANPg"><field name="currency_symbol">dd</field><field name="token_name">dd</field></block></value><value name="party"><block type="RolePartyType" id="~s`9((ZLp%@GJkE5w7e="><field name="role">buyer</field></block></value><statement name="contract"><block type="PayContractType" id="Vv%}R~;?DAkt~v`BARTr"><value name="payee"><block type="PartyPayeeType" id="ExRyt`Sob+jWQM5.slJN"><value name="party"><block type="RolePartyType" id="w@=Z1!DV0s9r24JkPd,^"><field name="role">buyer</field></block></value></block></value><value name="value"><block type="ConstantValueType" id="3_RA7_K79-BdPTiqX/ll"><field name="constant">1000000000</field></block></value><value name="token"><block type="AdaTokenType" id="EKdB=*#{;?,|MktFEgbQ"/></value><value name="party"><block type="RolePartyType" id="BhhEl`I%ZVj3fH5Y)z!u"><field name="role">seller</field></block></value><statement name="contract"><block type="CloseContractType" id="QPXLVHMR.YH/fgFjr(%!"/></statement></block></statement></block></statement><statement name="contract2"><block type="CloseContractType" id="9s7=*GJX@awW/fO8f7%h"/></statement></block></statement></block></statement><statement name="contract"><block type="CloseContractType" id="?[gAX@!5=1QIxElb?FY8"/></statement></block></statement></block></statement><statement name="contract"><block type="CloseContractType" id="5tXJ@[!P00Z_!;Z#4Vp7"/></statement></block></statement><next><block type="DepositActionType" id="~Z7{0-K-/v[#h2TXWs7#"><value name="from_party"><block type="RolePartyType" id="ML{cD,B~8[dUNt0OL2]2"><field name="role">seller</field></block></value><value name="value"><block type="ConstantValueType" id="?_W.JDH`Dn))yR|WY=bG"><field name="constant">1000000000</field></block></value><value name="token"><block type="AdaTokenType" id="C8pJ=.v_S}o,w%6{bKw^"/></value><value name="party"><block type="RolePartyType" id="Q,GN1T4no]C=%ZWZS[XO"><field name="role">seller</field></block></value><statement name="contract"><block type="WhenContractType" id="kr{-=52j84+DZ#6JzI*5"><field name="timeout">2</field><statement name="case"><block type="DepositActionType" id="=(b0lQplZU6JO%2ALhr0"><value name="from_party"><block type="RolePartyType" id="L3KBY[4@rr`OT%[4iv/]"><field name="role">buyer</field></block></value><value name="value"><block type="ConstantValueType" id="-~(^-#wIde.$}dbkuuL?"><field name="constant">1000000000</field></block></value><value name="token"><block type="CustomTokenType" id="i,u7ht*{FqJO4SL#T0{G"><field name="currency_symbol">dd</field><field name="token_name">dd</field></block></value><value name="party"><block type="RolePartyType" id="~a!Hb2FA,|T@%iW7poI-"><field name="role">buyer</field></block></value><statement name="contract"><block type="WhenContractType" id="B~6u_I5#spOVfy]s6Ks`"><field name="timeout">3</field><statement name="case"><block type="ChoiceActionType" id="rNie-A@meWgh;!OoFNe;"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="hrcJ`3+DK0sUc~6o_#N4"><field name="role">kraken</field></block></value><statement name="bounds"><block type="BoundsType" id="*ph[_Av`FS[$;)/Ur{d)"><field name="from">1000000</field><field name="to">1000000000</field></block></statement><statement name="contract"><block type="IfContractType" id=";wFf/{Mw{l+k#T.Z`Y(c"><value name="observation"><block type="ValueLEObservationType" id="%OEIW0s{^Y2e1V-3H?0k"><value name="value1"><block type="ScaleValueType" id="h7=_m/5H`$s?Jky;q7HY"><field name="numerator">10</field><field name="denominator">1</field><value name="value"><block type="ChoiceValueValueType" id="JcyV#5,9v,Gj5zPrWG|z"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="w}bYyjYU1PFP(dd/LMx2"><field name="role">kraken</field></block></value></block></value></block></value><value name="value2"><block type="ConstantValueType" id="I9_!fU+pF/QrJ9Pf*QSO"><field name="constant">1000000000</field></block></value></block></value><statement name="contract1"><block type="PayContractType" id="Os;@W`T`^8h%`BsB6}m$"><value name="payee"><block type="PartyPayeeType" id="o(4M?i9*/0/q{ao^#cxd"><value name="party"><block type="RolePartyType" id="8;m.{gGnHt`A?c+Z+25T"><field name="role">seller</field></block></value></block></value><value name="value"><block type="ScaleValueType" id="?!PQW/y2i.(=09PCw2PJ"><field name="numerator">10</field><field name="denominator">1</field><value name="value"><block type="ChoiceValueValueType" id="_9P,fIt!%^/Lt#]ex?`n"><field name="choice_name">adausdt</field><value name="party"><block type="RolePartyType" id="k5tLqN;u1je1h(.}^_3("><field name="role">kraken</field></block></value></block></value></block></value><value name="token"><block type="CustomTokenType" id="*]On|[C{Zm1_`tcd`x/}"><field name="currency_symbol">dd</field><field name="token_name">dd</field></block></value><value name="party"><block type="RolePartyType" id="tcprptZ-u[,rM[8|x+F6"><field name="role">buyer</field></block></value><statement name="contract"><block type="PayContractType" id="C,fEJDy6/J?wx(jT^G(y"><value name="payee"><block type="PartyPayeeType" id=":AsDj%Bdtk3KbGhsv^4H"><value name="party"><block type="RolePartyType" id="Y][H{ftRwR!VX+x*3+^b"><field name="role">buyer</field></block></value></block></value><value name="value"><block type="ConstantValueType" id="%6MReN96c6L2OrEWx=YN"><field name="constant">1000000000</field></block></value><value name="token"><block type="AdaTokenType" id="IMIp`A-F|-2`?inM*Nw*"/></value><value name="party"><block type="RolePartyType" id="avb:k*$X]uW@EjRwKAqE"><field name="role">seller</field></block></value><statement name="contract"><block type="CloseContractType" id="k4,}/.OjhRs}?1/.Gs=u"/></statement></block></statement></block></statement><statement name="contract2"><block type="CloseContractType" id="7V?=XL[k]wAY@sA.})~S"/></statement></block></statement></block></statement><statement name="contract"><block type="CloseContractType" id="nh)fC7lqc-AKqQ,m#kLD"/></statement></block></statement></block></statement><statement name="contract"><block type="CloseContractType" id="m^+K}*ab;Jx}iBr0C#1_"/></statement></block></statement></block></next></block></statement><statement name="contract"><block type="CloseContractType" id="SJu^e.}@iq=g@]|3u2;c"/></statement></block></statement></block></xml> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-# LANGUAGE OverloadedStrings #-} | |
module Example where | |
import Language.Marlowe | |
import Language.PlutusTx.Ratio (fromGHC) | |
main :: IO () | |
main = print . pretty $ contract | |
{- Define a contract, Close is the simplest contract which just ends the contract straight away | |
-} | |
contract :: Contract | |
contract = sellAda 1000000000 -- 1,000 ada | |
1000000000 -- 1,000 usdt | |
sellAda :: Integer -> Integer -> Contract | |
sellAda lovelace usdt = | |
When | |
[ Case buyerDeposit $ | |
When [Case sellerDeposit bothDeposited] 2 Close | |
, Case sellerDeposit $ | |
When [Case buyerDeposit bothDeposited] 2 Close | |
] 1 Close | |
where | |
token :: Token | |
token = Token "dd" "dd" | |
buyerDeposit, sellerDeposit :: Action | |
buyerDeposit = Deposit "buyer" "buyer" token $ Constant usdt | |
sellerDeposit = Deposit "seller" "seller" ada $ Constant lovelace | |
bothDeposited :: Contract | |
bothDeposited = | |
When | |
[ Case (Choice adausdt [Bound 1000000 1000000000]) $ | |
If (ValueLE amount $ Constant usdt) | |
(Pay "buyer" (Party "seller") token amount $ | |
Pay "seller" (Party "buyer") ada (Constant lovelace) | |
Close) | |
Close | |
] 3 Close | |
adausdt :: ChoiceId | |
adausdt = ChoiceId "adausdt" "kraken" | |
amount :: Value Observation | |
amount = Scale (fromGHC $ fromInteger lovelace / 100000000) $ ChoiceValue adausdt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Close |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment