tx · WqEpG95zVnBWB2bdvakdjCyBDwjnhAM1tKSKdxetDnb

3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi:  -0.01400000 Waves

2021.10.11 15:25 [1741610] smart account 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi > SELF 0.00000000 Waves

{ "type": 13, "id": "WqEpG95zVnBWB2bdvakdjCyBDwjnhAM1tKSKdxetDnb", "fee": 1400000, "feeAssetId": null, "timestamp": 1633955149374, "version": 2, "chainId": 84, "sender": "3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi", "senderPublicKey": "FRotxVW1MhTQRDvVbMM4yvYGWzBFvHqvMsonvGeEXQUy", "proofs": [ "3GqmZBVf7Pcy9QECGTjDr9GoEAA3k9DS7nUwZmtpyvqh2YNX1LkAvNUsbDrPmpyWC8ynmwcyMdqovcvZBiLNjaT6", "JAwpuxwgSZ3pXawwYHwRGwdJHVNM1Hhj6SeZbfL3u2iYnt86XLntPfeJzvxTCaDjovctkPPVDX1UYuamngrL1sC" ], "script": "base64:AAIFAAAAAAAAADYIAhIECgIBCBIDCgEIEgsKCQgBAQEBAQEBARIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIAEgAAAAAzAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAPa2V5QWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAAPa2V5QWRtaW5QdWJLZXkyAgAAAAthZG1pbl9wdWJfMgAAAAAPa2V5QWRtaW5QdWJLZXkzAgAAAAthZG1pbl9wdWJfMwAAAAAha2V5TGF1bmNocGFkRGF0YVRyYW5zYWN0aW9uU3RhdHVzAgAAACFsYXVuY2hwYWRfZGF0YV90cmFuc2FjdGlvbl9zdGF0dXMAAAAAEmtleUxhdW5jaHBhZE5leHRJZAIAAAARbGF1bmNocGFkX25leHRfaWQAAAAAFGtleUxhdW5jaHBhZEFjdGl2ZUlkAgAAABNsYXVuY2hwYWRfYWN0aXZlX2lkAAAAAA1rZXlJbml0Q2FsbGVyAgAAAAtpbml0X2NhbGxlcgAAAAAKa2V5QWRkcmVzcwIAAAAIX2FkZHJlc3MAAAAADmtleVN0YXJ0SGVpZ2h0AgAAAA1fc3RhcnRfaGVpZ2h0AAAAAAlrZXlTdGF0dXMCAAAAB19zdGF0dXMAAAAADGtleUNvbWlzc2lvbgIAAAAKX2NvbWlzc2lvbgAAAAAKa2V5QXNzZXRJZAIAAAAJX2Fzc2V0X2lkAAAAABNrZXlUb3RhbFRva2VuQW1vdW50AgAAABNfdG90YWxfdG9rZW5fYW1vdW50AAAAABZrZXlUb3RhbEFtb3VudFVzZG5Tb2xkAgAAABBfdG90YWxfdXNkbl9zb2xkAAAAABJrZXlUb2tlbnNQZXJUaWNrZXQCAAAAEl90b2tlbnNfcGVyX3RpY2tldAAAAAAQa2V5UHJpY2VQZXJUb2tlbgIAAAAQX3ByaWNlX3Blcl90b2tlbgAAAAAQa2V5U3dvcFBlclRpY2tldAIAAAAQX3N3b3BfcGVyX3RpY2tldAAAAAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIAAAAXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAAAAAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AgAAABNfdG9rZW5zX2FjY2Vzc19saXN0AAAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAgAAABZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uAAAAABNrZXlUaWNrZXRMYXN0TnVtYmVyAgAAABNfdGlja2V0X2xhc3RfbnVtYmVyAAAAABNrZXlHb3Zlcm5hbmNlU3Rha2VkAgAAAAxfU1dPUF9hbW91bnQAAAAADGtleVVzZXJSZWZJZAIAAAAHX3JlZl9pZAAAAAANa2V5VmVyaWZ5SGFzaAIAAAAMX3ZlcmlmeV9oYXNoAAAAAAtrZXlEdXJhdGlvbgIAAAAJX2R1cmF0aW9uAAAAAAtrZXlGaW5hbGlzZQIAAAAIX2ZpbmFsc2UAAAAAGGtleUFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAiX3RvdGFsX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAha2V5QW1vdW50VVNETkluTWFya2V0aW5nRmluYWxpemVkAgAAACxfdG90YWxfcHVyY2hhc2VkX3VzZG5faW5fbWFya2V0aW5nX2ZpbmFsaXplZAAAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQCAAAAD19ib3VnaHRfdGlja2V0cwAAAAAOa2V5VXNlclRpY2tldHMCAAAAD190aWNrZXRzX251bWJlcgAAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAgAAAB1fYXZhaWxhYmxlX3B1cmNoYXNlX21hcmtldGluZwAAAAAca2V5VXNlckFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAcX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAgAAABNfYm91Z2h0X2FsbG9jYXRpb25zAAAAABJrZXlVc2VyQ2xhaW1TdGF0dXMCAAAADV9jbGFpbV9zdGF0dXMAAAAAGWtleVVzZXJXaW5uZWRUaWtldHNBbW91bnQCAAAAD190aWNrZXRzX3Jlc3VsdAAAAAAQbGF1Y2hwYWREdXJhdGlvbgAAAAAAAAAFoAAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU6UWqHpAvOq7xug7mLpqSXxqYhOHzYrMIAAAAAApnb3Zlcm5hbmNlCQEAAAAHQWRkcmVzcwAAAAEB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bGwgaW5pdCBmdW5jdGlvbgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQJAAACAAAAAQIAAAAzU3RhcnQgaGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGJsb2NrY2hhaW4gaGVpZ2h0BAAAAAskdDA0NTAwNDU3MwkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAACnBtdEFzc2V0SWQEAAAADXBtdFN0ckFzc2V0SWQIBQAAAAskdDA0NTAwNDU3MwAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAALJHQwNDUwMDQ1NzMAAAACXzIEAAAAC3BtdERlY2ltYWxzCAUAAAALJHQwNDUwMDQ1NzMAAAACXzMEAAAAC2xhdW5jaHBhZElkCQEAAAASZ2V0TGF1bmNocGFkTmV4dElkAAAAAAQAAAAObGF1bmNocGFkSWRTdHIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcG10U3RyQXNzZXRJZAIAAAAKX2xhdW5jaHBhZAUAAAALbGF1bmNocGFkSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleUxhdW5jaHBhZE5leHRJZAkAAGQAAAACBQAAAAtsYXVuY2hwYWRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAprZXlBZGRyZXNzBQAAAA5wcm9qZWN0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAAC3N0YXJ0SGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAtrZXlEdXJhdGlvbgUAAAAQbGF1Y2hwYWREdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAATa2V5VG90YWxUb2tlbkFtb3VudAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAACWtleVN0YXR1cwIAAAAGYWN0aXZlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAACmtleUFzc2V0SWQFAAAADXBtdFN0ckFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAADGtleUNvbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAATa2V5VGlja2V0TGFzdE51bWJlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAASa2V5VG9rZW5zUGVyVGlja2V0BQAAAA90b2tlbnNQZXJUaWNrZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAEGtleVByaWNlUGVyVG9rZW4FAAAADXByaWNlUGVyVG9rZW4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAEGtleVN3b3BQZXJUaWNrZXQFAAAADXN3b3BQZXJUaWNrZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAFmtleVN3b3BmaVRpY2tldHNBbW91bnQFAAAAE3N3b3BmaVRpY2tldHNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50BQAAABRjYW1wYWlnblRva2Vuc0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgUAAAATdG9rZW5zUGVyQWxsb2NhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5TGF1bmNocGFkQWN0aXZlSWQFAAAAC2xhdW5jaHBhZElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtleUluaXRDYWxsZXICAAAAAAUAAAADbmlsAAAAAWkBAAAAEGNvbW1pdFN3b3BmaVNhbGUAAAACAAAAC2xhdW5jaHBhZElkAAAABXJlZklkBAAAAAskdDA2MDY0NjEzOQkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAACyR0MDYwNjQ2MTM5AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAALJHQwNjA2NDYxMzkAAAACXzIEAAAAC3N0YWtlZFN3b3BzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAACmdvdmVybmFuY2UJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleUdvdmVybmFuY2VTdGFrZWQAAAAAAAAAAAAEAAAAF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsCQAAaQAAAAIFAAAAC3N0YWtlZFN3b3BzCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEGtleVN3b3BQZXJUaWNrZXQEAAAACmNvbW1pc3Npb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5Q29taXNzaW9uBAAAABBjb21taXNzaW9uSW5VU0ROCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAATYm91Z2h0VGlja2V0c0Ftb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQAAAAAAAAAAAAEAAAAFGFsbG93ZWRUaWNrZXRzQW1vdW50CQAAZQAAAAIFAAAAF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBQAAABNib3VnaHRUaWNrZXRzQW1vdW50AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBAAAAAiE9AAAAAgUAAAARYWN0aXZlTGF1bmNocGFkSWQFAAAAC2xhdW5jaHBhZElkCQAAAgAAAAECAAAAN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQYJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFVTRE4JAAACAAAAAQIAAAAlT25lIGF0dGFjaGVkIHBheW1lbnQgaW4gVVNETiBleHBlY3RlZAMDCQAAZwAAAAIAAAAAAAAAAAAFAAAAF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBgkAAGcAAAACAAAAAAAAAAAABQAAABRhbGxvd2VkVGlja2V0c0Ftb3VudAkAAAIAAAABAgAAACpOb3QgZW5vdWdodCBTV09QIGluIHN0YWtpbmcgdG8gYnV5IHRpY2tldHMEAAAACnRva2VuUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAQa2V5UHJpY2VQZXJUb2tlbgQAAAAPdG9rZW5zUGVyVGlja2V0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEmtleVRva2Vuc1BlclRpY2tldAQAAAALdGlja2V0UHJpY2UJAABoAAAAAgUAAAAPdG9rZW5zUGVyVGlja2V0BQAAAAp0b2tlblByaWNlBAAAAA9idXlUaWNrZXRBbW91bnQJAABpAAAAAgkAAGUAAAACBQAAAAlwbXRBbW91bnQFAAAAEGNvbW1pc3Npb25JblVTRE4FAAAAC3RpY2tldFByaWNlBAAAABZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQABlwAAAAEJAARMAAAAAgUAAAAPYnV5VGlja2V0QW1vdW50CQAETAAAAAIFAAAAFGFsbG93ZWRUaWNrZXRzQW1vdW50BQAAAANuaWwEAAAAD2FsbG93ZWRCdXlQcmljZQkAAGgAAAACBQAAABZhbGxvd2VkQnV5VGlja2V0QW1vdW50BQAAAAt0aWNrZXRQcmljZQQAAAAcYWxsb3dlZEJ1eVByaWNlV2l0aENvbWlzc2lvbgkAAGQAAAACBQAAAA9hbGxvd2VkQnV5UHJpY2UJAABrAAAAAwUAAAAPYWxsb3dlZEJ1eVByaWNlBQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAAAZjaGFuZ2UJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uBAAAABh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADmtleVVzZXJUaWNrZXRzAgAAAAAEAAAAFmxhc3RCb3VnaHRUaWNrZXJOdW1iZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVu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aQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwAAAAAAAAAAAAQAAAAKY29tbWlzc2lvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAAxrZXlDb21pc3Npb24EAAAACnRva2VuUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAQa2V5UHJpY2VQZXJUb2tlbgQAAAATdG9rZW5zUGVyQWxsb2NhdGlvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBAAAAA9hbGxvY2F0aW9uUHJpY2UJAABoAAAAAgUAAAAKdG9rZW5QcmljZQUAAAATdG9rZW5zUGVyQWxsb2NhdGlvbgQAAAAcYWxsb2NhdGlvblByaWNlV2l0aENvbWlzc2lvbgkAAGQAAAACBQAAAA9hbGxvY2F0aW9uUHJpY2UJAABrAAAAAwUAAAAPYWxsb2NhdGlvblByaWNlBQAAAApjb21taXNzaW9uAAAAAAAAAABkAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBAAAAAiE9AAAAAgUAAAARYWN0aXZlTGF1bmNocGFkSWQFAAAAC2xhdW5jaHBhZElkCQAAAgAAAAECAAAAN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQYJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFVTRE4JAAACAAAAAQIAAAAlT25lIGF0dGFjaGVkIHBheW1lbnQgaW4gVVNETiBl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YXRpdmUoMTA2MikAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAACmtleUFkZHJlc3MEAAAACmNvbW1pc3Npb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5Q29taXNzaW9uBAAAABdzd29wZmlNZW1iZXJzVXNkbkFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABZrZXlUb3RhbEFtb3VudFVzZG5Tb2xkBAAAABZzd29wZmlNZW1iZXJzQ29taXNzaW9uCQAAawAAAAMFAAAAF3N3b3BmaU1lbWJlcnNVc2RuQW1vdW50BQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAACFrZXlBbW91bnRVU0ROSW5NYXJrZXRpbmdGaW5hbGl6ZWQEAAAAEm1hcmtldGluZ0NvbWlzc2lvbgkAAGsAAAADBQAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAAtrZXlGaW5hbGlzZQYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAOcHJvamVjdEFkZHJlc3MJAABkAAAAAgUAAAAXc3dvcGZpTWVtYmVyc1VzZG5BbW91bnQFAAAAGnRvdGFsQW1vdW50VXNkbkluTWFya2V0aW5nBQAAAARVU0ROCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEGNvbW1pc3Npb25XYWxsZXQJAABkAAAAAgUA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ZW5QcmljZQQAAAATdG9rZW5zUGVyQWxsb2NhdGlvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBAAAABR0cmFuc2ZlclRva2Vuc0Ftb3VudAkAAGQAAAACCQAAaAAAAAIFAAAADXdvbm5lZFRpY2tldHMFAAAAD3Rva2Vuc1BlclRpY2tldAkAAGgAAAACBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMFAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24EAAAAEnVzZG5Gb3JBbGxvY2F0aW9ucwkAAGsAAAADCQAAZQAAAAIFAAAAEWJvdWdodEFsbG9jYXRpb25zBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMJAABkAAAAAgAAAAAAAAAAZAUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAAWdXNkbkZvclVud29ubmVkVGlja2V0cwkAAGsAAAADCQAAaAAAAAIJAABlAAAAAgUAAAANYm91Z2h0VGlja2V0cwUAAAANd29ubmVkVGlja2V0cwUAAAALdGlja2V0UHJpY2UJAABkAAAAAgAAAAAAAAAAZAUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAAScmV0dXJuZWRVc2RuQW1vdW50CQAAZAAAAAIFAAAAEnVzZG5Gb3JBbGxvY2F0aW9ucwUAAAAWdXNkbkZvclVud29ubmVkVGlja2V0cwQAAAAMdHJhbnNmZXJVc2RuAwkAAGYAAAACBQAAABJyZXR1cm5lZFVzZG5BbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABJyZXR1cm5lZFVzZG5BbW91bnQFAAAABFVTRE4FAAAAA25pbAUAAAADbmlsBAAAAA50cmFuc2ZlclRva2VucwMJAABmAAAAAgUAAAAUdHJhbnNmZXJUb2tlbnNBbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABR0cmFuc2ZlclRva2Vuc0Ftb3Vu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", "height": 1741610, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CipgHkpbsSq5wCqceEFy8WwDLsUBKtJs5SGN7BYGCh5Q Next: DcRRXPC9An5oauLZNbBTY73FSnUZ4jvrGHERrfYqzg2k Diff:
OldNewDifferences
152152
153153 @Callable(ai)
154154 func init (am,an,ao,ap,aq,ar,as,at,au) = {
155- let av = ai.payments[0].amount
156- let aw = ai.payments[0].assetId
155+ let av = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
156+ let aw = av._1
157+ let ax = av._2
157158 if (!(R))
158159 then throw("DApp is inactive at this moment")
159160 else if ((valueOrElse(getStringValue(h), "") == toString(ai.caller)))
163164 else if ((height > an))
164165 then throw("Start height must be greater than blockchain height")
165166 else {
166- let ax = ab(aw)
167- let ay = ax._1
168- let az = ax._2
169- let aA = ax._3
167+ let ay = ab(ax)
168+ let az = ay._1
169+ let aA = ay._2
170+ let aB = ay._3
170171 let aj = ah()
171- let aB = toString(aj)
172-[IntegerEntry((ay + "_launchpad"), aj), IntegerEntry(f, (aj + 1)), StringEntry((aB + i), am), IntegerEntry((aB + j), an), IntegerEntry((aB + z), K), IntegerEntry((aB + n), av), StringEntry((aB + k), "active"), StringEntry((aB + m), ay), IntegerEntry((aB + l), ao), IntegerEntry((aB + v), 0), IntegerEntry((aB + p), ap), IntegerEntry((aB + q), aq), IntegerEntry((aB + r), au), IntegerEntry((aB + s), ar), IntegerEntry((aB + t), as), IntegerEntry((aB + u), at), IntegerEntry(g, aj), StringEntry(h, "")]
172+ let aC = toString(aj)
173+[IntegerEntry((az + "_launchpad"), aj), IntegerEntry(f, (aj + 1)), StringEntry((aC + i), am), IntegerEntry((aC + j), an), IntegerEntry((aC + z), K), IntegerEntry((aC + n), aw), StringEntry((aC + k), "active"), StringEntry((aC + m), az), IntegerEntry((aC + l), ao), IntegerEntry((aC + v), 0), IntegerEntry((aC + p), ap), IntegerEntry((aC + q), aq), IntegerEntry((aC + r), au), IntegerEntry((aC + s), ar), IntegerEntry((aC + t), as), IntegerEntry((aC + u), at), IntegerEntry(g, aj), StringEntry(h, "")]
173174 }
174175 }
175176
176177
177178
178179 @Callable(ai)
179-func commitSwopfiSale (aj,aC) = {
180- let aD = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
181- let av = aD._1
182- let aw = aD._2
183- let aE = valueOrElse(getInteger(M, (toString(ai.caller) + w)), 0)
184- let aF = (aE / getIntegerValue(this, (toString(aj) + r)))
180+func commitSwopfiSale (aj,aD) = {
181+ let aE = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
182+ let aw = aE._1
183+ let ax = aE._2
184+ let aF = valueOrElse(getInteger(M, (toString(ai.caller) + w)), 0)
185+ let aG = (aF / getIntegerValue(this, (toString(aj) + r)))
185186 let ao = getIntegerValue(this, (toString(aj) + l))
186- let aG = fraction(av, ao, 100)
187- let aH = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
188- let aI = (aF - aH)
187+ let aH = fraction(aw, ao, 100)
188+ let aI = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
189+ let aJ = (aG - aI)
189190 if (!(R))
190191 then throw("DApp is inactive at this moment")
191192 else if ((S != aj))
192193 then throw("There is no active launchpad or this launchpad is ended")
193194 else if (if ((size(ai.payments) != 1))
194195 then true
195- else (aw != O))
196+ else (ax != O))
196197 then throw("One attached payment in USDN expected")
197- else if (if ((0 >= aF))
198+ else if (if ((0 >= aG))
198199 then true
199- else (0 >= aI))
200+ else (0 >= aJ))
200201 then throw("Not enought SWOP in staking to buy tickets")
201202 else {
202- let aJ = getIntegerValue(this, (toString(aj) + q))
203+ let aK = getIntegerValue(this, (toString(aj) + q))
203204 let ap = getIntegerValue(this, (toString(aj) + p))
204- let aK = (ap * aJ)
205- let aL = ((av - aG) / aK)
206- let aM = min([aL, aI])
207- let aN = (aM * aK)
208- let aO = (aN + fraction(aN, ao, 100))
209- let aP = (av - aO)
210- let aQ = valueOrElse(getString(this, (((toString(ai.caller) + "_") + toString(aj)) + E)), "")
211- let aR = getIntegerValue(this, (toString(aj) + v))
212- let aS = ((toString((aR + 1)) + "-") + toString((aR + aM)))
213- let aT = (aQ + (if ((aQ != ""))
205+ let aL = (ap * aK)
206+ let aM = ((aw - aH) / aL)
207+ let aN = min([aM, aJ])
208+ let aO = (aN * aL)
209+ let aP = (aO + fraction(aO, ao, 100))
210+ let aQ = (aw - aP)
211+ let aR = valueOrElse(getString(this, (((toString(ai.caller) + "_") + toString(aj)) + E)), "")
212+ let aS = getIntegerValue(this, (toString(aj) + v))
213+ let aT = ((toString((aS + 1)) + "-") + toString((aS + aN)))
214+ let aU = (aR + (if ((aR != ""))
214215 then ","
215- else ("" + aS)))
216- let aU = [StringEntry(((toString(ai.caller) + toString(aj)) + x), aC), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + D), (aH + aM)), IntegerEntry((toString(aj) + v), (aR + aM)), StringEntry((((toString(ai.caller) + "_") + toString(aj)) + E), aT)]
217- if ((aP > 0))
218- then (aU ++ [ScriptTransfer(ai.caller, aP, aw)])
219- else aU
216+ else ("" + aT)))
217+ let aV = [StringEntry(((toString(ai.caller) + toString(aj)) + x), aD), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + D), (aI + aN)), IntegerEntry((toString(aj) + v), (aS + aN)), StringEntry((((toString(ai.caller) + "_") + toString(aj)) + E), aU)]
218+ if ((aQ > 0))
219+ then (aV ++ [ScriptTransfer(ai.caller, aQ, ax)])
220+ else aV
220221 }
221222 }
222223
223224
224225
225226 @Callable(ai)
226-func commitAccessListSale (aj,aC) = {
227- let aV = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
228- let av = aV._1
229- let aw = aV._2
230- let aW = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + G)), 0)
231- let aX = valueOrElse(getInteger(this, (toString(aj) + B)), 0)
232- let aY = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
227+func commitAccessListSale (aj,aD) = {
228+ let aW = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
229+ let aw = aW._1
230+ let ax = aW._2
231+ let aX = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + G)), 0)
232+ let aY = valueOrElse(getInteger(this, (toString(aj) + B)), 0)
233+ let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
233234 let ao = getIntegerValue(this, (toString(aj) + l))
234- let aJ = getIntegerValue(this, (toString(aj) + q))
235+ let aK = getIntegerValue(this, (toString(aj) + q))
235236 let at = getIntegerValue(this, (toString(aj) + u))
236- let aZ = (aJ * at)
237- let ba = (aZ + fraction(aZ, ao, 100))
237+ let ba = (aK * at)
238+ let bb = (ba + fraction(ba, ao, 100))
238239 if (!(R))
239240 then throw("DApp is inactive at this moment")
240241 else if ((S != aj))
241242 then throw("There is no active launchpad or this launchpad is ended")
242243 else if (if ((size(ai.payments) != 1))
243244 then true
244- else (aw != O))
245+ else (ax != O))
245246 then throw("One attached payment in USDN expected")
246- else if ((aY >= Q))
247+ else if ((aZ >= Q))
247248 then throw((("You can buy only " + toString(Q)) + "allocations"))
248- else if (if ((ba != av))
249- then ((ba * 2) != av)
249+ else if (if ((bb != aw))
250+ then ((bb * 2) != aw)
250251 else false)
251- then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString((ba / 1000000))) + " USDN per allocation"))
252+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString((bb / 1000000))) + " USDN per allocation"))
252253 else {
253- let bb = (av / ba)
254-[StringEntry(((toString(ai.caller) + toString(aj)) + x), aC), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + H), (aY + bb)), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + G), (aW + av)), IntegerEntry((toString(aj) + B), (aX + av))]
254+ let bc = (aw / bb)
255+[StringEntry(((toString(ai.caller) + toString(aj)) + x), aD), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + H), (aZ + bc)), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + G), (aX + aw)), IntegerEntry((toString(aj) + B), (aY + aw))]
255256 }
256257 }
257258
258259
259260
260261 @Callable(ai)
261-func finalise (aj,bc,bd) = {
262- let be = getStringValue(this, (toString(aj) + y))
263- let bf = toBase58String(sha256((toBytes(bc) + toBytes(bd))))
262+func finalise (aj,bd,be) = {
263+ let bf = getStringValue(this, (toString(aj) + y))
264+ let bg = toBase58String(sha256((toBytes(bd) + toBytes(be))))
264265 if (!(R))
265266 then throw("DApp is inactive at this moment")
266267 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
267268 then throw("Only admin can call this function")
268- else if ((bf != be))
269+ else if ((bg != bf))
269270 then throw("vrf Height hash not matching")
270271 else {
271272 let am = addressFromStringValue(getStringValue(this, (toString(aj) + i)))
272273 let ao = getIntegerValue(this, (toString(aj) + l))
273- let bg = getIntegerValue(this, (toString(aj) + o))
274- let bh = fraction(bg, ao, 100)
275- let bi = getIntegerValue(this, (toString(aj) + C))
276- let bj = fraction(bi, ao, 100)
277-[BooleanEntry((toString(aj) + A), true), ScriptTransfer(am, (bg + bi), O), ScriptTransfer(N, (bh + bj), O)]
274+ let bh = getIntegerValue(this, (toString(aj) + o))
275+ let bi = fraction(bh, ao, 100)
276+ let bj = getIntegerValue(this, (toString(aj) + C))
277+ let bk = fraction(bj, ao, 100)
278+[BooleanEntry((toString(aj) + A), true), ScriptTransfer(am, (bh + bj), O), ScriptTransfer(N, (bi + bk), O)]
278279 }
279280 }
280281
282283
283284 @Callable(ai)
284285 func claim (aj) = {
285- let bk = getBooleanValue(this, (((toString(ai.caller) + "_") + toString(aj)) + I))
286- let bl = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
287- let aY = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
286+ let bl = getBooleanValue(this, (((toString(ai.caller) + "_") + toString(aj)) + I))
287+ let bm = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
288+ let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
288289 if (!(R))
289290 then throw("DApp is inactive at this moment")
290- else if (bk)
291+ else if (bl)
291292 then throw("You are already claimed")
292- else if (if ((bl == 0))
293- then (aY == 0)
293+ else if (if ((bm == 0))
294+ then (aZ == 0)
294295 else false)
295296 then throw("You can't claim because you don't buy enething")
296297 else {
297- let bm = fromBase58String(getStringValue(this, (toString(aj) + m)))
298- let bn = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + J)), 0)
299- let bo = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + F)), 0)
298+ let bn = fromBase58String(getStringValue(this, (toString(aj) + m)))
299+ let bo = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + J)), 0)
300+ let bp = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + F)), 0)
300301 let ao = getIntegerValue(this, (toString(aj) + l))
301- let bp = min([aY, bo])
302- let aJ = getIntegerValue(this, (toString(aj) + q))
302+ let bq = min([aZ, bp])
303+ let aK = getIntegerValue(this, (toString(aj) + q))
303304 let ap = getIntegerValue(this, (toString(aj) + p))
304- let aK = (ap * aJ)
305+ let aL = (ap * aK)
305306 let at = getIntegerValue(this, (toString(aj) + u))
306- let bq = ((bn * ap) + (bp * at))
307- let br = fraction((aY - bp), (100 + ao), 100)
308- let bs = fraction(((bl - bn) * aK), (100 + ao), 100)
309- let bt = (br + bs)
310- let bu = if ((bt > 0))
311- then [ScriptTransfer(ai.caller, bt, O)]
307+ let br = ((bo * ap) + (bq * at))
308+ let bs = fraction((aZ - bq), (100 + ao), 100)
309+ let bt = fraction(((bm - bo) * aL), (100 + ao), 100)
310+ let bu = (bs + bt)
311+ let bv = if ((bu > 0))
312+ then [ScriptTransfer(ai.caller, bu, O)]
312313 else nil
313- let bv = if ((bq > 0))
314- then [ScriptTransfer(ai.caller, bq, bm)]
314+ let bw = if ((br > 0))
315+ then [ScriptTransfer(ai.caller, br, bn)]
315316 else nil
316- (([BooleanEntry((((toString(ai.caller) + "_") + toString(aj)) + I), true)] ++ bv) ++ bu)
317+ (([BooleanEntry((((toString(ai.caller) + "_") + toString(aj)) + I), true)] ++ bw) ++ bv)
317318 }
318319 }
319320
336337 else [BooleanEntry(a, true)]
337338
338339
339-@Verifier(bw)
340-func bx () = {
341- let by = {
342- let bz = if (sigVerify(bw.bodyBytes, bw.proofs[0], Y))
340+@Verifier(bx)
341+func by () = {
342+ let bz = {
343+ let bA = if (sigVerify(bx.bodyBytes, bx.proofs[0], Y))
343344 then 1
344345 else 0
345- let bA = if (sigVerify(bw.bodyBytes, bw.proofs[1], Z))
346+ let bB = if (sigVerify(bx.bodyBytes, bx.proofs[1], Z))
346347 then 1
347348 else 0
348- let bB = if (sigVerify(bw.bodyBytes, bw.proofs[2], aa))
349+ let bC = if (sigVerify(bx.bodyBytes, bx.proofs[2], aa))
349350 then 1
350351 else 0
351- (((bz + bA) + bB) >= 2)
352+ (((bA + bB) + bC) >= 2)
352353 }
353- let bC = if (if (if (sigVerify(bw.bodyBytes, bw.proofs[0], Y))
354+ let bD = if (if (if (sigVerify(bx.bodyBytes, bx.proofs[0], Y))
354355 then true
355- else sigVerify(bw.bodyBytes, bw.proofs[0], Z))
356+ else sigVerify(bx.bodyBytes, bx.proofs[0], Z))
356357 then true
357- else sigVerify(bw.bodyBytes, bw.proofs[0], aa))
358+ else sigVerify(bx.bodyBytes, bx.proofs[0], aa))
358359 then true
359- else sigVerify(bw.bodyBytes, bw.proofs[0], P)
360- let V = bw
360+ else sigVerify(bx.bodyBytes, bx.proofs[0], P)
361+ let V = bx
361362 if ($isInstanceOf(V, "DataTransaction"))
362363 then {
363- let bD = V
364+ let bE = V
364365 if (valueOrElse(getBoolean(L, e), false))
365- then bC
366+ then bD
366367 else false
367368 }
368- else by
369+ else bz
369370 }
370371
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 = "_start_height"
2323
2424 let k = "_status"
2525
2626 let l = "_comission"
2727
2828 let m = "_asset_id"
2929
3030 let n = "_total_token_amount"
3131
3232 let o = "_total_usdn_sold"
3333
3434 let p = "_tokens_per_ticket"
3535
3636 let q = "_price_per_token"
3737
3838 let r = "_swop_per_ticket"
3939
4040 let s = "_tickets_swopfi_members"
4141
4242 let t = "_tokens_access_list"
4343
4444 let u = "_tokens_per_allocation"
4545
4646 let v = "_ticket_last_number"
4747
4848 let w = "_SWOP_amount"
4949
5050 let x = "_ref_id"
5151
5252 let y = "_verify_hash"
5353
5454 let z = "_duration"
5555
5656 let A = "_finalse"
5757
5858 let B = "_total_purchased_usdn_in_marketing"
5959
6060 let C = "_total_purchased_usdn_in_marketing_finalized"
6161
6262 let D = "_bought_tickets"
6363
6464 let E = "_tickets_number"
6565
6666 let F = "_available_purchase_marketing"
6767
6868 let G = "_purchased_usdn_in_marketing"
6969
7070 let H = "_bought_allocations"
7171
7272 let I = "_claim_status"
7373
7474 let J = "_tickets_result"
7575
7676 let K = 1440
7777
7878 let L = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
7979
8080 let M = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
8181
8282 let N = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
8383
8484 let O = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
8585
8686 let P = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8787
8888 let Q = 2
8989
9090 let R = valueOrElse(getBoolean(this, a), true)
9191
9292 let S = valueOrElse(getIntegerValue(this, g), -1)
9393
9494 func T (U) = {
9595 let V = getString(L, U)
9696 if ($isInstanceOf(V, "String"))
9797 then {
9898 let W = V
9999 fromBase58String(W)
100100 }
101101 else {
102102 let X = V
103103 throw("Admin public key is empty")
104104 }
105105 }
106106
107107
108108 let Y = T(b)
109109
110110 let Z = T(c)
111111
112112 let aa = T(d)
113113
114114 func ab (ac) = {
115115 let V = ac
116116 if ($isInstanceOf(V, "ByteVector"))
117117 then {
118118 let ad = V
119119 let ae = toBase58String(ad)
120120 let af = valueOrErrorMessage(assetInfo(ad), (("Asset " + ae) + " doesn't exist"))
121121 $Tuple3(ae, af.name, af.decimals)
122122 }
123123 else if ($isInstanceOf(V, "Unit"))
124124 then {
125125 let ag = V
126126 $Tuple3("WAVES", "WAVES", 8)
127127 }
128128 else throw("Match error")
129129 }
130130
131131
132132 func ah () = valueOrElse(getInteger(this, f), 1)
133133
134134
135135 @Callable(ai)
136136 func hashingRandom (aj,ak) = if (!(R))
137137 then throw("DApp is inactive at this moment")
138138 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
139139 then throw("Only admin can call this function")
140140 else [StringEntry((toString(aj) + y), ak)]
141141
142142
143143
144144 @Callable(ai)
145145 func initCaller (al) = if (!(R))
146146 then throw("DApp is inactive at this moment")
147147 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
148148 then throw("Only admin can call this function")
149149 else [StringEntry(h, al)]
150150
151151
152152
153153 @Callable(ai)
154154 func init (am,an,ao,ap,aq,ar,as,at,au) = {
155- let av = ai.payments[0].amount
156- let aw = ai.payments[0].assetId
155+ let av = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
156+ let aw = av._1
157+ let ax = av._2
157158 if (!(R))
158159 then throw("DApp is inactive at this moment")
159160 else if ((valueOrElse(getStringValue(h), "") == toString(ai.caller)))
160161 then throw("Only project admin can call init function")
161162 else if ((size(ai.payments) != 1))
162163 then throw("One attached payment expected")
163164 else if ((height > an))
164165 then throw("Start height must be greater than blockchain height")
165166 else {
166- let ax = ab(aw)
167- let ay = ax._1
168- let az = ax._2
169- let aA = ax._3
167+ let ay = ab(ax)
168+ let az = ay._1
169+ let aA = ay._2
170+ let aB = ay._3
170171 let aj = ah()
171- let aB = toString(aj)
172-[IntegerEntry((ay + "_launchpad"), aj), IntegerEntry(f, (aj + 1)), StringEntry((aB + i), am), IntegerEntry((aB + j), an), IntegerEntry((aB + z), K), IntegerEntry((aB + n), av), StringEntry((aB + k), "active"), StringEntry((aB + m), ay), IntegerEntry((aB + l), ao), IntegerEntry((aB + v), 0), IntegerEntry((aB + p), ap), IntegerEntry((aB + q), aq), IntegerEntry((aB + r), au), IntegerEntry((aB + s), ar), IntegerEntry((aB + t), as), IntegerEntry((aB + u), at), IntegerEntry(g, aj), StringEntry(h, "")]
172+ let aC = toString(aj)
173+[IntegerEntry((az + "_launchpad"), aj), IntegerEntry(f, (aj + 1)), StringEntry((aC + i), am), IntegerEntry((aC + j), an), IntegerEntry((aC + z), K), IntegerEntry((aC + n), aw), StringEntry((aC + k), "active"), StringEntry((aC + m), az), IntegerEntry((aC + l), ao), IntegerEntry((aC + v), 0), IntegerEntry((aC + p), ap), IntegerEntry((aC + q), aq), IntegerEntry((aC + r), au), IntegerEntry((aC + s), ar), IntegerEntry((aC + t), as), IntegerEntry((aC + u), at), IntegerEntry(g, aj), StringEntry(h, "")]
173174 }
174175 }
175176
176177
177178
178179 @Callable(ai)
179-func commitSwopfiSale (aj,aC) = {
180- let aD = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
181- let av = aD._1
182- let aw = aD._2
183- let aE = valueOrElse(getInteger(M, (toString(ai.caller) + w)), 0)
184- let aF = (aE / getIntegerValue(this, (toString(aj) + r)))
180+func commitSwopfiSale (aj,aD) = {
181+ let aE = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
182+ let aw = aE._1
183+ let ax = aE._2
184+ let aF = valueOrElse(getInteger(M, (toString(ai.caller) + w)), 0)
185+ let aG = (aF / getIntegerValue(this, (toString(aj) + r)))
185186 let ao = getIntegerValue(this, (toString(aj) + l))
186- let aG = fraction(av, ao, 100)
187- let aH = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
188- let aI = (aF - aH)
187+ let aH = fraction(aw, ao, 100)
188+ let aI = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
189+ let aJ = (aG - aI)
189190 if (!(R))
190191 then throw("DApp is inactive at this moment")
191192 else if ((S != aj))
192193 then throw("There is no active launchpad or this launchpad is ended")
193194 else if (if ((size(ai.payments) != 1))
194195 then true
195- else (aw != O))
196+ else (ax != O))
196197 then throw("One attached payment in USDN expected")
197- else if (if ((0 >= aF))
198+ else if (if ((0 >= aG))
198199 then true
199- else (0 >= aI))
200+ else (0 >= aJ))
200201 then throw("Not enought SWOP in staking to buy tickets")
201202 else {
202- let aJ = getIntegerValue(this, (toString(aj) + q))
203+ let aK = getIntegerValue(this, (toString(aj) + q))
203204 let ap = getIntegerValue(this, (toString(aj) + p))
204- let aK = (ap * aJ)
205- let aL = ((av - aG) / aK)
206- let aM = min([aL, aI])
207- let aN = (aM * aK)
208- let aO = (aN + fraction(aN, ao, 100))
209- let aP = (av - aO)
210- let aQ = valueOrElse(getString(this, (((toString(ai.caller) + "_") + toString(aj)) + E)), "")
211- let aR = getIntegerValue(this, (toString(aj) + v))
212- let aS = ((toString((aR + 1)) + "-") + toString((aR + aM)))
213- let aT = (aQ + (if ((aQ != ""))
205+ let aL = (ap * aK)
206+ let aM = ((aw - aH) / aL)
207+ let aN = min([aM, aJ])
208+ let aO = (aN * aL)
209+ let aP = (aO + fraction(aO, ao, 100))
210+ let aQ = (aw - aP)
211+ let aR = valueOrElse(getString(this, (((toString(ai.caller) + "_") + toString(aj)) + E)), "")
212+ let aS = getIntegerValue(this, (toString(aj) + v))
213+ let aT = ((toString((aS + 1)) + "-") + toString((aS + aN)))
214+ let aU = (aR + (if ((aR != ""))
214215 then ","
215- else ("" + aS)))
216- let aU = [StringEntry(((toString(ai.caller) + toString(aj)) + x), aC), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + D), (aH + aM)), IntegerEntry((toString(aj) + v), (aR + aM)), StringEntry((((toString(ai.caller) + "_") + toString(aj)) + E), aT)]
217- if ((aP > 0))
218- then (aU ++ [ScriptTransfer(ai.caller, aP, aw)])
219- else aU
216+ else ("" + aT)))
217+ let aV = [StringEntry(((toString(ai.caller) + toString(aj)) + x), aD), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + D), (aI + aN)), IntegerEntry((toString(aj) + v), (aS + aN)), StringEntry((((toString(ai.caller) + "_") + toString(aj)) + E), aU)]
218+ if ((aQ > 0))
219+ then (aV ++ [ScriptTransfer(ai.caller, aQ, ax)])
220+ else aV
220221 }
221222 }
222223
223224
224225
225226 @Callable(ai)
226-func commitAccessListSale (aj,aC) = {
227- let aV = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
228- let av = aV._1
229- let aw = aV._2
230- let aW = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + G)), 0)
231- let aX = valueOrElse(getInteger(this, (toString(aj) + B)), 0)
232- let aY = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
227+func commitAccessListSale (aj,aD) = {
228+ let aW = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId)
229+ let aw = aW._1
230+ let ax = aW._2
231+ let aX = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + G)), 0)
232+ let aY = valueOrElse(getInteger(this, (toString(aj) + B)), 0)
233+ let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
233234 let ao = getIntegerValue(this, (toString(aj) + l))
234- let aJ = getIntegerValue(this, (toString(aj) + q))
235+ let aK = getIntegerValue(this, (toString(aj) + q))
235236 let at = getIntegerValue(this, (toString(aj) + u))
236- let aZ = (aJ * at)
237- let ba = (aZ + fraction(aZ, ao, 100))
237+ let ba = (aK * at)
238+ let bb = (ba + fraction(ba, ao, 100))
238239 if (!(R))
239240 then throw("DApp is inactive at this moment")
240241 else if ((S != aj))
241242 then throw("There is no active launchpad or this launchpad is ended")
242243 else if (if ((size(ai.payments) != 1))
243244 then true
244- else (aw != O))
245+ else (ax != O))
245246 then throw("One attached payment in USDN expected")
246- else if ((aY >= Q))
247+ else if ((aZ >= Q))
247248 then throw((("You can buy only " + toString(Q)) + "allocations"))
248- else if (if ((ba != av))
249- then ((ba * 2) != av)
249+ else if (if ((bb != aw))
250+ then ((bb * 2) != aw)
250251 else false)
251- then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString((ba / 1000000))) + " USDN per allocation"))
252+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString((bb / 1000000))) + " USDN per allocation"))
252253 else {
253- let bb = (av / ba)
254-[StringEntry(((toString(ai.caller) + toString(aj)) + x), aC), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + H), (aY + bb)), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + G), (aW + av)), IntegerEntry((toString(aj) + B), (aX + av))]
254+ let bc = (aw / bb)
255+[StringEntry(((toString(ai.caller) + toString(aj)) + x), aD), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + H), (aZ + bc)), IntegerEntry((((toString(ai.caller) + "_") + toString(aj)) + G), (aX + aw)), IntegerEntry((toString(aj) + B), (aY + aw))]
255256 }
256257 }
257258
258259
259260
260261 @Callable(ai)
261-func finalise (aj,bc,bd) = {
262- let be = getStringValue(this, (toString(aj) + y))
263- let bf = toBase58String(sha256((toBytes(bc) + toBytes(bd))))
262+func finalise (aj,bd,be) = {
263+ let bf = getStringValue(this, (toString(aj) + y))
264+ let bg = toBase58String(sha256((toBytes(bd) + toBytes(be))))
264265 if (!(R))
265266 then throw("DApp is inactive at this moment")
266267 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
267268 then throw("Only admin can call this function")
268- else if ((bf != be))
269+ else if ((bg != bf))
269270 then throw("vrf Height hash not matching")
270271 else {
271272 let am = addressFromStringValue(getStringValue(this, (toString(aj) + i)))
272273 let ao = getIntegerValue(this, (toString(aj) + l))
273- let bg = getIntegerValue(this, (toString(aj) + o))
274- let bh = fraction(bg, ao, 100)
275- let bi = getIntegerValue(this, (toString(aj) + C))
276- let bj = fraction(bi, ao, 100)
277-[BooleanEntry((toString(aj) + A), true), ScriptTransfer(am, (bg + bi), O), ScriptTransfer(N, (bh + bj), O)]
274+ let bh = getIntegerValue(this, (toString(aj) + o))
275+ let bi = fraction(bh, ao, 100)
276+ let bj = getIntegerValue(this, (toString(aj) + C))
277+ let bk = fraction(bj, ao, 100)
278+[BooleanEntry((toString(aj) + A), true), ScriptTransfer(am, (bh + bj), O), ScriptTransfer(N, (bi + bk), O)]
278279 }
279280 }
280281
281282
282283
283284 @Callable(ai)
284285 func claim (aj) = {
285- let bk = getBooleanValue(this, (((toString(ai.caller) + "_") + toString(aj)) + I))
286- let bl = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
287- let aY = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
286+ let bl = getBooleanValue(this, (((toString(ai.caller) + "_") + toString(aj)) + I))
287+ let bm = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0)
288+ let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0)
288289 if (!(R))
289290 then throw("DApp is inactive at this moment")
290- else if (bk)
291+ else if (bl)
291292 then throw("You are already claimed")
292- else if (if ((bl == 0))
293- then (aY == 0)
293+ else if (if ((bm == 0))
294+ then (aZ == 0)
294295 else false)
295296 then throw("You can't claim because you don't buy enething")
296297 else {
297- let bm = fromBase58String(getStringValue(this, (toString(aj) + m)))
298- let bn = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + J)), 0)
299- let bo = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + F)), 0)
298+ let bn = fromBase58String(getStringValue(this, (toString(aj) + m)))
299+ let bo = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + J)), 0)
300+ let bp = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + F)), 0)
300301 let ao = getIntegerValue(this, (toString(aj) + l))
301- let bp = min([aY, bo])
302- let aJ = getIntegerValue(this, (toString(aj) + q))
302+ let bq = min([aZ, bp])
303+ let aK = getIntegerValue(this, (toString(aj) + q))
303304 let ap = getIntegerValue(this, (toString(aj) + p))
304- let aK = (ap * aJ)
305+ let aL = (ap * aK)
305306 let at = getIntegerValue(this, (toString(aj) + u))
306- let bq = ((bn * ap) + (bp * at))
307- let br = fraction((aY - bp), (100 + ao), 100)
308- let bs = fraction(((bl - bn) * aK), (100 + ao), 100)
309- let bt = (br + bs)
310- let bu = if ((bt > 0))
311- then [ScriptTransfer(ai.caller, bt, O)]
307+ let br = ((bo * ap) + (bq * at))
308+ let bs = fraction((aZ - bq), (100 + ao), 100)
309+ let bt = fraction(((bm - bo) * aL), (100 + ao), 100)
310+ let bu = (bs + bt)
311+ let bv = if ((bu > 0))
312+ then [ScriptTransfer(ai.caller, bu, O)]
312313 else nil
313- let bv = if ((bq > 0))
314- then [ScriptTransfer(ai.caller, bq, bm)]
314+ let bw = if ((br > 0))
315+ then [ScriptTransfer(ai.caller, br, bn)]
315316 else nil
316- (([BooleanEntry((((toString(ai.caller) + "_") + toString(aj)) + I), true)] ++ bv) ++ bu)
317+ (([BooleanEntry((((toString(ai.caller) + "_") + toString(aj)) + I), true)] ++ bw) ++ bv)
317318 }
318319 }
319320
320321
321322
322323 @Callable(ai)
323324 func shutdown () = if (!(R))
324325 then throw("DApp alredy inactive")
325326 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
326327 then throw("Only admin can call this function")
327328 else [BooleanEntry(a, false)]
328329
329330
330331
331332 @Callable(ai)
332333 func activate () = if (R)
333334 then throw("DApp alredy active")
334335 else if (!(containsElement([Y, Z, aa], ai.callerPublicKey)))
335336 then throw("Only admin can call this function")
336337 else [BooleanEntry(a, true)]
337338
338339
339-@Verifier(bw)
340-func bx () = {
341- let by = {
342- let bz = if (sigVerify(bw.bodyBytes, bw.proofs[0], Y))
340+@Verifier(bx)
341+func by () = {
342+ let bz = {
343+ let bA = if (sigVerify(bx.bodyBytes, bx.proofs[0], Y))
343344 then 1
344345 else 0
345- let bA = if (sigVerify(bw.bodyBytes, bw.proofs[1], Z))
346+ let bB = if (sigVerify(bx.bodyBytes, bx.proofs[1], Z))
346347 then 1
347348 else 0
348- let bB = if (sigVerify(bw.bodyBytes, bw.proofs[2], aa))
349+ let bC = if (sigVerify(bx.bodyBytes, bx.proofs[2], aa))
349350 then 1
350351 else 0
351- (((bz + bA) + bB) >= 2)
352+ (((bA + bB) + bC) >= 2)
352353 }
353- let bC = if (if (if (sigVerify(bw.bodyBytes, bw.proofs[0], Y))
354+ let bD = if (if (if (sigVerify(bx.bodyBytes, bx.proofs[0], Y))
354355 then true
355- else sigVerify(bw.bodyBytes, bw.proofs[0], Z))
356+ else sigVerify(bx.bodyBytes, bx.proofs[0], Z))
356357 then true
357- else sigVerify(bw.bodyBytes, bw.proofs[0], aa))
358+ else sigVerify(bx.bodyBytes, bx.proofs[0], aa))
358359 then true
359- else sigVerify(bw.bodyBytes, bw.proofs[0], P)
360- let V = bw
360+ else sigVerify(bx.bodyBytes, bx.proofs[0], P)
361+ let V = bx
361362 if ($isInstanceOf(V, "DataTransaction"))
362363 then {
363- let bD = V
364+ let bE = V
364365 if (valueOrElse(getBoolean(L, e), false))
365- then bC
366+ then bD
366367 else false
367368 }
368- else by
369+ else bz
369370 }
370371

github/deemru/w8io/169f3d6 
106.61 ms