tx · 2Y8UoeoSppMRwT3DVT2aFy2n8MS9Px27UVXifkR4gsYG

3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg:  -0.01400000 Waves

2021.12.22 10:55 [1845199] smart account 3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg > SELF 0.00000000 Waves

{ "type": 13, "id": "2Y8UoeoSppMRwT3DVT2aFy2n8MS9Px27UVXifkR4gsYG", "fee": 1400000, "feeAssetId": null, "timestamp": 1640159792453, "version": 2, "chainId": 84, "sender": "3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg", "senderPublicKey": "CViCXhHrygDDAtVc1uFczxe6ANj9tBz5PGQDS1yWZqgy", "proofs": [ "4YsgmQsHxevEP9yX1A11MUzEwBfnHMDEgj4qxfJoN9FYxKZLZivFNdnPDrLufipG7nfH17JUxwJ81t1JFKcwRE1o", "34UQqZyPRJgxyKLhw3WvUscVeDV6bSeQ81FMAfeATmP9zLHBodxkrJmUi8ePuaTjkxayZon7RAh4U6fk9HsuGsUA" ], "script": "base64:AAIFAAAAAAAAFIIIAhIECgIBCBIDCgEIEhQKEggBAQgBAQEBAQEBARgEAQEEGBIECgIBCBIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIDCgEBEgQKAgEBEgASABoQCgFBEgtrZXlEdXJhdGlvbhohCgFCEhxrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGioKAUMSJWtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmdGaW5hbGl6ZWQaGAoBRBITa2V5VHJhbnNmZXJCdXlBc3NldBoZCgFFEhRrZXlGcmVlelN3b3BEdXJhdGlvbhodCgFGEhhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4aFQoBRxIQa2V5RnJlZXplVG9rZW5JZBobCgFIEhZrZXlGcmVlemVUb2tlbkR1cmF0aW9uGhwKAUkSF2tleUZyZWV6ZVRva2VuUGVyVGlja2V0GhAKAUoSC2tleUJ1eVRva2VuGhMKAUsSDmtleUNsYWltUGFyYW1zGiAKAUwSG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhobCgFNEhZrZXlIaWdoQ29tcGV0aXRpb25TYWxlGhoKAU4SFWtleUhDVGlja2V0TGFzdE51bWJlchodCgFPEhhrZXlIaWdoQ29tcGV0aXRpb25BbW91bnQaIQoBUBIca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQxoZCgFREhRrZXlVc2VyQ2xhaW1lZFRva2VucxocCgFSEhdrZXlVc2VyQ2xhaW1lZEJ1eVRva2VucxofCgFTEhprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudBoTCgFUEg5rZXlVc2VyVGlja2V0cxoVCgFVEhBrZXlVc2VySENUaWNrZXRzGiEKAVYSHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQaIAoBVxIba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zGiUKAVgSIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGh0KAVkSGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucxoXCgFaEhJrZXlVc2VyQ2xhaW1TdGF0dXMaDgoBYRIJa2V5QWN0aXZlGgwKAmFBEgZhY3RpdmUaDgoCYUISCGlzQWN0aXZlGhEKAmFDEgtpc0FkbWluQ2FsbBoHCgJhRBIBaRocCgJhRRIWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZxoOCgJhRhIIYXNzZXRTdHIaEQoCYUcSC2xhdW5jaHBhZElkGgoKAmFIEgRoYXNoGg0KAmFJEgdhZGRyZXNzGhQKAmFKEg5wcm9qZWN0QWRkcmVzcxoRCgJhSxILc3RhcnRIZWlnaHQaDgoCYUwSCGR1cmF0aW9uGg4KAmFNEghidXlUb2tlbhoQCgJhThIKY29tbWlzc2lvbhoVCgJhTxIPdG9rZW5zUGVyVGlja2V0GhMKAmFQEg1wcmljZVBlclRva2VuGhkKAmFREhNzd29wZmlUaWNrZXRzQW1vdW50GhoKAmFSEhRjYW1wYWlnblRva2Vuc0Ftb3VudBoZCgJhUxITdG9rZW5zUGVyQWxsb2NhdGlvbhoTCgJhVBINc3dvcFBlclRpY2tldBoYCgJhVRISc3dvcEZyZWV6ZUR1cmF0aW9uGhEKAmFWEgtjbGFpbVBhcmFtcxoZCgJhVxITSGlnaENvbXBldGl0aW9uU2FsZRoeCgJhWBIYaGlnaENvbXBldGl0aW9uQ29taXNzaW9uGiIKAmFZEhxoaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50GhsKAmFaEhVmcmVlemVBZGRpdGlvbmFsVG9rZW4aIAoCYWESGmtleVVzZXJXaW5uZWRUaWNrZXRzQW1vdW50Gi8KAmFiEilrZXlVc2VyV2lubmVkSGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudBoYCgJhYxISa2V5VXNlckZyZWV6ZVRva2VuGgwKAmFkEgZvcmFjbGUaEAoCYWUSCmdvdmVybmFuY2UaFgoCYWYSEGNvbW1pc3Npb25XYWxsZXQaGAoCYWcSEnN0YWtpbmdVU0ROQWRkcmVzcxoKCgJhaBIEVVNEThoYCgJhaRISYWRtaW5QdWJLZXlTdGFraW5nGhoKAmFqEhRtYXhBbGxvY2F0aW9uc0Ftb3VudBoXCgJhaxIRYWN0aXZlTGF1bmNocGFkSWQaEQoCYWwSC2dldEFkbWluUHViGhEKAmFtEgtrZXlBZG1pblB1YhoNCgJhbhIHJG1hdGNoMBoMCgJhbxIGc3RyaW5nGg0KAmFwEgdub3RoaW5nGhIKAmFxEgxhZG1pblB1YktleTEaEgoCYXISDGFkbWluUHViS2V5MhoSCgJhcxIMYWRtaW5QdWJLZXkzGhIKAmF0EgxnZXRBc3NldEluZm8aDQoCYXUSB2Fzc2V0SWQaCAoCYXYSAmlkGg4KAmF3EghzdHJpbmdJZBoKCgJheBIEaW5mbxoLCgJheRIFd2F2ZXMaGAoCYXoSEmdldExhdW5jaHBhZE5leHRJZBoUCgFiEg9rZXlBZG1pblB1YktleTEaFAoCYkESDnRva2VuQXNzZXROYW1lGhMKAmJCEg10b2tlbkRlY2ltYWxzGhEKAmJDEgt0aWNrZXRQcmljZRoZCgJiRBITY29tbWlzc2lvblBlclRpY2tldBoVCgJiRRIPYnV5VGlja2V0QW1vdW50GhwKAmJGEhZhbGxvd2VkQnV5VGlja2V0QW1vdW50GiIKAmJHEhxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uGgwKAmJIEgZjaGFuZ2UaGgoCYkkSFGZyZWV6ZVRva2VuUGVyVGlja2V0GhMKAmJKEg0kdDAxMjUxMDEyNTk3GhUKAmJLEg9wbXRBbW91bnRGcmVlemUaFgoCYkwSEHBtdEFzc2V0SWRGcmVlemUaEwoCYk0SDSR0MDEyNjE0MTI3MDUaGQoCYk4SE3BtdEZyZWV6ZVN0ckFzc2V0SWQaGAoCYk8SEnBtdEZyZWV6ZUFzc2V0TmFtZRoXCgJiUBIRcG10RnJlZXplRGVjaW1hbHMaFgoCYlESEG5lZWRGcmVlemVUb2tlbnMaHgoCYlISGHVzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxocCgJiUxIWbGFzdEJvdWdodFRpY2tldE51bWJlchoRCgJiVBILYm91Z2h0UmFuZ2UaIQoCYlUSG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxoJCgJiVhIDaW52Gg8KAmJXEgliYXNlRW50cnkaEwoCYlgSDSR0MDE0Nzc2MTQ4NTEaEwoCYlkSDSR0MDE0ODU2MTUwMDYaGQoCYloSE3VzZXJVc2RuSW5NYXJrZXRpbmcaEgoCYmESDGZyZWV6ZVBhcmFtcxoUCgJiYhIObGF1bmNocGFkSWRTdHIaEQoCYmMSCyR0MDYzOTc2NDcyGg8KAmJkEglwbXRBbW91bnQaEAoCYmUSCnBtdEFzc2V0SWQaEQoCYmYSCyR0MDY0ODE2NTU0GhMKAmJnEg1wbXRTdHJBc3NldElkGhIKAmJoEgxwbXRBc3NldE5hbWUaEQoCYmkSC3BtdERlY2ltYWxzGhsKAmJqEhVmcmVlemVBZGRpdGlvbmFsRW50cnkaCwoCYmsSBXJlZklkGhEKAmJsEgskdDA5MTYwOTIzNRoRCgJibRILJHQwOTI0MDkzOTAaEAoCYm4SCmJ1eUFzc2V0SWQaEwoCYm8SDWJ1eUFzc2V0U3RySWQaEgoCYnASDGJ1eUFzc2V0TmFtZRoWCgJicRIQYnV5QXNzZXREZWNpbWFscxoRCgJichILc3Rha2VkU3dvcHMaHQoCYnMSF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsGhkKAmJ0EhNib3VnaHRUaWNrZXRzQW1vdW50GhoKAmJ1EhRhbGxvd2VkVGlja2V0c0Ftb3VudBoTCgJidhINZnJlZXplVG9rZW5JZBoQCgJidxIKdG9rZW5QcmljZRoTCgJieBINJHQwMTEyMDIxMTM0NhoNCgJieRIHdG9rZW5JZBoVCgJiehIPdG9rZW5TdHJBc3NldElkGhQKAWMSD2tleUFkbWluUHViS2V5MhoVCgJjQRIPYm91Z2h0SENUaWNrZXRzGhUKAmNCEg91c2VyQ2xhaW1TdGF0dXMaFAoCY0MSDmZpbmFsaXplSGVpZ2h0GhMKAmNEEg0kdDAyNTQwNzI1NTU3GhMKAmNFEg13b25uZWRUaWNrZXRzGhUKAmNGEg93b25uZWRIQ1RpY2tldHMaGgoCY0cSFGF3YWlsYWJsZUFsbG9jYXRpb25zGhgKAmNIEhJhbGxvd2VkQWxsb2NhdGlvbnMaEwoCY0kSDSR0MDI2NDYzMjY2MDcaGgoCY0oSFHRyYW5zZmVyVG9rZW5zQW1vdW50GiEKAmNLEhtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMaHAoCY0wSFmJ1eUFzc2V0Rm9yQWxsb2NhdGlvbnMaIAoCY00SGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzGiIKAmNOEhxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzGhUKAmNPEg9jbGFpbWVkQnV5VG9rZW4aHAoCY1ASFnJldHVybmVkQnV5QXNzZXRBbW91bnQaFgoCY1ESEHRyYW5zZmVyQnV5QXNzZXQaEwoCY1ISDWNsYWltZWRQYXJhbXMaFAoCY1MSDnRyYW5zZmVyVG9rZW5zGhMKAmNUEg1jbGFpbWVkVG9rZW5zGhIKAmNVEgx1bmxvY2tQZXJpb2QaEQoCY1YSC2Jsb2NrSGVpZ2h0GhIKAmNXEgx1bmxvY2tIZWlnaHQaGQoCY1gSE2FsbG93ZWRUb2tlbnNBbW91bnQaFgoCY1kSEGNsYWltU3RhdHVzRW50cnkaFwoCY1oSEXVzZXJUb2tlbnNGcmVlemVkGhUKAmNhEg91c2RuSW5NYXJrZXRpbmcaFwoCY2ISEWJvdWdodEFsbG9jYXRpb25zGhMKAmNjEg0kdDAxNTY3NTE1ODE5GiIKAmNkEhxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uGhoKAmNlEhRidXlBbGxvY2F0aW9uc0Ftb3VudBoTCgJjZhINJHQwMTgwNzcxODE1MhoTCgJjZxINJHQwMTgxNTcxODMwNxobCgJjaBIVYm91Z2h0SENUaWNrZXRzQW1vdW50GhkKAmNpEhNoaWdoQ29tcGV0aXRpb25TYWxlGhMKAmNqEg0kdDAxOTQ4MDE5NjI0GhsKAmNrEhVidXlQcmljZVdpdGhDb21pc3Npb24aDwoCY2wSCXZyZkhlaWdodBoQCgJjbRIKc2VjcmV0V29yZBoPCgJjbhIJc2F2ZWRIYXNoGg4KAmNvEghjYWxjSGFzaBoTCgJjcBINJHQwMjIyMzcyMjM4NxoSCgJjcRIMY29tbWlzc2lvbkhDGhgKAmNyEhJ0cmFuc2ZlcmVkQnV5QXNzZXQaIQoCY3MSG3N3b3BmaU1lbWJlcnNCdXlBc3NldEFtb3VudBocCgJjdBIWc3dvcGZpSENCdXlBc3NldEFtb3VudBocCgJjdRIWc3dvcGZpTWVtYmVyc0NvbWlzc2lvbhoXCgJjdhIRc3dvcGZpSENDb21pc3Npb24aJAoCY3cSHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZxoYCgJjeBISbWFya2V0aW5nQ29taXNzaW9uGhMKAmN5Eg11bnN0YWtlQW1vdW50GhMKAmN6Eg1ib3VnaHRUaWNrZXRzGhQKAWQSD2tleUFkbWluUHViS2V5MxoZCgJkYRITZnJlZXplVG9rZW5EdXJhdGlvbhoUCgJkYhIOYmxvY2tFbmRIZWlnaHQaDAoCZGMSBmFtb3VudBoTCgJkZBINJHQwMzI3MzQzMjg4NBoICgJkZRICdHgaDAoCZGYSBnZlcmlmeRoZCgJkZxITbXVsdGlTaWduZWRCeUFkbWlucxoYCgJkaBISYWRtaW5QdWJLZXkxU2lnbmVkGhgKAmRpEhJhZG1pblB1YktleTJTaWduZWQaGAoCZGoSEmFkbWluUHViS2V5M1NpZ25lZBoTCgJkaxINc2lnbmVkQnlBZG1pbhoJCgJkbBIDZHR4GiYKAWUSIWtleUxhdW5jaHBhZERhdGFUcmFuc2FjdGlvblN0YXR1cxoXCgFmEhJrZXlMYXVuY2hwYWROZXh0SWQaGQoBZxIUa2V5TGF1bmNocGFkQWN0aXZlSWQaEgoBaBINa2V5SW5pdENhbGxlchoPCgFpEgprZXlBZGRyZXNzGhIKAWoSDWtleUluaXRIZWlnaHQaEwoBaxIOa2V5U3RhcnRIZWlnaHQaFgoBbBIRa2V5RmluYWxpc2VIZWlnaHQaEQoBbRIMa2V5Q29taXNzaW9uGg8KAW4SCmtleUFzc2V0SWQaGAoBbxITa2V5VG90YWxUb2tlbkFtb3VudBofCgFwEhprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZBoXCgFxEhJrZXlUb2tlbnNQZXJUaWNrZXQaFQoBchIQa2V5UHJpY2VQZXJUb2tlbhoVCgFzEhBrZXlTd29wUGVyVGlja2V0GhsKAXQSFmtleVN3b3BmaVRpY2tldHNBbW91bnQaHAoBdRIXa2V5Q2FtcGFpZ25Ub2tlbnNBbW91bnQaGwoBdhIWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbhoYCgF3EhNrZXlUaWNrZXRMYXN0TnVtYmVyGhgKAXgSE2tleUdvdmVybmFuY2VTdGFrZWQaEQoBeRIMa2V5VXNlclJlZklkGhIKAXoSDWtleVZlcmlmeUhhc2gAAABJAAAAAAFhAgAAAAZhY3RpdmUAAAAAAWICAAAAC2FkbWluX3B1Yl8xAAAAAAFjAgAAAAthZG1pbl9wdWJfMgAAAAABZAIAAAALYWRtaW5fcHViXzMAAAAAAWUCAAAAIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwAAAAABZgIAAAARbGF1bmNocGFkX25leHRfaWQAAAAAAWcCAAAAE2xhdW5jaHBhZF9hY3RpdmVfaWQAAAAAAWgCAAAAC2luaXRfY2FsbGVyAAAAAAFpAgAAAAhfYWRkcmVzcwAAAAABagIAAAAMX2luaXRfaGVpZ2h0AAAAAAFrAgAAAA1fc3RhcnRfaGVpZ2h0AAAAAAFsAgAAABBfZmluYWxpc2VfaGVpZ2h0AAAAAAFtAgAAAApfY29taXNzaW9uAAAAAAFuAgAAAAlfYXNzZXRfaWQAAAAAAW8CAAAAE190b3RhbF90b2tlbl9hbW91bnQAAAAAAXACAAAAFV90b3RhbF9idXlfYXNzZXRfc29sZAAAAAABcQIAAAASX3Rva2Vuc19wZXJfdGlja2V0AAAAAAFyAgAAABBfcHJpY2VfcGVyX3Rva2VuAAAAAAFzAgAAABBfc3dvcF9wZXJfdGlja2V0AAAAAAF0AgAAABdfdGlja2V0c19zd29wZmlfbWVtYmVycwAAAAABdQIAAAATX3Rva2Vuc19hY2Nlc3NfbGlzdAAAAAABdgIAAAAWX3Rva2Vuc19wZXJfYWxsb2NhdGlvbgAAAAABdwIAAAATX3RpY2tldF9sYXN0X251bWJlcgAAAAABeAIAAAAMX1NXT1BfYW1vdW50AAAAAAF5AgAAAAdfcmVmX2lkAAAAAAF6AgAAAAxfdmVyaWZ5X2hhc2gAAAAAAUECAAAACV9kdXJhdGlvbgAAAAABQgIAAAAnX3RvdGFsX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nAAAAAAFDAgAAADFfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmdfZmluYWxpemVkAAAAAAFEAgAAABNfdHJhbnNmZXJfYnV5X2Fzc2V0AAAAAAFFAgAAABVfZnJlZXplX3N3b3BfZHVyYXRpb24AAAAAAUYCAAAAGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAAAAABRwIAAAAQX2ZyZWV6ZV90b2tlbl9pZAAAAAABSAIAAAAWX2ZyZWV6ZV90b2tlbl9kdXJhdGlvbgAAAAABSQIAAAAYX2ZyZWV6ZV90b2tlbl9wZXJfdGlja2V0AAAAAAFKAgAAAApfYnV5X3Rva2VuAAAAAAFLAgAAAA1fY2xhaW1fcGFyYW1zAAAAAAFMAgAAABtfaGlnaF9jb21wZXRpdGlvbl9jb21pc3Npb24AAAAAAU0CAAAAFl9oaWdoX2NvbXBldGl0aW9uX3NhbGUAAAAAAU4CAAAAJF9oaWdoX2NvbXBldGl0aW9uX3RpY2tldF9sYXN0X251bWJlcgAAAAABTwIAAAAZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAAAAABUAIAAAAmX3RvdGFsX2J1eV9hc3NldF9zb2xkX2hpZ2hfY29tcGV0aXRpb24AAAAAAVECAAAAD19jbGFpbWVkX3Rva2VucwAAAAABUgIAAAATX2NsYWltZWRfYnV5X3Rva2VucwAAAAABUwIAAAAPX2JvdWdodF90aWNrZXRzAAAAAAFUAgAAAA9fdGlja2V0c19udW1iZXIAAAAAAVUCAAAAIF90aWNrZXRzX251bWJlcl9oaWdoX2NvbXBldGl0aW9uAAAAAAFWAgAAACBfYm91Z2h0X3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAAAAABVwIAAAAdX2F2YWlsYWJsZV9wdXJjaGFzZV9tYXJrZXRpbmcAAAAAAVgCAAAAIV9wdXJjaGFzZWRfYnV5X2Fzc2V0X2luX21hcmtldGluZwAAAAABWQIAAAATX2JvdWdodF9hbGxvY2F0aW9ucwAAAAABWgIAAAANX2NsYWltX3N0YXR1cwAAAAACYWECAAAAD190aWNrZXRzX3Jlc3VsdAAAAAACYWICAAAAIF90aWNrZXRzX3Jlc3VsdF9oaWdoX2NvbXBldGl0aW9uAAAAAAJhYwIAAAAUX2ZyZWV6ZV90b2tlbl9hbW91bnQAAAAAAmFkCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU6UWqHpAvOq7xug7mLpqSXxqYhOHzYrMIAAAAAAJhZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVKr6ad6B9BNShco/LjqIUbMZ6pgcWfINLQAAAAACYWYJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSMKR35sXlSywl+Wp/a1y8GBxSD7AzdEUkAAAAAAmFnCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUuYnNz0dxupdy7LhFDzOwqkmF0Q14MgJtAAAAAAJhaAEAAAAgbySjyqsw3FIpmOgsYVruWn8jTcIt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", "height": 1845199, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6pKcdJdFiJwkFWiJLrW4R2z8BkJUTag7ogm1aFWtXmHS Next: 3cvkTrToEvZvGRr9PsjwQgCDiEBNddD8EnEoPgBoVg4d Diff:
OldNewDifferences
125125
126126 let aj = 2
127127
128-let ak = valueOrElse(getBoolean(this, a), true)
128+let ak = valueOrElse(getIntegerValue(this, g), -1)
129129
130-let al = valueOrElse(getIntegerValue(this, g), -1)
131-
132-func am (an) = {
133- let ao = getString(ad, an)
134- if ($isInstanceOf(ao, "String"))
130+func al (am) = {
131+ let an = getString(ad, am)
132+ if ($isInstanceOf(an, "String"))
135133 then {
136- let ap = ao
137- fromBase58String(ap)
134+ let ao = an
135+ fromBase58String(ao)
138136 }
139137 else {
140- let aq = ao
138+ let ap = an
141139 throw("Admin public key is empty")
142140 }
143141 }
144142
145143
146-let ar = am(b)
144+let aq = al(b)
147145
148-let as = am(c)
146+let ar = al(c)
149147
150-let at = am(d)
148+let as = al(d)
151149
152-func au (av) = {
153- let ao = av
154- if ($isInstanceOf(ao, "ByteVector"))
150+func at (au) = {
151+ let an = au
152+ if ($isInstanceOf(an, "ByteVector"))
155153 then {
156- let aw = ao
157- let ax = toBase58String(aw)
158- let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
159- $Tuple3(ax, ay.name, ay.decimals)
154+ let av = an
155+ let aw = toBase58String(av)
156+ let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157+ $Tuple3(aw, ax.name, ax.decimals)
160158 }
161- else if ($isInstanceOf(ao, "Unit"))
159+ else if ($isInstanceOf(an, "Unit"))
162160 then {
163- let az = ao
161+ let ay = an
164162 $Tuple3("WAVES", "WAVES", 8)
165163 }
166164 else throw("Match error")
167165 }
168166
169167
170-func aA () = valueOrElse(getInteger(this, f), 1)
168+func az () = valueOrElse(getInteger(this, f), 1)
171169
172170
173-func aB () = valueOrElse(getInteger(ag, ((("rpd_balance_" + toBase58String(ah)) + "_") + toString(this))), 0)
171+let aA = valueOrElse(getBoolean(this, a), true)
172+
173+func aB () = if (aA)
174+ then unit
175+ else throw("DApp is inactive at this moment")
174176
175177
176-func aC (aD) = if ((aD == "WAVES"))
178+func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
179+ then unit
180+ else throw("Only admin can call this function")
181+
182+
183+func aE (aF) = if ((aF == "WAVES"))
177184 then $Tuple4(unit, "WAVES", "WAVES", 8)
178185 else {
179- let ax = aD
180- let aw = fromBase58String(aD)
181- let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
182- $Tuple4(aw, ax, ay.name, ay.decimals)
186+ let aw = aF
187+ let av = fromBase58String(aF)
188+ let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189+ $Tuple4(av, aw, ax.name, ax.decimals)
183190 }
184191
185192
186-@Callable(aE)
187-func hashingRandom (aF,aG) = if (!(ak))
188- then throw("DApp is inactive at this moment")
189- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
190- then throw("Only admin can call this function")
191- else [StringEntry((toString(aF) + z), aG)]
193+@Callable(aD)
194+func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
192195
193196
194197
195-@Callable(aE)
196-func claim (aF) = {
197- let aH = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + S)), 0)
198- let aI = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + V)), 0)
199- let aJ = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + Y)), 0)
200- let aK = valueOrElse(getBoolean(this, (((toString(aE.caller) + "_") + toString(aF)) + Z)), false)
201- let aL = valueOrElse(getInteger(this, (toString(aF) + l)), 0)
202- if (!(ak))
203- then throw("DApp is inactive at this moment")
204- else if ((aL == 0))
205- then throw("You can't claim because results are not finalized")
206- else if (aK)
207- then throw("You are already claimed")
208- else if (if (if ((aH == 0))
209- then (aJ == 0)
198+@Callable(aD)
199+func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
200+
201+
202+
203+@Callable(aD)
204+func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
205+ then throw("Only project admin can call init function")
206+ else if ((size(aD.payments) != 1))
207+ then throw("One attached payment expected")
208+ else if ((height > aK))
209+ then throw("Start height must be greater than blockchain height")
210+ else if (if (aZ)
211+ then (size(ba) != 3)
212+ else false)
213+ then throw("Freeze params list must have 3 items")
214+ else {
215+ let aG = az()
216+ let bb = toString(aG)
217+ let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218+ let bd = bc._1
219+ let be = bc._2
220+ let bf = at(be)
221+ let bg = bf._1
222+ let bh = bf._2
223+ let bi = bf._3
224+ let bj = if (aZ)
225+ then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
226+ else nil
227+ ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
228+ })
229+
230+
231+
232+@Callable(aD)
233+func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234+ let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235+ let bd = bl._1
236+ let be = bl._2
237+ let bm = aE(value(getString(this, (toString(aG) + J))))
238+ let bn = bm._1
239+ let bo = bm._2
240+ let bp = bm._3
241+ let bq = bm._4
242+ let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243+ let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244+ let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245+ let bu = (bs - bt)
246+ let aK = value(getInteger(this, (toString(aG) + k)))
247+ let aL = value(getInteger(this, (toString(aG) + A)))
248+ let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249+ if ((ak != aG))
250+ then throw("There is no active launchpad or this launchpad is ended")
251+ else if ((aK > height))
252+ then throw("Launchpad sale not started yet")
253+ else if ((height > (aK + aL)))
254+ then throw("Launchpad sale ended")
255+ else if (if (!(aZ))
256+ then if ((size(aD.payments) != 1))
257+ then true
258+ else (be != bn)
210259 else false)
211- then (aI == 0)
212- else false)
213- then throw("You can't claim because you don't buy anything")
214- else {
215- let aM = aC(value(getString(this, (toString(aF) + J))))
216- let aN = aM._1
217- let aO = aM._2
218- let aP = aM._3
219- let aQ = aM._4
220- let aR = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + aa)), 0)
221- let aS = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + ab)), 0)
222- let aT = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + W)), 0)
223- let aU = getIntegerValue(this, (toString(aF) + m))
224- let aV = min([aJ, aT])
225- let aW = getIntegerValue(this, (toString(aF) + r))
226- let aX = getIntegerValue(this, (toString(aF) + q))
227- let aY = aC(getStringValue(this, (toString(aF) + n)))
228- let aZ = aY._1
229- let ba = aY._2
230- let bb = aY._3
231- let bc = aY._4
232- let bd = fraction(aX, aW, pow(10, 0, bc, 0, 0, DOWN))
233- let be = getIntegerValue(this, (toString(aF) + v))
234- let bf = (((aR * aX) + (aV * be)) + (aS * aX))
235- let bg = ((aJ - aV) * be)
236- let bh = fraction(fraction(bg, aW, pow(10, 0, bc, 0, 0, DOWN)), (100 + aU), 100)
237- let bi = fraction(((aH - aR) * bd), (100 + aU), 100)
238- let bj = fraction(((aI - aS) * bd), (100 + aU), 100)
239- let bk = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + R)), 0)
240- if (if (if ((0 > bh))
260+ then throw((("One attached payment in " + bp) + " expected"))
261+ else if (if (aZ)
262+ then if ((size(aD.payments) != 2))
241263 then true
242- else (0 > bi))
264+ else (be != bn)
265+ else false)
266+ then {
267+ let bv = getStringValue(this, (toString(aG) + G))
268+ throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
269+ }
270+ else if (if ((0 >= bs))
243271 then true
244- else (0 > bj))
245- then throw("Error with allowed allocation param or wonned tickets param please contact support")
272+ else (0 >= bu))
273+ then throw("Not enought SWOP in staking to buy tickets")
246274 else {
247- let bl = ((bi + bj) - bk)
248- let bm = if ((bl > 0))
249- then [ScriptTransfer(aE.caller, bl, aN), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + R), bl)]
250- else nil
251- let bn = if (if ((bl > 0))
252- then (aN == ah)
253- else false)
254- then invoke(ag, "unlockNeutrino", [bl, toBase58String(ah)], nil)
275+ let bw = getIntegerValue(this, (toString(aG) + r))
276+ let aO = getIntegerValue(this, (toString(aG) + q))
277+ let bx = aE(getStringValue(this, (toString(aG) + n)))
278+ let by = bx._1
279+ let bz = bx._2
280+ let bA = bx._3
281+ let bB = bx._4
282+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283+ let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284+ let bE = (bd / (bC + bD))
285+ let bF = min([bE, bu])
286+ let bG = (bF * (bC + bD))
287+ let bH = (bd - bG)
288+ if ((bE == 0))
289+ then throw((("Not enought " + bp) + " to buy tickets"))
290+ else if ((bH != 0))
291+ then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
292+ else {
293+ let bj = if (aZ)
294+ then {
295+ let bv = getStringValue(this, (toString(aG) + G))
296+ let bI = getIntegerValue(this, (toString(aG) + I))
297+ let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298+ let bK = bJ._1
299+ let bL = bJ._2
300+ let bM = at(be)
301+ let bN = bM._1
302+ let bO = bM._2
303+ let bP = bM._3
304+ let bQ = (bI * bE)
305+ if (if ((bN != bv))
306+ then true
307+ else (bQ != bK))
308+ then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309+ else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
310+ }
311+ else nil
312+ let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313+ let bS = getIntegerValue(this, (toString(aG) + w))
314+ let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315+ let bU = (bR + (if ((bR != ""))
316+ then ("," + bT)
317+ else ("" + bT)))
318+ let bV = if ((bn == ah))
319+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
320+ else 0
321+ if ((bV == bV))
322+ then {
323+ let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326+ else bW
327+ }
328+ else throw("Strict value is not equal to itself.")
329+ }
330+ }
331+ })
332+
333+
334+
335+@Callable(aD)
336+func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337+ let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338+ let bd = bX._1
339+ let be = bX._2
340+ let bY = aE(value(getString(this, (toString(aG) + J))))
341+ let bn = bY._1
342+ let bo = bY._2
343+ let bp = bY._3
344+ let bq = bY._4
345+ let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346+ let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347+ let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348+ let aN = getIntegerValue(this, (toString(aG) + m))
349+ let bw = getIntegerValue(this, (toString(aG) + r))
350+ let aS = getIntegerValue(this, (toString(aG) + v))
351+ let cc = aE(getStringValue(this, (toString(aG) + n)))
352+ let by = cc._1
353+ let bz = cc._2
354+ let bA = cc._3
355+ let bB = cc._4
356+ let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357+ let aK = value(getInteger(this, (toString(aG) + k)))
358+ let aL = value(getInteger(this, (toString(aG) + A)))
359+ if ((ak != aG))
360+ then throw("There is no active launchpad or this launchpad is ended")
361+ else if ((aK > height))
362+ then throw("Launchpad sale not started yet")
363+ else if ((height > (aK + aL)))
364+ then throw("Launchpad sale ended")
365+ else if (if ((size(aD.payments) != 1))
366+ then true
367+ else (be != bn))
368+ then throw((("One attached payment in " + bp) + " expected"))
369+ else if ((cb >= aj))
370+ then throw((("You can buy only " + toString(aj)) + "allocations"))
371+ else if (if ((cd != bd))
372+ then ((cd * 2) != bd)
373+ else false)
374+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
375+ else {
376+ let ce = (bd / cd)
377+ let bV = if ((bn == ah))
378+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
255379 else 0
256- if ((bn == bn))
380+ if ((bV == bV))
257381 then {
258- let bo = split(valueOrElse(getString(this, (toString(aF) + K)), ""), ",")
259- if (if ((size(bo) == 0))
260- then true
261- else (bo[0] == "claimAll"))
262- then {
263- let bp = if ((bf > 0))
264- then [ScriptTransfer(aE.caller, bf, aZ)]
265- else nil
266- (([BooleanEntry((((toString(aE.caller) + "_") + toString(aF)) + Z), true), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + Q), bf)] ++ bp) ++ bm)
267- }
268- else if ((bo[0] == "claimPeriod"))
269- then {
270- let bq = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + Q)), 0)
271- let br = value(parseInt(bo[1]))
272- let bs = value(parseInt(bo[2]))
273- let bt = (value(parseInt(bo[3])) + aL)
274- let bu = ((bs + aL) + bt)
275- let bv = (fraction(bf, value(parseInt(bo[1])), 100) + (if ((height > bt))
276- then fraction(bf, (height - bt), bs)
277- else (0 - bq)))
278- let bw = if ((bf >= (bq + bv)))
279- then [BooleanEntry((((toString(aE.caller) + "_") + toString(aF)) + Z), true)]
280- else nil
281- if (if ((bv > 0))
282- then true
283- else (bl > 0))
284- then {
285- let bp = if ((bv > 0))
286- then [IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + Q), (bq + bv)), ScriptTransfer(aE.caller, bv, aZ)]
287- else nil
288- (bm ++ bp)
289- }
290- else throw("Nothing to claim")
291- }
292- else throw("Error whith claim params: unknown function")
382+ let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385+ else bW
293386 }
294387 else throw("Strict value is not equal to itself.")
295388 }
296- }
297- }
389+ })
298390
299391
300392
301-@Callable(aE)
302-func claimFreezeToken (aF) = {
303- let bx = valueOrElse(getBoolean(this, (toString(aF) + F)), false)
304- if (!(ak))
305- then throw("DApp is inactive at this moment")
306- else if (!(isDefined(getInteger(this, (toString(aF) + l)))))
307- then throw("You can't claim because results are not finalized")
308- else if (!(bx))
309- then throw("There are no additional token freezing for this launchpad")
310- else {
311- let aZ = fromBase58String(getStringValue(this, (toString(aF) + G)))
312- let by = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + ac)), 0)
313- let bz = valueOrElse(getInteger(this, (toString(aF) + k)), 0)
314- let bA = valueOrElse(getInteger(this, (toString(aF) + A)), 0)
315- let bB = getIntegerValue(this, (toString(aF) + H))
316- let bC = ((bz + bA) + bB)
317- if ((by == 0))
318- then throw("You are already claimed your tokens or not paid anything")
319- else if ((bC > height))
320- then throw(("Your tokens freezed teel " + toString(bC)))
321- else [ScriptTransfer(aE.caller, by, aZ), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + ac), 0)]
322- }
323- }
393+@Callable(aD)
394+func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395+ let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396+ let bd = cf._1
397+ let be = cf._2
398+ let cg = aE(value(getString(this, (toString(aG) + J))))
399+ let bn = cg._1
400+ let bo = cg._2
401+ let bp = cg._3
402+ let bq = cg._4
403+ let aK = value(getInteger(this, (toString(aG) + k)))
404+ let aL = value(getInteger(this, (toString(aG) + A)))
405+ let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406+ let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407+ if ((ak != aG))
408+ then throw("There is no active launchpad or this launchpad is ended")
409+ else if (!(ci))
410+ then throw("There is no high competition sale for this launchpad")
411+ else if ((aK > height))
412+ then throw("Launchpad sale not started yet")
413+ else if ((height > (aK + aL)))
414+ then throw("Launchpad sale ended")
415+ else if (if ((size(aD.payments) != 1))
416+ then true
417+ else (be != bn))
418+ then throw((("One attached payment in " + bp) + " expected"))
419+ else {
420+ let bw = getIntegerValue(this, (toString(aG) + r))
421+ let aO = getIntegerValue(this, (toString(aG) + q))
422+ let cj = aE(getStringValue(this, (toString(aG) + n)))
423+ let by = cj._1
424+ let bz = cj._2
425+ let bA = cj._3
426+ let bB = cj._4
427+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428+ let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429+ let bE = (bd / (bC + bD))
430+ let ck = (bE * (bC + bD))
431+ let bH = (bd - ck)
432+ if ((bE == 0))
433+ then throw((("Not enought " + bp) + " to buy tickets"))
434+ else if ((bH != 0))
435+ then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
436+ else {
437+ let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438+ let bS = getIntegerValue(this, (toString(aG) + N))
439+ let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440+ let bU = (bR + (if ((bR != ""))
441+ then ("," + bT)
442+ else ("" + bT)))
443+ let bV = if ((bn == ah))
444+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
445+ else 0
446+ if ((bV == bV))
447+ then {
448+ let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451+ else bW
452+ }
453+ else throw("Strict value is not equal to itself.")
454+ }
455+ }
456+ })
324457
325458
326459
327-@Callable(aE)
328-func transferBuyAsset (aF,bD) = if (!(ak))
329- then throw("DApp is inactive")
330- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
331- then throw("Only admin can call this function")
460+@Callable(aD)
461+func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462+ let cn = getStringValue(this, (toString(aG) + z))
463+ let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464+ if ((co != cn))
465+ then throw("vrf Height hash not matching")
332466 else {
333- let bE = addressFromStringValue(getStringValue(this, (toString(aF) + i)))
334- let bF = aC(value(getString(this, (toString(aF) + J))))
335- let aN = bF._1
336- let aO = bF._2
337- let aP = bF._3
338- let aQ = bF._4
339-[IntegerEntry((toString(aF) + D), bD), ScriptTransfer(bE, bD, aN)]
467+ let cp = aE(value(getString(this, (toString(aG) + J))))
468+ let bn = cp._1
469+ let bo = cp._2
470+ let bp = cp._3
471+ let bq = cp._4
472+ let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473+ let aN = getIntegerValue(this, (toString(aG) + m))
474+ let cq = getIntegerValue(this, (toString(aG) + L))
475+ let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476+ let cs = getIntegerValue(this, (toString(aG) + p))
477+ let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478+ let cu = fraction(cs, aN, 100)
479+ let cv = fraction(ct, cq, 100)
480+ let cw = getIntegerValue(this, (toString(aG) + C))
481+ let cx = fraction(cw, aN, 100)
482+ let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483+ if ((cr > (cs + cw)))
484+ then throw("Can't transfer negative value to project")
485+ else {
486+ let bV = if ((bn == ah))
487+ then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
488+ else 0
489+ if ((bV == bV))
490+ then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, ((cs + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
491+ else throw("Strict value is not equal to itself.")
492+ }
340493 }
494+ }))
341495
342496
343497
344-@Callable(aE)
345-func shutdown () = if (!(ak))
346- then throw("DApp already inactive")
347- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
348- then throw("Only admin can call this function")
349- else [BooleanEntry(a, false)]
498+@Callable(aD)
499+func claim (aG) = valueOrElse(aB(), {
500+ let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501+ let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502+ let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503+ let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504+ let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505+ if ((cC == 0))
506+ then throw("You can't claim because results are not finalized")
507+ else if (cB)
508+ then throw("You are already claimed")
509+ else if (if (if ((cz == 0))
510+ then (cb == 0)
511+ else false)
512+ then (cA == 0)
513+ else false)
514+ then throw("You can't claim because you don't buy anything")
515+ else {
516+ let cD = aE(value(getString(this, (toString(aG) + J))))
517+ let bn = cD._1
518+ let bo = cD._2
519+ let bp = cD._3
520+ let bq = cD._4
521+ let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522+ let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523+ let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524+ let aN = getIntegerValue(this, (toString(aG) + m))
525+ let cq = getIntegerValue(this, (toString(aG) + L))
526+ let cH = min([cb, cG])
527+ let bw = getIntegerValue(this, (toString(aG) + r))
528+ let aO = getIntegerValue(this, (toString(aG) + q))
529+ let cI = aE(getStringValue(this, (toString(aG) + n)))
530+ let by = cI._1
531+ let bz = cI._2
532+ let bA = cI._3
533+ let bB = cI._4
534+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535+ let aS = getIntegerValue(this, (toString(aG) + v))
536+ let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537+ let cK = ((cb - cH) * aS)
538+ let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539+ let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540+ let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541+ let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542+ if (if (if ((0 > cL))
543+ then true
544+ else (0 > cM))
545+ then true
546+ else (0 > cN))
547+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
548+ else {
549+ let cP = (((cM + cN) + cL) - cO)
550+ let cQ = if ((cP > 0))
551+ then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
552+ else nil
553+ let bV = if (if ((cP > 0))
554+ then (bn == ah)
555+ else false)
556+ then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
557+ else 0
558+ if ((bV == bV))
559+ then {
560+ let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561+ if (if ((size(cR) == 0))
562+ then true
563+ else (cR[0] == "claimAll"))
564+ then {
565+ let cS = if ((cJ > 0))
566+ then [ScriptTransfer(aD.caller, cJ, by)]
567+ else nil
568+ (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
569+ }
570+ else if ((cR[0] == "claimPeriod"))
571+ then {
572+ let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
573+ let cU = value(parseInt(cR[2]))
574+ let cV = (value(parseInt(cR[3])) + cC)
575+ let cW = ((cU + cC) + cV)
576+ let cX = (fraction(cJ, value(parseInt(cR[1])), 100) + (if ((height > cV))
577+ then fraction(cJ, (height - cV), cU)
578+ else (0 - cT)))
579+ let cY = if ((cJ >= (cT + cX)))
580+ then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
581+ else nil
582+ if (if ((cX > 0))
583+ then true
584+ else (cP > 0))
585+ then {
586+ let cS = if ((cX > 0))
587+ then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
588+ else nil
589+ (cQ ++ cS)
590+ }
591+ else throw("Nothing to claim")
592+ }
593+ else throw("Unknown claim function")
594+ }
595+ else throw("Strict value is not equal to itself.")
596+ }
597+ }
598+ })
350599
351600
352601
353-@Callable(aE)
354-func activate () = if (ak)
355- then throw("DApp already active")
356- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
357- then throw("Only admin can call this function")
358- else [BooleanEntry(a, true)]
602+@Callable(aD)
603+func claimFreezeToken (aG) = valueOrElse(aB(), {
604+ let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
605+ if (!(isDefined(getInteger(this, (toString(aG) + l)))))
606+ then throw("You can't claim because results are not finalized")
607+ else if (!(aZ))
608+ then throw("There are no additional token freezing for this launchpad")
609+ else {
610+ let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
611+ let cZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
612+ let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
613+ let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
614+ let da = getIntegerValue(this, (toString(aG) + H))
615+ let db = ((aK + aL) + da)
616+ if ((cZ == 0))
617+ then throw("You are already claimed your tokens or not paid anything")
618+ else if ((db > height))
619+ then throw(("Your tokens freezed teel " + toString(db)))
620+ else [ScriptTransfer(aD.caller, cZ, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
621+ }
622+ })
359623
360624
361-@Verifier(bG)
362-func bH () = {
363- let bI = {
364- let bJ = if (sigVerify(bG.bodyBytes, bG.proofs[0], ar))
625+
626+@Callable(aD)
627+func transferBuyAsset (aG,dc) = valueOrElse(aB(), valueOrElse(aC(aD), {
628+ let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
629+ let dd = aE(value(getString(this, (toString(aG) + J))))
630+ let bn = dd._1
631+ let bo = dd._2
632+ let bp = dd._3
633+ let bq = dd._4
634+[IntegerEntry((toString(aG) + D), dc), ScriptTransfer(aJ, dc, bn)]
635+ }))
636+
637+
638+
639+@Callable(aD)
640+func shutdown () = valueOrElse(aC(aD), if (!(aA))
641+ then throw("DApp already inactive")
642+ else [BooleanEntry(a, false)])
643+
644+
645+
646+@Callable(aD)
647+func activate () = valueOrElse(aC(aD), if (aA)
648+ then throw("DApp already active")
649+ else [BooleanEntry(a, true)])
650+
651+
652+@Verifier(de)
653+func df () = {
654+ let dg = {
655+ let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
365656 then 1
366657 else 0
367- let bK = if (sigVerify(bG.bodyBytes, bG.proofs[1], as))
658+ let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
368659 then 1
369660 else 0
370- let bL = if (sigVerify(bG.bodyBytes, bG.proofs[2], at))
661+ let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
371662 then 1
372663 else 0
373- (((bJ + bK) + bL) >= 2)
664+ (((dh + di) + dj) >= 2)
374665 }
375- let bM = if (if (if (sigVerify(bG.bodyBytes, bG.proofs[0], ar))
666+ let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
376667 then true
377- else sigVerify(bG.bodyBytes, bG.proofs[0], as))
668+ else sigVerify(de.bodyBytes, de.proofs[0], ar))
378669 then true
379- else sigVerify(bG.bodyBytes, bG.proofs[0], at))
670+ else sigVerify(de.bodyBytes, de.proofs[0], as))
380671 then true
381- else sigVerify(bG.bodyBytes, bG.proofs[0], ai)
382- let ao = bG
383- if ($isInstanceOf(ao, "DataTransaction"))
672+ else sigVerify(de.bodyBytes, de.proofs[0], ai)
673+ let an = de
674+ if ($isInstanceOf(an, "DataTransaction"))
384675 then {
385- let bN = ao
676+ let dl = an
386677 if (valueOrElse(getBoolean(ad, e), false))
387- then bM
678+ then dk
388679 else false
389680 }
390- else bI
681+ else dg
391682 }
392683
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "admin_pub_1"
77
88 let c = "admin_pub_2"
99
1010 let d = "admin_pub_3"
1111
1212 let e = "launchpad_data_transaction_status"
1313
1414 let f = "launchpad_next_id"
1515
1616 let g = "launchpad_active_id"
1717
1818 let h = "init_caller"
1919
2020 let i = "_address"
2121
2222 let j = "_init_height"
2323
2424 let k = "_start_height"
2525
2626 let l = "_finalise_height"
2727
2828 let m = "_comission"
2929
3030 let n = "_asset_id"
3131
3232 let o = "_total_token_amount"
3333
3434 let p = "_total_buy_asset_sold"
3535
3636 let q = "_tokens_per_ticket"
3737
3838 let r = "_price_per_token"
3939
4040 let s = "_swop_per_ticket"
4141
4242 let t = "_tickets_swopfi_members"
4343
4444 let u = "_tokens_access_list"
4545
4646 let v = "_tokens_per_allocation"
4747
4848 let w = "_ticket_last_number"
4949
5050 let x = "_SWOP_amount"
5151
5252 let y = "_ref_id"
5353
5454 let z = "_verify_hash"
5555
5656 let A = "_duration"
5757
5858 let B = "_total_purchased_buy_asset_in_marketing"
5959
6060 let C = "_total_purchased_buy_asset_in_marketing_finalized"
6161
6262 let D = "_transfer_buy_asset"
6363
6464 let E = "_freeze_swop_duration"
6565
6666 let F = "_freeze_additional_token"
6767
6868 let G = "_freeze_token_id"
6969
7070 let H = "_freeze_token_duration"
7171
7272 let I = "_freeze_token_per_ticket"
7373
7474 let J = "_buy_token"
7575
7676 let K = "_claim_params"
7777
7878 let L = "_high_competition_comission"
7979
8080 let M = "_high_competition_sale"
8181
8282 let N = "_high_competition_ticket_last_number"
8383
8484 let O = "_tickets_high_competition"
8585
8686 let P = "_total_buy_asset_sold_high_competition"
8787
8888 let Q = "_claimed_tokens"
8989
9090 let R = "_claimed_buy_tokens"
9191
9292 let S = "_bought_tickets"
9393
9494 let T = "_tickets_number"
9595
9696 let U = "_tickets_number_high_competition"
9797
9898 let V = "_bought_tickets_high_competition"
9999
100100 let W = "_available_purchase_marketing"
101101
102102 let X = "_purchased_buy_asset_in_marketing"
103103
104104 let Y = "_bought_allocations"
105105
106106 let Z = "_claim_status"
107107
108108 let aa = "_tickets_result"
109109
110110 let ab = "_tickets_result_high_competition"
111111
112112 let ac = "_freeze_token_amount"
113113
114114 let ad = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
115115
116116 let ae = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
117117
118118 let af = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
119119
120120 let ag = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
121121
122122 let ah = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
123123
124124 let ai = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
125125
126126 let aj = 2
127127
128-let ak = valueOrElse(getBoolean(this, a), true)
128+let ak = valueOrElse(getIntegerValue(this, g), -1)
129129
130-let al = valueOrElse(getIntegerValue(this, g), -1)
131-
132-func am (an) = {
133- let ao = getString(ad, an)
134- if ($isInstanceOf(ao, "String"))
130+func al (am) = {
131+ let an = getString(ad, am)
132+ if ($isInstanceOf(an, "String"))
135133 then {
136- let ap = ao
137- fromBase58String(ap)
134+ let ao = an
135+ fromBase58String(ao)
138136 }
139137 else {
140- let aq = ao
138+ let ap = an
141139 throw("Admin public key is empty")
142140 }
143141 }
144142
145143
146-let ar = am(b)
144+let aq = al(b)
147145
148-let as = am(c)
146+let ar = al(c)
149147
150-let at = am(d)
148+let as = al(d)
151149
152-func au (av) = {
153- let ao = av
154- if ($isInstanceOf(ao, "ByteVector"))
150+func at (au) = {
151+ let an = au
152+ if ($isInstanceOf(an, "ByteVector"))
155153 then {
156- let aw = ao
157- let ax = toBase58String(aw)
158- let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
159- $Tuple3(ax, ay.name, ay.decimals)
154+ let av = an
155+ let aw = toBase58String(av)
156+ let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157+ $Tuple3(aw, ax.name, ax.decimals)
160158 }
161- else if ($isInstanceOf(ao, "Unit"))
159+ else if ($isInstanceOf(an, "Unit"))
162160 then {
163- let az = ao
161+ let ay = an
164162 $Tuple3("WAVES", "WAVES", 8)
165163 }
166164 else throw("Match error")
167165 }
168166
169167
170-func aA () = valueOrElse(getInteger(this, f), 1)
168+func az () = valueOrElse(getInteger(this, f), 1)
171169
172170
173-func aB () = valueOrElse(getInteger(ag, ((("rpd_balance_" + toBase58String(ah)) + "_") + toString(this))), 0)
171+let aA = valueOrElse(getBoolean(this, a), true)
172+
173+func aB () = if (aA)
174+ then unit
175+ else throw("DApp is inactive at this moment")
174176
175177
176-func aC (aD) = if ((aD == "WAVES"))
178+func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
179+ then unit
180+ else throw("Only admin can call this function")
181+
182+
183+func aE (aF) = if ((aF == "WAVES"))
177184 then $Tuple4(unit, "WAVES", "WAVES", 8)
178185 else {
179- let ax = aD
180- let aw = fromBase58String(aD)
181- let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
182- $Tuple4(aw, ax, ay.name, ay.decimals)
186+ let aw = aF
187+ let av = fromBase58String(aF)
188+ let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189+ $Tuple4(av, aw, ax.name, ax.decimals)
183190 }
184191
185192
186-@Callable(aE)
187-func hashingRandom (aF,aG) = if (!(ak))
188- then throw("DApp is inactive at this moment")
189- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
190- then throw("Only admin can call this function")
191- else [StringEntry((toString(aF) + z), aG)]
193+@Callable(aD)
194+func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
192195
193196
194197
195-@Callable(aE)
196-func claim (aF) = {
197- let aH = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + S)), 0)
198- let aI = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + V)), 0)
199- let aJ = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + Y)), 0)
200- let aK = valueOrElse(getBoolean(this, (((toString(aE.caller) + "_") + toString(aF)) + Z)), false)
201- let aL = valueOrElse(getInteger(this, (toString(aF) + l)), 0)
202- if (!(ak))
203- then throw("DApp is inactive at this moment")
204- else if ((aL == 0))
205- then throw("You can't claim because results are not finalized")
206- else if (aK)
207- then throw("You are already claimed")
208- else if (if (if ((aH == 0))
209- then (aJ == 0)
198+@Callable(aD)
199+func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
200+
201+
202+
203+@Callable(aD)
204+func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
205+ then throw("Only project admin can call init function")
206+ else if ((size(aD.payments) != 1))
207+ then throw("One attached payment expected")
208+ else if ((height > aK))
209+ then throw("Start height must be greater than blockchain height")
210+ else if (if (aZ)
211+ then (size(ba) != 3)
212+ else false)
213+ then throw("Freeze params list must have 3 items")
214+ else {
215+ let aG = az()
216+ let bb = toString(aG)
217+ let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218+ let bd = bc._1
219+ let be = bc._2
220+ let bf = at(be)
221+ let bg = bf._1
222+ let bh = bf._2
223+ let bi = bf._3
224+ let bj = if (aZ)
225+ then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
226+ else nil
227+ ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
228+ })
229+
230+
231+
232+@Callable(aD)
233+func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234+ let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235+ let bd = bl._1
236+ let be = bl._2
237+ let bm = aE(value(getString(this, (toString(aG) + J))))
238+ let bn = bm._1
239+ let bo = bm._2
240+ let bp = bm._3
241+ let bq = bm._4
242+ let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243+ let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244+ let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245+ let bu = (bs - bt)
246+ let aK = value(getInteger(this, (toString(aG) + k)))
247+ let aL = value(getInteger(this, (toString(aG) + A)))
248+ let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249+ if ((ak != aG))
250+ then throw("There is no active launchpad or this launchpad is ended")
251+ else if ((aK > height))
252+ then throw("Launchpad sale not started yet")
253+ else if ((height > (aK + aL)))
254+ then throw("Launchpad sale ended")
255+ else if (if (!(aZ))
256+ then if ((size(aD.payments) != 1))
257+ then true
258+ else (be != bn)
210259 else false)
211- then (aI == 0)
212- else false)
213- then throw("You can't claim because you don't buy anything")
214- else {
215- let aM = aC(value(getString(this, (toString(aF) + J))))
216- let aN = aM._1
217- let aO = aM._2
218- let aP = aM._3
219- let aQ = aM._4
220- let aR = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + aa)), 0)
221- let aS = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + ab)), 0)
222- let aT = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + W)), 0)
223- let aU = getIntegerValue(this, (toString(aF) + m))
224- let aV = min([aJ, aT])
225- let aW = getIntegerValue(this, (toString(aF) + r))
226- let aX = getIntegerValue(this, (toString(aF) + q))
227- let aY = aC(getStringValue(this, (toString(aF) + n)))
228- let aZ = aY._1
229- let ba = aY._2
230- let bb = aY._3
231- let bc = aY._4
232- let bd = fraction(aX, aW, pow(10, 0, bc, 0, 0, DOWN))
233- let be = getIntegerValue(this, (toString(aF) + v))
234- let bf = (((aR * aX) + (aV * be)) + (aS * aX))
235- let bg = ((aJ - aV) * be)
236- let bh = fraction(fraction(bg, aW, pow(10, 0, bc, 0, 0, DOWN)), (100 + aU), 100)
237- let bi = fraction(((aH - aR) * bd), (100 + aU), 100)
238- let bj = fraction(((aI - aS) * bd), (100 + aU), 100)
239- let bk = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + R)), 0)
240- if (if (if ((0 > bh))
260+ then throw((("One attached payment in " + bp) + " expected"))
261+ else if (if (aZ)
262+ then if ((size(aD.payments) != 2))
241263 then true
242- else (0 > bi))
264+ else (be != bn)
265+ else false)
266+ then {
267+ let bv = getStringValue(this, (toString(aG) + G))
268+ throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
269+ }
270+ else if (if ((0 >= bs))
243271 then true
244- else (0 > bj))
245- then throw("Error with allowed allocation param or wonned tickets param please contact support")
272+ else (0 >= bu))
273+ then throw("Not enought SWOP in staking to buy tickets")
246274 else {
247- let bl = ((bi + bj) - bk)
248- let bm = if ((bl > 0))
249- then [ScriptTransfer(aE.caller, bl, aN), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + R), bl)]
250- else nil
251- let bn = if (if ((bl > 0))
252- then (aN == ah)
253- else false)
254- then invoke(ag, "unlockNeutrino", [bl, toBase58String(ah)], nil)
275+ let bw = getIntegerValue(this, (toString(aG) + r))
276+ let aO = getIntegerValue(this, (toString(aG) + q))
277+ let bx = aE(getStringValue(this, (toString(aG) + n)))
278+ let by = bx._1
279+ let bz = bx._2
280+ let bA = bx._3
281+ let bB = bx._4
282+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283+ let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284+ let bE = (bd / (bC + bD))
285+ let bF = min([bE, bu])
286+ let bG = (bF * (bC + bD))
287+ let bH = (bd - bG)
288+ if ((bE == 0))
289+ then throw((("Not enought " + bp) + " to buy tickets"))
290+ else if ((bH != 0))
291+ then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
292+ else {
293+ let bj = if (aZ)
294+ then {
295+ let bv = getStringValue(this, (toString(aG) + G))
296+ let bI = getIntegerValue(this, (toString(aG) + I))
297+ let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298+ let bK = bJ._1
299+ let bL = bJ._2
300+ let bM = at(be)
301+ let bN = bM._1
302+ let bO = bM._2
303+ let bP = bM._3
304+ let bQ = (bI * bE)
305+ if (if ((bN != bv))
306+ then true
307+ else (bQ != bK))
308+ then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309+ else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
310+ }
311+ else nil
312+ let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313+ let bS = getIntegerValue(this, (toString(aG) + w))
314+ let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315+ let bU = (bR + (if ((bR != ""))
316+ then ("," + bT)
317+ else ("" + bT)))
318+ let bV = if ((bn == ah))
319+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
320+ else 0
321+ if ((bV == bV))
322+ then {
323+ let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326+ else bW
327+ }
328+ else throw("Strict value is not equal to itself.")
329+ }
330+ }
331+ })
332+
333+
334+
335+@Callable(aD)
336+func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337+ let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338+ let bd = bX._1
339+ let be = bX._2
340+ let bY = aE(value(getString(this, (toString(aG) + J))))
341+ let bn = bY._1
342+ let bo = bY._2
343+ let bp = bY._3
344+ let bq = bY._4
345+ let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346+ let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347+ let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348+ let aN = getIntegerValue(this, (toString(aG) + m))
349+ let bw = getIntegerValue(this, (toString(aG) + r))
350+ let aS = getIntegerValue(this, (toString(aG) + v))
351+ let cc = aE(getStringValue(this, (toString(aG) + n)))
352+ let by = cc._1
353+ let bz = cc._2
354+ let bA = cc._3
355+ let bB = cc._4
356+ let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357+ let aK = value(getInteger(this, (toString(aG) + k)))
358+ let aL = value(getInteger(this, (toString(aG) + A)))
359+ if ((ak != aG))
360+ then throw("There is no active launchpad or this launchpad is ended")
361+ else if ((aK > height))
362+ then throw("Launchpad sale not started yet")
363+ else if ((height > (aK + aL)))
364+ then throw("Launchpad sale ended")
365+ else if (if ((size(aD.payments) != 1))
366+ then true
367+ else (be != bn))
368+ then throw((("One attached payment in " + bp) + " expected"))
369+ else if ((cb >= aj))
370+ then throw((("You can buy only " + toString(aj)) + "allocations"))
371+ else if (if ((cd != bd))
372+ then ((cd * 2) != bd)
373+ else false)
374+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
375+ else {
376+ let ce = (bd / cd)
377+ let bV = if ((bn == ah))
378+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
255379 else 0
256- if ((bn == bn))
380+ if ((bV == bV))
257381 then {
258- let bo = split(valueOrElse(getString(this, (toString(aF) + K)), ""), ",")
259- if (if ((size(bo) == 0))
260- then true
261- else (bo[0] == "claimAll"))
262- then {
263- let bp = if ((bf > 0))
264- then [ScriptTransfer(aE.caller, bf, aZ)]
265- else nil
266- (([BooleanEntry((((toString(aE.caller) + "_") + toString(aF)) + Z), true), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + Q), bf)] ++ bp) ++ bm)
267- }
268- else if ((bo[0] == "claimPeriod"))
269- then {
270- let bq = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + Q)), 0)
271- let br = value(parseInt(bo[1]))
272- let bs = value(parseInt(bo[2]))
273- let bt = (value(parseInt(bo[3])) + aL)
274- let bu = ((bs + aL) + bt)
275- let bv = (fraction(bf, value(parseInt(bo[1])), 100) + (if ((height > bt))
276- then fraction(bf, (height - bt), bs)
277- else (0 - bq)))
278- let bw = if ((bf >= (bq + bv)))
279- then [BooleanEntry((((toString(aE.caller) + "_") + toString(aF)) + Z), true)]
280- else nil
281- if (if ((bv > 0))
282- then true
283- else (bl > 0))
284- then {
285- let bp = if ((bv > 0))
286- then [IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + Q), (bq + bv)), ScriptTransfer(aE.caller, bv, aZ)]
287- else nil
288- (bm ++ bp)
289- }
290- else throw("Nothing to claim")
291- }
292- else throw("Error whith claim params: unknown function")
382+ let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385+ else bW
293386 }
294387 else throw("Strict value is not equal to itself.")
295388 }
296- }
297- }
389+ })
298390
299391
300392
301-@Callable(aE)
302-func claimFreezeToken (aF) = {
303- let bx = valueOrElse(getBoolean(this, (toString(aF) + F)), false)
304- if (!(ak))
305- then throw("DApp is inactive at this moment")
306- else if (!(isDefined(getInteger(this, (toString(aF) + l)))))
307- then throw("You can't claim because results are not finalized")
308- else if (!(bx))
309- then throw("There are no additional token freezing for this launchpad")
310- else {
311- let aZ = fromBase58String(getStringValue(this, (toString(aF) + G)))
312- let by = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aF)) + ac)), 0)
313- let bz = valueOrElse(getInteger(this, (toString(aF) + k)), 0)
314- let bA = valueOrElse(getInteger(this, (toString(aF) + A)), 0)
315- let bB = getIntegerValue(this, (toString(aF) + H))
316- let bC = ((bz + bA) + bB)
317- if ((by == 0))
318- then throw("You are already claimed your tokens or not paid anything")
319- else if ((bC > height))
320- then throw(("Your tokens freezed teel " + toString(bC)))
321- else [ScriptTransfer(aE.caller, by, aZ), IntegerEntry((((toString(aE.caller) + "_") + toString(aF)) + ac), 0)]
322- }
323- }
393+@Callable(aD)
394+func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395+ let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396+ let bd = cf._1
397+ let be = cf._2
398+ let cg = aE(value(getString(this, (toString(aG) + J))))
399+ let bn = cg._1
400+ let bo = cg._2
401+ let bp = cg._3
402+ let bq = cg._4
403+ let aK = value(getInteger(this, (toString(aG) + k)))
404+ let aL = value(getInteger(this, (toString(aG) + A)))
405+ let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406+ let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407+ if ((ak != aG))
408+ then throw("There is no active launchpad or this launchpad is ended")
409+ else if (!(ci))
410+ then throw("There is no high competition sale for this launchpad")
411+ else if ((aK > height))
412+ then throw("Launchpad sale not started yet")
413+ else if ((height > (aK + aL)))
414+ then throw("Launchpad sale ended")
415+ else if (if ((size(aD.payments) != 1))
416+ then true
417+ else (be != bn))
418+ then throw((("One attached payment in " + bp) + " expected"))
419+ else {
420+ let bw = getIntegerValue(this, (toString(aG) + r))
421+ let aO = getIntegerValue(this, (toString(aG) + q))
422+ let cj = aE(getStringValue(this, (toString(aG) + n)))
423+ let by = cj._1
424+ let bz = cj._2
425+ let bA = cj._3
426+ let bB = cj._4
427+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428+ let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429+ let bE = (bd / (bC + bD))
430+ let ck = (bE * (bC + bD))
431+ let bH = (bd - ck)
432+ if ((bE == 0))
433+ then throw((("Not enought " + bp) + " to buy tickets"))
434+ else if ((bH != 0))
435+ then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
436+ else {
437+ let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438+ let bS = getIntegerValue(this, (toString(aG) + N))
439+ let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440+ let bU = (bR + (if ((bR != ""))
441+ then ("," + bT)
442+ else ("" + bT)))
443+ let bV = if ((bn == ah))
444+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
445+ else 0
446+ if ((bV == bV))
447+ then {
448+ let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449+ if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450+ then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451+ else bW
452+ }
453+ else throw("Strict value is not equal to itself.")
454+ }
455+ }
456+ })
324457
325458
326459
327-@Callable(aE)
328-func transferBuyAsset (aF,bD) = if (!(ak))
329- then throw("DApp is inactive")
330- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
331- then throw("Only admin can call this function")
460+@Callable(aD)
461+func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462+ let cn = getStringValue(this, (toString(aG) + z))
463+ let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464+ if ((co != cn))
465+ then throw("vrf Height hash not matching")
332466 else {
333- let bE = addressFromStringValue(getStringValue(this, (toString(aF) + i)))
334- let bF = aC(value(getString(this, (toString(aF) + J))))
335- let aN = bF._1
336- let aO = bF._2
337- let aP = bF._3
338- let aQ = bF._4
339-[IntegerEntry((toString(aF) + D), bD), ScriptTransfer(bE, bD, aN)]
467+ let cp = aE(value(getString(this, (toString(aG) + J))))
468+ let bn = cp._1
469+ let bo = cp._2
470+ let bp = cp._3
471+ let bq = cp._4
472+ let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473+ let aN = getIntegerValue(this, (toString(aG) + m))
474+ let cq = getIntegerValue(this, (toString(aG) + L))
475+ let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476+ let cs = getIntegerValue(this, (toString(aG) + p))
477+ let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478+ let cu = fraction(cs, aN, 100)
479+ let cv = fraction(ct, cq, 100)
480+ let cw = getIntegerValue(this, (toString(aG) + C))
481+ let cx = fraction(cw, aN, 100)
482+ let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483+ if ((cr > (cs + cw)))
484+ then throw("Can't transfer negative value to project")
485+ else {
486+ let bV = if ((bn == ah))
487+ then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
488+ else 0
489+ if ((bV == bV))
490+ then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, ((cs + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
491+ else throw("Strict value is not equal to itself.")
492+ }
340493 }
494+ }))
341495
342496
343497
344-@Callable(aE)
345-func shutdown () = if (!(ak))
346- then throw("DApp already inactive")
347- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
348- then throw("Only admin can call this function")
349- else [BooleanEntry(a, false)]
498+@Callable(aD)
499+func claim (aG) = valueOrElse(aB(), {
500+ let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501+ let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502+ let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503+ let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504+ let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505+ if ((cC == 0))
506+ then throw("You can't claim because results are not finalized")
507+ else if (cB)
508+ then throw("You are already claimed")
509+ else if (if (if ((cz == 0))
510+ then (cb == 0)
511+ else false)
512+ then (cA == 0)
513+ else false)
514+ then throw("You can't claim because you don't buy anything")
515+ else {
516+ let cD = aE(value(getString(this, (toString(aG) + J))))
517+ let bn = cD._1
518+ let bo = cD._2
519+ let bp = cD._3
520+ let bq = cD._4
521+ let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522+ let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523+ let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524+ let aN = getIntegerValue(this, (toString(aG) + m))
525+ let cq = getIntegerValue(this, (toString(aG) + L))
526+ let cH = min([cb, cG])
527+ let bw = getIntegerValue(this, (toString(aG) + r))
528+ let aO = getIntegerValue(this, (toString(aG) + q))
529+ let cI = aE(getStringValue(this, (toString(aG) + n)))
530+ let by = cI._1
531+ let bz = cI._2
532+ let bA = cI._3
533+ let bB = cI._4
534+ let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535+ let aS = getIntegerValue(this, (toString(aG) + v))
536+ let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537+ let cK = ((cb - cH) * aS)
538+ let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539+ let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540+ let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541+ let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542+ if (if (if ((0 > cL))
543+ then true
544+ else (0 > cM))
545+ then true
546+ else (0 > cN))
547+ then throw("Error with allowed allocation param or wonned tickets param please contact support")
548+ else {
549+ let cP = (((cM + cN) + cL) - cO)
550+ let cQ = if ((cP > 0))
551+ then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
552+ else nil
553+ let bV = if (if ((cP > 0))
554+ then (bn == ah)
555+ else false)
556+ then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
557+ else 0
558+ if ((bV == bV))
559+ then {
560+ let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561+ if (if ((size(cR) == 0))
562+ then true
563+ else (cR[0] == "claimAll"))
564+ then {
565+ let cS = if ((cJ > 0))
566+ then [ScriptTransfer(aD.caller, cJ, by)]
567+ else nil
568+ (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
569+ }
570+ else if ((cR[0] == "claimPeriod"))
571+ then {
572+ let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
573+ let cU = value(parseInt(cR[2]))
574+ let cV = (value(parseInt(cR[3])) + cC)
575+ let cW = ((cU + cC) + cV)
576+ let cX = (fraction(cJ, value(parseInt(cR[1])), 100) + (if ((height > cV))
577+ then fraction(cJ, (height - cV), cU)
578+ else (0 - cT)))
579+ let cY = if ((cJ >= (cT + cX)))
580+ then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
581+ else nil
582+ if (if ((cX > 0))
583+ then true
584+ else (cP > 0))
585+ then {
586+ let cS = if ((cX > 0))
587+ then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
588+ else nil
589+ (cQ ++ cS)
590+ }
591+ else throw("Nothing to claim")
592+ }
593+ else throw("Unknown claim function")
594+ }
595+ else throw("Strict value is not equal to itself.")
596+ }
597+ }
598+ })
350599
351600
352601
353-@Callable(aE)
354-func activate () = if (ak)
355- then throw("DApp already active")
356- else if (!(containsElement([ar, as, at], aE.callerPublicKey)))
357- then throw("Only admin can call this function")
358- else [BooleanEntry(a, true)]
602+@Callable(aD)
603+func claimFreezeToken (aG) = valueOrElse(aB(), {
604+ let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
605+ if (!(isDefined(getInteger(this, (toString(aG) + l)))))
606+ then throw("You can't claim because results are not finalized")
607+ else if (!(aZ))
608+ then throw("There are no additional token freezing for this launchpad")
609+ else {
610+ let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
611+ let cZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
612+ let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
613+ let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
614+ let da = getIntegerValue(this, (toString(aG) + H))
615+ let db = ((aK + aL) + da)
616+ if ((cZ == 0))
617+ then throw("You are already claimed your tokens or not paid anything")
618+ else if ((db > height))
619+ then throw(("Your tokens freezed teel " + toString(db)))
620+ else [ScriptTransfer(aD.caller, cZ, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
621+ }
622+ })
359623
360624
361-@Verifier(bG)
362-func bH () = {
363- let bI = {
364- let bJ = if (sigVerify(bG.bodyBytes, bG.proofs[0], ar))
625+
626+@Callable(aD)
627+func transferBuyAsset (aG,dc) = valueOrElse(aB(), valueOrElse(aC(aD), {
628+ let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
629+ let dd = aE(value(getString(this, (toString(aG) + J))))
630+ let bn = dd._1
631+ let bo = dd._2
632+ let bp = dd._3
633+ let bq = dd._4
634+[IntegerEntry((toString(aG) + D), dc), ScriptTransfer(aJ, dc, bn)]
635+ }))
636+
637+
638+
639+@Callable(aD)
640+func shutdown () = valueOrElse(aC(aD), if (!(aA))
641+ then throw("DApp already inactive")
642+ else [BooleanEntry(a, false)])
643+
644+
645+
646+@Callable(aD)
647+func activate () = valueOrElse(aC(aD), if (aA)
648+ then throw("DApp already active")
649+ else [BooleanEntry(a, true)])
650+
651+
652+@Verifier(de)
653+func df () = {
654+ let dg = {
655+ let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
365656 then 1
366657 else 0
367- let bK = if (sigVerify(bG.bodyBytes, bG.proofs[1], as))
658+ let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
368659 then 1
369660 else 0
370- let bL = if (sigVerify(bG.bodyBytes, bG.proofs[2], at))
661+ let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
371662 then 1
372663 else 0
373- (((bJ + bK) + bL) >= 2)
664+ (((dh + di) + dj) >= 2)
374665 }
375- let bM = if (if (if (sigVerify(bG.bodyBytes, bG.proofs[0], ar))
666+ let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
376667 then true
377- else sigVerify(bG.bodyBytes, bG.proofs[0], as))
668+ else sigVerify(de.bodyBytes, de.proofs[0], ar))
378669 then true
379- else sigVerify(bG.bodyBytes, bG.proofs[0], at))
670+ else sigVerify(de.bodyBytes, de.proofs[0], as))
380671 then true
381- else sigVerify(bG.bodyBytes, bG.proofs[0], ai)
382- let ao = bG
383- if ($isInstanceOf(ao, "DataTransaction"))
672+ else sigVerify(de.bodyBytes, de.proofs[0], ai)
673+ let an = de
674+ if ($isInstanceOf(an, "DataTransaction"))
384675 then {
385- let bN = ao
676+ let dl = an
386677 if (valueOrElse(getBoolean(ad, e), false))
387- then bM
678+ then dk
388679 else false
389680 }
390- else bI
681+ else dg
391682 }
392683

github/deemru/w8io/026f985 
83.97 ms