tx · H4hTfBNTa542YFxbMpo1gQ9EAKFy2h8BWmvXF1S7PuuD

3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi:  -0.01400000 Waves

2021.11.30 16:55 [1813860] smart account 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi > SELF 0.00000000 Waves

{ "type": 13, "id": "H4hTfBNTa542YFxbMpo1gQ9EAKFy2h8BWmvXF1S7PuuD", "fee": 1400000, "feeAssetId": null, "timestamp": 1638280530381, "version": 2, "chainId": 84, "sender": "3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi", "senderPublicKey": "FRotxVW1MhTQRDvVbMM4yvYGWzBFvHqvMsonvGeEXQUy", "proofs": [ "3uA4aENoqKmZvy3yQHEnMiQiN431gws4HAsm1wS4qNTnUAw2kdPUJvSt4dEPTmSnYaPBTr9b5mGpmbTQMzCTCdTQ", "5K6x96qXxPo4z6Wcb2UShoq7nDTBkKgvVADzkcf7JDuc1n5DRmF6GecsqjBu5Lhzj2qNULfbmJSVYCSk53hjsd9w" ], "script": "base64:AAIFAAAAAAAAADwIAhIECgIBCBIDCgEIEgsKCQgBAQEBAQEBARIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIECgIBARIAEgAAAAA2AAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAPa2V5QWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAAPa2V5QWRtaW5QdWJLZXkyAgAAAAthZG1pbl9wdWJfMgAAAAAPa2V5QWRtaW5QdWJLZXkzAgAAAAthZG1pbl9wdWJfMwAAAAAha2V5TGF1bmNocGFkRGF0YVRyYW5zYWN0aW9uU3RhdHVzAgAAACFsYXVuY2hwYWRfZGF0YV90cmFuc2FjdGlvbl9zdGF0dXMAAAAAEmtleUxhdW5jaHBhZE5leHRJZAIAAAARbGF1bmNocGFkX25leHRfaWQAAAAAFGtleUxhdW5jaHBhZEFjdGl2ZUlkAgAAABNsYXVuY2hwYWRfYWN0aXZlX2lkAAAAAA1rZXlJbml0Q2FsbGVyAgAAAAtpbml0X2NhbGxlcgAAAAAKa2V5QWRkcmVzcwIAAAAIX2FkZHJlc3MAAAAADWtleUluaXRIZWlnaHQCAAAADF9pbml0X2hlaWdodAAAAAAOa2V5U3RhcnRIZWlnaHQCAAAADV9zdGFydF9oZWlnaHQAAAAAEWtleUZpbmFsaXNlSGVpZ2h0AgAAABBfZmluYWxpc2VfaGVpZ2h0AAAAAAxrZXlDb21pc3Npb24CAAAACl9jb21pc3Npb24AAAAACmtleUFzc2V0SWQCAAAACV9hc3NldF9pZAAAAAATa2V5VG90YWxUb2tlbkFtb3VudAIAAAATX3RvdGFsX3Rva2VuX2Ftb3VudAAAAAAWa2V5VG90YWxBbW91bnRVc2RuU29sZAIAAAAQX3RvdGFsX3VzZG5fc29sZAAAAAASa2V5VG9rZW5zUGVyVGlja2V0AgAAABJfdG9rZW5zX3Blcl90aWNrZXQAAAAAEGtleVByaWNlUGVyVG9rZW4CAAAAEF9wcmljZV9wZXJfdG9rZW4AAAAAEGtleVN3b3BQZXJUaWNrZXQCAAAAEF9zd29wX3Blcl90aWNrZXQAAAAAFmtleVN3b3BmaVRpY2tldHNBbW91bnQCAAAAF190aWNrZXRzX3N3b3BmaV9tZW1iZXJzAAAAABdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudAIAAAATX3Rva2Vuc19hY2Nlc3NfbGlzdAAAAAAWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgIAAAAWX3Rva2Vuc19wZXJfYWxsb2NhdGlvbgAAAAATa2V5VGlja2V0TGFzdE51bWJlcgIAAAATX3RpY2tldF9sYXN0X251bWJlcgAAAAATa2V5R292ZXJuYW5jZVN0YWtlZAIAAAAMX1NXT1BfYW1vdW50AAAAAAxrZXlVc2VyUmVmSWQCAAAAB19yZWZfaWQAAAAADWtleVZlcmlmeUhhc2gCAAAADF92ZXJpZnlfaGFzaAAAAAALa2V5RHVyYXRpb24CAAAACV9kdXJhdGlvbgAAAAAYa2V5QW1vdW50VVNETkluTWFya2V0aW5nAgAAACJfdG90YWxfcHVyY2hhc2VkX3VzZG5faW5fbWFya2V0aW5nAAAAACFrZXlBbW91bnRVU0ROSW5NYXJrZXRpbmdGaW5hbGl6ZWQCAAAALF90b3RhbF9wdXJjaGFzZWRfdXNkbl9pbl9tYXJrZXRpbmdfZmluYWxpemVkAAAAAA5rZXlUcmFuc2ZlclVzZAIAAAANX3RyYW5zZmVyX3VzZAAAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQCAAAAD19ib3VnaHRfdGlja2V0cwAAAAAOa2V5VXNlclRpY2tldHMCAAAAD190aWNrZXRzX251bWJlcgAAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAgAAAB1fYXZhaWxhYmxlX3B1cmNoYXNlX21hcmtldGluZwAAAAAca2V5VXNlckFtb3VudFVTRE5Jbk1hcmtldGluZwIAAAAcX3B1cmNoYXNlZF91c2RuX2luX21hcmtldGluZwAAAAAYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAgAAABNfYm91Z2h0X2FsbG9jYXRpb25zAAAAABJrZXlVc2VyQ2xhaW1TdGF0dXMCAAAADV9jbGFpbV9zdGF0dXMAAAAAGmtleVVzZXJXaW5uZWRUaWNrZXRzQW1vdW50AgAAAA9fdGlja2V0c19yZXN1bHQAAAAAEGxhdWNocGFkRHVyYXRpb24AAAAAAAAAAGQAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MA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TAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAA1rZXlWZXJpZnlIYXNoBQAAAARoYXNoBQAAAANuaWwAAAABaQEAAAAKaW5pdENhbGxlcgAAAAEAAAAHYWRkcmVzcwMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rZXlJbml0Q2FsbGVyBQAAAAdhZGRyZXNzBQAAAANuaWwAAAABaQEAAAAEaW5pdAAAAAkAAAAOcHJvamVjdEFkZHJlc3MAAAALc3RhcnRIZWlnaHQAAAAKY29tbWlzc2lvbgAAAA90b2tlbnNQZXJUaWNrZXQAAAANcHJpY2VQZXJUb2tlbgAAABNzd29wZmlUaWNrZXRzQW1vdW50AAAAFGNhbXBhaWduVG9rZW5zQW1vdW50AAAAE3Rva2Vuc1BlckFsbG9jYXRpb24AAAANc3dvcFBlclRpY2tldAQAAAALJHQwNDIwMDQyNzUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA0MjAwNDI3NQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDQyMDA0Mjc1AAAAAl8yAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAANa2V5SW5pdENhbGxlcgIAAAAACQAAAgAAAAECAAAAKU9ubHkgcHJvamVjdCBhZG1pbiBjYW4gY2FsbCBpbml0IGZ1bmN0aW9uAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAkAAAIAAAABAgAAADNTdGFydCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gYmxvY2tjaGFpbiBoZWlnaHQEAAAACyR0MDQ3MDM0Nzc2CQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAAKcG10QXNzZXRJZAQAAAANcG10U3RyQXNzZXRJZAgFAAAACyR0MDQ3MDM0Nzc2AAAAAl8xBAAAAAxwbXRBc3NldE5hbWUIBQAAAAskdDA0NzAzNDc3NgAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAAskdDA0NzAzNDc3NgAAAAJfMwQAAAALbGF1bmNocGFkSWQJAQAAABJnZXRMYXVuY2hwYWROZXh0SWQAAAAABAAAAA5sYXVuY2hwYWRJZFN0cgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA1wbXRTdHJBc3NldElkAgAAAApfbGF1bmNocGFkBQAAAAtsYXVuY2hwYWRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5TGF1bmNocGFkTmV4dElkCQAAZAAAAAIFAAAAC2xhdW5jaHBhZElkAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAACmtleUFkZHJlc3MFAAAADnByb2plY3RBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAA1rZXlJbml0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAADmtleVN0YXJ0SGVpZ2h0BQAAAAtzdGFydEhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA5sYXVuY2hwYWRJZFN0cgUAAAALa2V5RHVyYXRpb24FAAAAEGxhdWNocGFkRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAE2tleVRvdGFsVG9rZW5BbW91bnQFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAprZXlBc3NldElkBQAAAA1wbXRTdHJBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAAAxrZXlDb21pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAE2tleVRpY2tldExhc3ROdW1iZXIAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAEmtleVRva2Vuc1BlclRpY2tldAUAAAAPdG9rZW5zUGVyVGlja2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABBrZXlQcmljZVBlclRva2VuBQAAAA1wcmljZVBlclRva2VuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABBrZXlTd29wUGVyVGlja2V0BQAAAA1zd29wUGVyVGlja2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABZrZXlTd29wZmlUaWNrZXRzQW1vdW50BQAAABNzd29wZmlUaWNrZXRzQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADmxhdW5jaHBhZElkU3RyBQAAABdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudAUAAAAUY2FtcGFpZ25Ub2tlbnNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAObGF1bmNocGFkSWRTdHIFAAAAFmtleVRva2Vuc1BlckFsbG9jYXRpb24FAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGtleUxhdW5jaHBhZEFjdGl2ZUlkBQAAAAtsYXVuY2hwYWRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rZXlJbml0Q2FsbGVyAgAAAAAFAAAAA25pbAAAAAFpAQAAABBjb21taXRTd29wZmlTYWxlAAAAAgAAAAtsYXVuY2hwYWRJZAAAAAVyZWZJZAQAAAALJHQwNjI3MDYzNDUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA2MjcwNjM0NQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDYyNzA2MzQ1AAAAAl8yBAAAAAtzdGFrZWRTd29wcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkA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bgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAAAxrZXlDb21pc3Npb24EAAAADnRyYW5zZmVyZWRVc2RuCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAOa2V5VHJhbnNmZXJVc2QAAAAAAAAAAAAEAAAAF3N3b3BmaU1lbWJlcnNVc2RuQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAFmtleVRvdGFsQW1vdW50VXNkblNvbGQEAAAAFnN3b3BmaU1lbWJlcnNDb21pc3Npb24JAABrAAAAAwUAAAAXc3dvcGZpTWVtYmVyc1VzZG5BbW91bnQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAGnRvdGFsQW1vdW50VXNkbkluTWFya2V0aW5nCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAIWtleUFtb3VudFVTRE5Jbk1hcmtldGluZ0ZpbmFsaXplZAQAAAASbWFya2V0aW5nQ29taXNzaW9uCQAAawAAAAMFAAAAGnRvdGFsQW1vdW50VXNkbkluTWFya2V0aW5nBQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAAA11bnN0YWtlQW1vdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACBQAAABdzd29wZmlNZW1iZXJzVXNkbkFtb3VudAUAAAAadG90YWxBbW91bnRVc2RuSW5NYXJrZXRpbmcFAAAAFnN3b3BmaU1lbWJlcnNDb21pc3Npb24FAAAAEm1hcmtldGluZ0NvbWlzc2lvbgMJAABmAAAAAgUAAAAOdHJhbnNmZXJlZFVzZG4JAABkAAAAAgUAAAAXc3dvcGZpTWVtYmVyc1VzZG5BbW91bnQFAAAAGnRvdGFsQW1vdW50VXNkbkluTWFya2V0aW5nCQAAAgAAAAECAAAAKENhbid0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AaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAaa2V5VXNlcldpbm5lZFRpY2tldHNBbW91bnQAAAAAAAAAAAAEAAAAFGF3YWlsYWJsZUFsbG9jYXRpb25zCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAFfCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMAAAAAAAAAAAAEAAAACmNvbW1pc3Npb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAMa2V5Q29taXNzaW9uBAAAABJhbGxvd2VkQWxsb2NhdGlvbnMJAAGXAAAAAQkABEwAAAACBQAAABFib3VnaHRBbGxvY2F0aW9ucwkABEwAAAACBQAAABRhd2FpbGFibGVBbGxvY2F0aW9ucwUAAAADbmlsBAAAAAp0b2tlblByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAAEGtleVByaWNlUGVyVG9rZW4EAAAAD3Rva2Vuc1BlclRpY2tldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABJrZXlUb2tlbnNQZXJUaWNrZXQEAAAADSR0MDE2OTQ1MTcwMjEJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAd0b2tlbklkBAAAAA90b2tlblN0ckFzc2V0SWQIBQAAAA0kdDAxNjk0NTE3MDIxAAAAAl8xBAAAAA50b2tlbkFzc2V0TmFtZQgFAAAADSR0MDE2OTQ1MTcwMjEAAAACXzIEAAAADXRva2VuRGVjaW1hbHMIBQAAAA0kdDAxNjk0NTE3MDIxAAAAAl8zBAAAAAt0aWNrZXRQcmljZQkAAGsAAAADBQAAAA90b2tlbnNQZXJUaWNrZXQFAAAACnRva2VuUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAANdG9rZW5EZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAATdG9rZW5zUGVyQWxsb2NhdGlvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBAAAABR0cmFuc2ZlclRva2Vuc0Ftb3VudAkAAGQAAAACCQAAaAAAAAIFAAAADXdvbm5lZFRpY2tldHMFAAAAD3Rva2Vuc1BlclRpY2tldAkAAGgAAAACBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMFAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24EAAAAG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucwkAAGgAAAACCQAAZQAAAAIFAAAAEWJvdWdodEFsbG9jYXRpb25zBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMFAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24EAAAAEnVzZG5Gb3JBbGxvY2F0aW9ucwkAAGsAAAADCQAAawAAAAMFAAAAG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucwUAAAAKdG9rZW5QcmljZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA10b2tlbkRlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOCQAAZAAAAAIAAAAAAAAAAGQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAFnVzZG5Gb3JVbndvbm5lZFRpY2tldHMJAABrAAAAAwkAAGgAAAACCQAAZQAAAAIFAAAADWJvdWdodFRpY2tldHMFAAAADXdvbm5lZFRpY2tldHMFAAAAC3RpY2tldFByaWNlCQAAZAAAAAIAAAAAAAAAAGQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQDAwkAAGYAAAACAAAAAAAAAAAABQAAABJ1c2RuRm9yQWxsb2NhdGlvbnMGCQAAZgAAAAIAAAAAAAAAAAAFAAAAFnVzZG5Gb3JVbndvbm5lZFRpY2tldHMJAAACAAAAAQIAAABSRXJyb3Igd2l0aCBh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", "height": 1813860, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAaUTUxAp6nNLCyN5sLJ8gxi4hE9EwJ68Kmy9edw8q9b Next: 3DWedvTbm36mW5YHnShZYJrsqLZbNHYMZ2uDJp5fBE6L Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
6-let b = "end_height"
6+let b = "admin_pub_1"
77
8-let c = "prizes_prices"
8+let c = "admin_pub_2"
99
10-let d = "prizes_achievements_ids"
10+let d = "admin_pub_3"
1111
12-let e = "prizes_amount"
12+let e = "launchpad_data_transaction_status"
1313
14-let f = "level_prices"
14+let f = "launchpad_next_id"
1515
16-let g = "level_achievements_ids"
16+let g = "launchpad_active_id"
1717
18-let h = "SWOP_id"
18+let h = "init_caller"
1919
20-let i = "total_burned"
20+let i = "_address"
2121
22-let j = "verify_hash"
22+let j = "_init_height"
2323
24-let k = "finalize_height"
24+let k = "_start_height"
2525
26-let l = "_total_burned"
26+let l = "_finalise_height"
2727
28-let m = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
28+let m = "_comission"
2929
30-let n = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
30+let n = "_asset_id"
3131
32-let o = Address(base58'3N3HtdnBkqSSc16DaydiwtrMBUv3DfqKjSW')
32+let o = "_total_token_amount"
3333
34-let p = "admin_pub_1"
34+let p = "_total_usdn_sold"
3535
36-let q = "admin_pub_2"
36+let q = "_tokens_per_ticket"
3737
38-let r = "admin_pub_3"
38+let r = "_price_per_token"
3939
40-func s (t) = {
41- let u = getString(m, t)
42- if ($isInstanceOf(u, "String"))
40+let s = "_swop_per_ticket"
41+
42+let t = "_tickets_swopfi_members"
43+
44+let u = "_tokens_access_list"
45+
46+let v = "_tokens_per_allocation"
47+
48+let w = "_ticket_last_number"
49+
50+let x = "_SWOP_amount"
51+
52+let y = "_ref_id"
53+
54+let z = "_verify_hash"
55+
56+let A = "_duration"
57+
58+let B = "_total_purchased_usdn_in_marketing"
59+
60+let C = "_total_purchased_usdn_in_marketing_finalized"
61+
62+let D = "_transfer_usd"
63+
64+let E = "_bought_tickets"
65+
66+let F = "_tickets_number"
67+
68+let G = "_available_purchase_marketing"
69+
70+let H = "_purchased_usdn_in_marketing"
71+
72+let I = "_bought_allocations"
73+
74+let J = "_claim_status"
75+
76+let K = "_tickets_result"
77+
78+let L = 100
79+
80+let M = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
81+
82+let N = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
83+
84+let O = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
85+
86+let P = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
87+
88+let Q = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
89+
90+let R = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
91+
92+let S = 2
93+
94+let T = valueOrElse(getBoolean(this, a), true)
95+
96+let U = valueOrElse(getIntegerValue(this, g), -1)
97+
98+func V (W) = {
99+ let X = getString(M, W)
100+ if ($isInstanceOf(X, "String"))
43101 then {
44- let v = u
45- fromBase58String(v)
102+ let Y = X
103+ fromBase58String(Y)
46104 }
47105 else {
48- let w = u
106+ let Z = X
49107 throw("Admin public key is empty")
50108 }
51109 }
52110
53111
54-let x = s(p)
112+let aa = V(b)
55113
56-let y = s(q)
114+let ab = V(c)
57115
58-let z = s(r)
116+let ac = V(d)
59117
60-let A = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
61-
62-let B = fromBase58String(getStringValue(n, h))
63-
64-let C = valueOrElse(getBoolean(this, a), true)
65-
66-func D (E,F) = if ((E == ""))
67- then (E + toString(F))
68- else ((E + ",") + toString(F))
69-
70-
71-func G (E,F) = (E :+ parseIntValue(F))
72-
73-
74-func H (E,F) = {
75- let I = E
76- let J = I._1
77- let K = I._2
78- $Tuple2(J, (K :+ (J / F)))
118+func ad (ae) = {
119+ let X = ae
120+ if ($isInstanceOf(X, "ByteVector"))
121+ then {
122+ let af = X
123+ let ag = toBase58String(af)
124+ let ah = valueOrErrorMessage(assetInfo(af), (("Asset " + ag) + " doesn't exist"))
125+ $Tuple3(ag, ah.name, ah.decimals)
126+ }
127+ else if ($isInstanceOf(X, "Unit"))
128+ then {
129+ let ai = X
130+ $Tuple3("WAVES", "WAVES", 8)
131+ }
132+ else throw("Match error")
79133 }
80134
81135
82-func L (M) = {
83- let N = {
84- let O = split(getStringValue(this, f), ",")
85- let P = size(O)
86- let Q = nil
87- func R (S,T) = if ((T >= P))
88- then S
89- else G(S, O[T])
136+func aj () = valueOrElse(getInteger(this, f), 1)
90137
91- func U (S,T) = if ((T >= P))
92- then S
93- else throw("List size exceeds 5")
94138
95- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
96- }
97- if ((N[3] >= M))
98- then 4
99- else if ((N[2] >= M))
100- then 3
101- else if ((N[1] >= M))
102- then 2
103- else if ((N[0] >= M))
104- then 1
105- else 0
139+func ak () = valueOrElse(getInteger(P, ((("rpd_balance_" + toBase58String(Q)) + "_") + toString(this))), 0)
140+
141+
142+@Callable(al)
143+func hashingRandom (am,an) = if (!(T))
144+ then throw("DApp is inactive at this moment")
145+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
146+ then throw("Only admin can call this function")
147+ else [StringEntry((toString(am) + z), an)]
148+
149+
150+
151+@Callable(al)
152+func initCaller (ao) = if (!(T))
153+ then throw("DApp is inactive at this moment")
154+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
155+ then throw("Only admin can call this function")
156+ else [StringEntry(h, ao)]
157+
158+
159+
160+@Callable(al)
161+func init (ap,aq,ar,as,at,au,av,aw,ax) = {
162+ let ay = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
163+ let az = ay._1
164+ let aA = ay._2
165+ if (!(T))
166+ then throw("DApp is inactive at this moment")
167+ else if ((toString(al.caller) != valueOrElse(getString(this, h), "")))
168+ then throw("Only project admin can call init function")
169+ else if ((size(al.payments) != 1))
170+ then throw("One attached payment expected")
171+ else if ((height > aq))
172+ then throw("Start height must be greater than blockchain height")
173+ else {
174+ let aB = ad(aA)
175+ let aC = aB._1
176+ let aD = aB._2
177+ let aE = aB._3
178+ let am = aj()
179+ let aF = toString(am)
180+[IntegerEntry((aC + "_launchpad"), am), IntegerEntry(f, (am + 1)), StringEntry((aF + i), ap), IntegerEntry((aF + j), height), IntegerEntry((aF + k), aq), IntegerEntry((aF + A), L), IntegerEntry((aF + o), az), StringEntry((aF + n), aC), IntegerEntry((aF + m), ar), IntegerEntry((aF + w), 0), IntegerEntry((aF + q), as), IntegerEntry((aF + r), at), IntegerEntry((aF + s), ax), IntegerEntry((aF + t), au), IntegerEntry((aF + u), av), IntegerEntry((aF + v), aw), IntegerEntry(g, am), StringEntry(h, "")]
181+ }
106182 }
107183
108184
109-@Callable(V)
110-func init (W,X,Y,N,Z) = if (!(containsElement([x, y, z], V.callerPublicKey)))
111- then throw("Only admin can call this function")
112- else if (isDefined(getInteger(this, b)))
113- then throw("DApp is already inited")
114- else if ((height > W))
115- then throw("Burning ending must be greater than current height")
116- else if (if ((size(X) != 5))
117- then true
118- else (size(Y) != 5))
119- then throw("Amount of prizes achievemts lists must equal to 5")
120- else if (if ((size(N) != 4))
121- then true
122- else (size(Z) != 4))
123- then throw("Amount of levels lists must equal to 4")
124- else {
125- let aa = {
126- let O = X
127- let P = size(O)
128- let Q = ""
129- func R (S,T) = if ((T >= P))
130- then S
131- else D(S, O[T])
132185
133- func U (S,T) = if ((T >= P))
134- then S
135- else throw("List size exceeds 5")
136-
137- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
138- }
139- let ab = makeString(Y, ",")
140- let ac = {
141- let O = N
142- let P = size(O)
143- let Q = ""
144- func R (S,T) = if ((T >= P))
145- then S
146- else D(S, O[T])
147-
148- func U (S,T) = if ((T >= P))
149- then S
150- else throw("List size exceeds 5")
151-
152- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
153- }
154- let ad = makeString(Z, ",")
155- let ae = "0,0,0,0,0"
156-[IntegerEntry(b, W), StringEntry(c, aa), StringEntry(d, ab), StringEntry(f, ac), StringEntry(g, ad), StringEntry(e, ae)]
157- }
186+@Callable(al)
187+func commitSwopfiSale (am,aG) = {
188+ let aH = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
189+ let az = aH._1
190+ let aA = aH._2
191+ let aI = valueOrElse(getInteger(N, (toString(al.caller) + x)), 0)
192+ let aJ = (aI / getIntegerValue(this, (toString(am) + s)))
193+ let aK = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + E)), 0)
194+ let aL = (aJ - aK)
195+ let aq = value(getInteger(this, (toString(am) + k)))
196+ let aM = value(getInteger(this, (toString(am) + A)))
197+ if (!(T))
198+ then throw("DApp is inactive at this moment")
199+ else if ((U != am))
200+ then throw("There is no active launchpad or this launchpad is ended")
201+ else if ((aq > height))
202+ then throw("Launchpad sale not started yet")
203+ else if ((height > (aq + aM)))
204+ then throw("Launchpad sale ended")
205+ else if (if ((size(al.payments) != 1))
206+ then true
207+ else (aA != Q))
208+ then throw("One attached payment in USDN expected")
209+ else if (if ((0 >= aJ))
210+ then true
211+ else (0 >= aL))
212+ then throw("Not enought SWOP in staking to buy tickets")
213+ else {
214+ let aN = getIntegerValue(this, (toString(am) + r))
215+ let as = getIntegerValue(this, (toString(am) + q))
216+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
217+ let aP = ad(aO)
218+ let aQ = aP._1
219+ let aR = aP._2
220+ let aS = aP._3
221+ let aT = fraction(as, aN, pow(10, 0, aS, 0, 0, DOWN))
222+ let aU = fraction(aT, getIntegerValue(this, (toString(am) + m)), 100)
223+ let aV = (az / (aT + aU))
224+ let aW = min([aV, aL])
225+ let aX = (aW * (aT + aU))
226+ let aY = (az - aX)
227+ if ((aV == 0))
228+ then throw("Not enought USDN to buy tickets")
229+ else if ((aY != 0))
230+ then throw((((("Wrong payment. To buy " + toString(aW)) + "tickets you need to pay ") + toString(aX)) + "USDN"))
231+ else {
232+ let aZ = valueOrElse(getString(this, (((toString(al.caller) + "_") + toString(am)) + F)), "")
233+ let ba = getIntegerValue(this, (toString(am) + w))
234+ let bb = ((toString((ba + 1)) + "-") + toString((ba + aW)))
235+ let bc = (aZ + (if ((aZ != ""))
236+ then ("," + bb)
237+ else ("" + bb)))
238+ let bd = invoke(P, "lockNeutrino", nil, [AttachedPayment(aA, az)])
239+ if ((bd == bd))
240+ then {
241+ let be = [IntegerEntry((((toString(al.caller) + "_") + toString(am)) + E), (aK + aW)), IntegerEntry((toString(am) + w), (ba + aW)), StringEntry((((toString(al.caller) + "_") + toString(am)) + F), bc)]
242+ if (!(isDefined(getString(this, (((toString(al.caller) + "_") + toString(am)) + y)))))
243+ then (be ++ [StringEntry((((toString(al.caller) + "_") + toString(am)) + y), aG)])
244+ else be
245+ }
246+ else throw("Strict value is not equal to itself.")
247+ }
248+ }
249+ }
158250
159251
160252
161-@Callable(V)
162-func add () = {
163- let af = $Tuple2(V.payments[0].amount, V.payments[0].assetId)
164- let ag = af._1
165- let ah = af._2
166- let W = valueOrElse(getInteger(this, b), 0)
167- if (!(C))
253+@Callable(al)
254+func commitAccessListSale (am,aG) = {
255+ let bf = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
256+ let az = bf._1
257+ let aA = bf._2
258+ let bg = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + H)), 0)
259+ let bh = valueOrElse(getInteger(this, (toString(am) + B)), 0)
260+ let bi = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + I)), 0)
261+ let ar = getIntegerValue(this, (toString(am) + m))
262+ let aN = getIntegerValue(this, (toString(am) + r))
263+ let aw = getIntegerValue(this, (toString(am) + v))
264+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
265+ let bj = ad(aO)
266+ let aQ = bj._1
267+ let aR = bj._2
268+ let aS = bj._3
269+ let bk = fraction(fraction(aN, aw, pow(10, 0, aS, 0, 0, DOWN)), (100 + ar), 100)
270+ let aq = value(getInteger(this, (toString(am) + k)))
271+ let aM = value(getInteger(this, (toString(am) + A)))
272+ if (!(T))
168273 then throw("DApp is inactive at this moment")
169- else if (if ((height > W))
170- then true
171- else (W == 0))
172- then throw("Swop burning are ended or not started yet")
173- else if ((ah != B))
174- then throw("You can add only SWOP token")
175- else {
176- let ai = (valueOrElse(getInteger(this, i), 0) + ag)
177- let aj = valueOrElse(getInteger(this, (toString(V.caller) + l)), 0)
178- let ak = {
179- let O = split(getStringValue(this, e), ",")
180- let P = size(O)
181- let Q = nil
182- func R (S,T) = if ((T >= P))
183- then S
184- else G(S, O[T])
185-
186- func U (S,T) = if ((T >= P))
187- then S
188- else throw("List size exceeds 5")
189-
190- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
191- }
192- let al = {
193- let O = split(getStringValue(this, c), ",")
194- let P = size(O)
195- let Q = nil
196- func R (S,T) = if ((T >= P))
197- then S
198- else G(S, O[T])
199-
200- func U (S,T) = if ((T >= P))
201- then S
202- else throw("List size exceeds 5")
203-
204- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
205- }
206- let am = split(getStringValue(this, d), ",")
207- let an = split(getStringValue(this, g), ",")
208- let ao = {
209- let O = al
210- let P = size(O)
211- let Q = $Tuple2(ai, nil)
212- func R (S,T) = if ((T >= P))
213- then S
214- else H(S, O[T])
215-
216- func U (S,T) = if ((T >= P))
217- then S
218- else throw("List size exceeds 5")
219-
220- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
221- }
222- let ap = ao._2
223- let aq = {
224- let O = ap
225- let P = size(O)
226- let Q = ""
227- func R (S,T) = if ((T >= P))
228- then S
229- else D(S, O[T])
230-
231- func U (S,T) = if ((T >= P))
232- then S
233- else throw("List size exceeds 5")
234-
235- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
236- }
237- let ar = if ((ap[0] != ak[0]))
238- then {
239- let as = (ap[0] - ak[0])
240- invoke(o, "add", [am[0], as], nil)
241- }
242- else 0
243- if ((ar == ar))
244- then {
245- let at = if ((ap[1] != ak[1]))
246- then {
247- let as = (ap[1] - ak[1])
248- invoke(o, "add", [am[1], as], nil)
249- }
250- else 0
251- if ((at == at))
252- then {
253- let au = if ((ap[2] != ak[2]))
274+ else if ((U != am))
275+ then throw("There is no active launchpad or this launchpad is ended")
276+ else if ((aq > height))
277+ then throw("Launchpad sale not started yet")
278+ else if ((height > (aq + aM)))
279+ then throw("Launchpad sale ended")
280+ else if (if ((size(al.payments) != 1))
281+ then true
282+ else (aA != Q))
283+ then throw("One attached payment in USDN expected")
284+ else if ((bi >= S))
285+ then throw((("You can buy only " + toString(S)) + "allocations"))
286+ else if (if ((bk != az))
287+ then ((bk * 2) != az)
288+ else false)
289+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bk)) + " USDN per allocation"))
290+ else {
291+ let bl = (az / bk)
292+ let bd = invoke(P, "lockNeutrino", nil, [AttachedPayment(aA, az)])
293+ if ((bd == bd))
254294 then {
255- let as = (ap[2] - ak[2])
256- invoke(o, "add", [am[2], as], nil)
257- }
258- else 0
259- if ((au == au))
260- then {
261- let av = if ((ap[3] != ak[3]))
262- then {
263- let as = (ap[3] - ak[3])
264- invoke(o, "add", [am[3], as], nil)
265- }
266- else 0
267- if ((av == av))
268- then {
269- let aw = if ((ap[4] != ak[4]))
270- then {
271- let as = (ap[4] - ak[4])
272- invoke(o, "add", [am[4], as], nil)
273- }
274- else 0
275- if ((aw == aw))
276- then {
277- let ax = [IntegerEntry(i, ai), IntegerEntry((toString(V.caller) + l), (aj + ag)), StringEntry(e, aq)]
278- let ay = L(aj)
279- let az = L(ai)
280- let aA = (az - ay)
281- if ((aA > 0))
282- then {
283- let aB = if ((aA == 1))
284- then invoke(o, "add", [an[(az - 1)], 1], nil)
285- else 0
286- if ((aB == aB))
287- then {
288- let aC = if ((aA >= 2))
289- then invoke(o, "add", [an[(az - 1)], 1], nil)
290- else 0
291- if ((aC == aC))
292- then {
293- let aD = if ((aA >= 3))
294- then invoke(o, "add", [an[(az - 1)], 1], nil)
295- else 0
296- if ((aD == aD))
297- then {
298- let aE = if ((aA == 4))
299- then invoke(o, "add", [an[(az - 1)], 1], nil)
300- else 0
301- if ((aE == aE))
302- then ax
303- else throw("Strict value is not equal to itself.")
304- }
305- else throw("Strict value is not equal to itself.")
306- }
307- else throw("Strict value is not equal to itself.")
308- }
309- else throw("Strict value is not equal to itself.")
310- }
311- else ax
312- }
313- else throw("Strict value is not equal to itself.")
314- }
315- else throw("Strict value is not equal to itself.")
295+ let be = [IntegerEntry((((toString(al.caller) + "_") + toString(am)) + I), (bi + bl)), IntegerEntry((((toString(al.caller) + "_") + toString(am)) + H), (bg + az)), IntegerEntry((toString(am) + B), (bh + az))]
296+ if (!(isDefined(getString(this, (((toString(al.caller) + "_") + toString(am)) + y)))))
297+ then (be ++ [StringEntry((((toString(al.caller) + "_") + toString(am)) + y), aG)])
298+ else be
316299 }
317300 else throw("Strict value is not equal to itself.")
318301 }
302+ }
303+
304+
305+
306+@Callable(al)
307+func finalise (am,bm,bn) = {
308+ let bo = getStringValue(this, (toString(am) + z))
309+ let bp = toBase58String(sha256((toBytes(bm) + toBytes(bn))))
310+ if (!(T))
311+ then throw("DApp is inactive at this moment")
312+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
313+ then throw("Only admin can call this function")
314+ else if ((bp != bo))
315+ then throw("vrf Height hash not matching")
316+ else {
317+ let ap = addressFromStringValue(getStringValue(this, (toString(am) + i)))
318+ let ar = getIntegerValue(this, (toString(am) + m))
319+ let bq = valueOrElse(getInteger(this, (toString(am) + D)), 0)
320+ let br = getIntegerValue(this, (toString(am) + p))
321+ let bs = fraction(br, ar, 100)
322+ let bt = getIntegerValue(this, (toString(am) + C))
323+ let bu = fraction(bt, ar, 100)
324+ let bv = (((br + bt) + bs) + bu)
325+ if ((bq > (br + bt)))
326+ then throw("Can't transfer negative value to project")
327+ else {
328+ let bd = invoke(P, "unlockNeutrino", [bv, toBase58String(Q)], nil)
329+ if ((bd == bd))
330+ then [IntegerEntry((toString(am) + l), height), ScriptTransfer(ap, ((br + bt) - bq), Q), ScriptTransfer(O, (bs + bu), Q)]
319331 else throw("Strict value is not equal to itself.")
320332 }
321- else throw("Strict value is not equal to itself.")
322333 }
323334 }
324335
325336
326337
327-@Callable(V)
328-func hashingRandom (aF) = if (!(C))
329- then throw("DApp is inactive at this moment")
330- else if (!(containsElement([x, y, z], V.callerPublicKey)))
331- then throw("Only admin can call this function")
332- else [StringEntry(j, aF)]
333-
334-
335-
336-@Callable(V)
337-func finalize (aG,aH) = {
338- let aI = getStringValue(this, j)
339- let aJ = toBase58String(sha256((toBytes(aG) + toBytes(aH))))
340- if (!(C))
338+@Callable(al)
339+func claim (am) = {
340+ let bw = valueOrElse(getBoolean(this, (((toString(al.caller) + "_") + toString(am)) + J)), false)
341+ let bx = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + E)), 0)
342+ let bi = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + I)), 0)
343+ if (!(T))
341344 then throw("DApp is inactive at this moment")
342- else if (!(containsElement([x, y, z], V.callerPublicKey)))
343- then throw("Only admin can call this function")
344- else if ((aJ != aI))
345- then throw("vrf Height hash not matching")
346- else {
347- let aK = getIntegerValue(this, i)
348-[Burn(B, aK), IntegerEntry(k, height)]
349- }
345+ else if (!(isDefined(getInteger(this, (toString(am) + l)))))
346+ then throw("You can't claim because results are not finalized")
347+ else if (bw)
348+ then throw("You are already claimed")
349+ else if (if ((bx == 0))
350+ then (bi == 0)
351+ else false)
352+ then throw("You can't claim because you don't buy anything")
353+ else {
354+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
355+ let by = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + K)), 0)
356+ let bz = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + G)), 0)
357+ let ar = getIntegerValue(this, (toString(am) + m))
358+ let bA = min([bi, bz])
359+ let aN = getIntegerValue(this, (toString(am) + r))
360+ let as = getIntegerValue(this, (toString(am) + q))
361+ let bB = ad(aO)
362+ let aQ = bB._1
363+ let aR = bB._2
364+ let aS = bB._3
365+ let aT = fraction(as, aN, pow(10, 0, aS, 0, 0, DOWN))
366+ let aw = getIntegerValue(this, (toString(am) + v))
367+ let bC = ((by * as) + (bA * aw))
368+ let bD = ((bi - bA) * aw)
369+ let bE = fraction(fraction(bD, aN, pow(10, 0, aS, 0, 0, DOWN)), (100 + ar), 100)
370+ let bF = fraction(((bx - by) * aT), (100 + ar), 100)
371+ if (if ((0 > bE))
372+ then true
373+ else (0 > bF))
374+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
375+ else {
376+ let bG = (bE + bF)
377+ let bH = if ((bG > 0))
378+ then [ScriptTransfer(al.caller, bG, Q)]
379+ else nil
380+ let bI = if ((bC > 0))
381+ then [ScriptTransfer(al.caller, bC, aO)]
382+ else nil
383+ let bd = if ((bG > 0))
384+ then invoke(P, "unlockNeutrino", [bG, toBase58String(Q)], nil)
385+ else 0
386+ if ((bd == bd))
387+ then (([BooleanEntry((((toString(al.caller) + "_") + toString(am)) + J), true)] ++ bI) ++ bH)
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ }
350391 }
351392
352393
353394
354-@Callable(V)
355-func shutdown () = if (!(C))
395+@Callable(al)
396+func transferUsd (am,bJ) = if (!(T))
397+ then throw("DApp is inactive")
398+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
399+ then throw("Only admin can call this function")
400+ else {
401+ let ap = addressFromStringValue(getStringValue(this, (toString(am) + i)))
402+[IntegerEntry((toString(am) + D), bJ), ScriptTransfer(ap, bJ, Q)]
403+ }
404+
405+
406+
407+@Callable(al)
408+func shutdown () = if (!(T))
356409 then throw("DApp already inactive")
357- else if (!(containsElement([x, y, z], V.callerPublicKey)))
410+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
358411 then throw("Only admin can call this function")
359412 else [BooleanEntry(a, false)]
360413
361414
362415
363-@Callable(V)
364-func activate () = if (C)
416+@Callable(al)
417+func activate () = if (T)
365418 then throw("DApp already active")
366- else if (!(containsElement([x, y, z], V.callerPublicKey)))
419+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
367420 then throw("Only admin can call this function")
368421 else [BooleanEntry(a, true)]
369422
370423
371-@Verifier(aL)
372-func aM () = {
373- let aN = {
374- let aO = if (sigVerify(aL.bodyBytes, aL.proofs[0], x))
424+@Verifier(bK)
425+func bL () = {
426+ let bM = {
427+ let bN = if (sigVerify(bK.bodyBytes, bK.proofs[0], aa))
375428 then 1
376429 else 0
377- let aP = if (sigVerify(aL.bodyBytes, aL.proofs[1], y))
430+ let bO = if (sigVerify(bK.bodyBytes, bK.proofs[1], ab))
378431 then 1
379432 else 0
380- let aQ = if (sigVerify(aL.bodyBytes, aL.proofs[2], z))
433+ let bP = if (sigVerify(bK.bodyBytes, bK.proofs[2], ac))
381434 then 1
382435 else 0
383- (((aO + aP) + aQ) >= 2)
436+ (((bN + bO) + bP) >= 2)
384437 }
385- let aR = if (if (if (sigVerify(aL.bodyBytes, aL.proofs[0], x))
438+ let bQ = if (if (if (sigVerify(bK.bodyBytes, bK.proofs[0], aa))
386439 then true
387- else sigVerify(aL.bodyBytes, aL.proofs[0], y))
440+ else sigVerify(bK.bodyBytes, bK.proofs[0], ab))
388441 then true
389- else sigVerify(aL.bodyBytes, aL.proofs[0], z))
442+ else sigVerify(bK.bodyBytes, bK.proofs[0], ac))
390443 then true
391- else sigVerify(aL.bodyBytes, aL.proofs[0], A)
392- let u = aL
393- aN
444+ else sigVerify(bK.bodyBytes, bK.proofs[0], R)
445+ let X = bK
446+ if ($isInstanceOf(X, "DataTransaction"))
447+ then {
448+ let bR = X
449+ if (valueOrElse(getBoolean(M, e), false))
450+ then bQ
451+ else false
452+ }
453+ else bM
394454 }
395455
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
6-let b = "end_height"
6+let b = "admin_pub_1"
77
8-let c = "prizes_prices"
8+let c = "admin_pub_2"
99
10-let d = "prizes_achievements_ids"
10+let d = "admin_pub_3"
1111
12-let e = "prizes_amount"
12+let e = "launchpad_data_transaction_status"
1313
14-let f = "level_prices"
14+let f = "launchpad_next_id"
1515
16-let g = "level_achievements_ids"
16+let g = "launchpad_active_id"
1717
18-let h = "SWOP_id"
18+let h = "init_caller"
1919
20-let i = "total_burned"
20+let i = "_address"
2121
22-let j = "verify_hash"
22+let j = "_init_height"
2323
24-let k = "finalize_height"
24+let k = "_start_height"
2525
26-let l = "_total_burned"
26+let l = "_finalise_height"
2727
28-let m = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
28+let m = "_comission"
2929
30-let n = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
30+let n = "_asset_id"
3131
32-let o = Address(base58'3N3HtdnBkqSSc16DaydiwtrMBUv3DfqKjSW')
32+let o = "_total_token_amount"
3333
34-let p = "admin_pub_1"
34+let p = "_total_usdn_sold"
3535
36-let q = "admin_pub_2"
36+let q = "_tokens_per_ticket"
3737
38-let r = "admin_pub_3"
38+let r = "_price_per_token"
3939
40-func s (t) = {
41- let u = getString(m, t)
42- if ($isInstanceOf(u, "String"))
40+let s = "_swop_per_ticket"
41+
42+let t = "_tickets_swopfi_members"
43+
44+let u = "_tokens_access_list"
45+
46+let v = "_tokens_per_allocation"
47+
48+let w = "_ticket_last_number"
49+
50+let x = "_SWOP_amount"
51+
52+let y = "_ref_id"
53+
54+let z = "_verify_hash"
55+
56+let A = "_duration"
57+
58+let B = "_total_purchased_usdn_in_marketing"
59+
60+let C = "_total_purchased_usdn_in_marketing_finalized"
61+
62+let D = "_transfer_usd"
63+
64+let E = "_bought_tickets"
65+
66+let F = "_tickets_number"
67+
68+let G = "_available_purchase_marketing"
69+
70+let H = "_purchased_usdn_in_marketing"
71+
72+let I = "_bought_allocations"
73+
74+let J = "_claim_status"
75+
76+let K = "_tickets_result"
77+
78+let L = 100
79+
80+let M = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
81+
82+let N = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
83+
84+let O = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
85+
86+let P = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
87+
88+let Q = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
89+
90+let R = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
91+
92+let S = 2
93+
94+let T = valueOrElse(getBoolean(this, a), true)
95+
96+let U = valueOrElse(getIntegerValue(this, g), -1)
97+
98+func V (W) = {
99+ let X = getString(M, W)
100+ if ($isInstanceOf(X, "String"))
43101 then {
44- let v = u
45- fromBase58String(v)
102+ let Y = X
103+ fromBase58String(Y)
46104 }
47105 else {
48- let w = u
106+ let Z = X
49107 throw("Admin public key is empty")
50108 }
51109 }
52110
53111
54-let x = s(p)
112+let aa = V(b)
55113
56-let y = s(q)
114+let ab = V(c)
57115
58-let z = s(r)
116+let ac = V(d)
59117
60-let A = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
61-
62-let B = fromBase58String(getStringValue(n, h))
63-
64-let C = valueOrElse(getBoolean(this, a), true)
65-
66-func D (E,F) = if ((E == ""))
67- then (E + toString(F))
68- else ((E + ",") + toString(F))
69-
70-
71-func G (E,F) = (E :+ parseIntValue(F))
72-
73-
74-func H (E,F) = {
75- let I = E
76- let J = I._1
77- let K = I._2
78- $Tuple2(J, (K :+ (J / F)))
118+func ad (ae) = {
119+ let X = ae
120+ if ($isInstanceOf(X, "ByteVector"))
121+ then {
122+ let af = X
123+ let ag = toBase58String(af)
124+ let ah = valueOrErrorMessage(assetInfo(af), (("Asset " + ag) + " doesn't exist"))
125+ $Tuple3(ag, ah.name, ah.decimals)
126+ }
127+ else if ($isInstanceOf(X, "Unit"))
128+ then {
129+ let ai = X
130+ $Tuple3("WAVES", "WAVES", 8)
131+ }
132+ else throw("Match error")
79133 }
80134
81135
82-func L (M) = {
83- let N = {
84- let O = split(getStringValue(this, f), ",")
85- let P = size(O)
86- let Q = nil
87- func R (S,T) = if ((T >= P))
88- then S
89- else G(S, O[T])
136+func aj () = valueOrElse(getInteger(this, f), 1)
90137
91- func U (S,T) = if ((T >= P))
92- then S
93- else throw("List size exceeds 5")
94138
95- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
96- }
97- if ((N[3] >= M))
98- then 4
99- else if ((N[2] >= M))
100- then 3
101- else if ((N[1] >= M))
102- then 2
103- else if ((N[0] >= M))
104- then 1
105- else 0
139+func ak () = valueOrElse(getInteger(P, ((("rpd_balance_" + toBase58String(Q)) + "_") + toString(this))), 0)
140+
141+
142+@Callable(al)
143+func hashingRandom (am,an) = if (!(T))
144+ then throw("DApp is inactive at this moment")
145+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
146+ then throw("Only admin can call this function")
147+ else [StringEntry((toString(am) + z), an)]
148+
149+
150+
151+@Callable(al)
152+func initCaller (ao) = if (!(T))
153+ then throw("DApp is inactive at this moment")
154+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
155+ then throw("Only admin can call this function")
156+ else [StringEntry(h, ao)]
157+
158+
159+
160+@Callable(al)
161+func init (ap,aq,ar,as,at,au,av,aw,ax) = {
162+ let ay = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
163+ let az = ay._1
164+ let aA = ay._2
165+ if (!(T))
166+ then throw("DApp is inactive at this moment")
167+ else if ((toString(al.caller) != valueOrElse(getString(this, h), "")))
168+ then throw("Only project admin can call init function")
169+ else if ((size(al.payments) != 1))
170+ then throw("One attached payment expected")
171+ else if ((height > aq))
172+ then throw("Start height must be greater than blockchain height")
173+ else {
174+ let aB = ad(aA)
175+ let aC = aB._1
176+ let aD = aB._2
177+ let aE = aB._3
178+ let am = aj()
179+ let aF = toString(am)
180+[IntegerEntry((aC + "_launchpad"), am), IntegerEntry(f, (am + 1)), StringEntry((aF + i), ap), IntegerEntry((aF + j), height), IntegerEntry((aF + k), aq), IntegerEntry((aF + A), L), IntegerEntry((aF + o), az), StringEntry((aF + n), aC), IntegerEntry((aF + m), ar), IntegerEntry((aF + w), 0), IntegerEntry((aF + q), as), IntegerEntry((aF + r), at), IntegerEntry((aF + s), ax), IntegerEntry((aF + t), au), IntegerEntry((aF + u), av), IntegerEntry((aF + v), aw), IntegerEntry(g, am), StringEntry(h, "")]
181+ }
106182 }
107183
108184
109-@Callable(V)
110-func init (W,X,Y,N,Z) = if (!(containsElement([x, y, z], V.callerPublicKey)))
111- then throw("Only admin can call this function")
112- else if (isDefined(getInteger(this, b)))
113- then throw("DApp is already inited")
114- else if ((height > W))
115- then throw("Burning ending must be greater than current height")
116- else if (if ((size(X) != 5))
117- then true
118- else (size(Y) != 5))
119- then throw("Amount of prizes achievemts lists must equal to 5")
120- else if (if ((size(N) != 4))
121- then true
122- else (size(Z) != 4))
123- then throw("Amount of levels lists must equal to 4")
124- else {
125- let aa = {
126- let O = X
127- let P = size(O)
128- let Q = ""
129- func R (S,T) = if ((T >= P))
130- then S
131- else D(S, O[T])
132185
133- func U (S,T) = if ((T >= P))
134- then S
135- else throw("List size exceeds 5")
136-
137- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
138- }
139- let ab = makeString(Y, ",")
140- let ac = {
141- let O = N
142- let P = size(O)
143- let Q = ""
144- func R (S,T) = if ((T >= P))
145- then S
146- else D(S, O[T])
147-
148- func U (S,T) = if ((T >= P))
149- then S
150- else throw("List size exceeds 5")
151-
152- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
153- }
154- let ad = makeString(Z, ",")
155- let ae = "0,0,0,0,0"
156-[IntegerEntry(b, W), StringEntry(c, aa), StringEntry(d, ab), StringEntry(f, ac), StringEntry(g, ad), StringEntry(e, ae)]
157- }
186+@Callable(al)
187+func commitSwopfiSale (am,aG) = {
188+ let aH = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
189+ let az = aH._1
190+ let aA = aH._2
191+ let aI = valueOrElse(getInteger(N, (toString(al.caller) + x)), 0)
192+ let aJ = (aI / getIntegerValue(this, (toString(am) + s)))
193+ let aK = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + E)), 0)
194+ let aL = (aJ - aK)
195+ let aq = value(getInteger(this, (toString(am) + k)))
196+ let aM = value(getInteger(this, (toString(am) + A)))
197+ if (!(T))
198+ then throw("DApp is inactive at this moment")
199+ else if ((U != am))
200+ then throw("There is no active launchpad or this launchpad is ended")
201+ else if ((aq > height))
202+ then throw("Launchpad sale not started yet")
203+ else if ((height > (aq + aM)))
204+ then throw("Launchpad sale ended")
205+ else if (if ((size(al.payments) != 1))
206+ then true
207+ else (aA != Q))
208+ then throw("One attached payment in USDN expected")
209+ else if (if ((0 >= aJ))
210+ then true
211+ else (0 >= aL))
212+ then throw("Not enought SWOP in staking to buy tickets")
213+ else {
214+ let aN = getIntegerValue(this, (toString(am) + r))
215+ let as = getIntegerValue(this, (toString(am) + q))
216+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
217+ let aP = ad(aO)
218+ let aQ = aP._1
219+ let aR = aP._2
220+ let aS = aP._3
221+ let aT = fraction(as, aN, pow(10, 0, aS, 0, 0, DOWN))
222+ let aU = fraction(aT, getIntegerValue(this, (toString(am) + m)), 100)
223+ let aV = (az / (aT + aU))
224+ let aW = min([aV, aL])
225+ let aX = (aW * (aT + aU))
226+ let aY = (az - aX)
227+ if ((aV == 0))
228+ then throw("Not enought USDN to buy tickets")
229+ else if ((aY != 0))
230+ then throw((((("Wrong payment. To buy " + toString(aW)) + "tickets you need to pay ") + toString(aX)) + "USDN"))
231+ else {
232+ let aZ = valueOrElse(getString(this, (((toString(al.caller) + "_") + toString(am)) + F)), "")
233+ let ba = getIntegerValue(this, (toString(am) + w))
234+ let bb = ((toString((ba + 1)) + "-") + toString((ba + aW)))
235+ let bc = (aZ + (if ((aZ != ""))
236+ then ("," + bb)
237+ else ("" + bb)))
238+ let bd = invoke(P, "lockNeutrino", nil, [AttachedPayment(aA, az)])
239+ if ((bd == bd))
240+ then {
241+ let be = [IntegerEntry((((toString(al.caller) + "_") + toString(am)) + E), (aK + aW)), IntegerEntry((toString(am) + w), (ba + aW)), StringEntry((((toString(al.caller) + "_") + toString(am)) + F), bc)]
242+ if (!(isDefined(getString(this, (((toString(al.caller) + "_") + toString(am)) + y)))))
243+ then (be ++ [StringEntry((((toString(al.caller) + "_") + toString(am)) + y), aG)])
244+ else be
245+ }
246+ else throw("Strict value is not equal to itself.")
247+ }
248+ }
249+ }
158250
159251
160252
161-@Callable(V)
162-func add () = {
163- let af = $Tuple2(V.payments[0].amount, V.payments[0].assetId)
164- let ag = af._1
165- let ah = af._2
166- let W = valueOrElse(getInteger(this, b), 0)
167- if (!(C))
253+@Callable(al)
254+func commitAccessListSale (am,aG) = {
255+ let bf = $Tuple2(al.payments[0].amount, al.payments[0].assetId)
256+ let az = bf._1
257+ let aA = bf._2
258+ let bg = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + H)), 0)
259+ let bh = valueOrElse(getInteger(this, (toString(am) + B)), 0)
260+ let bi = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + I)), 0)
261+ let ar = getIntegerValue(this, (toString(am) + m))
262+ let aN = getIntegerValue(this, (toString(am) + r))
263+ let aw = getIntegerValue(this, (toString(am) + v))
264+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
265+ let bj = ad(aO)
266+ let aQ = bj._1
267+ let aR = bj._2
268+ let aS = bj._3
269+ let bk = fraction(fraction(aN, aw, pow(10, 0, aS, 0, 0, DOWN)), (100 + ar), 100)
270+ let aq = value(getInteger(this, (toString(am) + k)))
271+ let aM = value(getInteger(this, (toString(am) + A)))
272+ if (!(T))
168273 then throw("DApp is inactive at this moment")
169- else if (if ((height > W))
170- then true
171- else (W == 0))
172- then throw("Swop burning are ended or not started yet")
173- else if ((ah != B))
174- then throw("You can add only SWOP token")
175- else {
176- let ai = (valueOrElse(getInteger(this, i), 0) + ag)
177- let aj = valueOrElse(getInteger(this, (toString(V.caller) + l)), 0)
178- let ak = {
179- let O = split(getStringValue(this, e), ",")
180- let P = size(O)
181- let Q = nil
182- func R (S,T) = if ((T >= P))
183- then S
184- else G(S, O[T])
185-
186- func U (S,T) = if ((T >= P))
187- then S
188- else throw("List size exceeds 5")
189-
190- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
191- }
192- let al = {
193- let O = split(getStringValue(this, c), ",")
194- let P = size(O)
195- let Q = nil
196- func R (S,T) = if ((T >= P))
197- then S
198- else G(S, O[T])
199-
200- func U (S,T) = if ((T >= P))
201- then S
202- else throw("List size exceeds 5")
203-
204- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
205- }
206- let am = split(getStringValue(this, d), ",")
207- let an = split(getStringValue(this, g), ",")
208- let ao = {
209- let O = al
210- let P = size(O)
211- let Q = $Tuple2(ai, nil)
212- func R (S,T) = if ((T >= P))
213- then S
214- else H(S, O[T])
215-
216- func U (S,T) = if ((T >= P))
217- then S
218- else throw("List size exceeds 5")
219-
220- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
221- }
222- let ap = ao._2
223- let aq = {
224- let O = ap
225- let P = size(O)
226- let Q = ""
227- func R (S,T) = if ((T >= P))
228- then S
229- else D(S, O[T])
230-
231- func U (S,T) = if ((T >= P))
232- then S
233- else throw("List size exceeds 5")
234-
235- U(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5)
236- }
237- let ar = if ((ap[0] != ak[0]))
238- then {
239- let as = (ap[0] - ak[0])
240- invoke(o, "add", [am[0], as], nil)
241- }
242- else 0
243- if ((ar == ar))
244- then {
245- let at = if ((ap[1] != ak[1]))
246- then {
247- let as = (ap[1] - ak[1])
248- invoke(o, "add", [am[1], as], nil)
249- }
250- else 0
251- if ((at == at))
252- then {
253- let au = if ((ap[2] != ak[2]))
274+ else if ((U != am))
275+ then throw("There is no active launchpad or this launchpad is ended")
276+ else if ((aq > height))
277+ then throw("Launchpad sale not started yet")
278+ else if ((height > (aq + aM)))
279+ then throw("Launchpad sale ended")
280+ else if (if ((size(al.payments) != 1))
281+ then true
282+ else (aA != Q))
283+ then throw("One attached payment in USDN expected")
284+ else if ((bi >= S))
285+ then throw((("You can buy only " + toString(S)) + "allocations"))
286+ else if (if ((bk != az))
287+ then ((bk * 2) != az)
288+ else false)
289+ then throw((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bk)) + " USDN per allocation"))
290+ else {
291+ let bl = (az / bk)
292+ let bd = invoke(P, "lockNeutrino", nil, [AttachedPayment(aA, az)])
293+ if ((bd == bd))
254294 then {
255- let as = (ap[2] - ak[2])
256- invoke(o, "add", [am[2], as], nil)
257- }
258- else 0
259- if ((au == au))
260- then {
261- let av = if ((ap[3] != ak[3]))
262- then {
263- let as = (ap[3] - ak[3])
264- invoke(o, "add", [am[3], as], nil)
265- }
266- else 0
267- if ((av == av))
268- then {
269- let aw = if ((ap[4] != ak[4]))
270- then {
271- let as = (ap[4] - ak[4])
272- invoke(o, "add", [am[4], as], nil)
273- }
274- else 0
275- if ((aw == aw))
276- then {
277- let ax = [IntegerEntry(i, ai), IntegerEntry((toString(V.caller) + l), (aj + ag)), StringEntry(e, aq)]
278- let ay = L(aj)
279- let az = L(ai)
280- let aA = (az - ay)
281- if ((aA > 0))
282- then {
283- let aB = if ((aA == 1))
284- then invoke(o, "add", [an[(az - 1)], 1], nil)
285- else 0
286- if ((aB == aB))
287- then {
288- let aC = if ((aA >= 2))
289- then invoke(o, "add", [an[(az - 1)], 1], nil)
290- else 0
291- if ((aC == aC))
292- then {
293- let aD = if ((aA >= 3))
294- then invoke(o, "add", [an[(az - 1)], 1], nil)
295- else 0
296- if ((aD == aD))
297- then {
298- let aE = if ((aA == 4))
299- then invoke(o, "add", [an[(az - 1)], 1], nil)
300- else 0
301- if ((aE == aE))
302- then ax
303- else throw("Strict value is not equal to itself.")
304- }
305- else throw("Strict value is not equal to itself.")
306- }
307- else throw("Strict value is not equal to itself.")
308- }
309- else throw("Strict value is not equal to itself.")
310- }
311- else ax
312- }
313- else throw("Strict value is not equal to itself.")
314- }
315- else throw("Strict value is not equal to itself.")
295+ let be = [IntegerEntry((((toString(al.caller) + "_") + toString(am)) + I), (bi + bl)), IntegerEntry((((toString(al.caller) + "_") + toString(am)) + H), (bg + az)), IntegerEntry((toString(am) + B), (bh + az))]
296+ if (!(isDefined(getString(this, (((toString(al.caller) + "_") + toString(am)) + y)))))
297+ then (be ++ [StringEntry((((toString(al.caller) + "_") + toString(am)) + y), aG)])
298+ else be
316299 }
317300 else throw("Strict value is not equal to itself.")
318301 }
302+ }
303+
304+
305+
306+@Callable(al)
307+func finalise (am,bm,bn) = {
308+ let bo = getStringValue(this, (toString(am) + z))
309+ let bp = toBase58String(sha256((toBytes(bm) + toBytes(bn))))
310+ if (!(T))
311+ then throw("DApp is inactive at this moment")
312+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
313+ then throw("Only admin can call this function")
314+ else if ((bp != bo))
315+ then throw("vrf Height hash not matching")
316+ else {
317+ let ap = addressFromStringValue(getStringValue(this, (toString(am) + i)))
318+ let ar = getIntegerValue(this, (toString(am) + m))
319+ let bq = valueOrElse(getInteger(this, (toString(am) + D)), 0)
320+ let br = getIntegerValue(this, (toString(am) + p))
321+ let bs = fraction(br, ar, 100)
322+ let bt = getIntegerValue(this, (toString(am) + C))
323+ let bu = fraction(bt, ar, 100)
324+ let bv = (((br + bt) + bs) + bu)
325+ if ((bq > (br + bt)))
326+ then throw("Can't transfer negative value to project")
327+ else {
328+ let bd = invoke(P, "unlockNeutrino", [bv, toBase58String(Q)], nil)
329+ if ((bd == bd))
330+ then [IntegerEntry((toString(am) + l), height), ScriptTransfer(ap, ((br + bt) - bq), Q), ScriptTransfer(O, (bs + bu), Q)]
319331 else throw("Strict value is not equal to itself.")
320332 }
321- else throw("Strict value is not equal to itself.")
322333 }
323334 }
324335
325336
326337
327-@Callable(V)
328-func hashingRandom (aF) = if (!(C))
329- then throw("DApp is inactive at this moment")
330- else if (!(containsElement([x, y, z], V.callerPublicKey)))
331- then throw("Only admin can call this function")
332- else [StringEntry(j, aF)]
333-
334-
335-
336-@Callable(V)
337-func finalize (aG,aH) = {
338- let aI = getStringValue(this, j)
339- let aJ = toBase58String(sha256((toBytes(aG) + toBytes(aH))))
340- if (!(C))
338+@Callable(al)
339+func claim (am) = {
340+ let bw = valueOrElse(getBoolean(this, (((toString(al.caller) + "_") + toString(am)) + J)), false)
341+ let bx = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + E)), 0)
342+ let bi = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + I)), 0)
343+ if (!(T))
341344 then throw("DApp is inactive at this moment")
342- else if (!(containsElement([x, y, z], V.callerPublicKey)))
343- then throw("Only admin can call this function")
344- else if ((aJ != aI))
345- then throw("vrf Height hash not matching")
346- else {
347- let aK = getIntegerValue(this, i)
348-[Burn(B, aK), IntegerEntry(k, height)]
349- }
345+ else if (!(isDefined(getInteger(this, (toString(am) + l)))))
346+ then throw("You can't claim because results are not finalized")
347+ else if (bw)
348+ then throw("You are already claimed")
349+ else if (if ((bx == 0))
350+ then (bi == 0)
351+ else false)
352+ then throw("You can't claim because you don't buy anything")
353+ else {
354+ let aO = fromBase58String(getStringValue(this, (toString(am) + n)))
355+ let by = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + K)), 0)
356+ let bz = valueOrElse(getInteger(this, (((toString(al.caller) + "_") + toString(am)) + G)), 0)
357+ let ar = getIntegerValue(this, (toString(am) + m))
358+ let bA = min([bi, bz])
359+ let aN = getIntegerValue(this, (toString(am) + r))
360+ let as = getIntegerValue(this, (toString(am) + q))
361+ let bB = ad(aO)
362+ let aQ = bB._1
363+ let aR = bB._2
364+ let aS = bB._3
365+ let aT = fraction(as, aN, pow(10, 0, aS, 0, 0, DOWN))
366+ let aw = getIntegerValue(this, (toString(am) + v))
367+ let bC = ((by * as) + (bA * aw))
368+ let bD = ((bi - bA) * aw)
369+ let bE = fraction(fraction(bD, aN, pow(10, 0, aS, 0, 0, DOWN)), (100 + ar), 100)
370+ let bF = fraction(((bx - by) * aT), (100 + ar), 100)
371+ if (if ((0 > bE))
372+ then true
373+ else (0 > bF))
374+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
375+ else {
376+ let bG = (bE + bF)
377+ let bH = if ((bG > 0))
378+ then [ScriptTransfer(al.caller, bG, Q)]
379+ else nil
380+ let bI = if ((bC > 0))
381+ then [ScriptTransfer(al.caller, bC, aO)]
382+ else nil
383+ let bd = if ((bG > 0))
384+ then invoke(P, "unlockNeutrino", [bG, toBase58String(Q)], nil)
385+ else 0
386+ if ((bd == bd))
387+ then (([BooleanEntry((((toString(al.caller) + "_") + toString(am)) + J), true)] ++ bI) ++ bH)
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ }
350391 }
351392
352393
353394
354-@Callable(V)
355-func shutdown () = if (!(C))
395+@Callable(al)
396+func transferUsd (am,bJ) = if (!(T))
397+ then throw("DApp is inactive")
398+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
399+ then throw("Only admin can call this function")
400+ else {
401+ let ap = addressFromStringValue(getStringValue(this, (toString(am) + i)))
402+[IntegerEntry((toString(am) + D), bJ), ScriptTransfer(ap, bJ, Q)]
403+ }
404+
405+
406+
407+@Callable(al)
408+func shutdown () = if (!(T))
356409 then throw("DApp already inactive")
357- else if (!(containsElement([x, y, z], V.callerPublicKey)))
410+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
358411 then throw("Only admin can call this function")
359412 else [BooleanEntry(a, false)]
360413
361414
362415
363-@Callable(V)
364-func activate () = if (C)
416+@Callable(al)
417+func activate () = if (T)
365418 then throw("DApp already active")
366- else if (!(containsElement([x, y, z], V.callerPublicKey)))
419+ else if (!(containsElement([aa, ab, ac], al.callerPublicKey)))
367420 then throw("Only admin can call this function")
368421 else [BooleanEntry(a, true)]
369422
370423
371-@Verifier(aL)
372-func aM () = {
373- let aN = {
374- let aO = if (sigVerify(aL.bodyBytes, aL.proofs[0], x))
424+@Verifier(bK)
425+func bL () = {
426+ let bM = {
427+ let bN = if (sigVerify(bK.bodyBytes, bK.proofs[0], aa))
375428 then 1
376429 else 0
377- let aP = if (sigVerify(aL.bodyBytes, aL.proofs[1], y))
430+ let bO = if (sigVerify(bK.bodyBytes, bK.proofs[1], ab))
378431 then 1
379432 else 0
380- let aQ = if (sigVerify(aL.bodyBytes, aL.proofs[2], z))
433+ let bP = if (sigVerify(bK.bodyBytes, bK.proofs[2], ac))
381434 then 1
382435 else 0
383- (((aO + aP) + aQ) >= 2)
436+ (((bN + bO) + bP) >= 2)
384437 }
385- let aR = if (if (if (sigVerify(aL.bodyBytes, aL.proofs[0], x))
438+ let bQ = if (if (if (sigVerify(bK.bodyBytes, bK.proofs[0], aa))
386439 then true
387- else sigVerify(aL.bodyBytes, aL.proofs[0], y))
440+ else sigVerify(bK.bodyBytes, bK.proofs[0], ab))
388441 then true
389- else sigVerify(aL.bodyBytes, aL.proofs[0], z))
442+ else sigVerify(bK.bodyBytes, bK.proofs[0], ac))
390443 then true
391- else sigVerify(aL.bodyBytes, aL.proofs[0], A)
392- let u = aL
393- aN
444+ else sigVerify(bK.bodyBytes, bK.proofs[0], R)
445+ let X = bK
446+ if ($isInstanceOf(X, "DataTransaction"))
447+ then {
448+ let bR = X
449+ if (valueOrElse(getBoolean(M, e), false))
450+ then bQ
451+ else false
452+ }
453+ else bM
394454 }
395455

github/deemru/w8io/026f985 
72.12 ms