tx · 5dpDgWbW6VuyZtNmYDGnaLiYg9Hf2n52SzjKihJmw1dY

3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg:  -0.01400000 Waves

2022.01.19 15:17 [1885801] smart account 3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg > SELF 0.00000000 Waves

{ "type": 13, "id": "5dpDgWbW6VuyZtNmYDGnaLiYg9Hf2n52SzjKihJmw1dY", "fee": 1400000, "feeAssetId": null, "timestamp": 1642594698804, "version": 2, "chainId": 84, "sender": "3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg", "senderPublicKey": "CViCXhHrygDDAtVc1uFczxe6ANj9tBz5PGQDS1yWZqgy", "proofs": [ "3PhKTyi1x4HzBKuiKZTgVEWtyChirz8CAt73jRx8quiaTmuYVMWKpDGNWnWy18SLwBuAFPLp3UhzztcwBAPjHZ9M", "3jqb2LYXwveDbTDEPbvLzxJtzDvy7gMBnyyCx6DLfLFdxfD2D48YisK5JcTSkXF5jC6wpe8CH6pS8ZjJHNaiYN91" ], "script": "base64:AAIFAAAAAAAAAEQIAhIECgIBCBIDCgEIEg4KDAgBAQEBAQEBAQEEGBIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIDCgEBEgQKAgEBEgASAAAAADwAAAAACWtleUFjdGl2ZQIAAAAGYWN0aXZlAAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAACFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMCAAAAIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwAAAAASa2V5TGF1bmNocGFkTmV4dElkAgAAABFsYXVuY2hwYWRfbmV4dF9pZAAAAAAUa2V5TGF1bmNocGFkQWN0aXZlSWQCAAAAE2xhdW5jaHBhZF9hY3RpdmVfaWQAAAAADWtleUluaXRDYWxsZXICAAAAC2luaXRfY2FsbGVyAAAAAAprZXlBZGRyZXNzAgAAAAhfYWRkcmVzcwAAAAANa2V5SW5pdEhlaWdodAIAAAAMX2luaXRfaGVpZ2h0AAAAAA5rZXlTdGFydEhlaWdodAIAAAANX3N0YXJ0X2hlaWdodAAAAAARa2V5RmluYWxpc2VIZWlnaHQCAAAAEF9maW5hbGlzZV9oZWlnaHQAAAAADGtleUNvbWlzc2lvbgIAAAAKX2NvbWlzc2lvbgAAAAAKa2V5QXNzZXRJZAIAAAAJX2Fzc2V0X2lkAAAAABNrZXlUb3RhbFRva2VuQW1vdW50AgAAABNfdG90YWxfdG9rZW5fYW1vdW50AAAAABZrZXlUb3RhbEFtb3VudFVzZG5Tb2xkAgAAABBfdG90YWxfdXNkbl9zb2xkAAAAABJrZXlUb2tlbnNQZXJUaWNrZXQCAAAAEl90b2tlbnNfcGVyX3RpY2tldAAAAAAQa2V5UHJpY2VQZXJUb2tlbgIAAAAQX3ByaWNlX3Blcl90b2tlbgAAAAAQa2V5U3dvcFBlclRpY2tldAIAAAAQX3N3b3BfcGVyX3RpY2tldAAAAAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIAAAAXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAAAAAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AgAAABNfdG9rZW5zX2FjY2Vzc19saXN0AAAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAgAAABZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uAAAAABNrZXlUaWNrZXRMYXN0TnVtYmVyAgAAABNfdGlja2V0X2xhc3RfbnVtYmVyAAAAABNrZXlHb3Zlcm5hbmNlU3Rha2VkAgAAAAxfU1dPUF9hbW91bnQAAAAADGtleVVzZXJSZWZJZAIAAAAHX3JlZl9pZAAAAAANa2V5VmVyaWZ5SGFzaAIAAAAMX3ZlcmlmeV9oYXNoAAAAAAtrZXlEdXJhdGlvbgIAAAAJX2R1cmF0aW9uAAAAABhrZXlBbW91bnRVU0ROSW5NYXJrZXRpbmcCAAAAIl90b3RhbF9wdXJjaGFzZWRfdXNkbl9pbl9tYXJrZXRpbmcAAAAAIWtleUFtb3VudFVTRE5Jbk1hcmtldGluZ0ZpbmFsaXplZAIAAAAsX3RvdGFsX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZ19maW5hbGl6ZWQAAAAADmtleVRyYW5zZmVyVXNkAgAAAA1fdHJhbnNmZXJfdXNkAAAAABRrZXlGcmVlelN3b3BEdXJhdGlvbgIAAAAVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uAAAAABhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4CAAAAGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAAAAAQa2V5RnJlZXplVG9rZW5JZAIAAAAQX2ZyZWV6ZV90b2tlbl9pZAAAAAAWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgIAAAAWX2ZyZWV6ZV90b2tlbl9kdXJhdGlvbgAAAAAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQCAAAAGF9mcmVlemVfdG9rZW5fcGVyX3RpY2tldAAAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQCAAAAD19ib3VnaHRfdGlja2V0cwAAAAAOa2V5VXNlclRpY2tldHMCAAAAD190aWNrZXRzX251bWJlcgAAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAgAAAB1fYXZhaWxhYmxlX3B1cmNoYXNlX21hcmtldGluZwAAAAAca2V5VXNlckFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAcX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAgAAABNfYm91Z2h0X2FsbG9jYXRpb25zAAAAABJrZXlVc2VyQ2xhaW1TdGF0dXMCAAAADV9jbGFpbV9zdGF0dXMAAAAAGmtleVVzZXJXaW5uZWRUaWNrZXRzQW1vdW50AgAAAA9fdGlja2V0c19yZXN1bHQAAAAAEmtleVVzZXJGcmVlemVUb2tlbgIAAAAUX2ZyZWV6ZV90b2tlbl9hbW91bnQAAAAAEGxhdWNocGFkRHVyYXRpb24AAAAAAAAAJxAAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVOlFqh6QLzqu8boO5i6akl8amITh82KzCAAAAAAKZ292ZXJuYW5jZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVKr6ad6B9BNShco/LjqIUbMZ6pgcWfINLQAAAAAQY29tbWlzc2lvbldhbGxldAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVIwpHfmxeVLLCX5an9rXLwYHFIPsDN0RSQAAAAASc3Rha2luZ1VTRE5BZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUuYnNz0dxupdy7LhFDzOwqkmF0Q14MgJtAAAAAARVU0ROAQAAACBvJKPKqzDcUimY6CxhWu5afyNNwi11u+mdqlTg0tAHwQAAAAASYWRtaW5QdWJLZXlTdGFraW5nAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAUbWF4QWxsb2NhdGlvbnNBbW91bnQAAAAAAAAAAAIAAAAACGlzQWN0aXZlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQYAAAAAEWFjdGl2ZUxhdW5jaHBhZElkCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABRrZXlMYXVuY2hwYWRBY3RpdmVJZAD//////////wEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tl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bml0Q2FsbGVyBQAAAAdhZGRyZXNzBQAAAANuaWwAAAABaQEAAAAEaW5pdAAAAAwAAAAOcHJvamVjdEFkZHJlc3MAAAALc3RhcnRIZWlnaHQAAAAKY29tbWlzc2lvbgAAAA90b2tlbnNQZXJUaWNrZXQAAAANcHJpY2VQZXJUb2tlbgAAABNzd29wZmlUaWNrZXRzQW1vdW50AAAAFGNhbXBhaWduVG9rZW5zQW1vdW50AAAAE3Rva2Vuc1BlckFsbG9jYXRpb24AAAANc3dvcFBlclRpY2tldAAAABJzd29wRnJlZXplRHVyYXRpb24AAAAVZnJlZXplQWRkaXRpb25hbFRva2VuAAAADGZyZWV6ZVBhcmFtcwMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADWtleUluaXRDYWxsZXICAAAAAAkAAAIAAAABAgAAAClPbmx5IHByb2plY3QgYWRtaW4gY2FuIGNhbGwgaW5pdCBmdW5jdGlvbgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQJAAACAAAAAQIAAAAzU3RhcnQgaGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGJsb2NrY2hhaW4gaGVpZ2h0AwMFAAAAFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkBAAAAAiE9AAAAAgkAAZAAAAABBQAAAAxmcmVlemVQYXJhbXMAAAAAAAAAAAMHCQAAAgAAAAECAAAAJEZyZWV6ZSBwYXJhbXMgbGlzdCBtdXN0IGhhdmUgMyBpdGVtcwQAAAALbGF1bmNocGFkSWQJAQAAABJnZXRMYXVuY2hwYWROZXh0SWQAAAAABAAAAA5sYXVuY2hwYWRJZFN0cgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAQAAAALJHQwNTMwOTUzODQJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA1MzA5NTM4NAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDUzMDk1Mzg0AAAAAl8yBAAAAAskdDA1MzkzNTQ2NgkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAACnBtdEFzc2V0SWQEAAAADXBtdFN0ckFzc2V0SWQIBQAAAAskdDA1MzkzNTQ2NgAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAALJHQwNTM5MzU0NjYAAAACXzIEAAAAC3BtdERlY2ltYWxzCAUAAAALJHQwNTM5MzU0NjYAAAACXzMEAAAAFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeQMFAAAAFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAYa2V5RnJlZXplQWRkaXRpb25hbFRva2VuBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABBrZXlGcmVlemVUb2tlbklkCQABkQAAAAIFAAAADGZyZWV6ZVBhcmFtcwAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGZyZWV6ZVBhcmFtcwAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxmcmVlemVQYXJhbXMAAAAAAAAAAAIFAAAAA25pbAUAAAADbmlsCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcG10U3RyQXNzZXRJZAIAAAAKX2xhdW5jaHBhZAUAAAALbGF1bmNocGFkSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleUxhdW5jaHBhZE5leHRJZAkAAGQAAAACBQAAAAtsYXVuY2hwYWRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAprZXlBZGRyZXNzBQAAAA5wcm9qZWN0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAANa2V5SW5pdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAA5rZXlTdGFydEhlaWdodAUAAAALc3RhcnRIZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAC2tleUR1cmF0aW9uBQAAABBsYXVjaHBhZER1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABRrZXlGcmVlelN3b3BEdXJhdGlvbgUAAAASc3dvcEZyZWV6ZUR1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABNrZXlUb3RhbFRva2VuQW1vdW50BQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAKa2V5QXNzZXRJZAUAAAANcG10U3RyQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAMa2V5Q29taXNzaW9uBQAAAApjb21taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABNrZXlUaWNrZXRMYXN0TnVtYmVyAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABJrZXlUb2tlbnNQZXJUaWNrZXQFAAAAD3Rva2Vuc1BlclRpY2tldAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAQa2V5UHJpY2VQZXJUb2tlbgUAAAANcHJpY2VQZXJUb2tlbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAQa2V5U3dvcFBlclRpY2tldAUAAAANc3dvcFBlclRpY2tldAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAUAAAATc3dvcGZpVGlja2V0c0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAXa2V5Q2FtcGFpZ25Ub2tlbnNBbW91bnQFAAAAFGNhbXBhaWduVG9rZW5zQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBQAAABN0b2tlbnNQZXJBbGxvY2F0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABRrZXlMYXVuY2hwYWRBY3RpdmVJZAUAAAALbGF1bmNocGFkSWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa2V5SW5pdENhbGxlcgIAAAAABQAAAANuaWwFAAAAFWZyZWV6ZUFkZGl0aW9u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AAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAQa2V5RnJlZXplVG9rZW5JZAkAAAIAAAABCQABLAAAAAICAAAAOVR3byBhdHRhY2hlZCBwYXltZW50cyBleHBlY3RlZDogRmlyc3QgaW4gVVNETiwgc2Vjb25kIGluIAUAAAANZnJlZXplVG9rZW5JZAMDCQAAZwAAAAIAAAAAAAAAAAAFAAAAF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBgkAAGcAAAACAAAAAAAAAAAABQAAABRhbGxvd2VkVGlja2V0c0Ftb3VudAkAAAIAAAABAgAAACpOb3QgZW5vdWdodCBTV09QIGluIHN0YWtpbmcgdG8gYnV5IHRpY2tldHMEAAAACnRva2VuUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAQa2V5UHJpY2VQZXJUb2tlbgQAAAAPdG9rZW5zUGVyVGlja2V0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEmtleVRva2Vuc1BlclRpY2tldAQAAAAHdG9rZW5JZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAACmtleUFzc2V0SWQEAAAACyR0MDk1NTQ5NjMwCQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAAHdG9rZW5JZAQAAAAPdG9rZW5TdHJBc3NldElkCAUAAAALJHQwOTU1NDk2MzAAAAACXzEEAAAADnRva2VuQXNzZXROYW1lCAUAAAALJHQwOTU1NDk2MzAAAAACXzIEAAAADXRva2VuRGVjaW1hbHMIBQAAAAskdDA5NTU0OTYzMAAAAAJfMwQAAAALdGlja2V0UHJpY2UJAABrAAAAAwUAAAAPdG9rZW5zUGVyVGlja2V0BQAAAAp0b2tlblByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXRva2VuRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAE2NvbW1pc3Npb25QZXJUaWNrZXQJAABrAAAAAwUAAAALdGlja2V0UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5Q29taXNzaW9uAAAAAAAAAABkBAAAAA9idXlUaWNrZXRBbW91bnQJAABpAAAAAgUAAAAJcG10QW1vdW50CQAAZAAAAAIFAAAAC3RpY2tldFByaWNlBQAAABNjb21taXNzaW9uUGVyVGlja2V0BAAAABZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQABlwAAAAEJAARMAAAAAgUAAAAPYnV5VGlja2V0QW1vdW50CQAETAAAAAIFAAAAFGFsbG93ZWRUaWNrZXRzQW1vdW50BQAAAANuaWwEAAAAHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24JAABoAAAAAgUAAAAWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAAGQAAAACBQAAAAt0aWNrZXRQcmljZQUAAAATY29tbWlzc2lvblBlclRpY2tldAQAAAAGY2hhbmdlCQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAAcYWxsb3dlZEJ1eVByaWNlV2l0aENvbWlzc2lvbgMJAAAAAAAAAgUAAAAPYnV5VGlja2V0QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAH05vdCBlbm91Z2h0IFVTRE4gdG8gYnV5IHRpY2tldHMDCQEAAAACIT0AAAACBQAAAAZjaGFuZ2UAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABZXcm9uZyBwYXltZW50LiBUbyBidXkgCQABpAAAAAEFAAAAFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQCAAAAGHRpY2tldHMgeW91IG5lZWQgdG8gcGF5IAkAAaQAAAABBQAAABxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uAgAAAARVU0ROBAAAABVmcmVlemVBZGRpdGlvbmFsRW50cnkDBQAAABVmcmVlemVBZGRpdGlvbmFsVG9rZW4EAAAADWZyZWV6ZVRva2VuSWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAQa2V5RnJlZXplVG9rZW5JZAQAAAAUZnJlZXplVG9rZW5QZXJUaWNrZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQEAAAADSR0MDEwNzcyMTA4NTkJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAdhc3NldElkBAAAAA9wbXRBbW91bnRGcmVlemUIBQAAAA0kdDAxMDc3MjEwODU5AAAAAl8xBAAAABBwbXRBc3NldElkRnJlZXplCAUAAAANJHQwMTA3NzIxMDg1OQAAAAJfMgQAAAANJHQwMTA4NzYxMDk2NwkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAACnBtdEFzc2V0SWQEAAAAE3BtdEZyZWV6ZVN0ckFzc2V0SWQIBQAAAA0kdDAxMDg3NjEwOTY3AAAAAl8xBAAAABJwbXRGcmVlemVBc3NldE5hbWUIBQAAAA0kdDAxMDg3NjEwOTY3AAAAAl8yBAAAABFwbXRGcmVlemVEZWNpbWFscwgFAAAADSR0MDEwODc2MTA5NjcAAAACXzMEAAAAEG5lZWRGcmVlemVUb2tlbnMJAABoAAAAAgUAAAAUZnJlZXplVG9rZW5QZXJUaWNrZXQFAAAAD2J1eVRpY2tldEFtb3VudAMDCQEAAAACIT0AAAACBQAAABNwbXRGcmVlemVTdHJBc3NldElkBQAAAA1mcmVlemVUb2tlbklkBgkBAAAAAiE9AAAAAgUAAAAQbmVlZEZyZWV6ZVRva2VucwUAAAAPcG10QW1vdW50RnJlZXplCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQWW91IG5lZWQgdG8gYWRkIAkAAaQAAAABBQAAABBuZWVkRnJlZXpl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aAUAAAAJc2F2ZWRIYXNoCQAAAgAAAAECAAAAHHZyZiBIZWlnaHQgaGFzaCBub3QgbWF0Y2hpbmcEAAAADnByb2plY3RBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAACmtleUFkZHJlc3MEAAAACmNvbW1pc3Npb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5Q29taXNzaW9uBAAAAA50cmFuc2ZlcmVkVXNkbgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADmtleVRyYW5zZmVyVXNkAAAAAAAAAAAABAAAABdzd29wZmlNZW1iZXJzVXNkbkFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABZrZXlUb3RhbEFtb3VudFVzZG5Tb2xkBAAAABZzd29wZmlNZW1iZXJzQ29taXNzaW9uCQAAawAAAAMFAAAAF3N3b3BmaU1lbWJlcnNVc2RuQW1vdW50BQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAACFrZXlBbW91bnRVU0ROSW5NYXJrZXRpbmdGaW5hbGl6ZWQEAAAAEm1hcmtldGluZ0NvbWlzc2lvbgkAAGsAAAADBQAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAANdW5zdGFrZUFtb3VudAkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgUAAAAXc3dvcGZpTWVtYmVyc1VzZG5BbW91bnQFAAAAGnRvdGFsQW1vdW50VXNkbkluTWFya2V0aW5nBQAAABZzd29wZmlNZW1iZXJzQ29taXNzaW9uBQAAABJtYXJrZXRpbmdDb21pc3Npb24DCQAAZgAAAAIFAAAADnRyYW5zZmVyZWRVc2RuCQAAZAAAAAIFAAAAF3N3b3BmaU1lbWJlcnNVc2RuQW1vdW50BQAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwkAAAIAAAABAgAAAChDYW4ndCB0cmFuc2ZlciBuZWdhdGl2ZSB2YWx1ZSB0byBwcm9qZWN0BAAAAANpbnYJAAP8AAAABAUAAAASc3Rha2luZ1VTRE5BZGRyZXNzAgAAAA51bmxvY2tOZXV0cmlubwkABEwAAAACBQAAAA11bnN0YWtlQW1vdW50CQAETAAAAAIJAAJYAAAAAQUAAAAEVVNETgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEWtleUZpbmFsaXNlSGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAOcHJvamVjdEFkZHJlc3MJAABlAAAAAgkAAGQAAAACBQAAABdzd29wZmlNZW1iZXJzVXNkbkFtb3VudAUAAAAadG90YWxBbW91bnRVc2RuSW5NYXJrZXRpbmcFAAAADnRyYW5zZmVyZWRVc2RuBQAAAARVU0ROCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEGNvbW1pc3Npb25XYWxsZXQJAABkAAAAAgUAAAAWc3dvcGZpTWVtYmVyc0NvbWlzc2lvbgUAAAASbWFya2V0aW5nQ29taXNzaW9uBQAAAARVU0ROBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAABWNsYWltAAAAAQAAAAtsYXVuY2hwYWRJZAQAAAAPdXNlckNsYWltU3RhdHVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRo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AQUAAAAHdG9rZW5JZAQAAAAPdG9rZW5TdHJBc3NldElkCAUAAAANJHQwMTk2MzQxOTcxMAAAAAJfMQQAAAAOdG9rZW5Bc3NldE5hbWUIBQAAAA0kdDAxOTYzNDE5NzEwAAAAAl8yBAAAAA10b2tlbkRlY2ltYWxzCAUAAAANJHQwMTk2MzQxOTcxMAAAAAJfMwQAAAALdGlja2V0UHJpY2UJAABrAAAAAwUAAAAPdG9rZW5zUGVyVGlja2V0BQAAAAp0b2tlblByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXRva2VuRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQAAAAUdHJhbnNmZXJUb2tlbnNBbW91bnQJAABkAAAAAgkAAGgAAAACBQAAAA13b25uZWRUaWNrZXRzBQAAAA90b2tlbnNQZXJUaWNrZXQJAABoAAAAAgUAAAASYWxsb3dlZEFsbG9jYXRpb25zBQAAABN0b2tlbnNQZXJBbGxvY2F0aW9uBAAAABtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMJAABoAAAAAgkAAGUAAAACBQAAABFib3VnaHRBbGxvY2F0aW9ucwUAAAASYWxsb3dlZEFsbG9jYXRpb25zBQAAABN0b2tlbnNQZXJBbGxvY2F0aW9uBAAAABJ1c2RuRm9yQWxsb2NhdGlvbnMJAABrAAAAAwkAAGsAAAADBQAAABtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMFAAAACnRva2VuUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAANdG9rZW5EZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgkAAGQAAAACAAAAAAAAAABkBQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAABZ1c2RuRm9yVW53b25uZWRUaWNrZXRzCQAAawAAAAMJAABoAAAAAgkAAGUAAAACBQAAAA1i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", "height": 1885801, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FfjeQD3dZ1HpruzRGKf1AQTQrF6nD7dRpYqpAG8TmVwK Next: 88GZgHh8B3tXQXd7u5tT99MrpbkAxt5Chsk9JVqd27iF Diff:
OldNewDifferences
3131
3232 let o = "_total_token_amount"
3333
34-let p = "_total_buy_asset_sold"
34+let p = "_total_usdn_sold"
3535
3636 let q = "_tokens_per_ticket"
3737
5555
5656 let A = "_duration"
5757
58-let B = "_total_purchased_buy_asset_in_marketing"
58+let B = "_total_purchased_usdn_in_marketing"
5959
60-let C = "_total_purchased_buy_asset_in_marketing_finalized"
60+let C = "_total_purchased_usdn_in_marketing_finalized"
6161
62-let D = "_transfer_buy_asset"
62+let D = "_transfer_usd"
6363
6464 let E = "_freeze_swop_duration"
6565
7171
7272 let I = "_freeze_token_per_ticket"
7373
74-let J = "_buy_token"
74+let J = "_bought_tickets"
7575
76-let K = "_claim_params"
76+let K = "_tickets_number"
7777
78-let L = "_high_competition_comission"
78+let L = "_available_purchase_marketing"
7979
80-let M = "_high_competition_sale"
80+let M = "_purchased_usdn_in_marketing"
8181
82-let N = "_high_competition_ticket_last_number"
82+let N = "_bought_allocations"
8383
84-let O = "_tickets_high_competition"
84+let O = "_claim_status"
8585
86-let P = "_total_buy_asset_sold_high_competition"
86+let P = "_tickets_result"
8787
88-let Q = "_claimed_tokens"
88+let Q = "_freeze_token_amount"
8989
90-let R = "_claimed_buy_tokens"
90+let R = 10000
9191
92-let S = "_bought_tickets"
92+let S = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
9393
94-let T = "_tickets_number"
94+let T = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
9595
96-let U = "_tickets_number_high_competition"
96+let U = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
9797
98-let V = "_bought_tickets_high_competition"
98+let V = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
9999
100-let W = "_available_purchase_marketing"
100+let W = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
101101
102-let X = "_purchased_buy_asset_in_marketing"
102+let X = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
103103
104-let Y = "_bought_allocations"
104+let Y = 2
105105
106-let Z = "_claim_status"
106+let Z = valueOrElse(getBoolean(this, a), true)
107107
108-let aa = "_tickets_result"
108+let aa = valueOrElse(getIntegerValue(this, g), -1)
109109
110-let ab = "_tickets_result_high_competition"
111-
112-let ac = "_freeze_token_amount"
113-
114-let ad = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
115-
116-let ae = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
117-
118-let af = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
119-
120-let ag = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
121-
122-let ah = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
123-
124-let ai = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
125-
126-let aj = 2
127-
128-let ak = valueOrElse(getIntegerValue(this, g), -1)
129-
130-func al (am) = {
131- let an = getString(ad, am)
132- if ($isInstanceOf(an, "String"))
110+func ab (ac) = {
111+ let ad = getString(S, ac)
112+ if ($isInstanceOf(ad, "String"))
133113 then {
134- let ao = an
135- fromBase58String(ao)
114+ let ae = ad
115+ fromBase58String(ae)
136116 }
137117 else {
138- let ap = an
118+ let af = ad
139119 throw("Admin public key is empty")
140120 }
141121 }
142122
143123
144-let aq = al(b)
124+let ag = ab(b)
145125
146-let ar = al(c)
126+let ah = ab(c)
147127
148-let as = al(d)
128+let ai = ab(d)
149129
150-func at (au) = {
151- let an = au
152- if ($isInstanceOf(an, "ByteVector"))
130+func aj (ak) = {
131+ let ad = ak
132+ if ($isInstanceOf(ad, "ByteVector"))
153133 then {
154- let av = an
155- let aw = toBase58String(av)
156- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157- $Tuple3(aw, ax.name, ax.decimals)
134+ let al = ad
135+ let am = toBase58String(al)
136+ let an = valueOrErrorMessage(assetInfo(al), (("Asset " + am) + " doesn't exist"))
137+ $Tuple3(am, an.name, an.decimals)
158138 }
159- else if ($isInstanceOf(an, "Unit"))
139+ else if ($isInstanceOf(ad, "Unit"))
160140 then {
161- let ay = an
141+ let ao = ad
162142 $Tuple3("WAVES", "WAVES", 8)
163143 }
164144 else throw("Match error")
165145 }
166146
167147
168-func az () = valueOrElse(getInteger(this, f), 1)
148+func ap () = valueOrElse(getInteger(this, f), 1)
169149
170150
171-let aA = valueOrElse(getBoolean(this, a), true)
172-
173-func aB () = if (aA)
174- then unit
175- else throw("DApp is inactive at this moment")
151+func aq () = valueOrElse(getInteger(V, ((("rpd_balance_" + toBase58String(W)) + "_") + toString(this))), 0)
176152
177153
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
179- then unit
180- else throw("Only admin can call this function")
181-
182-
183-func aE (aF) = if ((aF == "WAVES"))
184- then $Tuple4(unit, "WAVES", "WAVES", 8)
185- else {
186- let aw = aF
187- let av = fromBase58String(aF)
188- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189- $Tuple4(av, aw, ax.name, ax.decimals)
190- }
191-
192-
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
154+@Callable(ar)
155+func hashingRandom (as,at) = if (!(Z))
156+ then throw("DApp is inactive at this moment")
157+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
158+ then throw("Only admin can call this function")
159+ else [StringEntry((toString(as) + z), at)]
195160
196161
197162
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
163+@Callable(ar)
164+func initCaller (au) = if (!(Z))
165+ then throw("DApp is inactive at this moment")
166+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
167+ then throw("Only admin can call this function")
168+ else [StringEntry(h, au)]
200169
201170
202171
203-@Callable(aD)
204-func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
205- then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
207- then throw("One attached payment expected")
208- else if ((height > aK))
209- then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
212- else false)
213- then throw("Freeze params list must have 3 items")
214- else {
215- let aG = az()
216- let bb = toString(aG)
217- let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218- let bd = bc._1
219- let be = bc._2
220- let bf = at(be)
221- let bg = bf._1
222- let bh = bf._2
223- let bi = bf._3
224- let bj = if (aZ)
225- then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
226- else nil
227- ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
228- })
172+@Callable(ar)
173+func init (av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG) = if (!(Z))
174+ then throw("DApp is inactive at this moment")
175+ else if ((toString(ar.caller) != valueOrElse(getString(this, h), "")))
176+ then throw("Only project admin can call init function")
177+ else if ((size(ar.payments) != 1))
178+ then throw("One attached payment expected")
179+ else if ((height > aw))
180+ then throw("Start height must be greater than blockchain height")
181+ else if (if (aF)
182+ then (size(aG) != 3)
183+ else false)
184+ then throw("Freeze params list must have 3 items")
185+ else {
186+ let as = ap()
187+ let aH = toString(as)
188+ let aI = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
189+ let aJ = aI._1
190+ let aK = aI._2
191+ let aL = aj(aK)
192+ let aM = aL._1
193+ let aN = aL._2
194+ let aO = aL._3
195+ let aP = if (aF)
196+ then [BooleanEntry((aH + F), true), StringEntry((aH + G), aG[0]), IntegerEntry((aH + H), parseIntValue(aG[1])), IntegerEntry((aH + I), parseIntValue(aG[2]))]
197+ else nil
198+ ([IntegerEntry((aM + "_launchpad"), as), IntegerEntry(f, (as + 1)), StringEntry((aH + i), av), IntegerEntry((aH + j), height), IntegerEntry((aH + k), aw), IntegerEntry((aH + A), R), IntegerEntry((aH + E), aE), IntegerEntry((aH + o), aJ), StringEntry((aH + n), aM), IntegerEntry((aH + m), ax), IntegerEntry((aH + w), 0), IntegerEntry((aH + q), ay), IntegerEntry((aH + r), az), IntegerEntry((aH + s), aD), IntegerEntry((aH + t), aA), IntegerEntry((aH + u), aB), IntegerEntry((aH + v), aC), IntegerEntry(g, as), StringEntry(h, "")] ++ aP)
199+ }
229200
230201
231202
232-@Callable(aD)
233-func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234- let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235- let bd = bl._1
236- let be = bl._2
237- let bm = aE(value(getString(this, (toString(aG) + J))))
238- let bn = bm._1
239- let bo = bm._2
240- let bp = bm._3
241- let bq = bm._4
242- let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243- let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244- let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245- let bu = (bs - bt)
246- let aK = value(getInteger(this, (toString(aG) + k)))
247- let aL = value(getInteger(this, (toString(aG) + A)))
248- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249- if ((ak != aG))
250- then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
252- then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
254- then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
257- then true
258- else (be != bn)
259- else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
203+@Callable(ar)
204+func commitSwopfiSale (as,aQ) = {
205+ let aR = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
206+ let aJ = aR._1
207+ let aK = aR._2
208+ let aS = valueOrElse(getInteger(T, (toString(ar.caller) + x)), 0)
209+ let aT = (aS / getIntegerValue(this, (toString(as) + s)))
210+ let aU = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + J)), 0)
211+ let aV = (aT - aU)
212+ let aw = value(getInteger(this, (toString(as) + k)))
213+ let aW = value(getInteger(this, (toString(as) + A)))
214+ let aF = valueOrElse(getBoolean(this, (toString(as) + F)), false)
215+ if (!(Z))
216+ then throw("DApp is inactive at this moment")
217+ else if ((aa != as))
218+ then throw("There is no active launchpad or this launchpad is ended")
219+ else if ((aw > height))
220+ then throw("Launchpad sale not started yet")
221+ else if ((height > (aw + aW)))
222+ then throw("Launchpad sale ended")
223+ else if (if (!(aF))
224+ then if ((size(ar.payments) != 1))
263225 then true
264- else (be != bn)
226+ else (aK != W)
265227 else false)
266- then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
269- }
270- else if (if ((0 >= bs))
271- then true
272- else (0 >= bu))
273- then throw("Not enought SWOP in staking to buy tickets")
274- else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
292- else {
293- let bj = if (aZ)
294- then {
295- let bv = getStringValue(this, (toString(aG) + G))
296- let bI = getIntegerValue(this, (toString(aG) + I))
297- let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298- let bK = bJ._1
299- let bL = bJ._2
300- let bM = at(be)
301- let bN = bM._1
302- let bO = bM._2
303- let bP = bM._3
304- let bQ = (bI * bE)
305- if (if ((bN != bv))
306- then true
307- else (bQ != bK))
308- then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309- else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
310- }
311- else nil
312- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313- let bS = getIntegerValue(this, (toString(aG) + w))
314- let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315- let bU = (bR + (if ((bR != ""))
316- then ("," + bT)
317- else ("" + bT)))
318- let bV = if ((bn == ah))
319- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
320- else 0
321- if ((bV == bV))
322- then {
323- let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326- else bW
327- }
328- else throw("Strict value is not equal to itself.")
329- }
228+ then throw("One attached payment in USDN expected")
229+ else if (if (aF)
230+ then if ((size(ar.payments) != 2))
231+ then true
232+ else (aK != W)
233+ else false)
234+ then {
235+ let aX = getStringValue(this, (toString(as) + G))
236+ throw(("Two attached payments expected: First in USDN, second in " + aX))
330237 }
331- })
238+ else if (if ((0 >= aT))
239+ then true
240+ else (0 >= aV))
241+ then throw("Not enought SWOP in staking to buy tickets")
242+ else {
243+ let aY = getIntegerValue(this, (toString(as) + r))
244+ let ay = getIntegerValue(this, (toString(as) + q))
245+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
246+ let ba = aj(aZ)
247+ let bb = ba._1
248+ let bc = ba._2
249+ let bd = ba._3
250+ let be = fraction(ay, aY, pow(10, 0, bd, 0, 0, DOWN))
251+ let bf = fraction(be, getIntegerValue(this, (toString(as) + m)), 100)
252+ let bg = (aJ / (be + bf))
253+ let bh = min([bg, aV])
254+ let bi = (bh * (be + bf))
255+ let bj = (aJ - bi)
256+ if ((bg == 0))
257+ then throw("Not enought USDN to buy tickets")
258+ else if ((bj != 0))
259+ then throw((((("Wrong payment. To buy " + toString(bh)) + "tickets you need to pay ") + toString(bi)) + "USDN"))
260+ else {
261+ let aP = if (aF)
262+ then {
263+ let aX = getStringValue(this, (toString(as) + G))
264+ let bk = getIntegerValue(this, (toString(as) + I))
265+ let bl = $Tuple2(ar.payments[1].amount, ar.payments[1].assetId)
266+ let bm = bl._1
267+ let bn = bl._2
268+ let bo = aj(aK)
269+ let bp = bo._1
270+ let bq = bo._2
271+ let br = bo._3
272+ let bs = (bk * bg)
273+ if (if ((bp != aX))
274+ then true
275+ else (bs != bm))
276+ then throw((((("You need to add " + toString(bs)) + " ") + bq) + " as a second payment"))
277+ else [IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + Q), bm)]
278+ }
279+ else nil
280+ let bt = valueOrElse(getString(this, (((toString(ar.caller) + "_") + toString(as)) + K)), "")
281+ let bu = getIntegerValue(this, (toString(as) + w))
282+ let bv = ((toString((bu + 1)) + "-") + toString((bu + bh)))
283+ let bw = (bt + (if ((bt != ""))
284+ then ("," + bv)
285+ else ("" + bv)))
286+ let bx = invoke(V, "lockNeutrino", nil, [AttachedPayment(aK, aJ)])
287+ if ((bx == bx))
288+ then {
289+ let by = ([IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + J), (aU + bh)), IntegerEntry((toString(as) + w), (bu + bh)), StringEntry((((toString(ar.caller) + "_") + toString(as)) + K), bw)] ++ aP)
290+ if (!(isDefined(getString(this, (((toString(ar.caller) + "_") + toString(as)) + y)))))
291+ then (by ++ [StringEntry((((toString(ar.caller) + "_") + toString(as)) + y), aQ)])
292+ else by
293+ }
294+ else throw("Strict value is not equal to itself.")
295+ }
296+ }
297+ }
332298
333299
334300
335-@Callable(aD)
336-func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337- let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338- let bd = bX._1
339- let be = bX._2
340- let bY = aE(value(getString(this, (toString(aG) + J))))
341- let bn = bY._1
342- let bo = bY._2
343- let bp = bY._3
344- let bq = bY._4
345- let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346- let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348- let aN = getIntegerValue(this, (toString(aG) + m))
349- let bw = getIntegerValue(this, (toString(aG) + r))
350- let aS = getIntegerValue(this, (toString(aG) + v))
351- let cc = aE(getStringValue(this, (toString(aG) + n)))
352- let by = cc._1
353- let bz = cc._2
354- let bA = cc._3
355- let bB = cc._4
356- let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357- let aK = value(getInteger(this, (toString(aG) + k)))
358- let aL = value(getInteger(this, (toString(aG) + A)))
359- if ((ak != aG))
360- then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
362- then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
364- then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
366- then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370- then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
373- else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
375- else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
379- else 0
380- if ((bV == bV))
381- then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
386- }
387- else throw("Strict value is not equal to itself.")
388- }
389- })
301+@Callable(ar)
302+func commitAccessListSale (as,aQ) = {
303+ let bz = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
304+ let aJ = bz._1
305+ let aK = bz._2
306+ let bA = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + M)), 0)
307+ let bB = valueOrElse(getInteger(this, (toString(as) + B)), 0)
308+ let bC = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + N)), 0)
309+ let ax = getIntegerValue(this, (toString(as) + m))
310+ let aY = getIntegerValue(this, (toString(as) + r))
311+ let aC = getIntegerValue(this, (toString(as) + v))
312+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
313+ let bD = aj(aZ)
314+ let bb = bD._1
315+ let bc = bD._2
316+ let bd = bD._3
317+ let bE = fraction(fraction(aY, aC, pow(10, 0, bd, 0, 0, DOWN)), (100 + ax), 100)
318+ let aw = value(getInteger(this, (toString(as) + k)))
319+ let aW = value(getInteger(this, (toString(as) + A)))
320+ if (!(Z))
321+ then throw("DApp is inactive at this moment")
322+ else if ((aa != as))
323+ then throw("There is no active launchpad or this launchpad is ended")
324+ else if ((aw > height))
325+ then throw("Launchpad sale not started yet")
326+ else if ((height > (aw + aW)))
327+ then throw("Launchpad sale ended")
328+ else if (if ((size(ar.payments) != 1))
329+ then true
330+ else (aK != W))
331+ then throw("One attached payment in USDN expected")
332+ else if ((bC >= Y))
333+ then throw((("You can buy only " + toString(Y)) + "allocations"))
334+ else if (if ((bE != aJ))
335+ then ((bE * 2) != aJ)
336+ else false)
337+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bE)) + " USDN per allocation"))
338+ else {
339+ let bF = (aJ / bE)
340+ let bx = invoke(V, "lockNeutrino", nil, [AttachedPayment(aK, aJ)])
341+ if ((bx == bx))
342+ then {
343+ let by = [IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + N), (bC + bF)), IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + M), (bA + aJ)), IntegerEntry((toString(as) + B), (bB + aJ))]
344+ if (!(isDefined(getString(this, (((toString(ar.caller) + "_") + toString(as)) + y)))))
345+ then (by ++ [StringEntry((((toString(ar.caller) + "_") + toString(as)) + y), aQ)])
346+ else by
347+ }
348+ else throw("Strict value is not equal to itself.")
349+ }
350+ }
390351
391352
392353
393-@Callable(aD)
394-func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395- let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396- let bd = cf._1
397- let be = cf._2
398- let cg = aE(value(getString(this, (toString(aG) + J))))
399- let bn = cg._1
400- let bo = cg._2
401- let bp = cg._3
402- let bq = cg._4
403- let aK = value(getInteger(this, (toString(aG) + k)))
404- let aL = value(getInteger(this, (toString(aG) + A)))
405- let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406- let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407- if ((ak != aG))
408- then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
410- then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
412- then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
414- then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
416- then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
354+@Callable(ar)
355+func finalise (as,bG,bH) = {
356+ let bI = getStringValue(this, (toString(as) + z))
357+ let bJ = toBase58String(sha256((toBytes(bG) + toBytes(bH))))
358+ if (!(Z))
359+ then throw("DApp is inactive at this moment")
360+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
361+ then throw("Only admin can call this function")
362+ else if ((bJ != bI))
363+ then throw("vrf Height hash not matching")
364+ else {
365+ let av = addressFromStringValue(getStringValue(this, (toString(as) + i)))
366+ let ax = getIntegerValue(this, (toString(as) + m))
367+ let bK = valueOrElse(getInteger(this, (toString(as) + D)), 0)
368+ let bL = getIntegerValue(this, (toString(as) + p))
369+ let bM = fraction(bL, ax, 100)
370+ let bN = getIntegerValue(this, (toString(as) + C))
371+ let bO = fraction(bN, ax, 100)
372+ let bP = (((bL + bN) + bM) + bO)
373+ if ((bK > (bL + bN)))
374+ then throw("Can't transfer negative value to project")
419375 else {
420- let bw = getIntegerValue(this, (toString(aG) + r))
421- let aO = getIntegerValue(this, (toString(aG) + q))
422- let cj = aE(getStringValue(this, (toString(aG) + n)))
423- let by = cj._1
424- let bz = cj._2
425- let bA = cj._3
426- let bB = cj._4
427- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429- let bE = (bd / (bC + bD))
430- let ck = (bE * (bC + bD))
431- let bH = (bd - ck)
432- if ((bE == 0))
433- then throw((("Not enought " + bp) + " to buy tickets"))
434- else if ((bH != 0))
435- then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
436- else {
437- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438- let bS = getIntegerValue(this, (toString(aG) + N))
439- let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440- let bU = (bR + (if ((bR != ""))
441- then ("," + bT)
442- else ("" + bT)))
443- let bV = if ((bn == ah))
444- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
445- else 0
446- if ((bV == bV))
447- then {
448- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451- else bW
452- }
453- else throw("Strict value is not equal to itself.")
454- }
376+ let bx = invoke(V, "unlockNeutrino", [bP, toBase58String(W)], nil)
377+ if ((bx == bx))
378+ then [IntegerEntry((toString(as) + l), height), ScriptTransfer(av, ((bL + bN) - bK), W), ScriptTransfer(U, (bM + bO), W)]
379+ else throw("Strict value is not equal to itself.")
455380 }
456- })
381+ }
382+ }
457383
458384
459385
460-@Callable(aD)
461-func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462- let cn = getStringValue(this, (toString(aG) + z))
463- let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464- if ((co != cn))
465- then throw("vrf Height hash not matching")
466- else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483- if ((cr > (cs + cw)))
484- then throw("Can't transfer negative value to project")
485- else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
488- else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, ((cs + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
491- else throw("Strict value is not equal to itself.")
492- }
493- }
494- }))
386+@Callable(ar)
387+func claim (as) = {
388+ let bQ = valueOrElse(getBoolean(this, (((toString(ar.caller) + "_") + toString(as)) + O)), false)
389+ let bR = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + J)), 0)
390+ let bC = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + N)), 0)
391+ if (!(Z))
392+ then throw("DApp is inactive at this moment")
393+ else if (!(isDefined(getInteger(this, (toString(as) + l)))))
394+ then throw("You can't claim because results are not finalized")
395+ else if (bQ)
396+ then throw("You are already claimed")
397+ else if (if ((bR == 0))
398+ then (bC == 0)
399+ else false)
400+ then throw("You can't claim because you don't buy anything")
401+ else {
402+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
403+ let bS = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + P)), 0)
404+ let bT = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + L)), 0)
405+ let ax = getIntegerValue(this, (toString(as) + m))
406+ let bU = min([bC, bT])
407+ let aY = getIntegerValue(this, (toString(as) + r))
408+ let ay = getIntegerValue(this, (toString(as) + q))
409+ let bV = aj(aZ)
410+ let bb = bV._1
411+ let bc = bV._2
412+ let bd = bV._3
413+ let be = fraction(ay, aY, pow(10, 0, bd, 0, 0, DOWN))
414+ let aC = getIntegerValue(this, (toString(as) + v))
415+ let bW = ((bS * ay) + (bU * aC))
416+ let bX = ((bC - bU) * aC)
417+ let bY = fraction(fraction(bX, aY, pow(10, 0, bd, 0, 0, DOWN)), (100 + ax), 100)
418+ let bZ = fraction(((bR - bS) * be), (100 + ax), 100)
419+ if (if ((0 > bY))
420+ then true
421+ else (0 > bZ))
422+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
423+ else {
424+ let ca = (bY + bZ)
425+ let cb = if ((ca > 0))
426+ then [ScriptTransfer(ar.caller, ca, W)]
427+ else nil
428+ let cc = if ((bW > 0))
429+ then [ScriptTransfer(ar.caller, bW, aZ)]
430+ else nil
431+ let bx = if ((ca > 0))
432+ then invoke(V, "unlockNeutrino", [ca, toBase58String(W)], nil)
433+ else 0
434+ if ((bx == bx))
435+ then (([BooleanEntry((((toString(ar.caller) + "_") + toString(as)) + O), true)] ++ cc) ++ cb)
436+ else throw("Strict value is not equal to itself.")
437+ }
438+ }
439+ }
495440
496441
497442
498-@Callable(aD)
499-func claim (aG) = valueOrElse(aB(), {
500- let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501- let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503- let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504- let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505- if ((cC == 0))
506- then throw("You can't claim because results are not finalized")
507- else if (cB)
508- then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
511- else false)
512- then (cA == 0)
513- else false)
514- then throw("You can't claim because you don't buy anything")
443+@Callable(ar)
444+func claimFreezeToken (as) = {
445+ let aF = valueOrElse(getBoolean(this, (toString(as) + F)), false)
446+ if (!(Z))
447+ then throw("DApp is inactive at this moment")
448+ else if (!(isDefined(getInteger(this, (toString(as) + l)))))
449+ then throw("You can't claim because results are not finalized")
450+ else if (!(aF))
451+ then throw("There are no additional token freezing for this launchpad")
515452 else {
516- let cD = aE(value(getString(this, (toString(aG) + J))))
517- let bn = cD._1
518- let bo = cD._2
519- let bp = cD._3
520- let bq = cD._4
521- let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522- let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523- let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524- let aN = getIntegerValue(this, (toString(aG) + m))
525- let cq = getIntegerValue(this, (toString(aG) + L))
526- let cH = min([cb, cG])
527- let bw = getIntegerValue(this, (toString(aG) + r))
528- let aO = getIntegerValue(this, (toString(aG) + q))
529- let cI = aE(getStringValue(this, (toString(aG) + n)))
530- let by = cI._1
531- let bz = cI._2
532- let bA = cI._3
533- let bB = cI._4
534- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535- let aS = getIntegerValue(this, (toString(aG) + v))
536- let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537- let cK = ((cb - cH) * aS)
538- let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539- let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540- let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541- let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542- if (if (if ((0 > cL))
543- then true
544- else (0 > cM))
545- then true
546- else (0 > cN))
547- then throw("Error with allowed allocation param or wonned tickets param please contact support")
548- else {
549- let cP = (((cM + cN) + cL) - cO)
550- let cQ = if ((cP > 0))
551- then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
552- else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
555- else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
557- else 0
558- if ((bV == bV))
559- then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561- if (if ((size(cR) == 0))
562- then true
563- else (cR[0] == "claimAll"))
564- then {
565- let cS = if ((cJ > 0))
566- then [ScriptTransfer(aD.caller, cJ, by)]
567- else nil
568- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
569- }
570- else if ((cR[0] == "claimPeriod"))
571- then {
572- let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
573- let cU = value(parseInt(cR[2]))
574- let cV = (value(parseInt(cR[3])) + cC)
575- let cW = ((cU + cC) + cV)
576- let cX = (fraction(cJ, value(parseInt(cR[1])), 100) + (if ((height > cV))
577- then fraction(cJ, (height - cV), cU)
578- else (0 - cT)))
579- let cY = if ((cJ >= (cT + cX)))
580- then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
581- else nil
582- if (if ((cX > 0))
583- then true
584- else (cP > 0))
585- then {
586- let cS = if ((cX > 0))
587- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
588- else nil
589- (cQ ++ cS)
590- }
591- else throw("Nothing to claim")
592- }
593- else throw("Unknown claim function")
594- }
595- else throw("Strict value is not equal to itself.")
596- }
453+ let aZ = fromBase58String(getStringValue(this, (toString(as) + G)))
454+ let cd = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + Q)), 0)
455+ let aw = valueOrElse(getInteger(this, (toString(as) + k)), 0)
456+ let aW = valueOrElse(getInteger(this, (toString(as) + A)), 0)
457+ let ce = getIntegerValue(this, (toString(as) + H))
458+ let cf = ((aw + aW) + ce)
459+ if ((cd == 0))
460+ then throw("You are already claimed your tokens or not paid anything")
461+ else if ((cf > height))
462+ then throw(("Your tokens freezed teel " + toString(cf)))
463+ else [ScriptTransfer(ar.caller, cd, aZ), IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + Q), 0)]
597464 }
598- })
465+ }
599466
600467
601468
602-@Callable(aD)
603-func claimFreezeToken (aG) = valueOrElse(aB(), {
604- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
605- if (!(isDefined(getInteger(this, (toString(aG) + l)))))
606- then throw("You can't claim because results are not finalized")
607- else if (!(aZ))
608- then throw("There are no additional token freezing for this launchpad")
609- else {
610- let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
611- let cZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
612- let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
613- let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
614- let da = getIntegerValue(this, (toString(aG) + H))
615- let db = ((aK + aL) + da)
616- if ((cZ == 0))
617- then throw("You are already claimed your tokens or not paid anything")
618- else if ((db > height))
619- then throw(("Your tokens freezed teel " + toString(db)))
620- else [ScriptTransfer(aD.caller, cZ, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
621- }
622- })
469+@Callable(ar)
470+func transferUsd (as,cg) = if (!(Z))
471+ then throw("DApp is inactive")
472+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
473+ then throw("Only admin can call this function")
474+ else {
475+ let av = addressFromStringValue(getStringValue(this, (toString(as) + i)))
476+[IntegerEntry((toString(as) + D), cg), ScriptTransfer(av, cg, W)]
477+ }
623478
624479
625480
626-@Callable(aD)
627-func transferBuyAsset (aG,dc) = valueOrElse(aB(), valueOrElse(aC(aD), {
628- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
629- let dd = aE(value(getString(this, (toString(aG) + J))))
630- let bn = dd._1
631- let bo = dd._2
632- let bp = dd._3
633- let bq = dd._4
634-[IntegerEntry((toString(aG) + D), dc), ScriptTransfer(aJ, dc, bn)]
635- }))
481+@Callable(ar)
482+func shutdown () = if (!(Z))
483+ then throw("DApp already inactive")
484+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
485+ then throw("Only admin can call this function")
486+ else [BooleanEntry(a, false)]
636487
637488
638489
639-@Callable(aD)
640-func shutdown () = valueOrElse(aC(aD), if (!(aA))
641- then throw("DApp already inactive")
642- else [BooleanEntry(a, false)])
490+@Callable(ar)
491+func activate () = if (Z)
492+ then throw("DApp already active")
493+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
494+ then throw("Only admin can call this function")
495+ else [BooleanEntry(a, true)]
643496
644497
645-
646-@Callable(aD)
647-func activate () = valueOrElse(aC(aD), if (aA)
648- then throw("DApp already active")
649- else [BooleanEntry(a, true)])
650-
651-
652-@Verifier(de)
653-func df () = {
654- let dg = {
655- let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
498+@Verifier(ch)
499+func ci () = {
500+ let cj = {
501+ let ck = if (sigVerify(ch.bodyBytes, ch.proofs[0], ag))
656502 then 1
657503 else 0
658- let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
504+ let cl = if (sigVerify(ch.bodyBytes, ch.proofs[1], ah))
659505 then 1
660506 else 0
661- let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
507+ let cm = if (sigVerify(ch.bodyBytes, ch.proofs[2], ai))
662508 then 1
663509 else 0
664- (((dh + di) + dj) >= 2)
510+ (((ck + cl) + cm) >= 2)
665511 }
666- let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
512+ let cn = if (if (if (sigVerify(ch.bodyBytes, ch.proofs[0], ag))
667513 then true
668- else sigVerify(de.bodyBytes, de.proofs[0], ar))
514+ else sigVerify(ch.bodyBytes, ch.proofs[0], ah))
669515 then true
670- else sigVerify(de.bodyBytes, de.proofs[0], as))
516+ else sigVerify(ch.bodyBytes, ch.proofs[0], ai))
671517 then true
672- else sigVerify(de.bodyBytes, de.proofs[0], ai)
673- let an = de
674- if ($isInstanceOf(an, "DataTransaction"))
518+ else sigVerify(ch.bodyBytes, ch.proofs[0], X)
519+ let ad = ch
520+ if ($isInstanceOf(ad, "DataTransaction"))
675521 then {
676- let dl = an
677- if (valueOrElse(getBoolean(ad, e), false))
678- then dk
522+ let co = ad
523+ if (valueOrElse(getBoolean(S, e), false))
524+ then cn
679525 else false
680526 }
681- else dg
527+ else cj
682528 }
683529
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "admin_pub_1"
77
88 let c = "admin_pub_2"
99
1010 let d = "admin_pub_3"
1111
1212 let e = "launchpad_data_transaction_status"
1313
1414 let f = "launchpad_next_id"
1515
1616 let g = "launchpad_active_id"
1717
1818 let h = "init_caller"
1919
2020 let i = "_address"
2121
2222 let j = "_init_height"
2323
2424 let k = "_start_height"
2525
2626 let l = "_finalise_height"
2727
2828 let m = "_comission"
2929
3030 let n = "_asset_id"
3131
3232 let o = "_total_token_amount"
3333
34-let p = "_total_buy_asset_sold"
34+let p = "_total_usdn_sold"
3535
3636 let q = "_tokens_per_ticket"
3737
3838 let r = "_price_per_token"
3939
4040 let s = "_swop_per_ticket"
4141
4242 let t = "_tickets_swopfi_members"
4343
4444 let u = "_tokens_access_list"
4545
4646 let v = "_tokens_per_allocation"
4747
4848 let w = "_ticket_last_number"
4949
5050 let x = "_SWOP_amount"
5151
5252 let y = "_ref_id"
5353
5454 let z = "_verify_hash"
5555
5656 let A = "_duration"
5757
58-let B = "_total_purchased_buy_asset_in_marketing"
58+let B = "_total_purchased_usdn_in_marketing"
5959
60-let C = "_total_purchased_buy_asset_in_marketing_finalized"
60+let C = "_total_purchased_usdn_in_marketing_finalized"
6161
62-let D = "_transfer_buy_asset"
62+let D = "_transfer_usd"
6363
6464 let E = "_freeze_swop_duration"
6565
6666 let F = "_freeze_additional_token"
6767
6868 let G = "_freeze_token_id"
6969
7070 let H = "_freeze_token_duration"
7171
7272 let I = "_freeze_token_per_ticket"
7373
74-let J = "_buy_token"
74+let J = "_bought_tickets"
7575
76-let K = "_claim_params"
76+let K = "_tickets_number"
7777
78-let L = "_high_competition_comission"
78+let L = "_available_purchase_marketing"
7979
80-let M = "_high_competition_sale"
80+let M = "_purchased_usdn_in_marketing"
8181
82-let N = "_high_competition_ticket_last_number"
82+let N = "_bought_allocations"
8383
84-let O = "_tickets_high_competition"
84+let O = "_claim_status"
8585
86-let P = "_total_buy_asset_sold_high_competition"
86+let P = "_tickets_result"
8787
88-let Q = "_claimed_tokens"
88+let Q = "_freeze_token_amount"
8989
90-let R = "_claimed_buy_tokens"
90+let R = 10000
9191
92-let S = "_bought_tickets"
92+let S = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
9393
94-let T = "_tickets_number"
94+let T = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
9595
96-let U = "_tickets_number_high_competition"
96+let U = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
9797
98-let V = "_bought_tickets_high_competition"
98+let V = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
9999
100-let W = "_available_purchase_marketing"
100+let W = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
101101
102-let X = "_purchased_buy_asset_in_marketing"
102+let X = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
103103
104-let Y = "_bought_allocations"
104+let Y = 2
105105
106-let Z = "_claim_status"
106+let Z = valueOrElse(getBoolean(this, a), true)
107107
108-let aa = "_tickets_result"
108+let aa = valueOrElse(getIntegerValue(this, g), -1)
109109
110-let ab = "_tickets_result_high_competition"
111-
112-let ac = "_freeze_token_amount"
113-
114-let ad = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
115-
116-let ae = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
117-
118-let af = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
119-
120-let ag = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
121-
122-let ah = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
123-
124-let ai = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
125-
126-let aj = 2
127-
128-let ak = valueOrElse(getIntegerValue(this, g), -1)
129-
130-func al (am) = {
131- let an = getString(ad, am)
132- if ($isInstanceOf(an, "String"))
110+func ab (ac) = {
111+ let ad = getString(S, ac)
112+ if ($isInstanceOf(ad, "String"))
133113 then {
134- let ao = an
135- fromBase58String(ao)
114+ let ae = ad
115+ fromBase58String(ae)
136116 }
137117 else {
138- let ap = an
118+ let af = ad
139119 throw("Admin public key is empty")
140120 }
141121 }
142122
143123
144-let aq = al(b)
124+let ag = ab(b)
145125
146-let ar = al(c)
126+let ah = ab(c)
147127
148-let as = al(d)
128+let ai = ab(d)
149129
150-func at (au) = {
151- let an = au
152- if ($isInstanceOf(an, "ByteVector"))
130+func aj (ak) = {
131+ let ad = ak
132+ if ($isInstanceOf(ad, "ByteVector"))
153133 then {
154- let av = an
155- let aw = toBase58String(av)
156- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157- $Tuple3(aw, ax.name, ax.decimals)
134+ let al = ad
135+ let am = toBase58String(al)
136+ let an = valueOrErrorMessage(assetInfo(al), (("Asset " + am) + " doesn't exist"))
137+ $Tuple3(am, an.name, an.decimals)
158138 }
159- else if ($isInstanceOf(an, "Unit"))
139+ else if ($isInstanceOf(ad, "Unit"))
160140 then {
161- let ay = an
141+ let ao = ad
162142 $Tuple3("WAVES", "WAVES", 8)
163143 }
164144 else throw("Match error")
165145 }
166146
167147
168-func az () = valueOrElse(getInteger(this, f), 1)
148+func ap () = valueOrElse(getInteger(this, f), 1)
169149
170150
171-let aA = valueOrElse(getBoolean(this, a), true)
172-
173-func aB () = if (aA)
174- then unit
175- else throw("DApp is inactive at this moment")
151+func aq () = valueOrElse(getInteger(V, ((("rpd_balance_" + toBase58String(W)) + "_") + toString(this))), 0)
176152
177153
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
179- then unit
180- else throw("Only admin can call this function")
181-
182-
183-func aE (aF) = if ((aF == "WAVES"))
184- then $Tuple4(unit, "WAVES", "WAVES", 8)
185- else {
186- let aw = aF
187- let av = fromBase58String(aF)
188- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189- $Tuple4(av, aw, ax.name, ax.decimals)
190- }
191-
192-
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
154+@Callable(ar)
155+func hashingRandom (as,at) = if (!(Z))
156+ then throw("DApp is inactive at this moment")
157+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
158+ then throw("Only admin can call this function")
159+ else [StringEntry((toString(as) + z), at)]
195160
196161
197162
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
163+@Callable(ar)
164+func initCaller (au) = if (!(Z))
165+ then throw("DApp is inactive at this moment")
166+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
167+ then throw("Only admin can call this function")
168+ else [StringEntry(h, au)]
200169
201170
202171
203-@Callable(aD)
204-func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
205- then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
207- then throw("One attached payment expected")
208- else if ((height > aK))
209- then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
212- else false)
213- then throw("Freeze params list must have 3 items")
214- else {
215- let aG = az()
216- let bb = toString(aG)
217- let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218- let bd = bc._1
219- let be = bc._2
220- let bf = at(be)
221- let bg = bf._1
222- let bh = bf._2
223- let bi = bf._3
224- let bj = if (aZ)
225- then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
226- else nil
227- ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
228- })
172+@Callable(ar)
173+func init (av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG) = if (!(Z))
174+ then throw("DApp is inactive at this moment")
175+ else if ((toString(ar.caller) != valueOrElse(getString(this, h), "")))
176+ then throw("Only project admin can call init function")
177+ else if ((size(ar.payments) != 1))
178+ then throw("One attached payment expected")
179+ else if ((height > aw))
180+ then throw("Start height must be greater than blockchain height")
181+ else if (if (aF)
182+ then (size(aG) != 3)
183+ else false)
184+ then throw("Freeze params list must have 3 items")
185+ else {
186+ let as = ap()
187+ let aH = toString(as)
188+ let aI = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
189+ let aJ = aI._1
190+ let aK = aI._2
191+ let aL = aj(aK)
192+ let aM = aL._1
193+ let aN = aL._2
194+ let aO = aL._3
195+ let aP = if (aF)
196+ then [BooleanEntry((aH + F), true), StringEntry((aH + G), aG[0]), IntegerEntry((aH + H), parseIntValue(aG[1])), IntegerEntry((aH + I), parseIntValue(aG[2]))]
197+ else nil
198+ ([IntegerEntry((aM + "_launchpad"), as), IntegerEntry(f, (as + 1)), StringEntry((aH + i), av), IntegerEntry((aH + j), height), IntegerEntry((aH + k), aw), IntegerEntry((aH + A), R), IntegerEntry((aH + E), aE), IntegerEntry((aH + o), aJ), StringEntry((aH + n), aM), IntegerEntry((aH + m), ax), IntegerEntry((aH + w), 0), IntegerEntry((aH + q), ay), IntegerEntry((aH + r), az), IntegerEntry((aH + s), aD), IntegerEntry((aH + t), aA), IntegerEntry((aH + u), aB), IntegerEntry((aH + v), aC), IntegerEntry(g, as), StringEntry(h, "")] ++ aP)
199+ }
229200
230201
231202
232-@Callable(aD)
233-func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234- let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235- let bd = bl._1
236- let be = bl._2
237- let bm = aE(value(getString(this, (toString(aG) + J))))
238- let bn = bm._1
239- let bo = bm._2
240- let bp = bm._3
241- let bq = bm._4
242- let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243- let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244- let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245- let bu = (bs - bt)
246- let aK = value(getInteger(this, (toString(aG) + k)))
247- let aL = value(getInteger(this, (toString(aG) + A)))
248- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249- if ((ak != aG))
250- then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
252- then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
254- then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
257- then true
258- else (be != bn)
259- else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
203+@Callable(ar)
204+func commitSwopfiSale (as,aQ) = {
205+ let aR = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
206+ let aJ = aR._1
207+ let aK = aR._2
208+ let aS = valueOrElse(getInteger(T, (toString(ar.caller) + x)), 0)
209+ let aT = (aS / getIntegerValue(this, (toString(as) + s)))
210+ let aU = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + J)), 0)
211+ let aV = (aT - aU)
212+ let aw = value(getInteger(this, (toString(as) + k)))
213+ let aW = value(getInteger(this, (toString(as) + A)))
214+ let aF = valueOrElse(getBoolean(this, (toString(as) + F)), false)
215+ if (!(Z))
216+ then throw("DApp is inactive at this moment")
217+ else if ((aa != as))
218+ then throw("There is no active launchpad or this launchpad is ended")
219+ else if ((aw > height))
220+ then throw("Launchpad sale not started yet")
221+ else if ((height > (aw + aW)))
222+ then throw("Launchpad sale ended")
223+ else if (if (!(aF))
224+ then if ((size(ar.payments) != 1))
263225 then true
264- else (be != bn)
226+ else (aK != W)
265227 else false)
266- then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
269- }
270- else if (if ((0 >= bs))
271- then true
272- else (0 >= bu))
273- then throw("Not enought SWOP in staking to buy tickets")
274- else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
292- else {
293- let bj = if (aZ)
294- then {
295- let bv = getStringValue(this, (toString(aG) + G))
296- let bI = getIntegerValue(this, (toString(aG) + I))
297- let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298- let bK = bJ._1
299- let bL = bJ._2
300- let bM = at(be)
301- let bN = bM._1
302- let bO = bM._2
303- let bP = bM._3
304- let bQ = (bI * bE)
305- if (if ((bN != bv))
306- then true
307- else (bQ != bK))
308- then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309- else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
310- }
311- else nil
312- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313- let bS = getIntegerValue(this, (toString(aG) + w))
314- let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315- let bU = (bR + (if ((bR != ""))
316- then ("," + bT)
317- else ("" + bT)))
318- let bV = if ((bn == ah))
319- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
320- else 0
321- if ((bV == bV))
322- then {
323- let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326- else bW
327- }
328- else throw("Strict value is not equal to itself.")
329- }
228+ then throw("One attached payment in USDN expected")
229+ else if (if (aF)
230+ then if ((size(ar.payments) != 2))
231+ then true
232+ else (aK != W)
233+ else false)
234+ then {
235+ let aX = getStringValue(this, (toString(as) + G))
236+ throw(("Two attached payments expected: First in USDN, second in " + aX))
330237 }
331- })
238+ else if (if ((0 >= aT))
239+ then true
240+ else (0 >= aV))
241+ then throw("Not enought SWOP in staking to buy tickets")
242+ else {
243+ let aY = getIntegerValue(this, (toString(as) + r))
244+ let ay = getIntegerValue(this, (toString(as) + q))
245+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
246+ let ba = aj(aZ)
247+ let bb = ba._1
248+ let bc = ba._2
249+ let bd = ba._3
250+ let be = fraction(ay, aY, pow(10, 0, bd, 0, 0, DOWN))
251+ let bf = fraction(be, getIntegerValue(this, (toString(as) + m)), 100)
252+ let bg = (aJ / (be + bf))
253+ let bh = min([bg, aV])
254+ let bi = (bh * (be + bf))
255+ let bj = (aJ - bi)
256+ if ((bg == 0))
257+ then throw("Not enought USDN to buy tickets")
258+ else if ((bj != 0))
259+ then throw((((("Wrong payment. To buy " + toString(bh)) + "tickets you need to pay ") + toString(bi)) + "USDN"))
260+ else {
261+ let aP = if (aF)
262+ then {
263+ let aX = getStringValue(this, (toString(as) + G))
264+ let bk = getIntegerValue(this, (toString(as) + I))
265+ let bl = $Tuple2(ar.payments[1].amount, ar.payments[1].assetId)
266+ let bm = bl._1
267+ let bn = bl._2
268+ let bo = aj(aK)
269+ let bp = bo._1
270+ let bq = bo._2
271+ let br = bo._3
272+ let bs = (bk * bg)
273+ if (if ((bp != aX))
274+ then true
275+ else (bs != bm))
276+ then throw((((("You need to add " + toString(bs)) + " ") + bq) + " as a second payment"))
277+ else [IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + Q), bm)]
278+ }
279+ else nil
280+ let bt = valueOrElse(getString(this, (((toString(ar.caller) + "_") + toString(as)) + K)), "")
281+ let bu = getIntegerValue(this, (toString(as) + w))
282+ let bv = ((toString((bu + 1)) + "-") + toString((bu + bh)))
283+ let bw = (bt + (if ((bt != ""))
284+ then ("," + bv)
285+ else ("" + bv)))
286+ let bx = invoke(V, "lockNeutrino", nil, [AttachedPayment(aK, aJ)])
287+ if ((bx == bx))
288+ then {
289+ let by = ([IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + J), (aU + bh)), IntegerEntry((toString(as) + w), (bu + bh)), StringEntry((((toString(ar.caller) + "_") + toString(as)) + K), bw)] ++ aP)
290+ if (!(isDefined(getString(this, (((toString(ar.caller) + "_") + toString(as)) + y)))))
291+ then (by ++ [StringEntry((((toString(ar.caller) + "_") + toString(as)) + y), aQ)])
292+ else by
293+ }
294+ else throw("Strict value is not equal to itself.")
295+ }
296+ }
297+ }
332298
333299
334300
335-@Callable(aD)
336-func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337- let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338- let bd = bX._1
339- let be = bX._2
340- let bY = aE(value(getString(this, (toString(aG) + J))))
341- let bn = bY._1
342- let bo = bY._2
343- let bp = bY._3
344- let bq = bY._4
345- let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346- let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348- let aN = getIntegerValue(this, (toString(aG) + m))
349- let bw = getIntegerValue(this, (toString(aG) + r))
350- let aS = getIntegerValue(this, (toString(aG) + v))
351- let cc = aE(getStringValue(this, (toString(aG) + n)))
352- let by = cc._1
353- let bz = cc._2
354- let bA = cc._3
355- let bB = cc._4
356- let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357- let aK = value(getInteger(this, (toString(aG) + k)))
358- let aL = value(getInteger(this, (toString(aG) + A)))
359- if ((ak != aG))
360- then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
362- then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
364- then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
366- then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370- then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
373- else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
375- else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
379- else 0
380- if ((bV == bV))
381- then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
386- }
387- else throw("Strict value is not equal to itself.")
388- }
389- })
301+@Callable(ar)
302+func commitAccessListSale (as,aQ) = {
303+ let bz = $Tuple2(ar.payments[0].amount, ar.payments[0].assetId)
304+ let aJ = bz._1
305+ let aK = bz._2
306+ let bA = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + M)), 0)
307+ let bB = valueOrElse(getInteger(this, (toString(as) + B)), 0)
308+ let bC = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + N)), 0)
309+ let ax = getIntegerValue(this, (toString(as) + m))
310+ let aY = getIntegerValue(this, (toString(as) + r))
311+ let aC = getIntegerValue(this, (toString(as) + v))
312+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
313+ let bD = aj(aZ)
314+ let bb = bD._1
315+ let bc = bD._2
316+ let bd = bD._3
317+ let bE = fraction(fraction(aY, aC, pow(10, 0, bd, 0, 0, DOWN)), (100 + ax), 100)
318+ let aw = value(getInteger(this, (toString(as) + k)))
319+ let aW = value(getInteger(this, (toString(as) + A)))
320+ if (!(Z))
321+ then throw("DApp is inactive at this moment")
322+ else if ((aa != as))
323+ then throw("There is no active launchpad or this launchpad is ended")
324+ else if ((aw > height))
325+ then throw("Launchpad sale not started yet")
326+ else if ((height > (aw + aW)))
327+ then throw("Launchpad sale ended")
328+ else if (if ((size(ar.payments) != 1))
329+ then true
330+ else (aK != W))
331+ then throw("One attached payment in USDN expected")
332+ else if ((bC >= Y))
333+ then throw((("You can buy only " + toString(Y)) + "allocations"))
334+ else if (if ((bE != aJ))
335+ then ((bE * 2) != aJ)
336+ else false)
337+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bE)) + " USDN per allocation"))
338+ else {
339+ let bF = (aJ / bE)
340+ let bx = invoke(V, "lockNeutrino", nil, [AttachedPayment(aK, aJ)])
341+ if ((bx == bx))
342+ then {
343+ let by = [IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + N), (bC + bF)), IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + M), (bA + aJ)), IntegerEntry((toString(as) + B), (bB + aJ))]
344+ if (!(isDefined(getString(this, (((toString(ar.caller) + "_") + toString(as)) + y)))))
345+ then (by ++ [StringEntry((((toString(ar.caller) + "_") + toString(as)) + y), aQ)])
346+ else by
347+ }
348+ else throw("Strict value is not equal to itself.")
349+ }
350+ }
390351
391352
392353
393-@Callable(aD)
394-func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395- let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396- let bd = cf._1
397- let be = cf._2
398- let cg = aE(value(getString(this, (toString(aG) + J))))
399- let bn = cg._1
400- let bo = cg._2
401- let bp = cg._3
402- let bq = cg._4
403- let aK = value(getInteger(this, (toString(aG) + k)))
404- let aL = value(getInteger(this, (toString(aG) + A)))
405- let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406- let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407- if ((ak != aG))
408- then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
410- then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
412- then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
414- then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
416- then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
354+@Callable(ar)
355+func finalise (as,bG,bH) = {
356+ let bI = getStringValue(this, (toString(as) + z))
357+ let bJ = toBase58String(sha256((toBytes(bG) + toBytes(bH))))
358+ if (!(Z))
359+ then throw("DApp is inactive at this moment")
360+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
361+ then throw("Only admin can call this function")
362+ else if ((bJ != bI))
363+ then throw("vrf Height hash not matching")
364+ else {
365+ let av = addressFromStringValue(getStringValue(this, (toString(as) + i)))
366+ let ax = getIntegerValue(this, (toString(as) + m))
367+ let bK = valueOrElse(getInteger(this, (toString(as) + D)), 0)
368+ let bL = getIntegerValue(this, (toString(as) + p))
369+ let bM = fraction(bL, ax, 100)
370+ let bN = getIntegerValue(this, (toString(as) + C))
371+ let bO = fraction(bN, ax, 100)
372+ let bP = (((bL + bN) + bM) + bO)
373+ if ((bK > (bL + bN)))
374+ then throw("Can't transfer negative value to project")
419375 else {
420- let bw = getIntegerValue(this, (toString(aG) + r))
421- let aO = getIntegerValue(this, (toString(aG) + q))
422- let cj = aE(getStringValue(this, (toString(aG) + n)))
423- let by = cj._1
424- let bz = cj._2
425- let bA = cj._3
426- let bB = cj._4
427- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429- let bE = (bd / (bC + bD))
430- let ck = (bE * (bC + bD))
431- let bH = (bd - ck)
432- if ((bE == 0))
433- then throw((("Not enought " + bp) + " to buy tickets"))
434- else if ((bH != 0))
435- then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
436- else {
437- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438- let bS = getIntegerValue(this, (toString(aG) + N))
439- let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440- let bU = (bR + (if ((bR != ""))
441- then ("," + bT)
442- else ("" + bT)))
443- let bV = if ((bn == ah))
444- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
445- else 0
446- if ((bV == bV))
447- then {
448- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451- else bW
452- }
453- else throw("Strict value is not equal to itself.")
454- }
376+ let bx = invoke(V, "unlockNeutrino", [bP, toBase58String(W)], nil)
377+ if ((bx == bx))
378+ then [IntegerEntry((toString(as) + l), height), ScriptTransfer(av, ((bL + bN) - bK), W), ScriptTransfer(U, (bM + bO), W)]
379+ else throw("Strict value is not equal to itself.")
455380 }
456- })
381+ }
382+ }
457383
458384
459385
460-@Callable(aD)
461-func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462- let cn = getStringValue(this, (toString(aG) + z))
463- let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464- if ((co != cn))
465- then throw("vrf Height hash not matching")
466- else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483- if ((cr > (cs + cw)))
484- then throw("Can't transfer negative value to project")
485- else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
488- else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, ((cs + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
491- else throw("Strict value is not equal to itself.")
492- }
493- }
494- }))
386+@Callable(ar)
387+func claim (as) = {
388+ let bQ = valueOrElse(getBoolean(this, (((toString(ar.caller) + "_") + toString(as)) + O)), false)
389+ let bR = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + J)), 0)
390+ let bC = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + N)), 0)
391+ if (!(Z))
392+ then throw("DApp is inactive at this moment")
393+ else if (!(isDefined(getInteger(this, (toString(as) + l)))))
394+ then throw("You can't claim because results are not finalized")
395+ else if (bQ)
396+ then throw("You are already claimed")
397+ else if (if ((bR == 0))
398+ then (bC == 0)
399+ else false)
400+ then throw("You can't claim because you don't buy anything")
401+ else {
402+ let aZ = fromBase58String(getStringValue(this, (toString(as) + n)))
403+ let bS = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + P)), 0)
404+ let bT = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + L)), 0)
405+ let ax = getIntegerValue(this, (toString(as) + m))
406+ let bU = min([bC, bT])
407+ let aY = getIntegerValue(this, (toString(as) + r))
408+ let ay = getIntegerValue(this, (toString(as) + q))
409+ let bV = aj(aZ)
410+ let bb = bV._1
411+ let bc = bV._2
412+ let bd = bV._3
413+ let be = fraction(ay, aY, pow(10, 0, bd, 0, 0, DOWN))
414+ let aC = getIntegerValue(this, (toString(as) + v))
415+ let bW = ((bS * ay) + (bU * aC))
416+ let bX = ((bC - bU) * aC)
417+ let bY = fraction(fraction(bX, aY, pow(10, 0, bd, 0, 0, DOWN)), (100 + ax), 100)
418+ let bZ = fraction(((bR - bS) * be), (100 + ax), 100)
419+ if (if ((0 > bY))
420+ then true
421+ else (0 > bZ))
422+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
423+ else {
424+ let ca = (bY + bZ)
425+ let cb = if ((ca > 0))
426+ then [ScriptTransfer(ar.caller, ca, W)]
427+ else nil
428+ let cc = if ((bW > 0))
429+ then [ScriptTransfer(ar.caller, bW, aZ)]
430+ else nil
431+ let bx = if ((ca > 0))
432+ then invoke(V, "unlockNeutrino", [ca, toBase58String(W)], nil)
433+ else 0
434+ if ((bx == bx))
435+ then (([BooleanEntry((((toString(ar.caller) + "_") + toString(as)) + O), true)] ++ cc) ++ cb)
436+ else throw("Strict value is not equal to itself.")
437+ }
438+ }
439+ }
495440
496441
497442
498-@Callable(aD)
499-func claim (aG) = valueOrElse(aB(), {
500- let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501- let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503- let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504- let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505- if ((cC == 0))
506- then throw("You can't claim because results are not finalized")
507- else if (cB)
508- then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
511- else false)
512- then (cA == 0)
513- else false)
514- then throw("You can't claim because you don't buy anything")
443+@Callable(ar)
444+func claimFreezeToken (as) = {
445+ let aF = valueOrElse(getBoolean(this, (toString(as) + F)), false)
446+ if (!(Z))
447+ then throw("DApp is inactive at this moment")
448+ else if (!(isDefined(getInteger(this, (toString(as) + l)))))
449+ then throw("You can't claim because results are not finalized")
450+ else if (!(aF))
451+ then throw("There are no additional token freezing for this launchpad")
515452 else {
516- let cD = aE(value(getString(this, (toString(aG) + J))))
517- let bn = cD._1
518- let bo = cD._2
519- let bp = cD._3
520- let bq = cD._4
521- let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522- let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523- let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524- let aN = getIntegerValue(this, (toString(aG) + m))
525- let cq = getIntegerValue(this, (toString(aG) + L))
526- let cH = min([cb, cG])
527- let bw = getIntegerValue(this, (toString(aG) + r))
528- let aO = getIntegerValue(this, (toString(aG) + q))
529- let cI = aE(getStringValue(this, (toString(aG) + n)))
530- let by = cI._1
531- let bz = cI._2
532- let bA = cI._3
533- let bB = cI._4
534- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535- let aS = getIntegerValue(this, (toString(aG) + v))
536- let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537- let cK = ((cb - cH) * aS)
538- let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539- let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540- let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541- let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542- if (if (if ((0 > cL))
543- then true
544- else (0 > cM))
545- then true
546- else (0 > cN))
547- then throw("Error with allowed allocation param or wonned tickets param please contact support")
548- else {
549- let cP = (((cM + cN) + cL) - cO)
550- let cQ = if ((cP > 0))
551- then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
552- else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
555- else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
557- else 0
558- if ((bV == bV))
559- then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561- if (if ((size(cR) == 0))
562- then true
563- else (cR[0] == "claimAll"))
564- then {
565- let cS = if ((cJ > 0))
566- then [ScriptTransfer(aD.caller, cJ, by)]
567- else nil
568- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
569- }
570- else if ((cR[0] == "claimPeriod"))
571- then {
572- let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
573- let cU = value(parseInt(cR[2]))
574- let cV = (value(parseInt(cR[3])) + cC)
575- let cW = ((cU + cC) + cV)
576- let cX = (fraction(cJ, value(parseInt(cR[1])), 100) + (if ((height > cV))
577- then fraction(cJ, (height - cV), cU)
578- else (0 - cT)))
579- let cY = if ((cJ >= (cT + cX)))
580- then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
581- else nil
582- if (if ((cX > 0))
583- then true
584- else (cP > 0))
585- then {
586- let cS = if ((cX > 0))
587- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
588- else nil
589- (cQ ++ cS)
590- }
591- else throw("Nothing to claim")
592- }
593- else throw("Unknown claim function")
594- }
595- else throw("Strict value is not equal to itself.")
596- }
453+ let aZ = fromBase58String(getStringValue(this, (toString(as) + G)))
454+ let cd = valueOrElse(getInteger(this, (((toString(ar.caller) + "_") + toString(as)) + Q)), 0)
455+ let aw = valueOrElse(getInteger(this, (toString(as) + k)), 0)
456+ let aW = valueOrElse(getInteger(this, (toString(as) + A)), 0)
457+ let ce = getIntegerValue(this, (toString(as) + H))
458+ let cf = ((aw + aW) + ce)
459+ if ((cd == 0))
460+ then throw("You are already claimed your tokens or not paid anything")
461+ else if ((cf > height))
462+ then throw(("Your tokens freezed teel " + toString(cf)))
463+ else [ScriptTransfer(ar.caller, cd, aZ), IntegerEntry((((toString(ar.caller) + "_") + toString(as)) + Q), 0)]
597464 }
598- })
465+ }
599466
600467
601468
602-@Callable(aD)
603-func claimFreezeToken (aG) = valueOrElse(aB(), {
604- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
605- if (!(isDefined(getInteger(this, (toString(aG) + l)))))
606- then throw("You can't claim because results are not finalized")
607- else if (!(aZ))
608- then throw("There are no additional token freezing for this launchpad")
609- else {
610- let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
611- let cZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
612- let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
613- let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
614- let da = getIntegerValue(this, (toString(aG) + H))
615- let db = ((aK + aL) + da)
616- if ((cZ == 0))
617- then throw("You are already claimed your tokens or not paid anything")
618- else if ((db > height))
619- then throw(("Your tokens freezed teel " + toString(db)))
620- else [ScriptTransfer(aD.caller, cZ, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
621- }
622- })
469+@Callable(ar)
470+func transferUsd (as,cg) = if (!(Z))
471+ then throw("DApp is inactive")
472+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
473+ then throw("Only admin can call this function")
474+ else {
475+ let av = addressFromStringValue(getStringValue(this, (toString(as) + i)))
476+[IntegerEntry((toString(as) + D), cg), ScriptTransfer(av, cg, W)]
477+ }
623478
624479
625480
626-@Callable(aD)
627-func transferBuyAsset (aG,dc) = valueOrElse(aB(), valueOrElse(aC(aD), {
628- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
629- let dd = aE(value(getString(this, (toString(aG) + J))))
630- let bn = dd._1
631- let bo = dd._2
632- let bp = dd._3
633- let bq = dd._4
634-[IntegerEntry((toString(aG) + D), dc), ScriptTransfer(aJ, dc, bn)]
635- }))
481+@Callable(ar)
482+func shutdown () = if (!(Z))
483+ then throw("DApp already inactive")
484+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
485+ then throw("Only admin can call this function")
486+ else [BooleanEntry(a, false)]
636487
637488
638489
639-@Callable(aD)
640-func shutdown () = valueOrElse(aC(aD), if (!(aA))
641- then throw("DApp already inactive")
642- else [BooleanEntry(a, false)])
490+@Callable(ar)
491+func activate () = if (Z)
492+ then throw("DApp already active")
493+ else if (!(containsElement([ag, ah, ai], ar.callerPublicKey)))
494+ then throw("Only admin can call this function")
495+ else [BooleanEntry(a, true)]
643496
644497
645-
646-@Callable(aD)
647-func activate () = valueOrElse(aC(aD), if (aA)
648- then throw("DApp already active")
649- else [BooleanEntry(a, true)])
650-
651-
652-@Verifier(de)
653-func df () = {
654- let dg = {
655- let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
498+@Verifier(ch)
499+func ci () = {
500+ let cj = {
501+ let ck = if (sigVerify(ch.bodyBytes, ch.proofs[0], ag))
656502 then 1
657503 else 0
658- let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
504+ let cl = if (sigVerify(ch.bodyBytes, ch.proofs[1], ah))
659505 then 1
660506 else 0
661- let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
507+ let cm = if (sigVerify(ch.bodyBytes, ch.proofs[2], ai))
662508 then 1
663509 else 0
664- (((dh + di) + dj) >= 2)
510+ (((ck + cl) + cm) >= 2)
665511 }
666- let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
512+ let cn = if (if (if (sigVerify(ch.bodyBytes, ch.proofs[0], ag))
667513 then true
668- else sigVerify(de.bodyBytes, de.proofs[0], ar))
514+ else sigVerify(ch.bodyBytes, ch.proofs[0], ah))
669515 then true
670- else sigVerify(de.bodyBytes, de.proofs[0], as))
516+ else sigVerify(ch.bodyBytes, ch.proofs[0], ai))
671517 then true
672- else sigVerify(de.bodyBytes, de.proofs[0], ai)
673- let an = de
674- if ($isInstanceOf(an, "DataTransaction"))
518+ else sigVerify(ch.bodyBytes, ch.proofs[0], X)
519+ let ad = ch
520+ if ($isInstanceOf(ad, "DataTransaction"))
675521 then {
676- let dl = an
677- if (valueOrElse(getBoolean(ad, e), false))
678- then dk
522+ let co = ad
523+ if (valueOrElse(getBoolean(S, e), false))
524+ then cn
679525 else false
680526 }
681- else dg
527+ else cj
682528 }
683529

github/deemru/w8io/c3f4982 
120.14 ms