tx · E8cM5giqzw6mscXVhAKh8GjhGNrHukmGYcMWNwMN9tn7

3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk:  -0.01000000 Waves

2021.10.15 00:38 [1746491] smart account 3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk > SELF 0.00000000 Waves

{ "type": 13, "id": "E8cM5giqzw6mscXVhAKh8GjhGNrHukmGYcMWNwMN9tn7", "fee": 1000000, "feeAssetId": null, "timestamp": 1634247529768, "version": 2, "chainId": 84, "sender": "3Mu9qAjmg8fVTxxpwPZnBAH948ujt4m6Xvk", "senderPublicKey": "8v9pmcXqHz9DTc5k1Z8duTYyDwykFxN3EzdZ9WAn3KXJ", "proofs": [ "YQ4TgtYDntG5SMFwDm8Ap2bQdAuEbzTEYmdXWKawd5BFBEMq9SgmPYoeL9Xyppkj5fNkapMdFgyNnPsAgfjs7Uc" ], "script": "base64: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", "height": 1746491, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6tngKdUM3bN5Hy3BRcDgc8TczVyjoLmz69qPJFd7Bqow Next: Dxmmapjih7X6uXGeptDJPXbQAP5KbF5nViKqnTLqRAXk Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func payoutcalc (i,number) = {
4+let gameNumberKey = "$GAME_NUMBER"
5+
6+let lastPlayKey = "$LAST_PLAY"
7+
8+let WON = 1
9+
10+let LOSE = 2
11+
12+func payoutcalc (number) = {
513 let house = 6
614 let base = 10000
715 ((base * ((100 - 6) / 100)) / number)
917
1018
1119 func randomizer (i) = {
12- let lastPlay = match getBinary(this, "lastPlay") {
20+ let lastPlay = match getBinary(this, lastPlayKey) {
1321 case s: ByteVector =>
1422 s
1523 case _: Unit =>
4048 else if ((5 > ((guessEnd - guessStart) + 1)))
4149 then throw("guessStart and guessEnd Must be at least 5 apart")
4250 else if ((((guessEnd - guessStart) + 1) > 95))
43- then throw("guessStart and guessEnd Must be at least 5 apart")
51+ then throw("guessStart and guessEnd Must not be at least 95 apart")
4452 else {
4553 let callerAddress = toBase58String(i.caller.bytes)
4654 let transactionId = toBase58String(i.transactionId)
4755 let randhash = randomizer(i)
4856 let rand = (toInt(randhash) % 100)
57+ let gameId = match getInteger(this, gameNumberKey) {
58+ case a: Int =>
59+ a
60+ case _: Unit =>
61+ 1
62+ case _ =>
63+ throw("Match error")
64+ }
4965 if (if (((guessEnd + 1) > rand))
5066 then (rand > (guessStart - 1))
5167 else false)
5268 then {
53- let str = ((((((((("01_WON_" + transactionId) + "_") + callerAddress) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
54- let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry(transactionId, str)])
55- ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(i.caller, ((payment.amount * payoutcalc(i, ((guessEnd - guessStart) + 1))) / 100), unit)]))
69+ let str = ((((((((((((toString(WON) + "_WON_") + transactionId) + "_") + callerAddress) + "_") + toString(gameId)) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
70+ let writeLastPlay = WriteSet([DataEntry(lastPlayKey, rand), DataEntry((callerAddress + toString(gameId)), str), DataEntry(gameNumberKey, (gameId + 1))])
71+ ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(i.caller, ((payment.amount * payoutcalc(((guessEnd - guessStart) + 1))) / 100), unit)]))
5672 }
5773 else {
58- let str = ((((((((("02_LOSE_" + transactionId) + "_") + callerAddress) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
59- let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry(transactionId, str)])
74+ let str = ((((((((((((toString(WON) + "_LOSE_") + transactionId) + "_") + callerAddress) + "_") + toString(gameId)) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
75+ let writeLastPlay = WriteSet([DataEntry(lastPlayKey, rand), DataEntry((callerAddress + toString(gameId)), str), DataEntry(gameNumberKey, (gameId + 1))])
6076 ScriptResult(writeLastPlay, TransferSet(nil))
6177 }
6278 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func payoutcalc (i,number) = {
4+let gameNumberKey = "$GAME_NUMBER"
5+
6+let lastPlayKey = "$LAST_PLAY"
7+
8+let WON = 1
9+
10+let LOSE = 2
11+
12+func payoutcalc (number) = {
513 let house = 6
614 let base = 10000
715 ((base * ((100 - 6) / 100)) / number)
816 }
917
1018
1119 func randomizer (i) = {
12- let lastPlay = match getBinary(this, "lastPlay") {
20+ let lastPlay = match getBinary(this, lastPlayKey) {
1321 case s: ByteVector =>
1422 s
1523 case _: Unit =>
1624 base58'2ee4oFDYriWJ9EMeR'
1725 case _ =>
1826 throw("Match error")
1927 }
2028 let rand = (((((lastPlay + i.transactionId) + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
2129 sha256(rand)
2230 }
2331
2432
2533 func startLotto (i,guessStart,guessEnd) = {
2634 let playLimit = (wavesBalance(this) / 100)
2735 let payment = extract(i.payment)
2836 if (!(isDefined(i.payment)))
2937 then throw("Should be with Payment in Waves")
3038 else if (isDefined(payment.assetId))
3139 then throw("Payment should be in Waves")
3240 else if ((payment.amount > playLimit))
3341 then throw(("Payment should be less than " + toString(playLimit)))
3442 else if ((0 > guessStart))
3543 then throw("guessStart and guessEnd Must be in between 0-99")
3644 else if ((guessEnd > 99))
3745 then throw("guessStart and guessEnd Must be in between 0-99")
3846 else if ((guessStart > guessEnd))
3947 then throw("guessStart and guessEnd Must be in between 0-99")
4048 else if ((5 > ((guessEnd - guessStart) + 1)))
4149 then throw("guessStart and guessEnd Must be at least 5 apart")
4250 else if ((((guessEnd - guessStart) + 1) > 95))
43- then throw("guessStart and guessEnd Must be at least 5 apart")
51+ then throw("guessStart and guessEnd Must not be at least 95 apart")
4452 else {
4553 let callerAddress = toBase58String(i.caller.bytes)
4654 let transactionId = toBase58String(i.transactionId)
4755 let randhash = randomizer(i)
4856 let rand = (toInt(randhash) % 100)
57+ let gameId = match getInteger(this, gameNumberKey) {
58+ case a: Int =>
59+ a
60+ case _: Unit =>
61+ 1
62+ case _ =>
63+ throw("Match error")
64+ }
4965 if (if (((guessEnd + 1) > rand))
5066 then (rand > (guessStart - 1))
5167 else false)
5268 then {
53- let str = ((((((((("01_WON_" + transactionId) + "_") + callerAddress) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
54- let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry(transactionId, str)])
55- ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(i.caller, ((payment.amount * payoutcalc(i, ((guessEnd - guessStart) + 1))) / 100), unit)]))
69+ let str = ((((((((((((toString(WON) + "_WON_") + transactionId) + "_") + callerAddress) + "_") + toString(gameId)) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
70+ let writeLastPlay = WriteSet([DataEntry(lastPlayKey, rand), DataEntry((callerAddress + toString(gameId)), str), DataEntry(gameNumberKey, (gameId + 1))])
71+ ScriptResult(writeLastPlay, TransferSet([ScriptTransfer(i.caller, ((payment.amount * payoutcalc(((guessEnd - guessStart) + 1))) / 100), unit)]))
5672 }
5773 else {
58- let str = ((((((((("02_LOSE_" + transactionId) + "_") + callerAddress) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
59- let writeLastPlay = WriteSet([DataEntry("lastPlay", rand), DataEntry(transactionId, str)])
74+ let str = ((((((((((((toString(WON) + "_LOSE_") + transactionId) + "_") + callerAddress) + "_") + toString(gameId)) + "_") + toString(guessStart)) + "-") + toString(guessEnd)) + "_") + toString(rand))
75+ let writeLastPlay = WriteSet([DataEntry(lastPlayKey, rand), DataEntry((callerAddress + toString(gameId)), str), DataEntry(gameNumberKey, (gameId + 1))])
6076 ScriptResult(writeLastPlay, TransferSet(nil))
6177 }
6278 }
6379 }
6480
6581
6682 @Callable(i)
6783 func zero2hero (guessStart,guessEnd) = startLotto(i, guessStart, guessEnd)
6884
6985

github/deemru/w8io/169f3d6 
39.33 ms