summirizing contract

This commit is contained in:
dmitry.shakhtarin 2018-09-09 10:50:33 +03:00
parent 3adf7c3f51
commit c3f30a2b71
2 changed files with 11 additions and 12 deletions

View File

@ -123,5 +123,10 @@ object Expr {
(Symbol("False") ->> bool) :: (Symbol("False") ->> bool) ::
HNil 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)
} }
} }

View File

@ -13,11 +13,6 @@ import shapeless.HNil
object Auction extends App { object Auction extends App {
import Expr.Defs._ 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( val data = ProductType.self(
('beneficiary ->> public(address)) :: ('beneficiary ->> public(address)) ::
('auction_start ->> public(timestamp)) :: ('auction_start ->> public(timestamp)) ::
@ -51,12 +46,6 @@ object Auction extends App {
} yield Void } 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( val bid = `@public` @: `@payable` @: ProductType.hNil.funcDef(
"bid", "bid",
Void Void
@ -64,7 +53,12 @@ object Auction extends App {
for { for {
_ <- `assert`(`<<`(`block.timestamp`, auction_end)) _ <- `assert`(`<<`(`block.timestamp`, auction_end))
_ <- `assert`(`>>`(`msg.value`, highest_bid)) _ <- `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_bidder :=: `msg.sender`
_ <- highest_bid :=: `msg.value` _ <- highest_bid :=: `msg.value`
} yield Void } yield Void