tx · 875pFswwbAxL1SXVXxcbz4zw5kAM6HDgRtae6oC6qPTs

3Muyzdmm3UXRnExyAHEtqcWcaUn8VLhT8TE:  -0.05000000 Waves

2020.04.16 10:42 [956708] smart account 3Muyzdmm3UXRnExyAHEtqcWcaUn8VLhT8TE > SELF 0.00000000 Waves

{ "type": 13, "id": "875pFswwbAxL1SXVXxcbz4zw5kAM6HDgRtae6oC6qPTs", "fee": 5000000, "feeAssetId": null, "timestamp": 1587022905464, "version": 1, "sender": "3Muyzdmm3UXRnExyAHEtqcWcaUn8VLhT8TE", "senderPublicKey": "4gu3haCbomZgQGdumDcQqrwBjbvC8H8xMwtadJSpjzSj", "proofs": [ "38wY6aC1kYS63khXRokAEBJs8PKXZrDuEJFbKv5xyr2Uy9ZtBR3Kra2KbwJh4nkS4HRDnQkbzFiEGTh5EDrP6RVE" ], "script": "base64:AAIDAAAAAAAAAA4IARIECgIIARIECgIIAgAAACoAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFnNGRBUjZYYkJEQVM5aHIvRWozZEp2NkZmYzQ2NngvbU9HTVdVM2xyQUJzM3FhOEJIbXVKR25rZmJwRWYydkF3WVRPV1B2dnpmTTEwT0JiZmxvU3lxM2M5TUt2eVRlMWx1QkxHcVc0dlpVWEl5dlNnejFsaXlVVmVmSVF5M2R5RjlqYmVUWmJDMGJiY1QvN08zREVMKzAxejZBK3JEQ2FjU1owbEdvbFNRNkFuaEx4eklrVnBPUUpickJtQyt4K1p1WlBDTVd6SnluZDVhZU9uN2phai9ta1JWeXhlNmcvME9oV3o0TmlpWlhldU1SQis4bUt5MGZXRC9VbElsWldIc0FTMlptcmtYS3FqTHEwLzB3cjhJTEprem5qU3Fkbkk1SWJqZzN1UXJqLzRBTitpOXIyOGFRNzMvWmtQdFk1U2J3MEFPaUFCQnU3Z0htcTlheVZ4WlFJREFRQUIAAAAAD0dBTUVTQ09VTlRFUktFWQIAAAAJJEdBTUVfTlVNAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAEV0JFVAEAAAAghrQ2qHjTDszY8BetSy4sBB8Hn7rKuRapStdvJa2b0HYAAAAAD1dBTExFVENPTU1VTklUWQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVC8R8HhOr9aTn6luIitmtR+yU9d4zzto+wAAAAAOV0FMTEVUV0FWRVNCRVQJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVRcFp18IEcoG8Po9K1+bJP+/kJJi7RloewAAAAADFdBTExFVE1DQUZFRQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVFwWnXwgRygbw+j0rX5sk/7+QkmLtGWh7AAAAAAHV0FWRUxFVAAAAAAABfXhAAAAAAAMRkVFQ09NTVVOSVRZAAAAAAAAAAABAAAAAAtGRUVXQVZFU0JFVAAAAAAAAAAAAwAAAAAJRkVFTUNBRkVFAAAAAAAAAAACAAAAAA5TVEFURVNVQk1JVFRFRAIAAAAJU1VCTUlU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aXMFAAAABmdhbWVJZAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAABFdCRVQJAAACAAAAAQIAAAAdUGF5bWVudCBzaG91bGQgYmUgaW4gV2F2ZXNiZXQDCQAAZgAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAAABxr9SY0AAAkAAAIAAAABAgAAADtZb3UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSBiZXQgbGltaXQsIHRyeSBiZXRzIHVwIHRvIDIwTQMJAABmAAAAAgAAAAAAAA9CQAUAAAANcGxheWVyQmFsYW5jZQkAAAIAAAABAgAAAEVUaGVyZSBhcmUgbm90IGVub3VnaCB3YXZlcywgaXQgdGFrZXMgMC4wMSBXYXZlcyB0byBiZXQuIEdhbWUgYWJvcnRlZC4DBQAAAApmZWVBc3NldElkCQAAAgAAAAECAAAAMVRyYW5zYWN0aW9uJ3MgZmVlIG11c3QgYmUgaW4gV2F2ZXMuIEdhbWUgYWJvcnRlZC4DBQAAAApnYW1lSWRVc2VkCQAAAgAAAAECAAAAMVBhc3NlZCBnYW1lSWQgaGFkIGJlZW4gdXNlZCBiZWZvcmUuIEdhbWUgYWJvcnRlZC4EAAAACm5ld0dhbWVOdW0JAQAAABBJbmNyZW1lbnRHYW1lTnVtAAAAAAQAAAAOcGxheWVyUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAABgUAAAAOU1RBVEVTVUJNSVRURUQFAAAACnByZWRpY3Rpb24FAAAACHJvbGxUeXBlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAAGd2luQW10AgAAAAAJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA5SRVNFUlZBVElPTktFWQkBAAAAHlZhbGlkYXRlQW5kSW5jcmVhc2VSZXNlcnZlZEFtdAAAAAEFAAAABndpbkFtdAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPR0FNRVNDT1VOVEVSS0VZBQAAAApuZXdHYW1lTnVtCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAAC2dhbWVEYXRhU3RyBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAPV0FMTEVUQ09NTVVOSVRZCQAAawAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAMRkVFQ09NTVVOSVRZAAAAAAAAAABkBQAAAARXQkVUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADldBTExFVFdBVkVTQkVUCQAAawAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMV0FMTEVUTUNBRkVFCQAAawAAAAMIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJRkVFTUNBRkVFAAAAAAAAAABkBQAAAARXQkVUBQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAACAAAABmdhbWVJZAAAAAZyc2FTaWcEAAAADGdhbWVEYXRhTGlzdAkBAAAAE0V4dHJhY3RHYW1lRGF0YUxpc3QAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADElkeEdhbWVTdGF0ZQQAAAAKcHJlZGljdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAANSWR4UHJlZGljdGlvbgQAAAAIcm9sbFR5cGUJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAdJZHhUeXBlBAAAAAZ3aW5BbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFdpbkFtdAQAAAAOcGxheWVyUHViS2V5NTgJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAABFJZHhQbGF5ZXJQdWJLZXk1OAQAAAANcGxheWVyQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAA5wbGF5ZXJQdWJLZXk1OAQAAAARZGVjcmVhc2VkUmVzZXJ2ZXMJAQAAABNEZWNyZWFzZVJlc2VydmVkQW10AAAAAgUAAAAGZ2FtZUlkBQAAAAZ3aW5BbXQDCQEAAAACIT0AAAACBQAAAAlnYW1lU3RhdGUFAAAADlNUQVRFU1VCTUlUVEVECQAAAgAAAAECAAAAM0ludmFsaWQgZ2FtZSBzdGF0ZSBmb3IgcGFzc2VkIGdhbWVJZC4gR2FtZSBhYm9ydGVkLgQAAAAEcmFuZAkBAAAAD0dlbmVyYXRlUmFuZEludAAAAAIFAAAABmdhbWVJZAUAAAAGcnNhU2lnBAAAAAdyYW5kU3RyCQEAAAAJUmFuZFRvU3RyAAAAAQUAAAAEcmFuZAMJAQAAAAdkaWNlV2luAAAAAwUAAAAIcm9sbFR5cGUFAAAACnByZWRpY3Rpb24FAAAABHJhbmQEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAGBQAAAAhTVEFURVdPTgUAAAAKcHJlZGljdGlvbgUAAAAIcm9sbFR5cGUFAAAADnBsYXllclB1YktleTU4BQAAAAZ3aW5BbXQFAAAAB3JhbmRTdHIJAQAAAAxXaW5TY3JpcHRTZXQAAAAFBQAAAAZnYW1lSWQFAAAADXBsYXllckFkZHJlc3MFAAAABndpbkFtdAUAAAAObmV3R2FtZURhdGFTdHIFAAAAEWRlY3JlYXNlZFJlc2VydmVzBAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAABgUAAAAJU1RBVEVMT1NUBQAAAApwcmVkaWN0aW9uBQAAAAhyb2xsVHlwZQUAAAAOcGxheWVyUHViS2V5NTgFAAAABndpbkFtdAUAAAAHcmFuZFN0cgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgkABEwAAAACBQAAABFkZWNyZWFzZWRSZXNlcnZlcwUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAADdHR4BQAAAAckbWF0Y2gwCQAAZwAAAAIJAABlAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAARXQkVUCAUAAAADdHR4AAAABmFtb3VudAkBAAAAEkV4dHJhY3RSZXNlcnZlZEFtdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAANzdHgFAAAAByRtYXRjaDAGBwcUsGTy", "chainId": 84, "height": 956708, "spentComplexity": 0 } View: original | compacted Prev: 3idGNP6N3ZfbBJJyawJqJxBgvasJd1MAHRJUPMaJLeRo Next: none Diff:
OldNewDifferences
620620 let gameIdUsed = isDefined(getString(this, gameId))
621621 if ((payment.assetId != WBET))
622622 then throw("Payment should be in Wavesbet")
623- else if ((1000000 > playerBalance))
624- then throw("There are not enough waves, it takes 0.01 Waves to bet. Game aborted.")
625- else if (feeAssetId)
626- then throw("Transaction's fee must be in Waves. Game aborted.")
627- else if (gameIdUsed)
628- then throw("Passed gameId had been used before. Game aborted.")
629- else {
630- let newGameNum = IncrementGameNum()
631- let playerPubKey58 = toBase58String(i.callerPublicKey)
632- let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
633- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETCOMMUNITY, fraction(payment.amount, FEECOMMUNITY, 100), WBET), ScriptTransfer(WALLETWAVESBET, fraction(payment.amount, FEEWAVESBET, 100), WBET), ScriptTransfer(WALLETMCAFEE, fraction(payment.amount, FEEMCAFEE, 100), WBET)]))
634- }
623+ else if ((payment.amount > 2000000000000000))
624+ then throw("You have exceeded the maximum bet limit, try bets up to 20M")
625+ else if ((1000000 > playerBalance))
626+ then throw("There are not enough waves, it takes 0.01 Waves to bet. Game aborted.")
627+ else if (feeAssetId)
628+ then throw("Transaction's fee must be in Waves. Game aborted.")
629+ else if (gameIdUsed)
630+ then throw("Passed gameId had been used before. Game aborted.")
631+ else {
632+ let newGameNum = IncrementGameNum()
633+ let playerPubKey58 = toBase58String(i.callerPublicKey)
634+ let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
635+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETCOMMUNITY, fraction(payment.amount, FEECOMMUNITY, 100), WBET), ScriptTransfer(WALLETWAVESBET, fraction(payment.amount, FEEWAVESBET, 100), WBET), ScriptTransfer(WALLETMCAFEE, fraction(payment.amount, FEEMCAFEE, 100), WBET)]))
636+ }
635637 }
636638
637639
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg4dAR6XbBDAS9hr/Ej3dJv6Ffc466x/mOGMWU3lrABs3qa8BHmuJGnkfbpEf2vAwYTOWPvvzfM10OBbfloSyq3c9MKvyTe1luBLGqW4vZUXIyvSgz1liyUVefIQy3dyF9jbeTZbC0bbcT/7O3DEL+01z6A+rDCacSZ0lGolSQ6AnhLxzIkVpOQJbrBmC+x+ZuZPCMWzJynd5aeOn7jaj/mkRVyxe6g/0OhWz4NiiZXeuMRB+8mKy0fWD/UlIlZWHsAS2ZmrkXKqjLq0/0wr8ILJkznjSqdnI5Ibjg3uQrj/4AN+i9r28aQ73/ZkPtY5Sbw0AOiABBu7gHmq9ayVxZQIDAQAB")
55
66 let GAMESCOUNTERKEY = "$GAME_NUM"
77
88 let RESERVATIONKEY = "$RESERVED_AMOUNT"
99
1010 let WBET = base58'A4q1mYKo11yuH9gmvDodeJoksagcyQzeFE9JtphMWddw'
1111
1212 let WALLETCOMMUNITY = Address(base58'3MtCy2PCFPyu8A9SRNL4qUo1V17SGLHftD8')
1313
1414 let WALLETWAVESBET = Address(base58'3MxK12u62zsu9xh3hU7p5iJncCLANd3zhTZ')
1515
1616 let WALLETMCAFEE = Address(base58'3MxK12u62zsu9xh3hU7p5iJncCLANd3zhTZ')
1717
1818 let WAVELET = 100000000
1919
2020 let FEECOMMUNITY = 1
2121
2222 let FEEWAVESBET = 3
2323
2424 let FEEMCAFEE = 2
2525
2626 let STATESUBMITTED = "SUBMITTED"
2727
2828 let STATEWON = "WON"
2929
3030 let STATELOST = "LOST"
3131
3232 let ROLLUNDER = "UNDER"
3333
3434 let ROLLOVER = "OVER"
3535
3636 let BETMIN = (1000 * WAVELET)
3737
3838 let BETMAX = (20000000 * WAVELET)
3939
4040 let PREDICTIONMIN = 1
4141
4242 let PREDICTIONMAX = 99
4343
4444 let IdxGameState = 0
4545
4646 let IdxPrediction = 1
4747
4848 let IdxType = 2
4949
5050 let IdxPlayerPubKey58 = 3
5151
5252 let IdxWinAmt = 4
5353
5454 let IdxRandOrEmpty = 5
5555
5656 func IncrementGameNum () = {
5757 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5858 case num: Int =>
5959 num
6060 case _ =>
6161 0
6262 }
6363 (gameNum + 1)
6464 }
6565
6666
6767 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
6868 case a: Int =>
6969 a
7070 case _ =>
7171 0
7272 }
7373
7474
7575 func ValidateAndIncreaseReservedAmt (winAmt) = {
7676 let newReservedAmount = (ExtractReservedAmt() + winAmt)
7777 let balance = assetBalance(this, WBET)
7878 if ((newReservedAmount > balance))
7979 then throw("Insufficient funds on Wavesbet Dice account. Transaction was rejected for your safety.")
8080 else newReservedAmount
8181 }
8282
8383
8484 func FormatGameDataParam (p) = {
8585 let s = size(p)
8686 if ((s == 0))
8787 then throw("Parameter size must be greater then 0")
8888 else if ((s > 99))
8989 then throw("Parameter size must be less then 100")
9090 else if ((10 > s))
9191 then (("0" + toString(s)) + p)
9292 else (toString(s) + p)
9393 }
9494
9595
9696 func FormatGameDataStr (gameState,prediction,typeRoll,playerPubKey58,winAmt,randOrEmpty) = {
9797 let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(toString(prediction))) + "_") + FormatGameDataParam(typeRoll)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(winAmt)))
9898 if ((randOrEmpty == ""))
9999 then fullStateStr
100100 else ((fullStateStr + "_") + FormatGameDataParam(randOrEmpty))
101101 }
102102
103103
104104 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
105105 then drop(remaining, 1)
106106 else remaining
107107
108108
109109 func ParseNextAttribute (remaining) = {
110110 let s = size(remaining)
111111 if ((s > 0))
112112 then {
113113 let nn = parseIntValue(take(remaining, 2))
114114 let v = take(drop(remaining, 2), nn)
115115 let tmpRemaining = drop(remaining, (nn + 2))
116116 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
117117 [v, remainingState]
118118 }
119119 else throw("Empty string was passed into parseNextAttribute func")
120120 }
121121
122122
123123 func ParseGameRawDataStr (rawStateStr) = {
124124 let gameState = ParseNextAttribute(rawStateStr)
125125 let prediction = ParseNextAttribute(gameState[1])
126126 let rollType = ParseNextAttribute(prediction[1])
127127 let playerPubKey58 = ParseNextAttribute(rollType[1])
128128 let winAmt = ParseNextAttribute(playerPubKey58[1])
129129 [gameState[0], prediction[0], rollType[0], playerPubKey58[0], winAmt[0]]
130130 }
131131
132132
133133 func ExtractGameDataList (gameId) = {
134134 let rawDataStr = match getString(this, gameId) {
135135 case str: String =>
136136 str
137137 case _ =>
138138 throw(("Couldn't find game by " + gameId))
139139 }
140140 ParseGameRawDataStr(rawDataStr)
141141 }
142142
143143
144144 func DecreaseReservedAmt (gameId,winAmt) = {
145145 let newReservedAmount = (ExtractReservedAmt() - winAmt)
146146 if ((0 > newReservedAmount))
147147 then throw("Invalid Dice Roller account state - reserved amount is less than 0")
148148 else DataEntry(RESERVATIONKEY, newReservedAmount)
149149 }
150150
151151
152152 func GenerateRandInt (gameId,rsaSign) = {
153153 let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
154154 if (rsaSigValid)
155155 then {
156156 let rand = (toInt(sha256(rsaSign)) % 100)
157157 if ((0 > rand))
158158 then ((-1 * rand) + 1)
159159 else (rand + 1)
160160 }
161161 else throw("Invalid RSA signature")
162162 }
163163
164164
165165 func RandToStr (r) = if (if ((r >= 1))
166166 then (100 >= r)
167167 else false)
168168 then toString(r)
169169 else throw(("Unsupported r parameter passed: expected=[1,...,100] actual=" + toString(r)))
170170
171171
172172 func WinScriptSet (gameId,playerAddress,winAmt,newGameDataStr,decreasedReserves) = {
173173 let wSetCommonData = [decreasedReserves]
174174 let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, WBET)]
175175 let gameData = DataEntry(gameId, newGameDataStr)
176176 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
177177 }
178178
179179
180180 func Multiplier (prediction,rollType) = if ((rollType == ROLLUNDER))
181181 then if ((prediction == 1))
182182 then 1000000
183183 else if ((prediction == 2))
184184 then 975000
185185 else if ((prediction == 3))
186186 then 923330
187187 else if ((prediction == 4))
188188 then 882500
189189 else if ((prediction == 5))
190190 then 852500
191191 else if ((prediction == 6))
192192 then 829510
193193 else if ((prediction == 7))
194194 then 787140
195195 else if ((prediction == 8))
196196 then 761250
197197 else if ((prediction == 9))
198198 then 724440
199199 else if ((prediction == 10))
200200 then 695000
201201 else if ((prediction == 11))
202202 then 675450
203203 else if ((prediction == 12))
204204 then 640830
205205 else if ((prediction == 13))
206206 then 627690
207207 else if ((prediction == 14))
208208 then 603570
209209 else if ((prediction == 15))
210210 then 596660
211211 else if ((prediction == 16))
212212 then 575620
213213 else if ((prediction == 17))
214214 then 549410
215215 else if ((prediction == 18))
216216 then 522200
217217 else if ((prediction == 19))
218218 then 508420
219219 else if ((prediction == 20))
220220 then 492500
221221 else if ((prediction == 21))
222222 then 469040
223223 else if ((prediction == 22))
224224 then 447720
225225 else if ((prediction == 23))
226226 then 428260
227227 else if ((prediction == 24))
228228 then 410410
229229 else if ((prediction == 25))
230230 then 394000
231231 else if ((prediction == 26))
232232 then 378840
233233 else if ((prediction == 27))
234234 then 364810
235235 else if ((prediction == 28))
236236 then 351780
237237 else if ((prediction == 29))
238238 then 339650
239239 else if ((prediction == 30))
240240 then 328330
241241 else if ((prediction == 31))
242242 then 317740
243243 else if ((prediction == 32))
244244 then 307810
245245 else if ((prediction == 33))
246246 then 298480
247247 else if ((prediction == 34))
248248 then 289700
249249 else if ((prediction == 35))
250250 then 281420
251251 else if ((prediction == 36))
252252 then 273610
253253 else if ((prediction == 37))
254254 then 259210
255255 else if ((prediction == 38))
256256 then 259210
257257 else if ((prediction == 39))
258258 then 252560
259259 else if ((prediction == 40))
260260 then 246250
261261 else if ((prediction == 41))
262262 then 240240
263263 else if ((prediction == 42))
264264 then 234520
265265 else if ((prediction == 43))
266266 then 229060
267267 else if ((prediction == 44))
268268 then 223860
269269 else if ((prediction == 45))
270270 then 218880
271271 else if ((prediction == 46))
272272 then 214130
273273 else if ((prediction == 47))
274274 then 209570
275275 else if ((prediction == 48))
276276 then 205200
277277 else if ((prediction == 49))
278278 then 201020
279279 else if ((prediction == 50))
280280 then 197000
281281 else if ((prediction == 51))
282282 then 193130
283283 else if ((prediction == 52))
284284 then 189420
285285 else if ((prediction == 53))
286286 then 185840
287287 else if ((prediction == 54))
288288 then 182400
289289 else if ((prediction == 55))
290290 then 179090
291291 else if ((prediction == 56))
292292 then 175890
293293 else if ((prediction == 57))
294294 then 172800
295295 else if ((prediction == 58))
296296 then 169820
297297 else if ((prediction == 59))
298298 then 166940
299299 else if ((prediction == 60))
300300 then 164160
301301 else if ((prediction == 61))
302302 then 161470
303303 else if ((prediction == 62))
304304 then 158870
305305 else if ((prediction == 63))
306306 then 156340
307307 else if ((prediction == 64))
308308 then 153900
309309 else if ((prediction == 65))
310310 then 151530
311311 else if ((prediction == 66))
312312 then 149240
313313 else if ((prediction == 67))
314314 then 147010
315315 else if ((prediction == 68))
316316 then 144850
317317 else if ((prediction == 69))
318318 then 142750
319319 else if ((prediction == 70))
320320 then 140710
321321 else if ((prediction == 71))
322322 then 138730
323323 else if ((prediction == 72))
324324 then 136800
325325 else if ((prediction == 73))
326326 then 134930
327327 else if ((prediction == 74))
328328 then 133100
329329 else if ((prediction == 75))
330330 then 131330
331331 else if ((prediction == 76))
332332 then 129600
333333 else if ((prediction == 77))
334334 then 127920
335335 else if ((prediction == 78))
336336 then 126280
337337 else if ((prediction == 79))
338338 then 124680
339339 else if ((prediction == 80))
340340 then 123120
341341 else if ((prediction == 81))
342342 then 121600
343343 else if ((prediction == 82))
344344 then 120120
345345 else if ((prediction == 83))
346346 then 118670
347347 else if ((prediction == 84))
348348 then 117260
349349 else if ((prediction == 85))
350350 then 115880
351351 else if ((prediction == 86))
352352 then 114530
353353 else if ((prediction == 87))
354354 then 113210
355355 else if ((prediction == 88))
356356 then 111930
357357 else if ((prediction == 89))
358358 then 110670
359359 else if ((prediction == 90))
360360 then 109440
361361 else if ((prediction == 91))
362362 then 108240
363363 else if ((prediction == 92))
364364 then 107060
365365 else if ((prediction == 93))
366366 then 105910
367367 else if ((prediction == 94))
368368 then 104780
369369 else if ((prediction == 95))
370370 then 103680
371371 else if ((prediction == 96))
372372 then 103680
373373 else 100000
374374 else if ((rollType == ROLLOVER))
375375 then if ((prediction == 4))
376376 then 103680
377377 else if ((prediction == 5))
378378 then 103680
379379 else if ((prediction == 6))
380380 then 104780
381381 else if ((prediction == 7))
382382 then 105910
383383 else if ((prediction == 8))
384384 then 107060
385385 else if ((prediction == 9))
386386 then 108240
387387 else if ((prediction == 10))
388388 then 109440
389389 else if ((prediction == 11))
390390 then 110670
391391 else if ((prediction == 12))
392392 then 111930
393393 else if ((prediction == 13))
394394 then 113210
395395 else if ((prediction == 14))
396396 then 114530
397397 else if ((prediction == 15))
398398 then 115880
399399 else if ((prediction == 16))
400400 then 117260
401401 else if ((prediction == 17))
402402 then 118670
403403 else if ((prediction == 18))
404404 then 120120
405405 else if ((prediction == 19))
406406 then 121600
407407 else if ((prediction == 20))
408408 then 123120
409409 else if ((prediction == 21))
410410 then 124680
411411 else if ((prediction == 22))
412412 then 126280
413413 else if ((prediction == 23))
414414 then 127920
415415 else if ((prediction == 24))
416416 then 129600
417417 else if ((prediction == 25))
418418 then 131330
419419 else if ((prediction == 26))
420420 then 133100
421421 else if ((prediction == 27))
422422 then 134930
423423 else if ((prediction == 28))
424424 then 136800
425425 else if ((prediction == 29))
426426 then 138730
427427 else if ((prediction == 30))
428428 then 140710
429429 else if ((prediction == 31))
430430 then 142750
431431 else if ((prediction == 32))
432432 then 144850
433433 else if ((prediction == 33))
434434 then 147010
435435 else if ((prediction == 34))
436436 then 149240
437437 else if ((prediction == 35))
438438 then 151530
439439 else if ((prediction == 36))
440440 then 153900
441441 else if ((prediction == 37))
442442 then 156340
443443 else if ((prediction == 38))
444444 then 158870
445445 else if ((prediction == 39))
446446 then 161470
447447 else if ((prediction == 40))
448448 then 164160
449449 else if ((prediction == 41))
450450 then 166940
451451 else if ((prediction == 42))
452452 then 169820
453453 else if ((prediction == 43))
454454 then 172800
455455 else if ((prediction == 44))
456456 then 175890
457457 else if ((prediction == 45))
458458 then 179090
459459 else if ((prediction == 46))
460460 then 185840
461461 else if ((prediction == 47))
462462 then 185840
463463 else if ((prediction == 48))
464464 then 189420
465465 else if ((prediction == 49))
466466 then 193130
467467 else if ((prediction == 50))
468468 then 197000
469469 else if ((prediction == 51))
470470 then 201020
471471 else if ((prediction == 52))
472472 then 205200
473473 else if ((prediction == 53))
474474 then 209570
475475 else if ((prediction == 54))
476476 then 214130
477477 else if ((prediction == 55))
478478 then 218880
479479 else if ((prediction == 56))
480480 then 223860
481481 else if ((prediction == 57))
482482 then 229060
483483 else if ((prediction == 58))
484484 then 234520
485485 else if ((prediction == 59))
486486 then 240240
487487 else if ((prediction == 60))
488488 then 246250
489489 else if ((prediction == 61))
490490 then 252560
491491 else if ((prediction == 62))
492492 then 259210
493493 else if ((prediction == 63))
494494 then 259210
495495 else if ((prediction == 64))
496496 then 273610
497497 else if ((prediction == 65))
498498 then 281420
499499 else if ((prediction == 66))
500500 then 289700
501501 else if ((prediction == 67))
502502 then 298480
503503 else if ((prediction == 68))
504504 then 307810
505505 else if ((prediction == 69))
506506 then 317740
507507 else if ((prediction == 70))
508508 then 328330
509509 else if ((prediction == 71))
510510 then 339650
511511 else if ((prediction == 72))
512512 then 351780
513513 else if ((prediction == 73))
514514 then 364810
515515 else if ((prediction == 74))
516516 then 378840
517517 else if ((prediction == 75))
518518 then 394000
519519 else if ((prediction == 76))
520520 then 410410
521521 else if ((prediction == 77))
522522 then 428260
523523 else if ((prediction == 78))
524524 then 447720
525525 else if ((prediction == 79))
526526 then 469040
527527 else if ((prediction == 80))
528528 then 492500
529529 else if ((prediction == 81))
530530 then 508420
531531 else if ((prediction == 82))
532532 then 522200
533533 else if ((prediction == 83))
534534 then 549410
535535 else if ((prediction == 84))
536536 then 575620
537537 else if ((prediction == 85))
538538 then 596660
539539 else if ((prediction == 86))
540540 then 603570
541541 else if ((prediction == 87))
542542 then 627690
543543 else if ((prediction == 88))
544544 then 640830
545545 else if ((prediction == 89))
546546 then 675450
547547 else if ((prediction == 90))
548548 then 695000
549549 else if ((prediction == 91))
550550 then 724440
551551 else if ((prediction == 92))
552552 then 761250
553553 else if ((prediction == 93))
554554 then 787140
555555 else if ((prediction == 94))
556556 then 829510
557557 else if ((prediction == 95))
558558 then 852500
559559 else if ((prediction == 96))
560560 then 882500
561561 else if ((prediction == 97))
562562 then 923330
563563 else if ((prediction == 98))
564564 then 975000
565565 else if ((prediction == 99))
566566 then 1000000
567567 else 100000
568568 else 100000
569569
570570
571571 func diceWin (type,prediction,number) = if ((type == ROLLUNDER))
572572 then if ((prediction >= number))
573573 then true
574574 else false
575575 else if ((type == ROLLOVER))
576576 then if ((number >= prediction))
577577 then true
578578 else false
579579 else false
580580
581581
582582 func ValidateBetAndDefineWinAmt (amount,prediction,rollType) = if (if ((BETMIN > amount))
583583 then true
584584 else (amount > BETMAX))
585585 then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / WAVELET))) + " maxBet=") + toString((BETMAX / WAVELET))))
586586 else if (if ((rollType != ROLLUNDER))
587587 then (rollType != ROLLOVER)
588588 else false)
589589 then throw("Invalid Roll type, try with OVER or UNDER")
590590 else if (if (if ((rollType == ROLLUNDER))
591591 then (1 > prediction)
592592 else false)
593593 then true
594594 else if ((rollType == ROLLUNDER))
595595 then (prediction > 96)
596596 else false)
597597 then throw("Prediction is out of the range for ROLL UNDER: 1 <= PREDICTION <= 96")
598598 else if (if (if ((rollType == ROLLOVER))
599599 then (4 > prediction)
600600 else false)
601601 then true
602602 else if ((rollType == ROLLOVER))
603603 then (prediction > 99)
604604 else false)
605605 then throw("Prediction is out of the range for ROLL OVER: 4 <= PREDICTION <= 99")
606606 else {
607607 let multi = Multiplier(prediction, rollType)
608608 let fee = fraction(amount, 6, 100)
609609 (((amount / 100000) * multi) - fee)
610610 }
611611
612612
613613 @Callable(i)
614614 func playDice (rollType,prediction) = {
615615 let gameId = toBase58String(i.transactionId)
616616 let payment = extract(i.payment)
617617 let feeAssetId = isDefined(i.feeAssetId)
618618 let winAmt = ValidateBetAndDefineWinAmt(payment.amount, prediction, rollType)
619619 let playerBalance = wavesBalance(i.caller)
620620 let gameIdUsed = isDefined(getString(this, gameId))
621621 if ((payment.assetId != WBET))
622622 then throw("Payment should be in Wavesbet")
623- else if ((1000000 > playerBalance))
624- then throw("There are not enough waves, it takes 0.01 Waves to bet. Game aborted.")
625- else if (feeAssetId)
626- then throw("Transaction's fee must be in Waves. Game aborted.")
627- else if (gameIdUsed)
628- then throw("Passed gameId had been used before. Game aborted.")
629- else {
630- let newGameNum = IncrementGameNum()
631- let playerPubKey58 = toBase58String(i.callerPublicKey)
632- let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
633- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETCOMMUNITY, fraction(payment.amount, FEECOMMUNITY, 100), WBET), ScriptTransfer(WALLETWAVESBET, fraction(payment.amount, FEEWAVESBET, 100), WBET), ScriptTransfer(WALLETMCAFEE, fraction(payment.amount, FEEMCAFEE, 100), WBET)]))
634- }
623+ else if ((payment.amount > 2000000000000000))
624+ then throw("You have exceeded the maximum bet limit, try bets up to 20M")
625+ else if ((1000000 > playerBalance))
626+ then throw("There are not enough waves, it takes 0.01 Waves to bet. Game aborted.")
627+ else if (feeAssetId)
628+ then throw("Transaction's fee must be in Waves. Game aborted.")
629+ else if (gameIdUsed)
630+ then throw("Passed gameId had been used before. Game aborted.")
631+ else {
632+ let newGameNum = IncrementGameNum()
633+ let playerPubKey58 = toBase58String(i.callerPublicKey)
634+ let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
635+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETCOMMUNITY, fraction(payment.amount, FEECOMMUNITY, 100), WBET), ScriptTransfer(WALLETWAVESBET, fraction(payment.amount, FEEWAVESBET, 100), WBET), ScriptTransfer(WALLETMCAFEE, fraction(payment.amount, FEEMCAFEE, 100), WBET)]))
636+ }
635637 }
636638
637639
638640
639641 @Callable(i)
640642 func withdraw (gameId,rsaSig) = {
641643 let gameDataList = ExtractGameDataList(gameId)
642644 let gameState = gameDataList[IdxGameState]
643645 let prediction = parseIntValue(gameDataList[IdxPrediction])
644646 let rollType = gameDataList[IdxType]
645647 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
646648 let playerPubKey58 = gameDataList[IdxPlayerPubKey58]
647649 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
648650 let decreasedReserves = DecreaseReservedAmt(gameId, winAmt)
649651 if ((gameState != STATESUBMITTED))
650652 then throw("Invalid game state for passed gameId. Game aborted.")
651653 else {
652654 let rand = GenerateRandInt(gameId, rsaSig)
653655 let randStr = RandToStr(rand)
654656 if (diceWin(rollType, prediction, rand))
655657 then {
656658 let newGameDataStr = FormatGameDataStr(STATEWON, prediction, rollType, playerPubKey58, winAmt, randStr)
657659 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr, decreasedReserves)
658660 }
659661 else {
660662 let newGameDataStr = FormatGameDataStr(STATELOST, prediction, rollType, playerPubKey58, winAmt, randStr)
661663 WriteSet([DataEntry(gameId, newGameDataStr), decreasedReserves])
662664 }
663665 }
664666 }
665667
666668
667669 @Verifier(tx)
668670 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
669671 then match tx {
670672 case ttx: TransferTransaction =>
671673 ((assetBalance(this, WBET) - ttx.amount) >= ExtractReservedAmt())
672674 case stx: SetScriptTransaction =>
673675 true
674676 case _ =>
675677 false
676678 }
677679 else false
678680

github/deemru/w8io/6500d08 
122.99 ms