tx · DB3p1bSghr3bhses9JD4Lnref9UVAH9F27wdTa5C4R9R

3N6jFne1rcA1JF5CpauzemnNQmCxgeu3Y2C:  -0.01400000 Waves

2020.04.08 12:08 [945115] smart account 3N6jFne1rcA1JF5CpauzemnNQmCxgeu3Y2C > SELF 0.00000000 Waves

{ "type": 13, "id": "DB3p1bSghr3bhses9JD4Lnref9UVAH9F27wdTa5C4R9R", "fee": 1400000, "feeAssetId": null, "timestamp": 1586336926479, "version": 1, "sender": "3N6jFne1rcA1JF5CpauzemnNQmCxgeu3Y2C", "senderPublicKey": "pweMkajEKq8krLUKBH3CenZLv4LzyRmZ6nrcHneHX7W", "proofs": [ "4PoheHsqjgaN2gtRGAxsPdR3xSAjwwk8TyBAqC5q4MDW56RihMdGRnxQx4Dv6jtjzuBogDY3VGEoZNvcfCXggZuw" ], "script": "base64:AAIDAAAAAAAAABIIARIDCgEEEgMKAQgSBAoCCAIAAAAyAAAAAAZXQVZFU0QAAAAAAAX14QAAAAAABVVTRE5EAAAAAAAAD0JAAAAAAAhERUNJTUFMUwkABEwAAAACBQAAAAZXQVZFU0QJAARMAAAAAgUAAAAFVVNETkQFAAAAA25pbAAAAAAGQVNTRVRTCQAETAAAAAIFAAAABHVuaXQJAARMAAAAAgkAAlkAAAABAgAAACwzS0ZYQkdHTENqQTVaMkR1VzREcTlmRERySGpKSlAxWkVrYW9halN6dUtzQwUAAAADbmlsAQAAAA1nZXRDb21taXNzaW9uAAAAAQAAAAdhc3NldElkCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQkAAZEAAAACBQAAAAhERUNJTUFMUwUAAAAHYXNzZXRJZAAAAAAAAAAD6AAAAAAJUlNBUFVCTElDCQACWwAAAAECAAABj2Jhc2U2NDpNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW1wdVhjSS9vNHBJQjV5d3Y5RE9PR2FwVEJVd1JWbE0vNitINmhGZWxPWHRrcndZL1lJdG1QeEVEcHo3ckFlclFQUWU5dERQRWFBdi9HbmxFenR5Yk9GWGd1OUR6RGU4WW9NUkQxdmFrZ29BY29nbWJZNThRRDZLTWo1SGtvVmoveVROSWM5c3pqNXFoSWxyQWRtYjNLTEw2aFFVN3k4K0pqNjlCV1ZQc2FRZ2tzcFNkZVl0YjF0SFFjN3Q5NW43T1o1NnIyQTdHMytiUWY2blNNa1BrQWhJckVwYkNtNThvaUdCY3pkVGQvTHFGU1ZvdFpzYkw3WWg2U0hMZm5IZUQrUWdjZkpybmFtOE9ITUdKRUpUUlhqSUxlSEdqbFJDUDhvVnBpb0hyeTFTMnhQeDVzVnpJbTJNTStDelllbkFHbG8wajI2YXRCaGlVTG9UdWx3RDNwUUlEQVFBQgAAAAAGU0VSVkVSCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQ2lHMjhMbVd5VGlnV0cxM0U1UW52ZEhCc1pGWVhTUzJqAAAAABNSQU5ET1JBQ0xFVElNRUZSQU1FAAAAAAAAABDgAAAAAA5NQVhCQUxBTkNFRElGRgAA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ZHJlc3MFAAAACXdpbkFtb3VudAkAAZEAAAACBQAAAAZBU1NFVFMFAAAAB2Fzc2V0SWQFAAAAA25pbAMFAAAADHdpbkJ5VGltZW91dAQAAAATbmV3Z2FtZURhdGFBZGp1c3RlZAkAASwAAAACCQABLAAAAAIFAAAAC25ld2dhbWVEYXRhAgAAAAFfAgAAAAdUSU1FT1VUBAAAAAhnYW1lRGF0YQkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAATbmV3Z2FtZURhdGFBZGp1c3RlZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAIZ2FtZURhdGEFAAAADndTZXRDb21tb25EYXRhCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAA50U2V0Q29tbW9uRGF0YQQAAAAIZ2FtZURhdGEJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAAC25ld2dhbWVEYXRhCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACBQAAAAhnYW1lRGF0YQUAAAAOd1NldENvbW1vbkRhdGEJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAADnRTZXRDb21tb25EYXRhAQAAAAhpc0RBcHBVcAAAAAAEAAAACWRBcHBVcE9wdAkABBsAAAACBQAAAAR0aGlzBQAAAAlEQVBQVVBLRVkDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAJZEFwcFVwT3B0CQEAAAAHZXh0cmFjdAAAAAEFAAAACWRBcHBVcE9wdAcBAAAAEW1vbml0b3JNYXhCYWxhbmNlAAAAAAQAAAANbWF4QmFsYW5jZU9wdAkABBoAAAACBQAAAAR0aGlzBQAAAA1NQVhCQUxBTkNFS0VZBAAAAAptYXhCYWxhbmNlAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAADW1heEJhbGFuY2VPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAANbWF4QmFsYW5jZU9wdAAAAAAAAAAAAAQAAAALY3VyckJhbGFuY2UJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzAwkAAGYAAAACBQAAAAtjdXJyQmFsYW5jZQUAAAAKbWF4QmFsYW5jZQUAAAALY3VyckJhbGFuY2UEAAAABGRpZmYJAABlAAAAAgUAAAAKbWF4QmFsYW5jZQUAAAALY3VyckJhbGFuY2UDCQAAZgAAAAIFAAAABGRpZmYFAAAADk1BWEJBTEFOQ0VESUZGCQAAAgAAAAECAAAAGmRBcHAgaXMgdGVtcG9yYXJ5IGRpc2FibGVkBQAAAAptYXhCYWxhbmNlAAAAAwAAAAFpAQAAAAZkQXBwVXAAAAABAAAABmRBcHBVcAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAGU0VSVkVSCQAAAgAAAAECAAAAJ09ubHkgU2VydmVyIGNhbiBtYW5hZ2UgZEFwcFVwIGF0dHJpYnV0ZQMJAAAAAAAAAgkBAAAACGlzREFwcFVwAAAAAAUAAAAGZEFwcFVwCQAAAgAAAAECAAAAKmRBcHBVcCBtdXN0IGJlIGRpZmZlcmVudCB3aXRoIGFjdHVhbCB2YWx1ZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAJREFQUFVQS0VZBQAAAAZkQXBwVXAFAAAAA25pbAAAAAFpAQAAAANiZXQAAAABAAAADHBsYXllckNob2ljZQQAAAAGZ2FtZUlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQDCQEAAAABIQAAAAEJAQAAAAhpc0RBcHBVcAAAAAAJAAACAAAAAQIAAAAZREFwcCBpcyB1bmRlciBtYWludGVuYW5jZQMJAAAAAAAAAggFAAAAAWkAAAAHcGF5bWVudAUAAAAEdW5pdAkAAAIAAAABAgAAAApObyBwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAGZ2FtZUlkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAlCZXQgZm9yOiAFAAAABmdhbWVJZAIAAAASIHdhcyBhbHJlYWR5IG1hZGUuBAAAAAFwCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAB2Fzc2V0SWQJAQAAABV2YWxpZGF0ZUFuZEdldEFzc2V0SWQAAAABCAUAAAABcAAAAAdhc3NldElkBAAAAApjb21taXNzaW9uCQEAAAANZ2V0Q29tbWlzc2lvbgAAAAEFAAAAB2Fzc2V0SWQEAAAACXdpbkFtb3VudAkBAAAAGnZhbGlkYXRlQmV0QW5kR2V0V2luQW1vdW50AAAAAwgFAAAAAXAAAAAGYW1vdW50BQAAAAdhc3NldElkBQAAAAxwbGF5ZXJDaG9pY2UEAAAADnBsYXllclB1YktleTU4CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAIZ2FtZURhdGEJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAADlNUQVRFU1VCTUlUVEVEBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAAZoZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAIAAAAACQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQUAAAAHYXNzZXRJZAkBAAAAFWluY3JlYXNlUmVzZXJ2ZUFtb3VudAAAAAIFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMaW5jcmVtZW50SW50AAAAAQUAAAAPR0FNRVNDT1VOVEVSS0VZCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1NQVhCQUxBTkNFS0VZCQEAAAARbW9uaXRvck1heEJhbGFuY2UAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAACGdhbWVEYXRhBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGU0VSVkVSBQAAAApjb21taXNzaW9uCAUAAAABcAAAAAdhc3NldElkBQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAACAAAABmdhbWVJZAAAAAdyc2FTaWduBAAAAAhnYW1lRGF0YQkBAAAAD2V4dHJhY3RHYW1lRGF0YQAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhHYW1lU3RhdGUEAAAADHBsYXllckNob2ljZQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAPSWR4UGxheWVyQ2hvaWNlBAAAAA1zdGFydGVkSGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAEElkeFN0YXJ0ZWRIZWlnaHQEAAAACXdpbkFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhXaW5BbW91bnQEAAAADnBsYXllclB1YktleTU4CQABkQAAAAIFAAAACGdhbWVEYXRhBQAAABFJZHhQbGF5ZXJQdWJLZXk1OAQAAAAHYXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAApJZHhBc3NldElkBAAAAA1wbGF5ZXJBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADnBsYXllclB1YktleTU4BAAAAAx3aW5CeVRpbWVvdXQJAABmAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAADXN0YXJ0ZWRIZWlnaHQFAAAAE1JBTkRPUkFDTEVUSU1FRlJBTUUEAAAAEWRlY3JlYXNlZFJlc2VydmVzCQEAAAAWZGVjcmVhc2VSZXNlcnZlZEFtb3VudAAAAAMFAAAABmdhbWVJZAUAAAAHYXNzZXRJZAUAAAAJd2luQW1vdW50AwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQDBQAAAAx3aW5CeVRpbWVvdXQEAAAACnJhbmRDaG9pc2UJAAEvAAAAAgUAAAAMcGxheWVyQ2hvaWNlAAAAAAAAAAABBAAAAAtuZXdnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAIU1RBVEVXT04FAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAKcmFuZENob2lzZQkBAAAADHdpblNjcmlwdFNldAAAAAcFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAAtuZXdnYW1lRGF0YQUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAAKcmFuZENob2lzZQkBAAAAEmdlbmVyYXRlUmFuZENob2lzZQAAAAIFAAAABmdhbWVJZAUAAAAHcnNhU2lnbgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAGU0VSVkVSCQAAAgAAAAECAAAAK1JlZ3VsYXIgd2l0aGRyYXcgY2FuIGJlIGRvbmUgYnkgc2VydmVyIG9ubHkDCQEAAAALaXNQbGF5ZXJXaW4AAAACBQAAAAxwbGF5ZXJDaG9pY2UFAAAACnJhbmRDaG9pc2UEAAAAC25ld2dhbWVEYXRhCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAAhTVEFURVdPTgUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAApyYW5kQ2hvaXNlCQEAAAAMd2luU2NyaXB0U2V0AAAABwUAAAAGZ2FtZUlkBQAAAA1wbGF5ZXJBZGRyZXNzBQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAAC25ld2dhbWVEYXRhBQAAAAx3aW5CeVRpbWVvdXQFAAAAEWRlY3JlYXNlZFJlc2VydmVzBAAAAAtuZXdnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAJU1RBVEVMT1NUBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAA1zdGFydGVkSGVpZ2h0BQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAACnJhbmRDaG9pc2UJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALbmV3Z2FtZURhdGEJAARMAAAAAgUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAQAAAAHYXNzZXRJZAkBAAAAFXZhbGlkYXRlQW5kR2V0QXNzZXRJZAAAAAEIBQAAAAN0dHgAAAAHYXNzZXRJZAkAAGcAAAACCQAAZQAAAAIJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAR0aGlzCAUAAAADdHR4AAAABmFtb3VudAkBAAAACGdldEludE9yAAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQUAAAAHYXNzZXRJZAAAAAAAAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAA3N0eAUAAAAHJG1hdGNoMAMDCQAAAAAAAAIJAQAAAAhpc0RBcHBVcAAAAAAHCQAAAAAAAAIJAQAAAAhnZXRJbnRPcgAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCQAAAAAAAAIJAQAAAAhnZXRJbnRPcgAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAHBgdiEKSb", "chainId": 84, "height": 945115, "spentComplexity": 0 } View: original | compacted Prev: 6aw6r82gE6Axhs7pbgCQ3gHy48uh1BnJ6UywRz7UepqP Next: none Diff:
OldNewDifferences
77
88 let DECIMALS = [WAVESD, USDND]
99
10-let ASSETS = [unit, fromBase58String("$USDN_ID")]
10+let ASSETS = [unit, fromBase58String("3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC")]
1111
1212 func getCommission (assetId) = ((5 * DECIMALS[assetId]) / 1000)
1313
114114 else (betAmount == ((x * DECIMALS[assetId]) + commission))
115115
116116 if (!({
117- let $list46864719 = BETS
118- let $size46864719 = size($list46864719)
119- let $acc046864719 = false
120- if (($size46864719 == 0))
121- then $acc046864719
117+ let $list47224755 = BETS
118+ let $size47224755 = size($list47224755)
119+ let $acc047224755 = false
120+ if (($size47224755 == 0))
121+ then $acc047224755
122122 else {
123- let $acc146864719 = checkAmount($acc046864719, $list46864719[0])
124- if (($size46864719 == 1))
125- then $acc146864719
123+ let $acc147224755 = checkAmount($acc047224755, $list47224755[0])
124+ if (($size47224755 == 1))
125+ then $acc147224755
126126 else {
127- let $acc246864719 = checkAmount($acc146864719, $list46864719[1])
128- if (($size46864719 == 2))
129- then $acc246864719
127+ let $acc247224755 = checkAmount($acc147224755, $list47224755[1])
128+ if (($size47224755 == 2))
129+ then $acc247224755
130130 else {
131- let $acc346864719 = checkAmount($acc246864719, $list46864719[2])
132- if (($size46864719 == 3))
133- then $acc346864719
131+ let $acc347224755 = checkAmount($acc247224755, $list47224755[2])
132+ if (($size47224755 == 3))
133+ then $acc347224755
134134 else {
135- let $acc446864719 = checkAmount($acc346864719, $list46864719[3])
136- if (($size46864719 == 4))
137- then $acc446864719
135+ let $acc447224755 = checkAmount($acc347224755, $list47224755[3])
136+ if (($size47224755 == 4))
137+ then $acc447224755
138138 else {
139- let $acc546864719 = checkAmount($acc446864719, $list46864719[4])
140- if (($size46864719 == 5))
141- then $acc546864719
139+ let $acc547224755 = checkAmount($acc447224755, $list47224755[4])
140+ if (($size47224755 == 5))
141+ then $acc547224755
142142 else {
143- let $acc646864719 = checkAmount($acc546864719, $list46864719[5])
143+ let $acc647224755 = checkAmount($acc547224755, $list47224755[5])
144144 throw("List size exceed 5")
145145 }
146146 }
185185 then (take(drop(playerChoice, (x - 1)), 1) == randChoise)
186186 else false
187187
188- let $list56035637 = [1, 2, 3, 4, 5]
189- let $size56035637 = size($list56035637)
190- let $acc056035637 = false
191- if (($size56035637 == 0))
192- then $acc056035637
188+ let $list56395673 = [1, 2, 3, 4, 5]
189+ let $size56395673 = size($list56395673)
190+ let $acc056395673 = false
191+ if (($size56395673 == 0))
192+ then $acc056395673
193193 else {
194- let $acc156035637 = check($acc056035637, $list56035637[0])
195- if (($size56035637 == 1))
196- then $acc156035637
194+ let $acc156395673 = check($acc056395673, $list56395673[0])
195+ if (($size56395673 == 1))
196+ then $acc156395673
197197 else {
198- let $acc256035637 = check($acc156035637, $list56035637[1])
199- if (($size56035637 == 2))
200- then $acc256035637
198+ let $acc256395673 = check($acc156395673, $list56395673[1])
199+ if (($size56395673 == 2))
200+ then $acc256395673
201201 else {
202- let $acc356035637 = check($acc256035637, $list56035637[2])
203- if (($size56035637 == 3))
204- then $acc356035637
202+ let $acc356395673 = check($acc256395673, $list56395673[2])
203+ if (($size56395673 == 3))
204+ then $acc356395673
205205 else {
206- let $acc456035637 = check($acc356035637, $list56035637[3])
207- if (($size56035637 == 4))
208- then $acc456035637
206+ let $acc456395673 = check($acc356395673, $list56395673[3])
207+ if (($size56395673 == 4))
208+ then $acc456395673
209209 else {
210- let $acc556035637 = check($acc456035637, $list56035637[4])
211- if (($size56035637 == 5))
212- then $acc556035637
210+ let $acc556395673 = check($acc456395673, $list56395673[4])
211+ if (($size56395673 == 5))
212+ then $acc556395673
213213 else {
214- let $acc656035637 = check($acc556035637, $list56035637[5])
214+ let $acc656395673 = check($acc556395673, $list56395673[5])
215215 throw("List size exceed 5")
216216 }
217217 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WAVESD = 100000000
55
66 let USDND = 1000000
77
88 let DECIMALS = [WAVESD, USDND]
99
10-let ASSETS = [unit, fromBase58String("$USDN_ID")]
10+let ASSETS = [unit, fromBase58String("3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC")]
1111
1212 func getCommission (assetId) = ((5 * DECIMALS[assetId]) / 1000)
1313
1414
1515 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmpuXcI/o4pIB5ywv9DOOGapTBUwRVlM/6+H6hFelOXtkrwY/YItmPxEDpz7rAerQPQe9tDPEaAv/GnlEztybOFXgu9DzDe8YoMRD1vakgoAcogmbY58QD6KMj5HkoVj/yTNIc9szj5qhIlrAdmb3KLL6hQU7y8+Jj69BWVPsaQgkspSdeYtb1tHQc7t95n7OZ56r2A7G3+bQf6nSMkPkAhIrEpbCm58oiGBczdTd/LqFSVotZsbL7Yh6SHLfnHeD+QgcfJrnam8OHMGJEJTRXjILeHGjlRCP8oVpioHry1S2xPx5sVzIm2MM+CzYenAGlo0j26atBhiULoTulwD3pQIDAQAB")
1616
1717 let SERVER = addressFromStringValue("3NCiG28LmWyTigWG13E5QnvdHBsZFYXSS2j")
1818
1919 let RANDORACLETIMEFRAME = 4320
2020
2121 let MAXBALANCEDIFF = 1000000000
2222
2323 let BET1 = 1
2424
2525 let BET2 = 2
2626
2727 let BET4 = 4
2828
2929 let BET8 = 8
3030
3131 let BET14 = 14
3232
3333 let RATEMULT = 10000
3434
3535 let RATE1 = 39655
3636
3737 let RATE2 = 24600
3838
3939 let RATE3 = 19000
4040
4141 let RATE4 = 14200
4242
4343 let RATE5 = 11400
4444
4545 let RATES = [RATE1, RATE2, RATE3, RATE4, RATE5]
4646
4747 let BETS = [BET1, BET2, BET4, BET8, BET14]
4848
4949 let IdxGameState = 0
5050
5151 let IdxPlayerChoice = 1
5252
5353 let IdxPlayerPubKey58 = 2
5454
5555 let IdxStartedHeight = 3
5656
5757 let IdxWinAmount = 4
5858
5959 let IdxAssetId = 5
6060
6161 let RESERVATIONKEY = ["$RESERVED_AMOUNT_WAVES", "$RESERVED_AMOUNT_USDN"]
6262
6363 let GAMESCOUNTERKEY = "$GAME_NUM"
6464
6565 let DAPPUPKEY = "$DAPP_UP"
6666
6767 let MAXBALANCEKEY = "$MAX_BALANCE"
6868
6969 let STATESUBMITTED = "SUBMITTED"
7070
7171 let STATEWON = "WON"
7272
7373 let STATELOST = "LOST"
7474
7575 func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
7676 then getIntegerValue(this, key)
7777 else default
7878
7979
8080 func setInt (key,value) = DataEntry(key, value)
8181
8282
8383 func incrementInt (key) = setInt(key, (getIntOr(key, -1) + 1))
8484
8585
8686 func changeInt (key,by) = setInt(key, (getIntOr(key, 0) + by))
8787
8888
8989 func increaseReserveAmount (winAmount,assetId) = {
9090 let newReservedAmount = (getIntOr(RESERVATIONKEY[assetId], 0) + winAmount)
9191 if ((newReservedAmount > wavesBalance(this)))
9292 then throw("Insufficient funds on Dice Roller account. Transaction was rejected for your safety.")
9393 else newReservedAmount
9494 }
9595
9696
9797 func decreaseReservedAmount (gameId,assetId,winAmount) = if ((0 > (getIntOr(RESERVATIONKEY[assetId], 0) - winAmount)))
9898 then throw("Invalid Dice Roller account state - reserved amount is less than 0")
9999 else changeInt(RESERVATIONKEY[assetId], -(winAmount))
100100
101101
102102 func validateAndGetAssetId (assetId) = if ((assetId == ASSETS[0]))
103103 then 0
104104 else if ((assetId == ASSETS[1]))
105105 then 1
106106 else throw("Invalid payment asset")
107107
108108
109109 func validateBetAndGetWinAmount (betAmount,assetId,playerChoice) = {
110110 let dicesCount = size(playerChoice)
111111 let commission = getCommission(assetId)
112112 func checkAmount (a,x) = if (a)
113113 then true
114114 else (betAmount == ((x * DECIMALS[assetId]) + commission))
115115
116116 if (!({
117- let $list46864719 = BETS
118- let $size46864719 = size($list46864719)
119- let $acc046864719 = false
120- if (($size46864719 == 0))
121- then $acc046864719
117+ let $list47224755 = BETS
118+ let $size47224755 = size($list47224755)
119+ let $acc047224755 = false
120+ if (($size47224755 == 0))
121+ then $acc047224755
122122 else {
123- let $acc146864719 = checkAmount($acc046864719, $list46864719[0])
124- if (($size46864719 == 1))
125- then $acc146864719
123+ let $acc147224755 = checkAmount($acc047224755, $list47224755[0])
124+ if (($size47224755 == 1))
125+ then $acc147224755
126126 else {
127- let $acc246864719 = checkAmount($acc146864719, $list46864719[1])
128- if (($size46864719 == 2))
129- then $acc246864719
127+ let $acc247224755 = checkAmount($acc147224755, $list47224755[1])
128+ if (($size47224755 == 2))
129+ then $acc247224755
130130 else {
131- let $acc346864719 = checkAmount($acc246864719, $list46864719[2])
132- if (($size46864719 == 3))
133- then $acc346864719
131+ let $acc347224755 = checkAmount($acc247224755, $list47224755[2])
132+ if (($size47224755 == 3))
133+ then $acc347224755
134134 else {
135- let $acc446864719 = checkAmount($acc346864719, $list46864719[3])
136- if (($size46864719 == 4))
137- then $acc446864719
135+ let $acc447224755 = checkAmount($acc347224755, $list47224755[3])
136+ if (($size47224755 == 4))
137+ then $acc447224755
138138 else {
139- let $acc546864719 = checkAmount($acc446864719, $list46864719[4])
140- if (($size46864719 == 5))
141- then $acc546864719
139+ let $acc547224755 = checkAmount($acc447224755, $list47224755[4])
140+ if (($size47224755 == 5))
141+ then $acc547224755
142142 else {
143- let $acc646864719 = checkAmount($acc546864719, $list46864719[5])
143+ let $acc647224755 = checkAmount($acc547224755, $list47224755[5])
144144 throw("List size exceed 5")
145145 }
146146 }
147147 }
148148 }
149149 }
150150 }
151151 }))
152152 then throw("Bet amount is not valid")
153153 else if ((parseInt(playerChoice) == unit))
154154 then throw("Invalid player's choice")
155155 else if (if ((1 > dicesCount))
156156 then true
157157 else (dicesCount > 5))
158158 then throw("Invalid dices count in player's choice")
159159 else {
160160 let bet = (betAmount - commission)
161161 ((bet * RATES[(dicesCount - 1)]) / RATEMULT)
162162 }
163163 }
164164
165165
166166 func generateRandChoise (gameId,rsaSign) = {
167167 let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
168168 if (!(rsaSigValid))
169169 then throw("Invalid RSA signature")
170170 else {
171171 let rand = (toInt(sha256(rsaSign)) % 6)
172172 let result = if ((0 > rand))
173173 then (-1 * rand)
174174 else rand
175175 toString(result)
176176 }
177177 }
178178
179179
180180 func isPlayerWin (playerChoice,randChoise) = {
181181 let s = size(playerChoice)
182182 func check (a,x) = if (a)
183183 then true
184184 else if ((s >= x))
185185 then (take(drop(playerChoice, (x - 1)), 1) == randChoise)
186186 else false
187187
188- let $list56035637 = [1, 2, 3, 4, 5]
189- let $size56035637 = size($list56035637)
190- let $acc056035637 = false
191- if (($size56035637 == 0))
192- then $acc056035637
188+ let $list56395673 = [1, 2, 3, 4, 5]
189+ let $size56395673 = size($list56395673)
190+ let $acc056395673 = false
191+ if (($size56395673 == 0))
192+ then $acc056395673
193193 else {
194- let $acc156035637 = check($acc056035637, $list56035637[0])
195- if (($size56035637 == 1))
196- then $acc156035637
194+ let $acc156395673 = check($acc056395673, $list56395673[0])
195+ if (($size56395673 == 1))
196+ then $acc156395673
197197 else {
198- let $acc256035637 = check($acc156035637, $list56035637[1])
199- if (($size56035637 == 2))
200- then $acc256035637
198+ let $acc256395673 = check($acc156395673, $list56395673[1])
199+ if (($size56395673 == 2))
200+ then $acc256395673
201201 else {
202- let $acc356035637 = check($acc256035637, $list56035637[2])
203- if (($size56035637 == 3))
204- then $acc356035637
202+ let $acc356395673 = check($acc256395673, $list56395673[2])
203+ if (($size56395673 == 3))
204+ then $acc356395673
205205 else {
206- let $acc456035637 = check($acc356035637, $list56035637[3])
207- if (($size56035637 == 4))
208- then $acc456035637
206+ let $acc456395673 = check($acc356395673, $list56395673[3])
207+ if (($size56395673 == 4))
208+ then $acc456395673
209209 else {
210- let $acc556035637 = check($acc456035637, $list56035637[4])
211- if (($size56035637 == 5))
212- then $acc556035637
210+ let $acc556395673 = check($acc456395673, $list56395673[4])
211+ if (($size56395673 == 5))
212+ then $acc556395673
213213 else {
214- let $acc656035637 = check($acc556035637, $list56035637[5])
214+ let $acc656395673 = check($acc556395673, $list56395673[5])
215215 throw("List size exceed 5")
216216 }
217217 }
218218 }
219219 }
220220 }
221221 }
222222 }
223223
224224
225225 func formatGameData (gameState,playerChoice,playerPubKey58,startedHeight,winAmount,assetId,randOrEmpty) = (((((((((((gameState + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(startedHeight)) + "_") + toString(winAmount)) + "_") + toString(assetId)) + (if ((randOrEmpty == ""))
226226 then ""
227227 else ("_" + randOrEmpty)))
228228
229229
230230 func extractGameData (gameId) = split(match getString(this, gameId) {
231231 case str: String =>
232232 str
233233 case _ =>
234234 throw((("Game: " + gameId) + " not found."))
235235 }, "_")
236236
237237
238238 func winScriptSet (gameId,playerAddress,winAmount,assetId,newgameData,winByTimeout,decreasedReserves) = {
239239 let wSetCommonData = [decreasedReserves]
240240 let tSetCommonData = [ScriptTransfer(playerAddress, winAmount, ASSETS[assetId])]
241241 if (winByTimeout)
242242 then {
243243 let newgameDataAdjusted = ((newgameData + "_") + "TIMEOUT")
244244 let gameData = DataEntry(gameId, newgameDataAdjusted)
245245 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
246246 }
247247 else {
248248 let gameData = DataEntry(gameId, newgameData)
249249 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
250250 }
251251 }
252252
253253
254254 func isDAppUp () = {
255255 let dAppUpOpt = getBoolean(this, DAPPUPKEY)
256256 if (isDefined(dAppUpOpt))
257257 then extract(dAppUpOpt)
258258 else false
259259 }
260260
261261
262262 func monitorMaxBalance () = {
263263 let maxBalanceOpt = getInteger(this, MAXBALANCEKEY)
264264 let maxBalance = if (isDefined(maxBalanceOpt))
265265 then extract(maxBalanceOpt)
266266 else 0
267267 let currBalance = wavesBalance(this)
268268 if ((currBalance > maxBalance))
269269 then currBalance
270270 else {
271271 let diff = (maxBalance - currBalance)
272272 if ((diff > MAXBALANCEDIFF))
273273 then throw("dApp is temporary disabled")
274274 else maxBalance
275275 }
276276 }
277277
278278
279279 @Callable(i)
280280 func dAppUp (dAppUp) = if ((i.caller != SERVER))
281281 then throw("Only Server can manage dAppUp attribute")
282282 else if ((isDAppUp() == dAppUp))
283283 then throw("dAppUp must be different with actual value")
284284 else WriteSet([DataEntry(DAPPUPKEY, dAppUp)])
285285
286286
287287
288288 @Callable(i)
289289 func bet (playerChoice) = {
290290 let gameId = toBase58String(i.transactionId)
291291 if (!(isDAppUp()))
292292 then throw("DApp is under maintenance")
293293 else if ((i.payment == unit))
294294 then throw("No payment")
295295 else if (isDefined(getString(this, gameId)))
296296 then throw((("Bet for: " + gameId) + " was already made."))
297297 else {
298298 let p = extract(i.payment)
299299 let assetId = validateAndGetAssetId(p.assetId)
300300 let commission = getCommission(assetId)
301301 let winAmount = validateBetAndGetWinAmount(p.amount, assetId, playerChoice)
302302 let playerPubKey58 = toBase58String(i.callerPublicKey)
303303 let gameData = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
304304 ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(MAXBALANCEKEY, monitorMaxBalance()), DataEntry(gameId, gameData)]), TransferSet([ScriptTransfer(SERVER, commission, p.assetId)]))
305305 }
306306 }
307307
308308
309309
310310 @Callable(i)
311311 func withdraw (gameId,rsaSign) = {
312312 let gameData = extractGameData(gameId)
313313 let gameState = gameData[IdxGameState]
314314 let playerChoice = gameData[IdxPlayerChoice]
315315 let startedHeight = parseIntValue(gameData[IdxStartedHeight])
316316 let winAmount = parseIntValue(gameData[IdxWinAmount])
317317 let playerPubKey58 = gameData[IdxPlayerPubKey58]
318318 let assetId = parseIntValue(gameData[IdxAssetId])
319319 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
320320 let winByTimeout = ((height - startedHeight) > RANDORACLETIMEFRAME)
321321 let decreasedReserves = decreaseReservedAmount(gameId, assetId, winAmount)
322322 if ((gameState != STATESUBMITTED))
323323 then throw("Invalid game state for passed gameId")
324324 else if (winByTimeout)
325325 then {
326326 let randChoise = take(playerChoice, 1)
327327 let newgameData = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
328328 winScriptSet(gameId, playerAddress, winAmount, assetId, newgameData, winByTimeout, decreasedReserves)
329329 }
330330 else {
331331 let randChoise = generateRandChoise(gameId, rsaSign)
332332 if ((i.caller != SERVER))
333333 then throw("Regular withdraw can be done by server only")
334334 else if (isPlayerWin(playerChoice, randChoise))
335335 then {
336336 let newgameData = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
337337 winScriptSet(gameId, playerAddress, winAmount, assetId, newgameData, winByTimeout, decreasedReserves)
338338 }
339339 else {
340340 let newgameData = formatGameData(STATELOST, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
341341 WriteSet([DataEntry(gameId, newgameData), decreasedReserves])
342342 }
343343 }
344344 }
345345
346346
347347 @Verifier(tx)
348348 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
349349 then match tx {
350350 case ttx: TransferTransaction =>
351351 let assetId = validateAndGetAssetId(ttx.assetId)
352352 ((wavesBalance(this) - ttx.amount) >= getIntOr(RESERVATIONKEY[assetId], 0))
353353 case stx: SetScriptTransaction =>
354354 if (if ((isDAppUp() == false))
355355 then (getIntOr(RESERVATIONKEY[0], 0) == 0)
356356 else false)
357357 then (getIntOr(RESERVATIONKEY[1], 0) == 0)
358358 else false
359359 case _ =>
360360 true
361361 }
362362 else false
363363

github/deemru/w8io/873ac7e 
89.80 ms