tx · 5MxnbHDZTkoZwnYKVcgHZmCfYSSYMFXZqcNrChgrkidE 3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj: -0.01100000 Waves 2023.10.13 13:45 [3862588] smart account 3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj > SELF 0.00000000 Waves
{ "type": 13, "id": "5MxnbHDZTkoZwnYKVcgHZmCfYSSYMFXZqcNrChgrkidE", "fee": 1100000, "feeAssetId": null, "timestamp": 1697193969815, "version": 2, "chainId": 87, "sender": "3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj", "senderPublicKey": "y6K4a5SRZdvLzRWHrhjBuh5BQqujMD5sLnAocMyZ3P3", "proofs": [ "2sQ5cNqkjFdZhpRiPmU2tZyhwvqBg41stApLRcweyX14N897dg4tmn8ntgLzMML5J4Exj1z9yx3cKGQzbTU9tomz" ], "script": "base64:BgIfCAISABIICgYBAQgIGBgSBAoCCAgSBAoCCAESAwoBCBIADGFkbWluQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzAgVhZG1pbgIAAAphcmJDb3VudGVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCCmFyYkNvdW50ZXIAAAANd3hTd2FwQWRkcmVzcwIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMBC3dyaXRlU3RyaW5nAgNrZXkLc3RyaW5nVmFsdWUJAQtTdHJpbmdFbnRyeQIFA2tleQULc3RyaW5nVmFsdWUBDHdyaXRlSW50ZWdlcgIDa2V5DGludGVnZXJWYWx1ZQkBDEludGVnZXJFbnRyeQIFA2tleQUMaW50ZWdlclZhbHVlAQdpc0FkbWluAQ1jYWxsZXJBZGRyZXNzAwkAAAIFDWNhbGxlckFkZHJlc3MJANkEAQUMYWRtaW5BZGRyZXNzBgcBDXNwbGl0Q2ZtbUpzb24BBWVudHJ5CQC1CQIFBWVudHJ5AgEvAQppbnZva2VTd29wAwtwb29sQWRkcmVzcwd0b2tlbklkC2lucHV0QW1vdW50BA50b2tlbklkQ2hlY2tlZAMJAAACBQd0b2tlbklkAgVXQVZFUwUEdW5pdAkA2QQBBQd0b2tlbklkBAZyZXN1bHQJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQULcG9vbEFkZHJlc3MCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ50b2tlbklkQ2hlY2tlZAULaW5wdXRBbW91bnQFA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAQHJG1hdGNoMAUGcmVzdWx0AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQGcmVzdWx0BQckbWF0Y2gwBAckbWF0Y2gxCQCRAwIFBnJlc3VsdAAAAwkAAQIFByRtYXRjaDECA0ludAQBYQUHJG1hdGNoMQUBYQkAAgECGExpc3QgaXRlbSBpcyBub3QgYW4gaW50IQkAAgECKVJlc3VsdCBvZiBzd29wIGludm9rYXRpb24gZG9lcyBub3QgbWF0Y2ghCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQhpbnZva2VXeAMJdG9rZW5JZEluCnRva2VuSWRPdXQLaW5wdXRBbW91bnQEEHRva2VuSWRJbkNoZWNrZWQDCQAAAgUJdG9rZW5JZEluAgVXQVZFUwUEdW5pdAkA2QQBBQl0b2tlbklkSW4EEXRva2VuSWRPdXRDaGVja2VkAwkAAAIFCnRva2VuSWRPdXQCBVdBVkVTAgAFCnRva2VuSWRPdXQEAXIJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUNd3hTd2FwQWRkcmVzcwIEc3dhcAkAzAgCAAEJAMwIAgURdG9rZW5JZE91dENoZWNrZWQJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFEHRva2VuSWRJbkNoZWNrZWQFC2lucHV0QW1vdW50BQNuaWwDCQAAAgUBcgUBcgQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgNJbnQEAXIFByRtYXRjaDAFAXIJAAIBAilSZXN1bHQgb2Ygc3dvcCBpbnZva2F0aW9uIGRvZXMgbm90IG1hdGNoIQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMaW52b2tlUHV6emxlBAtwb29sQWRkcmVzcwl0b2tlbklkSW4KdG9rZW5JZE91dAtpbnB1dEFtb3VudAQQdG9rZW5JZEluQ2hlY2tlZAMJAAACBQl0b2tlbklkSW4CBVdBVkVTBQR1bml0CQDZBAEFCXRva2VuSWRJbgQGcmVzdWx0CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzAgRzd2FwCQDMCAIFCnRva2VuSWRPdXQJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFEHRva2VuSWRJbkNoZWNrZWQFC2lucHV0QW1vdW50BQNuaWwDCQAAAgUGcmVzdWx0BQZyZXN1bHQEByRtYXRjaDAFBnJlc3VsdAMJAAECBQckbWF0Y2gwAgNJbnQEBnJlc3VsdAUHJG1hdGNoMAUGcmVzdWx0CQACAQIpUmVzdWx0IG9mIHN3b3AgaW52b2thdGlvbiBkb2VzIG5vdCBtYXRjaCEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEWRldGVybWluZVBsYXRmb3JtAwRjZm1tCXRva2VuSWRJbgp0b2tlbklkT3V0BARpdGVtCQENc3BsaXRDZm1tSnNvbgEFBGNmbW0EC2lucHV0QW1vdW50CQC2CQEJAJEDAgUEaXRlbQACBAVpbnB1dAQHJG1hdGNoMAULaW5wdXRBbW91bnQDCQABAgUHJG1hdGNoMAIDSW50BAtpbnB1dEFtb3VudAUHJG1hdGNoMAULaW5wdXRBbW91bnQJAAIBAihEYXRhdHlwZSBvZiBpbnB1dCBhbW91bnQgZG9lcyBub3QgbWF0Y2ghBAZyZXN1bHQDCQAAAgkAkQMCBQRpdGVtAAACBFNXT1AJAQppbnZva2VTd29wAwkAkQMCBQRpdGVtAAEFCXRva2VuSWRJbgUFaW5wdXQDCQAAAgkAkQMCBQRpdGVtAAACDldhdmVzIEV4Y2hhbmdlCQEIaW52b2tlV3gDBQl0b2tlbklkSW4FCnRva2VuSWRPdXQFBWlucHV0AwkAAAIJAJEDAgUEaXRlbQAAAgtQdXp6bGUgU3dhcAkBDGludm9rZVB1enpsZQQJAJEDAgUEaXRlbQABBQl0b2tlbklkSW4FCnRva2VuSWRPdXQFBWlucHV0CQACAQIbUGxhdGZvcm0gaWQgZG9lcyBub3QgbWF0Y2ghBQZyZXN1bHQBDHByb2Nlc3NDZm1tcwMFc3dhcHMJdG9rZW5JZEluCnRva2VuSWRPdXQKAQppbnZva2VTd2FwAgVhY2N1bQRuZXh0BAskdDA2OTU5Njk4NgUFYWNjdW0EBnJlc3VsdAgFCyR0MDY5NTk2OTg2Al8xBAVpbmRleAgFCyR0MDY5NTk2OTg2Al8yAwkAZgIJAJADAQUFc3dhcHMFBWluZGV4CQCUCgIJAGQCBQZyZXN1bHQJARFkZXRlcm1pbmVQbGF0Zm9ybQMFBG5leHQFCXRva2VuSWRJbgUKdG9rZW5JZE91dAkAZAIFBWluZGV4AAEJAJQKAgUGcmVzdWx0BQVpbmRleAQLcmVzdWx0VHVwbGUKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQppbnZva2VTd2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoCAULcmVzdWx0VHVwbGUCXzEBH2NhbGNFeGNlc3NBbW91bnRQZXJDZm1tUG9zaXRpdmUCCmRpZmZlcmVuY2ULbnVtYmVyQ2ZtbXMECHF1b3RpZW50CQBuBAUKZGlmZmVyZW5jZQABBQtudW1iZXJDZm1tcwUERE9XTgQWdG90YWxEaXN0cmlidXRlZEFtb3VudAkAaAIFCHF1b3RpZW50BQtudW1iZXJDZm1tcwQPcmVtYWluaW5nQW1vdW50CQBlAgUKZGlmZmVyZW5jZQUWdG90YWxEaXN0cmlidXRlZEFtb3VudAMJAGYCBQ9yZW1haW5pbmdBbW91bnQAAAkAlAoCBQhxdW90aWVudAUPcmVtYWluaW5nQW1vdW50CQCUCgIFCHF1b3RpZW50AAABH2NhbGNFeGNlc3NBbW91bnRQZXJDZm1tTmVnYXRpdmUCCmRpZmZlcmVuY2ULbnVtYmVyQ2ZtbXMECHF1b3RpZW50CQBuBAUKZGlmZmVyZW5jZQABBQtudW1iZXJDZm1tcwUERE9XTgQWdG90YWxEaXN0cmlidXRlZEFtb3VudAkAaAIFCHF1b3RpZW50BQtudW1iZXJDZm1tcwQPcmVtYWluaW5nQW1vdW50CQBlAgUKZGlmZmVyZW5jZQUWdG90YWxEaXN0cmlidXRlZEFtb3VudAMJAGYCAAAFD3JlbWFpbmluZ0Ftb3VudAkAlAoCBQhxdW90aWVudAUPcmVtYWluaW5nQW1vdW50CQCUCgIFCHF1b3RpZW50AAABGmRpc3RyaWJ1dGVBZGRpdGlvbmFsVG9rZW5zAgVzd2FwcwRkaWZmBAp0b3RhbFN3YXBzCQCQAwEFBXN3YXBzBAskdDA3OTk3ODA4MAkBH2NhbGNFeGNlc3NBbW91bnRQZXJDZm1tUG9zaXRpdmUCBQRkaWZmBQp0b3RhbFN3YXBzBAhxdW90aWVudAgFCyR0MDc5OTc4MDgwAl8xBA9yZW1haW5pbmdBbW91bnQIBQskdDA3OTk3ODA4MAJfMgoBDWFkanVzdEFtb3VudHMCBWFjY3VtBG5leHQECyR0MDgxNTM4MTk1BQVhY2N1bQQNYWRqdXN0ZWRTd2FwcwgFCyR0MDgxNTM4MTk1Al8xBA1yZW1haW5pbmdEaWZmCAULJHQwODE1MzgxOTUCXzIEBGl0ZW0JAQ1zcGxpdENmbW1Kc29uAQUEbmV4dAQLaW5wdXRBbW91bnQJALYJAQkAkQMCBQRpdGVtAAIEByRtYXRjaDAFC2lucHV0QW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQFaW5wdXQFByRtYXRjaDAEDmFtb3VudFRvQWRqdXN0AwkAZgIFDXJlbWFpbmluZ0RpZmYAAAkAZAIJAGQCBQVpbnB1dAUIcXVvdGllbnQAAQkAZAIFBWlucHV0BQhxdW90aWVudAQHbmV3SXRlbQkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFBGl0ZW0AAAIBLwkAkQMCBQRpdGVtAAECAS8JAKQDAQUOYW1vdW50VG9BZGp1c3QEEG5ld1JlbWFpbmluZ0RpZmYDCQBmAgUNcmVtYWluaW5nRGlmZgAACQBlAgUNcmVtYWluaW5nRGlmZgABBQ1yZW1haW5pbmdEaWZmCQCUCgIJAM0IAgUNYWRqdXN0ZWRTd2FwcwUHbmV3SXRlbQUQbmV3UmVtYWluaW5nRGlmZgkAAgECGUlucHV0IGhhcyB3cm9uZyBkYXRhdHlwZSEEBnJlc3VsdAoAAiRsBQVzd2FwcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQ9yZW1haW5pbmdBbW91bnQKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWFkanVzdEFtb3VudHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDQwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgIBQZyZXN1bHQCXzEBGGRpc3RyaWJ1dGVSZW1haW5pbmdEaWZmcwINcmVtYWluaW5nRGlmZgVzd2FwcwoBFmRpc3RyaWJ1dGVQcm9wb3J0aW9uYWwCBWFjY3VtBG5leHQECyR0MDkwNzE5MTEwBQVhY2N1bQQNYWRqdXN0ZWRTd2FwcwgFCyR0MDkwNzE5MTEwAl8xBApyZW1haW5EaWZmCAULJHQwOTA3MTkxMTACXzIEBGl0ZW0JAQ1zcGxpdENmbW1Kc29uAQUEbmV4dAQLaW5wdXRBbW91bnQJALYJAQkAkQMCBQRpdGVtAAIEEGlucHV0QW1vdW50Q2hlY2sEByRtYXRjaDAFC2lucHV0QW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQFaW5wdXQFByRtYXRjaDAFBWlucHV0CQACAQIkSW5wdXQgYW1vdW50IGhhcyB0aGUgd3JvbmcgZGF0YSB0eXBlBA9tYXhTdWJ0cmFjdGFibGUDCQBmAgUQaW5wdXRBbW91bnRDaGVjawAECQBrAwUQaW5wdXRBbW91bnRDaGVjawADAAQAAAQMJHQwOTUwODEwMTIyAwMJAAACBQpyZW1haW5EaWZmAAAGCQAAAgUPbWF4U3VidHJhY3RhYmxlAAAJAJQKAgUKcmVtYWluRGlmZgAAAwkAZgIJAGQCBQpyZW1haW5EaWZmBQ9tYXhTdWJ0cmFjdGFibGUAAAQVcmVtYWluaW5nU3VidHJhY3RhYmxlCQBkAgUKcmVtYWluRGlmZgUPbWF4U3VidHJhY3RhYmxlCQCUCgIAAAkAZQIFD21heFN1YnRyYWN0YWJsZQUVcmVtYWluaW5nU3VidHJhY3RhYmxlAwkAZgIAAAkAZAIFCnJlbWFpbkRpZmYFD21heFN1YnRyYWN0YWJsZQkAlAoCCQBkAgUKcmVtYWluRGlmZgUPbWF4U3VidHJhY3RhYmxlBQ9tYXhTdWJ0cmFjdGFibGUJAJQKAgAABQ9tYXhTdWJ0cmFjdGFibGUEEG5ld1JlbWFpbmluZ0RpZmYIBQwkdDA5NTA4MTAxMjICXzEEEnN1YnRyYWN0YWJsZUFtb3VudAgFDCR0MDk1MDgxMDEyMgJfMgQOYW1vdW50VG9BZGp1c3QJAGUCBRBpbnB1dEFtb3VudENoZWNrBRJzdWJ0cmFjdGFibGVBbW91bnQEB25ld0l0ZW0JAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQRpdGVtAAACAS8JAJEDAgUEaXRlbQABAgEvCQCkAwEFDmFtb3VudFRvQWRqdXN0CQCUCgIJAM0IAgUNYWRqdXN0ZWRTd2FwcwUHbmV3SXRlbQUQbmV3UmVtYWluaW5nRGlmZgoAAiRsBQVzd2FwcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQ1yZW1haW5pbmdEaWZmCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARZkaXN0cmlidXRlUHJvcG9ydGlvbmFsAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoARhkaXN0cmlidXRlTmVnYXRpdmVUb2tlbnMCBXN3YXBzBGRpZmYECnRvdGFsU3dhcHMJAJADAQUFc3dhcHMEDSR0MDEwNDg3MTA1NzAJAR9jYWxjRXhjZXNzQW1vdW50UGVyQ2ZtbU5lZ2F0aXZlAgUEZGlmZgUKdG90YWxTd2FwcwQIcXVvdGllbnQIBQ0kdDAxMDQ4NzEwNTcwAl8xBA9yZW1haW5pbmdBbW91bnQIBQ0kdDAxMDQ4NzEwNTcwAl8yCgENYWRqdXN0QW1vdW50cwIFYWNjdW0EbmV4dAQNJHQwMTA2NDMxMDY4NQUFYWNjdW0EDWFkanVzdGVkU3dhcHMIBQ0kdDAxMDY0MzEwNjg1Al8xBA1yZW1haW5pbmdEaWZmCAUNJHQwMTA2NDMxMDY4NQJfMgQEaXRlbQkBDXNwbGl0Q2ZtbUpzb24BBQRuZXh0BAtpbnB1dEFtb3VudAkAtgkBCQCRAwIFBGl0ZW0AAgQHJG1hdGNoMAULaW5wdXRBbW91bnQDCQABAgUHJG1hdGNoMAIDSW50BAVpbnB1dAUHJG1hdGNoMAQNJHQwMTA4MjIxMTE3MgMJAGcCCQBkAgUFaW5wdXQFCHF1b3RpZW50AAEDAwkAZgIFDXJlbWFpbmluZ0RpZmYAAAkAZwIJAGUCCQBkAgUFaW5wdXQFCHF1b3RpZW50AAEAAQcJAJQKAgkAZQIJAGQCBQVpbnB1dAUIcXVvdGllbnQAAQkAZQIFDXJlbWFpbmluZ0RpZmYAAQkAlAoCCQBkAgUFaW5wdXQFCHF1b3RpZW50BQ1yZW1haW5pbmdEaWZmCQCUCgIFBWlucHV0CQBkAgUNcmVtYWluaW5nRGlmZgUIcXVvdGllbnQEDmFtb3VudFRvQWRqdXN0CAUNJHQwMTA4MjIxMTE3MgJfMQQQbmV3UmVtYWluaW5nRGlmZggFDSR0MDEwODIyMTExNzICXzIEB25ld0l0ZW0JAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQRpdGVtAAACAS8JAJEDAgUEaXRlbQABAgEvCQCkAwEFDmFtb3VudFRvQWRqdXN0CQCUCgIJAM0IAgUNYWRqdXN0ZWRTd2FwcwUHbmV3SXRlbQUQbmV3UmVtYWluaW5nRGlmZgkAAgECGUlucHV0IGhhcyB3cm9uZyBkYXRhdHlwZSEEDSR0MDExMzcxMTE0NjIKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUPcmVtYWluaW5nQW1vdW50CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1hZGp1c3RBbW91bnRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoBA1hZGp1c3RlZFN3YXBzCAUNJHQwMTEzNzExMTQ2MgJfMQQOcmVtYWluaW5nRGlmZnMIBQ0kdDAxMTM3MTExNDYyAl8yBA0kdDAxMTQ2NjExNTQ2CQEYZGlzdHJpYnV0ZVJlbWFpbmluZ0RpZmZzAgUOcmVtYWluaW5nRGlmZnMFDWFkanVzdGVkU3dhcHMECmZpbmFsU3dhcHMIBQ0kdDAxMTQ2NjExNTQ2Al8xBAVkaWZmcwgFDSR0MDExNDY2MTE1NDYCXzIFCmZpbmFsU3dhcHMBF2hhbmRsZVNlY29uZElucHV0QW1vdW50AxNwcmVkZXRlcm1pbmVkQW1vdW50D2F2YWlsYWJsZUFtb3VudAVzd2FwcwQEZGlmZgkAZQIFD2F2YWlsYWJsZUFtb3VudAUTcHJlZGV0ZXJtaW5lZEFtb3VudAQNYWRqdXN0ZWRTd2FwcwMJAGYCBQRkaWZmAAAJARpkaXN0cmlidXRlQWRkaXRpb25hbFRva2VucwIFBXN3YXBzBQRkaWZmAwkAZgIAAAUEZGlmZgkBGGRpc3RyaWJ1dGVOZWdhdGl2ZVRva2VucwIFBXN3YXBzBQRkaWZmBQVzd2FwcwUNYWRqdXN0ZWRTd2FwcwUBaQEFc2V0dXAAAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzAgVhZG1pbgkAzAgCCQELd3JpdGVTdHJpbmcCAgVhZG1pbgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwJAAIBAhNEYXBwIGFscmVhZHkgc2V0dXAhAWkBCGJhc2ljQXJiBgtzdGFydEFtb3VudA5zZWNvbmRBbW91bnRJbgpmaXJzdFRva2VuC3NlY29uZFRva2VuCWZpcnN0U3dhcApzZWNvbmRTd2FwAwkBB2lzQWRtaW4BCAgFAWkGY2FsbGVyBWJ5dGVzBBlhdmFpbGFibGVBbW91bnRGaXJzdFRva2VuAwkAAAIFCmZpcnN0VG9rZW4CBVdBVkVTBAdiYWxhbmNlCQDvBwEFBHRoaXMIBQdiYWxhbmNlCWF2YWlsYWJsZQQMZmlyc3RUb2tlbklkBAN0SWQJANkEAQUKZmlyc3RUb2tlbgQHJG1hdGNoMAUDdElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEA3RJZAUHJG1hdGNoMAUDdElkCQACAQIQSW52YWxpZCBkYXRhdHlwZQkA8AcCBQR0aGlzBQxmaXJzdFRva2VuSWQDCQBnAgUZYXZhaWxhYmxlQW1vdW50Rmlyc3RUb2tlbgULc3RhcnRBbW91bnQEC2ZpcnN0UmVzdWx0CQEMcHJvY2Vzc0NmbW1zAwUJZmlyc3RTd2FwBQpmaXJzdFRva2VuBQtzZWNvbmRUb2tlbgQLc2Vjb25kU3dhcHMDCQAAAgULZmlyc3RSZXN1bHQFDnNlY29uZEFtb3VudEluBQpzZWNvbmRTd2FwCQEXaGFuZGxlU2Vjb25kSW5wdXRBbW91bnQDBQ5zZWNvbmRBbW91bnRJbgULZmlyc3RSZXN1bHQFCnNlY29uZFN3YXAEDHNlY29uZFJlc3VsdAkBDHByb2Nlc3NDZm1tcwMFC3NlY29uZFN3YXBzBQtzZWNvbmRUb2tlbgUKZmlyc3RUb2tlbgMJAGYCBQxzZWNvbmRSZXN1bHQFC3N0YXJ0QW1vdW50CQCUCgIJAMwIAgkBDHdyaXRlSW50ZWdlcgIJAKwCAgIKQXJiUmVzdWx0XwkApAMBBQphcmJDb3VudGVyCQBlAgUMc2Vjb25kUmVzdWx0BQtzdGFydEFtb3VudAkAzAgCCQELd3JpdGVTdHJpbmcCCQCsAgICEEFyYlJlc3VsdCBUb2tlbl8JAKQDAQUKYXJiQ291bnRlcgUKZmlyc3RUb2tlbgkAzAgCCQEMd3JpdGVJbnRlZ2VyAgIKYXJiQ291bnRlcgkAZAIFCmFyYkNvdW50ZXIAAQUDbmlsCQBlAgUMc2Vjb25kUmVzdWx0BQtzdGFydEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICKFRyYWRlIHdhcyBub3QgcHJvZml0YWJsZSEgSW5wdXQgYW1vdW50OiAJAKQDAQULc3RhcnRBbW91bnQCECBPdXRwdXQgYW1vdW50OiAJAKQDAQUMc2Vjb25kUmVzdWx0CQACAQIpQXZhaWxhYmxlIGlucHV0IGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCEJAAIBAipBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHdpdGggYWRtaW4gYWRkcmVzcyEBaQERdXBkYXRlU3RyaW5nRW50cnkCA2tleQtzdHJpbmdWYWx1ZQMJAQdpc0FkbWluAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELd3JpdGVTdHJpbmcCBQNrZXkFC3N0cmluZ1ZhbHVlBQNuaWwJAAIBAipBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHdpdGggYWRtaW4gYWRkcmVzcyEBaQESdXBkYXRlSW50ZWdlckVudHJ5AgNrZXkMaW50ZWdlclZhbHVlAwkBB2lzQWRtaW4BCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQx3cml0ZUludGVnZXICBQNrZXkFDGludGVnZXJWYWx1ZQUDbmlsCQACAQIqQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCB3aXRoIGFkbWluIGFkZHJlc3MhAWkBEmRlbGV0ZVN0b3JhZ2VFbnRyeQEDa2V5AwkBB2lzQWRtaW4BCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtEZWxldGVFbnRyeQEFA2tleQUDbmlsCQACAQIqQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCB3aXRoIGFkbWluIGFkZHJlc3MhAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleXaEJSc=", "height": 3862588, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FQaEmXf6Cx8tvCBGzLqkMMu8ou4zS5FmRu5NF7hNBjpX Next: DqgaCDsr1fvNLHXxejT8bpgZwsPHyABFuZSGGg4tPdBw Diff:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = valueOrElse(getString(this, "admin"), "") | |
5 | 5 | ||
6 | - | let b = " | |
6 | + | let b = valueOrElse(getInteger(this, "arbCounter"), 0) | |
7 | 7 | ||
8 | - | func c (d,e) = StringEntry(d, e) | |
8 | + | let c = "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93" | |
9 | + | ||
10 | + | func d (e,f) = StringEntry(e, f) | |
9 | 11 | ||
10 | 12 | ||
11 | - | func | |
13 | + | func g (e,h) = IntegerEntry(e, h) | |
12 | 14 | ||
13 | 15 | ||
14 | - | func | |
16 | + | func i (j) = if ((j == fromBase58String(a))) | |
15 | 17 | then true | |
16 | 18 | else false | |
17 | 19 | ||
18 | 20 | ||
19 | - | func | |
21 | + | func k (l) = split(l, "/") | |
20 | 22 | ||
21 | 23 | ||
22 | - | func | |
23 | - | let | |
24 | + | func m (n,o,p) = { | |
25 | + | let q = if ((o == "WAVES")) | |
24 | 26 | then unit | |
25 | - | else fromBase58String( | |
26 | - | let | |
27 | - | if (( | |
27 | + | else fromBase58String(o) | |
28 | + | let r = invoke(addressFromStringValue(n), "exchange", [1], [AttachedPayment(q, p)]) | |
29 | + | if ((r == r)) | |
28 | 30 | then { | |
29 | - | let | |
30 | - | if ($isInstanceOf( | |
31 | + | let s = r | |
32 | + | if ($isInstanceOf(s, "List[Any]")) | |
31 | 33 | then { | |
32 | - | let | |
33 | - | let | |
34 | - | if ($isInstanceOf( | |
34 | + | let r = s | |
35 | + | let t = r[0] | |
36 | + | if ($isInstanceOf(t, "Int")) | |
35 | 37 | then { | |
36 | - | let | |
37 | - | | |
38 | + | let u = t | |
39 | + | u | |
38 | 40 | } | |
39 | 41 | else throw("List item is not an int!") | |
40 | 42 | } | |
44 | 46 | } | |
45 | 47 | ||
46 | 48 | ||
47 | - | func | |
48 | - | let | |
49 | + | func v (w,x,p) = { | |
50 | + | let y = if ((w == "WAVES")) | |
49 | 51 | then unit | |
50 | - | else fromBase58String( | |
51 | - | let | |
52 | + | else fromBase58String(w) | |
53 | + | let z = if ((x == "WAVES")) | |
52 | 54 | then "" | |
53 | - | else | |
54 | - | let | |
55 | - | if (( | |
55 | + | else x | |
56 | + | let A = invoke(addressFromStringValue(c), "swap", [1, z, toString(this)], [AttachedPayment(y, p)]) | |
57 | + | if ((A == A)) | |
56 | 58 | then { | |
57 | - | let | |
58 | - | if ($isInstanceOf( | |
59 | + | let s = A | |
60 | + | if ($isInstanceOf(s, "Int")) | |
59 | 61 | then { | |
60 | - | let | |
61 | - | | |
62 | + | let A = s | |
63 | + | A | |
62 | 64 | } | |
63 | 65 | else throw("Result of swop invokation does not match!") | |
64 | 66 | } | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
70 | - | let | |
71 | + | func B (n,w,x,p) = { | |
72 | + | let y = if ((w == "WAVES")) | |
71 | 73 | then unit | |
72 | - | else fromBase58String( | |
73 | - | let | |
74 | - | if (( | |
74 | + | else fromBase58String(w) | |
75 | + | let r = invoke(addressFromStringValue(n), "swap", [x, 1], [AttachedPayment(y, p)]) | |
76 | + | if ((r == r)) | |
75 | 77 | then { | |
76 | - | let | |
77 | - | if ($isInstanceOf( | |
78 | + | let s = r | |
79 | + | if ($isInstanceOf(s, "Int")) | |
78 | 80 | then { | |
79 | - | let | |
80 | - | | |
81 | + | let r = s | |
82 | + | r | |
81 | 83 | } | |
82 | 84 | else throw("Result of swop invokation does not match!") | |
83 | 85 | } | |
85 | 87 | } | |
86 | 88 | ||
87 | 89 | ||
88 | - | func | |
89 | - | let | |
90 | - | let | |
91 | - | let | |
92 | - | let | |
93 | - | if ($isInstanceOf( | |
90 | + | func C (D,w,x) = { | |
91 | + | let E = k(D) | |
92 | + | let p = parseInt(E[2]) | |
93 | + | let F = { | |
94 | + | let s = p | |
95 | + | if ($isInstanceOf(s, "Int")) | |
94 | 96 | then { | |
95 | - | let | |
96 | - | | |
97 | + | let p = s | |
98 | + | p | |
97 | 99 | } | |
98 | 100 | else throw("Datatype of input amount does not match!") | |
99 | 101 | } | |
100 | - | let | |
101 | - | then | |
102 | - | else if (( | |
103 | - | then | |
104 | - | else if (( | |
105 | - | then | |
102 | + | let r = if ((E[0] == "SWOP")) | |
103 | + | then m(E[1], w, F) | |
104 | + | else if ((E[0] == "Waves Exchange")) | |
105 | + | then v(w, x, F) | |
106 | + | else if ((E[0] == "Puzzle Swap")) | |
107 | + | then B(E[1], w, x, F) | |
106 | 108 | else throw("Platform id does not match!") | |
107 | - | | |
109 | + | r | |
108 | 110 | } | |
109 | 111 | ||
110 | 112 | ||
111 | - | func | |
112 | - | func | |
113 | - | let | |
114 | - | let | |
115 | - | let | |
116 | - | if ((size( | |
117 | - | then $Tuple2(( | |
118 | - | else $Tuple2( | |
113 | + | func G (H,w,x) = { | |
114 | + | func I (J,K) = { | |
115 | + | let L = J | |
116 | + | let r = L._1 | |
117 | + | let M = L._2 | |
118 | + | if ((size(H) > M)) | |
119 | + | then $Tuple2((r + C(K, w, x)), (M + 1)) | |
120 | + | else $Tuple2(r, M) | |
119 | 121 | } | |
120 | 122 | ||
121 | - | let | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | func | |
126 | - | then | |
127 | - | else | |
123 | + | let N = { | |
124 | + | let O = H | |
125 | + | let P = size(O) | |
126 | + | let Q = $Tuple2(0, 0) | |
127 | + | func R (S,T) = if ((T >= P)) | |
128 | + | then S | |
129 | + | else I(S, O[T]) | |
128 | 130 | ||
129 | - | func | |
130 | - | then | |
131 | + | func U (S,T) = if ((T >= P)) | |
132 | + | then S | |
131 | 133 | else throw("List size exceeds 40") | |
132 | 134 | ||
133 | - | | |
135 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
134 | 136 | } | |
135 | - | | |
137 | + | N._1 | |
136 | 138 | } | |
137 | 139 | ||
138 | 140 | ||
139 | - | func | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | if (( | |
144 | - | then $Tuple2( | |
145 | - | else $Tuple2( | |
141 | + | func V (W,X) = { | |
142 | + | let Y = fraction(W, 1, X, DOWN) | |
143 | + | let Z = (Y * X) | |
144 | + | let aa = (W - Z) | |
145 | + | if ((aa > 0)) | |
146 | + | then $Tuple2(Y, aa) | |
147 | + | else $Tuple2(Y, 0) | |
146 | 148 | } | |
147 | 149 | ||
148 | 150 | ||
149 | - | func | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | if ((0 > | |
154 | - | then $Tuple2( | |
155 | - | else $Tuple2( | |
151 | + | func ab (W,X) = { | |
152 | + | let Y = fraction(W, 1, X, DOWN) | |
153 | + | let Z = (Y * X) | |
154 | + | let aa = (W - Z) | |
155 | + | if ((0 > aa)) | |
156 | + | then $Tuple2(Y, aa) | |
157 | + | else $Tuple2(Y, 0) | |
156 | 158 | } | |
157 | 159 | ||
158 | 160 | ||
159 | - | func | |
160 | - | let | |
161 | - | let | |
162 | - | let | |
163 | - | let | |
164 | - | func | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | if ($isInstanceOf( | |
161 | + | func ac (H,ad) = { | |
162 | + | let ae = size(H) | |
163 | + | let af = V(ad, ae) | |
164 | + | let Y = af._1 | |
165 | + | let aa = af._2 | |
166 | + | func ag (J,K) = { | |
167 | + | let ah = J | |
168 | + | let ai = ah._1 | |
169 | + | let aj = ah._2 | |
170 | + | let E = k(K) | |
171 | + | let p = parseInt(E[2]) | |
172 | + | let s = p | |
173 | + | if ($isInstanceOf(s, "Int")) | |
172 | 174 | then { | |
173 | - | let | |
174 | - | let | |
175 | - | then (( | |
176 | - | else ( | |
177 | - | let | |
178 | - | let | |
179 | - | then ( | |
180 | - | else | |
181 | - | $Tuple2(( | |
175 | + | let F = s | |
176 | + | let ak = if ((aj > 0)) | |
177 | + | then ((F + Y) + 1) | |
178 | + | else (F + Y) | |
179 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
180 | + | let am = if ((aj > 0)) | |
181 | + | then (aj - 1) | |
182 | + | else aj | |
183 | + | $Tuple2((ai :+ al), am) | |
182 | 184 | } | |
183 | 185 | else throw("Input has wrong datatype!") | |
184 | 186 | } | |
185 | 187 | ||
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | func | |
191 | - | then | |
192 | - | else | |
188 | + | let r = { | |
189 | + | let O = H | |
190 | + | let P = size(O) | |
191 | + | let Q = $Tuple2(nil, aa) | |
192 | + | func R (S,T) = if ((T >= P)) | |
193 | + | then S | |
194 | + | else ag(S, O[T]) | |
193 | 195 | ||
194 | - | func | |
195 | - | then | |
196 | + | func U (S,T) = if ((T >= P)) | |
197 | + | then S | |
196 | 198 | else throw("List size exceeds 40") | |
197 | 199 | ||
198 | - | | |
200 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
199 | 201 | } | |
200 | - | | |
202 | + | r._1 | |
201 | 203 | } | |
202 | 204 | ||
203 | 205 | ||
204 | - | func | |
205 | - | func | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | if ($isInstanceOf( | |
206 | + | func an (aj,H) = { | |
207 | + | func ao (J,K) = { | |
208 | + | let ap = J | |
209 | + | let ai = ap._1 | |
210 | + | let aq = ap._2 | |
211 | + | let E = k(K) | |
212 | + | let p = parseInt(E[2]) | |
213 | + | let ar = { | |
214 | + | let s = p | |
215 | + | if ($isInstanceOf(s, "Int")) | |
214 | 216 | then { | |
215 | - | let | |
216 | - | | |
217 | + | let F = s | |
218 | + | F | |
217 | 219 | } | |
218 | 220 | else throw("Input amount has the wrong data type") | |
219 | 221 | } | |
220 | - | let | |
221 | - | then fraction( | |
222 | + | let as = if ((ar > 4)) | |
223 | + | then fraction(ar, 3, 4) | |
222 | 224 | else 0 | |
223 | - | let | |
225 | + | let at = if (if ((aq == 0)) | |
224 | 226 | then true | |
225 | - | else ( | |
226 | - | then $Tuple2( | |
227 | - | else if ((( | |
227 | + | else (as == 0)) | |
228 | + | then $Tuple2(aq, 0) | |
229 | + | else if (((aq + as) > 0)) | |
228 | 230 | then { | |
229 | - | let | |
230 | - | $Tuple2(0, ( | |
231 | + | let au = (aq + as) | |
232 | + | $Tuple2(0, (as - au)) | |
231 | 233 | } | |
232 | - | else if ((0 > ( | |
233 | - | then $Tuple2(( | |
234 | - | else $Tuple2(0, | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | $Tuple2(( | |
234 | + | else if ((0 > (aq + as))) | |
235 | + | then $Tuple2((aq + as), as) | |
236 | + | else $Tuple2(0, as) | |
237 | + | let am = at._1 | |
238 | + | let av = at._2 | |
239 | + | let ak = (ar - av) | |
240 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
241 | + | $Tuple2((ai :+ al), am) | |
240 | 242 | } | |
241 | 243 | ||
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | func | |
246 | - | then | |
247 | - | else | |
244 | + | let O = H | |
245 | + | let P = size(O) | |
246 | + | let Q = $Tuple2(nil, aj) | |
247 | + | func R (S,T) = if ((T >= P)) | |
248 | + | then S | |
249 | + | else ao(S, O[T]) | |
248 | 250 | ||
249 | - | func | |
250 | - | then | |
251 | + | func U (S,T) = if ((T >= P)) | |
252 | + | then S | |
251 | 253 | else throw("List size exceeds 40") | |
252 | 254 | ||
253 | - | | |
255 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
254 | 256 | } | |
255 | 257 | ||
256 | 258 | ||
257 | - | func | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | if ($isInstanceOf( | |
259 | + | func aw (H,ad) = { | |
260 | + | let ae = size(H) | |
261 | + | let ax = ab(ad, ae) | |
262 | + | let Y = ax._1 | |
263 | + | let aa = ax._2 | |
264 | + | func ag (J,K) = { | |
265 | + | let ay = J | |
266 | + | let ai = ay._1 | |
267 | + | let aj = ay._2 | |
268 | + | let E = k(K) | |
269 | + | let p = parseInt(E[2]) | |
270 | + | let s = p | |
271 | + | if ($isInstanceOf(s, "Int")) | |
270 | 272 | then { | |
271 | - | let | |
272 | - | let | |
273 | - | then if (if (( | |
274 | - | then ((( | |
273 | + | let F = s | |
274 | + | let az = if (((F + Y) >= 1)) | |
275 | + | then if (if ((aj > 0)) | |
276 | + | then (((F + Y) - 1) >= 1) | |
275 | 277 | else false) | |
276 | - | then $Tuple2((( | |
277 | - | else $Tuple2(( | |
278 | - | else $Tuple2( | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | $Tuple2(( | |
278 | + | then $Tuple2(((F + Y) - 1), (aj - 1)) | |
279 | + | else $Tuple2((F + Y), aj) | |
280 | + | else $Tuple2(F, (aj + Y)) | |
281 | + | let ak = az._1 | |
282 | + | let am = az._2 | |
283 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
284 | + | $Tuple2((ai :+ al), am) | |
283 | 285 | } | |
284 | 286 | else throw("Input has wrong datatype!") | |
285 | 287 | } | |
286 | 288 | ||
287 | - | let | |
288 | - | let | |
289 | - | let | |
290 | - | let | |
291 | - | func | |
292 | - | then | |
293 | - | else | |
289 | + | let aA = { | |
290 | + | let O = H | |
291 | + | let P = size(O) | |
292 | + | let Q = $Tuple2(nil, aa) | |
293 | + | func R (S,T) = if ((T >= P)) | |
294 | + | then S | |
295 | + | else ag(S, O[T]) | |
294 | 296 | ||
295 | - | func | |
296 | - | then | |
297 | + | func U (S,T) = if ((T >= P)) | |
298 | + | then S | |
297 | 299 | else throw("List size exceeds 40") | |
298 | 300 | ||
299 | - | | |
301 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
300 | 302 | } | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | let | |
306 | - | | |
303 | + | let ai = aA._1 | |
304 | + | let aB = aA._2 | |
305 | + | let aC = an(aB, ai) | |
306 | + | let aD = aC._1 | |
307 | + | let aE = aC._2 | |
308 | + | aD | |
307 | 309 | } | |
308 | 310 | ||
309 | 311 | ||
310 | - | func | |
311 | - | let | |
312 | - | let | |
313 | - | then | |
314 | - | else if ((0 > | |
315 | - | then | |
316 | - | else | |
317 | - | | |
312 | + | func aF (aG,aH,H) = { | |
313 | + | let ad = (aH - aG) | |
314 | + | let ai = if ((ad > 0)) | |
315 | + | then ac(H, ad) | |
316 | + | else if ((0 > ad)) | |
317 | + | then aw(H, ad) | |
318 | + | else H | |
319 | + | ai | |
318 | 320 | } | |
319 | 321 | ||
320 | 322 | ||
321 | - | @Callable( | |
323 | + | @Callable(aI) | |
322 | 324 | func setup () = if (!(isDefined(getString(this, "admin")))) | |
323 | - | then [ | |
325 | + | then [d("admin", toBase58String(aI.caller.bytes))] | |
324 | 326 | else throw("Dapp already setup!") | |
325 | 327 | ||
326 | 328 | ||
327 | 329 | ||
328 | - | @Callable( | |
329 | - | func basicArb ( | |
330 | + | @Callable(aI) | |
331 | + | func basicArb (aJ,aK,aL,aM,aN,aO) = if (i(aI.caller.bytes)) | |
330 | 332 | then { | |
331 | - | let | |
333 | + | let aP = if ((aL == "WAVES")) | |
332 | 334 | then { | |
333 | - | let | |
334 | - | | |
335 | + | let aQ = wavesBalance(this) | |
336 | + | aQ.available | |
335 | 337 | } | |
336 | 338 | else { | |
337 | - | let | |
338 | - | let | |
339 | - | let | |
340 | - | if ($isInstanceOf( | |
339 | + | let aR = { | |
340 | + | let aS = fromBase58String(aL) | |
341 | + | let s = aS | |
342 | + | if ($isInstanceOf(s, "ByteVector")) | |
341 | 343 | then { | |
342 | - | let | |
343 | - | | |
344 | + | let aS = s | |
345 | + | aS | |
344 | 346 | } | |
345 | 347 | else throw("Invalid datatype") | |
346 | 348 | } | |
347 | - | assetBalance(this, | |
349 | + | assetBalance(this, aR) | |
348 | 350 | } | |
349 | - | if (( | |
351 | + | if ((aP >= aJ)) | |
350 | 352 | then { | |
351 | - | let | |
352 | - | let | |
353 | - | then | |
354 | - | else | |
355 | - | let | |
356 | - | if (( | |
357 | - | then $Tuple2( | |
358 | - | else throw(((("Trade was not profitable! Input amount: " + toString( | |
353 | + | let aT = G(aN, aL, aM) | |
354 | + | let aU = if ((aT == aK)) | |
355 | + | then aO | |
356 | + | else aF(aK, aT, aO) | |
357 | + | let aV = G(aU, aM, aL) | |
358 | + | if ((aV > aJ)) | |
359 | + | then $Tuple2([g(("ArbResult_" + toString(b)), (aV - aJ)), d(("ArbResult Token_" + toString(b)), aL), g("arbCounter", (b + 1))], (aV - aJ)) | |
360 | + | else throw(((("Trade was not profitable! Input amount: " + toString(aJ)) + " Output amount: ") + toString(aV))) | |
359 | 361 | } | |
360 | 362 | else throw("Available input amount is not sufficient!") | |
361 | 363 | } | |
363 | 365 | ||
364 | 366 | ||
365 | 367 | ||
366 | - | @Callable( | |
367 | - | func updateStringEntry ( | |
368 | - | then [ | |
368 | + | @Callable(aI) | |
369 | + | func updateStringEntry (e,f) = if (i(aI.caller.bytes)) | |
370 | + | then [d(e, f)] | |
369 | 371 | else throw("Address does not match with admin address!") | |
370 | 372 | ||
371 | 373 | ||
372 | 374 | ||
373 | - | @Callable( | |
374 | - | func updateIntegerEntry ( | |
375 | - | then [ | |
375 | + | @Callable(aI) | |
376 | + | func updateIntegerEntry (e,h) = if (i(aI.caller.bytes)) | |
377 | + | then [g(e, h)] | |
376 | 378 | else throw("Address does not match with admin address!") | |
377 | 379 | ||
378 | 380 | ||
379 | 381 | ||
380 | - | @Callable( | |
381 | - | func deleteStorageEntry ( | |
382 | - | then [DeleteEntry( | |
382 | + | @Callable(aI) | |
383 | + | func deleteStorageEntry (e) = if (i(aI.caller.bytes)) | |
384 | + | then [DeleteEntry(e)] | |
383 | 385 | else throw("Address does not match with admin address!") | |
384 | 386 | ||
385 | 387 | ||
386 | - | @Verifier( | |
387 | - | func | |
388 | + | @Verifier(aW) | |
389 | + | func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey) | |
388 | 390 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = valueOrElse(getString(this, "admin"), "") | |
5 | 5 | ||
6 | - | let b = " | |
6 | + | let b = valueOrElse(getInteger(this, "arbCounter"), 0) | |
7 | 7 | ||
8 | - | func c (d,e) = StringEntry(d, e) | |
8 | + | let c = "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93" | |
9 | + | ||
10 | + | func d (e,f) = StringEntry(e, f) | |
9 | 11 | ||
10 | 12 | ||
11 | - | func | |
13 | + | func g (e,h) = IntegerEntry(e, h) | |
12 | 14 | ||
13 | 15 | ||
14 | - | func | |
16 | + | func i (j) = if ((j == fromBase58String(a))) | |
15 | 17 | then true | |
16 | 18 | else false | |
17 | 19 | ||
18 | 20 | ||
19 | - | func | |
21 | + | func k (l) = split(l, "/") | |
20 | 22 | ||
21 | 23 | ||
22 | - | func | |
23 | - | let | |
24 | + | func m (n,o,p) = { | |
25 | + | let q = if ((o == "WAVES")) | |
24 | 26 | then unit | |
25 | - | else fromBase58String( | |
26 | - | let | |
27 | - | if (( | |
27 | + | else fromBase58String(o) | |
28 | + | let r = invoke(addressFromStringValue(n), "exchange", [1], [AttachedPayment(q, p)]) | |
29 | + | if ((r == r)) | |
28 | 30 | then { | |
29 | - | let | |
30 | - | if ($isInstanceOf( | |
31 | + | let s = r | |
32 | + | if ($isInstanceOf(s, "List[Any]")) | |
31 | 33 | then { | |
32 | - | let | |
33 | - | let | |
34 | - | if ($isInstanceOf( | |
34 | + | let r = s | |
35 | + | let t = r[0] | |
36 | + | if ($isInstanceOf(t, "Int")) | |
35 | 37 | then { | |
36 | - | let | |
37 | - | | |
38 | + | let u = t | |
39 | + | u | |
38 | 40 | } | |
39 | 41 | else throw("List item is not an int!") | |
40 | 42 | } | |
41 | 43 | else throw("Result of swop invokation does not match!") | |
42 | 44 | } | |
43 | 45 | else throw("Strict value is not equal to itself.") | |
44 | 46 | } | |
45 | 47 | ||
46 | 48 | ||
47 | - | func | |
48 | - | let | |
49 | + | func v (w,x,p) = { | |
50 | + | let y = if ((w == "WAVES")) | |
49 | 51 | then unit | |
50 | - | else fromBase58String( | |
51 | - | let | |
52 | + | else fromBase58String(w) | |
53 | + | let z = if ((x == "WAVES")) | |
52 | 54 | then "" | |
53 | - | else | |
54 | - | let | |
55 | - | if (( | |
55 | + | else x | |
56 | + | let A = invoke(addressFromStringValue(c), "swap", [1, z, toString(this)], [AttachedPayment(y, p)]) | |
57 | + | if ((A == A)) | |
56 | 58 | then { | |
57 | - | let | |
58 | - | if ($isInstanceOf( | |
59 | + | let s = A | |
60 | + | if ($isInstanceOf(s, "Int")) | |
59 | 61 | then { | |
60 | - | let | |
61 | - | | |
62 | + | let A = s | |
63 | + | A | |
62 | 64 | } | |
63 | 65 | else throw("Result of swop invokation does not match!") | |
64 | 66 | } | |
65 | 67 | else throw("Strict value is not equal to itself.") | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
70 | - | let | |
71 | + | func B (n,w,x,p) = { | |
72 | + | let y = if ((w == "WAVES")) | |
71 | 73 | then unit | |
72 | - | else fromBase58String( | |
73 | - | let | |
74 | - | if (( | |
74 | + | else fromBase58String(w) | |
75 | + | let r = invoke(addressFromStringValue(n), "swap", [x, 1], [AttachedPayment(y, p)]) | |
76 | + | if ((r == r)) | |
75 | 77 | then { | |
76 | - | let | |
77 | - | if ($isInstanceOf( | |
78 | + | let s = r | |
79 | + | if ($isInstanceOf(s, "Int")) | |
78 | 80 | then { | |
79 | - | let | |
80 | - | | |
81 | + | let r = s | |
82 | + | r | |
81 | 83 | } | |
82 | 84 | else throw("Result of swop invokation does not match!") | |
83 | 85 | } | |
84 | 86 | else throw("Strict value is not equal to itself.") | |
85 | 87 | } | |
86 | 88 | ||
87 | 89 | ||
88 | - | func | |
89 | - | let | |
90 | - | let | |
91 | - | let | |
92 | - | let | |
93 | - | if ($isInstanceOf( | |
90 | + | func C (D,w,x) = { | |
91 | + | let E = k(D) | |
92 | + | let p = parseInt(E[2]) | |
93 | + | let F = { | |
94 | + | let s = p | |
95 | + | if ($isInstanceOf(s, "Int")) | |
94 | 96 | then { | |
95 | - | let | |
96 | - | | |
97 | + | let p = s | |
98 | + | p | |
97 | 99 | } | |
98 | 100 | else throw("Datatype of input amount does not match!") | |
99 | 101 | } | |
100 | - | let | |
101 | - | then | |
102 | - | else if (( | |
103 | - | then | |
104 | - | else if (( | |
105 | - | then | |
102 | + | let r = if ((E[0] == "SWOP")) | |
103 | + | then m(E[1], w, F) | |
104 | + | else if ((E[0] == "Waves Exchange")) | |
105 | + | then v(w, x, F) | |
106 | + | else if ((E[0] == "Puzzle Swap")) | |
107 | + | then B(E[1], w, x, F) | |
106 | 108 | else throw("Platform id does not match!") | |
107 | - | | |
109 | + | r | |
108 | 110 | } | |
109 | 111 | ||
110 | 112 | ||
111 | - | func | |
112 | - | func | |
113 | - | let | |
114 | - | let | |
115 | - | let | |
116 | - | if ((size( | |
117 | - | then $Tuple2(( | |
118 | - | else $Tuple2( | |
113 | + | func G (H,w,x) = { | |
114 | + | func I (J,K) = { | |
115 | + | let L = J | |
116 | + | let r = L._1 | |
117 | + | let M = L._2 | |
118 | + | if ((size(H) > M)) | |
119 | + | then $Tuple2((r + C(K, w, x)), (M + 1)) | |
120 | + | else $Tuple2(r, M) | |
119 | 121 | } | |
120 | 122 | ||
121 | - | let | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | func | |
126 | - | then | |
127 | - | else | |
123 | + | let N = { | |
124 | + | let O = H | |
125 | + | let P = size(O) | |
126 | + | let Q = $Tuple2(0, 0) | |
127 | + | func R (S,T) = if ((T >= P)) | |
128 | + | then S | |
129 | + | else I(S, O[T]) | |
128 | 130 | ||
129 | - | func | |
130 | - | then | |
131 | + | func U (S,T) = if ((T >= P)) | |
132 | + | then S | |
131 | 133 | else throw("List size exceeds 40") | |
132 | 134 | ||
133 | - | | |
135 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
134 | 136 | } | |
135 | - | | |
137 | + | N._1 | |
136 | 138 | } | |
137 | 139 | ||
138 | 140 | ||
139 | - | func | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | if (( | |
144 | - | then $Tuple2( | |
145 | - | else $Tuple2( | |
141 | + | func V (W,X) = { | |
142 | + | let Y = fraction(W, 1, X, DOWN) | |
143 | + | let Z = (Y * X) | |
144 | + | let aa = (W - Z) | |
145 | + | if ((aa > 0)) | |
146 | + | then $Tuple2(Y, aa) | |
147 | + | else $Tuple2(Y, 0) | |
146 | 148 | } | |
147 | 149 | ||
148 | 150 | ||
149 | - | func | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | if ((0 > | |
154 | - | then $Tuple2( | |
155 | - | else $Tuple2( | |
151 | + | func ab (W,X) = { | |
152 | + | let Y = fraction(W, 1, X, DOWN) | |
153 | + | let Z = (Y * X) | |
154 | + | let aa = (W - Z) | |
155 | + | if ((0 > aa)) | |
156 | + | then $Tuple2(Y, aa) | |
157 | + | else $Tuple2(Y, 0) | |
156 | 158 | } | |
157 | 159 | ||
158 | 160 | ||
159 | - | func | |
160 | - | let | |
161 | - | let | |
162 | - | let | |
163 | - | let | |
164 | - | func | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | if ($isInstanceOf( | |
161 | + | func ac (H,ad) = { | |
162 | + | let ae = size(H) | |
163 | + | let af = V(ad, ae) | |
164 | + | let Y = af._1 | |
165 | + | let aa = af._2 | |
166 | + | func ag (J,K) = { | |
167 | + | let ah = J | |
168 | + | let ai = ah._1 | |
169 | + | let aj = ah._2 | |
170 | + | let E = k(K) | |
171 | + | let p = parseInt(E[2]) | |
172 | + | let s = p | |
173 | + | if ($isInstanceOf(s, "Int")) | |
172 | 174 | then { | |
173 | - | let | |
174 | - | let | |
175 | - | then (( | |
176 | - | else ( | |
177 | - | let | |
178 | - | let | |
179 | - | then ( | |
180 | - | else | |
181 | - | $Tuple2(( | |
175 | + | let F = s | |
176 | + | let ak = if ((aj > 0)) | |
177 | + | then ((F + Y) + 1) | |
178 | + | else (F + Y) | |
179 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
180 | + | let am = if ((aj > 0)) | |
181 | + | then (aj - 1) | |
182 | + | else aj | |
183 | + | $Tuple2((ai :+ al), am) | |
182 | 184 | } | |
183 | 185 | else throw("Input has wrong datatype!") | |
184 | 186 | } | |
185 | 187 | ||
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | func | |
191 | - | then | |
192 | - | else | |
188 | + | let r = { | |
189 | + | let O = H | |
190 | + | let P = size(O) | |
191 | + | let Q = $Tuple2(nil, aa) | |
192 | + | func R (S,T) = if ((T >= P)) | |
193 | + | then S | |
194 | + | else ag(S, O[T]) | |
193 | 195 | ||
194 | - | func | |
195 | - | then | |
196 | + | func U (S,T) = if ((T >= P)) | |
197 | + | then S | |
196 | 198 | else throw("List size exceeds 40") | |
197 | 199 | ||
198 | - | | |
200 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
199 | 201 | } | |
200 | - | | |
202 | + | r._1 | |
201 | 203 | } | |
202 | 204 | ||
203 | 205 | ||
204 | - | func | |
205 | - | func | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | if ($isInstanceOf( | |
206 | + | func an (aj,H) = { | |
207 | + | func ao (J,K) = { | |
208 | + | let ap = J | |
209 | + | let ai = ap._1 | |
210 | + | let aq = ap._2 | |
211 | + | let E = k(K) | |
212 | + | let p = parseInt(E[2]) | |
213 | + | let ar = { | |
214 | + | let s = p | |
215 | + | if ($isInstanceOf(s, "Int")) | |
214 | 216 | then { | |
215 | - | let | |
216 | - | | |
217 | + | let F = s | |
218 | + | F | |
217 | 219 | } | |
218 | 220 | else throw("Input amount has the wrong data type") | |
219 | 221 | } | |
220 | - | let | |
221 | - | then fraction( | |
222 | + | let as = if ((ar > 4)) | |
223 | + | then fraction(ar, 3, 4) | |
222 | 224 | else 0 | |
223 | - | let | |
225 | + | let at = if (if ((aq == 0)) | |
224 | 226 | then true | |
225 | - | else ( | |
226 | - | then $Tuple2( | |
227 | - | else if ((( | |
227 | + | else (as == 0)) | |
228 | + | then $Tuple2(aq, 0) | |
229 | + | else if (((aq + as) > 0)) | |
228 | 230 | then { | |
229 | - | let | |
230 | - | $Tuple2(0, ( | |
231 | + | let au = (aq + as) | |
232 | + | $Tuple2(0, (as - au)) | |
231 | 233 | } | |
232 | - | else if ((0 > ( | |
233 | - | then $Tuple2(( | |
234 | - | else $Tuple2(0, | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | $Tuple2(( | |
234 | + | else if ((0 > (aq + as))) | |
235 | + | then $Tuple2((aq + as), as) | |
236 | + | else $Tuple2(0, as) | |
237 | + | let am = at._1 | |
238 | + | let av = at._2 | |
239 | + | let ak = (ar - av) | |
240 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
241 | + | $Tuple2((ai :+ al), am) | |
240 | 242 | } | |
241 | 243 | ||
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | func | |
246 | - | then | |
247 | - | else | |
244 | + | let O = H | |
245 | + | let P = size(O) | |
246 | + | let Q = $Tuple2(nil, aj) | |
247 | + | func R (S,T) = if ((T >= P)) | |
248 | + | then S | |
249 | + | else ao(S, O[T]) | |
248 | 250 | ||
249 | - | func | |
250 | - | then | |
251 | + | func U (S,T) = if ((T >= P)) | |
252 | + | then S | |
251 | 253 | else throw("List size exceeds 40") | |
252 | 254 | ||
253 | - | | |
255 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
254 | 256 | } | |
255 | 257 | ||
256 | 258 | ||
257 | - | func | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | if ($isInstanceOf( | |
259 | + | func aw (H,ad) = { | |
260 | + | let ae = size(H) | |
261 | + | let ax = ab(ad, ae) | |
262 | + | let Y = ax._1 | |
263 | + | let aa = ax._2 | |
264 | + | func ag (J,K) = { | |
265 | + | let ay = J | |
266 | + | let ai = ay._1 | |
267 | + | let aj = ay._2 | |
268 | + | let E = k(K) | |
269 | + | let p = parseInt(E[2]) | |
270 | + | let s = p | |
271 | + | if ($isInstanceOf(s, "Int")) | |
270 | 272 | then { | |
271 | - | let | |
272 | - | let | |
273 | - | then if (if (( | |
274 | - | then ((( | |
273 | + | let F = s | |
274 | + | let az = if (((F + Y) >= 1)) | |
275 | + | then if (if ((aj > 0)) | |
276 | + | then (((F + Y) - 1) >= 1) | |
275 | 277 | else false) | |
276 | - | then $Tuple2((( | |
277 | - | else $Tuple2(( | |
278 | - | else $Tuple2( | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | $Tuple2(( | |
278 | + | then $Tuple2(((F + Y) - 1), (aj - 1)) | |
279 | + | else $Tuple2((F + Y), aj) | |
280 | + | else $Tuple2(F, (aj + Y)) | |
281 | + | let ak = az._1 | |
282 | + | let am = az._2 | |
283 | + | let al = ((((E[0] + "/") + E[1]) + "/") + toString(ak)) | |
284 | + | $Tuple2((ai :+ al), am) | |
283 | 285 | } | |
284 | 286 | else throw("Input has wrong datatype!") | |
285 | 287 | } | |
286 | 288 | ||
287 | - | let | |
288 | - | let | |
289 | - | let | |
290 | - | let | |
291 | - | func | |
292 | - | then | |
293 | - | else | |
289 | + | let aA = { | |
290 | + | let O = H | |
291 | + | let P = size(O) | |
292 | + | let Q = $Tuple2(nil, aa) | |
293 | + | func R (S,T) = if ((T >= P)) | |
294 | + | then S | |
295 | + | else ag(S, O[T]) | |
294 | 296 | ||
295 | - | func | |
296 | - | then | |
297 | + | func U (S,T) = if ((T >= P)) | |
298 | + | then S | |
297 | 299 | else throw("List size exceeds 40") | |
298 | 300 | ||
299 | - | | |
301 | + | U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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) | |
300 | 302 | } | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | let | |
306 | - | | |
303 | + | let ai = aA._1 | |
304 | + | let aB = aA._2 | |
305 | + | let aC = an(aB, ai) | |
306 | + | let aD = aC._1 | |
307 | + | let aE = aC._2 | |
308 | + | aD | |
307 | 309 | } | |
308 | 310 | ||
309 | 311 | ||
310 | - | func | |
311 | - | let | |
312 | - | let | |
313 | - | then | |
314 | - | else if ((0 > | |
315 | - | then | |
316 | - | else | |
317 | - | | |
312 | + | func aF (aG,aH,H) = { | |
313 | + | let ad = (aH - aG) | |
314 | + | let ai = if ((ad > 0)) | |
315 | + | then ac(H, ad) | |
316 | + | else if ((0 > ad)) | |
317 | + | then aw(H, ad) | |
318 | + | else H | |
319 | + | ai | |
318 | 320 | } | |
319 | 321 | ||
320 | 322 | ||
321 | - | @Callable( | |
323 | + | @Callable(aI) | |
322 | 324 | func setup () = if (!(isDefined(getString(this, "admin")))) | |
323 | - | then [ | |
325 | + | then [d("admin", toBase58String(aI.caller.bytes))] | |
324 | 326 | else throw("Dapp already setup!") | |
325 | 327 | ||
326 | 328 | ||
327 | 329 | ||
328 | - | @Callable( | |
329 | - | func basicArb ( | |
330 | + | @Callable(aI) | |
331 | + | func basicArb (aJ,aK,aL,aM,aN,aO) = if (i(aI.caller.bytes)) | |
330 | 332 | then { | |
331 | - | let | |
333 | + | let aP = if ((aL == "WAVES")) | |
332 | 334 | then { | |
333 | - | let | |
334 | - | | |
335 | + | let aQ = wavesBalance(this) | |
336 | + | aQ.available | |
335 | 337 | } | |
336 | 338 | else { | |
337 | - | let | |
338 | - | let | |
339 | - | let | |
340 | - | if ($isInstanceOf( | |
339 | + | let aR = { | |
340 | + | let aS = fromBase58String(aL) | |
341 | + | let s = aS | |
342 | + | if ($isInstanceOf(s, "ByteVector")) | |
341 | 343 | then { | |
342 | - | let | |
343 | - | | |
344 | + | let aS = s | |
345 | + | aS | |
344 | 346 | } | |
345 | 347 | else throw("Invalid datatype") | |
346 | 348 | } | |
347 | - | assetBalance(this, | |
349 | + | assetBalance(this, aR) | |
348 | 350 | } | |
349 | - | if (( | |
351 | + | if ((aP >= aJ)) | |
350 | 352 | then { | |
351 | - | let | |
352 | - | let | |
353 | - | then | |
354 | - | else | |
355 | - | let | |
356 | - | if (( | |
357 | - | then $Tuple2( | |
358 | - | else throw(((("Trade was not profitable! Input amount: " + toString( | |
353 | + | let aT = G(aN, aL, aM) | |
354 | + | let aU = if ((aT == aK)) | |
355 | + | then aO | |
356 | + | else aF(aK, aT, aO) | |
357 | + | let aV = G(aU, aM, aL) | |
358 | + | if ((aV > aJ)) | |
359 | + | then $Tuple2([g(("ArbResult_" + toString(b)), (aV - aJ)), d(("ArbResult Token_" + toString(b)), aL), g("arbCounter", (b + 1))], (aV - aJ)) | |
360 | + | else throw(((("Trade was not profitable! Input amount: " + toString(aJ)) + " Output amount: ") + toString(aV))) | |
359 | 361 | } | |
360 | 362 | else throw("Available input amount is not sufficient!") | |
361 | 363 | } | |
362 | 364 | else throw("Address does not match with admin address!") | |
363 | 365 | ||
364 | 366 | ||
365 | 367 | ||
366 | - | @Callable( | |
367 | - | func updateStringEntry ( | |
368 | - | then [ | |
368 | + | @Callable(aI) | |
369 | + | func updateStringEntry (e,f) = if (i(aI.caller.bytes)) | |
370 | + | then [d(e, f)] | |
369 | 371 | else throw("Address does not match with admin address!") | |
370 | 372 | ||
371 | 373 | ||
372 | 374 | ||
373 | - | @Callable( | |
374 | - | func updateIntegerEntry ( | |
375 | - | then [ | |
375 | + | @Callable(aI) | |
376 | + | func updateIntegerEntry (e,h) = if (i(aI.caller.bytes)) | |
377 | + | then [g(e, h)] | |
376 | 378 | else throw("Address does not match with admin address!") | |
377 | 379 | ||
378 | 380 | ||
379 | 381 | ||
380 | - | @Callable( | |
381 | - | func deleteStorageEntry ( | |
382 | - | then [DeleteEntry( | |
382 | + | @Callable(aI) | |
383 | + | func deleteStorageEntry (e) = if (i(aI.caller.bytes)) | |
384 | + | then [DeleteEntry(e)] | |
383 | 385 | else throw("Address does not match with admin address!") | |
384 | 386 | ||
385 | 387 | ||
386 | - | @Verifier( | |
387 | - | func | |
388 | + | @Verifier(aW) | |
389 | + | func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey) | |
388 | 390 |
github/deemru/w8io/873ac7e 161.62 ms ◑