From c3f30a2b719a533333cf252a69e9128fe96ffce3 Mon Sep 17 00:00:00 2001 From: "dmitry.shakhtarin" Date: Sun, 9 Sep 2018 10:50:33 +0300 Subject: [PATCH] summirizing contract --- .../scala/fluence/hackethberlin/Expr.scala | 5 +++++ src/main/scala/fluence/Auction.scala | 18 ++++++------------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/core/src/main/scala/fluence/hackethberlin/Expr.scala b/core/src/main/scala/fluence/hackethberlin/Expr.scala index 32dd1ea..52fd0db 100644 --- a/core/src/main/scala/fluence/hackethberlin/Expr.scala +++ b/core/src/main/scala/fluence/hackethberlin/Expr.scala @@ -123,5 +123,10 @@ object Expr { (Symbol("False") ->> bool) :: HNil ) + + val `block.timestamp` = predef.ref(Symbol("block.timestamp")) + val `msg.value` = predef.ref(Symbol("msg.value")) + val `msg.sender` = predef.ref(Symbol("msg.sender")) + val `True` = predef.ref('True) } } diff --git a/src/main/scala/fluence/Auction.scala b/src/main/scala/fluence/Auction.scala index 0b5a0dd..8304857 100644 --- a/src/main/scala/fluence/Auction.scala +++ b/src/main/scala/fluence/Auction.scala @@ -13,11 +13,6 @@ import shapeless.HNil object Auction extends App { import Expr.Defs._ - val `block.timestamp` = predef.ref(Symbol("block.timestamp")) - val `msg.value` = predef.ref(Symbol("msg.value")) - val `msg.sender` = predef.ref(Symbol("msg.sender")) - val `True` = predef.ref('True) - val data = ProductType.self( ('beneficiary ->> public(address)) :: ('auction_start ->> public(timestamp)) :: @@ -51,12 +46,6 @@ object Auction extends App { } yield Void } - val bidIf: () ⇒ Free[Expr, Void] = { () => - for { - _ <- FuncDef.send(highest_bidder :: highest_bid :: HNil).liftF - } yield Void - } - val bid = `@public` @: `@payable` @: ProductType.hNil.funcDef( "bid", Void @@ -64,7 +53,12 @@ object Auction extends App { for { _ <- `assert`(`<<`(`block.timestamp`, auction_end)) _ <- `assert`(`>>`(`msg.value`, highest_bid)) - _ <- `if`(`not`(`:===:`(highest_bid, `msg.value`)), bidIf) + _ <- `if`(`not`(`:===:`(highest_bid, `msg.value`)), { + () => + for { + _ <- FuncDef.send(highest_bidder :: highest_bid :: HNil).liftF + } yield Void + }) _ <- highest_bidder :=: `msg.sender` _ <- highest_bid :=: `msg.value` } yield Void