tx · DQ5F21Kg2U4uk5GSiWqHXy5C1CTKggwFPgECqTY9ZXXs

3N5NCEUJze7iYT63sSq2jLqJ4dtbu31P32L:  -0.01400000 Waves

2019.09.10 15:04 [669993] smart account 3N5NCEUJze7iYT63sSq2jLqJ4dtbu31P32L > SELF 0.00000000 Waves

{ "type": 13, "id": "DQ5F21Kg2U4uk5GSiWqHXy5C1CTKggwFPgECqTY9ZXXs", "fee": 1400000, "feeAssetId": null, "timestamp": 1568117074002, "version": 1, "sender": "3N5NCEUJze7iYT63sSq2jLqJ4dtbu31P32L", "senderPublicKey": "Ho4R7JJ3qa66rLHUBWDkNTCgxvBahvmis1aHLva1jPU6", "proofs": [ "65FQFfXAprCjh39kCFerbS2CBRvJMcxbT2EbgtqFbedJqqck165MPNBmW56vwzQWNaj8EanRKfMQ2GKNQyJoMMcj" ], "script": "base64:AAIDAAAAAAAAAAAAAAAoAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAALnYmFzZTY0Ok1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBNSs0NDY5ZVNRT3gzbGhuQ2FWWXFONU1ickd0TFZ3VERLeHZKSUJMdkVScS9zQ3RpMzVvdytsWWhPeEJ1dDJWYURJZkZmVVN3SmR4czJDR1dhRzhtbFlsZTNSRDEyNlZwc2RTVVVrVlI1YzhmWmRvV09vaEtvMUE1bmJaVFhpNFJoVW1wUXZVTTMwYXZqSjF2T0Q4bDA3WE1TUSs5OVdsQVVFVlhkbTBvUWVLSHoweGpMNVRDdFYrNkh4R2ZTWDZJZlhuaERNczBFYVNtK2x5Zzc2SHM3c0MyL2pYTGhueXlXdVc5SUVwaGdSd2daSTArN3FTdTVsNWV2TFFoenNBSDRSYklYSmtXWitKV2N6aWU1SEJYMXdyc01DZ3o1MmNBdEJoYWFCNGRWREtxbmh2R1psRDVjUk5teEQxNXFaZXlUNU5HU2NBMjJxc2YxMG5UUlJWK0g2VGpUNXpaWG95SThjV3NnNUV0bk80V2F1OFFzeGNrcFZOZ0wrRHp4d20xL0ZpTnA1QnQ0TEQveUJXMlliOThGQjZWZjk1eUN5KzQ5ZlBJTEc5eEE1aU1PTlhaUnBJcTV4dzQ4Zmp0aDhUTHZMWFJVRTl1ayt3VG9RVC90ZjhpcC9lSjVPdzRNNVlTTzBDWjFFRGs4NmREOVc0b3RvNGI2YkhhMkVaOTF3UlhaSDdKOHpDQW85eVVWQUpjZkNkZUVFN1NRcmpZaUQvRjlyRk9GQ3ZFMUxaUlNMTEVuYnZyZFdEalBSWXhtbDhZVU50RVFzL0MrOFNKSmthbXpvUmNWRTg0Y3h3dnJBRmhyU2Y0eFhDaytMd1lZRnoxVWd1VUM2eDE5NzlqeElSM0orSFdod1RYd2ZEb0RYRU1yV0FqMHZlb3JUWWVZQjFCTUFXdTl2UnNETk1DQXdFQUFRPT0AAAAADVNlcnZlckFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM011Sm1DU0VVZ0JOeTFSMmdlc2s1OXhEYldjdVRLd3dpeFcAAAAAEFJvdWxldHRlU2VjdGlvbnMAAAAAAAAAABUAAAAAEURhdGFHYW1lTnVtYmVyS2V5AgAAAAtBUFBfR0FNRV9JRAAAAAAPRGF0YVVzZXJHYW1lS2V5AgAAAA1VU0VSX0dBTUVfSURfAAAAAA1EYXRhQW1vdW50S2V5AgAAAAZBTU9VTlQAAAAADkRhdGFTZWN0aW9uS2V5AgAAAAdTRUNUSU9OAAAAAA1EYXRhU3RhdHVzS2V5AgAAAAZTVEFUVVMAAAAADURhdGFSZXN1bHRLZXkCAAAABlJFU1VMVAAAAAAQRGF0YVdpbkFtb3VudEtleQIAAAAKV0lOX0FNT1VOVAAAAAANRGF0YVN0YXR1c05ldwIAAAADTkVXAAAAAA1EYXRhU3RhdHVzV2luAgAAAANXSU4AAAAAD0RhdGFTdGF0dXNMb29zZQIAAAAFTE9PU0UAAAAAB1dBVkVMRVQJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoAAAAAApDT01NSVNTSU9OCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQUAAAAHV0FWRUxFVAAAAAAAAAAD6AAAAAAEQkVUMQkAAGgAAAACAAAAAAAAAAABBQAAAAdXQVZFTEVUAAAAAARCRVQyCQAAaAAAAAIAAAAAAAAAAAIFAAAAB1dBVkVMRVQAAAAABEJFVDQJAABoAAAAAgAAAAAAAAAABAUAAAAHV0FWRUxFVAAAAAAEQkVUOAkAAGgAAAACAAAAAAAAAAAIBQAAAAdXQVZFTEVUAAAAAAVCRVQxNAkAAGgAAAACAAAAAAAAAAAOBQAAAAdXQVZFTEVUAAAAAAhTZWN0aW9ucwkABEwAAAACAAAAAAAAAAAACQAETAAAAAIAAAAAAAAAAAIJAARMAAAAAgAAAAAAAAAAFAkABEwAAAACAAAAAAAAAAACCQAETAAAAAIAAAAAAAAAAAUJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAAKCQAETAAAAAIAAAAAAAAAAAIJAARMAAAAAgAAAAAAAAAABgkABEwAAAACAAAAAAAAAAACCQAETAAAAAIAAAAAAAAAAAUJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAAGCQAETAAAAAIAAAAAAAAAAAIJAARMAAAAAgAAAAAAAAAABQkABEwAAAACAAAAAAAAAAACCQAETAAAAAIAAAAAAAAAAAoJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAAFCQAETAAAAAIAAAAAAAAAAAIJAARMAAAAAgAAAAAAAAAABgUAAAADbmlsAAAAABZFcnJvck9ubHlXYXZlc0FjY2VwdGVkAgAAABNPbmx5IHdhdmVzIGFjY2VwdGVkAAAAABVFcnJvck11c3RHcmVhdGVyVGhhbjACAAAAJVBhcmFtZXRlciBzaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAAAAAAFEVycm9yTXVzdExlc3NUaGFuMTAwAgAAACRQYXJhbWV0ZXIgc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiAxMDAAAAAAFUVycm9yQmV0TXVzdEJlSW5XYXZlcwIAAAAbQmV0IGFtb3VudCBtdXN0IGJlIGluIFdhdmVzAAAAAB1FcnJvclRyYW5zYWN0aW9uTXVzdEJlSW5XYXZlcwIAAAAiVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcwAAAAAURXJyb3JUcmFuc2FjdGlvblVzZWQCAAAAL1Bhc3NlZCB0eElkIGhhZCBiZWVuIHVzZWQgYmVmb3JlLiBHYW1lIGFib3J0ZWQuAAAAABBFcnJvcktleU5vdEZvdW5kAgAAAA9LZXkgbm90IGZvdW5kOiAAAAAADUVycm9yR2FtZU92ZXICAAAAFUdhbWUgYWxyZWFkeSBpcyBvdmVyIAAAAAAbRXJyb3JJbmNvcnJlY3RTZWN0aW9uUmVzdWx0AgAAABhJbmNvcnJlY3Qgc2VjdGlvbiByZXN1bHQAAAAAGEVycm9yQmV0QW1vdW50Tm90SW5SYW5nZQIAAAAaQmV0IGFtb3VudCBpcyBub3QgaW4gcmFuZ2UBAAAACVN0b3JlRGF0YQAAAAMAAAANdHJhbnNhY3Rpb25JZAAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAANdHJhbnNhY3Rpb25JZAIAAAABXwUAAAADa2V5BQAAAAV2YWx1ZQEAAAAMU3RvcmVEYXRhSW50AAAAAwAAAA10cmFuc2FjdGlvbklkAAAAA2tleQAAAAV2YWx1ZQkBAAAACURhdGFF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SVNTSU9OAwkBAAAAASEAAAABBQAAAA9pc0NvcnJlY3RSZXN1bHQJAAACAAAAAQUAAAAbRXJyb3JJbmNvcnJlY3RTZWN0aW9uUmVzdWx0AwUAAAALYmV0QW10VmFsaWQJAABoAAAAAgkAAGUAAAACBQAAAAZiZXRBbXQFAAAACkNPTU1JU1NJT04FAAAAB3NlY3Rpb24JAAACAAAAAQUAAAAYRXJyb3JCZXRBbW91bnROb3RJblJhbmdlAAAAAgAAAAFpAQAAAANiZXQAAAABAAAADmV4cGVjdGVkUmVzdWx0BAAAAApnYW1lTnVtYmVyCQEAAAAJTmV3R2FtZUlkAAAAAAQAAAARZ2FtZVRyYW5zYWN0aW9uSWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAHYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAIdHhJZFVzZWQJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBAAAAA1iZXROb3RJbldhdmVzCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1mZWVOb3RJbldhdmVzCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAZhbW91bnQIBQAAAANwbXQAAAAGYW1vdW50BAAAAAZ3aW5BbXQJAQAAAAxHZXRXaW5BbW91bnQAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAOZXhwZWN0ZWRSZXN1bHQDBQAAAA1iZXROb3RJbldhdmVzCQAAAgAAAAEFAAAAFUVycm9yQmV0TXVzdEJlSW5XYXZlcwMFAAAADWZlZU5vdEluV2F2ZXMJAAACAAAAAQUAAAAdRXJyb3JUcmFuc2FjdGlvbk11c3RCZUluV2F2ZXMDBQAAAAh0eElkVXNlZAkAAAIAAAABBQAAABRFcnJvclRyYW5zYWN0aW9uVXNlZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAPRGF0YVVzZXJHYW1lS2V5CQABpAAAAAEFAAAACmdhbWVOdW1iZXIFAAAAEWdhbWVUcmFuc2FjdGlvbklkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARRGF0YUdhbWVOdW1iZXJLZXkFAAAACmdhbWVOdW1iZXIJAARMAAAAAgkBAAAADFN0b3JlRGF0YUludAAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhQW1vdW50S2V5BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADFN0b3JlRGF0YUludAAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA5EYXRhU2VjdGlvbktleQUAAAAOZXhwZWN0ZWRSZXN1bHQJAARMAAAAAgkBAAAACVN0b3JlRGF0YQAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhU3RhdHVzS2V5BQAAAA1EYXRhU3RhdHVzTmV3CQAETAAAAAIJAQAAAAxTdG9yZURhdGFJbnQAAAADBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAAQRGF0YVdpbkFtb3VudEtleQUAAAAGd2luQW10BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANU2VydmVyQWRkcmVzcwUAAAAKQ09NTUlTU0lPTgUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAABnJlc3VsdAAAAAIAAAARZ2FtZVRyYW5zYWN0aW9uSWQAAAADcnNhBAAAAAlyYW5kSW5kZXgJAQAAAA9HZW5lcmF0ZVJhbmRJbnQAAAACBQAAABFnYW1lVHJhbnNhY3Rpb25JZAUAAAADcnNhBAAAAA9zZWxlY3RlZFNlY3Rpb24JAQAAAApHZXREYXRhSW50AAAAAgUAAAARZ2FtZVRyYW5zYWN0aW9uSWQFAAAADkRhdGFTZWN0aW9uS2V5BAAAAAZzdGF0dXMJAQAAAA1HZXREYXRhU3RyaW5nAAAAAgUAAAARZ2FtZVRyYW5zYWN0aW9uSWQFAAAADURhdGFTdGF0dXNLZXkDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANRGF0YVN0YXR1c05ldwQAAAALcmFuZFNlY3Rpb24JAAGRAAAAAgUAAAAIU2VjdGlvbnMFAAAACXJhbmRJbmRleAQAAAAFaXNXaW4JAAAAAAAAAgUAAAALcmFuZFNlY3Rpb24FAAAAD3NlbGVjdGVkU2VjdGlvbgQAAAAId3JpdGVTZXQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACVN0b3JlRGF0YQAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhU3RhdHVzS2V5CQEAAAAJR2V0U3RhdHVzAAAAAQUAAAAFaXNXaW4JAARMAAAAAgkBAAAADFN0b3JlRGF0YUludAAAAAMFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAAA1EYXRhUmVzdWx0S2V5BQAAAAtyYW5kU2VjdGlvbgUAAAADbmlsAwUAAAAFaXNXaW4EAAAABndhbGxldAkBAAAAB0dldERhdGEAAAABBQAAABFnYW1lVHJhbnNhY3Rpb25JZAQAAAAJd2luQW1vdW50CQEAAAAKR2V0RGF0YUludAAAAAIFAAAAEWdhbWVUcmFuc2FjdGlvbklkBQAAABBEYXRhV2luQW1vdW50S2V5CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAId3JpdGVTZXQJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAZ3YWxsZXQFAAAACXdpbkFtb3VudAUAAAAEdW5pdAUAAAADbmlsBQAAAAh3cml0ZVNldAkAAAIAAAABCQABLAAAAAIFAAAADUVycm9yR2FtZU92ZXIFAAAABnN0YXR1cwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAANzdHgFAAAAByRtYXRjaDAGBwenb62+", "chainId": 84, "height": 669993, "spentComplexity": 0 } View: original | compacted Prev: 6apooq4Be9XrT1TDr71ezrhXCQHq6JFBisubk2nQ1EKm Next: 5RPwkZcR7MhD6X3vWRLjFEqk5knk6sXoHJBvEiw8B2GM Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5+4469eSQOx3lhnCaVYqN5MbrGtLVwTDKxvJIBLvERq/sCti35ow+lYhOxBut2VaDIfFfUSwJdxs2CGWaG8mlYle3RD126VpsdSUUkVR5c8fZdoWOohKo1A5nbZTXi4RhUmpQvUM30avjJ1vOD8l07XMSQ+99WlAUEVXdm0oQeKHz0xjL5TCtV+6HxGfSX6IfXnhDMs0EaSm+lyg76Hs7sC2/jXLhnyyWuW9IEphgRwgZI0+7qSu5l5evLQhzsAH4RbIXJkWZ+JWczie5HBX1wrsMCgz52cAtBhaaB4dVDKqnhvGZlD5cRNmxD15qZeyT5NGScA22qsf10nTRRV+H6TjT5zZXoyI8cWsg5EtnO4Wau8QsxckpVNgL+Dzxwm1/FiNp5Bt4LD/yBW2Yb98FB6Vf95yCy+49fPILG9xA5iMONXZRpIq5xw48fjth8TLvLXRUE9uk+wToQT/tf8ip/eJ5Ow4M5YSO0CZ1EDk86dD9W4oto4b6bHa2EZ91wRXZH7J8zCAo9yUVAJcfCdeEE7SQrjYiD/F9rFOFCvE1LZRSLLEnbvrdWDjPRYxml8YUNtEQs/C+8SJJkamzoRcVE84cxwvrAFhrSf4xXCk+LwYYFz1UguUC6x1979jxIR3J+HWhwTXwfDoDXEMrWAj0veorTYeYB1BMAWu9vRsDNMCAwEAAQ==")
55
6-let ServerAddress = addressFromStringValue("{{server_address}}")
6+let ServerAddress = addressFromStringValue("3MuJmCSEUgBNy1R2gesk59xDbWcuTKwwixW")
77
88 let RouletteSections = 21
99
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5+4469eSQOx3lhnCaVYqN5MbrGtLVwTDKxvJIBLvERq/sCti35ow+lYhOxBut2VaDIfFfUSwJdxs2CGWaG8mlYle3RD126VpsdSUUkVR5c8fZdoWOohKo1A5nbZTXi4RhUmpQvUM30avjJ1vOD8l07XMSQ+99WlAUEVXdm0oQeKHz0xjL5TCtV+6HxGfSX6IfXnhDMs0EaSm+lyg76Hs7sC2/jXLhnyyWuW9IEphgRwgZI0+7qSu5l5evLQhzsAH4RbIXJkWZ+JWczie5HBX1wrsMCgz52cAtBhaaB4dVDKqnhvGZlD5cRNmxD15qZeyT5NGScA22qsf10nTRRV+H6TjT5zZXoyI8cWsg5EtnO4Wau8QsxckpVNgL+Dzxwm1/FiNp5Bt4LD/yBW2Yb98FB6Vf95yCy+49fPILG9xA5iMONXZRpIq5xw48fjth8TLvLXRUE9uk+wToQT/tf8ip/eJ5Ow4M5YSO0CZ1EDk86dD9W4oto4b6bHa2EZ91wRXZH7J8zCAo9yUVAJcfCdeEE7SQrjYiD/F9rFOFCvE1LZRSLLEnbvrdWDjPRYxml8YUNtEQs/C+8SJJkamzoRcVE84cxwvrAFhrSf4xXCk+LwYYFz1UguUC6x1979jxIR3J+HWhwTXwfDoDXEMrWAj0veorTYeYB1BMAWu9vRsDNMCAwEAAQ==")
55
6-let ServerAddress = addressFromStringValue("{{server_address}}")
6+let ServerAddress = addressFromStringValue("3MuJmCSEUgBNy1R2gesk59xDbWcuTKwwixW")
77
88 let RouletteSections = 21
99
1010 let DataGameNumberKey = "APP_GAME_ID"
1111
1212 let DataUserGameKey = "USER_GAME_ID_"
1313
1414 let DataAmountKey = "AMOUNT"
1515
1616 let DataSectionKey = "SECTION"
1717
1818 let DataStatusKey = "STATUS"
1919
2020 let DataResultKey = "RESULT"
2121
2222 let DataWinAmountKey = "WIN_AMOUNT"
2323
2424 let DataStatusNew = "NEW"
2525
2626 let DataStatusWin = "WIN"
2727
2828 let DataStatusLoose = "LOOSE"
2929
3030 let WAVELET = ((100 * 1000) * 1000)
3131
3232 let COMMISSION = ((5 * WAVELET) / 1000)
3333
3434 let BET1 = (1 * WAVELET)
3535
3636 let BET2 = (2 * WAVELET)
3737
3838 let BET4 = (4 * WAVELET)
3939
4040 let BET8 = (8 * WAVELET)
4141
4242 let BET14 = (14 * WAVELET)
4343
4444 let Sections = [0, 2, 20, 2, 5, 2, 10, 2, 6, 2, 5, 2, 6, 2, 5, 2, 10, 2, 5, 2, 6]
4545
4646 let ErrorOnlyWavesAccepted = "Only waves accepted"
4747
4848 let ErrorMustGreaterThan0 = "Parameter size must be greater than 0"
4949
5050 let ErrorMustLessThan100 = "Parameter size must be less than 100"
5151
5252 let ErrorBetMustBeInWaves = "Bet amount must be in Waves"
5353
5454 let ErrorTransactionMustBeInWaves = "Transaction's fee must be in Waves"
5555
5656 let ErrorTransactionUsed = "Passed txId had been used before. Game aborted."
5757
5858 let ErrorKeyNotFound = "Key not found: "
5959
6060 let ErrorGameOver = "Game already is over "
6161
6262 let ErrorIncorrectSectionResult = "Incorrect section result"
6363
6464 let ErrorBetAmountNotInRange = "Bet amount is not in range"
6565
6666 func StoreData (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
6767
6868
6969 func StoreDataInt (transactionId,key,value) = DataEntry(((transactionId + "_") + key), value)
7070
7171
7272 func GetData (key) = match getString(this, key) {
7373 case str: String =>
7474 str
7575 case _ =>
7676 throw((ErrorKeyNotFound + key))
7777 }
7878
7979
8080 func GetDataString (transactionId,key) = {
8181 let fullKey = ((transactionId + "_") + key)
8282 match getString(this, fullKey) {
8383 case str: String =>
8484 str
8585 case _ =>
8686 throw((ErrorKeyNotFound + fullKey))
8787 }
8888 }
8989
9090
9191 func GetDataInt (transactionId,key) = {
9292 let fullKey = ((transactionId + "_") + key)
9393 match getInteger(this, fullKey) {
9494 case str: Int =>
9595 str
9696 case _ =>
9797 throw((ErrorKeyNotFound + fullKey))
9898 }
9999 }
100100
101101
102102 func NewGameId () = {
103103 let gameNum = match getInteger(this, DataGameNumberKey) {
104104 case num: Int =>
105105 num
106106 case _ =>
107107 0
108108 }
109109 (gameNum + 1)
110110 }
111111
112112
113113 func GenerateRandInt (gameId,rsaSign) = {
114114 let rsaSigValid = rsaVerify(SHA256, fromBase58String(gameId), toBytes(rsaSign), RSAPUBLIC)
115115 if (rsaSigValid)
116116 then {
117117 let rand = (toInt(sha256(toBytes(rsaSign))) % RouletteSections)
118118 if ((0 > rand))
119119 then (-1 * rand)
120120 else rand
121121 }
122122 else throw("Invalid RSA signature")
123123 }
124124
125125
126126 func GetStatus (result) = if (result)
127127 then DataStatusWin
128128 else DataStatusLoose
129129
130130
131131 func GetWinAmount (betAmt,section) = {
132132 let isCorrectResult = if (if (if (if ((section == 2))
133133 then true
134134 else (section == 5))
135135 then true
136136 else (section == 6))
137137 then true
138138 else (section == 10))
139139 then true
140140 else (section == 20)
141141 let betAmtValid = if (if (if (if ((betAmt == (BET1 + COMMISSION)))
142142 then true
143143 else (betAmt == (BET2 + COMMISSION)))
144144 then true
145145 else (betAmt == (BET4 + COMMISSION)))
146146 then true
147147 else (betAmt == (BET8 + COMMISSION)))
148148 then true
149149 else (betAmt == (BET14 + COMMISSION))
150150 if (!(isCorrectResult))
151151 then throw(ErrorIncorrectSectionResult)
152152 else if (betAmtValid)
153153 then ((betAmt - COMMISSION) * section)
154154 else throw(ErrorBetAmountNotInRange)
155155 }
156156
157157
158158 @Callable(i)
159159 func bet (expectedResult) = {
160160 let gameNumber = NewGameId()
161161 let gameTransactionId = toBase58String(i.transactionId)
162162 let address = toBase58String(i.caller.bytes)
163163 let pmt = extract(i.payment)
164164 let txIdUsed = isDefined(getString(this, gameTransactionId))
165165 let betNotInWaves = isDefined(pmt.assetId)
166166 let feeNotInWaves = isDefined(pmt.assetId)
167167 let amount = pmt.amount
168168 let winAmt = GetWinAmount(pmt.amount, expectedResult)
169169 if (betNotInWaves)
170170 then throw(ErrorBetMustBeInWaves)
171171 else if (feeNotInWaves)
172172 then throw(ErrorTransactionMustBeInWaves)
173173 else if (txIdUsed)
174174 then throw(ErrorTransactionUsed)
175175 else ScriptResult(WriteSet([DataEntry((DataUserGameKey + toString(gameNumber)), gameTransactionId), DataEntry(gameTransactionId, address), DataEntry(DataGameNumberKey, gameNumber), StoreDataInt(gameTransactionId, DataAmountKey, amount), StoreDataInt(gameTransactionId, DataSectionKey, expectedResult), StoreData(gameTransactionId, DataStatusKey, DataStatusNew), StoreDataInt(gameTransactionId, DataWinAmountKey, winAmt)]), TransferSet([ScriptTransfer(ServerAddress, COMMISSION, unit)]))
176176 }
177177
178178
179179
180180 @Callable(i)
181181 func result (gameTransactionId,rsa) = {
182182 let randIndex = GenerateRandInt(gameTransactionId, rsa)
183183 let selectedSection = GetDataInt(gameTransactionId, DataSectionKey)
184184 let status = GetDataString(gameTransactionId, DataStatusKey)
185185 if ((status == DataStatusNew))
186186 then {
187187 let randSection = Sections[randIndex]
188188 let isWin = (randSection == selectedSection)
189189 let writeSet = WriteSet([StoreData(gameTransactionId, DataStatusKey, GetStatus(isWin)), StoreDataInt(gameTransactionId, DataResultKey, randSection)])
190190 if (isWin)
191191 then {
192192 let wallet = GetData(gameTransactionId)
193193 let winAmount = GetDataInt(gameTransactionId, DataWinAmountKey)
194194 ScriptResult(writeSet, TransferSet([ScriptTransfer(addressFromStringValue(wallet), winAmount, unit)]))
195195 }
196196 else writeSet
197197 }
198198 else throw((ErrorGameOver + status))
199199 }
200200
201201
202202 @Verifier(tx)
203203 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
204204 then match tx {
205205 case ttx: TransferTransaction =>
206206 true
207207 case stx: SetScriptTransaction =>
208208 true
209209 case _ =>
210210 false
211211 }
212212 else false
213213

github/deemru/w8io/873ac7e 
51.96 ms