tx · Bq3PvqSWykQZEnoLeAbYq95Q5E9hQiA76ogyhkMxbatZ

3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc:  -0.01400000 Waves

2019.12.28 18:02 [829076] smart account 3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc > SELF 0.00000000 Waves

{ "type": 13, "id": "Bq3PvqSWykQZEnoLeAbYq95Q5E9hQiA76ogyhkMxbatZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1577545300543, "version": 1, "sender": "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc", "senderPublicKey": "6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5", "proofs": [ "29zSpiJWukYX91t9AMCivQvpg1LsbQbaWDdnzeswENsT1LXTJX9cmpdFEcqSRLr7pDaaLWZVw4jt2BAT1jNy5gZL" ], "script": "base64:AAIDAAAAAAAAABEIARIAEgYKBAgCAgISAwoBCAAAADAAAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsNVNZUnJXQWtrSGlpeURTelRWYlRha3Z4M2pzdno3M1ljNXNMY0RnZEs4c2cAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsNk1UU2ZERWJmWjlWcjdoeE4yUGtKVDZ0UXZDUFoxak43SzlMOGdDaVpuRjUAAAAADXJzYVB1YmxpY0tleTEJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT2tpdXovQlY0RWpveEdoVG1OQ2J0MlRna2JTUEgvdzY5YjNGMXJLbUQ2MUppUFh2dkY4TDJwSTl4T1ljVzRGbW9FWlZIbFJRdEFsYUp5a2wzK3JzckVDQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTIJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBSm5YemJNL1Yyc0RWMVVMYlBTT2xIa2xkT1RXUnJIaTVmeElrQm11ZXZyQ2xNUFZIN3JxY2N3aXJETmNNZElkd1hISTlBZGhqOUZXandHSXdmVS9LNk1DQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTMJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT1JEZXZ5MHI0a3pMcU95U2xvQjYzSHV2MmU0emVIS0hqQ3N5NXZ0RkttV1piWEphOGdaWXQ0K0VrbEZJbzFLOW9xdTVCQVBWZkozRk96czJVMUErZzBDQXdFQUFRPT0AAAAABWRydW0xCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAUAAAADbmlsAAAAAAVkcnVtMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcFAAAAA25pbAAAAAAFZHJ1bTMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE2BQAAAANuaWwAAAAADWdhbWVUaW1lRnJhbWUJAABoAAAAAgAAAAAAAAAFoAAAAAAAAAAAAgAAAAAKY29tbWlzc2lvbgAAAAAAAAehIAAAAAAIc3RhdGVBY2MCAAAACEFjY2VwdGVkAAAAAAhzdGF0ZVdpbgIAAAADV2luAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91dAAAAAAJc3RhdGVMb3NlAgAAAARMb3NlAAAAAAd3YXZlc0lkBQAAAAR1bml0AAAAAAVidGNJZAEAAAAg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pAAAAAEFAAAABmhlaWdodAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAB19HYW1lSWQFAAAACmRhdGFTdHJpbmcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAMcG10QXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQFAAAAEnNldFJlc2VydmVkQmFsYW5jZQUAAAADbmlsCQAAAgAAAAECAAAAFGFzc2V0SWQgaXMgaW5jb3JyZWN0AAAAAWkBAAAACHBsYXlHYW1lAAAABAAAAAZnYW1lSWQAAAAIcnNhU2lnbjEAAAAIcnNhU2lnbjIAAAAIcnNhU2lnbjMEAAAACGRhdGFMaXN0CQEAAAALZ2V0RGF0YUxpc3QAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAAQAAAANcGxheWVyQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAABBAAAAAZiZXRBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAgQAAAAJYXNzZXROYW1lCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAADBAAAAAlnYW1lU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAABAQAAAAJYXNzZXRJZDU4CQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAAEnNldFJlc2VydmVkQmFsYW5jZQkBAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAgUAAAAGYmV0QW10BQAAAAlhc3NldE5hbWUEAAAADWN1cnJlbnRJbmNvbWUJAQAAABBnZXRDdXJyZW50SW5jb21lAAAAAQUAAAAJYXNzZXROYW1lBAAAAAhkcnVtMUludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMQUAAAANcnNhUHVibGljS2V5MQQAAAAIZHJ1bTJJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjIFAAAADXJzYVB1YmxpY0tleTIEAAAACGRydW0zSW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24zBQAAAA1yc2FQdWJsaWNLZXkzBAAAAAl0d29JbkFSb3cJAAEsAAAAAgkAAZEAAAACBQAAAAVkcnVtMQUAAAAIZHJ1bTFJbnQJAAGRAAAAAgUAAAAFZHJ1bTIFAAAACGRydW0ySW50BAAAAAt0aHJlZUluQVJvdwkAASwAAAACBQAAAAl0d29JbkFSb3cJAAGRAAAAAgUAAAAFZHJ1bTMFAAAACGRydW0zSW50BAAAABVkcm9wcGVkRWxlbWVudHNTdHJpbmcJAAEsAAAAAgkAASwAAAACCQEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQUAAAAIZHJ1bTFJbnQJAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABBQAAAAhkcnVtMkludAkBAAAAD2RydW1JbnRUb1N0cmluZwAAAAEFAAAACGRydW0zSW50BAAAAAZ3aW5BbXQJAABpAAAAAgkAAGgAAAACBQAAAAZiZXRBbXQJAQAAABBkZWZpbmVNdWx0aXBsaWVyAAAAAgUAAAALdGhyZWVJbkFSb3cFAAAACXR3b0luQVJvdwAAAAAAAAAACgQAAAANZ2FtZVRpbWVDaGVjawkAAGYAAAACBQAAAA1nYW1lVGltZUZyYW1lCQAAZQAAAAIFAAAABmhlaWdodAUAAAAJZ2FtZVN0YXJ0BAAAAAxzdGF0ZUNvcnJlY3QJAAAAAAAAAgUAAAAJZ2FtZVN0YXRlBQAAAAhzdGF0ZUFjYwMFAAAADHN0YXRlQ29ycmVjdAMFAAAADWdhbWVUaW1lQ2hlY2sDCQAAAAAAAAIFAAAABndpbkFtdAAAAAAAAAAAAAQAAAAIdHJhbnNmZXIEAAAACWRpdmlkZW5kcwkAAGQAAAACBQAAAA1jdXJyZW50SW5jb21lBQAAAAZiZXRBbXQDCQAAZgAAAAIFAAAACWRpdmlkZW5kcwAAAAAAAAAAAAkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAW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XwkAAaQAAAABCQAAaAAAAAIFAAAABmJldEFtdAAAAAAAAAAAAgIAAAABXwIAAAADMDAwAgAAAAFfAgAAAAYwMDAwMDAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQFAAAAEnNldFJlc2VydmVkQmFsYW5jZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAB19JbmNvbWUJAABlAAAAAgUAAAANY3VycmVudEluY29tZQkAAGgAAAACBQAAAAZiZXRBbXQAAAAAAAAAAAIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1wbGF5ZXJBZGRyZXNzCQAAaAAAAAIFAAAABmJldEFtdAAAAAAAAAAAAgUAAAAJYXNzZXRJZDU4BQAAAANuaWwJAAACAAAAAQIAAAAXR2FtZSBzdGF0ZSBpcyBpbmNvcnJlY3QAAAABaQEAAAAPd2l0aGRyYXdEZXBvc2l0AAAAAQAAAAlhc3NldE5hbWUEAAAACWFzc2V0SWQ1OAkBAAAAEWFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAAljYWxsZXJQdWIJAQAAABRjYWxsZXJJc0RlcG9zaXRPd25lcgAAAAIFAAAACWFzc2V0TmFtZQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAASX0RlcG9zaXRTdGFydEJsb2NrBAAAAA9kZXBvc2l0RHVyYXRpb24JAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAVX0RlcG9zaXREdXJhdGlvbkJsb2NrBAAAAA1kZXBvc2l0QW1vdW50CQEAAAAOZ2V0RGVwb3NpdERhdGEAAAACBQAAAAlhc3NldE5hbWUCAAAADl9EZXBvc2l0QW1vdW50BAAAABlkaXZpZGVuZFByb2dyYW1UaW1lSXNPdmVyCQAAZwAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24DBQAAABlkaXZpZGVuZFByb2dyYW1UaW1lSXNPdmVyCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAHV9EZXBvc2l0V2l0aGRyYXdUcmFuc2FjdGlvbklkCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAljYWxsZXJQdWIFAAAADWRlcG9zaXRBbW91bnQFAAAACWFzc2V0SWQ1OAUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABpEZXBvc2l0IHRpbWUgaXMgbm90IG92ZXIuIAkAAaQAAAABCQAAZQAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24CAAAADSBibG9ja3MgbGVmdC4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADWdhbWVQdWJsaWNLZXkEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAN0dHgFAAAAByRtYXRjaDAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAAEc3N0eAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAARpc3R4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAANkdHgFAAAAByRtYXRjaDAGBwdR5tRM", "chainId": 84, "height": 829076, "spentComplexity": 0 } View: original | compacted Prev: 3uYSQLVqNwvwHaziJFAB58qArU9KNvNG1DYHwyYkSWUX Next: 9ieb3LG2k65YQT7Fvu1DDFhKaWeYKS9G7RRUZ2UfGu6G Diff:
OldNewDifferences
315315 if (stateCorrect)
316316 then if (gameTimeCheck)
317317 then if ((winAmt == 0))
318- then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([ScriptTransfer(dividendProgramAddress, betAmt, assetId58)]))
318+ then {
319+ let transfer = {
320+ let dividends = (currentIncome + betAmt)
321+ if ((dividends > 0))
322+ then ScriptTransfer(dividendProgramAddress, dividends, assetId58)
323+ else ScriptTransfer(dividendProgramAddress, 0, assetId58)
324+ }
325+ ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([transfer]))
326+ }
319327 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateWin + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (currentIncome - winAmt))]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetId58)]))
320328 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateTimeout + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString((betAmt * 2))) + "_") + "000") + "_") + "000000")), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (currentIncome - (betAmt * 2)))]), TransferSet([ScriptTransfer(playerAddress, (betAmt * 2), assetId58)]))
321329 else throw("Game state is incorrect")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dividendProgramAddress = addressFromPublicKey(fromBase58String("5SYRrWAkkHiiyDSzTVbTakvx3jsvz73Yc5sLcDgdK8sg"))
55
66 let gamePublicKey = fromBase58String("6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5")
77
88 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
99
1010 let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
1111
1212 let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
1313
1414 let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"]
1515
1616 let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"]
1717
1818 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
1919
2020 let gameTimeFrame = (1440 * 2)
2121
2222 let commission = 500000
2323
2424 let stateAcc = "Accepted"
2525
2626 let stateWin = "Win"
2727
2828 let stateTimeout = "WinByTimeout"
2929
3030 let stateLose = "Lose"
3131
3232 let wavesId = unit
3333
3434 let btcId = base58'Gt4HLkHunts7bWbtYP5UCsAPW7TUA4gmQEnjgjbZ2NqB'
3535
3636 let ethId = base58'6A79GDQj8bdHqUaoJQ3qE1TCPnBc3wFirNCSsAY5RKry'
3737
3838 let ltcId = base58'7oRhs4zoufHM4KiBDuJwRXUWb9JQaFt98N8ubpmytMmw'
3939
4040 let vstId = base58'5UyDjBMx1Q8UWhJj1r7JuA6h4aCkKrHE1J19HvMXRpRd'
4141
4242 let wctId = base58'Ae5W927iuKSLLT6Sdt3bqWze6ZUbYHDWzPY6dLKQusZv'
4343
4444 let divider = 1000
4545
4646 let WavesMinAmt = (100000000 / divider)
4747
4848 let WavesMaxAmt = (WavesMinAmt * 10)
4949
5050 let BtcMinAmt = (10000 / divider)
5151
5252 let BtcMaxAmt = (BtcMinAmt * 10)
5353
5454 let EthMinAmt = (1000000 / divider)
5555
5656 let EthMaxAmt = (EthMinAmt * 10)
5757
5858 let LtcMinAmt = (2000000 / divider)
5959
6060 let LtcMaxAmt = (LtcMinAmt * 10)
6161
6262 let WctMinAmt = (500000000 / divider)
6363
6464 let WctMaxAmt = (WctMinAmt * 10)
6565
6666 let VstMinAmt = (500000000 / divider)
6767
6868 let VstMaxAmt = (VstMinAmt * 10)
6969
7070 let UsdnMinAmt = (100000000 / divider)
7171
7272 let UsdnMaxAmt = (UsdnMinAmt * 10)
7373
7474 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
7575 then if (if ((betAmount >= WavesMinAmt))
7676 then (WavesMaxAmt >= betAmount)
7777 else false)
7878 then true
7979 else throw("Bet amount is not in range")
8080 else if ((pmtAssetId == "BTC"))
8181 then if (if ((betAmount >= BtcMinAmt))
8282 then (BtcMaxAmt >= betAmount)
8383 else false)
8484 then true
8585 else throw("Bet amount is not in range")
8686 else if ((pmtAssetId == "ETH"))
8787 then if (if ((betAmount >= EthMinAmt))
8888 then (EthMaxAmt >= betAmount)
8989 else false)
9090 then true
9191 else throw("Bet amount is not in range")
9292 else if ((pmtAssetId == "LTC"))
9393 then if (if ((betAmount >= LtcMinAmt))
9494 then (LtcMaxAmt >= betAmount)
9595 else false)
9696 then true
9797 else throw("Bet amount is not in range")
9898 else if ((pmtAssetId == "WCT"))
9999 then if (if ((betAmount >= WctMinAmt))
100100 then (WctMaxAmt >= betAmount)
101101 else false)
102102 then true
103103 else throw("Bet amount is not in range")
104104 else if (if ((betAmount >= VstMinAmt))
105105 then (VstMaxAmt >= betAmount)
106106 else false)
107107 then true
108108 else throw("Bet amount is not in range")
109109
110110
111111 func getDataList (gameId) = {
112112 let getDataString = getString(this, (gameId + "_GameId"))
113113 let a = match getDataString {
114114 case a: String =>
115115 a
116116 case _ =>
117117 throw("GameId was not found")
118118 }
119119 split(a, "_")
120120 }
121121
122122
123123 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
124124 let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
125125 if (rsaCheck)
126126 then (toInt(sha256(rsaSign)) % 19)
127127 else throw("Rsa Signature is invalid")
128128 }
129129
130130
131131 func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = {
132132 let currentReservedBalance = {
133133 let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved"))
134134 match valueReservedBalance {
135135 case a: Int =>
136136 a
137137 case _ =>
138138 0
139139 }
140140 }
141141 let newReservedBalance = (currentReservedBalance + (pmtAmt * 260))
142142 if ((assetBalance(this, assetId58) >= newReservedBalance))
143143 then newReservedBalance
144144 else throw("Bet was rejected. Insufficient funds on game account.")
145145 }
146146
147147
148148 func decreaseReservedBalance (betAmt,assetId) = {
149149 let valueReservedBalance = getInteger(this, (assetId + "_Reserved"))
150150 let extractReservedBalance = match valueReservedBalance {
151151 case a: Int =>
152152 a
153153 case _ =>
154154 0
155155 }
156156 let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260))
157157 if ((decreaseReservedBalance >= 0))
158158 then decreaseReservedBalance
159159 else throw("Reserved balance couldn't be less than 0")
160160 }
161161
162162
163163 func drumIntToString (drumInt) = if ((10 > drumInt))
164164 then ("0" + toString(drumInt))
165165 else toString(drumInt)
166166
167167
168168 func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
169169 then 2600
170170 else if ((threeInARow == "666"))
171171 then 1300
172172 else if ((threeInARow == "555"))
173173 then 450
174174 else if ((threeInARow == "444"))
175175 then 200
176176 else if ((threeInARow == "333"))
177177 then 150
178178 else if ((threeInARow == "222"))
179179 then 110
180180 else if ((threeInARow == "111"))
181181 then 50
182182 else if ((twoInARow == "77"))
183183 then 270
184184 else if ((twoInARow == "66"))
185185 then 130
186186 else if ((twoInARow == "55"))
187187 then 45
188188 else if ((twoInARow == "44"))
189189 then 30
190190 else if ((twoInARow == "33"))
191191 then 20
192192 else if ((twoInARow == "22"))
193193 then 17
194194 else if ((twoInARow == "11"))
195195 then 13
196196 else 0
197197
198198
199199 func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
200200 then wavesId
201201 else if ((assetName == "BTC"))
202202 then btcId
203203 else if ((assetName == "ETH"))
204204 then ethId
205205 else if ((assetName == "LTC"))
206206 then ltcId
207207 else if ((assetName == "VST"))
208208 then vstId
209209 else if ((assetName == "WCT"))
210210 then wctId
211211 else throw("Asset name is incorrect")
212212
213213
214214 func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
215215 then "WAVES"
216216 else if ((assetId == btcId))
217217 then "BTC"
218218 else if ((assetId == ethId))
219219 then "ETH"
220220 else if ((assetId == ltcId))
221221 then "LTC"
222222 else if ((assetId == wctId))
223223 then "WCT"
224224 else if ((assetId == vstId))
225225 then "VST"
226226 else throw("AssetId is incorrect")
227227
228228
229229 func getCurrentIncome (assetName) = {
230230 let val = getInteger(this, (assetName + "_Income"))
231231 match val {
232232 case a: Int =>
233233 a
234234 case _ =>
235235 0
236236 }
237237 }
238238
239239
240240 func callerIsDepositOwner (assetName,callerPublicKey) = {
241241 let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
242242 if ((callerPublicKey == depositOwner))
243243 then callerPublicKey
244244 else throw("Only deposit owner can withdrawal deposit")
245245 }
246246
247247
248248 func assetNameCheck (asset) = if (if (if (if (if (if ((asset == "WAVES"))
249249 then true
250250 else (asset == "WAVES"))
251251 then true
252252 else (asset == "WAVES"))
253253 then true
254254 else (asset == "WAVES"))
255255 then true
256256 else (asset == "WAVES"))
257257 then true
258258 else (asset == "WAVES"))
259259 then asset
260260 else throw("Incorrect asset name provided")
261261
262262
263263 func getDepositData (assetName,keySuffix) = {
264264 let key = (assetName + "_DepositAmount")
265265 let val = getInteger(dividendProgramAddress, key)
266266 match val {
267267 case a: Int =>
268268 a
269269 case _ =>
270270 throw("Couldn't find dividend program start height")
271271 }
272272 }
273273
274274
275275 @Callable(i)
276276 func makeBet () = {
277277 let pmt = extract(i.payment)
278278 let betAmount = (pmt.amount - commission)
279279 let assetId = pmt.assetId
280280 let gameId = toBase58String(i.transactionId)
281281 let playerAddress = extract(i.caller)
282282 let pmtAssetName = assetBase58ToName(assetId)
283283 let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId)
284284 let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount)
285285 if (pmtAmtCorrect)
286286 then {
287287 let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height))
288288 WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)])
289289 }
290290 else throw("assetId is incorrect")
291291 }
292292
293293
294294
295295 @Callable(i)
296296 func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = {
297297 let dataList = getDataList(gameId)
298298 let gameState = dataList[0]
299299 let playerAddress = addressFromStringValue(dataList[1])
300300 let betAmt = parseIntValue(dataList[2])
301301 let assetName = dataList[3]
302302 let gameStart = parseIntValue(dataList[4])
303303 let assetId58 = assetNameToBase58(assetName)
304304 let setReservedBalance = decreaseReservedBalance(betAmt, assetName)
305305 let currentIncome = getCurrentIncome(assetName)
306306 let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1)
307307 let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2)
308308 let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3)
309309 let twoInARow = (drum1[drum1Int] + drum2[drum2Int])
310310 let threeInARow = (twoInARow + drum3[drum3Int])
311311 let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
312312 let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10)
313313 let gameTimeCheck = (gameTimeFrame > (height - gameStart))
314314 let stateCorrect = (gameState == stateAcc)
315315 if (stateCorrect)
316316 then if (gameTimeCheck)
317317 then if ((winAmt == 0))
318- then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([ScriptTransfer(dividendProgramAddress, betAmt, assetId58)]))
318+ then {
319+ let transfer = {
320+ let dividends = (currentIncome + betAmt)
321+ if ((dividends > 0))
322+ then ScriptTransfer(dividendProgramAddress, dividends, assetId58)
323+ else ScriptTransfer(dividendProgramAddress, 0, assetId58)
324+ }
325+ ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([transfer]))
326+ }
319327 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateWin + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (currentIncome - winAmt))]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetId58)]))
320328 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateTimeout + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString((betAmt * 2))) + "_") + "000") + "_") + "000000")), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (currentIncome - (betAmt * 2)))]), TransferSet([ScriptTransfer(playerAddress, (betAmt * 2), assetId58)]))
321329 else throw("Game state is incorrect")
322330 }
323331
324332
325333
326334 @Callable(i)
327335 func withdrawDeposit (assetName) = {
328336 let assetId58 = assetNameToBase58(assetName)
329337 let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
330338 let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock")
331339 let depositDuration = getDepositData(assetName, "_DepositDurationBlock")
332340 let depositAmount = getDepositData(assetName, "_DepositAmount")
333341 let dividendProgramTimeIsOver = ((height - dividendStartHeight) >= depositDuration)
334342 if (dividendProgramTimeIsOver)
335343 then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)]))
336344 else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left."))
337345 }
338346
339347
340348 @Verifier(tx)
341349 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
342350 then match tx {
343351 case ttx: TransferTransaction =>
344352 false
345353 case sstx: SetScriptTransaction =>
346354 true
347355 case istx: InvokeScriptTransaction =>
348356 true
349357 case dtx: DataTransaction =>
350358 true
351359 case _ =>
352360 false
353361 }
354362 else false
355363

github/deemru/w8io/c3f4982 
39.90 ms