tx · qMVN2FegXccAQ1cEi8DV5Gem5DxmPUYug7AGf9wT9DQ

3N8NLvRGsbGhgoXy7EdigPbAz6N2i7ygBcZ:  -0.01800000 Waves

2023.12.18 21:54 [2892549] smart account 3N8NLvRGsbGhgoXy7EdigPbAz6N2i7ygBcZ > SELF 0.00000000 Waves

{ "type": 13, "id": "qMVN2FegXccAQ1cEi8DV5Gem5DxmPUYug7AGf9wT9DQ", "fee": 1800000, "feeAssetId": null, "timestamp": 1702925756874, "version": 2, "chainId": 84, "sender": "3N8NLvRGsbGhgoXy7EdigPbAz6N2i7ygBcZ", "senderPublicKey": "CQoe8BRHR78TuPQLcK3Ykv39w9CeNLhjKdj6TNbJ5FrM", "proofs": [ "49YDD9ZSbS3NGQEB299EZu4pPhooqi3X5sbYd1fTQ4AJhtqBZgU1sGoAaXKT27SAZJNq1xwVUyZkuohQv1yPwSra" ], "script": "base64:BgIaCAISBgoECAgBCBIDCgEEEgMKAQgSBAoCCAJJAANTRVACAl9fAAdXQVZFU0lEAQQTq9kzAAZXQVZFU0QAgMLXLwAJR0FNRV9OQU1FAglYbWFzIFRyZWUADFJBTkRPTV9SQU5HRQAFAAhOVU1fQkVUUwABAA9NQVhfREVDT1JBVElPTlMAHAEMZ2V0U3RyT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQ1nZXRCb29sT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCbCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEGFsbG93ZWRBc3NldHNLZXkCGCVzJXNfX2NmZ19fYWxsb3dlZEFzc2V0cwARYXNzZXRzRGVjaW1hbHNLZXkCGSVzJXNfX2NmZ19fYXNzZXRzRGVjaW1hbHMADmJldERpdmlkZXJzS2V5AhwlcyVzX19jZmdfX2Fzc2V0c0JldERpdmlkZXJzAA5SU0FQVUJMSUM2NEtFWQIWJXMlc19fY2ZnX19yc2FQdWJsaWM2NAAQU0VSVkVSQUREUkVTU0tFWQIWJXMlc19fY2ZnX19iZW56QWRkcmVzcwAQUkFORFRJTUVGUkFNRUtFWQIcJXMlc19fY2ZnX193aXRoZHJhd1RpbWVGcmFtZQAPR0FNRVNDT1VOVEVSS0VZAhYlcyVzX19ydW50aW1lX19nYW1lTnVtAApibG9ja2VkS2V5AiAlcyVzX19ydW50aW1lX19jb250cmFjdElzQmxvY2tlZAAScmVzZXJ2ZWRBbW91bnRzS2V5Ah4lcyVzX19ydW50aW1lX19yZXNlcnZlZEFtb3VudHMACmhpc3RvcnlLZXkCISVzJXNfX3J1bnRpbWVfX2RlY29yYXRpb25zSGlzdG9yeQELZ2V0SW50QXJyYXkBA2tleQQBYQkBDGdldFN0ck9yRmFpbAIFBHRoaXMFA2tleQoBBmZpbGxlcgIDYWNjAmVsCQDNCAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQJlbAoAAiRsCQC1CQIFAWEFA1NFUAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZmlsbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAZBU1NFVFMJALUJAgkBDGdldFN0ck9yRmFpbAIFBHRoaXMFEGFsbG93ZWRBc3NldHNLZXkFA1NFUAAIREVDSU1BTFMJAQtnZXRJbnRBcnJheQEFEWFzc2V0c0RlY2ltYWxzS2V5AAtCRVRESVZJREVSUwkBC2dldEludEFycmF5AQUOYmV0RGl2aWRlcnNLZXkBGGtleVJlc2VydmF0aW9uQnlBc3NldFN0cgEIYXNzZXRTdHIJAKwCAgIRJFJFU0VSVkVEX0FNT1VOVF8FCGFzc2V0U3RyARhrZXlSZXNlcnZhdGlvbkJ5QXNzZXRJZHgBCGFzc2V0SWR4CQEYa2V5UmVzZXJ2YXRpb25CeUFzc2V0U3RyAQkAkQMCBQZBU1NFVFMFCGFzc2V0SWR4AAtNSU5GRUVXQVZFUwkAaQIJAGgCAAUFBldBVkVTRADoBwAJaWR4QXNzZXRzAAAAC2lkeERlY2ltYWxzAAEAC2lkeERpdmlkZXJzAAIABEJFVDEAAQAEQkVUMgACAARCRVQ0AAQABEJFVDgACAAFQkVUMTQADgAIUkFURU1VTFQAkE4ABFJBVEUAsOoBAARCRVRTCQDMCAIFBEJFVDIFA25pbAAMSWR4R2FtZVN0YXRlAAAAD0lkeFBsYXllckNob2ljZQABABFJZHhQbGF5ZXJQdWJLZXk1OAACABBJZHhTdGFydGVkSGVpZ2h0AAMADElkeFdpbkFtb3VudAAEAApJZHhBc3NldElkAAUADlNUQVRFU1VCTUlUVEVEAglTVUJNSVRURUQACFNUQVRFV09OAgNXT04ACVNUQVRFTE9TVAIETE9TVAEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgUDa2V5AiMga2V5IGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhpcy5zdGF0ZQAJUlNBUFVCTElDCQDbBAEJAQ9nZXRTdHJpbmdPckZhaWwBBQ5SU0FQVUJMSUM2NEtFWQAGU0VSVkVSCQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQUQU0VSVkVSQUREUkVTU0tFWQATUkFORE9SQUNMRVRJTUVGUkFNRQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRBSQU5EVElNRUZSQU1FS0VZAKA4AQhnZXRJbnRPcgIDa2V5B2RlZmF1bHQDCQEJaXNEZWZpbmVkAQkAnwgBBQNrZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEFA2tleQUHZGVmYXVsdAEGc2V0SW50AgNrZXkFdmFsdWUJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQxpbmNyZW1lbnRJbnQBA2tleQkBBnNldEludAIFA2tleQkAZAIJAQhnZXRJbnRPcgIFA2tleQD///////////8BAAEBCWNoYW5nZUludAIDa2V5AmJ5CQEGc2V0SW50AgUDa2V5CQBkAgkBCGdldEludE9yAgUDa2V5AAAFAmJ5AQxhc3NldElkVG9TdHIBDWFzc2V0SWRPclVuaXQEByRtYXRjaDAFDWFzc2V0SWRPclVuaXQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwEOYXNzZXRJZEZyb21TdHIBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEPZ2V0QXNzZXRCYWxhbmNlAQ1hc3NldElkT3JVbml0BAckbWF0Y2gwBQ1hc3NldElkT3JVbml0AwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEB2Fzc2V0SWQFByRtYXRjaDAJAPAHAgUEdGhpcwUHYXNzZXRJZAgJAO8HAQUEdGhpcwlhdmFpbGFibGUBFWluY3JlYXNlUmVzZXJ2ZUFtb3VudAIJd2luQW1vdW50CGFzc2V0SWR4BAphc3NldElkU3RyCQCRAwIFBkFTU0VUUwUIYXNzZXRJZHgEEW5ld1Jlc2VydmVkQW1vdW50CQBkAgkBCGdldEludE9yAgkBGGtleVJlc2VydmF0aW9uQnlBc3NldElkeAEFCGFzc2V0SWR4AAAFCXdpbkFtb3VudAMJAGYCBRFuZXdSZXNlcnZlZEFtb3VudAkBD2dldEFzc2V0QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCmFzc2V0SWRTdHIJAAIBCQCsAgIJAKwCAgIWSW5zdWZmaWNpZW50IGZ1bmRzIG9uIAUJR0FNRV9OQU1FAjMgYWNjb3VudC4gVHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGZvciB5b3VyIHNhZmV0eS4FEW5ld1Jlc2VydmVkQW1vdW50ARZkZWNyZWFzZVJlc2VydmVkQW1vdW50AwZnYW1lSWQIYXNzZXRJZHgJd2luQW1vdW50AwkAZgIAAAkAZQIJAQhnZXRJbnRPcgIJARhrZXlSZXNlcnZhdGlvbkJ5QXNzZXRJZHgBBQhhc3NldElkeAAABQl3aW5BbW91bnQJAAIBCQCsAgIJAKwCAgIISW52YWxpZCAFCUdBTUVfTkFNRQIvIGFjY291bnQgc3RhdGUgLSByZXNlcnZlZCBhbW91bnQgaXMgbGVzcyB0aGFuIDAJAQljaGFuZ2VJbnQCCQEYa2V5UmVzZXJ2YXRpb25CeUFzc2V0SWR4AQUIYXNzZXRJZHgJAQEtAQUJd2luQW1vdW50ARZ2YWxpZGF0ZUFuZEdl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APcDAQUHcnNhU2lnbgUMUkFORE9NX1JBTkdFCQCkAwEJAGQCBQRyYW5kAAEBC2lzUGxheWVyV2luAgxwbGF5ZXJDaG9pY2UKcmFuZENob2lzZQQBcwkAsQIBBQxwbGF5ZXJDaG9pY2UKAQVjaGVjawIBYQF4AwUBYQYDCQBnAgUBcwUBeAkAAAIJAK8CAgkAsAICBQxwbGF5ZXJDaG9pY2UJAGUCBQF4AAEAAQUKcmFuZENob2lzZQcKAAIkbAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAQ9mb3JtYXRHYW1lRGF0YVMKCmdhbWVTdGF0dXMMcGxheWVyQ2hvaWNlDnBsYXllclB1YktleTU4DXN0YXJ0ZWRIZWlnaHQJd2luQW1vdW50CGFzc2V0SWR4C3JhbmRPckVtcHR5BnhDb29yZAZ5Q29vcmQKcHJpemVJbmRleAkAuQkCCQDMCAIFCmdhbWVTdGF0dXMJAMwIAgUMcGxheWVyQ2hvaWNlCQDMCAIFDnBsYXllclB1YktleTU4CQDMCAIFDXN0YXJ0ZWRIZWlnaHQJAMwIAgUJd2luQW1vdW50CQDMCAIFCGFzc2V0SWR4CQDMCAIDCQAAAgULcmFuZE9yRW1wdHkCAAIABQtyYW5kT3JFbXB0eQkAzAgCBQZ4Q29vcmQJAMwIAgUGeUNvb3JkCQDMCAIFCnByaXplSW5kZXgFA25pbAIBXwEOZm9ybWF0R2FtZURhdGEKCmdhbWVTdGF0dXMMcGxheWVyQ2hvaWNlDnBsYXllclB1YktleTU4DXN0YXJ0ZWRIZWlnaHQJd2luQW1vdW50CGFzc2V0SWR4C3JhbmRPckVtcHR5BnhDb29yZAZ5Q29vcmQKcHJpemVJbmRleAkBD2Zvcm1hdEdhbWVEYXRhUwoFCmdhbWVTdGF0dXMFDHBsYXllckNob2ljZQUOcGxheWVyUHViS2V5NTgJAKQDAQUNc3RhcnRlZEhlaWdodAkApAMBBQl3aW5BbW91bnQJAKQDAQUIYXNzZXRJZHgFC3JhbmRPckVtcHR5CQCkAwEFBnhDb29yZAkApAMBBQZ5Q29vcmQJAKQDAQUKcHJpemVJbmRleAEOZmluaXNoR2FtZURhdGEHDG9yaWdHYW1lRGF0YQpnYW1lU3RhdHVzBHJhbmQMd2luQnlUaW1lb3V0BnhDb29yZAZ5Q29vcmQKcHJpemVJbmRleAQOZmluaXNoR2FtZURhdGEJAQ9mb3JtYXRHYW1lRGF0YVMKBQpnYW1lU3RhdHVzCQCRAwIFDG9yaWdHYW1lRGF0YQUPSWR4UGxheWVyQ2hvaWNlCQCRAwIFDG9yaWdHYW1lRGF0YQURSWR4UGxheWVyUHViS2V5NTgJAJEDAgUMb3JpZ0dhbWVEYXRhBRBJZHhTdGFydGVkSGVpZ2h0CQCRAwIFDG9yaWdHYW1lRGF0YQUMSWR4V2luQW1vdW50CQCRAwIFDG9yaWdHYW1lRGF0YQUKSWR4QXNzZXRJZAUEcmFuZAkApAMBBQZ4Q29vcmQJAKQDAQUGeUNvb3JkCQCkAwEFCnByaXplSW5kZXgDBQx3aW5CeVRpbWVvdXQJAKwCAgUOZmluaXNoR2FtZURhdGECCF9USU1FT1VUBQ5maW5pc2hHYW1lRGF0YQEPZXh0cmFjdEdhbWVEYXRhAQZnYW1lSWQJALUJAgQHJG1hdGNoMAkAnQgCBQR0aGlzBQZnYW1lSWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANzdHIFByRtYXRjaDAFA3N0cgkAAgEJAKwCAgkArAICAgZHYW1lOiAFBmdhbWVJZAILIG5vdCBmb3VuZC4CAV8EAWkBDWNvbnN0cnVjdG9yVjEEC3JzYVB1YmxpYzY0C2JlbnpBZGRyZXNzE3JhbmRPcmFjbGVUaW1lRnJhbWUQdG9rZW5zRGVzY3JpcHRvcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDm5vdCBhdXRob3JpemVkCgEIc3BsaXR0ZXICA2FjYwRlbGVtBAd0b2tMaXN0CQC1CQIFBGVsZW0CAToDCQECIT0CCQCQAwEFB3Rva0xpc3QAAwkAAgECFEludmFsaWQgYXNzZXQgcmVjb3JkCQCVCgMJAM0IAggFA2FjYwJfMQkAkQMCBQd0b2tMaXN0BQlpZHhBc3NldHMJAM0IAggFA2FjYwJfMgkAkQMCBQd0b2tMaXN0BQtpZHhEZWNpbWFscwkAzQgCCAUDYWNjAl8zCQCRAwIFB3Rva0xpc3QFC2lkeERpdmlkZXJzBAFyCgACJGwJALwJAgUQdG9rZW5zRGVzY3JpcHRvcgIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIc3BsaXR0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAMwIAgkBC1N0cmluZ0VudHJ5AgUOUlNBUFVCTElDNjRLRVkFC3JzYVB1YmxpYzY0CQDMCAIJAQtTdHJpbmdFbnRyeQIFEFNFUlZFUkFERFJFU1NLRVkFC2JlbnpBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBSQU5EVElNRUZSQU1FS0VZBRNyYW5kT3JhY2xlVGltZUZyYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGFsbG93ZWRBc3NldHNLZXkJALoJAggFAXICXzEFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCBRFhc3NldHNEZWNpbWFsc0tleQkAuQkCCAUBcgJfMgUDU0VQCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmJldERpdmlkZXJzS2V5CQC5CQIIBQFyAl8zBQNTRVAFA25pbAFpAQttYWludGVuYW5jZQEHYmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUGU0VSVkVSCQACAQIObm90IGF1dGhvcml6ZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCmJsb2NrZWRLZXkFB2Jsb2NrZWQFA25pbAFpAQNiZXQBDHBsYXllckNob2ljZQMJAQt2YWx1ZU9yRWxzZQIJAKAIAQUKYmxvY2tlZEtleQcJAAIBAh9HYW1lIGlzIHN0b3BwZWQgZm9yIG1haW50ZW5lbmNlBAZnYW1lSWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAMJAGcCAAEJAJADAQgFAWkIcGF5bWVudHMJAAIBAhsyIHBheW1lbnRzIG11c3QgYmUgYXR0YWNoZWQDCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQZnYW1lSWQJAAIBCQCsAgIJAKwCAgIJQmV0IGZvcjogBQZnYW1lSWQCEiB3YXMgYWxyZWFkeSBtYWRlLgQGYmV0UG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmZlZVBtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABAwkBCWlzRGVmaW5lZAEIBQZmZWVQbXQHYXNzZXRJZAkAAgECLWZlZVBtdCAoMm5kIHBheW1lbnQpIGFzc2V0SWQgbXVzdCBiZSBpbiBXYXZlcwMJAGYCBQtNSU5GRUVXQVZFUwgFBmZlZVBtdAZhbW91bnQJAAIBAitmZWVQbXQgKDJuZCBwYXltZW50KSBtdXN0IGJlID49IDAuMDA1IFdhdmVzBAphc3NldElkU3RyCQEMYXNzZXRJZFRvU3RyAQgFBmJldFBtdAdhc3NldElkBBBpbnRlcm5hbEFzc2V0SWR4CQEWdmFsaWRhdGVBbmRHZXRBc3NldElkeAEFCmFzc2V0SWRTdHIECmNvbW1pc3Npb24IBQZmZWVQbXQGYW1vdW50BAl3aW5BbW91bnQJARp2YWxpZGF0ZUJldEFuZEdldFdpbkFtb3VudAMIBQZiZXRQbXQGYW1vdW50BRBpbnRlcm5hbEFzc2V0SWR4BQxwbGF5ZXJDaG9pY2UEDnBsYXllclB1YktleTU4CQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQQIZ2FtZURhdGEJAQ5mb3JtYXRHYW1lRGF0YQoFDlNUQVRFU1VCTUlUVEVEBQxwbGF5ZXJDaG9pY2UFDnBsYXllclB1YktleTU4BQZoZWlnaHQFCXdpbkFtb3VudAUQaW50ZXJuYWxBc3NldElkeAIAAP///////////wEA////////////AQD///////////8BCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5UmVzZXJ2YXRpb25CeUFzc2V0SWR4AQUQaW50ZXJuYWxBc3NldElkeAkBFWluY3JlYXNlUmVzZXJ2ZUFtb3VudAIFCXdpbkFtb3VudAUQaW50ZXJuYWxBc3NldElkeAkAzAgCCQEMaW5jcmVtZW50SW50AQUPR0FNRVNDT1VOVEVSS0VZCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmdhbWVJZAUIZ2FtZURhdGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGU0VSVkVSBQpjb21taXNzaW9uCAUGZmVlUG10B2Fzc2V0SWQFA25pbAFpAQh3aXRoZHJhdwIGZ2FtZUlkB3JzYVNpZ24ECGdhbWVEYXRhCQEPZXh0cmFjdEdhbWVEYXRhAQUGZ2FtZUlkBAlnYW1lU3RhdGUJAJEDAgUIZ2FtZURhdGEFDElkeEdhbWVTdGF0ZQQMcGxheWVyQ2hvaWNlCQCRAwIFCGdhbWVEYXRhBQ9JZHhQbGF5ZXJDaG9pY2UEDXN0YXJ0ZWRIZWlnaHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhnYW1lRGF0YQUQSWR4U3RhcnRlZEhlaWdodAQJd2luQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZ2FtZURhdGEFDElkeFdpbkFtb3VudAQIYXNzZXRJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhnYW1lRGF0YQUKSWR4QXNzZXRJZAQOcGxheWVyUHViS2V5NTgJAJEDAgUIZ2FtZURhdGEFEUlkeFBsYXllclB1YktleTU4BA1wbGF5ZXJBZGRyZXNzCQCnCAEJANkEAQUOcGxheWVyUHViS2V5NTgDCQECIT0CBQlnYW1lU3RhdGUFDlNUQVRFU1VCTUlUVEVECQACAQIkSW52YWxpZCBnYW1lIHN0YXRlIGZvciBwYXNzZWQgZ2FtZUlkAwkBAiE9AggFAWkGY2FsbGVyBQZTRVJWRVIJAAIBAitSZWd1bGFyIHdpdGhkcmF3IGNhbiBiZSBkb25lIGJ5IHNlcnZlciBvbmx5BAx3aW5CeVRpbWVvdXQJAGYCCQBlAgUGaGVpZ2h0BQ1zdGFydGVkSGVpZ2h0BRNSQU5ET1JBQ0xFVElNRUZSQU1FBApyYW5kQ2hvaWNlAwUMd2luQnlUaW1lb3V0CQCvAgIFDHBsYXllckNob2ljZQABCQESZ2VuZXJhdGVSYW5kQ2hvaWNlAgUGZ2FtZUlkBQdyc2FTaWduBAlwbGF5ZXJXaW4JAQtpc1BsYXllcldpbgIFDHBsYXllckNob2ljZQUKcmFuZENob2ljZQQNbmV3R2FtZVN0YXR1cwMFCXBsYXllcldpbgUIU1RBVEVXT04FCVNUQVRFTE9TVAQGY29vcmRzAwUJcGxheWVyV2luCQDMCAIJAQEtAQUCTTQJAMwIAgkBAS0BBQJNNAUDbmlsCQEJZ2V0Q29vcmRzAgUGZ2FtZUlkBQdyc2FTaWduBApwcml6ZUluZGV4AwUJcGxheWVyV2luAP///////////wEJARJnZXREZWNvcmF0aW9uSW5kZXgCBQZnYW1lSWQFB3JzYVNpZ24EAXgJAGkCCQCRAwIFBmNvb3JkcwAABQJNNAQBeQkAaQIJAJEDAgUGY29vcmRzAAEFAk00BAtuZXdHYW1lRGF0YQkBDmZpbmlzaEdhbWVEYXRhBwUIZ2FtZURhdGEFDW5ld0dhbWVTdGF0dXMFCnJhbmRDaG9pY2UFDHdpbkJ5VGltZW91dAUBeAUBeQUKcHJpemVJbmRleAQKb2xkSGlzdG9yeQkBC3ZhbHVlT3JFbHNlAgkAoggBBQpoaXN0b3J5S2V5AgAECm5ld0hpc3RvcnkJAKwCAgMJAAACBQpvbGRIaXN0b3J5AgACAAkArAICBQpvbGRIaXN0b3J5AgFfCQC5CQIJAMwIAgkApAMBBQF4CQDMCAIJAKQDAQUBeQkAzAgCCQCkAwEFCnByaXplSW5kZXgFA25pbAIBOgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmdhbWVJZAULbmV3R2FtZURhdGEJAMwIAgkBFmRlY3JlYXNlUmVzZXJ2ZWRBbW91bnQDBQZnYW1lSWQFCGFzc2V0SWR4BQl3aW5BbW91bnQFA25pbAMFCXBsYXllcldpbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ1wbGF5ZXJBZGRyZXNzBQl3aW5BbW91bnQJAQ5hc3NldElkRnJvbVN0cgEJAJEDAgUGQVNTRVRTBQhhc3NldElkeAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmhpc3RvcnlLZXkFCm5ld0hpc3RvcnkFA25pbAECdHgBBnZlcmlmeQADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhNUcmFuc2ZlclRyYW5zYWN0aW9uBAN0dHgFByRtYXRjaDAECGFzc2V0SWR4CQEWdmFsaWRhdGVBbmRHZXRBc3NldElkeAEJAQxhc3NldElkVG9TdHIBCAUDdHR4B2Fzc2V0SWQJAGcCCQBlAgkBD2dldEFzc2V0QmFsYW5jZQEIBQN0dHgHYXNzZXRJZAgFA3R0eAZhbW91bnQJAQhnZXRJbnRPcgIJARhrZXlSZXNlcnZhdGlvbkJ5QXNzZXRJZHgBBQhhc3NldElkeAAAAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBANzdHgFByRtYXRjaDAKAQdjaGVja2VyAgNhY2MFYXNzZXQDBQNhY2MJAAACCQEIZ2V0SW50T3ICCQEYa2V5UmVzZXJ2YXRpb25CeUFzc2V0U3RyAQUFYXNzZXQAAAAABwoAAiRsBQZBU1NFVFMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaXR4BQckbWF0Y2gwAwkAAAIIBQNpdHgEZEFwcAUEdGhpcwkAAAIIBQNpdHgIZnVuY3Rpb24CDWNvbnN0cnVjdG9yVjEHBwfI/IwG", "height": 2892549, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DCyTDtDgSRnL2Sgkvcg3ikUrNe6z5QkA6aFRBPiYG9CP Next: none Diff:
OldNewDifferences
282282 let bn = ((aZ[1] + ba[1]) * aS)
283283 let bo = ((ba[2] - aZ[2]) * aT)
284284 let bp = ((aZ[2] + ba[2]) * aS)
285- let bq = (bm + (toInt(sha256((aV + toBytes(bj)))) % (bn - bm)))
286- let br = ((aZ[2] * aT) + (toInt(sha256((aV + toBytes(bq)))) % bo))
287- let bs = ((aZ[2] * aT) - br)
288- let bt = ((ba[2] * aT) - br)
289- let bu = fraction(((aZ[0] * bt) - (ba[0] * bs)), aT, bo)
290- let bv = fraction(((aZ[1] * bt) - (ba[1] * bs)), aT, bo)
291- if ((bu > bq))
292- then [((2 * bm) - bq), ((2 * bp) - br)]
293- else if ((bq > bv))
294- then [((2 * bn) - bq), ((2 * bp) - br)]
295- else [bq, br]
285+ let bq = (toInt(sha256((aV + toBytes(bj)))) % bd[bj])
286+ let br = (bn - bm)
287+ let bs = (bm + (bq % br))
288+ let bt = ((aZ[2] * aT) + fraction(bq, aT, br))
289+ let bu = ((aZ[2] * aT) - bt)
290+ let bv = ((ba[2] * aT) - bt)
291+ let bw = fraction(((aZ[0] * bv) - (ba[0] * bu)), aT, bo)
292+ let bx = fraction(((aZ[1] * bv) - (ba[1] * bu)), aT, bo)
293+ if ((bw > bs))
294+ then [((2 * bm) - bs), ((2 * bp) - bt)]
295+ else if ((bs > bx))
296+ then [((2 * bn) - bs), ((2 * bp) - bt)]
297+ else [bs, bt]
296298 }
297299
298300
299-func bw (aH,aV) = (toInt(sha256((toBytes(aH) + aV))) % g)
301+func by (aH,aV) = (toInt(sha256((toBytes(aH) + aV))) % g)
300302
301303
302-func bx (aH,aV) = {
303- let by = rsaVerify_16Kb(SHA256, toBytes(aH), aV, al)
304- if (!(by))
304+func bz (aH,aV) = {
305+ let bA = rsaVerify_16Kb(SHA256, toBytes(aH), aV, al)
306+ if (!(bA))
305307 then throw("Invalid RSA signature")
306308 else {
307309 let bf = (toInt(sha256(aV)) % e)
310312 }
311313
312314
313-func bz (aN,bA) = {
314- let bB = size(aN)
315+func bB (aN,bC) = {
316+ let bD = size(aN)
315317 func bg (x,aQ) = if (x)
316318 then true
317- else if ((bB >= aQ))
318- then (take(drop(aN, (aQ - 1)), 1) == bA)
319+ else if ((bD >= aQ))
320+ then (take(drop(aN, (aQ - 1)), 1) == bC)
319321 else false
320322
321323 let B = [1, 2, 3, 4, 5]
333335 }
334336
335337
336-func bC (bD,aN,bE,bF,aE,O,bG,bH,bI,bJ) = makeString([bD, aN, bE, bF, aE, O, if ((bG == ""))
338+func bE (bF,aN,bG,bH,aE,O,bI,bJ,bK,bL) = makeString([bF, aN, bG, bH, aE, O, if ((bI == ""))
337339 then ""
338- else bG, bH, bI, bJ], "_")
340+ else bI, bJ, bK, bL], "_")
339341
340342
341-func bK (bD,aN,bE,bF,aE,O,bG,bH,bI,bJ) = bC(bD, aN, bE, toString(bF), toString(aE), toString(O), bG, toString(bH), toString(bI), toString(bJ))
343+func bM (bF,aN,bG,bH,aE,O,bI,bJ,bK,bL) = bE(bF, aN, bG, toString(bH), toString(aE), toString(O), bI, toString(bJ), toString(bK), toString(bL))
342344
343345
344-func bL (bM,bD,bf,bN,bH,bI,bJ) = {
345- let bL = bC(bD, bM[ac], bM[ad], bM[ae], bM[af], bM[ag], bf, toString(bH), toString(bI), toString(bJ))
346- if (bN)
347- then (bL + "_TIMEOUT")
348- else bL
346+func bN (bO,bF,bf,bP,bJ,bK,bL) = {
347+ let bN = bE(bF, bO[ac], bO[ad], bO[ae], bO[af], bO[ag], bf, toString(bJ), toString(bK), toString(bL))
348+ if (bP)
349+ then (bN + "_TIMEOUT")
350+ else bN
349351 }
350352
351353
352-func bO (aH) = split({
354+func bQ (aH) = split({
353355 let ax = getString(this, aH)
354356 if ($isInstanceOf(ax, "String"))
355357 then {
356- let bP = ax
357- bP
358+ let bR = ax
359+ bR
358360 }
359361 else throw((("Game: " + aH) + " not found."))
360362 }, "_")
361363
362364
363365 @Callable(aY)
364-func constructorV1 (bQ,bR,bS,bT) = if ((aY.caller != this))
366+func constructorV1 (bS,bT,bU,bV) = if ((aY.caller != this))
365367 then throw("not authorized")
366368 else {
367- func bU (z,bV) = {
368- let bW = split(bV, ":")
369- if ((size(bW) != 3))
369+ func bW (z,bX) = {
370+ let bY = split(bX, ":")
371+ if ((size(bY) != 3))
370372 then throw("Invalid asset record")
371- else $Tuple3((z._1 :+ bW[Q]), (z._2 :+ bW[R]), (z._3 :+ bW[S]))
373+ else $Tuple3((z._1 :+ bY[Q]), (z._2 :+ bY[R]), (z._3 :+ bY[S]))
372374 }
373375
374- let bX = {
375- let B = split_4C(bT, "_")
376+ let bZ = {
377+ let B = split_4C(bV, "_")
376378 let C = size(B)
377379 let D = $Tuple3(nil, nil, nil)
378380 func E (F,G) = if ((G >= C))
379381 then F
380- else bU(F, B[G])
382+ else bW(F, B[G])
381383
382384 func H (F,G) = if ((G >= C))
383385 then F
385387
386388 H(E(E(E(E(E(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
387389 }
388-[StringEntry(p, bQ), StringEntry(q, bR), IntegerEntry(r, bS), StringEntry(m, makeString_2C(bX._1, a)), StringEntry(n, makeString(bX._2, a)), StringEntry(o, makeString(bX._3, a))]
390+[StringEntry(p, bS), StringEntry(q, bT), IntegerEntry(r, bU), StringEntry(m, makeString_2C(bZ._1, a)), StringEntry(n, makeString(bZ._2, a)), StringEntry(o, makeString(bZ._3, a))]
389391 }
390392
391393
392394
393395 @Callable(aY)
394-func maintenance (bY) = if ((aY.caller != am))
396+func maintenance (ca) = if ((aY.caller != am))
395397 then throw("not authorized")
396- else [BooleanEntry(t, bY)]
398+ else [BooleanEntry(t, ca)]
397399
398400
399401
407409 else if (isDefined(getString(this, aH)))
408410 then throw((("Bet for: " + aH) + " was already made."))
409411 else {
410- let bZ = value(aY.payments[0])
411- let ca = value(aY.payments[1])
412- if (isDefined(ca.assetId))
412+ let cb = value(aY.payments[0])
413+ let cc = value(aY.payments[1])
414+ if (isDefined(cc.assetId))
413415 then throw("feePmt (2nd payment) assetId must be in Waves")
414- else if ((P > ca.amount))
416+ else if ((P > cc.amount))
415417 then throw("feePmt (2nd payment) must be >= 0.005 Waves")
416418 else {
417- let aA = av(bZ.assetId)
419+ let aA = av(cb.assetId)
418420 let aM = aI(aA)
419- let cb = ca.amount
420- let aE = aK(bZ.amount, aM, aN)
421- let bE = toBase58String(aY.callerPublicKey)
422- let cc = bK(ah, aN, bE, height, aE, aM, "", -1, -1, -1)
423-[IntegerEntry(N(aM), aD(aE, aM)), as(s), StringEntry(aH, cc), ScriptTransfer(am, cb, ca.assetId)]
421+ let cd = cc.amount
422+ let aE = aK(cb.amount, aM, aN)
423+ let bG = toBase58String(aY.callerPublicKey)
424+ let ce = bM(ah, aN, bG, height, aE, aM, "", -1, -1, -1)
425+[IntegerEntry(N(aM), aD(aE, aM)), as(s), StringEntry(aH, ce), ScriptTransfer(am, cd, cc.assetId)]
424426 }
425427 }
426428 }
429431
430432 @Callable(aY)
431433 func withdraw (aH,aV) = {
432- let cc = bO(aH)
433- let cd = cc[ab]
434- let aN = cc[ac]
435- let bF = parseIntValue(cc[ae])
436- let aE = parseIntValue(cc[af])
437- let O = parseIntValue(cc[ag])
438- let bE = cc[ad]
439- let ce = addressFromPublicKey(fromBase58String(bE))
440- if ((cd != ah))
434+ let ce = bQ(aH)
435+ let cf = ce[ab]
436+ let aN = ce[ac]
437+ let bH = parseIntValue(ce[ae])
438+ let aE = parseIntValue(ce[af])
439+ let O = parseIntValue(ce[ag])
440+ let bG = ce[ad]
441+ let cg = addressFromPublicKey(fromBase58String(bG))
442+ if ((cf != ah))
441443 then throw("Invalid game state for passed gameId")
442444 else if ((aY.caller != am))
443445 then throw("Regular withdraw can be done by server only")
444446 else {
445- let bN = ((height - bF) > an)
446- let cf = if (bN)
447+ let bP = ((height - bH) > an)
448+ let ch = if (bP)
447449 then take(aN, 1)
448- else bx(aH, aV)
449- let cg = bz(aN, cf)
450- let ch = if (cg)
450+ else bz(aH, aV)
451+ let ci = bB(aN, ch)
452+ let cj = if (ci)
451453 then ai
452454 else aj
453- let ci = if (cg)
455+ let ck = if (ci)
454456 then [-(aT), -(aT)]
455457 else aU(aH, aV)
456- let bJ = if (cg)
458+ let bL = if (ci)
457459 then -1
458- else bw(aH, aV)
459- let aQ = (ci[0] / aT)
460- let cj = (ci[1] / aT)
461- let ck = bL(cc, ch, cf, bN, aQ, cj, bJ)
462- let cl = valueOrElse(getString(v), "")
463- let cm = ((if ((cl == ""))
460+ else by(aH, aV)
461+ let aQ = (ck[0] / aT)
462+ let cl = (ck[1] / aT)
463+ let cm = bN(ce, cj, ch, bP, aQ, cl, bL)
464+ let cn = valueOrElse(getString(v), "")
465+ let co = ((if ((cn == ""))
464466 then ""
465- else (cl + "_")) + makeString([toString(aQ), toString(cj), toString(bJ)], ":"))
466- ([StringEntry(aH, ck), aG(aH, O, aE)] ++ (if (cg)
467- then [ScriptTransfer(ce, aE, az(I[O]))]
468- else [StringEntry(v, cm)]))
467+ else (cn + "_")) + makeString([toString(aQ), toString(cl), toString(bL)], ":"))
468+ ([StringEntry(aH, cm), aG(aH, O, aE)] ++ (if (ci)
469+ then [ScriptTransfer(cg, aE, az(I[O]))]
470+ else [StringEntry(v, co)]))
469471 }
470472 }
471473
472474
473-@Verifier(cn)
474-func co () = if (sigVerify(cn.bodyBytes, cn.proofs[0], cn.senderPublicKey))
475+@Verifier(cp)
476+func cq () = if (sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey))
475477 then {
476- let ax = cn
478+ let ax = cp
477479 if ($isInstanceOf(ax, "TransferTransaction"))
478480 then {
479- let cp = ax
480- let O = aI(av(cp.assetId))
481- ((aB(cp.assetId) - cp.amount) >= ao(N(O), 0))
481+ let cr = ax
482+ let O = aI(av(cr.assetId))
483+ ((aB(cr.assetId) - cr.amount) >= ao(N(O), 0))
482484 }
483485 else if ($isInstanceOf(ax, "SetScriptTransaction"))
484486 then {
485- let cq = ax
486- func cr (z,cs) = if (z)
487- then (ao(L(cs), 0) == 0)
487+ let cs = ax
488+ func ct (z,cu) = if (z)
489+ then (ao(L(cu), 0) == 0)
488490 else false
489491
490492 let B = I
492494 let D = true
493495 func E (F,G) = if ((G >= C))
494496 then F
495- else cr(F, B[G])
497+ else ct(F, B[G])
496498
497499 func H (F,G) = if ((G >= C))
498500 then F
502504 }
503505 else if ($isInstanceOf(ax, "InvokeScriptTransaction"))
504506 then {
505- let ct = ax
506- if ((ct.dApp == this))
507- then (ct.function == "constructorV1")
507+ let cv = ax
508+ if ((cv.dApp == this))
509+ then (cv.function == "constructorV1")
508510 else false
509511 }
510512 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = base58'WAVES'
77
88 let c = 100000000
99
1010 let d = "Xmas Tree"
1111
1212 let e = 5
1313
1414 let f = 1
1515
1616 let g = 28
1717
1818 func h (i,j) = valueOrErrorMessage(getString(i, j), makeString(["mandatory ", toString(i), ".", j, " is not defined"], ""))
1919
2020
2121 func k (i,j) = valueOrErrorMessage(getInteger(i, j), makeString(["mandatory ", toString(i), ".", j, " is not defined"], ""))
2222
2323
2424 func l (i,j) = valueOrErrorMessage(getBoolean(i, j), makeString(["mandatory ", toString(i), ".", j, " is not defined"], ""))
2525
2626
2727 let m = "%s%s__cfg__allowedAssets"
2828
2929 let n = "%s%s__cfg__assetsDecimals"
3030
3131 let o = "%s%s__cfg__assetsBetDividers"
3232
3333 let p = "%s%s__cfg__rsaPublic64"
3434
3535 let q = "%s%s__cfg__benzAddress"
3636
3737 let r = "%s%s__cfg__withdrawTimeFrame"
3838
3939 let s = "%s%s__runtime__gameNum"
4040
4141 let t = "%s%s__runtime__contractIsBlocked"
4242
4343 let u = "%s%s__runtime__reservedAmounts"
4444
4545 let v = "%s%s__runtime__decorationsHistory"
4646
4747 func w (j) = {
4848 let x = h(this, j)
4949 func y (z,A) = (z :+ parseIntValue(A))
5050
5151 let B = split(x, a)
5252 let C = size(B)
5353 let D = nil
5454 func E (F,G) = if ((G >= C))
5555 then F
5656 else y(F, B[G])
5757
5858 func H (F,G) = if ((G >= C))
5959 then F
6060 else throw("List size exceeds 10")
6161
6262 H(E(E(E(E(E(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
6363 }
6464
6565
6666 let I = split(h(this, m), a)
6767
6868 let J = w(n)
6969
7070 let K = w(o)
7171
7272 func L (M) = ("$RESERVED_AMOUNT_" + M)
7373
7474
7575 func N (O) = L(I[O])
7676
7777
7878 let P = ((5 * c) / 1000)
7979
8080 let Q = 0
8181
8282 let R = 1
8383
8484 let S = 2
8585
8686 let T = 1
8787
8888 let U = 2
8989
9090 let V = 4
9191
9292 let W = 8
9393
9494 let X = 14
9595
9696 let Y = 10000
9797
9898 let Z = 30000
9999
100100 let aa = [U]
101101
102102 let ab = 0
103103
104104 let ac = 1
105105
106106 let ad = 2
107107
108108 let ae = 3
109109
110110 let af = 4
111111
112112 let ag = 5
113113
114114 let ah = "SUBMITTED"
115115
116116 let ai = "WON"
117117
118118 let aj = "LOST"
119119
120120 func ak (j) = valueOrErrorMessage(getString(this, j), (j + " key is not specified in this.state"))
121121
122122
123123 let al = fromBase64String(ak(p))
124124
125125 let am = addressFromStringValue(ak(q))
126126
127127 let an = valueOrElse(getInteger(this, r), 7200)
128128
129129 func ao (j,ap) = if (isDefined(getInteger(j)))
130130 then getIntegerValue(j)
131131 else ap
132132
133133
134134 func aq (j,ar) = IntegerEntry(j, ar)
135135
136136
137137 func as (j) = aq(j, (ao(j, -1) + 1))
138138
139139
140140 func at (j,au) = aq(j, (ao(j, 0) + au))
141141
142142
143143 func av (aw) = {
144144 let ax = aw
145145 if ($isInstanceOf(ax, "ByteVector"))
146146 then {
147147 let ay = ax
148148 toBase58String(ay)
149149 }
150150 else "WAVES"
151151 }
152152
153153
154154 func az (aA) = if ((aA == "WAVES"))
155155 then unit
156156 else fromBase58String(aA)
157157
158158
159159 func aB (aw) = {
160160 let ax = aw
161161 if ($isInstanceOf(ax, "ByteVector"))
162162 then {
163163 let aC = ax
164164 assetBalance(this, aC)
165165 }
166166 else wavesBalance(this).available
167167 }
168168
169169
170170 func aD (aE,O) = {
171171 let aA = I[O]
172172 let aF = (ao(N(O), 0) + aE)
173173 if ((aF > aB(az(aA))))
174174 then throw((("Insufficient funds on " + d) + " account. Transaction was rejected for your safety."))
175175 else aF
176176 }
177177
178178
179179 func aG (aH,O,aE) = if ((0 > (ao(N(O), 0) - aE)))
180180 then throw((("Invalid " + d) + " account state - reserved amount is less than 0"))
181181 else at(N(O), -(aE))
182182
183183
184184 func aI (aA) = {
185185 let aJ = indexOf(I, aA)
186186 if (!(isDefined(aJ)))
187187 then throw("Invalid payment asset")
188188 else value(aJ)
189189 }
190190
191191
192192 func aK (aL,aM,aN) = {
193193 let aO = size(aN)
194194 func aP (x,aQ) = if (x)
195195 then true
196196 else (aL == ((aQ * J[aM]) / K[aM]))
197197
198198 if (!({
199199 let B = aa
200200 let C = size(B)
201201 let D = false
202202 func E (F,G) = if ((G >= C))
203203 then F
204204 else aP(F, B[G])
205205
206206 func H (F,G) = if ((G >= C))
207207 then F
208208 else throw("List size exceeds 5")
209209
210210 H(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5)
211211 }))
212212 then throw("Bet amount is not valid")
213213 else if ((parseInt(aN) == unit))
214214 then throw("Invalid player's choice")
215215 else if ((aO != f))
216216 then throw("Invalid length of player's choice")
217217 else fraction(aL, Z, Y)
218218 }
219219
220220
221221 let aR = [[491, 506, 44], [455, 542, 120], [404, 596, 166], [441, 556, 177], [387, 620, 232], [423, 620, 232], [410, 592, 244], [329, 665, 321], [370, 666, 337], [355, 645, 349], [313, 692, 384], [289, 682, 405], [324, 657, 461], [450, 575, 525], [505, 505, 532]]
222222
223223 let aS = 5000
224224
225225 let aT = 10000
226226
227227 func aU (aH,aV) = {
228228 func aW (z,aX) = {
229229 let aY = z._3
230230 if ((aY == 14))
231231 then z
232232 else {
233233 let aZ = aR[aY]
234234 let ba = aR[(aY + 1)]
235235 let bb = (((((aZ[1] - aZ[0]) + ba[1]) - ba[0]) * (ba[2] - aZ[2])) * 5000)
236236 $Tuple3((z._1 :+ bb), (z._2 + bb), (z._3 + 1))
237237 }
238238 }
239239
240240 let bc = {
241241 let B = aR
242242 let C = size(B)
243243 let D = $Tuple3(nil, 0, 0)
244244 func E (F,G) = if ((G >= C))
245245 then F
246246 else aW(F, B[G])
247247
248248 func H (F,G) = if ((G >= C))
249249 then F
250250 else throw("List size exceeds 15")
251251
252252 H(E(E(E(E(E(E(E(E(E(E(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
253253 }
254254 let bd = bc._1
255255 let be = bc._2
256256 let bf = (toInt(sha256((aV + toBytes(aH)))) % be)
257257 func bg (z,bh) = {
258258 let aY = z._1
259259 let bi = (z._2 + bh)
260260 $Tuple3((aY + 1), bi, if (if ((0 > z._3))
261261 then (bi > bf)
262262 else false)
263263 then aY
264264 else z._3)
265265 }
266266
267267 let bj = ( let B = bd
268268 let C = size(B)
269269 let D = $Tuple3(0, 0, -1)
270270 func bk (F,G) = if ((G >= C))
271271 then F
272272 else bg(F, B[G])
273273
274274 func bl (F,G) = if ((G >= C))
275275 then F
276276 else throw("List size exceeds 14")
277277
278278 bl(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14))._3
279279 let aZ = aR[bj]
280280 let ba = aR[(bj + 1)]
281281 let bm = ((aZ[0] + ba[0]) * aS)
282282 let bn = ((aZ[1] + ba[1]) * aS)
283283 let bo = ((ba[2] - aZ[2]) * aT)
284284 let bp = ((aZ[2] + ba[2]) * aS)
285- let bq = (bm + (toInt(sha256((aV + toBytes(bj)))) % (bn - bm)))
286- let br = ((aZ[2] * aT) + (toInt(sha256((aV + toBytes(bq)))) % bo))
287- let bs = ((aZ[2] * aT) - br)
288- let bt = ((ba[2] * aT) - br)
289- let bu = fraction(((aZ[0] * bt) - (ba[0] * bs)), aT, bo)
290- let bv = fraction(((aZ[1] * bt) - (ba[1] * bs)), aT, bo)
291- if ((bu > bq))
292- then [((2 * bm) - bq), ((2 * bp) - br)]
293- else if ((bq > bv))
294- then [((2 * bn) - bq), ((2 * bp) - br)]
295- else [bq, br]
285+ let bq = (toInt(sha256((aV + toBytes(bj)))) % bd[bj])
286+ let br = (bn - bm)
287+ let bs = (bm + (bq % br))
288+ let bt = ((aZ[2] * aT) + fraction(bq, aT, br))
289+ let bu = ((aZ[2] * aT) - bt)
290+ let bv = ((ba[2] * aT) - bt)
291+ let bw = fraction(((aZ[0] * bv) - (ba[0] * bu)), aT, bo)
292+ let bx = fraction(((aZ[1] * bv) - (ba[1] * bu)), aT, bo)
293+ if ((bw > bs))
294+ then [((2 * bm) - bs), ((2 * bp) - bt)]
295+ else if ((bs > bx))
296+ then [((2 * bn) - bs), ((2 * bp) - bt)]
297+ else [bs, bt]
296298 }
297299
298300
299-func bw (aH,aV) = (toInt(sha256((toBytes(aH) + aV))) % g)
301+func by (aH,aV) = (toInt(sha256((toBytes(aH) + aV))) % g)
300302
301303
302-func bx (aH,aV) = {
303- let by = rsaVerify_16Kb(SHA256, toBytes(aH), aV, al)
304- if (!(by))
304+func bz (aH,aV) = {
305+ let bA = rsaVerify_16Kb(SHA256, toBytes(aH), aV, al)
306+ if (!(bA))
305307 then throw("Invalid RSA signature")
306308 else {
307309 let bf = (toInt(sha256(aV)) % e)
308310 toString((bf + 1))
309311 }
310312 }
311313
312314
313-func bz (aN,bA) = {
314- let bB = size(aN)
315+func bB (aN,bC) = {
316+ let bD = size(aN)
315317 func bg (x,aQ) = if (x)
316318 then true
317- else if ((bB >= aQ))
318- then (take(drop(aN, (aQ - 1)), 1) == bA)
319+ else if ((bD >= aQ))
320+ then (take(drop(aN, (aQ - 1)), 1) == bC)
319321 else false
320322
321323 let B = [1, 2, 3, 4, 5]
322324 let C = size(B)
323325 let D = false
324326 func E (F,G) = if ((G >= C))
325327 then F
326328 else bg(F, B[G])
327329
328330 func H (F,G) = if ((G >= C))
329331 then F
330332 else throw("List size exceeds 5")
331333
332334 H(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5)
333335 }
334336
335337
336-func bC (bD,aN,bE,bF,aE,O,bG,bH,bI,bJ) = makeString([bD, aN, bE, bF, aE, O, if ((bG == ""))
338+func bE (bF,aN,bG,bH,aE,O,bI,bJ,bK,bL) = makeString([bF, aN, bG, bH, aE, O, if ((bI == ""))
337339 then ""
338- else bG, bH, bI, bJ], "_")
340+ else bI, bJ, bK, bL], "_")
339341
340342
341-func bK (bD,aN,bE,bF,aE,O,bG,bH,bI,bJ) = bC(bD, aN, bE, toString(bF), toString(aE), toString(O), bG, toString(bH), toString(bI), toString(bJ))
343+func bM (bF,aN,bG,bH,aE,O,bI,bJ,bK,bL) = bE(bF, aN, bG, toString(bH), toString(aE), toString(O), bI, toString(bJ), toString(bK), toString(bL))
342344
343345
344-func bL (bM,bD,bf,bN,bH,bI,bJ) = {
345- let bL = bC(bD, bM[ac], bM[ad], bM[ae], bM[af], bM[ag], bf, toString(bH), toString(bI), toString(bJ))
346- if (bN)
347- then (bL + "_TIMEOUT")
348- else bL
346+func bN (bO,bF,bf,bP,bJ,bK,bL) = {
347+ let bN = bE(bF, bO[ac], bO[ad], bO[ae], bO[af], bO[ag], bf, toString(bJ), toString(bK), toString(bL))
348+ if (bP)
349+ then (bN + "_TIMEOUT")
350+ else bN
349351 }
350352
351353
352-func bO (aH) = split({
354+func bQ (aH) = split({
353355 let ax = getString(this, aH)
354356 if ($isInstanceOf(ax, "String"))
355357 then {
356- let bP = ax
357- bP
358+ let bR = ax
359+ bR
358360 }
359361 else throw((("Game: " + aH) + " not found."))
360362 }, "_")
361363
362364
363365 @Callable(aY)
364-func constructorV1 (bQ,bR,bS,bT) = if ((aY.caller != this))
366+func constructorV1 (bS,bT,bU,bV) = if ((aY.caller != this))
365367 then throw("not authorized")
366368 else {
367- func bU (z,bV) = {
368- let bW = split(bV, ":")
369- if ((size(bW) != 3))
369+ func bW (z,bX) = {
370+ let bY = split(bX, ":")
371+ if ((size(bY) != 3))
370372 then throw("Invalid asset record")
371- else $Tuple3((z._1 :+ bW[Q]), (z._2 :+ bW[R]), (z._3 :+ bW[S]))
373+ else $Tuple3((z._1 :+ bY[Q]), (z._2 :+ bY[R]), (z._3 :+ bY[S]))
372374 }
373375
374- let bX = {
375- let B = split_4C(bT, "_")
376+ let bZ = {
377+ let B = split_4C(bV, "_")
376378 let C = size(B)
377379 let D = $Tuple3(nil, nil, nil)
378380 func E (F,G) = if ((G >= C))
379381 then F
380- else bU(F, B[G])
382+ else bW(F, B[G])
381383
382384 func H (F,G) = if ((G >= C))
383385 then F
384386 else throw("List size exceeds 10")
385387
386388 H(E(E(E(E(E(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
387389 }
388-[StringEntry(p, bQ), StringEntry(q, bR), IntegerEntry(r, bS), StringEntry(m, makeString_2C(bX._1, a)), StringEntry(n, makeString(bX._2, a)), StringEntry(o, makeString(bX._3, a))]
390+[StringEntry(p, bS), StringEntry(q, bT), IntegerEntry(r, bU), StringEntry(m, makeString_2C(bZ._1, a)), StringEntry(n, makeString(bZ._2, a)), StringEntry(o, makeString(bZ._3, a))]
389391 }
390392
391393
392394
393395 @Callable(aY)
394-func maintenance (bY) = if ((aY.caller != am))
396+func maintenance (ca) = if ((aY.caller != am))
395397 then throw("not authorized")
396- else [BooleanEntry(t, bY)]
398+ else [BooleanEntry(t, ca)]
397399
398400
399401
400402 @Callable(aY)
401403 func bet (aN) = if (valueOrElse(getBoolean(t), false))
402404 then throw("Game is stopped for maintenence")
403405 else {
404406 let aH = toBase58String(aY.transactionId)
405407 if ((1 >= size(aY.payments)))
406408 then throw("2 payments must be attached")
407409 else if (isDefined(getString(this, aH)))
408410 then throw((("Bet for: " + aH) + " was already made."))
409411 else {
410- let bZ = value(aY.payments[0])
411- let ca = value(aY.payments[1])
412- if (isDefined(ca.assetId))
412+ let cb = value(aY.payments[0])
413+ let cc = value(aY.payments[1])
414+ if (isDefined(cc.assetId))
413415 then throw("feePmt (2nd payment) assetId must be in Waves")
414- else if ((P > ca.amount))
416+ else if ((P > cc.amount))
415417 then throw("feePmt (2nd payment) must be >= 0.005 Waves")
416418 else {
417- let aA = av(bZ.assetId)
419+ let aA = av(cb.assetId)
418420 let aM = aI(aA)
419- let cb = ca.amount
420- let aE = aK(bZ.amount, aM, aN)
421- let bE = toBase58String(aY.callerPublicKey)
422- let cc = bK(ah, aN, bE, height, aE, aM, "", -1, -1, -1)
423-[IntegerEntry(N(aM), aD(aE, aM)), as(s), StringEntry(aH, cc), ScriptTransfer(am, cb, ca.assetId)]
421+ let cd = cc.amount
422+ let aE = aK(cb.amount, aM, aN)
423+ let bG = toBase58String(aY.callerPublicKey)
424+ let ce = bM(ah, aN, bG, height, aE, aM, "", -1, -1, -1)
425+[IntegerEntry(N(aM), aD(aE, aM)), as(s), StringEntry(aH, ce), ScriptTransfer(am, cd, cc.assetId)]
424426 }
425427 }
426428 }
427429
428430
429431
430432 @Callable(aY)
431433 func withdraw (aH,aV) = {
432- let cc = bO(aH)
433- let cd = cc[ab]
434- let aN = cc[ac]
435- let bF = parseIntValue(cc[ae])
436- let aE = parseIntValue(cc[af])
437- let O = parseIntValue(cc[ag])
438- let bE = cc[ad]
439- let ce = addressFromPublicKey(fromBase58String(bE))
440- if ((cd != ah))
434+ let ce = bQ(aH)
435+ let cf = ce[ab]
436+ let aN = ce[ac]
437+ let bH = parseIntValue(ce[ae])
438+ let aE = parseIntValue(ce[af])
439+ let O = parseIntValue(ce[ag])
440+ let bG = ce[ad]
441+ let cg = addressFromPublicKey(fromBase58String(bG))
442+ if ((cf != ah))
441443 then throw("Invalid game state for passed gameId")
442444 else if ((aY.caller != am))
443445 then throw("Regular withdraw can be done by server only")
444446 else {
445- let bN = ((height - bF) > an)
446- let cf = if (bN)
447+ let bP = ((height - bH) > an)
448+ let ch = if (bP)
447449 then take(aN, 1)
448- else bx(aH, aV)
449- let cg = bz(aN, cf)
450- let ch = if (cg)
450+ else bz(aH, aV)
451+ let ci = bB(aN, ch)
452+ let cj = if (ci)
451453 then ai
452454 else aj
453- let ci = if (cg)
455+ let ck = if (ci)
454456 then [-(aT), -(aT)]
455457 else aU(aH, aV)
456- let bJ = if (cg)
458+ let bL = if (ci)
457459 then -1
458- else bw(aH, aV)
459- let aQ = (ci[0] / aT)
460- let cj = (ci[1] / aT)
461- let ck = bL(cc, ch, cf, bN, aQ, cj, bJ)
462- let cl = valueOrElse(getString(v), "")
463- let cm = ((if ((cl == ""))
460+ else by(aH, aV)
461+ let aQ = (ck[0] / aT)
462+ let cl = (ck[1] / aT)
463+ let cm = bN(ce, cj, ch, bP, aQ, cl, bL)
464+ let cn = valueOrElse(getString(v), "")
465+ let co = ((if ((cn == ""))
464466 then ""
465- else (cl + "_")) + makeString([toString(aQ), toString(cj), toString(bJ)], ":"))
466- ([StringEntry(aH, ck), aG(aH, O, aE)] ++ (if (cg)
467- then [ScriptTransfer(ce, aE, az(I[O]))]
468- else [StringEntry(v, cm)]))
467+ else (cn + "_")) + makeString([toString(aQ), toString(cl), toString(bL)], ":"))
468+ ([StringEntry(aH, cm), aG(aH, O, aE)] ++ (if (ci)
469+ then [ScriptTransfer(cg, aE, az(I[O]))]
470+ else [StringEntry(v, co)]))
469471 }
470472 }
471473
472474
473-@Verifier(cn)
474-func co () = if (sigVerify(cn.bodyBytes, cn.proofs[0], cn.senderPublicKey))
475+@Verifier(cp)
476+func cq () = if (sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey))
475477 then {
476- let ax = cn
478+ let ax = cp
477479 if ($isInstanceOf(ax, "TransferTransaction"))
478480 then {
479- let cp = ax
480- let O = aI(av(cp.assetId))
481- ((aB(cp.assetId) - cp.amount) >= ao(N(O), 0))
481+ let cr = ax
482+ let O = aI(av(cr.assetId))
483+ ((aB(cr.assetId) - cr.amount) >= ao(N(O), 0))
482484 }
483485 else if ($isInstanceOf(ax, "SetScriptTransaction"))
484486 then {
485- let cq = ax
486- func cr (z,cs) = if (z)
487- then (ao(L(cs), 0) == 0)
487+ let cs = ax
488+ func ct (z,cu) = if (z)
489+ then (ao(L(cu), 0) == 0)
488490 else false
489491
490492 let B = I
491493 let C = size(B)
492494 let D = true
493495 func E (F,G) = if ((G >= C))
494496 then F
495- else cr(F, B[G])
497+ else ct(F, B[G])
496498
497499 func H (F,G) = if ((G >= C))
498500 then F
499501 else throw("List size exceeds 10")
500502
501503 H(E(E(E(E(E(E(E(E(E(E(D, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
502504 }
503505 else if ($isInstanceOf(ax, "InvokeScriptTransaction"))
504506 then {
505- let ct = ax
506- if ((ct.dApp == this))
507- then (ct.function == "constructorV1")
507+ let cv = ax
508+ if ((cv.dApp == this))
509+ then (cv.function == "constructorV1")
508510 else false
509511 }
510512 else false
511513 }
512514 else false
513515

github/deemru/w8io/873ac7e 
92.43 ms