tx · 8TE1aBaYJwLFC6nSom7wGrcgEQBwxiAqLye4bmfJa5L2 3Mungn3ygy3DzpbDUKPbJQaeNKfQHu9fkK8: -0.01200000 Waves 2022.11.10 16:49 [2311130] smart account 3Mungn3ygy3DzpbDUKPbJQaeNKfQHu9fkK8 > SELF 0.00000000 Waves
{ "type": 13, "id": "8TE1aBaYJwLFC6nSom7wGrcgEQBwxiAqLye4bmfJa5L2", "fee": 1200000, "feeAssetId": null, "timestamp": 1668088140269, "version": 2, "chainId": 84, "sender": "3Mungn3ygy3DzpbDUKPbJQaeNKfQHu9fkK8", "senderPublicKey": "6L7iBerXuPa5E74WCM6fLSB2VM1bMG9jgASH8tu9orHN", "proofs": [ "2d6KmadDDF41LKNsWX1woASC1xsrVXL9fGPfA3kmYx6eoRj2Hc6fSwJckizRYGfpq1NCXAbcJWTpREfYBS8BmbPa" ], "script": "base64:BgIfCAISBgoEAQEICBIDCgEBEgQKAgEIEgQKAhEYEgASACsAD0dBTUVfVFlQRV9HUk9VUAIFR3JvdXAAEUdBTUVfVFlQRV9QTEFUT0ZGAghQbGF5LW9mZgAKR0FNRV9UWVBFUwkAzAgCBQ9HQU1FX1RZUEVfR1JPVVAJAMwIAgURR0FNRV9UWVBFX1BMQVRPRkYFA25pbAAEVVNEVAEgbySjyqsw3FIpmOgsYVruWn8jTcItdbvpnapU4NLQB8EAB01JTl9CRVQAwIQ9AAhPTkVfSE9VUgkAaAIJAGgCAAUAPADoBwARTU9ORVlfQk9YX0FERFJFRVMJAQdBZGRyZXNzAQEaAVSxYgy7BRV2F+zuKtUZtXyHmoiep9yqU84AB0JFVF9GRUUA9AMACUZFRV9TQ0FMRQCQTgAHa0FjdGl2ZQIGYWN0aXZlAAtrQWN0aXZlR2xvYgIUYWN0aXZlX2FsbF9jb250cmFjdHMABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UADWtHYW1lU3RyYVRpbWUCDl9zdGFydEdhbWVUaW1lAAlrR2FtZVR5cGUCDl9zdGFydEdhbWVUaW1lAAtrTGFzdEdhbWVJZAIMbGFzdF9nYW1lX2lkAAprVG90YWxCZXRzAgpfdG90YWxCZXRzAAdrVG9XaW5BAgdfdG9XaW5BAAdrVG9XaW5CAgdfdG9XaW5BAAdrT25EcmF3Agdfb25EcmF3AAtrR2FtZVJlc3VsdAIHX3Jlc3VsdAAFa0JhbmsCBV9iYW5rAAprRmluYWxUaW1lAg1fZmluYWxUaW1l4oCdABFrVG90YWxCZXRzRm9yVHlwZQIRX3RvdGFsQmV0c0ZvclR5cGUACGtVc2VyQmV0AghfdXNlckJldAAKa1VzZXJSZWZJZAIGX3JlZklkAAxrVXNlckNsYWltZWQCCF9jbGFpbWVkAA1rQWRtaW5QdWJLZXkxAgthZG1pbl9wdWJfMQANa0FkbWluUHViS2V5MgILYWRtaW5fcHViXzIADWtBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMABmFjdGl2ZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAENZ2V0VXNlckJldEtleQQEdXNlcgZnYW1lSWQEdHlwZQZyZXN1bHQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQZnYW1lSWQCAV8JAKQDAQUEdHlwZQIBXwUGcmVzdWx0BQhrVXNlckJldAEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMGZ2FtZUlkBHR5cGUGcmVzdWx0CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQZnYW1lSWQCAV8JAKQDAQUEdHlwZQIBXwUGcmVzdWx0BRFrVG90YWxCZXRzRm9yVHlwZQELdmFsaWRhdGVCZXQDCGdhbWVUeXBlBHR5cGUGcmVzdWx0AwkAAAIFBHR5cGUAAQMJAQIhPQIJALECAQUGcmVzdWx0AAEJAAIBAi9HYW1lIHJlc3VsdCBtdXN0IGNvbnRhaW4gb25seSBvbmUgbGV0dGVyOiBBLEIsRAMJAQEhAQkBCGNvbnRhaW5zAgIDQUJEBQZyZXN1bHQJAAIBAi9HYW1lIHJlc3VsdCBtdXN0IGNvbnRhaW4gb25seSBvbmUgbGV0dGVyOiBBLEIsRAMDCQAAAgUIZ2FtZVR5cGUFEUdBTUVfVFlQRV9QTEFUT0ZGCQEBIQEJAQhjb250YWlucwICAkFCBQZyZXN1bHQHCQACAQItR2FtZSByZXN1bHQgbXVzdCBjb250YWluIG9ubHkgb25lIGxldHRlcjogQSxCBgMJAAACBQR0eXBlAAIEB3NwbGl0ZWQJALUJAgUGcmVzdWx0AgFfAwkBAiE9AgkAkAMBBQdzcGxpdGVkAAIJAAIBAhZJbm5jb3JyZWN0IGdhbWUgcmVzdWx0BAZiYWxsc0EJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFB3NwbGl0ZWQAAAIWSW5uY29ycmVjdCBnYW1lIHJlc3VsdAQGYmFsbHNCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQdzcGxpdGVkAAECFklubmNvcnJlY3QgZ2FtZSByZXN1bHQDCQAAAgUGYmFsbHNBBQZiYWxsc0IJAAIBAi9Jbm5jb3JyZWN0IGdhbWUgcmVzdWx0LiBBIGFuZCBCIGNhbm5vdCBiZSBlcXVhbAYDCQAAAgUEdHlwZQADBAdzcGxpdGVkCQC1CQIFBnJlc3VsdAIBXwMJAQIhPQIJAJADAQUHc3BsaXRlZAACCQACAQIWSW5uY29ycmVjdCBnYW1lIHJlc3VsdAQEdGVhbQkAkQMCBQdzcGxpdGVkAAAEC2JhbGxzQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQdzcGxpdGVkAAECFklubmNvcnJlY3QgZ2FtZSByZXN1bHQDCQBnAgAABQtiYWxsc0Ftb3VudAkAAgECO0lubmNvcnJlY3QgZ2FtZSByZXN1bHQsIGJhbGxzIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhlbiAwAwMJAQIhPQIJALECAQUEdGVhbQABBgkBASEBCQEIY29udGFpbnMCAgJBQgUEdGVhbQkAAgECLUdhbWUgcmVzdWx0IG11c3QgY29udGFpbiBvbmx5IG9uZSBsZXR0ZXI6IEEsQgYHARFwb3RlbnRpYWxXaW5uaW5ncwUGZ2FtZUlkC3VzZXJBZGRyZXNzBmFtb3VudAR0eXBlBnJlc3VsdAQHc3BsZFJlcwkAtQkCBQZyZXN1bHQCAV8ECyR0MDM5ODI0MzkwAwkAAAIFBHR5cGUAAQMJAAACBQZyZXN1bHQCAUEJAJUKAwIDMV8wAAEAAAMJAAACBQZyZXN1bHQCAUIJAJUKAwIDMF8xAAAAAQkAlQoDAgMxXzEAAQABAwkAAAIFBHR5cGUAAgkAlQoDBQZyZXN1bHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdzcGxkUmVzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdzcGxkUmVzAAEDCQAAAgkAkQMCBQdzcGxkUmVzAAACAUEJAJUKAwkArAICCQCRAwIFB3NwbGRSZXMAAQICXzAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdzcGxkUmVzAAEAAAkAlQoDCQCsAgICAjBfCQCRAwIFB3NwbGRSZXMAAQAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHc3BsZFJlcwABBApnYW1lUmVzdWx0CAULJHQwMzk4MjQzOTACXzEEBmJhbGxzQQgFCyR0MDM5ODI0MzkwAl8yBAZiYWxsc0IIBQskdDAzOTgyNDM5MAJfMwQEZGlmZgMJAGYCBQZiYWxsc0EFBmJhbGxzQgkAZQIFBmJhbGxzQQUGYmFsbHNCCQBlAgUGYmFsbHNCBQZiYWxsc0EEBndpbm5lcgMJAGYCBQZiYWxsc0EFBmJhbGxzQgIBQQMJAGYCBQZiYWxsc0IFBmJhbGxzQQIBQgIBRAQCRzEJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZnZXRUb3RhbEJldHNGb3JUeXBlS2V5AwUGZ2FtZUlkAAEFBndpbm5lcgAAAwkAAAIFBHR5cGUAAQUGYW1vdW50AAAEAkcyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMFBmdhbWVJZAABBQZyZXN1bHQAAAMJAAACBQR0eXBlAAIFBmFtb3VudAAABAJHMwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmdldFRvdGFsQmV0c0ZvclR5cGVLZXkDBQZnYW1lSWQAAQkArAICCQCsAgIFBndpbm5lcgIBXwkApAMBBQRkaWZmAAADCQAAAgUEdHlwZQADBQZhbW91bnQAAAQNdG90YWxXaW5WYWx1ZQkAZAIJAGQCBQJHMQUCRzIFAkczBAl0b3RhbEJldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFBmdhbWVJZAUKa1RvdGFsQmV0cwAABAtiYW5rV2l0aEZlZQkAZQIFCXRvdGFsQmV0cwUNdG90YWxXaW5WYWx1ZQQDZmVlCQBrAwULYmFua1dpdGhGZWUFB0JFVF9GRUUFCUZFRV9TQ0FMRQQBQgkAZQIFC2JhbmtXaXRoRmVlBQNmZWUEA1VCMQkAZAIJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ1nZXRVc2VyQmV0S2V5BAULdXNlckFkZHJlc3MFBmdhbWVJZAABBQZ3aW5uZXIAAAMJAAACBQR0eXBlAAEFBmFtb3VudAAABANVQjIJAGQCCQELdmFsdWVPckVsc2UCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQENZ2V0VXNlckJldEtleQQFC3VzZXJBZGRyZXNzBQZnYW1lSWQAAgUKZ2FtZVJlc3VsdAAAAwkAAAIFBHR5cGUAAQUGYW1vdW50AAAEA1VCMwkAZAIJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ1nZXRVc2VyQmV0S2V5BAULdXNlckFkZHJlc3MFBmdhbWVJZAABCQCsAgIJAKwCAgUGd2lubmVyAgFfCQCkAwEFBGRpZmYAAAMJAAACBQR0eXBlAAEFBmFtb3VudAAABBB0b3RhbFdpblZhbHVlTWF4CQBkAgkAZAIFAkcxCQBoAgUCRzIAAwkAaAIFAkczAAIEAkQxCQBpAgkAaAIJAGQCBQJHMQkAaAIJAGkCBQJHMQUQdG90YWxXaW5WYWx1ZU1heAUBQgUDVUIxBQJHMQQCRDIJAGkCCQBoAgkAZAIFAkcyCQBoAgkAaQIFAkcyBRB0b3RhbFdpblZhbHVlTWF4BQFCBQNVQjIFAkcyBAJEMwkAaQIJAGgCCQBkAgUCRzMJAGgCCQBpAgUCRzMFEHRvdGFsV2luVmFsdWVNYXgFAUIFA1VCMwUCRzMEC2NsYWltQW1vdW50CQBkAgkAZAIFAkQxBQJEMgUCRDMFC2NsYWltQW1vdW50BgFpAQNiZXQEBmdhbWVJZAR0eXBlBnJlc3VsdAVyZWZJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEBmdJZFN0cgkApAMBBQZnYW1lSWQECyR0MDYwMzU2MTEwCQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFCyR0MDYwMzU2MTEwAl8xBApwbXRBc3NldElkCAULJHQwNjAzNTYxMTACXzIEDWdhbWVTdGFydFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFBmdhbWVJZAUNa0dhbWVTdHJhVGltZQAABAhnYW1lVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFBmdhbWVJZAUJa0dhbWVUeXBlAwkBAiE9AgUKcG10QXNzZXRJZAUEVVNEVAkAAgECHlBhbXltZW50IG11c3QgYmUgSW4gVVNEVCBhc3NldAMJAGYCBQdNSU5fQkVUBQlwbXRBbW91bnQJAAIBCQCsAgIJAKwCAgIITWluIGJldCAJAKQDAQkAaQIFB01JTl9CRVQAwIQ9AgRVU0RUAwkAAAIFDWdhbWVTdGFydFRpbWUAAAkAAgEJAKwCAgIYVGhlcmUgaXMgbm8gZ2FtZSB3aXRoIGlkCQCkAwEFBmdhbWVJZAMJAGcCCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCE9ORV9IT1VSBQ1nYW1lU3RhcnRUaW1lCQACAQIoQmV0cyBvbiB0aGlzIGdhbWUgYXJlIG5vIGxvbmdlciBhY2NlcHRlZAMJAQEhAQkBC3ZhbGlkYXRlQmV0AwUIZ2FtZVR5cGUFBHR5cGUFBnJlc3VsdAkAAgECEkluY29ycmVjdCBiZXQgdHlwZQQHc3BsZFJlcwkAtQkCBQZyZXN1bHQCAV8ECnVzZXJCZXRLZXkJAQ1nZXRVc2VyQmV0S2V5BAUEdXNlcgUGZ2FtZUlkBQR0eXBlBQZyZXN1bHQEFnRvdGFsQmV0c0ZvclR5cGVCZXRLZXkJARZnZXRUb3RhbEJldHNGb3JUeXBlS2V5AwUGZ2FtZUlkBQR0eXBlBQZyZXN1bHQEB3VzZXJCZXQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCnVzZXJCZXRLZXkAAAUJcG10QW1vdW50BBN0b3RhbEJldHNGb3JUeXBlQmV0CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRZ0b3RhbEJldHNGb3JUeXBlQmV0S2V5AAAFCXBtdEFtb3VudAQJdG90YWxCZXRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBmdJZFN0cgUKa1RvdGFsQmV0cwAABQlwbXRBbW91bnQEBnRvV2luQQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQZnSWRTdHIFB2tUb1dpbkEAAAMDCQAAAgUEdHlwZQABCQAAAgUGcmVzdWx0AgFBBwUJcG10QW1vdW50AwMJAAACBQR0eXBlAAIJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHc3BsZFJlcwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHc3BsZFJlcwABBwUJcG10QW1vdW50AwMJAAACBQR0eXBlAAMJAAACCQCRAwIFB3NwbGRSZXMAAAIBQQcFCXBtdEFtb3VudAAABAZ0b1dpbkIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUGZ0lkU3RyBQdrVG9XaW5CAAADAwkAAAIFBHR5cGUAAQkAAAIFBnJlc3VsdAIBQgcFCXBtdEFtb3VudAMDCQAAAgUEdHlwZQACCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3NwbGRSZXMAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3NwbGRSZXMAAAcFCXBtdEFtb3VudAMDCQAAAgUEdHlwZQADCQAAAgkAkQMCBQdzcGxkUmVzAAACAUIHBQlwbXRBbW91bnQAAAQGb25EcmF3CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBmdJZFN0cgUHa09uRHJhdwAAAwMJAAACBQR0eXBlAAEJAAACBQZyZXN1bHQCAUQHBQlwbXRBbW91bnQAAAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQp1c2VyQmV0S2V5BQd1c2VyQmV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZ0b3RhbEJldHNGb3JUeXBlQmV0S2V5BRN0b3RhbEJldHNGb3JUeXBlQmV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmdJZFN0cgUKa1RvdGFsQmV0cwUJdG90YWxCZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmdJZFN0cgUHa1RvV2luQQUGdG9XaW5BCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmdJZFN0cgUHa1RvV2luQgUGdG9XaW5CCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmdJZFN0cgUHa09uRHJhdwUGb25EcmF3BQNuaWwDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFCmtVc2VyUmVmSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUKa1VzZXJSZWZJZAUFcmVmSWQFA25pbAUDbmlsAWkBBWNsYWltAQZnYW1lSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAZnSWRTdHIJAKQDAQUGZ2FtZUlkBAlmaW5hbFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBmdJZFN0cgUKa0ZpbmFsVGltZQIkWW91IGNhbiBjbGFpbSBvbmx5IGFmdGVyIGdhbWUgZmluaXNoAwkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJZmluYWxUaW1lBQhPTkVfSE9VUgkAAgECN1lvdSBjYW4gY2xhaW0gb25seSBhZnRlciBvbmUgaG91ciBwYXNzIGFmdGVyIGZpbmFsIHRpbWUDCQEJaXNEZWZpbmVkAQkAmwgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQZnSWRTdHIFDGtVc2VyQ2xhaW1lZAkAAgECFllvdSBhcmUgYWxyZWR5IGNsYWltZWQECmdhbWVSZXN1bHQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUGZ0lkU3RyBQtrR2FtZVJlc3VsdAQHc3BsZFJlcwkAtQkCBQpnYW1lUmVzdWx0AgFfBAZiYWxsc0EJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFB3NwbGRSZXMAAAIWSW5uY29ycmVjdCBnYW1lIHJlc3VsdAQGYmFsbHNCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQdzcGxkUmVzAAECFklubmNvcnJlY3QgZ2FtZSByZXN1bHQEBGRpZmYDCQBmAgUGYmFsbHNBBQZiYWxsc0IJAGUCBQZiYWxsc0EFBmJhbGxzQgkAZQIFBmJhbGxzQgUGYmFsbHNBBAZ3aW5uZXIDCQBmAgUGYmFsbHNBBQZiYWxsc0ICAUEDCQBmAgUGYmFsbHNCBQZiYWxsc0ECAUICAUQEAUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUGZ0lkU3RyBQVrQmFuawQDVUIxCQELdmFsdWVPckVsc2UCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQENZ2V0VXNlckJldEtleQQFBHVzZXIFBmdhbWVJZAABBQZ3aW5uZXIAAAQDVUIyCQELdmFsdWVPckVsc2UCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQENZ2V0VXNlckJldEtleQQFBHVzZXIFBmdhbWVJZAACBQpnYW1lUmVzdWx0AAAEA1VCMwkBC3ZhbHVlT3JFbHNlAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDWdldFVzZXJCZXRLZXkEBQR1c2VyBQZnYW1lSWQAAQkArAICCQCsAgIFBndpbm5lcgIBXwkApAMBBQRkaWZmAAAEAkcxCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZnZXRUb3RhbEJldHNGb3JUeXBlS2V5AwUGZ2FtZUlkAAEFBndpbm5lcgAABAJHMgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMFBmdhbWVJZAABBQpnYW1lUmVzdWx0AAAEAkczCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZnZXRUb3RhbEJldHNGb3JUeXBlS2V5AwUGZ2FtZUlkAAEJAKwCAgkArAICBQZ3aW5uZXICAV8JAKQDAQUEZGlmZgAABBB0b3RhbFdpblZhbHVlTWF4CQBkAgkAZAIFAkcxCQBoAgUCRzIAAwkAaAIFAkczAAIEAkQxCQBpAgkAaAIJAGQCBQJHMQkAaAIJAGkCBQJHMQUQdG90YWxXaW5WYWx1ZU1heAUBQgUDVUIxBQJHMQQCRDIJAGkCCQBoAgkAZAIFAkcyCQBoAgkAaQIFAkcyBRB0b3RhbFdpblZhbHVlTWF4BQFCBQNVQjIFAkcyBAJEMwkAaQIJAGgCCQBkAgUCRzMJAGgCCQBpAgUCRzMFEHRvdGFsV2luVmFsdWVNYXgFAUIFA1VCMwUCRzMEC2NsYWltQW1vdW50CQBkAgkAZAIFAkQxBQJEMgUCRDMDCQAAAgULY2xhaW1BbW91bnQAAAkAAgECEE5vdGhpbmcgdG8gY2xhaW0JAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUGZ0lkU3RyBQxrVXNlckNsYWltZWQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULY2xhaW1BbW91bnQFBFVTRFQFA25pbAULY2xhaW1BbW91bnQBaQELZ2FtZVN1bW1hcnkCBmdhbWVJZAZyZXN1bHQEBmdJZFN0cgkApAMBBQZnYW1lSWQEDWdhbWVTdGFydFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFBmdhbWVJZAUNa0dhbWVTdHJhVGltZQAAAwkAAAIFDWdhbWVTdGFydFRpbWUAAAkAAgEJAKwCAgIYVGhlcmUgaXMgbm8gZ2FtZSB3aXRoIGlkCQCkAwEFBmdhbWVJZAQHc3BsZFJlcwkAtQkCBQZyZXN1bHQCAV8EBmJhbGxzQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUHc3BsZFJlcwAAAhZJbm5jb3JyZWN0IGdhbWUgcmVzdWx0BAZiYWxsc0IJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFB3NwbGRSZXMAAQIWSW5uY29ycmVjdCBnYW1lIHJlc3VsdAQEZGlmZgMJAGYCBQZiYWxsc0EFBmJhbGxzQgkAZQIFBmJhbGxzQQUGYmFsbHNCCQBlAgUGYmFsbHNCBQZiYWxsc0EEBndpbm5lcgMJAGYCBQZiYWxsc0EFBmJhbGxzQgIBQQMJAGYCBQZiYWxsc0IFBmJhbGxzQQIBQgIBRAQNdG90YWxXaW5UeXBlMQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMFBmdhbWVJZAABBQZ3aW5uZXIAAAQNdG90YWxXaW5UeXBlMgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMFBmdhbWVJZAABBQZyZXN1bHQAAAQNdG90YWxXaW5UeXBlMwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0VG90YWxCZXRzRm9yVHlwZUtleQMFBmdhbWVJZAABCQCsAgIJAKwCAgUGd2lubmVyAgFfCQCkAwEFBGRpZmYAAAQNdG90YWxXaW5WYWx1ZQkAZAIJAGQCBQ10b3RhbFdpblR5cGUxBQ10b3RhbFdpblR5cGUyBQ10b3RhbFdpblR5cGUzBAl0b3RhbEJldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFBmdhbWVJZAUKa1RvdGFsQmV0cwAABAtiYW5rV2l0aEZlZQkAZQIFCXRvdGFsQmV0cwUNdG90YWxXaW5WYWx1ZQQNJHQwMTEzMzgxMTQ5NgMJAAACBQ10b3RhbFdpblZhbHVlAAAJAJQKAgULYmFua1dpdGhGZWUAAAQBZgkAawMFC2JhbmtXaXRoRmVlBQdCRVRfRkVFBQlGRUVfU0NBTEUJAJQKAgUBZgkAZQIFC2JhbmtXaXRoRmVlBQFmBANmZWUIBQ0kdDAxMTMzODExNDk2Al8xBARiYW5rCAUNJHQwMTEzMzgxMTQ5NgJfMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmdJZFN0cgULa0dhbWVSZXN1bHQFBnJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQZnSWRTdHIFBWtCYW5rBQRiYW5rCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBmdJZFN0cgUKa0ZpbmFsVGltZQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwURTU9ORVlfQk9YX0FERFJFRVMFA2ZlZQUEVVNEVAUDbmlsAWkBCWluaXRHYW1lcwIOc3RhcnRHYW1lVGltZXMFdHlwZXMKAQhpbml0R2FtZQIDYWNjDXN0YXJ0R2FtZVRpbWUEDSR0MDExODgwMTE5MTMFA2FjYwQHZW50cmllcwgFDSR0MDExODgwMTE5MTMCXzEECW5ld0dhbWVJZAgFDSR0MDExODgwMTE5MTMCXzIEAWoIBQ0kdDAxMTg4MDExOTEzAl8zAwkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ1zdGFydEdhbWVUaW1lCQACAQIjc3RhcnRHYW1lVGltZSBtdXN0IGJlIGluIHRoZSBmdXR1cmUDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQpHQU1FX1RZUEVTCQCRAwIFBXR5cGVzBQFqCQACAQkArAICAiF0eXBlIG11c3QgY29udGFpbiBvbmUgb2YgdmFsdWVzOiAJALkJAgUKR0FNRV9UWVBFUwIBLAQLZ2FtZUVudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQluZXdHYW1lSWQFDWtHYW1lU3RyYVRpbWUFDXN0YXJ0R2FtZVRpbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFCW5ld0dhbWVJZAUJa0dhbWVUeXBlCQCRAwIFBXR5cGVzBQFqBQNuaWwJAJUKAwkAzggCBQdlbnRyaWVzBQNuaWwJAGQCBQluZXdHYW1lSWQAAQkAZAIFAWoAAQQKbGFzdEdhbWVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrTGFzdEdhbWVJZAAABA0kdDAxMjQxNjEyNTA1CgACJGwFDnN0YXJ0R2FtZVRpbWVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwJAGQCBQpsYXN0R2FtZUlkAAEAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIaW5pdEdhbWUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQMZ2FtZXNFbnRyaWVzCAUNJHQwMTI0MTYxMjUwNQJfMQQHbmV3TEdJZAgFDSR0MDEyNDE2MTI1MDUCXzIJAM0IAgUMZ2FtZXNFbnRyaWVzCQEMSW50ZWdlckVudHJ5AgULa0xhc3RHYW1lSWQFB25ld0xHSWQBaQEIc2h1dGRvd24AAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMFA25pbAgFAWkPY2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEHc3VzcGVuZAECD1BhdXNlZCBieSBhZG1pbgFpAQhhY3RpdmF0ZQADBQZhY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtEZWxldGVFbnRyeQEFBmtDYXVzZQUDbmlsAJ2GG7c=", "height": 2311130, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: E1abgJgWboM2XPmh4q97CSYoYmb1VmTvXaVe98V4pTXh Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "Group" | |
5 | + | ||
6 | + | let b = "Play-off" | |
7 | + | ||
8 | + | let c = [a, b] | |
9 | + | ||
10 | + | let d = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS' | |
11 | + | ||
12 | + | let e = 1000000 | |
13 | + | ||
14 | + | let f = ((5 * 60) * 1000) | |
15 | + | ||
16 | + | let g = Address(base58'3N65zqVKchaFdW4gS7FxCRibjfkVgJvo7PT') | |
17 | + | ||
18 | + | let h = 500 | |
19 | + | ||
20 | + | let i = 10000 | |
21 | + | ||
22 | + | let j = "active" | |
23 | + | ||
24 | + | let k = "active_all_contracts" | |
25 | + | ||
26 | + | let l = "shutdown_cause" | |
27 | + | ||
28 | + | let m = "_startGameTime" | |
29 | + | ||
30 | + | let n = "_startGameTime" | |
31 | + | ||
32 | + | let o = "last_game_id" | |
33 | + | ||
34 | + | let p = "_totalBets" | |
35 | + | ||
36 | + | let q = "_toWinA" | |
37 | + | ||
38 | + | let r = "_toWinA" | |
39 | + | ||
40 | + | let s = "_onDraw" | |
41 | + | ||
42 | + | let t = "_result" | |
43 | + | ||
44 | + | let u = "_bank" | |
45 | + | ||
46 | + | let v = "_finalTimeā" | |
47 | + | ||
48 | + | let w = "_totalBetsForType" | |
49 | + | ||
50 | + | let x = "_userBet" | |
51 | + | ||
52 | + | let y = "_refId" | |
53 | + | ||
54 | + | let z = "_claimed" | |
55 | + | ||
56 | + | let A = "admin_pub_1" | |
57 | + | ||
58 | + | let B = "admin_pub_2" | |
59 | + | ||
60 | + | let C = "admin_pub_3" | |
61 | + | ||
62 | + | let D = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') | |
63 | + | ||
64 | + | func E (F) = { | |
65 | + | let G = getString(D, F) | |
66 | + | if ($isInstanceOf(G, "String")) | |
67 | + | then { | |
68 | + | let H = G | |
69 | + | fromBase58String(H) | |
70 | + | } | |
71 | + | else { | |
72 | + | let I = G | |
73 | + | throw((F + "is empty")) | |
74 | + | } | |
75 | + | } | |
76 | + | ||
77 | + | ||
78 | + | let J = E(A) | |
79 | + | ||
80 | + | let K = E(B) | |
81 | + | ||
82 | + | let L = E(C) | |
83 | + | ||
84 | + | let M = valueOrElse(getBoolean(this, j), true) | |
85 | + | ||
86 | + | let N = valueOrElse(getBoolean(D, k), true) | |
87 | + | ||
88 | + | func O () = if (if (M) | |
89 | + | then N | |
90 | + | else false) | |
91 | + | then unit | |
92 | + | else throw("DApp is inactive at this moment") | |
93 | + | ||
94 | + | ||
95 | + | func P (Q) = if (containsElement([J, K, L], Q.callerPublicKey)) | |
96 | + | then unit | |
97 | + | else throw("Only admin can call this function") | |
98 | + | ||
99 | + | ||
100 | + | func R (S) = [BooleanEntry(j, false), StringEntry(l, S)] | |
101 | + | ||
102 | + | ||
103 | + | func T (U,V,W,X) = (((((((U + "_") + toString(V)) + "_") + toString(W)) + "_") + X) + x) | |
104 | + | ||
105 | + | ||
106 | + | func Y (V,W,X) = (((((toString(V) + "_") + toString(W)) + "_") + X) + w) | |
107 | + | ||
108 | + | ||
109 | + | func Z (aa,W,X) = if ((W == 1)) | |
110 | + | then if ((size(X) != 1)) | |
111 | + | then throw("Game result must contain only one letter: A,B,D") | |
112 | + | else if (!(contains("ABD", X))) | |
113 | + | then throw("Game result must contain only one letter: A,B,D") | |
114 | + | else if (if ((aa == b)) | |
115 | + | then !(contains("AB", X)) | |
116 | + | else false) | |
117 | + | then throw("Game result must contain only one letter: A,B") | |
118 | + | else true | |
119 | + | else if ((W == 2)) | |
120 | + | then { | |
121 | + | let ab = split(X, "_") | |
122 | + | if ((size(ab) != 2)) | |
123 | + | then throw("Inncorrect game result") | |
124 | + | else { | |
125 | + | let ac = valueOrErrorMessage(parseInt(ab[0]), "Inncorrect game result") | |
126 | + | let ad = valueOrErrorMessage(parseInt(ab[1]), "Inncorrect game result") | |
127 | + | if ((ac == ad)) | |
128 | + | then throw("Inncorrect game result. A and B cannot be equal") | |
129 | + | else true | |
130 | + | } | |
131 | + | } | |
132 | + | else if ((W == 3)) | |
133 | + | then { | |
134 | + | let ab = split(X, "_") | |
135 | + | if ((size(ab) != 2)) | |
136 | + | then throw("Inncorrect game result") | |
137 | + | else { | |
138 | + | let ae = ab[0] | |
139 | + | let af = valueOrErrorMessage(parseInt(ab[1]), "Inncorrect game result") | |
140 | + | if ((0 >= af)) | |
141 | + | then throw("Inncorrect game result, balls amount must be greater then 0") | |
142 | + | else if (if ((size(ae) != 1)) | |
143 | + | then true | |
144 | + | else !(contains("AB", ae))) | |
145 | + | then throw("Game result must contain only one letter: A,B") | |
146 | + | else true | |
147 | + | } | |
148 | + | } | |
149 | + | else false | |
150 | + | ||
151 | + | ||
152 | + | func ag (V,ah,ai,W,X) = { | |
153 | + | let aj = split(X, "_") | |
154 | + | let ak = if ((W == 1)) | |
155 | + | then if ((X == "A")) | |
156 | + | then $Tuple3("1_0", 1, 0) | |
157 | + | else if ((X == "B")) | |
158 | + | then $Tuple3("0_1", 0, 1) | |
159 | + | else $Tuple3("1_1", 1, 1) | |
160 | + | else if ((W == 2)) | |
161 | + | then $Tuple3(X, parseIntValue(aj[0]), parseIntValue(aj[1])) | |
162 | + | else if ((aj[0] == "A")) | |
163 | + | then $Tuple3((aj[1] + "_0"), parseIntValue(aj[1]), 0) | |
164 | + | else $Tuple3(("0_" + aj[1]), 0, parseIntValue(aj[1])) | |
165 | + | let al = ak._1 | |
166 | + | let ac = ak._2 | |
167 | + | let ad = ak._3 | |
168 | + | let am = if ((ac > ad)) | |
169 | + | then (ac - ad) | |
170 | + | else (ad - ac) | |
171 | + | let an = if ((ac > ad)) | |
172 | + | then "A" | |
173 | + | else if ((ad > ac)) | |
174 | + | then "B" | |
175 | + | else "D" | |
176 | + | let ao = (valueOrElse(getInteger(this, Y(V, 1, an)), 0) + (if ((W == 1)) | |
177 | + | then ai | |
178 | + | else 0)) | |
179 | + | let ap = (valueOrElse(getInteger(this, Y(V, 1, X)), 0) + (if ((W == 2)) | |
180 | + | then ai | |
181 | + | else 0)) | |
182 | + | let aq = (valueOrElse(getInteger(this, Y(V, 1, ((an + "_") + toString(am)))), 0) + (if ((W == 3)) | |
183 | + | then ai | |
184 | + | else 0)) | |
185 | + | let ar = ((ao + ap) + aq) | |
186 | + | let as = valueOrElse(getInteger(this, (toString(V) + p)), 0) | |
187 | + | let at = (as - ar) | |
188 | + | let au = fraction(at, h, i) | |
189 | + | let av = (at - au) | |
190 | + | let aw = (valueOrElse(getIntegerValue(this, T(ah, V, 1, an)), 0) + (if ((W == 1)) | |
191 | + | then ai | |
192 | + | else 0)) | |
193 | + | let ax = (valueOrElse(getIntegerValue(this, T(ah, V, 2, al)), 0) + (if ((W == 1)) | |
194 | + | then ai | |
195 | + | else 0)) | |
196 | + | let ay = (valueOrElse(getIntegerValue(this, T(ah, V, 1, ((an + "_") + toString(am)))), 0) + (if ((W == 1)) | |
197 | + | then ai | |
198 | + | else 0)) | |
199 | + | let az = ((ao + (ap * 3)) + (aq * 2)) | |
200 | + | let aA = (((ao + ((ao / az) * av)) * aw) / ao) | |
201 | + | let aB = (((ap + ((ap / az) * av)) * ax) / ap) | |
202 | + | let aC = (((aq + ((aq / az) * av)) * ay) / aq) | |
203 | + | let aD = ((aA + aB) + aC) | |
204 | + | aD | |
205 | + | } | |
206 | + | ||
207 | + | ||
208 | + | @Callable(Q) | |
209 | + | func bet (V,W,X,aE) = valueOrElse(O(), { | |
210 | + | let U = toString(Q.caller) | |
211 | + | let aF = toString(V) | |
212 | + | let aG = $Tuple2(Q.payments[0].amount, Q.payments[0].assetId) | |
213 | + | let aH = aG._1 | |
214 | + | let aI = aG._2 | |
215 | + | let aJ = valueOrElse(getInteger(this, (toString(V) + m)), 0) | |
216 | + | let aa = getStringValue(this, (toString(V) + n)) | |
217 | + | if ((aI != d)) | |
218 | + | then throw("Pamyment must be In USDT asset") | |
219 | + | else if ((e > aH)) | |
220 | + | then throw((("Min bet " + toString((e / 1000000))) + "USDT")) | |
221 | + | else if ((aJ == 0)) | |
222 | + | then throw(("There is no game with id" + toString(V))) | |
223 | + | else if (((lastBlock.timestamp + f) >= aJ)) | |
224 | + | then throw("Bets on this game are no longer accepted") | |
225 | + | else if (!(Z(aa, W, X))) | |
226 | + | then throw("Incorrect bet type") | |
227 | + | else { | |
228 | + | let aj = split(X, "_") | |
229 | + | let aK = T(U, V, W, X) | |
230 | + | let aL = Y(V, W, X) | |
231 | + | let aM = (valueOrElse(getInteger(this, aK), 0) + aH) | |
232 | + | let aN = (valueOrElse(getInteger(this, aL), 0) + aH) | |
233 | + | let as = (valueOrElse(getInteger(this, (aF + p)), 0) + aH) | |
234 | + | let aO = (valueOrElse(getInteger(this, (aF + q)), 0) + (if (if ((W == 1)) | |
235 | + | then (X == "A") | |
236 | + | else false) | |
237 | + | then aH | |
238 | + | else if (if ((W == 2)) | |
239 | + | then (parseIntValue(aj[0]) > parseIntValue(aj[1])) | |
240 | + | else false) | |
241 | + | then aH | |
242 | + | else if (if ((W == 3)) | |
243 | + | then (aj[0] == "A") | |
244 | + | else false) | |
245 | + | then aH | |
246 | + | else 0)) | |
247 | + | let aP = (valueOrElse(getInteger(this, (aF + r)), 0) + (if (if ((W == 1)) | |
248 | + | then (X == "B") | |
249 | + | else false) | |
250 | + | then aH | |
251 | + | else if (if ((W == 2)) | |
252 | + | then (parseIntValue(aj[1]) > parseIntValue(aj[0])) | |
253 | + | else false) | |
254 | + | then aH | |
255 | + | else if (if ((W == 3)) | |
256 | + | then (aj[0] == "B") | |
257 | + | else false) | |
258 | + | then aH | |
259 | + | else 0)) | |
260 | + | let aQ = (valueOrElse(getInteger(this, (aF + s)), 0) + (if (if ((W == 1)) | |
261 | + | then (X == "D") | |
262 | + | else false) | |
263 | + | then aH | |
264 | + | else 0)) | |
265 | + | ([IntegerEntry(aK, aM), IntegerEntry(aL, aN), IntegerEntry((aF + p), as), IntegerEntry((aF + q), aO), IntegerEntry((aF + r), aP), IntegerEntry((aF + s), aQ)] ++ (if (!(isDefined(getString(this, y)))) | |
266 | + | then [StringEntry(y, aE)] | |
267 | + | else nil)) | |
268 | + | } | |
269 | + | }) | |
270 | + | ||
271 | + | ||
272 | + | ||
273 | + | @Callable(Q) | |
274 | + | func claim (V) = valueOrElse(O(), { | |
275 | + | let U = toString(Q.caller) | |
276 | + | let aF = toString(V) | |
277 | + | let aR = valueOrErrorMessage(getInteger(this, (aF + v)), "You can claim only after game finish") | |
278 | + | if ((lastBlock.timestamp > (aR + f))) | |
279 | + | then throw("You can claim only after one hour pass after final time") | |
280 | + | else if (isDefined(getBoolean(this, (((U + "_") + aF) + z)))) | |
281 | + | then throw("You are alredy claimed") | |
282 | + | else { | |
283 | + | let al = getStringValue(this, (aF + t)) | |
284 | + | let aj = split(al, "_") | |
285 | + | let ac = valueOrErrorMessage(parseInt(aj[0]), "Inncorrect game result") | |
286 | + | let ad = valueOrErrorMessage(parseInt(aj[1]), "Inncorrect game result") | |
287 | + | let am = if ((ac > ad)) | |
288 | + | then (ac - ad) | |
289 | + | else (ad - ac) | |
290 | + | let an = if ((ac > ad)) | |
291 | + | then "A" | |
292 | + | else if ((ad > ac)) | |
293 | + | then "B" | |
294 | + | else "D" | |
295 | + | let av = getIntegerValue(this, (aF + u)) | |
296 | + | let aw = valueOrElse(getIntegerValue(this, T(U, V, 1, an)), 0) | |
297 | + | let ax = valueOrElse(getIntegerValue(this, T(U, V, 2, al)), 0) | |
298 | + | let ay = valueOrElse(getIntegerValue(this, T(U, V, 1, ((an + "_") + toString(am)))), 0) | |
299 | + | let ao = valueOrElse(getInteger(this, Y(V, 1, an)), 0) | |
300 | + | let ap = valueOrElse(getInteger(this, Y(V, 1, al)), 0) | |
301 | + | let aq = valueOrElse(getInteger(this, Y(V, 1, ((an + "_") + toString(am)))), 0) | |
302 | + | let az = ((ao + (ap * 3)) + (aq * 2)) | |
303 | + | let aA = (((ao + ((ao / az) * av)) * aw) / ao) | |
304 | + | let aB = (((ap + ((ap / az) * av)) * ax) / ap) | |
305 | + | let aC = (((aq + ((aq / az) * av)) * ay) / aq) | |
306 | + | let aD = ((aA + aB) + aC) | |
307 | + | if ((aD == 0)) | |
308 | + | then throw("Nothing to claim") | |
309 | + | else $Tuple2([BooleanEntry((((U + "_") + aF) + z), true), ScriptTransfer(Q.caller, aD, d)], aD) | |
310 | + | } | |
311 | + | }) | |
312 | + | ||
313 | + | ||
314 | + | ||
315 | + | @Callable(Q) | |
316 | + | func gameSummary (V,X) = { | |
317 | + | let aF = toString(V) | |
318 | + | let aJ = valueOrElse(getInteger(this, (toString(V) + m)), 0) | |
319 | + | if ((aJ == 0)) | |
320 | + | then throw(("There is no game with id" + toString(V))) | |
321 | + | else { | |
322 | + | let aj = split(X, "_") | |
323 | + | let ac = valueOrErrorMessage(parseInt(aj[0]), "Inncorrect game result") | |
324 | + | let ad = valueOrErrorMessage(parseInt(aj[1]), "Inncorrect game result") | |
325 | + | let am = if ((ac > ad)) | |
326 | + | then (ac - ad) | |
327 | + | else (ad - ac) | |
328 | + | let an = if ((ac > ad)) | |
329 | + | then "A" | |
330 | + | else if ((ad > ac)) | |
331 | + | then "B" | |
332 | + | else "D" | |
333 | + | let aS = valueOrElse(getInteger(this, Y(V, 1, an)), 0) | |
334 | + | let aT = valueOrElse(getInteger(this, Y(V, 1, X)), 0) | |
335 | + | let aU = valueOrElse(getInteger(this, Y(V, 1, ((an + "_") + toString(am)))), 0) | |
336 | + | let ar = ((aS + aT) + aU) | |
337 | + | let as = valueOrElse(getInteger(this, (toString(V) + p)), 0) | |
338 | + | let at = (as - ar) | |
339 | + | let aV = if ((ar == 0)) | |
340 | + | then $Tuple2(at, 0) | |
341 | + | else { | |
342 | + | let aW = fraction(at, h, i) | |
343 | + | $Tuple2(aW, (at - aW)) | |
344 | + | } | |
345 | + | let au = aV._1 | |
346 | + | let aX = aV._2 | |
347 | + | [StringEntry((aF + t), X), IntegerEntry((aF + u), aX), IntegerEntry((aF + v), lastBlock.timestamp), ScriptTransfer(g, au, d)] | |
348 | + | } | |
349 | + | } | |
350 | + | ||
351 | + | ||
352 | + | ||
353 | + | @Callable(Q) | |
354 | + | func initGames (aY,aZ) = { | |
355 | + | func ba (bb,bc) = { | |
356 | + | let bd = bb | |
357 | + | let be = bd._1 | |
358 | + | let bf = bd._2 | |
359 | + | let bg = bd._3 | |
360 | + | if ((lastBlock.timestamp > bc)) | |
361 | + | then throw("startGameTime must be in the future") | |
362 | + | else if (!(containsElement(c, aZ[bg]))) | |
363 | + | then throw(("type must contain one of values: " + makeString(c, ","))) | |
364 | + | else { | |
365 | + | let bh = [IntegerEntry((toString(bf) + m), bc), StringEntry((toString(bf) + n), aZ[bg])] | |
366 | + | $Tuple3((be ++ nil), (bf + 1), (bg + 1)) | |
367 | + | } | |
368 | + | } | |
369 | + | ||
370 | + | let bi = valueOrElse(getInteger(this, o), 0) | |
371 | + | let bj = { | |
372 | + | let bk = aY | |
373 | + | let bl = size(bk) | |
374 | + | let bm = $Tuple3(nil, (bi + 1), 0) | |
375 | + | func bn (bo,bp) = if ((bp >= bl)) | |
376 | + | then bo | |
377 | + | else ba(bo, bk[bp]) | |
378 | + | ||
379 | + | func bq (bo,bp) = if ((bp >= bl)) | |
380 | + | then bo | |
381 | + | else throw("List size exceeds 50") | |
382 | + | ||
383 | + | bq(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bn(bm, 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) | |
384 | + | } | |
385 | + | let br = bj._1 | |
386 | + | let bs = bj._2 | |
387 | + | (br :+ IntegerEntry(o, bs)) | |
388 | + | } | |
389 | + | ||
390 | + | ||
391 | + | ||
392 | + | @Callable(Q) | |
393 | + | func shutdown () = if (!(M)) | |
394 | + | then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified"))) | |
395 | + | else if (!(containsElement([J, K, L], Q.callerPublicKey))) | |
396 | + | then throw("Only admin can call this function") | |
397 | + | else R("Paused by admin") | |
398 | + | ||
399 | + | ||
400 | + | ||
401 | + | @Callable(Q) | |
402 | + | func activate () = if (M) | |
403 | + | then throw("DApp is already active") | |
404 | + | else if (!(containsElement([J, K, L], Q.callerPublicKey))) | |
405 | + | then throw("Only admin can call this function") | |
406 | + | else [BooleanEntry(j, true), DeleteEntry(l)] | |
407 | + | ||
408 | + |
github/deemru/w8io/169f3d6 39.43 ms ◑![]()