tx · EWeMevSEZ2G82tthpPPmBKEKtyubWNKDcHJNjWxhwhp9

3P5bczozZttGuLUPJfz25bE8HtzXHtWnzYv:  -0.01500000 Waves

2020.06.17 15:48 [2110916] smart account 3P5bczozZttGuLUPJfz25bE8HtzXHtWnzYv > SELF 0.00000000 Waves

{ "type": 13, "id": "EWeMevSEZ2G82tthpPPmBKEKtyubWNKDcHJNjWxhwhp9", "fee": 1500000, "feeAssetId": null, "timestamp": 1592398133712, "version": 1, "sender": "3P5bczozZttGuLUPJfz25bE8HtzXHtWnzYv", "senderPublicKey": "CQxNnWynVxPVdzu1ghpBPceE5nVQzsngc4uYy6PgKD6a", "proofs": [ "5RzDCdW57QYqwQgr2GFSuuWzRBqi6a4y8dXxWKCkfXdoUJSvmTn1uYy8ZTE6gdtBd25Lvn4ZGgDQCyYfNVZY3j2i" ], "script": "base64:AAIDAAAAAAAAAA0IARIDCgEIEgQKAggCAAAAJwAAAAAJUlNBUFVCTElDCQACWwAAAAECAAABj2Jhc2U2NDpNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQWxlbXI5NUoxalpVczdjSm1ybW1sTjR6bzdZVnNCSnpJZUpkazhMREZHaFVLU0k2eWZzMjBaeUplMjErNkdKd05uS1VVMVV5b2MxN3dTV01La3JaME1NdllFK1o1QWlpanZCSzRzU0ozSWdHamRVOC9OaEk4Q0JEdTBGK3hSTTlxM1RCM0xMYkR5NXNCZHVkWWZIZnNVT2MrTVR2QUQ2OW4yN2RiMlJoOCt5WlFNdHVia3VUUU5wODlzcGhIUWFMR3lRRmFObEsvTmEzbEZ4Nm9tcXphYTFnam9wbFVyNnJ2WUtnZkFJQ1VCM3pWbUpTaGlFaTd3N1IwaFdsTlJEM3FjWmpDVU9OU3BGbzRXYnprbkdPYXp3ODRCK0lNSUZuSXBYV3pRTDhSWDB2TmNmc0J2TERmTTZrMlphY3F3eU1LYUxMcWlnZEJpR2RKN1crMGxPU3RPUUlEQVFBQgAAAAAGU0VSVkVSCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNQTVQ5d3VuN0JCN0pBQlN1aFRKcEZnSm9lZ1JmWXcyZTZkAAAAABNSQU5ET1JBQ0xFVElNRUZSQU1FAAAAAAAAABwgAAAAAARCRVQxAAAAAAAAAAABAAAAAARCRVQyAAAAAAAAAAACAAAAAARCRVQ0AAAAAAAAAAAEAAAAAARCRVQ4AAAAAAAAAAAIAAAAAAVCRVQxNAAAAAAAAAAADgAAAAAEQkVUUwkABEwAAAACBQAAAARCRVQxCQAETAAAAAIFAAAABEJFVDIJAARMAAAAAgUAAAAEQkVUNAkABEwAAAACBQAAAARCRVQ4CQAETAAAAAIFAAAABUJFVDE0BQAAAANuaWwAAAAABldBVkVTRAAAAAAABfXhAAAAAAAFVVNETkQAAAAAAAAPQkAAAAAACERFQ0lNQUxTCQAETAAAAAIFAAAABldBVkVTRAkABEwAAAACBQAAAAVVU0RORAUAAAADbmlsAAAAAAZBU1NFVFMJAARMAAAAAgUAAAAEdW5pdAkABEwAAAACCQACWQAAAAECAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwBQAAAANuaWwAAAAACFJBVEVNVUxUAAAAAAAAACcQAAAAAARSQVRFAAAAAAAAAEo4AAAAAAxJZHhHYW1lU3RhdGUAAAAAAAAAAAAAAAAAD0lkeFBsYXllckNob2ljZQAAAAAAAAAAAQAAAAARSWR4UGxheWVyUHViS2V5NTgAAAAAAAAAAAIAAAAAEElkeFN0YXJ0ZWRIZWlnaHQAAAAAAAAAAAMAAAAADElkeFdpbkFtb3VudAAAAAAAAAAABAAAAAAKSWR4QXNzZXRJZAAAAAAAAAAABQAAAAAOUkVTRVJWQVRJT05LRVkJAARMAAAAAgIAAAAWJFJFU0VSVkVEX0FNT1VOVF9XQVZFUwkABEwAAAACAgAAABUkUkVTRVJWRURfQU1PVU5UX1VTRE4FAAAAA25pbAAAAAAPR0FNRVNDT1VOVEVSS0VZAgAAAAkkR0FNRV9OVU0AAAAADlNUQVRFU1VCTUlUVEVEAgAAAAlTVUJNSVRURUQAAAAACFNUQVRFV09OAgAAAANXT04AAAAACVNUQVRFTE9TVAIAAAAETE9TVAEAAAAIZ2V0SW50T3IAAAACAAAAA2tleQAAAAdkZWZhdWx0AwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAANrZXkFAAAAB2RlZmF1bHQBAAAABnNldEludAAAAAIAAAADa2V5AAAABXZhbHVlCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAADa2V5BQAAAAV2YWx1ZQEAAAAMaW5jcmVtZW50SW50AAAAAQAAAANrZXkJAQAAAAZzZXRJbnQAAAACBQAAAANrZXkJAABkAAAAAgkBAAAACGdldEludE9yAAAAAgUAAAADa2V5AP//////////AAAAAAAAAAABAQAAAAljaGFuZ2VJbnQAAAACAAAAA2tleQAAAAJieQkBAAAABnNldEludAAAAAIFAAAAA2tleQkAAGQAAAACCQEAAAAIZ2V0SW50T3IAAAACBQAAAANrZXkAAAAAAAAAAAAFAAAAAmJ5AQAAABVpbmNyZWFzZVJlc2VydmVBbW91bnQAAAACAAAACXdpbkFtb3VudAAAAAdhc3NldElkBAAAABFuZXdSZXNlcnZlZEFtb3VudAkAAGQAAAACCQEAAAAIZ2V0SW50T3IAAAACCQABkQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZBQAAAAdhc3NldElkAAAAAAAAAAAABQAAAAl3aW5BbW91bnQDCQAAZgAAAAIFAAAAEW5ld1Jlc2VydmVkQW1vdW50CQAD6wAAAAIFAAAABHRoaXMJAAGRAAAAAgUAAAAGQVNTRVRTBQAAAAdhc3NldElkCQAAAgAAAAECAAAAVEluc3VmZmljaWVudCBmdW5kcyBvbiBEaWNlIFJvbGxlciBhY2NvdW50LiBUcmFuc2FjdGlvbiB3YXMgcmVqZWN0ZWQgZm9yIHlvdXIgc2FmZXR5LgUAAAARbmV3UmVzZXJ2ZWRBbW91bnQBAAAAFmRlY3JlYXNlUmVzZXJ2ZWRBbW91bnQAAAADAAAABmdhbWVJZAAAAAdhc3NldElkAAAACXdpbkFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAkAAGUAAAACCQEAAAAIZ2V0SW50T3IAAAACCQABkQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZBQAAAAdhc3NldElkAAAAAAAAAAAABQAAAAl3aW5BbW91bnQJAAACAAAAAQIAAABCSW52YWxpZCBEaWNlIFJvbGxlciBhY2NvdW50IHN0YXRlIC0gcmVzZXJ2ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiAwCQEAAAAJY2hhbmdlSW50AAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQUAAAAHYXNzZXRJZAkBAAAAAS0AAAABBQAAAAl3aW5BbW91bnQBAAAAFXZhbGlkYXRlQW5kR2V0QXNzZXRJZAAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAZEAAAACBQAAAAZBU1NFVFMAAAAAAAAAAAAAAAAAAAAAAAADCQAAAAAAAAIFAAAAB2Fzc2V0SWQJAAGRAAAAAgUAAAAGQVNTRVRTAAAAAAAAAAABAAAAAAAAAAABCQAAAgAAAAECAAAAFUludmFsaWQgcGF5bWVudCBhc3NldAEAAAAadmFsaWRhdGVCZXRBbmRH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SWQJAARMAAAAAgkBAAAADGluY3JlbWVudEludAAAAAEFAAAAD0dBTUVTQ09VTlRFUktFWQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAtnYW1lRGF0YVN0cgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABlNFUlZFUggFAAAAAWkAAAADZmVlCAUAAAABaQAAAApmZWVBc3NldElkBQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAACAAAABmdhbWVJZAAAAAdyc2FTaWduBAAAAAhnYW1lRGF0YQkBAAAAD2V4dHJhY3RHYW1lRGF0YQAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhHYW1lU3RhdGUEAAAADHBsYXllckNob2ljZQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAPSWR4UGxheWVyQ2hvaWNlBAAAAA1zdGFydGVkSGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAEElkeFN0YXJ0ZWRIZWlnaHQEAAAACXdpbkFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhXaW5BbW91bnQEAAAAB2Fzc2V0SWQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAKSWR4QXNzZXRJZAQAAAAOcGxheWVyUHViS2V5NTgJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAEUlkeFBsYXllclB1YktleTU4BAAAAA1wbGF5ZXJBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADnBsYXllclB1YktleTU4BAAAAAx3aW5CeVRpbWVvdXQJAABmAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAADXN0YXJ0ZWRIZWlnaHQFAAAAE1JBTkRPUkFDTEVUSU1FRlJBTUUEAAAAEWRlY3JlYXNlZFJlc2VydmVzCQEAAAAWZGVjcmVhc2VSZXNlcnZlZEFtb3VudAAAAAMFAAAABmdhbWVJZAUAAAAHYXNzZXRJZAUAAAAJd2luQW1vdW50AwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQDBQAAAAx3aW5CeVRpbWVvdXQEAAAAB3JhbmRTdHIJAAEvAAAAAgUAAAAMcGxheWVyQ2hvaWNlAAAAAAAAAAABBAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAIU1RBVEVXT04FAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAHcmFuZFN0cgkBAAAADHdpblNjcmlwdFNldAAAAAcFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAA5uZXdHYW1lRGF0YVN0cgUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAAHcmFuZFN0cgkBAAAAD2dlbmVyYXRlUmFuZEludAAAAAIFAAAABmdhbWVJZAUAAAAHcnNhU2lnbgMJAQAAAAtpc1BsYXllcldpbgAAAAIFAAAADHBsYXllckNob2ljZQUAAAAHcmFuZFN0cgQAAAAObmV3R2FtZURhdGFTdHIJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAACFNUQVRFV09OBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAA1zdGFydGVkSGVpZ2h0BQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAAB3JhbmRTdHIJAQAAAAx3aW5TY3JpcHRTZXQAAAAHBQAAAAZnYW1lSWQFAAAADXBsYXllckFkZHJlc3MFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAObmV3R2FtZURhdGFTdHIFAAAADHdpbkJ5VGltZW91dAUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAAlTVEFURUxPU1QFAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAHcmFuZFN0cgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgkABEwAAAACBQAAABFkZWNyZWFzZWRSZXNlcnZlcwUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAADdHR4BQAAAAckbWF0Y2gwBAAAAAdhc3NldElkCQEAAAAVdmFsaWRhdGVBbmRHZXRBc3NldElkAAAAAQgFAAAAA3R0eAAAAAdhc3NldElkCQAAZwAAAAIJAABlAAAAAgkAA+sAAAACBQAAAAR0aGlzCAUAAAADdHR4AAAAB2Fzc2V0SWQIBQAAAAN0dHgAAAAGYW1vdW50CQEAAAAIZ2V0SW50T3IAAAACCQABkQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZBQAAAAdhc3NldElkAAAAAAAAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAADc3R4BQAAAAckbWF0Y2gwAwkAAAAAAAACCQEAAAAIZ2V0SW50T3IAAAACCQABkQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAIJAQAAAAhnZXRJbnRPcgAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAHBwdT3wFK", "chainId": 87, "height": 2110916, "spentComplexity": 0 } View: original | compacted Prev: ANeFp91PdUNosbtwv4V6iWo5tNfJV3EokgDS1erdHVSM Next: none Diff:
OldNewDifferences
2626 let DECIMALS = [WAVESD, USDND]
2727
2828 let ASSETS = [unit, fromBase58String("DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")]
29-
30-let COMMISSION = [((5 * WAVESD) / 1000), (((5 * USDND) / 1000) * 10)]
31-
32-func getCommission (assetId) = COMMISSION[assetId]
33-
3429
3530 let RATEMULT = 10000
3631
9287 else throw("Invalid payment asset")
9388
9489
95-func validateBetAndGetWinAmount (betAmount,assetId,playerChoice) = {
90+func validateBetAndGetWinAmount (bet,assetId,playerChoice) = {
9691 let dicesCount = size(playerChoice)
97- let commission = getCommission(assetId)
9892 func checkAmount (a,x) = if (a)
9993 then true
100- else (betAmount == ((x * DECIMALS[assetId]) + commission))
94+ else (bet == (x * DECIMALS[assetId]))
10195
10296 if (!({
103- let $list47844817 = BETS
104- let $size47844817 = size($list47844817)
105- let $acc047844817 = false
106- if (($size47844817 == 0))
107- then $acc047844817
97+ let $list45404573 = BETS
98+ let $size45404573 = size($list45404573)
99+ let $acc045404573 = false
100+ if (($size45404573 == 0))
101+ then $acc045404573
108102 else {
109- let $acc147844817 = checkAmount($acc047844817, $list47844817[0])
110- if (($size47844817 == 1))
111- then $acc147844817
103+ let $acc145404573 = checkAmount($acc045404573, $list45404573[0])
104+ if (($size45404573 == 1))
105+ then $acc145404573
112106 else {
113- let $acc247844817 = checkAmount($acc147844817, $list47844817[1])
114- if (($size47844817 == 2))
115- then $acc247844817
107+ let $acc245404573 = checkAmount($acc145404573, $list45404573[1])
108+ if (($size45404573 == 2))
109+ then $acc245404573
116110 else {
117- let $acc347844817 = checkAmount($acc247844817, $list47844817[2])
118- if (($size47844817 == 3))
119- then $acc347844817
111+ let $acc345404573 = checkAmount($acc245404573, $list45404573[2])
112+ if (($size45404573 == 3))
113+ then $acc345404573
120114 else {
121- let $acc447844817 = checkAmount($acc347844817, $list47844817[3])
122- if (($size47844817 == 4))
123- then $acc447844817
115+ let $acc445404573 = checkAmount($acc345404573, $list45404573[3])
116+ if (($size45404573 == 4))
117+ then $acc445404573
124118 else {
125- let $acc547844817 = checkAmount($acc447844817, $list47844817[4])
126- if (($size47844817 == 5))
127- then $acc547844817
119+ let $acc545404573 = checkAmount($acc445404573, $list45404573[4])
120+ if (($size45404573 == 5))
121+ then $acc545404573
128122 else {
129- let $acc647844817 = checkAmount($acc547844817, $list47844817[5])
123+ let $acc645404573 = checkAmount($acc545404573, $list45404573[5])
130124 throw("List size exceed 5")
131125 }
132126 }
140134 then throw("Invalid player's choice")
141135 else if ((dicesCount != 1))
142136 then throw("Invalid length of player's choice")
143- else {
144- let bet = (betAmount - commission)
145- ((bet * RATE) / RATEMULT)
146- }
137+ else ((bet * RATE) / RATEMULT)
147138 }
148139
149140
205196 then throw("No payment")
206197 else if (isDefined(getString(this, gameId)))
207198 then throw((("Bet for: " + gameId) + " was already made."))
208- else {
209- let p = extract(i.payment)
210- let assetId = validateAndGetAssetId(p.assetId)
211- let commission = getCommission(assetId)
212- let winAmount = validateBetAndGetWinAmount(p.amount, assetId, playerChoice)
213- let txIdUsed = isDefined(getString(this, gameId))
214- let playerPubKey58 = toBase58String(i.callerPublicKey)
215- let gameDataStr = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
216- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(SERVER, commission, unit)]))
217- }
199+ else if (if ((i.feeAssetId != ASSETS[0]))
200+ then (i.feeAssetId != ASSETS[1])
201+ else false)
202+ then throw("Invalid fee asset")
203+ else {
204+ let p = extract(i.payment)
205+ if ((i.feeAssetId != p.assetId))
206+ then throw("Fee assetId and payment assetId should match")
207+ else {
208+ let assetId = validateAndGetAssetId(p.assetId)
209+ let commission = i.fee
210+ let winAmount = validateBetAndGetWinAmount((p.amount - i.fee), assetId, playerChoice)
211+ let txIdUsed = isDefined(getString(this, gameId))
212+ let playerPubKey58 = toBase58String(i.callerPublicKey)
213+ let gameDataStr = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
214+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(SERVER, i.fee, i.feeAssetId)]))
215+ }
216+ }
218217 }
219218
220219
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlemr95J1jZUs7cJmrmmlN4zo7YVsBJzIeJdk8LDFGhUKSI6yfs20ZyJe21+6GJwNnKUU1Uyoc17wSWMKkrZ0MMvYE+Z5AiijvBK4sSJ3IgGjdU8/NhI8CBDu0F+xRM9q3TB3LLbDy5sBdudYfHfsUOc+MTvAD69n27db2Rh8+yZQMtubkuTQNp89sphHQaLGyQFaNlK/Na3lFx6omqzaa1gjoplUr6rvYKgfAICUB3zVmJShiEi7w7R0hWlNRD3qcZjCUONSpFo4WbzknGOazw84B+IMIFnIpXWzQL8RX0vNcfsBvLDfM6k2ZacqwyMKaLLqigdBiGdJ7W+0lOStOQIDAQAB")
55
66 let SERVER = addressFromStringValue("3PMT9wun7BB7JABSuhTJpFgJoegRfYw2e6d")
77
88 let RANDORACLETIMEFRAME = 7200
99
1010 let BET1 = 1
1111
1212 let BET2 = 2
1313
1414 let BET4 = 4
1515
1616 let BET8 = 8
1717
1818 let BET14 = 14
1919
2020 let BETS = [BET1, BET2, BET4, BET8, BET14]
2121
2222 let WAVESD = 100000000
2323
2424 let USDND = 1000000
2525
2626 let DECIMALS = [WAVESD, USDND]
2727
2828 let ASSETS = [unit, fromBase58String("DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")]
29-
30-let COMMISSION = [((5 * WAVESD) / 1000), (((5 * USDND) / 1000) * 10)]
31-
32-func getCommission (assetId) = COMMISSION[assetId]
33-
3429
3530 let RATEMULT = 10000
3631
3732 let RATE = 19000
3833
3934 let IdxGameState = 0
4035
4136 let IdxPlayerChoice = 1
4237
4338 let IdxPlayerPubKey58 = 2
4439
4540 let IdxStartedHeight = 3
4641
4742 let IdxWinAmount = 4
4843
4944 let IdxAssetId = 5
5045
5146 let RESERVATIONKEY = ["$RESERVED_AMOUNT_WAVES", "$RESERVED_AMOUNT_USDN"]
5247
5348 let GAMESCOUNTERKEY = "$GAME_NUM"
5449
5550 let STATESUBMITTED = "SUBMITTED"
5651
5752 let STATEWON = "WON"
5853
5954 let STATELOST = "LOST"
6055
6156 func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
6257 then getIntegerValue(this, key)
6358 else default
6459
6560
6661 func setInt (key,value) = DataEntry(key, value)
6762
6863
6964 func incrementInt (key) = setInt(key, (getIntOr(key, -1) + 1))
7065
7166
7267 func changeInt (key,by) = setInt(key, (getIntOr(key, 0) + by))
7368
7469
7570 func increaseReserveAmount (winAmount,assetId) = {
7671 let newReservedAmount = (getIntOr(RESERVATIONKEY[assetId], 0) + winAmount)
7772 if ((newReservedAmount > assetBalance(this, ASSETS[assetId])))
7873 then throw("Insufficient funds on Dice Roller account. Transaction was rejected for your safety.")
7974 else newReservedAmount
8075 }
8176
8277
8378 func decreaseReservedAmount (gameId,assetId,winAmount) = if ((0 > (getIntOr(RESERVATIONKEY[assetId], 0) - winAmount)))
8479 then throw("Invalid Dice Roller account state - reserved amount is less than 0")
8580 else changeInt(RESERVATIONKEY[assetId], -(winAmount))
8681
8782
8883 func validateAndGetAssetId (assetId) = if ((assetId == ASSETS[0]))
8984 then 0
9085 else if ((assetId == ASSETS[1]))
9186 then 1
9287 else throw("Invalid payment asset")
9388
9489
95-func validateBetAndGetWinAmount (betAmount,assetId,playerChoice) = {
90+func validateBetAndGetWinAmount (bet,assetId,playerChoice) = {
9691 let dicesCount = size(playerChoice)
97- let commission = getCommission(assetId)
9892 func checkAmount (a,x) = if (a)
9993 then true
100- else (betAmount == ((x * DECIMALS[assetId]) + commission))
94+ else (bet == (x * DECIMALS[assetId]))
10195
10296 if (!({
103- let $list47844817 = BETS
104- let $size47844817 = size($list47844817)
105- let $acc047844817 = false
106- if (($size47844817 == 0))
107- then $acc047844817
97+ let $list45404573 = BETS
98+ let $size45404573 = size($list45404573)
99+ let $acc045404573 = false
100+ if (($size45404573 == 0))
101+ then $acc045404573
108102 else {
109- let $acc147844817 = checkAmount($acc047844817, $list47844817[0])
110- if (($size47844817 == 1))
111- then $acc147844817
103+ let $acc145404573 = checkAmount($acc045404573, $list45404573[0])
104+ if (($size45404573 == 1))
105+ then $acc145404573
112106 else {
113- let $acc247844817 = checkAmount($acc147844817, $list47844817[1])
114- if (($size47844817 == 2))
115- then $acc247844817
107+ let $acc245404573 = checkAmount($acc145404573, $list45404573[1])
108+ if (($size45404573 == 2))
109+ then $acc245404573
116110 else {
117- let $acc347844817 = checkAmount($acc247844817, $list47844817[2])
118- if (($size47844817 == 3))
119- then $acc347844817
111+ let $acc345404573 = checkAmount($acc245404573, $list45404573[2])
112+ if (($size45404573 == 3))
113+ then $acc345404573
120114 else {
121- let $acc447844817 = checkAmount($acc347844817, $list47844817[3])
122- if (($size47844817 == 4))
123- then $acc447844817
115+ let $acc445404573 = checkAmount($acc345404573, $list45404573[3])
116+ if (($size45404573 == 4))
117+ then $acc445404573
124118 else {
125- let $acc547844817 = checkAmount($acc447844817, $list47844817[4])
126- if (($size47844817 == 5))
127- then $acc547844817
119+ let $acc545404573 = checkAmount($acc445404573, $list45404573[4])
120+ if (($size45404573 == 5))
121+ then $acc545404573
128122 else {
129- let $acc647844817 = checkAmount($acc547844817, $list47844817[5])
123+ let $acc645404573 = checkAmount($acc545404573, $list45404573[5])
130124 throw("List size exceed 5")
131125 }
132126 }
133127 }
134128 }
135129 }
136130 }
137131 }))
138132 then throw("Bet amount is not valid")
139133 else if ((parseInt(playerChoice) == unit))
140134 then throw("Invalid player's choice")
141135 else if ((dicesCount != 1))
142136 then throw("Invalid length of player's choice")
143- else {
144- let bet = (betAmount - commission)
145- ((bet * RATE) / RATEMULT)
146- }
137+ else ((bet * RATE) / RATEMULT)
147138 }
148139
149140
150141 func generateRandInt (gameId,rsaSign) = {
151142 let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
152143 if (!(rsaSigValid))
153144 then throw("Invalid RSA signature")
154145 else {
155146 let rand = (toInt(sha256(rsaSign)) % 2)
156147 let result = if ((0 > rand))
157148 then (-1 * rand)
158149 else rand
159150 toString(result)
160151 }
161152 }
162153
163154
164155 func isPlayerWin (playerChoice,randStr) = {
165156 let s = size(playerChoice)
166157 if ((s == 1))
167158 then (playerChoice == randStr)
168159 else false
169160 }
170161
171162
172163 func formatGameData (gameState,playerChoice,playerPubKey58,startedHeight,winAmount,assetId,randOrEmpty) = (((((((((((gameState + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(startedHeight)) + "_") + toString(winAmount)) + "_") + toString(assetId)) + (if ((randOrEmpty == ""))
173164 then ""
174165 else ("_" + randOrEmpty)))
175166
176167
177168 func extractGameData (gameId) = split(match getString(this, gameId) {
178169 case str: String =>
179170 str
180171 case _ =>
181172 throw((("Game: " + gameId) + " not found."))
182173 }, "_")
183174
184175
185176 func winScriptSet (gameId,playerAddress,winAmount,assetId,newGameDataStr,winByTimeout,decreasedReserves) = {
186177 let wSetCommonData = [decreasedReserves]
187178 let tSetCommonData = [ScriptTransfer(playerAddress, winAmount, ASSETS[assetId])]
188179 if (winByTimeout)
189180 then {
190181 let newGameDataStrAdjusted = (newGameDataStr + "_TIMEOUT")
191182 let gameData = DataEntry(gameId, newGameDataStrAdjusted)
192183 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
193184 }
194185 else {
195186 let gameData = DataEntry(gameId, newGameDataStr)
196187 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
197188 }
198189 }
199190
200191
201192 @Callable(i)
202193 func bet (playerChoice) = {
203194 let gameId = toBase58String(i.transactionId)
204195 if ((i.payment == unit))
205196 then throw("No payment")
206197 else if (isDefined(getString(this, gameId)))
207198 then throw((("Bet for: " + gameId) + " was already made."))
208- else {
209- let p = extract(i.payment)
210- let assetId = validateAndGetAssetId(p.assetId)
211- let commission = getCommission(assetId)
212- let winAmount = validateBetAndGetWinAmount(p.amount, assetId, playerChoice)
213- let txIdUsed = isDefined(getString(this, gameId))
214- let playerPubKey58 = toBase58String(i.callerPublicKey)
215- let gameDataStr = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
216- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(SERVER, commission, unit)]))
217- }
199+ else if (if ((i.feeAssetId != ASSETS[0]))
200+ then (i.feeAssetId != ASSETS[1])
201+ else false)
202+ then throw("Invalid fee asset")
203+ else {
204+ let p = extract(i.payment)
205+ if ((i.feeAssetId != p.assetId))
206+ then throw("Fee assetId and payment assetId should match")
207+ else {
208+ let assetId = validateAndGetAssetId(p.assetId)
209+ let commission = i.fee
210+ let winAmount = validateBetAndGetWinAmount((p.amount - i.fee), assetId, playerChoice)
211+ let txIdUsed = isDefined(getString(this, gameId))
212+ let playerPubKey58 = toBase58String(i.callerPublicKey)
213+ let gameDataStr = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
214+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(SERVER, i.fee, i.feeAssetId)]))
215+ }
216+ }
218217 }
219218
220219
221220
222221 @Callable(i)
223222 func withdraw (gameId,rsaSign) = {
224223 let gameData = extractGameData(gameId)
225224 let gameState = gameData[IdxGameState]
226225 let playerChoice = gameData[IdxPlayerChoice]
227226 let startedHeight = parseIntValue(gameData[IdxStartedHeight])
228227 let winAmount = parseIntValue(gameData[IdxWinAmount])
229228 let assetId = parseIntValue(gameData[IdxAssetId])
230229 let playerPubKey58 = gameData[IdxPlayerPubKey58]
231230 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
232231 let winByTimeout = ((height - startedHeight) > RANDORACLETIMEFRAME)
233232 let decreasedReserves = decreaseReservedAmount(gameId, assetId, winAmount)
234233 if ((gameState != STATESUBMITTED))
235234 then throw("Invalid game state for passed gameId")
236235 else if (winByTimeout)
237236 then {
238237 let randStr = take(playerChoice, 1)
239238 let newGameDataStr = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randStr)
240239 winScriptSet(gameId, playerAddress, winAmount, assetId, newGameDataStr, winByTimeout, decreasedReserves)
241240 }
242241 else {
243242 let randStr = generateRandInt(gameId, rsaSign)
244243 if (isPlayerWin(playerChoice, randStr))
245244 then {
246245 let newGameDataStr = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randStr)
247246 winScriptSet(gameId, playerAddress, winAmount, assetId, newGameDataStr, winByTimeout, decreasedReserves)
248247 }
249248 else {
250249 let newGameDataStr = formatGameData(STATELOST, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randStr)
251250 WriteSet([DataEntry(gameId, newGameDataStr), decreasedReserves])
252251 }
253252 }
254253 }
255254
256255
257256 @Verifier(tx)
258257 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
259258 then match tx {
260259 case ttx: TransferTransaction =>
261260 let assetId = validateAndGetAssetId(ttx.assetId)
262261 ((assetBalance(this, ttx.assetId) - ttx.amount) >= getIntOr(RESERVATIONKEY[assetId], 0))
263262 case stx: SetScriptTransaction =>
264263 if ((getIntOr(RESERVATIONKEY[0], 0) == 0))
265264 then (getIntOr(RESERVATIONKEY[1], 0) == 0)
266265 else false
267266 case _ =>
268267 false
269268 }
270269 else false
271270

github/deemru/w8io/6500d08 
70.11 ms