Guest User

Untitled

a guest
Mar 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. open Zen.Types
  2. open Zen.Vector
  3. open Zen.Base
  4. open Zen.Cost
  5. open Zen.Asset
  6.  
  7. module E = Zen.Error
  8. module ET = Zen.ErrorT
  9. module Tx = Zen.TxSkeleton
  10.  
  11. val cf: txSkeleton -> string -> data -> option lock -> #l:nat -> wallet l -> cost nat 13
  12. let cf _ _ _ _ #l _ =
  13. ret (64 + (l * 128 + 192) + 15 + 9 + 11)
  14.  
  15. val withNoContract: result txSkeleton -> cost (result (txSkeleton ** option message)) 9
  16. let withNoContract result =
  17. match result with
  18. | OK txSkeleton -> ET.ret (txSkeleton,None)
  19. | EX e -> ET.autoFail e
  20. | ERR msg -> ET.autoFailw msg
  21.  
  22. val get: #l:nat -> txSkeleton -> contractHash -> option lock -> wallet l -> cost (result txSkeleton) (64 + (l * 128 + 192) + 15)
  23. let get #l txSkeleton contractHash returnAddress (wallet:wallet l) =
  24. match returnAddress with
  25. | Some returnAddress ->
  26. let txSkeleton =
  27. Tx.lockToAddress zenAsset 10000UL returnAddress txSkeleton
  28. >>= Tx.fromWallet zenAsset 10000UL contractHash wallet in
  29.  
  30. ET.of_optionT "contract doesn't have enough zens to pay you" txSkeleton
  31. | None ->
  32. ET.autoFailw "returnAddress is required"
  33.  
  34. val init: txSkeleton -> contractHash -> cost (result txSkeleton) (64 + 64 + 8)
  35. let init txSkeleton contractHash =
  36. let! tokens = Tx.getAvailableTokens zenAsset txSkeleton in
  37.  
  38. let txSkeleton = Tx.lockToContract zenAsset tokens contractHash txSkeleton in
  39. ET.retT txSkeleton
  40.  
  41. val main: txSkeleton -> hash -> string -> data -> option lock -> #l:nat -> wallet l -> cost (result (txSkeleton ** option message)) (64 + (l * 128 + 192) + 15 + 9 + 11)
  42. let main txSkeleton contractHash command data returnAddress #l wallet =
  43. if command <> "init" then
  44. get txSkeleton contractHash returnAddress wallet
  45. >>= withNoContract
  46.  
  47. else
  48. autoInc (init txSkeleton contractHash >>= withNoContract)
Add Comment
Please, Sign In to add comment