tx · HitjX6KrbEPjJxDDRj1HhmTcJPuef2CDeqzt4stUiFLd 3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk: -0.01000000 Waves 2021.10.14 22:09 [1746347] smart account 3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk > SELF 0.00000000 Waves
{ "type": 13, "id": "HitjX6KrbEPjJxDDRj1HhmTcJPuef2CDeqzt4stUiFLd", "fee": 1000000, "feeAssetId": null, "timestamp": 1634238607021, "version": 2, "chainId": 84, "sender": "3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk", "senderPublicKey": "8v9pmcXqHz9DTc5k1Z8duTYyDwykFxN3EzdZ9WAn3KXJ", "proofs": [ "5PfY1EmCt1Bf3eDBDjJoLrjPRaxSXmr2uyTgQroCKZX93B5rMvoaM6pKCHt1rfy145fFyD2GcUQcFhJ2dVAnaRem" ], "script": "base64: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", "height": 1746347, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4pxR83t4yTJeEoEXLJbuBMvD8knX9kXrRNjVA9M1UieR Next: 92s2wdwbg1FxT41m2N5S69MaNAiRGdcu9y696gc2EcP4 Diff:
Old | New | Differences | |
---|---|---|---|
34 | 34 | let callerAddress = toBase58String(inv.caller.bytes) | |
35 | 35 | let randhash = randomizer(inv) | |
36 | 36 | let rand = (toInt(randhash) % 101) | |
37 | - | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
38 | - | let winAmountValue = if (isDefined(winAmount)) | |
39 | - | then winAmount | |
40 | - | else 0 | |
41 | - | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
42 | - | let playAmountValue = if (isDefined(playAmount)) | |
43 | - | then playAmount | |
44 | - | else 0 | |
45 | 37 | if (if ((guessEnd > rand)) | |
46 | 38 | then (rand > guessStart) | |
47 | 39 | else false) | |
48 | - | then { | |
49 | - | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmountValue + 1)), DataEntry((callerAddress + "_win_amount"), (winAmountValue + 1))]) | |
50 | - | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
51 | - | } | |
52 | - | else { | |
53 | - | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmountValue + 1)), DataEntry((callerAddress + "_win_amount"), winAmountValue)]) | |
54 | - | ScriptResult(writeLastPlay, TransferSet(nil)) | |
55 | - | } | |
40 | + | then if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
41 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
42 | + | else false) | |
43 | + | then { | |
44 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
45 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
46 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
47 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
48 | + | } | |
49 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
50 | + | then !(isDefined(getInteger(this, (callerAddress + "_play_amount")))) | |
51 | + | else false) | |
52 | + | then { | |
53 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
54 | + | let playAmount = 0 | |
55 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
56 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
57 | + | } | |
58 | + | else if (if (!(isDefined(getInteger(this, (callerAddress + "_win_amount"))))) | |
59 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
60 | + | else false) | |
61 | + | then { | |
62 | + | let winAmount = 0 | |
63 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
64 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
65 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
66 | + | } | |
67 | + | else { | |
68 | + | let winAmount = 0 | |
69 | + | let playAmount = 0 | |
70 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
71 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
72 | + | } | |
73 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
74 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
75 | + | else false) | |
76 | + | then { | |
77 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
78 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
79 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
80 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
81 | + | } | |
82 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
83 | + | then !(isDefined(getInteger(this, (callerAddress + "_play_amount")))) | |
84 | + | else false) | |
85 | + | then { | |
86 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
87 | + | let playAmount = 0 | |
88 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
89 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
90 | + | } | |
91 | + | else if (if (!(isDefined(getInteger(this, (callerAddress + "_win_amount"))))) | |
92 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
93 | + | else false) | |
94 | + | then { | |
95 | + | let winAmount = 0 | |
96 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
97 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
98 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
99 | + | } | |
100 | + | else { | |
101 | + | let winAmount = 0 | |
102 | + | let playAmount = 0 | |
103 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
104 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
105 | + | } | |
56 | 106 | } | |
57 | 107 | } | |
58 | 108 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func randomizer (inv) = { | |
5 | 5 | let lastPlay = match getBinary(this, "lastPlay") { | |
6 | 6 | case s: ByteVector => | |
7 | 7 | s | |
8 | 8 | case _: Unit => | |
9 | 9 | base58'2ee4oFDYriWJ9EMeR' | |
10 | 10 | case _ => | |
11 | 11 | throw("Match error") | |
12 | 12 | } | |
13 | 13 | let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height)) | |
14 | 14 | sha256(rand) | |
15 | 15 | } | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func startLotto (inv,guessStart,guessEnd) = { | |
19 | 19 | let playLimit = (wavesBalance(this) / 100) | |
20 | 20 | let payment = extract(inv.payment) | |
21 | 21 | if (!(isDefined(inv.payment))) | |
22 | 22 | then throw("Should be with Payment in Waves") | |
23 | 23 | else if (isDefined(payment.assetId)) | |
24 | 24 | then throw("Payment should be in Waves") | |
25 | 25 | else if ((payment.amount > playLimit)) | |
26 | 26 | then throw(("Payment should be less than " + toString(playLimit))) | |
27 | 27 | else if ((0 > guessStart)) | |
28 | 28 | then throw("guessStart and guessEnd Must be in between 0-100") | |
29 | 29 | else if ((guessEnd > 100)) | |
30 | 30 | then throw("guessStart and guessEnd Must be in between 0-100") | |
31 | 31 | else if ((guessStart > guessEnd)) | |
32 | 32 | then throw("guessStart and guessEnd Must be in between 0-100") | |
33 | 33 | else { | |
34 | 34 | let callerAddress = toBase58String(inv.caller.bytes) | |
35 | 35 | let randhash = randomizer(inv) | |
36 | 36 | let rand = (toInt(randhash) % 101) | |
37 | - | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
38 | - | let winAmountValue = if (isDefined(winAmount)) | |
39 | - | then winAmount | |
40 | - | else 0 | |
41 | - | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
42 | - | let playAmountValue = if (isDefined(playAmount)) | |
43 | - | then playAmount | |
44 | - | else 0 | |
45 | 37 | if (if ((guessEnd > rand)) | |
46 | 38 | then (rand > guessStart) | |
47 | 39 | else false) | |
48 | - | then { | |
49 | - | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmountValue + 1)), DataEntry((callerAddress + "_win_amount"), (winAmountValue + 1))]) | |
50 | - | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
51 | - | } | |
52 | - | else { | |
53 | - | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmountValue + 1)), DataEntry((callerAddress + "_win_amount"), winAmountValue)]) | |
54 | - | ScriptResult(writeLastPlay, TransferSet(nil)) | |
55 | - | } | |
40 | + | then if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
41 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
42 | + | else false) | |
43 | + | then { | |
44 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
45 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
46 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
47 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
48 | + | } | |
49 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
50 | + | then !(isDefined(getInteger(this, (callerAddress + "_play_amount")))) | |
51 | + | else false) | |
52 | + | then { | |
53 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
54 | + | let playAmount = 0 | |
55 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
56 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
57 | + | } | |
58 | + | else if (if (!(isDefined(getInteger(this, (callerAddress + "_win_amount"))))) | |
59 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
60 | + | else false) | |
61 | + | then { | |
62 | + | let winAmount = 0 | |
63 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
64 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
65 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
66 | + | } | |
67 | + | else { | |
68 | + | let winAmount = 0 | |
69 | + | let playAmount = 0 | |
70 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), (winAmount + 1))]) | |
71 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
72 | + | } | |
73 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
74 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
75 | + | else false) | |
76 | + | then { | |
77 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
78 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
79 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
80 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
81 | + | } | |
82 | + | else if (if (isDefined(getInteger(this, (callerAddress + "_win_amount")))) | |
83 | + | then !(isDefined(getInteger(this, (callerAddress + "_play_amount")))) | |
84 | + | else false) | |
85 | + | then { | |
86 | + | let winAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_win_amount")) | |
87 | + | let playAmount = 0 | |
88 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
89 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
90 | + | } | |
91 | + | else if (if (!(isDefined(getInteger(this, (callerAddress + "_win_amount"))))) | |
92 | + | then isDefined(getInteger(this, (callerAddress + "_play_amount"))) | |
93 | + | else false) | |
94 | + | then { | |
95 | + | let winAmount = 0 | |
96 | + | let playAmount = getIntegerValue(this, (toBase58String(inv.caller.bytes) + "_play_amount")) | |
97 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
98 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
99 | + | } | |
100 | + | else { | |
101 | + | let winAmount = 0 | |
102 | + | let playAmount = 0 | |
103 | + | let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry("lastbet", ((toString(guessStart) + "_") + toString(guessEnd))), DataEntry((callerAddress + "_play_amount"), (playAmount + 1)), DataEntry((callerAddress + "_win_amount"), winAmount)]) | |
104 | + | ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(inv.caller, ((payment.amount * 190) / 100), unit)])) | |
105 | + | } | |
56 | 106 | } | |
57 | 107 | } | |
58 | 108 | ||
59 | 109 | ||
60 | 110 | @Callable(inv) | |
61 | 111 | func zero2hero (guessStart,guessEnd) = startLotto(inv, guessStart, guessEnd) | |
62 | 112 | ||
63 | 113 |
github/deemru/w8io/c3f4982 42.56 ms ◑