tx · A3K4tD2vmkXdAALVDSBnoTTEmwR3NfL5cUbVka5zs5Zc

3MrfLFw1uz3BDr45RQLvrRnAwT2nHpB4KiX:  -0.01000000 Waves

2023.06.09 18:32 [2615312] smart account 3MrfLFw1uz3BDr45RQLvrRnAwT2nHpB4KiX > SELF 0.00000000 Waves

{ "type": 13, "id": "A3K4tD2vmkXdAALVDSBnoTTEmwR3NfL5cUbVka5zs5Zc", "fee": 1000000, "feeAssetId": null, "timestamp": 1686324729581, "version": 2, "chainId": 84, "sender": "3MrfLFw1uz3BDr45RQLvrRnAwT2nHpB4KiX", "senderPublicKey": "5iiNX4Sz3qZzcerumQLc1y7u9TH2X46jDV4f9Xivtmtv", "proofs": [ "5nqXueTwcgE6MLqHdpQt3YnxZ52XjBtGYrFhh1AiT1j3Wt1sKW1Bw8kdETBD6XsBzd8hkZ3bnfiWbiuCjZ3g5pt7" ], "script": "base64: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ALkJAgkBE2xpc3RJbnRUb0xpc3RTdHJpbmcBBQNhcnICAXwBGXN0cmluZ0RlY29tcHJlc3NUb0xpc3RJbnQBBmFyclN0cgkBE2xpc3RTdHJpbmdUb0xpc3RJbmcBCQC1CQIFBmFyclN0cgIBfAEPUl9XaW5DYWxjdWxhdG9yBAxyYW5kb21OdW1iZXIJYmV0QW1vdW50EnNlbGVjdGVkTnVtYmVyQmV0cwxiZXREaXJlY3Rpb24EC1JFRF9TRUNUT1JTCQDMCAIAIAkAzAgCABMJAMwIAgAVCQDMCAIAGQkAzAgCACIJAMwIAgAbCQDMCAIAJAkAzAgCAB4JAMwIAgAXCQDMCAIABQkAzAgCABAJAMwIAgABCQDMCAIADgkAzAgCAAkJAMwIAgASCQDMCAIABwkAzAgCAAwJAMwIAgADBQNuaWwDAwkAAAIJAJADAQUSc2VsZWN0ZWROdW1iZXJCZXRzAAEJAAACBQxiZXREaXJlY3Rpb24CA251bQcDCQAAAgkAkQMCBRJzZWxlY3RlZE51bWJlckJldHMAAAUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50ACQAAAMJAAACCQCQAwEFEnNlbGVjdGVkTnVtYmVyQmV0cwACAwkBD2NvbnRhaW5zRWxlbWVudAIFEnNlbGVjdGVkTnVtYmVyQmV0cwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50ABIAAAMJAAACCQCQAwEFEnNlbGVjdGVkTnVtYmVyQmV0cwADAwkBD2NvbnRhaW5zRWxlbWVudAIFEnNlbGVjdGVkTnVtYmVyQmV0cwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50AAwAAAMJAAACCQCQAwEFEnNlbGVjdGVkTnVtYmVyQmV0cwAEAwkBD2NvbnRhaW5zRWxlbWVudAIFEnNlbGVjdGVkTnVtYmVyQmV0cwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50AAkAAAMJAAACCQCQAwEFEnNlbGVjdGVkTnVtYmVyQmV0cwAMAwkBD2NvbnRhaW5zRWxlbWVudAIFEnNlbGVjdGVkTnVtYmVyQmV0cwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50AAMAAAMJAAACBQxiZXREaXJlY3Rpb24CA3JlZAMJAQ9jb250YWluc0VsZW1lbnQCBQtSRURfU0VDVE9SUwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50AAIAAAMJAAACBQxiZXREaXJlY3Rpb24CBWJsYWNrAwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFC1JFRF9TRUNUT1JTBQxyYW5kb21OdW1iZXIJAQIhPQIFDHJhbmRvbU51bWJlcgAABwkAaAIFCWJldEFtb3VudAACAAADCQAAAgUMYmV0RGlyZWN0aW9uAgNvZGQDCQECIT0CCQBqAgUMcmFuZG9tTnVtYmVyAAIAAAkAaAIFCWJldEFtb3VudAACAAADCQAAAgUMYmV0RGlyZWN0aW9uAgRldmVuAwkAAAIJAGoCBQxyYW5kb21OdW1iZXIAAgAACQBoAgUJYmV0QW1vdW50AAIAAAMJAAACCQCQAwEFEnNlbGVjdGVkTnVtYmVyQmV0cwASAwkBD2NvbnRhaW5zRWxlbWVudAIFEnNlbGVjdGVkTnVtYmVyQmV0cwUMcmFuZG9tTnVtYmVyCQBoAgUJYmV0QW1vdW50AAIAAAAAAQtSX2dldEJldEtleQEBaQkArAICAg1iZXRfUm91bGV0dGVfCQClCAEIBQFpBmNhbGxlcgERUl9nZXRCZXRBbW91bnRLZXkBAWkJAKwCAgITYmV0QW1vdW50X1JvdWxldHRlXwkApQgBCAUBaQZjYWxsZXIBF1JfZ2V0U2VsZWN0ZWROdW1iZXJzS2V5AQFpCQCsAgICGXNlbGVjdGVkTnVtYmVyc19Sb3VsZXR0ZV8JAKUIAQgFAWkGY2FsbGVyARFSX2dldERpcmVjdGlvbktleQEBaQkArAICAhNkaXJlY3Rpb25fUm91bGV0dGVfCQClCAEIBQFpBmNhbGxlcgELUl9nZXRMb2dLZXkBAWkJAKwCAgkArAICCQCsAgICDWxvZ19Sb3VsZXR0ZV8JAKUIAQgFAWkGY2FsbGVyAgFfCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQBDlJfZ2V0U3RhdHVzS2V5AQFpCQCsAgICEHN0YXR1c19Sb3VsZXR0ZV8JAKUIAQgFAWkGY2FsbGVyAQxMV19nZXRCZXRLZXkBAWkJAKwCAgIPYmV0X0x1Y2t5V2hlZWxfCQClCAEIBQFpBmNhbGxlcgEMTFdfZ2V0V29uS2V5AQFpCQCsAgICD3dvbl9MdWNreVdoZWVsXwkApQgBCAUBaQZjYWxsZXIBFUxXX2dldFJhbmRvbU51bWJlcktleQEBaQkArAICAhhyYW5kb21OdW1iZXJfTHVja3lXaGVlbF8JAKUIAQgFAWkGY2FsbGVyAQxMV19nZXRMb2dLZXkBAWkJAKwCAgkArAICCQCsAgICD2xvZ19MdWNreVdoZWVsXwkApQgBCAUBaQZjYWxsZXICAV8JANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEOTFdfd2hhdFVzZXJXb24BBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAACAAEFByRtYXRjaDAJAQpudW1Ub1dhdmVzAQACAwkAAAIAAwUHJG1hdGNoMAkBCm51bVRvV2F2ZXMBAAEDCQAAAgAHBQckbWF0Y2gwCQEKbnVtVG9XYXZlcwEABgMJAAACAAkFByRtYXRjaDAJAQpudW1Ub1dhdmVzAQABAAABD0xXX2dldFN0YXR1c0tleQEBaQkArAICAhBzdGF0dXNfUm91bGV0dGVfCQClCAEIBQFpBmNhbGxlcgQBaQEPUm91bGV0dGVfY29tbWl0AwliZXRBbW91bnQSc2VsZWN0ZWROdW1iZXJCZXRzDGJldERpcmVjdGlvbgQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwkBASEBCQELaXNQYXltZW50T2sCBQFpBQliZXRBbW91bnQJAAIBAh5Xcm9uZyBwYXltZW50IGFtb3VudCBvciBhc3NldCEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtSX2dldEJldEtleQEFAWkJAGQCBQZoZWlnaHQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEVJfZ2V0QmV0QW1vdW50S2V5AQUBaQUJYmV0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARdSX2dldFNlbGVjdGVkTnVtYmVyc0tleQEFAWkJARdsaXN0SW50Q29tcHJlc3NUb1N0cmluZwEFEnNlbGVjdGVkTnVtYmVyQmV0cwkAzAgCCQELU3RyaW5nRW50cnkCCQERUl9nZXREaXJlY3Rpb25LZXkBBQFpBQxiZXREaXJlY3Rpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDlJfZ2V0U3RhdHVzS2V5AQUBaQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHwgc3RhdHVzOiBjb21taXQgfCByZXZlYWxCbG9jazogCQCkAwEJAGQCBQZoZWlnaHQAAQIOIHwgYmV0QW1vdW50OiAJAKQDAQUJYmV0QW1vdW50AhQgfCBzZWxlY3RlZE51bWJlcnM6IAkBF2xpc3RJbnRDb21wcmVzc1RvU3RyaW5nAQUSc2VsZWN0ZWROdW1iZXJCZXRzBQNuaWwBaQEPUm91bGV0dGVfcmV2ZWFsAAQMY29tbWl0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQtSX2dldEJldEtleQEFAWkCDUJldCBub3QgZm91bmQECWJldEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQERUl9nZXRCZXRBbW91bnRLZXkBBQFpAhRCZXQgYW1vdW50IG5vdCBmb3VuZAQSc2VsZWN0ZWROdW1iZXJzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARdSX2dldFNlbGVjdGVkTnVtYmVyc0tleQEFAWkCGlNlbGVjdGVkIG51bWJlcnMgbm90IGZvdW5kBAlkaXJlY3Rpb24JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEVJfZ2V0RGlyZWN0aW9uS2V5AQUBaQITRGlyZWN0aW9uIG5vdCBmb3VuZAQPc2VsZWN0ZWROdW1iZXJzCQEZc3RyaW5nRGVjb21wcmVzc1RvTGlzdEludAEFEnNlbGVjdGVkTnVtYmVyc1N0cgMJAGYCBQxjb21taXRIZWlnaHQFBmhlaWdodAkAAgEJAKwCAgkArAICAgVXYWl0IAkApAMBCQBlAgUMY29tbWl0SGVpZ2h0BQZoZWlnaHQCGSBibG9ja3MgdG8gcmV2ZWFsIHRoaXMgaWQEC3JldmVhbEJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQUMY29tbWl0SGVpZ2h0AhF1bmV4Y3BlY3RlZCBlcnJvcgQDdnJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQtyZXZlYWxCbG9jawN2cmYCEXVuZXhjcGVjdGVkIGVycm9yBApyYW5kb21IYXNoCQD3AwEJAQV2YWx1ZQEFA3ZyZgQMcmFuZG9tTnVtYmVyCQBqAgkAsgkCBQpyYW5kb21IYXNoABAAJQQNd2lubmluZ0Ftb3VudAkBCm51bVRvV2F2ZXMBCQEPUl9XaW5DYWxjdWxhdG9yBAUMcmFuZG9tTnVtYmVyBQliZXRBbW91bnQFD3NlbGVjdGVkTnVtYmVycwUJZGlyZWN0aW9uBAZsb2dTdHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEHwgY29tbWl0SGVpZ2h0OiAJAKQDAQUMY29tbWl0SGVpZ2h0Ag4gfCBiZXRBbW91bnQ6IAkApAMBBQliZXRBbW91bnQCEiB8IHdpbm5pbmdBbW91bnQ6IAkApAMBBQ13aW5uaW5nQW1vdW50AhQgfCBzZWxlY3RlZE51bWJlcnM6IAkBF2xpc3RJbnRDb21wcmVzc1RvU3RyaW5nAQUPc2VsZWN0ZWROdW1iZXJzAhEgfCByYW5kb21OdW1iZXI6IAkApAMBBQxyYW5kb21OdW1iZXIECXN0YXR1c1N0cgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIifCBzdGF0dXM6IHJldmVhbCB8IHdpbm5pbmdBbW91bnQ6IAkApAMBBQ13aW5uaW5nQW1vdW50AhQgfCBzZWxlY3RlZE51bWJlcnM6IAkBF2xpc3RJbnRDb21wcmVzc1RvU3RyaW5nAQUPc2VsZWN0ZWROdW1iZXJzAhEgfCByYW5kb21OdW1iZXI6IAkApAMBBQxyYW5kb21OdW1iZXICDiB8IGJldEFtb3VudDogCQCkAwEFCWJldEFtb3VudAIUIHwgc2VsZWN0ZWROdW1iZXJzOiAJARdsaXN0SW50Q29tcHJlc3NUb1N0cmluZwEFD3NlbGVjdGVkTnVtYmVycwMJAGYCBQ13aW5uaW5nQW1vdW50AAAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC1JfZ2V0QmV0S2V5AQUBaQkAzAgCCQELRGVsZXRlRW50cnkBCQERUl9nZXRCZXRBbW91bnRLZXkBBQFpCQDMCAIJAQtEZWxldGVFbnRyeQEJARdSX2dldFNlbGVjdGVkTnVtYmVyc0tleQEFAWkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEVJfZ2V0RGlyZWN0aW9uS2V5AQUBaQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDXdpbm5pbmdBbW91bnQFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC1JfZ2V0TG9nS2V5AQUBaQUGbG9nU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5SX2dldFN0YXR1c0tleQEFAWkFCXN0YXR1c1N0cgUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtSX2dldEJldEtleQEFAWkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEVJfZ2V0QmV0QW1vdW50S2V5AQUBaQkAzAgCCQELRGVsZXRlRW50cnkBCQEXUl9nZXRTZWxlY3RlZE51bWJlcnNLZXkBBQFpCQDMCAIJAQtEZWxldGVFbnRyeQEJARFSX2dldERpcmVjdGlvbktleQEFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtSX2dldExvZ0tleQEFAWkFDXdpbm5pbmdBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC1JfZ2V0TG9nS2V5AQUBaQUGbG9nU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5SX2dldFN0YXR1c0tleQEFAWkFCXN0YXR1c1N0cgUDbmlsAWkBEUx1Y2t5V2hlZWxfY29tbWl0AAMJAQEhAQkBC2lzUGF5bWVudE9rAgUBaQABCQACAQIdV3JvbmcgcGF5bWVudCBhbW91bnQgb3IgYXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxMV19nZXRCZXRLZXkBBQFpCQBkAgUGaGVpZ2h0AAEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFUxXX2dldFJhbmRvbU51bWJlcktleQEFAWkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDExXX2dldFdvbktleQEFAWkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD0xXX2dldFN0YXR1c0tleQEFAWkCEHwgc3RhdHVzOiBjb21taXQFA25pbAFpARFMdWNreVdoZWVsX3JldmVhbAAEDGNvbW1pdEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEMTFdfZ2V0QmV0S2V5AQUBaQINQmV0IG5vdCBmb3VuZAMJAGYCBQxjb21taXRIZWlnaHQFBmhlaWdodAkAAgEJAKwCAgkArAICAgVXYWl0IAkApAMBCQBlAgUMY29tbWl0SGVpZ2h0BQZoZWlnaHQCGSBibG9ja3MgdG8gcmV2ZWFsIHRoaXMgaWQEC3JldmVhbEJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQUMY29tbWl0SGVpZ2h0AhF1bmV4Y3BlY3RlZCBlcnJvcgQDdnJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQtyZXZlYWxCbG9jawN2cmYCEXVuZXhjcGVjdGVkIGVycm9yBApyYW5kb21IYXNoCQD3AwEJAQV2YWx1ZQEFA3ZyZgQMcmV2ZWFsQmxvY2syCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQkAZQIFDGNvbW1pdEhlaWdodAABAhF1bmV4Y3BlY3RlZCBlcnJvcgQEdnJmMgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAULcmV2ZWFsQmxvY2sDdnJmAhF1bmV4Y3BlY3RlZCBlcnJvcgQLcmFuZG9tSGFzaDIJAPcDAQkBBXZhbHVlAQUDdnJmBAZyYW5kb20JAGQCCQCyCQIFCnJhbmRvbUhhc2gAEAkAaQIJALIJAgUKcmFuZG9tSGFzaAAKCQCyCQIFCnJhbmRvbUhhc2gABQQMcmFuZG9tTnVtYmVyCQBqAgUGcmFuZG9tAAwEDXdpbm5pbmdBbW91bnQJAQ5MV193aGF0VXNlcldvbgEFDHJhbmRvbU51bWJlcgQJc3RhdHVzU3RyCQCsAgIJAKwCAgkArAICCQCsAgICInwgc3RhdHVzOiByZXZlYWwgfCB3aW5uaW5nQW1vdW50OiAJAKQDAQUNd2lubmluZ0Ftb3VudAIUIHwgc2VsZWN0ZWROdW1iZXJzOiACESB8IHJhbmRvbU51bWJlcjogCQCkAwEFDHJhbmRvbU51bWJlcgMJAGYCBQ13aW5uaW5nQW1vdW50AAAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDExXX2dldEJldEtleQEFAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ13aW5uaW5nQW1vdW50BQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMTFdfZ2V0V29uS2V5AQUBaQUNd2lubmluZ0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFUxXX2dldFJhbmRvbU51bWJlcktleQEFAWkFDHJhbmRvbU51bWJlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEPTFdfZ2V0U3RhdHVzS2V5AQUBaQUJc3RhdHVzU3RyBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDExXX2dldEJldEtleQEFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxMV19nZXRXb25LZXkBBQFpBQ13aW5uaW5nQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVTFdfZ2V0UmFuZG9tTnVtYmVyS2V5AQUBaQUMcmFuZG9tTnVtYmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9MV19nZXRTdGF0dXNLZXkBBQFpBQlzdGF0dXNTdHIFA25pbAAyrT0k", "height": 2615312, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HXJWezUMB7pANr2fF7DLcr5uX2sckR3gKSeLhRWh363B Next: DisfU15e4cr416cn758h9x4HAXKqQxytYTWB29fc3Q6N Diff:
OldNewDifferences
179179 func LW_getStatusKey (i) = ("status_Roulette_" + toString(i.caller))
180180
181181
182-func xxx (accum,next) = {
183- let revealBlock = valueOrErrorMessage(blockInfoByHeight(next), "unexcpected error")
184- let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
185- let randomHash = sha256(value(vrf))
186- let revealBlock2 = valueOrErrorMessage(blockInfoByHeight((next - 1)), "unexcpected error")
187- let vrf2 = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
188- let randomHash2 = sha256(value(vrf))
189- let random = (toInt(randomHash, 16) + (toInt(randomHash, 10) / toInt(randomHash, 5)))
190- let randomNumber = (random % 37)
191-StringEntry(("random__" + toString(next)), toString(randomNumber)) :: accum
182+@Callable(i)
183+func Roulette_commit (betAmount,selectedNumberBets,betDirection) = {
184+ let p = i.payments[0]
185+ if (!(isPaymentOk(i, betAmount)))
186+ then throw("Wrong payment amount or asset!")
187+ else [IntegerEntry(R_getBetKey(i), (height + 1)), IntegerEntry(R_getBetAmountKey(i), betAmount), StringEntry(R_getSelectedNumbersKey(i), listIntCompressToString(selectedNumberBets)), StringEntry(R_getDirectionKey(i), betDirection), StringEntry(R_getStatusKey(i), ((((("| status: commit | revealBlock: " + toString((height + 1))) + " | betAmount: ") + toString(betAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumberBets)))]
192188 }
193189
194190
195-func xxx2 (arr) = {
196- let $l = arr
197- let $s = size($l)
198- let $acc0 = nil
199- func $f0_1 ($a,$i) = if (($i >= $s))
200- then $a
201- else xxx($a, $l[$i])
202191
203- func $f0_2 ($a,$i) = if (($i >= $s))
204- then $a
205- else throw("List size exceeds 50")
206-
207- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
192+@Callable(i)
193+func Roulette_reveal () = {
194+ let commitHeight = valueOrErrorMessage(getIntegerValue(R_getBetKey(i)), "Bet not found")
195+ let betAmount = valueOrErrorMessage(getIntegerValue(R_getBetAmountKey(i)), "Bet amount not found")
196+ let selectedNumbersStr = valueOrErrorMessage(getStringValue(R_getSelectedNumbersKey(i)), "Selected numbers not found")
197+ let direction = valueOrErrorMessage(getStringValue(R_getDirectionKey(i)), "Direction not found")
198+ let selectedNumbers = stringDecompressToListInt(selectedNumbersStr)
199+ if ((commitHeight > height))
200+ then throw((("Wait " + toString((commitHeight - height))) + " blocks to reveal this id"))
201+ else {
202+ let revealBlock = valueOrErrorMessage(blockInfoByHeight(commitHeight), "unexcpected error")
203+ let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
204+ let randomHash = sha256(value(vrf))
205+ let randomNumber = (toInt(randomHash, 16) % 37)
206+ let winningAmount = numToWaves(R_WinCalculator(randomNumber, betAmount, selectedNumbers, direction))
207+ let logStr = ((((((((("| commitHeight: " + toString(commitHeight)) + " | betAmount: ") + toString(betAmount)) + " | winningAmount: ") + toString(winningAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers)) + " | randomNumber: ") + toString(randomNumber))
208+ let statusStr = ((((((((("| status: reveal | winningAmount: " + toString(winningAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers)) + " | randomNumber: ") + toString(randomNumber)) + " | betAmount: ") + toString(betAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers))
209+ if ((winningAmount > 0))
210+ then [DeleteEntry(R_getBetKey(i)), DeleteEntry(R_getBetAmountKey(i)), DeleteEntry(R_getSelectedNumbersKey(i)), DeleteEntry(R_getDirectionKey(i)), ScriptTransfer(i.caller, winningAmount, unit), StringEntry(R_getLogKey(i), logStr), StringEntry(R_getStatusKey(i), statusStr)]
211+ else [DeleteEntry(R_getBetKey(i)), DeleteEntry(R_getBetAmountKey(i)), DeleteEntry(R_getSelectedNumbersKey(i)), DeleteEntry(R_getDirectionKey(i)), IntegerEntry(R_getLogKey(i), winningAmount), StringEntry(R_getLogKey(i), logStr), StringEntry(R_getStatusKey(i), statusStr)]
212+ }
208213 }
209214
210215
216+
211217 @Callable(i)
212-func test (commitHeight) = xxx2([commitHeight, (commitHeight - 1), (commitHeight - 2), (commitHeight - 3), (commitHeight - 4), (commitHeight - 5), (commitHeight - 6), (commitHeight - 7), (commitHeight - 8), (commitHeight - 9), (commitHeight - 10), (commitHeight - 11), (commitHeight - 12), (commitHeight - 13), (commitHeight - 14), (commitHeight - 15), (commitHeight - 16), (commitHeight - 17), (commitHeight - 18), (commitHeight - 19), (commitHeight - 20), (commitHeight - 21), (commitHeight - 22), (commitHeight - 23), (commitHeight - 24), (commitHeight - 25), (commitHeight - 26), (commitHeight - 27), (commitHeight - 28), (commitHeight - 29), (commitHeight - 30), (commitHeight - 31), (commitHeight - 32), (commitHeight - 33), (commitHeight - 34), (commitHeight - 35), (commitHeight - 36), (commitHeight - 37), (commitHeight - 38), (commitHeight - 39), (commitHeight - 40), (commitHeight - 41), (commitHeight - 42), (commitHeight - 43), (commitHeight - 44), (commitHeight - 45), (commitHeight - 46), (commitHeight - 47)])
218+func LuckyWheel_commit () = if (!(isPaymentOk(i, 1)))
219+ then throw("Wrong payment amount or asset")
220+ else [IntegerEntry(LW_getBetKey(i), (height + 1)), DeleteEntry(LW_getRandomNumberKey(i)), DeleteEntry(LW_getWonKey(i)), StringEntry(LW_getStatusKey(i), "| status: commit")]
221+
222+
223+
224+@Callable(i)
225+func LuckyWheel_reveal () = {
226+ let commitHeight = valueOrErrorMessage(getIntegerValue(LW_getBetKey(i)), "Bet not found")
227+ if ((commitHeight > height))
228+ then throw((("Wait " + toString((commitHeight - height))) + " blocks to reveal this id"))
229+ else {
230+ let revealBlock = valueOrErrorMessage(blockInfoByHeight(commitHeight), "unexcpected error")
231+ let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
232+ let randomHash = sha256(value(vrf))
233+ let revealBlock2 = valueOrErrorMessage(blockInfoByHeight((commitHeight - 1)), "unexcpected error")
234+ let vrf2 = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
235+ let randomHash2 = sha256(value(vrf))
236+ let random = (toInt(randomHash, 16) + (toInt(randomHash, 10) / toInt(randomHash, 5)))
237+ let randomNumber = (random % 12)
238+ let winningAmount = LW_whatUserWon(randomNumber)
239+ let statusStr = (((("| status: reveal | winningAmount: " + toString(winningAmount)) + " | selectedNumbers: ") + " | randomNumber: ") + toString(randomNumber))
240+ if ((winningAmount > 0))
241+ then [DeleteEntry(LW_getBetKey(i)), ScriptTransfer(i.caller, winningAmount, unit), IntegerEntry(LW_getWonKey(i), winningAmount), IntegerEntry(LW_getRandomNumberKey(i), randomNumber), StringEntry(LW_getStatusKey(i), statusStr)]
242+ else [DeleteEntry(LW_getBetKey(i)), IntegerEntry(LW_getWonKey(i), winningAmount), IntegerEntry(LW_getRandomNumberKey(i), randomNumber), StringEntry(LW_getStatusKey(i), statusStr)]
243+ }
244+ }
213245
214246
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func numToWaves (num) = (num * 100000000)
55
66
77 func isPaymentOk (i,sum) = {
88 let acceptableAssetId = base58'WAVES'
99 let p = i.payments[0]
1010 if ((p.amount >= numToWaves(sum)))
1111 then (p.assetId == unit)
1212 else false
1313 }
1414
1515
1616 func mapIntToStr (accum,next) = toString(next) :: accum
1717
1818
1919 func mapStrToInt (accum,next) = parseIntValue(next) :: accum
2020
2121
2222 func mapIntToSum (accum,next) = (accum + next)
2323
2424
2525 func listIntToSum (arr) = {
2626 let $l = arr
2727 let $s = size($l)
2828 let $acc0 = 0
2929 func $f0_1 ($a,$i) = if (($i >= $s))
3030 then $a
3131 else mapIntToSum($a, $l[$i])
3232
3333 func $f0_2 ($a,$i) = if (($i >= $s))
3434 then $a
3535 else throw("List size exceeds 50")
3636
3737 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
3838 }
3939
4040
4141 func listIntToListString (arr) = {
4242 let $l = arr
4343 let $s = size($l)
4444 let $acc0 = nil
4545 func $f0_1 ($a,$i) = if (($i >= $s))
4646 then $a
4747 else mapIntToStr($a, $l[$i])
4848
4949 func $f0_2 ($a,$i) = if (($i >= $s))
5050 then $a
5151 else throw("List size exceeds 50")
5252
5353 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
5454 }
5555
5656
5757 func listStringToListIng (arr) = {
5858 let $l = arr
5959 let $s = size($l)
6060 let $acc0 = nil
6161 func $f0_1 ($a,$i) = if (($i >= $s))
6262 then $a
6363 else mapStrToInt($a, $l[$i])
6464
6565 func $f0_2 ($a,$i) = if (($i >= $s))
6666 then $a
6767 else throw("List size exceeds 50")
6868
6969 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
7070 }
7171
7272
7373 func listStringCompressToString (arr) = makeString(arr, "|")
7474
7575
7676 func stringDecompressToListString (str) = split(str, "|")
7777
7878
7979 func listIntCompressToString (arr) = makeString(listIntToListString(arr), "|")
8080
8181
8282 func stringDecompressToListInt (arrStr) = listStringToListIng(split(arrStr, "|"))
8383
8484
8585 func R_WinCalculator (randomNumber,betAmount,selectedNumberBets,betDirection) = {
8686 let RED_SECTORS = [32, 19, 21, 25, 34, 27, 36, 30, 23, 5, 16, 1, 14, 9, 18, 7, 12, 3]
8787 if (if ((size(selectedNumberBets) == 1))
8888 then (betDirection == "num")
8989 else false)
9090 then if ((selectedNumberBets[0] == randomNumber))
9191 then (betAmount * 36)
9292 else 0
9393 else if ((size(selectedNumberBets) == 2))
9494 then if (containsElement(selectedNumberBets, randomNumber))
9595 then (betAmount * 18)
9696 else 0
9797 else if ((size(selectedNumberBets) == 3))
9898 then if (containsElement(selectedNumberBets, randomNumber))
9999 then (betAmount * 12)
100100 else 0
101101 else if ((size(selectedNumberBets) == 4))
102102 then if (containsElement(selectedNumberBets, randomNumber))
103103 then (betAmount * 9)
104104 else 0
105105 else if ((size(selectedNumberBets) == 12))
106106 then if (containsElement(selectedNumberBets, randomNumber))
107107 then (betAmount * 3)
108108 else 0
109109 else if ((betDirection == "red"))
110110 then if (containsElement(RED_SECTORS, randomNumber))
111111 then (betAmount * 2)
112112 else 0
113113 else if ((betDirection == "black"))
114114 then if (if (!(containsElement(RED_SECTORS, randomNumber)))
115115 then (randomNumber != 0)
116116 else false)
117117 then (betAmount * 2)
118118 else 0
119119 else if ((betDirection == "odd"))
120120 then if (((randomNumber % 2) != 0))
121121 then (betAmount * 2)
122122 else 0
123123 else if ((betDirection == "even"))
124124 then if (((randomNumber % 2) == 0))
125125 then (betAmount * 2)
126126 else 0
127127 else if ((size(selectedNumberBets) == 18))
128128 then if (containsElement(selectedNumberBets, randomNumber))
129129 then (betAmount * 2)
130130 else 0
131131 else 0
132132 }
133133
134134
135135 func R_getBetKey (i) = ("bet_Roulette_" + toString(i.caller))
136136
137137
138138 func R_getBetAmountKey (i) = ("betAmount_Roulette_" + toString(i.caller))
139139
140140
141141 func R_getSelectedNumbersKey (i) = ("selectedNumbers_Roulette_" + toString(i.caller))
142142
143143
144144 func R_getDirectionKey (i) = ("direction_Roulette_" + toString(i.caller))
145145
146146
147147 func R_getLogKey (i) = ((("log_Roulette_" + toString(i.caller)) + "_") + toBase58String(i.transactionId))
148148
149149
150150 func R_getStatusKey (i) = ("status_Roulette_" + toString(i.caller))
151151
152152
153153 func LW_getBetKey (i) = ("bet_LuckyWheel_" + toString(i.caller))
154154
155155
156156 func LW_getWonKey (i) = ("won_LuckyWheel_" + toString(i.caller))
157157
158158
159159 func LW_getRandomNumberKey (i) = ("randomNumber_LuckyWheel_" + toString(i.caller))
160160
161161
162162 func LW_getLogKey (i) = ((("log_LuckyWheel_" + toString(i.caller)) + "_") + toBase58String(i.transactionId))
163163
164164
165165 func LW_whatUserWon (value) = match value {
166166 case _ =>
167167 if ((1 == $match0))
168168 then numToWaves(2)
169169 else if ((3 == $match0))
170170 then numToWaves(1)
171171 else if ((7 == $match0))
172172 then numToWaves(6)
173173 else if ((9 == $match0))
174174 then numToWaves(1)
175175 else 0
176176 }
177177
178178
179179 func LW_getStatusKey (i) = ("status_Roulette_" + toString(i.caller))
180180
181181
182-func xxx (accum,next) = {
183- let revealBlock = valueOrErrorMessage(blockInfoByHeight(next), "unexcpected error")
184- let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
185- let randomHash = sha256(value(vrf))
186- let revealBlock2 = valueOrErrorMessage(blockInfoByHeight((next - 1)), "unexcpected error")
187- let vrf2 = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
188- let randomHash2 = sha256(value(vrf))
189- let random = (toInt(randomHash, 16) + (toInt(randomHash, 10) / toInt(randomHash, 5)))
190- let randomNumber = (random % 37)
191-StringEntry(("random__" + toString(next)), toString(randomNumber)) :: accum
182+@Callable(i)
183+func Roulette_commit (betAmount,selectedNumberBets,betDirection) = {
184+ let p = i.payments[0]
185+ if (!(isPaymentOk(i, betAmount)))
186+ then throw("Wrong payment amount or asset!")
187+ else [IntegerEntry(R_getBetKey(i), (height + 1)), IntegerEntry(R_getBetAmountKey(i), betAmount), StringEntry(R_getSelectedNumbersKey(i), listIntCompressToString(selectedNumberBets)), StringEntry(R_getDirectionKey(i), betDirection), StringEntry(R_getStatusKey(i), ((((("| status: commit | revealBlock: " + toString((height + 1))) + " | betAmount: ") + toString(betAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumberBets)))]
192188 }
193189
194190
195-func xxx2 (arr) = {
196- let $l = arr
197- let $s = size($l)
198- let $acc0 = nil
199- func $f0_1 ($a,$i) = if (($i >= $s))
200- then $a
201- else xxx($a, $l[$i])
202191
203- func $f0_2 ($a,$i) = if (($i >= $s))
204- then $a
205- else throw("List size exceeds 50")
206-
207- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
192+@Callable(i)
193+func Roulette_reveal () = {
194+ let commitHeight = valueOrErrorMessage(getIntegerValue(R_getBetKey(i)), "Bet not found")
195+ let betAmount = valueOrErrorMessage(getIntegerValue(R_getBetAmountKey(i)), "Bet amount not found")
196+ let selectedNumbersStr = valueOrErrorMessage(getStringValue(R_getSelectedNumbersKey(i)), "Selected numbers not found")
197+ let direction = valueOrErrorMessage(getStringValue(R_getDirectionKey(i)), "Direction not found")
198+ let selectedNumbers = stringDecompressToListInt(selectedNumbersStr)
199+ if ((commitHeight > height))
200+ then throw((("Wait " + toString((commitHeight - height))) + " blocks to reveal this id"))
201+ else {
202+ let revealBlock = valueOrErrorMessage(blockInfoByHeight(commitHeight), "unexcpected error")
203+ let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
204+ let randomHash = sha256(value(vrf))
205+ let randomNumber = (toInt(randomHash, 16) % 37)
206+ let winningAmount = numToWaves(R_WinCalculator(randomNumber, betAmount, selectedNumbers, direction))
207+ let logStr = ((((((((("| commitHeight: " + toString(commitHeight)) + " | betAmount: ") + toString(betAmount)) + " | winningAmount: ") + toString(winningAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers)) + " | randomNumber: ") + toString(randomNumber))
208+ let statusStr = ((((((((("| status: reveal | winningAmount: " + toString(winningAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers)) + " | randomNumber: ") + toString(randomNumber)) + " | betAmount: ") + toString(betAmount)) + " | selectedNumbers: ") + listIntCompressToString(selectedNumbers))
209+ if ((winningAmount > 0))
210+ then [DeleteEntry(R_getBetKey(i)), DeleteEntry(R_getBetAmountKey(i)), DeleteEntry(R_getSelectedNumbersKey(i)), DeleteEntry(R_getDirectionKey(i)), ScriptTransfer(i.caller, winningAmount, unit), StringEntry(R_getLogKey(i), logStr), StringEntry(R_getStatusKey(i), statusStr)]
211+ else [DeleteEntry(R_getBetKey(i)), DeleteEntry(R_getBetAmountKey(i)), DeleteEntry(R_getSelectedNumbersKey(i)), DeleteEntry(R_getDirectionKey(i)), IntegerEntry(R_getLogKey(i), winningAmount), StringEntry(R_getLogKey(i), logStr), StringEntry(R_getStatusKey(i), statusStr)]
212+ }
208213 }
209214
210215
216+
211217 @Callable(i)
212-func test (commitHeight) = xxx2([commitHeight, (commitHeight - 1), (commitHeight - 2), (commitHeight - 3), (commitHeight - 4), (commitHeight - 5), (commitHeight - 6), (commitHeight - 7), (commitHeight - 8), (commitHeight - 9), (commitHeight - 10), (commitHeight - 11), (commitHeight - 12), (commitHeight - 13), (commitHeight - 14), (commitHeight - 15), (commitHeight - 16), (commitHeight - 17), (commitHeight - 18), (commitHeight - 19), (commitHeight - 20), (commitHeight - 21), (commitHeight - 22), (commitHeight - 23), (commitHeight - 24), (commitHeight - 25), (commitHeight - 26), (commitHeight - 27), (commitHeight - 28), (commitHeight - 29), (commitHeight - 30), (commitHeight - 31), (commitHeight - 32), (commitHeight - 33), (commitHeight - 34), (commitHeight - 35), (commitHeight - 36), (commitHeight - 37), (commitHeight - 38), (commitHeight - 39), (commitHeight - 40), (commitHeight - 41), (commitHeight - 42), (commitHeight - 43), (commitHeight - 44), (commitHeight - 45), (commitHeight - 46), (commitHeight - 47)])
218+func LuckyWheel_commit () = if (!(isPaymentOk(i, 1)))
219+ then throw("Wrong payment amount or asset")
220+ else [IntegerEntry(LW_getBetKey(i), (height + 1)), DeleteEntry(LW_getRandomNumberKey(i)), DeleteEntry(LW_getWonKey(i)), StringEntry(LW_getStatusKey(i), "| status: commit")]
221+
222+
223+
224+@Callable(i)
225+func LuckyWheel_reveal () = {
226+ let commitHeight = valueOrErrorMessage(getIntegerValue(LW_getBetKey(i)), "Bet not found")
227+ if ((commitHeight > height))
228+ then throw((("Wait " + toString((commitHeight - height))) + " blocks to reveal this id"))
229+ else {
230+ let revealBlock = valueOrErrorMessage(blockInfoByHeight(commitHeight), "unexcpected error")
231+ let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
232+ let randomHash = sha256(value(vrf))
233+ let revealBlock2 = valueOrErrorMessage(blockInfoByHeight((commitHeight - 1)), "unexcpected error")
234+ let vrf2 = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
235+ let randomHash2 = sha256(value(vrf))
236+ let random = (toInt(randomHash, 16) + (toInt(randomHash, 10) / toInt(randomHash, 5)))
237+ let randomNumber = (random % 12)
238+ let winningAmount = LW_whatUserWon(randomNumber)
239+ let statusStr = (((("| status: reveal | winningAmount: " + toString(winningAmount)) + " | selectedNumbers: ") + " | randomNumber: ") + toString(randomNumber))
240+ if ((winningAmount > 0))
241+ then [DeleteEntry(LW_getBetKey(i)), ScriptTransfer(i.caller, winningAmount, unit), IntegerEntry(LW_getWonKey(i), winningAmount), IntegerEntry(LW_getRandomNumberKey(i), randomNumber), StringEntry(LW_getStatusKey(i), statusStr)]
242+ else [DeleteEntry(LW_getBetKey(i)), IntegerEntry(LW_getWonKey(i), winningAmount), IntegerEntry(LW_getRandomNumberKey(i), randomNumber), StringEntry(LW_getStatusKey(i), statusStr)]
243+ }
244+ }
213245
214246

github/deemru/w8io/169f3d6 
38.08 ms