1 | | - | {-# STDLIB_VERSION 3 #-} |
---|
2 | | - | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | | - | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | func randomizer (inv) = { |
---|
5 | | - | let lastPlay = match getBinary(this, "lastPlay") { |
---|
6 | | - | case s: ByteVector => |
---|
7 | | - | s |
---|
8 | | - | case a: Unit => |
---|
9 | | - | base58'2ee4oFDYriWJ9EMeR' |
---|
10 | | - | case _ => |
---|
11 | | - | throw() |
---|
12 | | - | } |
---|
13 | | - | let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height)) |
---|
14 | | - | sha256(rand) |
---|
15 | | - | } |
---|
16 | | - | |
---|
17 | | - | |
---|
18 | | - | func startLotto (inv) = { |
---|
19 | | - | let playLimit = (wavesBalance(this) / 100) |
---|
20 | | - | let payment = extract(inv.payment) |
---|
21 | | - | if (!(isDefined(inv.payment))) |
---|
22 | | - | then throw("Should be with Payment in Waves") |
---|
23 | | - | else if (isDefined(payment.assetId)) |
---|
24 | | - | then throw("Payment should be in Waves") |
---|
25 | | - | else if ((payment.amount > playLimit)) |
---|
26 | | - | then throw(("Payment should be less than " + toString(playLimit))) |
---|
27 | | - | else { |
---|
28 | | - | let randhash = randomizer(inv) |
---|
29 | | - | let winTransfer = TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)]) |
---|
30 | | - | let writeLastPlay = WriteSet([DataEntry("lastPlay", randhash)]) |
---|
31 | | - | if ((500 > (toInt(randhash) % 1000))) |
---|
32 | | - | then ScriptResult(writeLastPlay, winTransfer) |
---|
33 | | - | else ScriptResult(writeLastPlay, TransferSet(nil)) |
---|
34 | | - | } |
---|
35 | | - | } |
---|
36 | | - | |
---|
37 | | - | |
---|
38 | | - | @Callable(inv) |
---|
39 | | - | func lotto () = startLotto(inv) |
---|
40 | | - | |
---|
41 | | - | |
---|
42 | | - | |
---|
43 | | - | @Callable(inv) |
---|
44 | | - | func default () = startLotto(inv) |
---|
45 | | - | |
---|
46 | | - | |
---|
| 1 | + | # no script |
---|