tx · 3RhX27tnen3UcVbBU8ad8R5zFQCPdcbecWBoqFNKcubo

3PQoBfUKHkJAeGWhooLP7WS8ovb54av9Jp2:  -0.02000000 Waves

2024.01.21 03:54 [4006330] smart account 3PQoBfUKHkJAeGWhooLP7WS8ovb54av9Jp2 > SELF 0.00000000 Waves

{ "type": 13, "id": "3RhX27tnen3UcVbBU8ad8R5zFQCPdcbecWBoqFNKcubo", "fee": 2000000, "feeAssetId": null, "timestamp": 1705798464498, "version": 2, "chainId": 87, "sender": "3PQoBfUKHkJAeGWhooLP7WS8ovb54av9Jp2", "senderPublicKey": "4qegNTFAzMPavgBUwNXw5omMQEAhsPJKtSBxJfs8ALM6", "proofs": [ "34hBeSVdZVnA4xjt1pXfYBAkb6iHKzimkz94yygK4CPMLNcSzJ8ksprziX5UauGfaoBf2YwKTezYfNWGcnn65EDq" ], "script": "base64:BgIjCAISAwoBCBIECgIBCBIDCgEIEgQKAggIEgMKAQgSBAoCAQgFAQppc1NodXRkb3duAAQHJG1hdGNoMAkAmwgCCQEHQWRkcmVzcwEBGgFXjXhTep8V0j2VNIuCeWTYGdMnHpvyNVqoAgtpc19zaHV0ZG93bgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAF4BQckbWF0Y2gwBQF4BwENZ2V0QXNzZXRCeXRlcwEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwUEdW5pdAkA2QQBBQphc3NldElkU3RyAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTAQ9nZXRUb2tlbkJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBdAUHJG1hdGNoMAkA8AcCBQR0aGlzBQF0CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENZ2V0QXNzZXRCeXRlcwEFBGl0ZW0FA25pbAYBaQEhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlAQ5tYWluQWRkcmVzc1N0cgQHdG9rZW5JZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtiYXNlQXNzZXRJZAUHdG9rZW5JZAQLbWFpbkFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQ5tYWluQWRkcmVzc1N0cgQIYXNzZXRJZHMKAAIkbAkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQttYWluQWRkcmVzcwIPc3RhdGljX3Rva2VuSWRzAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldEJ5dGVzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBBFzZWNvbmRhcnlBc3NldElkcwkA0QgCBQhhc3NldElkcwkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUHdG9rZW5JZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBAZhbW91bnQJAGkCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudACQTgoBB2hhbmRsZXICBWFjY3VtB2Fzc2V0SWQECmFzc2V0SWRTdHIJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQEC2Fzc2V0V2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQttYWluQWRkcmVzcwkArAICCQCsAgICB3N0YXRpY18FCmFzc2V0SWRTdHICB193ZWlnaHQEAmluBAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAgRzd2FwCQDMCAIJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC2Jhc2VBc3NldElkCQBoAgUGYW1vdW50BQthc3NldFdlaWdodAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFAmluBQJpbgkAzggCBQVhY2N1bQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUCaW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQPYmFzZUFzc2V0V2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQttYWluQWRkcmVzcwkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFC2Jhc2VBc3NldElkAgdfd2VpZ2h0BA9leGNoYW5nZUludm9rZXMKAAIkbAURc2Vjb25kYXJ5QXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtiYXNlQXNzZXRJZAkAaAIFBmFtb3VudAUPYmFzZUFzc2V0V2VpZ2h0BQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkDCQAAAgUPZXhjaGFuZ2VJbnZva2VzBQ9leGNoYW5nZUludm9rZXMEDVBJc3N1ZWRBbW91bnQEByRtYXRjaDAJAP0HBAULbWFpbkFkZHJlc3MCDWdlbmVyYXRlSW5kZXgJAMwIAgcFA25pbAUPZXhjaGFuZ2VJbnZva2VzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQEC3N0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgpzdGFrZUluZGV4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3Bvb2xJbmRleElkBQ1QSXNzdWVkQW1vdW50BQNuaWwDCQAAAgULc3Rha2VJbnZva2UFC3N0YWtlSW52b2tlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEfdW5zdGFrZUluZGV4QW5kUmVkZWVtQXNPbmVUb2tlbgILaW5kZXhBbW91bnQObWFpbkFkZHJlc3NTdHIEC21haW5BZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUObWFpbkFkZHJlc3NTdHIECGFzc2V0SWRzCgACJGwJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLYmFzZUFzc2V0SWQJAQ1nZXRBc3NldEJ5dGVzAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCEnN0YXRpY19iYXNlVG9rZW5JZAQRc2Vjb25kYXJ5QXNzZXRJZHMJANEIAgUIYXNzZXRJZHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFC2Jhc2VBc3NldElkBAtwb29sSW5kZXhJZAkBEUBleHRyTmF0aXZlKDEwNTIpAgULbWFpbkFkZHJlc3MCE2dsb2JhbF9wb29sVG9rZW5faWQKAQxmb2xkSGFuZGxlcjECBWFjY3VtB2Fzc2V0SWQJAM4IAgUFYWNjdW0JAMwIAgkBD2dldFRva2VuQmFsYW5jZQEFB2Fzc2V0SWQFA25pbAQOYmFsYW5jZXNCZWZvcmUKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQ5iYWxhbmNlc0JlZm9yZQUOYmFsYW5jZXNCZWZvcmUED2Jhc2VBc3NldEJlZm9yZQkBD2dldFRva2VuQmFsYW5jZQEFC2Jhc2VBc3NldElkAwkAAAIFD2Jhc2VBc3NldEJlZm9yZQUPYmFzZUFzc2V0QmVmb3JlBA11bnN0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAhV1bnN0YWtlQW5kUmVkZWVtSW5kZXgJAMwIAgULaW5kZXhBbW91bnQFA25pbAUDbmlsAwkAAAIFDXVuc3Rha2VJbnZva2UFDXVuc3Rha2VJbnZva2UEDWJhbGFuY2VzQWZ0ZXIKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQ1iYWxhbmNlc0FmdGVyBQ1iYWxhbmNlc0FmdGVyBA5iYXNlQXNzZXRBZnRlcgkBD2dldFRva2VuQmFsYW5jZQEFC2Jhc2VBc3NldElkAwkAAAIFDmJhc2VBc3NldEFmdGVyBQ5iYXNlQXNzZXRBZnRlcgoBDGZvbGRIYW5kbGVyMgIFYWNjdW0HYXNzZXRJZAQIYXNzZXROdW0JAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFB2Fzc2V0SWQEBmFtb3VudAkAZQIJAJEDAgUNYmFsYW5jZXNBZnRlcgUIYXNzZXROdW0JAJEDAgUOYmFsYW5jZXNCZWZvcmUFCGFzc2V0TnVtBAJpbgMJAAACBQdhc3NldElkBQtiYXNlQXNzZXRJZAUGYW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAgRzd2FwCQDMCAIJAQ5nZXRBc3NldFN0cmluZwEFC2Jhc2VBc3NldElkCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQZhbW91bnQFA25pbAMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgAAAMJAAACBQJpbgUCaW4JAGQCBQVhY2N1bQUCaW4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWVnZ0Ftb3VudAoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmM18xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMZm9sZEhhbmRsZXIyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYzXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYzXzICCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAwkAAAIFCWVnZ0Ftb3VudAUJZWdnQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZAIFCWVnZ0Ftb3VudAkAZQIFDmJhc2VBc3NldEFmdGVyBQ9iYXNlQXNzZXRCZWZvcmUFC2Jhc2VBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUZ2VuZXJhdGVXaXRoT25lVG9rZW4BDm1haW5BZGRyZXNzU3RyBAtiYXNlQXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAttYWluQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDm1haW5BZGRyZXNzU3RyBAhhc3NldElkcwoAAiRsCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAg9zdGF0aWNfdG9rZW5JZHMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEEXNlY29uZGFyeUFzc2V0SWRzCQDRCAIFCGFzc2V0SWRzCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQtiYXNlQXNzZXRJZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBAlwYXlBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CgEHaGFuZGxlcgIFYWNjdW0HYXNzZXRJZAQKYXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAQLYXNzZXRXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC21haW5BZGRyZXNzCQCsAgIJAKwCAgIHc3RhdGljXwUKYXNzZXRJZFN0cgIHX3dlaWdodAQGYW1vdW50CQBrAwUJcGF5QW1vdW50BQthc3NldFdlaWdodACQTgQCaW4EByRtYXRjaDAJAP0HBAULbWFpbkFkZHJlc3MCBHN3YXAJAMwIAgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULYmFzZUFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFAmluBQJpbgkAzggCBQVhY2N1bQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUCaW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKcmV0dXJuRmxhZwcED2Jhc2VBc3NldFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULbWFpbkFkZHJlc3MJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQtiYXNlQXNzZXRJZAIHX3dlaWdodAQNYmFzZVBheUFtb3VudAkAawMFCXBheUFtb3VudAUPYmFzZUFzc2V0V2VpZ2h0AJBOBA9leGNoYW5nZUludm9rZXMKAAIkbAURc2Vjb25kYXJ5QXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtiYXNlQXNzZXRJZAUNYmFzZVBheUFtb3VudAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAwkAAAIFD2V4Y2hhbmdlSW52b2tlcwUPZXhjaGFuZ2VJbnZva2VzBA1QSXNzdWVkQW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAg1nZW5lcmF0ZUluZGV4CQDMCAIFCnJldHVybkZsYWcFA25pbAUPZXhjaGFuZ2VJbnZva2VzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ1QSXNzdWVkQW1vdW50BQtwb29sSW5kZXhJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnJlZGVlbVdpdGhPbmVUb2tlbgIObWFpbkFkZHJlc3NTdHINb3V0QXNzZXRJZFN0cgQLbWFpbkFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQ5tYWluQWRkcmVzc1N0cgQIYXNzZXRJZHMKAAIkbAkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQttYWluQWRkcmVzcwIPc3RhdGljX3Rva2VuSWRzAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldEJ5dGVzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAtiYXNlQXNzZXRJZAkBDWdldEFzc2V0Qnl0ZXMBBQ1vdXRBc3NldElkU3RyBBFzZWNvbmRhcnlBc3NldElkcwkA0QgCBQhhc3NldElkcwkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwULYmFzZUFzc2V0SWQEC3Bvb2xJbmRleElkCQERQGV4dHJOYXRpdmUoMTA1MikCBQttYWluQWRkcmVzcwITZ2xvYmFsX3Bvb2xUb2tlbl9pZAoBDGZvbGRIYW5kbGVyMQIFYWNjdW0HYXNzZXRJZAkAzggCBQVhY2N1bQkAzAgCCQEPZ2V0VG9rZW5CYWxhbmNlAQUHYXNzZXRJZAUDbmlsBA5yZXR1cm5Ub09yaWdpbgcEDmJhbGFuY2VzQmVmb3JlCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxmb2xkSGFuZGxlcjECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUOYmFsYW5jZXNCZWZvcmUFDmJhbGFuY2VzQmVmb3JlBA9iYXNlQXNzZXRCZWZvcmUJAQ9nZXRUb2tlbkJhbGFuY2UBBQtiYXNlQXNzZXRJZAMJAAACBQ9iYXNlQXNzZXRCZWZvcmUFD2Jhc2VBc3NldEJlZm9yZQQNdW5zdGFrZUludm9rZQkA/QcEBQttYWluQWRkcmVzcwILcmVkZWVtSW5kZXgJAMwIAgUOcmV0dXJuVG9PcmlnaW4FA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBQ11bnN0YWtlSW52b2tlBQ11bnN0YWtlSW52b2tlBA1iYWxhbmNlc0FmdGVyCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxmb2xkSGFuZGxlcjECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUNYmFsYW5jZXNBZnRlcgUNYmFsYW5jZXNBZnRlcgQOYmFzZUFzc2V0QWZ0ZXIJAQ9nZXRUb2tlbkJhbGFuY2UBBQtiYXNlQXNzZXRJZAMJAAACBQ5iYXNlQXNzZXRBZnRlcgUOYmFzZUFzc2V0QWZ0ZXIKAQxmb2xkSGFuZGxlcjICBWFjY3VtB2Fzc2V0SWQECGFzc2V0TnVtCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQdhc3NldElkBAZhbW91bnQJAGUCCQCRAwIFDWJhbGFuY2VzQWZ0ZXIFCGFzc2V0TnVtCQCRAwIFDmJhbGFuY2VzQmVmb3JlBQhhc3NldE51bQQCaW4DCQAAAgUHYXNzZXRJZAULYmFzZUFzc2V0SWQFBmFtb3VudAQHJG1hdGNoMAkA/QcEBQttYWluQWRkcmVzcwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUGYW1vdW50BQNuaWwDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4AAADCQAAAgUCaW4FAmluCQBkAgUFYWNjdW0FAmluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBANvdXQKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmM18yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjNfMgIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQNvdXQFA291dAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA291dAULYmFzZUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVnZW5lcmF0ZUluZGV4QW5kU3Rha2UBDm1haW5BZGRyZXNzU3RyBAttYWluQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDm1haW5BZGRyZXNzU3RyBAhhc3NldElkcwoAAiRsCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAg9zdGF0aWNfdG9rZW5JZHMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEC2Jhc2VBc3NldElkCQENZ2V0QXNzZXRCeXRlcwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAhJzdGF0aWNfYmFzZVRva2VuSWQEEXNlY29uZGFyeUFzc2V0SWRzCQDRCAIFCGFzc2V0SWRzCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQtiYXNlQXNzZXRJZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBA1QSXNzdWVkQW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAg1nZW5lcmF0ZUluZGV4CQDMCAIGBQNuaWwIBQFpCHBheW1lbnRzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQEC3N0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgpzdGFrZUluZGV4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3Bvb2xJbmRleElkBQ1QSXNzdWVkQW1vdW50BQNuaWwDCQAAAgULc3Rha2VJbnZva2UFC3N0YWtlSW52b2tlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVdW5zdGFrZUFuZFJlZGVlbUluZGV4AgZhbW91bnQObWFpbkFkZHJlc3NTdHIEC21haW5BZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUObWFpbkFkZHJlc3NTdHIECGFzc2V0SWRzCgACJGwJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLYmFzZUFzc2V0SWQJAQ1nZXRBc3NldEJ5dGVzAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCEnN0YXRpY19iYXNlVG9rZW5JZAQRc2Vjb25kYXJ5QXNzZXRJZHMJANEIAgUIYXNzZXRJZHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFC2Jhc2VBc3NldElkBAtwb29sSW5kZXhJZAkBEUBleHRyTmF0aXZlKDEwNTIpAgULbWFpbkFkZHJlc3MCE2dsb2JhbF9wb29sVG9rZW5faWQEDXVuc3Rha2VJbnZva2UJAP0HBAULbWFpbkFkZHJlc3MCDHVuc3Rha2VJbmRleAkAzAgCBQZhbW91bnQFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUNdW5zdGFrZUludm9rZQUNdW5zdGFrZUludm9rZQQMcmVkZWVtSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgtyZWRlZW1JbmRleAkAzAgCBgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtwb29sSW5kZXhJZAUGYW1vdW50BQNuaWwDCQAAAgUMcmVkZWVtSW52b2tlBQxyZWRlZW1JbnZva2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADCQEKaXNTaHV0ZG93bgAHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5sZlb3Q==", "height": 4006330, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GikwpRtYPTcT6BeZruDsJqwVjpkm54jB7q8xCEeNujVV Next: none Diff:
OldNewDifferences
217217
218218
219219 @Callable(i)
220+func generateWithOneToken (mainAddressStr) = {
221+ let baseAssetId = i.payments[0].assetId
222+ let mainAddress = Address(fromBase58String(mainAddressStr))
223+ let assetIds = {
224+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
225+ let $s = size($l)
226+ let $acc0 = nil
227+ func $f0_1 ($a,$i) = if (($i >= $s))
228+ then $a
229+ else addAssetBytesToList($a, $l[$i])
230+
231+ func $f0_2 ($a,$i) = if (($i >= $s))
232+ then $a
233+ else throw("List size exceeds 10")
234+
235+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
236+ }
237+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
238+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
239+ let payAmount = i.payments[0].amount
240+ func handler (accum,assetId) = {
241+ let assetIdStr = getAssetString(assetId)
242+ let assetWeight = getIntegerValue(mainAddress, (("static_" + assetIdStr) + "_weight"))
243+ let amount = fraction(payAmount, assetWeight, 10000)
244+ let in = match reentrantInvoke(mainAddress, "swap", [getAssetString(assetId), 0], [AttachedPayment(baseAssetId, amount)]) {
245+ case x: Int =>
246+ x
247+ case _ =>
248+ 0
249+ }
250+ if ((in == in))
251+ then (accum ++ [AttachedPayment(assetId, in)])
252+ else throw("Strict value is not equal to itself.")
253+ }
254+
255+ let returnFlag = false
256+ let baseAssetWeight = getIntegerValue(mainAddress, (("static_" + getAssetString(baseAssetId)) + "_weight"))
257+ let basePayAmount = fraction(payAmount, baseAssetWeight, 10000)
258+ let exchangeInvokes = {
259+ let $l = secondaryAssetIds
260+ let $s = size($l)
261+ let $acc0 = [AttachedPayment(baseAssetId, basePayAmount)]
262+ func $f1_1 ($a,$i) = if (($i >= $s))
263+ then $a
264+ else handler($a, $l[$i])
265+
266+ func $f1_2 ($a,$i) = if (($i >= $s))
267+ then $a
268+ else throw("List size exceeds 9")
269+
270+ $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
271+ }
272+ if ((exchangeInvokes == exchangeInvokes))
273+ then {
274+ let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [returnFlag], exchangeInvokes) {
275+ case x: Int =>
276+ x
277+ case _ =>
278+ 0
279+ }
280+ if ((PIssuedAmount == PIssuedAmount))
281+ then [ScriptTransfer(i.caller, PIssuedAmount, poolIndexId)]
282+ else throw("Strict value is not equal to itself.")
283+ }
284+ else throw("Strict value is not equal to itself.")
285+ }
286+
287+
288+
289+@Callable(i)
290+func redeemWithOneToken (mainAddressStr,outAssetIdStr) = {
291+ let mainAddress = Address(fromBase58String(mainAddressStr))
292+ let assetIds = {
293+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
294+ let $s = size($l)
295+ let $acc0 = nil
296+ func $f0_1 ($a,$i) = if (($i >= $s))
297+ then $a
298+ else addAssetBytesToList($a, $l[$i])
299+
300+ func $f0_2 ($a,$i) = if (($i >= $s))
301+ then $a
302+ else throw("List size exceeds 10")
303+
304+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
305+ }
306+ let baseAssetId = getAssetBytes(outAssetIdStr)
307+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
308+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
309+ func foldHandler1 (accum,assetId) = (accum ++ [getTokenBalance(assetId)])
310+
311+ let returnToOrigin = false
312+ let balancesBefore = {
313+ let $l = assetIds
314+ let $s = size($l)
315+ let $acc0 = nil
316+ func $f1_1 ($a,$i) = if (($i >= $s))
317+ then $a
318+ else foldHandler1($a, $l[$i])
319+
320+ func $f1_2 ($a,$i) = if (($i >= $s))
321+ then $a
322+ else throw("List size exceeds 10")
323+
324+ $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
325+ }
326+ if ((balancesBefore == balancesBefore))
327+ then {
328+ let baseAssetBefore = getTokenBalance(baseAssetId)
329+ if ((baseAssetBefore == baseAssetBefore))
330+ then {
331+ let unstakeInvoke = reentrantInvoke(mainAddress, "redeemIndex", [returnToOrigin], [i.payments[0]])
332+ if ((unstakeInvoke == unstakeInvoke))
333+ then {
334+ let balancesAfter = {
335+ let $l = assetIds
336+ let $s = size($l)
337+ let $acc0 = nil
338+ func $f2_1 ($a,$i) = if (($i >= $s))
339+ then $a
340+ else foldHandler1($a, $l[$i])
341+
342+ func $f2_2 ($a,$i) = if (($i >= $s))
343+ then $a
344+ else throw("List size exceeds 10")
345+
346+ $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
347+ }
348+ if ((balancesAfter == balancesAfter))
349+ then {
350+ let baseAssetAfter = getTokenBalance(baseAssetId)
351+ if ((baseAssetAfter == baseAssetAfter))
352+ then {
353+ func foldHandler2 (accum,assetId) = {
354+ let assetNum = value(indexOf(assetIds, assetId))
355+ let amount = (balancesAfter[assetNum] - balancesBefore[assetNum])
356+ let in = if ((assetId == baseAssetId))
357+ then amount
358+ else match reentrantInvoke(mainAddress, "swap", [getAssetString(baseAssetId), 0], [AttachedPayment(assetId, amount)]) {
359+ case x: Int =>
360+ x
361+ case _ =>
362+ 0
363+ }
364+ if ((in == in))
365+ then (accum + in)
366+ else throw("Strict value is not equal to itself.")
367+ }
368+
369+ let out = {
370+ let $l = assetIds
371+ let $s = size($l)
372+ let $acc0 = 0
373+ func $f3_1 ($a,$i) = if (($i >= $s))
374+ then $a
375+ else foldHandler2($a, $l[$i])
376+
377+ func $f3_2 ($a,$i) = if (($i >= $s))
378+ then $a
379+ else throw("List size exceeds 10")
380+
381+ $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
382+ }
383+ if ((out == out))
384+ then [ScriptTransfer(i.caller, out, baseAssetId)]
385+ else throw("Strict value is not equal to itself.")
386+ }
387+ else throw("Strict value is not equal to itself.")
388+ }
389+ else throw("Strict value is not equal to itself.")
390+ }
391+ else throw("Strict value is not equal to itself.")
392+ }
393+ else throw("Strict value is not equal to itself.")
394+ }
395+ else throw("Strict value is not equal to itself.")
396+ }
397+
398+
399+
400+@Callable(i)
220401 func generateIndexAndStake (mainAddressStr) = {
221402 let mainAddress = Address(fromBase58String(mainAddressStr))
222403 let assetIds = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func isShutdown () = match getBoolean(Address(base58'3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o'), "is_shutdown") {
55 case x: Boolean =>
66 x
77 case _ =>
88 false
99 }
1010
1111
1212 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
1313 then unit
1414 else fromBase58String(assetIdStr)
1515
1616
1717 func getAssetString (assetId) = match assetId {
1818 case b: ByteVector =>
1919 toBase58String(value(assetId))
2020 case _ =>
2121 "WAVES"
2222 }
2323
2424
2525 func getTokenBalance (assetId) = match assetId {
2626 case t: ByteVector =>
2727 assetBalance(this, t)
2828 case _ =>
2929 wavesBalance(this).available
3030 }
3131
3232
3333 func addAssetBytesToList (accum,item) = (accum ++ [getAssetBytes(item)])
3434
3535
3636 @Callable(i)
3737 func generateIndexWithOneTokenAndStake (mainAddressStr) = {
3838 let tokenId = i.payments[0].assetId
3939 let baseAssetId = tokenId
4040 let mainAddress = Address(fromBase58String(mainAddressStr))
4141 let assetIds = {
4242 let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
4343 let $s = size($l)
4444 let $acc0 = nil
4545 func $f0_1 ($a,$i) = if (($i >= $s))
4646 then $a
4747 else addAssetBytesToList($a, $l[$i])
4848
4949 func $f0_2 ($a,$i) = if (($i >= $s))
5050 then $a
5151 else throw("List size exceeds 10")
5252
5353 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
5454 }
5555 let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, tokenId)))
5656 let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
5757 let amount = (i.payments[0].amount / 10000)
5858 func handler (accum,assetId) = {
5959 let assetIdStr = getAssetString(assetId)
6060 let assetWeight = getIntegerValue(mainAddress, (("static_" + assetIdStr) + "_weight"))
6161 let in = match reentrantInvoke(mainAddress, "swap", [getAssetString(assetId), 0], [AttachedPayment(baseAssetId, (amount * assetWeight))]) {
6262 case x: Int =>
6363 x
6464 case _ =>
6565 0
6666 }
6767 if ((in == in))
6868 then (accum ++ [AttachedPayment(assetId, in)])
6969 else throw("Strict value is not equal to itself.")
7070 }
7171
7272 let baseAssetWeight = getIntegerValue(mainAddress, (("static_" + getAssetString(baseAssetId)) + "_weight"))
7373 let exchangeInvokes = {
7474 let $l = secondaryAssetIds
7575 let $s = size($l)
7676 let $acc0 = [AttachedPayment(baseAssetId, (amount * baseAssetWeight))]
7777 func $f1_1 ($a,$i) = if (($i >= $s))
7878 then $a
7979 else handler($a, $l[$i])
8080
8181 func $f1_2 ($a,$i) = if (($i >= $s))
8282 then $a
8383 else throw("List size exceeds 9")
8484
8585 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
8686 }
8787 if ((exchangeInvokes == exchangeInvokes))
8888 then {
8989 let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [false], exchangeInvokes) {
9090 case x: Int =>
9191 x
9292 case _ =>
9393 0
9494 }
9595 if ((PIssuedAmount == PIssuedAmount))
9696 then {
9797 let stakeInvoke = reentrantInvoke(mainAddress, "stakeIndex", nil, [AttachedPayment(poolIndexId, PIssuedAmount)])
9898 if ((stakeInvoke == stakeInvoke))
9999 then nil
100100 else throw("Strict value is not equal to itself.")
101101 }
102102 else throw("Strict value is not equal to itself.")
103103 }
104104 else throw("Strict value is not equal to itself.")
105105 }
106106
107107
108108
109109 @Callable(i)
110110 func unstakeIndexAndRedeemAsOneToken (indexAmount,mainAddressStr) = {
111111 let mainAddress = Address(fromBase58String(mainAddressStr))
112112 let assetIds = {
113113 let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
114114 let $s = size($l)
115115 let $acc0 = nil
116116 func $f0_1 ($a,$i) = if (($i >= $s))
117117 then $a
118118 else addAssetBytesToList($a, $l[$i])
119119
120120 func $f0_2 ($a,$i) = if (($i >= $s))
121121 then $a
122122 else throw("List size exceeds 10")
123123
124124 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
125125 }
126126 let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
127127 let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
128128 let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
129129 func foldHandler1 (accum,assetId) = (accum ++ [getTokenBalance(assetId)])
130130
131131 let balancesBefore = {
132132 let $l = assetIds
133133 let $s = size($l)
134134 let $acc0 = nil
135135 func $f1_1 ($a,$i) = if (($i >= $s))
136136 then $a
137137 else foldHandler1($a, $l[$i])
138138
139139 func $f1_2 ($a,$i) = if (($i >= $s))
140140 then $a
141141 else throw("List size exceeds 10")
142142
143143 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
144144 }
145145 if ((balancesBefore == balancesBefore))
146146 then {
147147 let baseAssetBefore = getTokenBalance(baseAssetId)
148148 if ((baseAssetBefore == baseAssetBefore))
149149 then {
150150 let unstakeInvoke = reentrantInvoke(mainAddress, "unstakeAndRedeemIndex", [indexAmount], nil)
151151 if ((unstakeInvoke == unstakeInvoke))
152152 then {
153153 let balancesAfter = {
154154 let $l = assetIds
155155 let $s = size($l)
156156 let $acc0 = nil
157157 func $f2_1 ($a,$i) = if (($i >= $s))
158158 then $a
159159 else foldHandler1($a, $l[$i])
160160
161161 func $f2_2 ($a,$i) = if (($i >= $s))
162162 then $a
163163 else throw("List size exceeds 10")
164164
165165 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
166166 }
167167 if ((balancesAfter == balancesAfter))
168168 then {
169169 let baseAssetAfter = getTokenBalance(baseAssetId)
170170 if ((baseAssetAfter == baseAssetAfter))
171171 then {
172172 func foldHandler2 (accum,assetId) = {
173173 let assetNum = value(indexOf(assetIds, assetId))
174174 let amount = (balancesAfter[assetNum] - balancesBefore[assetNum])
175175 let in = if ((assetId == baseAssetId))
176176 then amount
177177 else match reentrantInvoke(mainAddress, "swap", [getAssetString(baseAssetId), 0], [AttachedPayment(assetId, amount)]) {
178178 case x: Int =>
179179 x
180180 case _ =>
181181 0
182182 }
183183 if ((in == in))
184184 then (accum + in)
185185 else throw("Strict value is not equal to itself.")
186186 }
187187
188188 let eggAmount = {
189189 let $l = assetIds
190190 let $s = size($l)
191191 let $acc0 = 0
192192 func $f3_1 ($a,$i) = if (($i >= $s))
193193 then $a
194194 else foldHandler2($a, $l[$i])
195195
196196 func $f3_2 ($a,$i) = if (($i >= $s))
197197 then $a
198198 else throw("List size exceeds 9")
199199
200200 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
201201 }
202202 if ((eggAmount == eggAmount))
203203 then [ScriptTransfer(i.caller, (eggAmount + (baseAssetAfter - baseAssetBefore)), baseAssetId)]
204204 else throw("Strict value is not equal to itself.")
205205 }
206206 else throw("Strict value is not equal to itself.")
207207 }
208208 else throw("Strict value is not equal to itself.")
209209 }
210210 else throw("Strict value is not equal to itself.")
211211 }
212212 else throw("Strict value is not equal to itself.")
213213 }
214214 else throw("Strict value is not equal to itself.")
215215 }
216216
217217
218218
219219 @Callable(i)
220+func generateWithOneToken (mainAddressStr) = {
221+ let baseAssetId = i.payments[0].assetId
222+ let mainAddress = Address(fromBase58String(mainAddressStr))
223+ let assetIds = {
224+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
225+ let $s = size($l)
226+ let $acc0 = nil
227+ func $f0_1 ($a,$i) = if (($i >= $s))
228+ then $a
229+ else addAssetBytesToList($a, $l[$i])
230+
231+ func $f0_2 ($a,$i) = if (($i >= $s))
232+ then $a
233+ else throw("List size exceeds 10")
234+
235+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
236+ }
237+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
238+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
239+ let payAmount = i.payments[0].amount
240+ func handler (accum,assetId) = {
241+ let assetIdStr = getAssetString(assetId)
242+ let assetWeight = getIntegerValue(mainAddress, (("static_" + assetIdStr) + "_weight"))
243+ let amount = fraction(payAmount, assetWeight, 10000)
244+ let in = match reentrantInvoke(mainAddress, "swap", [getAssetString(assetId), 0], [AttachedPayment(baseAssetId, amount)]) {
245+ case x: Int =>
246+ x
247+ case _ =>
248+ 0
249+ }
250+ if ((in == in))
251+ then (accum ++ [AttachedPayment(assetId, in)])
252+ else throw("Strict value is not equal to itself.")
253+ }
254+
255+ let returnFlag = false
256+ let baseAssetWeight = getIntegerValue(mainAddress, (("static_" + getAssetString(baseAssetId)) + "_weight"))
257+ let basePayAmount = fraction(payAmount, baseAssetWeight, 10000)
258+ let exchangeInvokes = {
259+ let $l = secondaryAssetIds
260+ let $s = size($l)
261+ let $acc0 = [AttachedPayment(baseAssetId, basePayAmount)]
262+ func $f1_1 ($a,$i) = if (($i >= $s))
263+ then $a
264+ else handler($a, $l[$i])
265+
266+ func $f1_2 ($a,$i) = if (($i >= $s))
267+ then $a
268+ else throw("List size exceeds 9")
269+
270+ $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
271+ }
272+ if ((exchangeInvokes == exchangeInvokes))
273+ then {
274+ let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [returnFlag], exchangeInvokes) {
275+ case x: Int =>
276+ x
277+ case _ =>
278+ 0
279+ }
280+ if ((PIssuedAmount == PIssuedAmount))
281+ then [ScriptTransfer(i.caller, PIssuedAmount, poolIndexId)]
282+ else throw("Strict value is not equal to itself.")
283+ }
284+ else throw("Strict value is not equal to itself.")
285+ }
286+
287+
288+
289+@Callable(i)
290+func redeemWithOneToken (mainAddressStr,outAssetIdStr) = {
291+ let mainAddress = Address(fromBase58String(mainAddressStr))
292+ let assetIds = {
293+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
294+ let $s = size($l)
295+ let $acc0 = nil
296+ func $f0_1 ($a,$i) = if (($i >= $s))
297+ then $a
298+ else addAssetBytesToList($a, $l[$i])
299+
300+ func $f0_2 ($a,$i) = if (($i >= $s))
301+ then $a
302+ else throw("List size exceeds 10")
303+
304+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
305+ }
306+ let baseAssetId = getAssetBytes(outAssetIdStr)
307+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
308+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
309+ func foldHandler1 (accum,assetId) = (accum ++ [getTokenBalance(assetId)])
310+
311+ let returnToOrigin = false
312+ let balancesBefore = {
313+ let $l = assetIds
314+ let $s = size($l)
315+ let $acc0 = nil
316+ func $f1_1 ($a,$i) = if (($i >= $s))
317+ then $a
318+ else foldHandler1($a, $l[$i])
319+
320+ func $f1_2 ($a,$i) = if (($i >= $s))
321+ then $a
322+ else throw("List size exceeds 10")
323+
324+ $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
325+ }
326+ if ((balancesBefore == balancesBefore))
327+ then {
328+ let baseAssetBefore = getTokenBalance(baseAssetId)
329+ if ((baseAssetBefore == baseAssetBefore))
330+ then {
331+ let unstakeInvoke = reentrantInvoke(mainAddress, "redeemIndex", [returnToOrigin], [i.payments[0]])
332+ if ((unstakeInvoke == unstakeInvoke))
333+ then {
334+ let balancesAfter = {
335+ let $l = assetIds
336+ let $s = size($l)
337+ let $acc0 = nil
338+ func $f2_1 ($a,$i) = if (($i >= $s))
339+ then $a
340+ else foldHandler1($a, $l[$i])
341+
342+ func $f2_2 ($a,$i) = if (($i >= $s))
343+ then $a
344+ else throw("List size exceeds 10")
345+
346+ $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
347+ }
348+ if ((balancesAfter == balancesAfter))
349+ then {
350+ let baseAssetAfter = getTokenBalance(baseAssetId)
351+ if ((baseAssetAfter == baseAssetAfter))
352+ then {
353+ func foldHandler2 (accum,assetId) = {
354+ let assetNum = value(indexOf(assetIds, assetId))
355+ let amount = (balancesAfter[assetNum] - balancesBefore[assetNum])
356+ let in = if ((assetId == baseAssetId))
357+ then amount
358+ else match reentrantInvoke(mainAddress, "swap", [getAssetString(baseAssetId), 0], [AttachedPayment(assetId, amount)]) {
359+ case x: Int =>
360+ x
361+ case _ =>
362+ 0
363+ }
364+ if ((in == in))
365+ then (accum + in)
366+ else throw("Strict value is not equal to itself.")
367+ }
368+
369+ let out = {
370+ let $l = assetIds
371+ let $s = size($l)
372+ let $acc0 = 0
373+ func $f3_1 ($a,$i) = if (($i >= $s))
374+ then $a
375+ else foldHandler2($a, $l[$i])
376+
377+ func $f3_2 ($a,$i) = if (($i >= $s))
378+ then $a
379+ else throw("List size exceeds 10")
380+
381+ $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
382+ }
383+ if ((out == out))
384+ then [ScriptTransfer(i.caller, out, baseAssetId)]
385+ else throw("Strict value is not equal to itself.")
386+ }
387+ else throw("Strict value is not equal to itself.")
388+ }
389+ else throw("Strict value is not equal to itself.")
390+ }
391+ else throw("Strict value is not equal to itself.")
392+ }
393+ else throw("Strict value is not equal to itself.")
394+ }
395+ else throw("Strict value is not equal to itself.")
396+ }
397+
398+
399+
400+@Callable(i)
220401 func generateIndexAndStake (mainAddressStr) = {
221402 let mainAddress = Address(fromBase58String(mainAddressStr))
222403 let assetIds = {
223404 let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
224405 let $s = size($l)
225406 let $acc0 = nil
226407 func $f0_1 ($a,$i) = if (($i >= $s))
227408 then $a
228409 else addAssetBytesToList($a, $l[$i])
229410
230411 func $f0_2 ($a,$i) = if (($i >= $s))
231412 then $a
232413 else throw("List size exceeds 10")
233414
234415 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
235416 }
236417 let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
237418 let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
238419 let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
239420 let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [true], i.payments) {
240421 case x: Int =>
241422 x
242423 case _ =>
243424 0
244425 }
245426 if ((PIssuedAmount == PIssuedAmount))
246427 then {
247428 let stakeInvoke = reentrantInvoke(mainAddress, "stakeIndex", nil, [AttachedPayment(poolIndexId, PIssuedAmount)])
248429 if ((stakeInvoke == stakeInvoke))
249430 then nil
250431 else throw("Strict value is not equal to itself.")
251432 }
252433 else throw("Strict value is not equal to itself.")
253434 }
254435
255436
256437
257438 @Callable(i)
258439 func unstakeAndRedeemIndex (amount,mainAddressStr) = {
259440 let mainAddress = Address(fromBase58String(mainAddressStr))
260441 let assetIds = {
261442 let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
262443 let $s = size($l)
263444 let $acc0 = nil
264445 func $f0_1 ($a,$i) = if (($i >= $s))
265446 then $a
266447 else addAssetBytesToList($a, $l[$i])
267448
268449 func $f0_2 ($a,$i) = if (($i >= $s))
269450 then $a
270451 else throw("List size exceeds 10")
271452
272453 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
273454 }
274455 let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
275456 let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
276457 let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
277458 let unstakeInvoke = reentrantInvoke(mainAddress, "unstakeIndex", [amount], i.payments)
278459 if ((unstakeInvoke == unstakeInvoke))
279460 then {
280461 let redeemInvoke = reentrantInvoke(mainAddress, "redeemIndex", [true], [AttachedPayment(poolIndexId, amount)])
281462 if ((redeemInvoke == redeemInvoke))
282463 then nil
283464 else throw("Strict value is not equal to itself.")
284465 }
285466 else throw("Strict value is not equal to itself.")
286467 }
287468
288469
289470 @Verifier(tx)
290471 func verify () = if (isShutdown())
291472 then false
292473 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
293474

github/deemru/w8io/3ef1775 
46.30 ms