tx · BwYkoGbyHkWHJNEa7Q7NYPpXFbMyHdhrT3m3FxpN9WrP

3MB9CGjEsJjQBRbFXtxUhkVTS6LzTkkgCZ1:  -0.03000000 Waves

2025.12.03 08:41 [784045] smart account 3MB9CGjEsJjQBRbFXtxUhkVTS6LzTkkgCZ1 > SELF 0.00000000 Waves

{ "type": 13, "id": "BwYkoGbyHkWHJNEa7Q7NYPpXFbMyHdhrT3m3FxpN9WrP", "fee": 3000000, "feeAssetId": null, "timestamp": 1764740465149, "version": 2, "chainId": 82, "sender": "3MB9CGjEsJjQBRbFXtxUhkVTS6LzTkkgCZ1", "senderPublicKey": "FRYHypb9zjBQhtDWvpzCCUfu4hiHKgUL2siKJE4CMrfJ", "proofs": [ "53AnQfPFJ9YY9fNx7iMvPHybMihXR7oM7neTMiTmdhRXKGqig6zhst5NmmzhfnWZdVQxt8yq32NnR182bwLdZziX" ], "script": "base64:BgIjCAISAwoBCBIECgIBCBIDCgEIEgQKAggIEgMKAQgSBAoCAQgJAAljb25maWdTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwINY29uZmlnQWRkcmVzcwIjM1BNb0VpYmRMZVdxY1VSUTgzNTFYaGFXd3lhY0RjN0c0ZTUADkNPTkZJR19BRERSRVNTAwkAAAIFCWNvbmZpZ1N0cgIABQR0aGlzCQEHQWRkcmVzcwEJANkEAQUJY29uZmlnU3RyABJzaHV0ZG93bkFkZHJlc3NTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCD3NodXRkb3duQWRkcmVzcwIjM1BFcHY5aFJGV0VFQlUyMldSbkxzdzFiSDRZR3RjVTcyOG8AD3NodXRkb3duQWRkcmVzcwkA2QQBBRJzaHV0ZG93bkFkZHJlc3NTdHIBCmlzU2h1dGRvd24ABAckbWF0Y2gwCQCbCAIJAQdBZGRyZXNzAQUPc2h1dGRvd25BZGRyZXNzAgtpc19zaHV0ZG93bgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAF4BQckbWF0Y2gwBQF4BwENZ2V0QXNzZXRCeXRlcwEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwUEdW5pdAkA2QQBBQphc3NldElkU3RyAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTAQ9nZXRUb2tlbkJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBdAUHJG1hdGNoMAkA8AcCBQR0aGlzBQF0CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENZ2V0QXNzZXRCeXRlcwEFBGl0ZW0FA25pbAYBaQEhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlAQ5tYWluQWRkcmVzc1N0cgQHdG9rZW5JZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtiYXNlQXNzZXRJZAUHdG9rZW5JZAQLbWFpbkFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQ5tYWluQWRkcmVzc1N0cgQIYXNzZXRJZHMKAAIkbAkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQttYWluQWRkcmVzcwIPc3RhdGljX3Rva2VuSWRzAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldEJ5dGVzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBBFzZWNvbmRhcnlBc3NldElkcwkA0QgCBQhhc3NldElkcwkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUHdG9rZW5JZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBAZhbW91bnQJAGkCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudACQTgoBB2hhbmRsZXICBWFjY3VtB2Fzc2V0SWQECmFzc2V0SWRTdHIJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQEC2Fzc2V0V2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQttYWluQWRkcmVzcwkArAICCQCsAgICB3N0YXRpY18FCmFzc2V0SWRTdHICB193ZWlnaHQEAmluBAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAgRzd2FwCQDMCAIJAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC2Jhc2VBc3NldElkCQBoAgUGYW1vdW50BQthc3NldFdlaWdodAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFAmluBQJpbgkAzggCBQVhY2N1bQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUCaW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQPYmFzZUFzc2V0V2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQttYWluQWRkcmVzcwkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFC2Jhc2VBc3NldElkAgdfd2VpZ2h0BA9leGNoYW5nZUludm9rZXMKAAIkbAURc2Vjb25kYXJ5QXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtiYXNlQXNzZXRJZAkAaAIFBmFtb3VudAUPYmFzZUFzc2V0V2VpZ2h0BQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkDCQAAAgUPZXhjaGFuZ2VJbnZva2VzBQ9leGNoYW5nZUludm9rZXMEDVBJc3N1ZWRBbW91bnQEByRtYXRjaDAJAP0HBAULbWFpbkFkZHJlc3MCDWdlbmVyYXRlSW5kZXgJAMwIAgcFA25pbAUPZXhjaGFuZ2VJbnZva2VzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQEC3N0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgpzdGFrZUluZGV4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3Bvb2xJbmRleElkBQ1QSXNzdWVkQW1vdW50BQNuaWwDCQAAAgULc3Rha2VJbnZva2UFC3N0YWtlSW52b2tlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEfdW5zdGFrZUluZGV4QW5kUmVkZWVtQXNPbmVUb2tlbgILaW5kZXhBbW91bnQObWFpbkFkZHJlc3NTdHIEC21haW5BZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUObWFpbkFkZHJlc3NTdHIECGFzc2V0SWRzCgACJGwJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLYmFzZUFzc2V0SWQJAQ1nZXRBc3NldEJ5dGVzAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCEnN0YXRpY19iYXNlVG9rZW5JZAQRc2Vjb25kYXJ5QXNzZXRJZHMJANEIAgUIYXNzZXRJZHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFC2Jhc2VBc3NldElkBAtwb29sSW5kZXhJZAkBEUBleHRyTmF0aXZlKDEwNTIpAgULbWFpbkFkZHJlc3MCE2dsb2JhbF9wb29sVG9rZW5faWQKAQxmb2xkSGFuZGxlcjECBWFjY3VtB2Fzc2V0SWQJAM4IAgUFYWNjdW0JAMwIAgkBD2dldFRva2VuQmFsYW5jZQEFB2Fzc2V0SWQFA25pbAQOYmFsYW5jZXNCZWZvcmUKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQ5iYWxhbmNlc0JlZm9yZQUOYmFsYW5jZXNCZWZvcmUED2Jhc2VBc3NldEJlZm9yZQkBD2dldFRva2VuQmFsYW5jZQEFC2Jhc2VBc3NldElkAwkAAAIFD2Jhc2VBc3NldEJlZm9yZQUPYmFzZUFzc2V0QmVmb3JlBA11bnN0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAhV1bnN0YWtlQW5kUmVkZWVtSW5kZXgJAMwIAgULaW5kZXhBbW91bnQFA25pbAUDbmlsAwkAAAIFDXVuc3Rha2VJbnZva2UFDXVuc3Rha2VJbnZva2UEDWJhbGFuY2VzQWZ0ZXIKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQ1iYWxhbmNlc0FmdGVyBQ1iYWxhbmNlc0FmdGVyBA5iYXNlQXNzZXRBZnRlcgkBD2dldFRva2VuQmFsYW5jZQEFC2Jhc2VBc3NldElkAwkAAAIFDmJhc2VBc3NldEFmdGVyBQ5iYXNlQXNzZXRBZnRlcgoBDGZvbGRIYW5kbGVyMgIFYWNjdW0HYXNzZXRJZAQIYXNzZXROdW0JAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFB2Fzc2V0SWQEBmFtb3VudAkAZQIJAJEDAgUNYmFsYW5jZXNBZnRlcgUIYXNzZXROdW0JAJEDAgUOYmFsYW5jZXNCZWZvcmUFCGFzc2V0TnVtBAJpbgMJAAACBQdhc3NldElkBQtiYXNlQXNzZXRJZAUGYW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAgRzd2FwCQDMCAIJAQ5nZXRBc3NldFN0cmluZwEFC2Jhc2VBc3NldElkCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQZhbW91bnQFA25pbAMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgAAAMJAAACBQJpbgUCaW4JAGQCBQVhY2N1bQUCaW4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWVnZ0Ftb3VudAoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmM18xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMZm9sZEhhbmRsZXIyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYzXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYzXzICCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECCQEFJGYzXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAwkAAAIFCWVnZ0Ftb3VudAUJZWdnQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZAIFCWVnZ0Ftb3VudAkAZQIFDmJhc2VBc3NldEFmdGVyBQ9iYXNlQXNzZXRCZWZvcmUFC2Jhc2VBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUZ2VuZXJhdGVXaXRoT25lVG9rZW4BDm1haW5BZGRyZXNzU3RyBAtiYXNlQXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAttYWluQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDm1haW5BZGRyZXNzU3RyBAhhc3NldElkcwoAAiRsCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAg9zdGF0aWNfdG9rZW5JZHMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEEXNlY29uZGFyeUFzc2V0SWRzCQDRCAIFCGFzc2V0SWRzCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQtiYXNlQXNzZXRJZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBAlwYXlBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CgEHaGFuZGxlcgIFYWNjdW0HYXNzZXRJZAQKYXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAQLYXNzZXRXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC21haW5BZGRyZXNzCQCsAgIJAKwCAgIHc3RhdGljXwUKYXNzZXRJZFN0cgIHX3dlaWdodAQGYW1vdW50CQBrAwUJcGF5QW1vdW50BQthc3NldFdlaWdodACQTgQCaW4EByRtYXRjaDAJAP0HBAULbWFpbkFkZHJlc3MCBHN3YXAJAMwIAgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULYmFzZUFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFAmluBQJpbgkAzggCBQVhY2N1bQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUCaW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKcmV0dXJuRmxhZwcED2Jhc2VBc3NldFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULbWFpbkFkZHJlc3MJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQtiYXNlQXNzZXRJZAIHX3dlaWdodAQNYmFzZVBheUFtb3VudAkAawMFCXBheUFtb3VudAUPYmFzZUFzc2V0V2VpZ2h0AJBOBA9leGNoYW5nZUludm9rZXMKAAIkbAURc2Vjb25kYXJ5QXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtiYXNlQXNzZXRJZAUNYmFzZVBheUFtb3VudAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAwkAAAIFD2V4Y2hhbmdlSW52b2tlcwUPZXhjaGFuZ2VJbnZva2VzBA1QSXNzdWVkQW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAg1nZW5lcmF0ZUluZGV4CQDMCAIFCnJldHVybkZsYWcFA25pbAUPZXhjaGFuZ2VJbnZva2VzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ1QSXNzdWVkQW1vdW50BQtwb29sSW5kZXhJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnJlZGVlbVdpdGhPbmVUb2tlbgIObWFpbkFkZHJlc3NTdHINb3V0QXNzZXRJZFN0cgQLbWFpbkFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQ5tYWluQWRkcmVzc1N0cgQIYXNzZXRJZHMKAAIkbAkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQttYWluQWRkcmVzcwIPc3RhdGljX3Rva2VuSWRzAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldEJ5dGVzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAtiYXNlQXNzZXRJZAkBDWdldEFzc2V0Qnl0ZXMBBQ1vdXRBc3NldElkU3RyBBFzZWNvbmRhcnlBc3NldElkcwkA0QgCBQhhc3NldElkcwkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwULYmFzZUFzc2V0SWQEC3Bvb2xJbmRleElkCQERQGV4dHJOYXRpdmUoMTA1MikCBQttYWluQWRkcmVzcwITZ2xvYmFsX3Bvb2xUb2tlbl9pZAoBDGZvbGRIYW5kbGVyMQIFYWNjdW0HYXNzZXRJZAkAzggCBQVhY2N1bQkAzAgCCQEPZ2V0VG9rZW5CYWxhbmNlAQUHYXNzZXRJZAUDbmlsBA5yZXR1cm5Ub09yaWdpbgcEDmJhbGFuY2VzQmVmb3JlCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxmb2xkSGFuZGxlcjECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUOYmFsYW5jZXNCZWZvcmUFDmJhbGFuY2VzQmVmb3JlBA9iYXNlQXNzZXRCZWZvcmUJAQ9nZXRUb2tlbkJhbGFuY2UBBQtiYXNlQXNzZXRJZAMJAAACBQ9iYXNlQXNzZXRCZWZvcmUFD2Jhc2VBc3NldEJlZm9yZQQNdW5zdGFrZUludm9rZQkA/QcEBQttYWluQWRkcmVzcwILcmVkZWVtSW5kZXgJAMwIAgUOcmV0dXJuVG9PcmlnaW4FA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBQ11bnN0YWtlSW52b2tlBQ11bnN0YWtlSW52b2tlBA1iYWxhbmNlc0FmdGVyCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxmb2xkSGFuZGxlcjECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUNYmFsYW5jZXNBZnRlcgUNYmFsYW5jZXNBZnRlcgQOYmFzZUFzc2V0QWZ0ZXIJAQ9nZXRUb2tlbkJhbGFuY2UBBQtiYXNlQXNzZXRJZAMJAAACBQ5iYXNlQXNzZXRBZnRlcgUOYmFzZUFzc2V0QWZ0ZXIKAQxmb2xkSGFuZGxlcjICBWFjY3VtB2Fzc2V0SWQECGFzc2V0TnVtCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQdhc3NldElkBAZhbW91bnQJAGUCCQCRAwIFDWJhbGFuY2VzQWZ0ZXIFCGFzc2V0TnVtCQCRAwIFDmJhbGFuY2VzQmVmb3JlBQhhc3NldE51bQQCaW4DCQAAAgUHYXNzZXRJZAULYmFzZUFzc2V0SWQFBmFtb3VudAQHJG1hdGNoMAkA/QcEBQttYWluQWRkcmVzcwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUGYW1vdW50BQNuaWwDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4AAADCQAAAgUCaW4FAmluCQBkAgUFYWNjdW0FAmluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBANvdXQKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGZvbGRIYW5kbGVyMgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmM18yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjNfMgIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQNvdXQFA291dAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA291dAULYmFzZUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVnZW5lcmF0ZUluZGV4QW5kU3Rha2UBDm1haW5BZGRyZXNzU3RyBAttYWluQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDm1haW5BZGRyZXNzU3RyBAhhc3NldElkcwoAAiRsCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAg9zdGF0aWNfdG9rZW5JZHMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEC2Jhc2VBc3NldElkCQENZ2V0QXNzZXRCeXRlcwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC21haW5BZGRyZXNzAhJzdGF0aWNfYmFzZVRva2VuSWQEEXNlY29uZGFyeUFzc2V0SWRzCQDRCAIFCGFzc2V0SWRzCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQtiYXNlQXNzZXRJZAQLcG9vbEluZGV4SWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFC21haW5BZGRyZXNzAhNnbG9iYWxfcG9vbFRva2VuX2lkBA1QSXNzdWVkQW1vdW50BAckbWF0Y2gwCQD9BwQFC21haW5BZGRyZXNzAg1nZW5lcmF0ZUluZGV4CQDMCAIGBQNuaWwIBQFpCHBheW1lbnRzAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAAAAwkAAAIFDVBJc3N1ZWRBbW91bnQFDVBJc3N1ZWRBbW91bnQEC3N0YWtlSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgpzdGFrZUluZGV4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3Bvb2xJbmRleElkBQ1QSXNzdWVkQW1vdW50BQNuaWwDCQAAAgULc3Rha2VJbnZva2UFC3N0YWtlSW52b2tlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVdW5zdGFrZUFuZFJlZGVlbUluZGV4AgZhbW91bnQObWFpbkFkZHJlc3NTdHIEC21haW5BZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUObWFpbkFkZHJlc3NTdHIECGFzc2V0SWRzCgACJGwJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLYmFzZUFzc2V0SWQJAQ1nZXRBc3NldEJ5dGVzAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULbWFpbkFkZHJlc3MCEnN0YXRpY19iYXNlVG9rZW5JZAQRc2Vjb25kYXJ5QXNzZXRJZHMJANEIAgUIYXNzZXRJZHMJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFC2Jhc2VBc3NldElkBAtwb29sSW5kZXhJZAkBEUBleHRyTmF0aXZlKDEwNTIpAgULbWFpbkFkZHJlc3MCE2dsb2JhbF9wb29sVG9rZW5faWQEDXVuc3Rha2VJbnZva2UJAP0HBAULbWFpbkFkZHJlc3MCDHVuc3Rha2VJbmRleAkAzAgCBQZhbW91bnQFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUNdW5zdGFrZUludm9rZQUNdW5zdGFrZUludm9rZQQMcmVkZWVtSW52b2tlCQD9BwQFC21haW5BZGRyZXNzAgtyZWRlZW1JbmRleAkAzAgCBgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtwb29sSW5kZXhJZAUGYW1vdW50BQNuaWwDCQAAAgUMcmVkZWVtSW52b2tlBQxyZWRlZW1JbnZva2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADCQEKaXNTaHV0ZG93bgAHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5GDAhKA==", "height": 784045, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let configStr = valueOrElse(getString(this, "configAddress"), "3PMoEibdLeWqcURQ8351XhaWwyacDc7G4e5")
5+
6+let CONFIG_ADDRESS = if ((configStr == ""))
7+ then this
8+ else Address(fromBase58String(configStr))
9+
10+let shutdownAddressStr = valueOrElse(getString(CONFIG_ADDRESS, "shutdownAddress"), "3PEpv9hRFWEEBU22WRnLsw1bH4YGtcU728o")
11+
12+let shutdownAddress = fromBase58String(shutdownAddressStr)
13+
14+func isShutdown () = match getBoolean(Address(shutdownAddress), "is_shutdown") {
15+ case x: Boolean =>
16+ x
17+ case _ =>
18+ false
19+}
20+
21+
22+func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
23+ then unit
24+ else fromBase58String(assetIdStr)
25+
26+
27+func getAssetString (assetId) = match assetId {
28+ case b: ByteVector =>
29+ toBase58String(value(assetId))
30+ case _ =>
31+ "WAVES"
32+}
33+
34+
35+func getTokenBalance (assetId) = match assetId {
36+ case t: ByteVector =>
37+ assetBalance(this, t)
38+ case _ =>
39+ wavesBalance(this).available
40+}
41+
42+
43+func addAssetBytesToList (accum,item) = (accum ++ [getAssetBytes(item)])
44+
45+
46+@Callable(i)
47+func generateIndexWithOneTokenAndStake (mainAddressStr) = {
48+ let tokenId = i.payments[0].assetId
49+ let baseAssetId = tokenId
50+ let mainAddress = Address(fromBase58String(mainAddressStr))
51+ let assetIds = {
52+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
53+ let $s = size($l)
54+ let $acc0 = nil
55+ func $f0_1 ($a,$i) = if (($i >= $s))
56+ then $a
57+ else addAssetBytesToList($a, $l[$i])
58+
59+ func $f0_2 ($a,$i) = if (($i >= $s))
60+ then $a
61+ else throw("List size exceeds 10")
62+
63+ $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)
64+ }
65+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, tokenId)))
66+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
67+ let amount = (i.payments[0].amount / 10000)
68+ func handler (accum,assetId) = {
69+ let assetIdStr = getAssetString(assetId)
70+ let assetWeight = getIntegerValue(mainAddress, (("static_" + assetIdStr) + "_weight"))
71+ let in = match reentrantInvoke(mainAddress, "swap", [getAssetString(assetId), 0], [AttachedPayment(baseAssetId, (amount * assetWeight))]) {
72+ case x: Int =>
73+ x
74+ case _ =>
75+ 0
76+ }
77+ if ((in == in))
78+ then (accum ++ [AttachedPayment(assetId, in)])
79+ else throw("Strict value is not equal to itself.")
80+ }
81+
82+ let baseAssetWeight = getIntegerValue(mainAddress, (("static_" + getAssetString(baseAssetId)) + "_weight"))
83+ let exchangeInvokes = {
84+ let $l = secondaryAssetIds
85+ let $s = size($l)
86+ let $acc0 = [AttachedPayment(baseAssetId, (amount * baseAssetWeight))]
87+ func $f1_1 ($a,$i) = if (($i >= $s))
88+ then $a
89+ else handler($a, $l[$i])
90+
91+ func $f1_2 ($a,$i) = if (($i >= $s))
92+ then $a
93+ else throw("List size exceeds 9")
94+
95+ $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)
96+ }
97+ if ((exchangeInvokes == exchangeInvokes))
98+ then {
99+ let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [false], exchangeInvokes) {
100+ case x: Int =>
101+ x
102+ case _ =>
103+ 0
104+ }
105+ if ((PIssuedAmount == PIssuedAmount))
106+ then {
107+ let stakeInvoke = reentrantInvoke(mainAddress, "stakeIndex", nil, [AttachedPayment(poolIndexId, PIssuedAmount)])
108+ if ((stakeInvoke == stakeInvoke))
109+ then nil
110+ else throw("Strict value is not equal to itself.")
111+ }
112+ else throw("Strict value is not equal to itself.")
113+ }
114+ else throw("Strict value is not equal to itself.")
115+ }
116+
117+
118+
119+@Callable(i)
120+func unstakeIndexAndRedeemAsOneToken (indexAmount,mainAddressStr) = {
121+ let mainAddress = Address(fromBase58String(mainAddressStr))
122+ let assetIds = {
123+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
124+ let $s = size($l)
125+ let $acc0 = nil
126+ func $f0_1 ($a,$i) = if (($i >= $s))
127+ then $a
128+ else addAssetBytesToList($a, $l[$i])
129+
130+ func $f0_2 ($a,$i) = if (($i >= $s))
131+ then $a
132+ else throw("List size exceeds 10")
133+
134+ $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)
135+ }
136+ let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
137+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
138+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
139+ func foldHandler1 (accum,assetId) = (accum ++ [getTokenBalance(assetId)])
140+
141+ let balancesBefore = {
142+ let $l = assetIds
143+ let $s = size($l)
144+ let $acc0 = nil
145+ func $f1_1 ($a,$i) = if (($i >= $s))
146+ then $a
147+ else foldHandler1($a, $l[$i])
148+
149+ func $f1_2 ($a,$i) = if (($i >= $s))
150+ then $a
151+ else throw("List size exceeds 10")
152+
153+ $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)
154+ }
155+ if ((balancesBefore == balancesBefore))
156+ then {
157+ let baseAssetBefore = getTokenBalance(baseAssetId)
158+ if ((baseAssetBefore == baseAssetBefore))
159+ then {
160+ let unstakeInvoke = reentrantInvoke(mainAddress, "unstakeAndRedeemIndex", [indexAmount], nil)
161+ if ((unstakeInvoke == unstakeInvoke))
162+ then {
163+ let balancesAfter = {
164+ let $l = assetIds
165+ let $s = size($l)
166+ let $acc0 = nil
167+ func $f2_1 ($a,$i) = if (($i >= $s))
168+ then $a
169+ else foldHandler1($a, $l[$i])
170+
171+ func $f2_2 ($a,$i) = if (($i >= $s))
172+ then $a
173+ else throw("List size exceeds 10")
174+
175+ $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)
176+ }
177+ if ((balancesAfter == balancesAfter))
178+ then {
179+ let baseAssetAfter = getTokenBalance(baseAssetId)
180+ if ((baseAssetAfter == baseAssetAfter))
181+ then {
182+ func foldHandler2 (accum,assetId) = {
183+ let assetNum = value(indexOf(assetIds, assetId))
184+ let amount = (balancesAfter[assetNum] - balancesBefore[assetNum])
185+ let in = if ((assetId == baseAssetId))
186+ then amount
187+ else match reentrantInvoke(mainAddress, "swap", [getAssetString(baseAssetId), 0], [AttachedPayment(assetId, amount)]) {
188+ case x: Int =>
189+ x
190+ case _ =>
191+ 0
192+ }
193+ if ((in == in))
194+ then (accum + in)
195+ else throw("Strict value is not equal to itself.")
196+ }
197+
198+ let eggAmount = {
199+ let $l = assetIds
200+ let $s = size($l)
201+ let $acc0 = 0
202+ func $f3_1 ($a,$i) = if (($i >= $s))
203+ then $a
204+ else foldHandler2($a, $l[$i])
205+
206+ func $f3_2 ($a,$i) = if (($i >= $s))
207+ then $a
208+ else throw("List size exceeds 9")
209+
210+ $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)
211+ }
212+ if ((eggAmount == eggAmount))
213+ then [ScriptTransfer(i.caller, (eggAmount + (baseAssetAfter - baseAssetBefore)), baseAssetId)]
214+ else throw("Strict value is not equal to itself.")
215+ }
216+ else throw("Strict value is not equal to itself.")
217+ }
218+ else throw("Strict value is not equal to itself.")
219+ }
220+ else throw("Strict value is not equal to itself.")
221+ }
222+ else throw("Strict value is not equal to itself.")
223+ }
224+ else throw("Strict value is not equal to itself.")
225+ }
226+
227+
228+
229+@Callable(i)
230+func generateWithOneToken (mainAddressStr) = {
231+ let baseAssetId = i.payments[0].assetId
232+ let mainAddress = Address(fromBase58String(mainAddressStr))
233+ let assetIds = {
234+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
235+ let $s = size($l)
236+ let $acc0 = nil
237+ func $f0_1 ($a,$i) = if (($i >= $s))
238+ then $a
239+ else addAssetBytesToList($a, $l[$i])
240+
241+ func $f0_2 ($a,$i) = if (($i >= $s))
242+ then $a
243+ else throw("List size exceeds 10")
244+
245+ $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)
246+ }
247+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
248+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
249+ let payAmount = i.payments[0].amount
250+ func handler (accum,assetId) = {
251+ let assetIdStr = getAssetString(assetId)
252+ let assetWeight = getIntegerValue(mainAddress, (("static_" + assetIdStr) + "_weight"))
253+ let amount = fraction(payAmount, assetWeight, 10000)
254+ let in = match reentrantInvoke(mainAddress, "swap", [getAssetString(assetId), 0], [AttachedPayment(baseAssetId, amount)]) {
255+ case x: Int =>
256+ x
257+ case _ =>
258+ 0
259+ }
260+ if ((in == in))
261+ then (accum ++ [AttachedPayment(assetId, in)])
262+ else throw("Strict value is not equal to itself.")
263+ }
264+
265+ let returnFlag = false
266+ let baseAssetWeight = getIntegerValue(mainAddress, (("static_" + getAssetString(baseAssetId)) + "_weight"))
267+ let basePayAmount = fraction(payAmount, baseAssetWeight, 10000)
268+ let exchangeInvokes = {
269+ let $l = secondaryAssetIds
270+ let $s = size($l)
271+ let $acc0 = [AttachedPayment(baseAssetId, basePayAmount)]
272+ func $f1_1 ($a,$i) = if (($i >= $s))
273+ then $a
274+ else handler($a, $l[$i])
275+
276+ func $f1_2 ($a,$i) = if (($i >= $s))
277+ then $a
278+ else throw("List size exceeds 9")
279+
280+ $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)
281+ }
282+ if ((exchangeInvokes == exchangeInvokes))
283+ then {
284+ let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [returnFlag], exchangeInvokes) {
285+ case x: Int =>
286+ x
287+ case _ =>
288+ 0
289+ }
290+ if ((PIssuedAmount == PIssuedAmount))
291+ then [ScriptTransfer(i.caller, PIssuedAmount, poolIndexId)]
292+ else throw("Strict value is not equal to itself.")
293+ }
294+ else throw("Strict value is not equal to itself.")
295+ }
296+
297+
298+
299+@Callable(i)
300+func redeemWithOneToken (mainAddressStr,outAssetIdStr) = {
301+ let mainAddress = Address(fromBase58String(mainAddressStr))
302+ let assetIds = {
303+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
304+ let $s = size($l)
305+ let $acc0 = nil
306+ func $f0_1 ($a,$i) = if (($i >= $s))
307+ then $a
308+ else addAssetBytesToList($a, $l[$i])
309+
310+ func $f0_2 ($a,$i) = if (($i >= $s))
311+ then $a
312+ else throw("List size exceeds 10")
313+
314+ $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)
315+ }
316+ let baseAssetId = getAssetBytes(outAssetIdStr)
317+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
318+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
319+ func foldHandler1 (accum,assetId) = (accum ++ [getTokenBalance(assetId)])
320+
321+ let returnToOrigin = false
322+ let balancesBefore = {
323+ let $l = assetIds
324+ let $s = size($l)
325+ let $acc0 = nil
326+ func $f1_1 ($a,$i) = if (($i >= $s))
327+ then $a
328+ else foldHandler1($a, $l[$i])
329+
330+ func $f1_2 ($a,$i) = if (($i >= $s))
331+ then $a
332+ else throw("List size exceeds 10")
333+
334+ $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)
335+ }
336+ if ((balancesBefore == balancesBefore))
337+ then {
338+ let baseAssetBefore = getTokenBalance(baseAssetId)
339+ if ((baseAssetBefore == baseAssetBefore))
340+ then {
341+ let unstakeInvoke = reentrantInvoke(mainAddress, "redeemIndex", [returnToOrigin], [i.payments[0]])
342+ if ((unstakeInvoke == unstakeInvoke))
343+ then {
344+ let balancesAfter = {
345+ let $l = assetIds
346+ let $s = size($l)
347+ let $acc0 = nil
348+ func $f2_1 ($a,$i) = if (($i >= $s))
349+ then $a
350+ else foldHandler1($a, $l[$i])
351+
352+ func $f2_2 ($a,$i) = if (($i >= $s))
353+ then $a
354+ else throw("List size exceeds 10")
355+
356+ $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)
357+ }
358+ if ((balancesAfter == balancesAfter))
359+ then {
360+ let baseAssetAfter = getTokenBalance(baseAssetId)
361+ if ((baseAssetAfter == baseAssetAfter))
362+ then {
363+ func foldHandler2 (accum,assetId) = {
364+ let assetNum = value(indexOf(assetIds, assetId))
365+ let amount = (balancesAfter[assetNum] - balancesBefore[assetNum])
366+ let in = if ((assetId == baseAssetId))
367+ then amount
368+ else match reentrantInvoke(mainAddress, "swap", [getAssetString(baseAssetId), 0], [AttachedPayment(assetId, amount)]) {
369+ case x: Int =>
370+ x
371+ case _ =>
372+ 0
373+ }
374+ if ((in == in))
375+ then (accum + in)
376+ else throw("Strict value is not equal to itself.")
377+ }
378+
379+ let out = {
380+ let $l = assetIds
381+ let $s = size($l)
382+ let $acc0 = 0
383+ func $f3_1 ($a,$i) = if (($i >= $s))
384+ then $a
385+ else foldHandler2($a, $l[$i])
386+
387+ func $f3_2 ($a,$i) = if (($i >= $s))
388+ then $a
389+ else throw("List size exceeds 10")
390+
391+ $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)
392+ }
393+ if ((out == out))
394+ then [ScriptTransfer(i.caller, out, baseAssetId)]
395+ else throw("Strict value is not equal to itself.")
396+ }
397+ else throw("Strict value is not equal to itself.")
398+ }
399+ else throw("Strict value is not equal to itself.")
400+ }
401+ else throw("Strict value is not equal to itself.")
402+ }
403+ else throw("Strict value is not equal to itself.")
404+ }
405+ else throw("Strict value is not equal to itself.")
406+ }
407+
408+
409+
410+@Callable(i)
411+func generateIndexAndStake (mainAddressStr) = {
412+ let mainAddress = Address(fromBase58String(mainAddressStr))
413+ let assetIds = {
414+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
415+ let $s = size($l)
416+ let $acc0 = nil
417+ func $f0_1 ($a,$i) = if (($i >= $s))
418+ then $a
419+ else addAssetBytesToList($a, $l[$i])
420+
421+ func $f0_2 ($a,$i) = if (($i >= $s))
422+ then $a
423+ else throw("List size exceeds 10")
424+
425+ $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)
426+ }
427+ let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
428+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
429+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
430+ let PIssuedAmount = match reentrantInvoke(mainAddress, "generateIndex", [true], i.payments) {
431+ case x: Int =>
432+ x
433+ case _ =>
434+ 0
435+ }
436+ if ((PIssuedAmount == PIssuedAmount))
437+ then {
438+ let stakeInvoke = reentrantInvoke(mainAddress, "stakeIndex", nil, [AttachedPayment(poolIndexId, PIssuedAmount)])
439+ if ((stakeInvoke == stakeInvoke))
440+ then nil
441+ else throw("Strict value is not equal to itself.")
442+ }
443+ else throw("Strict value is not equal to itself.")
444+ }
445+
446+
447+
448+@Callable(i)
449+func unstakeAndRedeemIndex (amount,mainAddressStr) = {
450+ let mainAddress = Address(fromBase58String(mainAddressStr))
451+ let assetIds = {
452+ let $l = split(getStringValue(mainAddress, "static_tokenIds"), ",")
453+ let $s = size($l)
454+ let $acc0 = nil
455+ func $f0_1 ($a,$i) = if (($i >= $s))
456+ then $a
457+ else addAssetBytesToList($a, $l[$i])
458+
459+ func $f0_2 ($a,$i) = if (($i >= $s))
460+ then $a
461+ else throw("List size exceeds 10")
462+
463+ $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)
464+ }
465+ let baseAssetId = getAssetBytes(getStringValue(mainAddress, "static_baseTokenId"))
466+ let secondaryAssetIds = removeByIndex(assetIds, value(indexOf(assetIds, baseAssetId)))
467+ let poolIndexId = getBinaryValue(mainAddress, "global_poolToken_id")
468+ let unstakeInvoke = reentrantInvoke(mainAddress, "unstakeIndex", [amount], i.payments)
469+ if ((unstakeInvoke == unstakeInvoke))
470+ then {
471+ let redeemInvoke = reentrantInvoke(mainAddress, "redeemIndex", [true], [AttachedPayment(poolIndexId, amount)])
472+ if ((redeemInvoke == redeemInvoke))
473+ then nil
474+ else throw("Strict value is not equal to itself.")
475+ }
476+ else throw("Strict value is not equal to itself.")
477+ }
478+
479+
480+@Verifier(tx)
481+func verify () = if (isShutdown())
482+ then false
483+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
484+

github/deemru/w8io
35.57 ms