From 31d4d171ca242a0552be46531fbf0225fc8132d9 Mon Sep 17 00:00:00 2001 From: "dmitry.shakhtarin" Date: Sun, 9 Sep 2018 11:01:35 +0300 Subject: [PATCH] summirizing contract --- .../main/scala/fluence/hackethberlin/Expr.scala | 13 +++++++++++++ .../main/scala/fluence/hackethberlin/FuncDef.scala | 14 -------------- src/main/scala/fluence/Auction.scala | 8 ++------ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/core/src/main/scala/fluence/hackethberlin/Expr.scala b/core/src/main/scala/fluence/hackethberlin/Expr.scala index 52fd0db..a240b12 100644 --- a/core/src/main/scala/fluence/hackethberlin/Expr.scala +++ b/core/src/main/scala/fluence/hackethberlin/Expr.scala @@ -115,6 +115,19 @@ object Expr { object Defs extends Defs { + import types._ + import syntax.singleton._ + + val send = + ProductType(('_addr ->> `public`(address)) :: ('_money ->> `public`(wei_value)) :: HNil).funcDef( + "send", + Void + ) { args ⇒ + for { + _ <- Free.pure(Void) + } yield Void + } + val predef = ProductType( (Symbol("block.timestamp") ->> timestamp) :: (Symbol("msg.value") ->> wei_value) :: diff --git a/core/src/main/scala/fluence/hackethberlin/FuncDef.scala b/core/src/main/scala/fluence/hackethberlin/FuncDef.scala index 102a757..43acce7 100644 --- a/core/src/main/scala/fluence/hackethberlin/FuncDef.scala +++ b/core/src/main/scala/fluence/hackethberlin/FuncDef.scala @@ -47,18 +47,4 @@ object FuncDef { mapped: ops.hlist.Mapped[_Values, InlineExpr] )(implicit values: ops.record.Values.Aux[Args, _Values]): FuncDef[Args, types.Void, mapped.Out] = new FuncDef(name, ProductType(argsDef), types.Void, args ⇒ body(args).map(_ ⇒ types.Void)) - - import types._ - import syntax.singleton._ - - val send = { - ProductType(('_addr ->> `public`(address)) :: ('_money ->> `public`(wei_value)) :: HNil).funcDef( - "send", - Void - ) { args ⇒ - for { - _ <- Free.pure(Void) - } yield Void - } - } } diff --git a/src/main/scala/fluence/Auction.scala b/src/main/scala/fluence/Auction.scala index 8304857..b775fa9 100644 --- a/src/main/scala/fluence/Auction.scala +++ b/src/main/scala/fluence/Auction.scala @@ -5,7 +5,6 @@ import hackethberlin.types._ import shapeless._ import Decorator._ import syntax.singleton._ -import cats.free.Free import fluence.hackethberlin.{Contract, Expr, FuncDef} import fluence.hackethberlin.types.{`public`, ProductType, Void} import shapeless.HNil @@ -39,7 +38,6 @@ object Auction extends App { Void ) { args ⇒ for { - _ <- Free.pure(Void) _ <- beneficiary :=: _beneficiary _ <- auction_start :=: `block.timestamp` _ <- auction_end :=: `+:+`(auction_start, _bidding_time) @@ -55,9 +53,7 @@ object Auction extends App { _ <- `assert`(`>>`(`msg.value`, highest_bid)) _ <- `if`(`not`(`:===:`(highest_bid, `msg.value`)), { () => - for { - _ <- FuncDef.send(highest_bidder :: highest_bid :: HNil).liftF - } yield Void + send(highest_bidder :: highest_bid :: HNil).liftF.map(_ => Void) }) _ <- highest_bidder :=: `msg.sender` _ <- highest_bid :=: `msg.value` @@ -72,7 +68,7 @@ object Auction extends App { _ <- `assert`(`>=`(`block.timestamp`, auction_end)) _ <- `assert`(`not`(ended)) _ <- ended :=: `True` - _ <- FuncDef.send(beneficiary :: highest_bid :: HNil).liftF + _ <- send(beneficiary :: highest_bid :: HNil).liftF.map(_ => Void) } yield Void }