tx · DcRRXPC9An5oauLZNbBTY73FSnUZ4jvrGHERrfYqzg2k 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi: -0.01400000 Waves 2021.10.11 15:36 [1741624] smart account 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi > SELF 0.00000000 Waves
{ "type": 13, "id": "DcRRXPC9An5oauLZNbBTY73FSnUZ4jvrGHERrfYqzg2k", "fee": 1400000, "feeAssetId": null, "timestamp": 1633955794462, "version": 2, "chainId": 84, "sender": "3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi", "senderPublicKey": "FRotxVW1MhTQRDvVbMM4yvYGWzBFvHqvMsonvGeEXQUy", "proofs": [ "3xFm54TCwwmSv7WbQAggFHEjXdyMcXB2qf8snuGs1TWMKgd2paXQQdYedz8FsSxehdcYKxH2mUYFDsagkHYwJtLd", "4U5nFStxxu8MJeho7VL9iw5c45EZb9rR8KzEEVRpGwPcqiCaXGpXBqFhBTK68G4xeVxTGZ4WpEufy6CF1rkpcMH9" ], "script": "base64:AAIFAAAAAAAAADYIAhIECgIBCBIDCgEIEgsKCQgBAQEBAQEBARIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIAEgAAAAAzAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAPa2V5QWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAAPa2V5QWRtaW5QdWJLZXkyAgAAAAthZG1pbl9wdWJfMgAAAAAPa2V5QWRtaW5QdWJLZXkzAgAAAAthZG1pbl9wdWJfMwAAAAAha2V5TGF1bmNocGFkRGF0YVRyYW5zYWN0aW9uU3RhdHVzAgAAACFsYXVuY2hwYWRfZGF0YV90cmFuc2FjdGlvbl9zdGF0dXMAAAAAEmtleUxhdW5jaHBhZE5leHRJZAIAAAARbGF1bmNocGFkX25leHRfaWQAAAAAFGtleUxhdW5jaHBhZEFjdGl2ZUlkAgAAABNsYXVuY2hwYWRfYWN0aXZlX2lkAAAAAA1rZXlJbml0Q2FsbGVyAgAAAAtpbml0X2NhbGxlcgAAAAAKa2V5QWRkcmVzcwIAAAAIX2FkZHJlc3MAAAAADmtleVN0YXJ0SGVpZ2h0AgAAAA1fc3RhcnRfaGVpZ2h0AAAAAAlrZXlTdGF0dXMCAAAAB19zdGF0dXMAAAAADGtleUNvbWlzc2lvbgIAAAAKX2NvbWlzc2lvbgAAAAAKa2V5QXNzZXRJZAIAAAAJX2Fzc2V0X2lkAAAAABNrZXlUb3RhbFRva2VuQW1vdW50AgAAABNfdG90YWxfdG9rZW5fYW1vdW50AAAAABZrZXlUb3RhbEFtb3VudFVzZG5Tb2xkAgAAABBfdG90YWxfdXNkbl9zb2xkAAAAABJrZXlUb2tlbnNQZXJUaWNrZXQCAAAAEl90b2tlbnNfcGVyX3RpY2tldAAAAAAQa2V5UHJpY2VQZXJUb2tlbgIAAAAQX3ByaWNlX3Blcl90b2tlbgAAAAAQa2V5U3dvcFBlclRpY2tldAIAAAAQX3N3b3BfcGVyX3RpY2tldAAAAAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIAAAAXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAAAAAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AgAAABNfdG9rZW5zX2FjY2Vzc19saXN0AAAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAgAAABZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uAAAAABNrZXlUaWNrZXRMYXN0TnVtYmVyAgAAABNfdGlja2V0X2xhc3RfbnVtYmVyAAAAABNrZXlHb3Zlcm5hbmNlU3Rha2VkAgAAAAxfU1dPUF9hbW91bnQAAAAADGtleVVzZXJSZWZJZAIAAAAHX3JlZl9pZAAAAAANa2V5VmVyaWZ5SGFzaAIAAAAMX3ZlcmlmeV9oYXNoAAAAAAtrZXlEdXJhdGlvbgIAAAAJX2R1cmF0aW9uAAAAAAtrZXlGaW5hbGlzZQIAAAAIX2ZpbmFsc2UAAAAAGGtleUFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAiX3RvdGFsX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAha2V5QW1vdW50VVNETkluTWFya2V0aW5nRmluYWxpemVkAgAAACxfdG90YWxfcHVyY2hhc2VkX3VzZG5faW5fbWFya2V0aW5nX2ZpbmFsaXplZAAAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQCAAAAD19ib3VnaHRfdGlja2V0cwAAAAAOa2V5VXNlclRpY2tldHMCAAAAD190aWNrZXRzX251bWJlcgAAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAgAAAB1fYXZhaWxhYmxlX3B1cmNoYXNlX21hcmtldGluZwAAAAAca2V5VXNlckFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAcX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAgAAABNfYm91Z2h0X2FsbG9jYXRpb25zAAAAABJrZXlVc2VyQ2xhaW1TdGF0dXMCAAAADV9jbGFpbV9zdGF0dXMAAAAAGWtleVVzZXJXaW5uZWRUaWtldHNBbW91bnQCAAAAD190aWNrZXRzX3Jlc3VsdAAAAAAQbGF1Y2hwYWREdXJhdGlvbgAAAAAAAAAFoAAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU6UWqHpAvOq7xug7mLpqSXxqYhOHzYrMIAAAAAApnb3Zlcm5hbmNlCQEAAAAHQWRkcmVzcwAAAAEB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bGwgaW5pdCBmdW5jdGlvbgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQJAAACAAAAAQIAAAAzU3RhcnQgaGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGJsb2NrY2hhaW4gaGVpZ2h0AwkAAGYAAAACBQAAAAtzdGFydEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAECAAAAG2RlYnVnOiBzdGFydEhlaWdodCA+IGhlaWdodAQAAAALJHQwNDU5MzQ2NjYJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAALJHQwNDU5MzQ2NjYAAAACXzEEAAAADHBtdEFzc2V0TmFtZQgFAAAACyR0MDQ1OTM0NjY2AAAAAl8yBAAAAAtwbXREZWNpbWFscwgFAAAACyR0MDQ1OTM0NjY2AAAAAl8zBAAAAAtsYXVuY2hwYWRJZAkBAAAAEmdldExhdW5jaHBhZE5leHRJZAAAAAAEAAAADmxhdW5jaHBhZElkU3RyCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADXBtdFN0ckFzc2V0SWQCAAAACl9sYXVuY2hwYWQFAAAAC2xhdW5jaHBhZElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlMYXVuY2hwYWROZXh0SWQJAABkAAAAAgUAAAALbGF1bmNocGFkSWQAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAAKa2V5QWRkcmVzcwUAAAAOcHJvamVjdEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAADmtleVN0YXJ0SGVpZ2h0BQAAAAtzdGFydEhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAALa2V5RHVyYXRpb24FAAAAEGxhdWNocGFkRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAE2tleVRvdGFsVG9rZW5BbW91bnQFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAlrZXlTdGF0dXMCAAAABmFjdGl2ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAprZXlBc3NldElkBQAAAA1wbXRTdHJBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAxrZXlDb21pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAE2tleVRpY2tldExhc3ROdW1iZXIAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAEmtleVRva2Vuc1BlclRpY2tldAUAAAAPdG9rZW5zUGVyVGlja2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABBrZXlQcmljZVBlclRva2VuBQAAAA1wcmljZVBlclRva2VuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABBrZXlTd29wUGVyVGlja2V0BQAAAA1zd29wUGVyVGlja2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABZrZXlTd29wZmlUaWNrZXRzQW1vdW50BQAAABNzd29wZmlUaWNrZXRzQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudAUAAAAUY2FtcGFpZ25Ub2tlbnNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAFmtleVRva2Vuc1BlckFsbG9jYXRpb24FAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGtleUxhdW5jaHBhZEFjdGl2ZUlkBQAAAAtsYXVuY2hwYWRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rZXlJbml0Q2FsbGVyAgAAAAAFAAAAA25pbAAAAAFpAQAAABBjb21taXRTd29wZmlTYWxlAAAAAgAAAAtsYXVuY2hwYWRJZAAAAAVyZWZJZAQAAAALJHQwNjE1NzYyMzIJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA2MTU3NjIzMgAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDYxNTc2MjMyAAAAAl8yBAAAAAtzdGFrZWRTd29wcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAApnb3Zlcm5hbmNlCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlHb3Zlcm5hbmNlU3Rha2VkAAAAAAAAAAAABAAAABdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAkAAGkAAAACBQAAAAtzdGFrZWRTd29wcwkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABBrZXlTd29wUGVyVGlja2V0BAAAAApjb21taXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADGtleUNvbWlzc2lvbgQAAAAQY29tbWlzc2lvbkluVVNETgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAE2JvdWdodFRpY2tldHNBbW91bnQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50AAAAAAAAAAAABAAAABRhbGxvd2VkVGlja2V0c0Ftb3VudAkAAGUAAAACBQAAABdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAUAAAATYm91Z2h0VGlja2V0c0Ftb3VudAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAIhPQAAAAIFAAAAEWFjdGl2ZUxhdW5jaHBhZElkBQAAAAtsYXVuY2hwYWRJZAkAAAIAAAABAgAAADdUaGVyZSBpcyBubyBhY3RpdmUgbGF1bmNocGFkIG9yIHRoaXMgbGF1bmNocGFkIGlzIGVuZGVkAwMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEGCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAARVU0ROCQAAAgAAAAECAAAAJU9uZSBhdHRhY2hlZCBwYXltZW50IGluIFVTRE4gZXhwZWN0ZWQDAwkAAGcAAAACAAAAAAAAAAAABQAAABdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAYJAABnAAAAAgAAAAAAAAAAAAUAAAAUYWxsb3dlZFRpY2tldHNBbW91bnQJAAACAAAAAQIAAAAqTm90IGVub3VnaHQgU1dPUCBpbiBzdGFraW5nIHRvIGJ1eSB0aWNrZXRzBAAAAAp0b2tlblByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEGtleVByaWNlUGVyVG9rZW4EAAAAD3Rva2Vuc1BlclRpY2tldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABJrZXlUb2tlbnNQZXJUaWNrZXQEAAAAC3RpY2tldFByaWNlCQAAaAAAAAIFAAAAD3Rva2Vuc1BlclRpY2tldAUAAAAKdG9rZW5QcmljZQQAAAAPYnV5VGlja2V0QW1vdW50CQAAaQAAAAIJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABBjb21taXNzaW9uSW5VU0ROBQAAAAt0aWNrZXRQcmljZQQAAAAWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAAZcAAAABCQAETAAAAAIFAAAAD2J1eVRpY2tldEFtb3VudAkABEwAAAACBQAAABRhbGxvd2VkVGlja2V0c0Ftb3VudAUAAAADbmlsBAAAAA9hbGxvd2VkQnV5UHJpY2UJAABoAAAAAgUAAAAWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAUAAAALdGlja2V0UHJpY2UEAAAAHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24JAABkAAAAAgUAAAAPYWxsb3dlZEJ1eVByaWNlCQAAawAAAAMFAAAAD2FsbG93ZWRCdXlQcmljZQUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAAGY2hhbmdlCQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAAcYWxsb3dlZEJ1eVByaWNlV2l0aENvbWlzc2lvbgQAAAAYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAA5rZXlVc2VyVGlja2V0cwIAAAAABAAAABZsYXN0Qm91Z2h0VGlja2VyTnVtYmVyCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAE2tleVRpY2tldExhc3ROdW1iZXIEAAAAC2JvdWdodFJhbmdlCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABCQAAZAAAAAIFAAAAFmxhc3RCb3VnaHRUaWNrZXJOdW1iZXIAAAAAAAAAAAECAAAAAS0JAAGkAAAAAQkAAGQAAAACBQAAABZsYXN0Qm91Z2h0VGlja2VyTnVtYmVyBQAAABZhbGxvd2VkQnV5VGlja2V0QW1vdW50BAAAABtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMJAAEsAAAAAgUAAAAYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAwkBAAAAAiE9AAAAAgUAAAAYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAgAAAAACAAAAASwJAAEsAAAAAgIAAAAABQAAAAtib3VnaHRSYW5nZQQAAAAJYmFzZUVudHJ5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5VXNlclJlZklkBQAAAAVyZWZJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50CQAAZAAAAAIFAAAAE2JvdWdodFRpY2tldHNBbW91bnQFAAAAFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAATa2V5VGlja2V0TGFzdE51bWJlcgkAAGQAAAACBQAAABZsYXN0Qm91Z2h0VGlja2VyTnVtYmVyBQAAABZhbGxvd2VkQnV5VGlja2V0QW1vdW50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SGFzaAkAAAIAAAABAgAAABx2cmYgSGVpZ2h0IGhhc2ggbm90IG1hdGNoaW5nBAAAAA5wcm9qZWN0QWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAAprZXlBZGRyZXNzBAAAAApjb21taXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADGtleUNvbWlzc2lvbgQAAAAXc3dvcGZpTWVtYmVyc1VzZG5BbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAWa2V5VG90YWxBbW91bnRVc2RuU29sZAQAAAAWc3dvcGZpTWVtYmVyc0NvbWlzc2lvbgkAAGsAAAADBQAAABdzd29wZmlNZW1iZXJzVXNkbkFtb3VudAUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAAadG90YWxBbW91bnRVc2RuSW5NYXJrZXRpbmcJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAha2V5QW1vdW50VVNETkluTWFya2V0aW5nRmluYWxpemVkBAAAABJtYXJrZXRpbmdDb21pc3Npb24JAABrAAAAAwUAAAAadG90YWxBbW91bnRVc2RuSW5NYXJrZXRpbmcFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAALa2V5RmluYWxpc2UGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnByb2plY3RBZGRyZXNzCQAAZAAAAAIFAAAAF3N3b3BmaU1lbWJlcnNVc2RuQW1vdW50BQAAABp0b3RhbEFtb3VudFVzZG5Jbk1hcmtldGluZwUAAAAEVVNETgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABBjb21taXNzaW9uV2FsbGV0CQAAZAAAAAIFAAAAFnN3b3BmaU1lbWJlcnNDb21pc3Npb24FAAAAEm1hcmtldGluZ0NvbWlzc2lvbgUAAAAEVVNETgUAAAADbmlsAAAAAWkBAAAABWNsYWltAAAAAQAAAAtsYXVuY2hwYWRJZAQAAAAPdXNlckNsYWltU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MSkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAASa2V5VXNlckNsYWltU3RhdHVzBAAAAA1ib3VnaHRUaWNrZXRzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAAAAAAAAAAAAAQAAAARYm91Z2h0QWxsb2NhdGlvbnMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwAAAAAAAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMFAAAAD3VzZXJDbGFpbVN0YXR1cwkAAAIAAAABAgAAABdZb3UgYXJlIGFscmVhZHkgY2xhaW1lZAMDCQAAAAAAAAIFAAAADWJvdWdodFRpY2tldHMAAAAAAAAAAAAJAAAAAAAAAgUAAAARYm91Z2h0QWxsb2NhdGlvbnMAAAAAAAAAAAAHCQAAAgAAAAECAAAALllvdSBjYW4ndCBjbGFpbSBiZWNhdXNlIHlvdSBkb24ndCBidXkgZW5ldGhpbmcEAAAAB3Rva2VuSWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAAprZXlBc3NldElkBAAAAA13b25uZWRUaWNrZXRzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABlrZXlVc2VyV2lubmVkVGlrZXRzQW1vdW50AAAAAAAAAAAABAAAABRhd2FpbGFibGVBbGxvY2F0aW9ucwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAAAAAAAAAAAABAAAAApjb21taXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADGtleUNvbWlzc2lvbgQAAAASYWxsb3dlZEFsbG9jYXRpb25zCQABlwAAAAEJAARMAAAAAgUAAAARYm91Z2h0QWxsb2NhdGlvbnMJAARMAAAAAgUAAAAUYXdhaWxhYmxlQWxsb2NhdGlvbnMFAAAAA25pbAQAAAAKdG9rZW5QcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABBrZXlQcmljZVBlclRva2VuBAAAAA90b2tlbnNQZXJUaWNrZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAASa2V5VG9rZW5zUGVyVGlja2V0BAAAAAt0aWNrZXRQcmljZQkAAGgAAAACBQAAAA90b2tlbnNQZXJUaWNrZXQFAAAACnRva2VuUHJpY2UEAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQAAAAUdHJhbnNmZXJUb2tlbnNBbW91bnQJAABkAAAAAgkAAGgAAAACBQAAAA13b25uZWRUaWNrZXRzBQAAAA90b2tlbnNQZXJUaWNrZXQJAABoAAAAAgUAAAASYWxsb3dlZEFsbG9jYXRpb25zBQAAABN0b2tlbnNQZXJBbGxvY2F0aW9uBAAAABJ1c2RuRm9yQWxsb2NhdGlvbnMJAABrAAAAAwkAAGUAAAACBQAAABFib3VnaHRBbGxvY2F0aW9ucwUAAAASYWxsb3dlZEFsbG9jYXRpb25zCQAAZAAAAAIAAAAAAAAAAGQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAFnVzZG5Gb3JVbndvbm5lZFRpY2tldHMJAABrAAAAAwkAAGgAAAACCQAAZQAAAAIFAAAADWJvdWdodFRpY2tldHMFAAAADXdvbm5lZFRpY2tldHMFAAAAC3RpY2tldFByaWNlCQAAZAAAAAIAAAAAAAAAAGQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAEnJldHVybmVkVXNkbkFtb3VudAkAAGQAAAACBQAAABJ1c2RuRm9yQWxsb2NhdGlvbnMFAAAAFnVzZG5Gb3JVbndvbm5lZFRpY2tldHMEAAAADHRyYW5zZmVyVXNkbgMJAABmAAAAAgUAAAAScmV0dXJuZWRVc2RuQW1vdW50AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAScmV0dXJuZWRVc2RuQW1vdW50BQAAAARVU0ROBQAAAANuaWwFAAAAA25pbAQAAAAOdHJhbnNmZXJUb2tlbnMDCQAAZgAAAAIFAAAAFHRyYW5zZmVyVG9rZW5zQW1vdW50AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAUdHJhbnNmZXJUb2tlbnNBbW91bnQFAAAAB3Rva2VuSWQFAAAAA25pbAUAAAADbmlsCQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEmtleVVzZXJDbGFpbVN0YXR1cwYFAAAAA25pbAUAAAAOdHJhbnNmZXJUb2tlbnMFAAAADHRyYW5zZmVyVXNkbgAAAAFpAQAAAAhzaHV0ZG93bgAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAFERBcHAgYWxyZWR5IGluYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHBQAAAANuaWwAAAABaQEAAAAIYWN0aXZhdGUAAAAAAwUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAASREFwcCBhbHJlZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABNtdWx0aVNpZ25lZEJ5QWRtaW5zBAAAABJhZG1pblB1YktleTFTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAACBAAAAA1zaWduZWRCeUFkbWluAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MgYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTMGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAASYWRtaW5QdWJLZXlTdGFraW5nBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAANkdHgFAAAAByRtYXRjaDADCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABm9yYWNsZQUAAAAha2V5TGF1bmNocGFkRGF0YVRyYW5zYWN0aW9uU3RhdHVzBwUAAAANc2lnbmVkQnlBZG1pbgcFAAAAE211bHRpU2lnbmVkQnlBZG1pbnMNC983", "height": 1741624, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: WqEpG95zVnBWB2bdvakdjCyBDwjnhAM1tKSKdxetDnb Next: 6tm7zJc4GGydmLiJYJt5CYYCXc4veASTmeJtgCKmncu7 Diff:
Old | New | Differences | |
---|---|---|---|
163 | 163 | then throw("One attached payment expected") | |
164 | 164 | else if ((height > an)) | |
165 | 165 | then throw("Start height must be greater than blockchain height") | |
166 | - | else { | |
167 | - | let ay = ab(ax) | |
168 | - | let az = ay._1 | |
169 | - | let aA = ay._2 | |
170 | - | let aB = ay._3 | |
171 | - | let aj = ah() | |
172 | - | let aC = toString(aj) | |
166 | + | else if ((an > height)) | |
167 | + | then throw("debug: startHeight > height") | |
168 | + | else { | |
169 | + | let ay = ab(ax) | |
170 | + | let az = ay._1 | |
171 | + | let aA = ay._2 | |
172 | + | let aB = ay._3 | |
173 | + | let aj = ah() | |
174 | + | let aC = toString(aj) | |
173 | 175 | [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, "")] | |
174 | - | } | |
176 | + | } | |
175 | 177 | } | |
176 | 178 | ||
177 | 179 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "active" | |
5 | 5 | ||
6 | 6 | let b = "admin_pub_1" | |
7 | 7 | ||
8 | 8 | let c = "admin_pub_2" | |
9 | 9 | ||
10 | 10 | let d = "admin_pub_3" | |
11 | 11 | ||
12 | 12 | let e = "launchpad_data_transaction_status" | |
13 | 13 | ||
14 | 14 | let f = "launchpad_next_id" | |
15 | 15 | ||
16 | 16 | let g = "launchpad_active_id" | |
17 | 17 | ||
18 | 18 | let h = "init_caller" | |
19 | 19 | ||
20 | 20 | let i = "_address" | |
21 | 21 | ||
22 | 22 | let j = "_start_height" | |
23 | 23 | ||
24 | 24 | let k = "_status" | |
25 | 25 | ||
26 | 26 | let l = "_comission" | |
27 | 27 | ||
28 | 28 | let m = "_asset_id" | |
29 | 29 | ||
30 | 30 | let n = "_total_token_amount" | |
31 | 31 | ||
32 | 32 | let o = "_total_usdn_sold" | |
33 | 33 | ||
34 | 34 | let p = "_tokens_per_ticket" | |
35 | 35 | ||
36 | 36 | let q = "_price_per_token" | |
37 | 37 | ||
38 | 38 | let r = "_swop_per_ticket" | |
39 | 39 | ||
40 | 40 | let s = "_tickets_swopfi_members" | |
41 | 41 | ||
42 | 42 | let t = "_tokens_access_list" | |
43 | 43 | ||
44 | 44 | let u = "_tokens_per_allocation" | |
45 | 45 | ||
46 | 46 | let v = "_ticket_last_number" | |
47 | 47 | ||
48 | 48 | let w = "_SWOP_amount" | |
49 | 49 | ||
50 | 50 | let x = "_ref_id" | |
51 | 51 | ||
52 | 52 | let y = "_verify_hash" | |
53 | 53 | ||
54 | 54 | let z = "_duration" | |
55 | 55 | ||
56 | 56 | let A = "_finalse" | |
57 | 57 | ||
58 | 58 | let B = "_total_purchased_usdn_in_marketing" | |
59 | 59 | ||
60 | 60 | let C = "_total_purchased_usdn_in_marketing_finalized" | |
61 | 61 | ||
62 | 62 | let D = "_bought_tickets" | |
63 | 63 | ||
64 | 64 | let E = "_tickets_number" | |
65 | 65 | ||
66 | 66 | let F = "_available_purchase_marketing" | |
67 | 67 | ||
68 | 68 | let G = "_purchased_usdn_in_marketing" | |
69 | 69 | ||
70 | 70 | let H = "_bought_allocations" | |
71 | 71 | ||
72 | 72 | let I = "_claim_status" | |
73 | 73 | ||
74 | 74 | let J = "_tickets_result" | |
75 | 75 | ||
76 | 76 | let K = 1440 | |
77 | 77 | ||
78 | 78 | let L = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9') | |
79 | 79 | ||
80 | 80 | let M = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU') | |
81 | 81 | ||
82 | 82 | let N = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG') | |
83 | 83 | ||
84 | 84 | let O = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS' | |
85 | 85 | ||
86 | 86 | let P = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK' | |
87 | 87 | ||
88 | 88 | let Q = 2 | |
89 | 89 | ||
90 | 90 | let R = valueOrElse(getBoolean(this, a), true) | |
91 | 91 | ||
92 | 92 | let S = valueOrElse(getIntegerValue(this, g), -1) | |
93 | 93 | ||
94 | 94 | func T (U) = { | |
95 | 95 | let V = getString(L, U) | |
96 | 96 | if ($isInstanceOf(V, "String")) | |
97 | 97 | then { | |
98 | 98 | let W = V | |
99 | 99 | fromBase58String(W) | |
100 | 100 | } | |
101 | 101 | else { | |
102 | 102 | let X = V | |
103 | 103 | throw("Admin public key is empty") | |
104 | 104 | } | |
105 | 105 | } | |
106 | 106 | ||
107 | 107 | ||
108 | 108 | let Y = T(b) | |
109 | 109 | ||
110 | 110 | let Z = T(c) | |
111 | 111 | ||
112 | 112 | let aa = T(d) | |
113 | 113 | ||
114 | 114 | func ab (ac) = { | |
115 | 115 | let V = ac | |
116 | 116 | if ($isInstanceOf(V, "ByteVector")) | |
117 | 117 | then { | |
118 | 118 | let ad = V | |
119 | 119 | let ae = toBase58String(ad) | |
120 | 120 | let af = valueOrErrorMessage(assetInfo(ad), (("Asset " + ae) + " doesn't exist")) | |
121 | 121 | $Tuple3(ae, af.name, af.decimals) | |
122 | 122 | } | |
123 | 123 | else if ($isInstanceOf(V, "Unit")) | |
124 | 124 | then { | |
125 | 125 | let ag = V | |
126 | 126 | $Tuple3("WAVES", "WAVES", 8) | |
127 | 127 | } | |
128 | 128 | else throw("Match error") | |
129 | 129 | } | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func ah () = valueOrElse(getInteger(this, f), 1) | |
133 | 133 | ||
134 | 134 | ||
135 | 135 | @Callable(ai) | |
136 | 136 | func hashingRandom (aj,ak) = if (!(R)) | |
137 | 137 | then throw("DApp is inactive at this moment") | |
138 | 138 | else if (!(containsElement([Y, Z, aa], ai.callerPublicKey))) | |
139 | 139 | then throw("Only admin can call this function") | |
140 | 140 | else [StringEntry((toString(aj) + y), ak)] | |
141 | 141 | ||
142 | 142 | ||
143 | 143 | ||
144 | 144 | @Callable(ai) | |
145 | 145 | func initCaller (al) = if (!(R)) | |
146 | 146 | then throw("DApp is inactive at this moment") | |
147 | 147 | else if (!(containsElement([Y, Z, aa], ai.callerPublicKey))) | |
148 | 148 | then throw("Only admin can call this function") | |
149 | 149 | else [StringEntry(h, al)] | |
150 | 150 | ||
151 | 151 | ||
152 | 152 | ||
153 | 153 | @Callable(ai) | |
154 | 154 | func init (am,an,ao,ap,aq,ar,as,at,au) = { | |
155 | 155 | let av = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId) | |
156 | 156 | let aw = av._1 | |
157 | 157 | let ax = av._2 | |
158 | 158 | if (!(R)) | |
159 | 159 | then throw("DApp is inactive at this moment") | |
160 | 160 | else if ((valueOrElse(getStringValue(h), "") == toString(ai.caller))) | |
161 | 161 | then throw("Only project admin can call init function") | |
162 | 162 | else if ((size(ai.payments) != 1)) | |
163 | 163 | then throw("One attached payment expected") | |
164 | 164 | else if ((height > an)) | |
165 | 165 | then throw("Start height must be greater than blockchain height") | |
166 | - | else { | |
167 | - | let ay = ab(ax) | |
168 | - | let az = ay._1 | |
169 | - | let aA = ay._2 | |
170 | - | let aB = ay._3 | |
171 | - | let aj = ah() | |
172 | - | let aC = toString(aj) | |
166 | + | else if ((an > height)) | |
167 | + | then throw("debug: startHeight > height") | |
168 | + | else { | |
169 | + | let ay = ab(ax) | |
170 | + | let az = ay._1 | |
171 | + | let aA = ay._2 | |
172 | + | let aB = ay._3 | |
173 | + | let aj = ah() | |
174 | + | let aC = toString(aj) | |
173 | 175 | [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, "")] | |
174 | - | } | |
176 | + | } | |
175 | 177 | } | |
176 | 178 | ||
177 | 179 | ||
178 | 180 | ||
179 | 181 | @Callable(ai) | |
180 | 182 | func commitSwopfiSale (aj,aD) = { | |
181 | 183 | let aE = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId) | |
182 | 184 | let aw = aE._1 | |
183 | 185 | let ax = aE._2 | |
184 | 186 | let aF = valueOrElse(getInteger(M, (toString(ai.caller) + w)), 0) | |
185 | 187 | let aG = (aF / getIntegerValue(this, (toString(aj) + r))) | |
186 | 188 | let ao = getIntegerValue(this, (toString(aj) + l)) | |
187 | 189 | let aH = fraction(aw, ao, 100) | |
188 | 190 | let aI = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0) | |
189 | 191 | let aJ = (aG - aI) | |
190 | 192 | if (!(R)) | |
191 | 193 | then throw("DApp is inactive at this moment") | |
192 | 194 | else if ((S != aj)) | |
193 | 195 | then throw("There is no active launchpad or this launchpad is ended") | |
194 | 196 | else if (if ((size(ai.payments) != 1)) | |
195 | 197 | then true | |
196 | 198 | else (ax != O)) | |
197 | 199 | then throw("One attached payment in USDN expected") | |
198 | 200 | else if (if ((0 >= aG)) | |
199 | 201 | then true | |
200 | 202 | else (0 >= aJ)) | |
201 | 203 | then throw("Not enought SWOP in staking to buy tickets") | |
202 | 204 | else { | |
203 | 205 | let aK = getIntegerValue(this, (toString(aj) + q)) | |
204 | 206 | let ap = getIntegerValue(this, (toString(aj) + p)) | |
205 | 207 | let aL = (ap * aK) | |
206 | 208 | let aM = ((aw - aH) / aL) | |
207 | 209 | let aN = min([aM, aJ]) | |
208 | 210 | let aO = (aN * aL) | |
209 | 211 | let aP = (aO + fraction(aO, ao, 100)) | |
210 | 212 | let aQ = (aw - aP) | |
211 | 213 | let aR = valueOrElse(getString(this, (((toString(ai.caller) + "_") + toString(aj)) + E)), "") | |
212 | 214 | let aS = getIntegerValue(this, (toString(aj) + v)) | |
213 | 215 | let aT = ((toString((aS + 1)) + "-") + toString((aS + aN))) | |
214 | 216 | let aU = (aR + (if ((aR != "")) | |
215 | 217 | then "," | |
216 | 218 | else ("" + aT))) | |
217 | 219 | 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 | 220 | if ((aQ > 0)) | |
219 | 221 | then (aV ++ [ScriptTransfer(ai.caller, aQ, ax)]) | |
220 | 222 | else aV | |
221 | 223 | } | |
222 | 224 | } | |
223 | 225 | ||
224 | 226 | ||
225 | 227 | ||
226 | 228 | @Callable(ai) | |
227 | 229 | func commitAccessListSale (aj,aD) = { | |
228 | 230 | let aW = $Tuple2(ai.payments[0].amount, ai.payments[0].assetId) | |
229 | 231 | let aw = aW._1 | |
230 | 232 | let ax = aW._2 | |
231 | 233 | let aX = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + G)), 0) | |
232 | 234 | let aY = valueOrElse(getInteger(this, (toString(aj) + B)), 0) | |
233 | 235 | let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0) | |
234 | 236 | let ao = getIntegerValue(this, (toString(aj) + l)) | |
235 | 237 | let aK = getIntegerValue(this, (toString(aj) + q)) | |
236 | 238 | let at = getIntegerValue(this, (toString(aj) + u)) | |
237 | 239 | let ba = (aK * at) | |
238 | 240 | let bb = (ba + fraction(ba, ao, 100)) | |
239 | 241 | if (!(R)) | |
240 | 242 | then throw("DApp is inactive at this moment") | |
241 | 243 | else if ((S != aj)) | |
242 | 244 | then throw("There is no active launchpad or this launchpad is ended") | |
243 | 245 | else if (if ((size(ai.payments) != 1)) | |
244 | 246 | then true | |
245 | 247 | else (ax != O)) | |
246 | 248 | then throw("One attached payment in USDN expected") | |
247 | 249 | else if ((aZ >= Q)) | |
248 | 250 | then throw((("You can buy only " + toString(Q)) + "allocations")) | |
249 | 251 | else if (if ((bb != aw)) | |
250 | 252 | then ((bb * 2) != aw) | |
251 | 253 | else false) | |
252 | 254 | then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString((bb / 1000000))) + " USDN per allocation")) | |
253 | 255 | else { | |
254 | 256 | let bc = (aw / bb) | |
255 | 257 | [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))] | |
256 | 258 | } | |
257 | 259 | } | |
258 | 260 | ||
259 | 261 | ||
260 | 262 | ||
261 | 263 | @Callable(ai) | |
262 | 264 | func finalise (aj,bd,be) = { | |
263 | 265 | let bf = getStringValue(this, (toString(aj) + y)) | |
264 | 266 | let bg = toBase58String(sha256((toBytes(bd) + toBytes(be)))) | |
265 | 267 | if (!(R)) | |
266 | 268 | then throw("DApp is inactive at this moment") | |
267 | 269 | else if (!(containsElement([Y, Z, aa], ai.callerPublicKey))) | |
268 | 270 | then throw("Only admin can call this function") | |
269 | 271 | else if ((bg != bf)) | |
270 | 272 | then throw("vrf Height hash not matching") | |
271 | 273 | else { | |
272 | 274 | let am = addressFromStringValue(getStringValue(this, (toString(aj) + i))) | |
273 | 275 | let ao = getIntegerValue(this, (toString(aj) + l)) | |
274 | 276 | let bh = getIntegerValue(this, (toString(aj) + o)) | |
275 | 277 | let bi = fraction(bh, ao, 100) | |
276 | 278 | let bj = getIntegerValue(this, (toString(aj) + C)) | |
277 | 279 | let bk = fraction(bj, ao, 100) | |
278 | 280 | [BooleanEntry((toString(aj) + A), true), ScriptTransfer(am, (bh + bj), O), ScriptTransfer(N, (bi + bk), O)] | |
279 | 281 | } | |
280 | 282 | } | |
281 | 283 | ||
282 | 284 | ||
283 | 285 | ||
284 | 286 | @Callable(ai) | |
285 | 287 | func claim (aj) = { | |
286 | 288 | let bl = getBooleanValue(this, (((toString(ai.caller) + "_") + toString(aj)) + I)) | |
287 | 289 | let bm = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + D)), 0) | |
288 | 290 | let aZ = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + H)), 0) | |
289 | 291 | if (!(R)) | |
290 | 292 | then throw("DApp is inactive at this moment") | |
291 | 293 | else if (bl) | |
292 | 294 | then throw("You are already claimed") | |
293 | 295 | else if (if ((bm == 0)) | |
294 | 296 | then (aZ == 0) | |
295 | 297 | else false) | |
296 | 298 | then throw("You can't claim because you don't buy enething") | |
297 | 299 | else { | |
298 | 300 | let bn = fromBase58String(getStringValue(this, (toString(aj) + m))) | |
299 | 301 | let bo = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + J)), 0) | |
300 | 302 | let bp = valueOrElse(getInteger(this, (((toString(ai.caller) + "_") + toString(aj)) + F)), 0) | |
301 | 303 | let ao = getIntegerValue(this, (toString(aj) + l)) | |
302 | 304 | let bq = min([aZ, bp]) | |
303 | 305 | let aK = getIntegerValue(this, (toString(aj) + q)) | |
304 | 306 | let ap = getIntegerValue(this, (toString(aj) + p)) | |
305 | 307 | let aL = (ap * aK) | |
306 | 308 | let at = getIntegerValue(this, (toString(aj) + u)) | |
307 | 309 | let br = ((bo * ap) + (bq * at)) | |
308 | 310 | let bs = fraction((aZ - bq), (100 + ao), 100) | |
309 | 311 | let bt = fraction(((bm - bo) * aL), (100 + ao), 100) | |
310 | 312 | let bu = (bs + bt) | |
311 | 313 | let bv = if ((bu > 0)) | |
312 | 314 | then [ScriptTransfer(ai.caller, bu, O)] | |
313 | 315 | else nil | |
314 | 316 | let bw = if ((br > 0)) | |
315 | 317 | then [ScriptTransfer(ai.caller, br, bn)] | |
316 | 318 | else nil | |
317 | 319 | (([BooleanEntry((((toString(ai.caller) + "_") + toString(aj)) + I), true)] ++ bw) ++ bv) | |
318 | 320 | } | |
319 | 321 | } | |
320 | 322 | ||
321 | 323 | ||
322 | 324 | ||
323 | 325 | @Callable(ai) | |
324 | 326 | func shutdown () = if (!(R)) | |
325 | 327 | then throw("DApp alredy inactive") | |
326 | 328 | else if (!(containsElement([Y, Z, aa], ai.callerPublicKey))) | |
327 | 329 | then throw("Only admin can call this function") | |
328 | 330 | else [BooleanEntry(a, false)] | |
329 | 331 | ||
330 | 332 | ||
331 | 333 | ||
332 | 334 | @Callable(ai) | |
333 | 335 | func activate () = if (R) | |
334 | 336 | then throw("DApp alredy active") | |
335 | 337 | else if (!(containsElement([Y, Z, aa], ai.callerPublicKey))) | |
336 | 338 | then throw("Only admin can call this function") | |
337 | 339 | else [BooleanEntry(a, true)] | |
338 | 340 | ||
339 | 341 | ||
340 | 342 | @Verifier(bx) | |
341 | 343 | func by () = { | |
342 | 344 | let bz = { | |
343 | 345 | let bA = if (sigVerify(bx.bodyBytes, bx.proofs[0], Y)) | |
344 | 346 | then 1 | |
345 | 347 | else 0 | |
346 | 348 | let bB = if (sigVerify(bx.bodyBytes, bx.proofs[1], Z)) | |
347 | 349 | then 1 | |
348 | 350 | else 0 | |
349 | 351 | let bC = if (sigVerify(bx.bodyBytes, bx.proofs[2], aa)) | |
350 | 352 | then 1 | |
351 | 353 | else 0 | |
352 | 354 | (((bA + bB) + bC) >= 2) | |
353 | 355 | } | |
354 | 356 | let bD = if (if (if (sigVerify(bx.bodyBytes, bx.proofs[0], Y)) | |
355 | 357 | then true | |
356 | 358 | else sigVerify(bx.bodyBytes, bx.proofs[0], Z)) | |
357 | 359 | then true | |
358 | 360 | else sigVerify(bx.bodyBytes, bx.proofs[0], aa)) | |
359 | 361 | then true | |
360 | 362 | else sigVerify(bx.bodyBytes, bx.proofs[0], P) | |
361 | 363 | let V = bx | |
362 | 364 | if ($isInstanceOf(V, "DataTransaction")) | |
363 | 365 | then { | |
364 | 366 | let bE = V | |
365 | 367 | if (valueOrElse(getBoolean(L, e), false)) | |
366 | 368 | then bD | |
367 | 369 | else false | |
368 | 370 | } | |
369 | 371 | else bz | |
370 | 372 | } | |
371 | 373 |
github/deemru/w8io/169f3d6 65.49 ms ◑