tx · 2i1f3MZy4N2XRViDQmscpWnS2paEVtd6RT1nbnoiGcUE

3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ:  -0.01400000 Waves

2022.01.21 16:11 [2953831] smart account 3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ > SELF 0.00000000 Waves

{ "type": 13, "id": "2i1f3MZy4N2XRViDQmscpWnS2paEVtd6RT1nbnoiGcUE", "fee": 1400000, "feeAssetId": null, "timestamp": 1642770737644, "version": 2, "chainId": 87, "sender": "3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ", "senderPublicKey": "BWnMC6WjWvjJRc2jc1XibbL3RSvL2mFekrvRxpJGdtp1", "proofs": [ "", "4E2FgwWNnzNNpUQJ8tqUcithjyyHNfvg9wEipHFSeyuqw2YqoShEk66mLKTbF99fjDhfP1783dbD5Y54eai96czC", "4pAkoXyNwbfsMLQx2n8jVChqy1XUb2ck1UDMEYd6WcsTtHBtMeFc2xgFPmWvkhZJTCTYfKkFK8WRbRF36i32DXbh" ], "script": "base64:AAIFAAAAAAAAFLQIAhIECgIBCBIDCgEIEhQKEggBAQgBAQEBAQEBARgEAQEEGBIECgIBCBIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIDCgEBEgQKAgEBEgASABoQCgFBEgtrZXlEdXJhdGlvbhohCgFCEhxrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGioKAUMSJWtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmdGaW5hbGl6ZWQaGAoBRBITa2V5VHJhbnNmZXJCdXlBc3NldBoZCgFFEhRrZXlGcmVlelN3b3BEdXJhdGlvbhodCgFGEhhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4aFQoBRxIQa2V5RnJlZXplVG9rZW5JZBobCgFIEhZrZXlGcmVlemVUb2tlbkR1cmF0aW9uGhwKAUkSF2tleUZyZWV6ZVRva2VuUGVyVGlja2V0GhAKAUoSC2tleUJ1eVRva2VuGhMKAUsSDmtleUNsYWltUGFyYW1zGiAKAUwSG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhobCgFNEhZrZXlIaWdoQ29tcGV0aXRpb25TYWxlGhoKAU4SFWtleUhDVGlja2V0TGFzdE51bWJlchodCgFPEhhrZXlIaWdoQ29tcGV0aXRpb25BbW91bnQaIQoBUBIca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQxoZCgFREhRrZXlVc2VyQ2xhaW1lZFRva2VucxocCgFSEhdrZXlVc2VyQ2xhaW1lZEJ1eVRva2VucxofCgFTEhprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudBoTCgFUEg5rZXlVc2VyVGlja2V0cxoVCgFVEhBrZXlVc2VySENUaWNrZXRzGiEKAVYSHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQaIAoBVxIba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zGiUKAVgSIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGh0KAVkSGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucxoXCgFaEhJrZXlVc2VyQ2xhaW1TdGF0dXMaDgoBYRIJa2V5QWN0aXZlGhYKAmFBEhBzdGFrZWRVc2RuQW1vdW50GgwKAmFCEgZhY3RpdmUaDgoCYUMSCGlzQWN0aXZlGhEKAmFEEgtpc0FkbWluQ2FsbBoHCgJhRRIBaRocCgJhRhIWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZxoOCgJhRxIIYXNzZXRTdHIaEQoCYUgSC2xhdW5jaHBhZElkGgoKAmFJEgRoYXNoGg0KAmFKEgdhZGRyZXNzGhQKAmFLEg5wcm9qZWN0QWRkcmVzcxoRCgJhTBILc3RhcnRIZWlnaHQaDgoCYU0SCGR1cmF0aW9uGg4KAmFOEghidXlUb2tlbhoQCgJhTxIKY29tbWlzc2lvbhoVCgJhUBIPdG9rZW5zUGVyVGlja2V0GhMKAmFREg1wcmljZVBlclRva2VuGhkKAmFSEhNzd29wZmlUaWNrZXRzQW1vdW50GhoKAmFTEhRjYW1wYWlnblRva2Vuc0Ftb3VudBoZCgJhVBITdG9rZW5zUGVyQWxsb2NhdGlvbhoTCgJhVRINc3dvcFBlclRpY2tldBoYCgJhVhISc3dvcEZyZWV6ZUR1cmF0aW9uGhEKAmFXEgtjbGFpbVBhcmFtcxoZCgJhWBITSGlnaENvbXBldGl0aW9uU2FsZRoeCgJhWRIYaGlnaENvbXBldGl0aW9uQ29taXNzaW9uGiIKAmFaEhxoaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50GiAKAmFhEhprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudBovCgJhYhIpa2V5VXNlcldpbm5lZEhpZ2hDb21wZXRpdGlvblRpY2tldHNBbW91bnQaGAoCYWMSEmtleVVzZXJGcmVlemVUb2tlbhoMCgJhZBIGb3JhY2xlGhAKAmFlEgpnb3Zlcm5hbmNlGhYKAmFmEhBjb21taXNzaW9uV2FsbGV0GhgKAmFnEhJzdGFraW5nVVNETkFkZHJlc3MaCgoCYWgSBFVTRE4aGAoCYWkSEmFkbWluUHViS2V5U3Rha2luZxoaCgJhahIUbWF4QWxsb2NhdGlvbnNBbW91bnQaFwoCYWsSEWFjdGl2ZUxhdW5jaHBhZElkGhEKAmFsEgtnZXRBZG1pblB1YhoRCgJhbRILa2V5QWRtaW5QdWIaDQoCYW4SByRtYXRjaDAaDAoCYW8SBnN0cmluZxoNCgJhcBIHbm90aGluZxoSCgJhcRIMYWRtaW5QdWJLZXkxGhIKAmFyEgxhZG1pblB1YktleTIaEgoCYXMSDGFkbWluUHViS2V5MxoSCgJhdBIMZ2V0QXNzZXRJbmZvGg0KAmF1Egdhc3NldElkGggKAmF2EgJpZBoOCgJhdxIIc3RyaW5nSWQaCgoCYXgSBGluZm8aCwoCYXkSBXdhdmVzGhgKAmF6EhJnZXRMYXVuY2hwYWROZXh0SWQaFAoBYhIPa2V5QWRtaW5QdWJLZXkxGhUKAmJBEg90b2tlblN0ckFzc2V0SWQaFAoCYkISDnRva2VuQXNzZXROYW1lGhMKAmJDEg10b2tlbkRlY2ltYWxzGhEKAmJEEgt0aWNrZXRQcmljZRoZCgJiRRITY29tbWlzc2lvblBlclRpY2tldBoVCgJiRhIPYnV5VGlja2V0QW1vdW50GhwKAmJHEhZhbGxvd2VkQnV5VGlja2V0QW1vdW50GiIKAmJIEhxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uGgwKAmJJEgZjaGFuZ2UaGgoCYkoSFGZyZWV6ZVRva2VuUGVyVGlja2V0GhMKAmJLEg0kdDAxMjQ5MTEyNTc4GhUKAmJMEg9wbXRBbW91bnRGcmVlemUaFgoCYk0SEHBtdEFzc2V0SWRGcmVlemUaEwoCYk4SDSR0MDEyNTk1MTI2ODYaGQoCYk8SE3BtdEZyZWV6ZVN0ckFzc2V0SWQaGAoCYlASEnBtdEZyZWV6ZUFzc2V0TmFtZRoXCgJiURIRcG10RnJlZXplRGVjaW1hbHMaFgoCYlISEG5lZWRGcmVlemVUb2tlbnMaHgoCYlMSGHVzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxocCgJiVBIWbGFzdEJvdWdodFRpY2tldE51bWJlchoRCgJiVRILYm91Z2h0UmFuZ2UaIQoCYlYSG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxoJCgJiVxIDaW52Gg8KAmJYEgliYXNlRW50cnkaEwoCYlkSDSR0MDE0NzU3MTQ4MzIaEwoCYloSDSR0MDE0ODM3MTQ5ODcaGwoCYmESFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbhoSCgJiYhIMZnJlZXplUGFyYW1zGhQKAmJjEg5sYXVuY2hwYWRJZFN0choRCgJiZBILJHQwNjM3ODY0NTMaDwoCYmUSCXBtdEFtb3VudBoQCgJiZhIKcG10QXNzZXRJZBoRCgJiZxILJHQwNjQ2MjY1MzUaEwoCYmgSDXBtdFN0ckFzc2V0SWQaEgoCYmkSDHBtdEFzc2V0TmFtZRoRCgJiahILcG10RGVjaW1hbHMaGwoCYmsSFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeRoLCgJibBIFcmVmSWQaEQoCYm0SCyR0MDkxNDE5MjE2GhEKAmJuEgskdDA5MjIxOTM3MRoQCgJibxIKYnV5QXNzZXRJZBoTCgJicBINYnV5QXNzZXRTdHJJZBoSCgJicRIMYnV5QXNzZXROYW1lGhYKAmJyEhBidXlBc3NldERlY2ltYWxzGhEKAmJzEgtzdGFrZWRTd29wcxodCgJidBIXYWxsb3dlZFRpY2tldHNBbW91bnRBbGwaGQoCYnUSE2JvdWdodFRpY2tldHNBbW91bnQaGgoCYnYSFGFsbG93ZWRUaWNrZXRzQW1vdW50GhMKAmJ3Eg1mcmVlemVUb2tlbklkGhAKAmJ4Egp0b2tlblByaWNlGhMKAmJ5Eg0kdDAxMTE4MzExMzI3Gg0KAmJ6Egd0b2tlbklkGhQKAWMSD2tleUFkbWluUHViS2V5MhoTCgJjQRINYm91Z2h0VGlja2V0cxoVCgJjQhIPYm91Z2h0SENUaWNrZXRzGhUKAmNDEg91c2VyQ2xhaW1TdGF0dXMaFAoCY0QSDmZpbmFsaXplSGVpZ2h0GhMKAmNFEg0kdDAyNTQxMzI1NTYzGhMKAmNGEg13b25uZWRUaWNrZXRzGhUKAmNHEg93b25uZWRIQ1RpY2tldHMaGgoCY0gSFGF3YWlsYWJsZUFsbG9jYXRpb25zGhgKAmNJEhJhbGxvd2VkQWxsb2NhdGlvbnMaEwoCY0oSDSR0MDI2NDY5MjY2MTMaGgoCY0sSFHRyYW5zZmVyVG9rZW5zQW1vdW50GiEKAmNMEhtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMaHAoCY00SFmJ1eUFzc2V0Rm9yQWxsb2NhdGlvbnMaIAoCY04SGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzGiIKAmNPEhxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzGhUKAmNQEg9jbGFpbWVkQnV5VG9rZW4aHAoCY1ESFnJldHVybmVkQnV5QXNzZXRBbW91bnQaFgoCY1ISEHRyYW5zZmVyQnV5QXNzZXQaEwoCY1MSDWNsYWltZWRQYXJhbXMaFAoCY1QSDnRyYW5zZmVyVG9rZW5zGhMKAmNVEg1jbGFpbWVkVG9rZW5zGhIKAmNWEgx1bmxvY2tQZXJpb2QaEQoCY1cSC2Jsb2NrSGVpZ2h0GhIKAmNYEgx1bmxvY2tIZWlnaHQaGAoCY1kSEmFsbG93ZWRTdGFydEFtb3VudBoZCgJjWhITYWxsb3dlZFRva2Vuc0Ftb3VudBoZCgJjYRITdXNlclVzZG5Jbk1hcmtldGluZxoVCgJjYhIPdXNkbkluTWFya2V0aW5nGhcKAmNjEhFib3VnaHRBbGxvY2F0aW9ucxoTCgJjZBINJHQwMTU2NTYxNTgwMBoiCgJjZRIcYWxsb2NhdGlvblByaWNlV2l0aENvbWlzc2lvbhoaCgJjZhIUYnV5QWxsb2NhdGlvbnNBbW91bnQaEwoCY2cSDSR0MDE4MDU4MTgxMzMaEwoCY2gSDSR0MDE4MTM4MTgyODgaGwoCY2kSFWJvdWdodEhDVGlja2V0c0Ftb3VudBoZCgJjahITaGlnaENvbXBldGl0aW9uU2FsZRoTCgJjaxINJHQwMTk0NjExOTYwNRobCgJjbBIVYnV5UHJpY2VXaXRoQ29taXNzaW9uGg8KAmNtEgl2cmZIZWlnaHQaEAoCY24SCnNlY3JldFdvcmQaDwoCY28SCXNhdmVkSGFzaBoOCgJjcBIIY2FsY0hhc2gaEwoCY3ESDSR0MDIyMjE4MjIzNjgaEgoCY3ISDGNvbW1pc3Npb25IQxoYCgJjcxISdHJhbnNmZXJlZEJ1eUFzc2V0GiEKAmN0Ehtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQaHAoCY3USFnN3b3BmaUhDQnV5QXNzZXRBbW91bnQaHAoCY3YSFnN3b3BmaU1lbWJlcnNDb21pc3Npb24aFwoCY3cSEXN3b3BmaUhDQ29taXNzaW9uGiQKAmN4Eh50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcaGAoCY3kSEm1hcmtldGluZ0NvbWlzc2lvbhoTCgJjehINdW5zdGFrZUFtb3VudBoUCgFkEg9rZXlBZG1pblB1YktleTMaFgoCZGESEGNsYWltU3RhdHVzRW50cnkaFwoCZGISEXVzZXJUb2tlbnNGcmVlemVkGhkKAmRjEhNmcmVlemVUb2tlbkR1cmF0aW9uGhQKAmRkEg5ibG9ja0VuZEhlaWdodBoMCgJkZRIGYW1vdW50GhMKAmRmEg0kdDAzMjgxOTMyOTY5GggKAmRnEgJ0eBoMCgJkaBIGdmVyaWZ5GhkKAmRpEhNtdWx0aVNpZ25lZEJ5QWRtaW5zGhgKAmRqEhJhZG1pblB1YktleTFTaWduZWQaGAoCZGsSEmFkbWluUHViS2V5MlNpZ25lZBoYCgJkbBISYWRtaW5QdWJLZXkzU2lnbmVkGhMKAmRtEg1zaWduZWRCeUFkbWluGgkKAmRuEgNkdHgaJgoBZRIha2V5TGF1bmNocGFkRGF0YVRyYW5zYWN0aW9uU3RhdHVzGhcKAWYSEmtleUxhdW5jaHBhZE5leHRJZBoZCgFnEhRrZXlMYXVuY2hwYWRBY3RpdmVJZBoSCgFoEg1rZXlJbml0Q2FsbGVyGg8KAWkSCmtleUFkZHJlc3MaEgoBahINa2V5SW5pdEhlaWdodBoTCgFrEg5rZXlTdGFydEhlaWdodBoWCgFsEhFrZXlGaW5hbGlzZUhlaWdodBoRCgFtEgxrZXlDb21pc3Npb24aDwoBbhIKa2V5QXNzZXRJZBoYCgFvEhNrZXlUb3RhbFRva2VuQW1vdW50Gh8KAXASGmtleVRvdGFsQW1vdW50QnV5QXNzZXRTb2xkGhcKAXESEmtleVRva2Vuc1BlclRpY2tldBoVCgFyEhBrZXlQcmljZVBlclRva2VuGhUKAXMSEGtleVN3b3BQZXJUaWNrZXQaGwoBdBIWa2V5U3dvcGZpVGlja2V0c0Ftb3VudBocCgF1EhdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudBobCgF2EhZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uGhgKAXcSE2tleVRpY2tldExhc3ROdW1iZXIaGAoBeBITa2V5R292ZXJuYW5jZVN0YWtlZBoRCgF5EgxrZXlVc2VyUmVmSWQaEgoBehINa2V5VmVyaWZ5SGFzaAAAAEoAAAAAAWECAAAABmFjdGl2ZQAAAAABYgIAAAALYWRtaW5fcHViXzEAAAAAAWMCAAAAC2FkbWluX3B1Yl8yAAAAAAFkAgAAAAthZG1pbl9wdWJfMwAAAAABZQIAAAAhbGF1bmNocGFkX2RhdGFfdHJhbnNhY3Rpb25fc3RhdHVzAAAAAAFmAgAAABFsYXVuY2hwYWRfbmV4dF9pZAAAAAABZwIAAAATbGF1bmNocGFkX2FjdGl2ZV9pZAAAAAABaAIAAAALaW5pdF9jYWxsZXIAAAAAAWkCAAAACF9hZGRyZXNzAAAAAAFqAgAAAAxfaW5pdF9oZWlnaHQAAAAAAWsCAAAADV9zdGFydF9oZWlnaHQAAAAAAWwCAAAAEF9maW5hbGlzZV9oZWlnaHQAAAAAAW0CAAAACl9jb21pc3Npb24AAAAAAW4CAAAACV9hc3NldF9pZAAAAAABbwIAAAATX3RvdGFsX3Rva2VuX2Ftb3VudAAAAAABcAIAAAAVX3RvdGFsX2J1eV9hc3NldF9zb2xkAAAAAAFxAgAAABJfdG9rZW5zX3Blcl90aWNrZXQAAAAAAXICAAAAEF9wcmljZV9wZXJfdG9rZW4AAAAAAXMCAAAAEF9zd29wX3Blcl90aWNrZXQAAAAAAXQCAAAAF190aWNrZXRzX3N3b3BmaV9tZW1iZXJzAAAAAAF1AgAAABNfdG9rZW5zX2FjY2Vzc19saXN0AAAAAAF2AgAAABZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uAAAAAAF3AgAAABNfdGlja2V0X2xhc3RfbnVtYmVyAAAAAAF4AgAAAAxfU1dPUF9hbW91bnQAAAAAAXkCAAAAB19yZWZfaWQAAAAAAXoCAAAADF92ZXJpZnlfaGFzaAAAAAABQQIAAAAJX2R1cmF0aW9uAAAAAAFCAgAAACdfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmcAAAAAAUMCAAAAMV90b3RhbF9wdXJjaGFzZWRfYnV5X2Fzc2V0X2luX21hcmtldGluZ19maW5hbGl6ZWQAAAAAAUQCAAAAE190cmFuc2Zlcl9idXlfYXNzZXQAAAAAAUUCAAAAFV9mcmVlemVfc3dvcF9kdXJhdGlvbgAAAAABRgIAAAAYX2ZyZWV6ZV9hZGRpdGlvbmFsX3Rva2VuAAAAAAFHAgAAABBfZnJlZXplX3Rva2VuX2lkAAAAAAFIAgAAABZfZnJlZXplX3Rva2VuX2R1cmF0aW9uAAAAAAFJAgAAABhfZnJlZXplX3Rva2VuX3Blcl90aWNrZXQAAAAAAUoCAAAACl9idXlfdG9rZW4AAAAAAUsCAAAADV9jbGFpbV9wYXJhbXMAAAAAAUwCAAAAG19oaWdoX2NvbXBldGl0aW9uX2NvbWlzc2lvbgAAAAABTQIAAAAWX2hpZ2hfY29tcGV0aXRpb25fc2FsZQAAAAABTgIAAAAkX2hpZ2hfY29tcGV0aXRpb25fdGlja2V0X2xhc3RfbnVtYmVyAAAAAAFPAgAAABlfdGlja2V0c19oaWdoX2NvbXBldGl0aW9uAAAAAAFQAgAAACZfdG90YWxfYnV5X2Fzc2V0X3NvbGRfaGlnaF9jb21wZXRpdGlvbgAAAAABUQIAAAAPX2NsYWltZWRfdG9rZW5zAAAAAAFSAgAAABNfY2xhaW1lZF9idXlfdG9rZW5zAAAAAAFTAgAAAA9fYm91Z2h0X3RpY2tldHMAAAAAAVQCAAAAD190aWNrZXRzX251bWJlcgAAAAABVQIAAAAgX3RpY2tldHNfbnVtYmVyX2hpZ2hfY29tcGV0aXRpb24AAAAAAVYCAAAAIF9ib3VnaHRfdGlja2V0c19oaWdoX2NvbXBldGl0aW9uAAAAAAFXAgAAAB1fYXZhaWxhYmxlX3B1cmNoYXNlX21hcmtldGluZwAAAAABWAIAAAAhX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nAAAAAAFZAgAAABNfYm91Z2h0X2FsbG9jYXRpb25zAAAAAAFaAgAAAA1fY2xhaW1fc3RhdHVzAAAAAAJhYQIAAAAPX3RpY2tldHNfcmVzdWx0AAAAAAJhYgIAAAAgX3RpY2tldHNfcmVzdWx0X2hpZ2hfY29tcGV0aXRpb24AAAAAAmFjAgAAABRfZnJlZXplX3Rva2VuX2Ftb3VudAAAAAACYWQJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgAAAAAAmFlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXyVect296lgzLCCI5D3yGiYCibNyztxbtAAAAAAJhZgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6BRpy/wPSJ8xbXfMYJKm3TgPPkqMILhZwAAAAACYWcJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfkDqc2T5IL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", "height": 2953831, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8SSa5rfA5Hsayc7PUVDwxEGJdwD4VKeKfNAj7cZ4QiiF Next: Ch64NwjLad3qtqCiGCMxPa5XgNk3wHuAZ4Adru6V7z3N Diff:
OldNewDifferences
168168 func az () = valueOrElse(getInteger(this, f), 1)
169169
170170
171-let aA = valueOrElse(getBoolean(this, a), true)
171+func aA () = valueOrElse(getInteger(ag, ((("rpd_balance_" + toBase58String(ah)) + "_") + toString(this))), 0)
172172
173-func aB () = if (aA)
173+
174+let aB = valueOrElse(getBoolean(this, a), true)
175+
176+func aC () = if (aB)
174177 then unit
175178 else throw("DApp is inactive at this moment")
176179
177180
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
181+func aD (aE) = if (containsElement([aq, ar, as], aE.callerPublicKey))
179182 then unit
180183 else throw("Only admin can call this function")
181184
182185
183-func aE (aF) = if ((aF == "WAVES"))
186+func aF (aG) = if ((aG == "WAVES"))
184187 then $Tuple4(unit, "WAVES", "WAVES", 8)
185188 else {
186- let aw = aF
187- let av = fromBase58String(aF)
189+ let aw = aG
190+ let av = fromBase58String(aG)
188191 let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189192 $Tuple4(av, aw, ax.name, ax.decimals)
190193 }
191194
192195
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
196+@Callable(aE)
197+func hashingRandom (aH,aI) = valueOrElse(aC(), valueOrElse(aD(aE), [StringEntry((toString(aH) + z), aI)]))
195198
196199
197200
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
201+@Callable(aE)
202+func initCaller (aJ) = valueOrElse(aC(), valueOrElse(aD(aE), [StringEntry(h, aJ)]))
200203
201204
202205
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), "")))
206+@Callable(aE)
207+func init (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb) = valueOrElse(aC(), if ((toString(aE.caller) != valueOrElse(getString(this, h), "")))
205208 then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
209+ else if ((size(aE.payments) != 1))
207210 then throw("One attached payment expected")
208- else if ((height > aK))
211+ else if ((height > aL))
209212 then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
213+ else if (if (ba)
214+ then (size(bb) != 3)
212215 else false)
213216 then throw("Freeze params list must have 3 items")
214217 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]))]
218+ let aH = az()
219+ let bc = toString(aH)
220+ let bd = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
221+ let be = bd._1
222+ let bf = bd._2
223+ let bg = at(bf)
224+ let bh = bg._1
225+ let bi = bg._2
226+ let bj = bg._3
227+ let bk = if (ba)
228+ then [BooleanEntry((bc + F), true), StringEntry((bc + G), bb[0]), IntegerEntry((bc + H), parseIntValue(bb[1])), IntegerEntry((bc + I), parseIntValue(bb[2]))]
226229 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)
230+ ([IntegerEntry((bh + "_launchpad"), aH), IntegerEntry(f, (aH + 1)), StringEntry((bc + i), aK), IntegerEntry((bc + j), height), IntegerEntry((bc + k), aL), IntegerEntry((bc + A), aM), StringEntry((bc + J), aN), IntegerEntry((bc + E), aV), IntegerEntry((bc + o), be), StringEntry((bc + n), bh), IntegerEntry((bc + m), aO), IntegerEntry((bc + w), 0), IntegerEntry((bc + N), 0), IntegerEntry((bc + q), aP), IntegerEntry((bc + r), aQ), IntegerEntry((bc + s), aU), IntegerEntry((bc + t), aR), IntegerEntry((bc + u), aS), IntegerEntry((bc + v), aT), StringEntry((bc + K), makeString(aW, ",")), BooleanEntry((bc + M), aX), IntegerEntry((bc + L), aY), IntegerEntry((bc + O), aZ), IntegerEntry(g, aH), StringEntry(h, "")] ++ bk)
228231 })
229232
230233
231234
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))
235+@Callable(aE)
236+func commitSwopfiSale (aH,bl) = valueOrElse(aC(), {
237+ let bm = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
238+ let be = bm._1
239+ let bf = bm._2
240+ let bn = aF(value(getString(this, (toString(aH) + J))))
241+ let bo = bn._1
242+ let bp = bn._2
243+ let bq = bn._3
244+ let br = bn._4
245+ let bs = valueOrElse(getInteger(ae, (toString(aE.caller) + x)), 0)
246+ let bt = (bs / getIntegerValue(this, (toString(aH) + s)))
247+ let bu = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + S)), 0)
248+ let bv = (bt - bu)
249+ let aL = value(getInteger(this, (toString(aH) + k)))
250+ let aM = value(getInteger(this, (toString(aH) + A)))
251+ let ba = valueOrElse(getBoolean(this, (toString(aH) + F)), false)
252+ if ((ak != aH))
250253 then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
254+ else if ((aL > height))
252255 then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
256+ else if ((height > (aL + aM)))
254257 then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
258+ else if (if (!(ba))
259+ then if ((size(aE.payments) != 1))
257260 then true
258- else (be != bn)
261+ else (bf != bo)
259262 else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
263+ then throw((("One attached payment in " + bq) + " expected"))
264+ else if (if (ba)
265+ then if ((size(aE.payments) != 2))
263266 then true
264- else (be != bn)
267+ else (bf != bo)
265268 else false)
266269 then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
270+ let bw = getStringValue(this, (toString(aH) + G))
271+ throw(((("Two attached payments expected: First in " + bq) + ", second in ") + bw))
269272 }
270- else if (if ((0 >= bs))
273+ else if (if ((0 >= bt))
271274 then true
272- else (0 >= bu))
275+ else (0 >= bv))
273276 then throw("Not enought SWOP in staking to buy tickets")
274277 else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
278+ let bx = getIntegerValue(this, (toString(aH) + r))
279+ let aP = getIntegerValue(this, (toString(aH) + q))
280+ let by = aF(getStringValue(this, (toString(aH) + n)))
281+ let bz = by._1
282+ let bA = by._2
283+ let bB = by._3
284+ let bC = by._4
285+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
286+ let bE = fraction(bD, getIntegerValue(this, (toString(aH) + m)), 100)
287+ let bF = (be / (bD + bE))
288+ let bG = min([bF, bv])
289+ let bH = (bG * (bD + bE))
290+ let bI = (be - bH)
291+ if ((bF == 0))
292+ then throw((("Not enought " + bq) + " to buy tickets"))
293+ else if ((bI != 0))
294+ then throw((((("Wrong payment. To buy " + toString(bG)) + "tickets you need to pay ") + toString(bH)) + bq))
292295 else {
293- let bj = if (aZ)
296+ let bk = if (ba)
294297 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))
298+ let bw = getStringValue(this, (toString(aH) + G))
299+ let bJ = getIntegerValue(this, (toString(aH) + I))
300+ let bK = $Tuple2(aE.payments[1].amount, aE.payments[1].assetId)
301+ let bL = bK._1
302+ let bM = bK._2
303+ let bN = at(bf)
304+ let bO = bN._1
305+ let bP = bN._2
306+ let bQ = bN._3
307+ let bR = (bJ * bF)
308+ if (if ((bO != bw))
306309 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+ else (bR != bL))
311+ then throw((((("You need to add " + toString(bR)) + " ") + bP) + " as a second payment"))
312+ else [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + ac), bL)]
310313 }
311314 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)])
315+ let bS = valueOrElse(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + T)), "")
316+ let bT = getIntegerValue(this, (toString(aH) + w))
317+ let bU = ((toString((bT + 1)) + "-") + toString((bT + bG)))
318+ let bV = (bS + (if ((bS != ""))
319+ then ("," + bU)
320+ else ("" + bU)))
321+ let bW = if ((bo == ah))
322+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
320323 else 0
321- if ((bV == bV))
324+ if ((bW == bW))
322325 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
326+ let bX = ([IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + S), (bu + bG)), IntegerEntry((toString(aH) + w), (bT + bG)), StringEntry((((toString(aE.caller) + "_") + toString(aH)) + T), bV)] ++ bk)
327+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
328+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
329+ else bX
327330 }
328331 else throw("Strict value is not equal to itself.")
329332 }
332335
333336
334337
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))
338+@Callable(aE)
339+func commitAccessListSale (aH,bl) = valueOrElse(aC(), {
340+ let bY = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
341+ let be = bY._1
342+ let bf = bY._2
343+ let bZ = aF(value(getString(this, (toString(aH) + J))))
344+ let bo = bZ._1
345+ let bp = bZ._2
346+ let bq = bZ._3
347+ let br = bZ._4
348+ let ca = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + X)), 0)
349+ let cb = valueOrElse(getInteger(this, (toString(aH) + B)), 0)
350+ let cc = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Y)), 0)
351+ let aO = getIntegerValue(this, (toString(aH) + m))
352+ let bx = getIntegerValue(this, (toString(aH) + r))
353+ let aT = getIntegerValue(this, (toString(aH) + v))
354+ let cd = aF(getStringValue(this, (toString(aH) + n)))
355+ let bz = cd._1
356+ let bA = cd._2
357+ let bB = cd._3
358+ let bC = cd._4
359+ let ce = fraction(fraction(bx, aT, pow(10, 0, bC, 0, 0, DOWN)), (100 + aO), 100)
360+ let aL = value(getInteger(this, (toString(aH) + k)))
361+ let aM = value(getInteger(this, (toString(aH) + A)))
362+ if ((ak != aH))
360363 then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
364+ else if ((aL > height))
362365 then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
366+ else if ((height > (aL + aM)))
364367 then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
368+ else if (if ((size(aE.payments) != 1))
366369 then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370+ else (bf != bo))
371+ then throw((("One attached payment in " + bq) + " expected"))
372+ else if ((cc >= aj))
370373 then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
374+ else if (if ((ce != be))
375+ then ((ce * 2) != be)
373376 else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
377+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ce)) + bq) + " per allocation"))
375378 else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
379+ let cf = (be / ce)
380+ let bW = if ((bo == ah))
381+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
379382 else 0
380- if ((bV == bV))
383+ if ((bW == bW))
381384 then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
385+ let bX = [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Y), (cc + cf)), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + X), (ca + be)), IntegerEntry((toString(aH) + B), (cb + be))]
386+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
387+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
388+ else bX
386389 }
387390 else throw("Strict value is not equal to itself.")
388391 }
390393
391394
392395
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))
396+@Callable(aE)
397+func commitHighCompetitionSale (aH,bl) = valueOrElse(aC(), {
398+ let cg = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
399+ let be = cg._1
400+ let bf = cg._2
401+ let ch = aF(value(getString(this, (toString(aH) + J))))
402+ let bo = ch._1
403+ let bp = ch._2
404+ let bq = ch._3
405+ let br = ch._4
406+ let aL = value(getInteger(this, (toString(aH) + k)))
407+ let aM = value(getInteger(this, (toString(aH) + A)))
408+ let ci = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + V)), 0)
409+ let cj = valueOrElse(getBoolean(this, (toString(aH) + M)), false)
410+ if ((ak != aH))
408411 then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
412+ else if (!(cj))
410413 then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
414+ else if ((aL > height))
412415 then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
416+ else if ((height > (aL + aM)))
414417 then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
418+ else if (if ((size(aE.payments) != 1))
416419 then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
420+ else (bf != bo))
421+ then throw((("One attached payment in " + bq) + " expected"))
419422 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))
423+ let bx = getIntegerValue(this, (toString(aH) + r))
424+ let aP = getIntegerValue(this, (toString(aH) + q))
425+ let ck = aF(getStringValue(this, (toString(aH) + n)))
426+ let bz = ck._1
427+ let bA = ck._2
428+ let bB = ck._3
429+ let bC = ck._4
430+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
431+ let bE = fraction(bD, getIntegerValue(this, (toString(aH) + L)), 100)
432+ let bF = (be / (bD + bE))
433+ let cl = (bF * (bD + bE))
434+ let bI = (be - cl)
435+ if ((bF == 0))
436+ then throw((("Not enought " + bq) + " to buy tickets"))
437+ else if ((bI != 0))
438+ then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(cl)) + bq))
436439 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)])
440+ let bS = valueOrElse(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + U)), "")
441+ let bT = getIntegerValue(this, (toString(aH) + N))
442+ let bU = ((toString((bT + 1)) + "-") + toString((bT + bF)))
443+ let bV = (bS + (if ((bS != ""))
444+ then ("," + bU)
445+ else ("" + bU)))
446+ let bW = if ((bo == ah))
447+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
445448 else 0
446- if ((bV == bV))
449+ if ((bW == bW))
447450 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
451+ let bX = [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + V), (ci + bF)), IntegerEntry((toString(aH) + N), (bT + bF)), StringEntry((((toString(aE.caller) + "_") + toString(aH)) + U), bV)]
452+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
453+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
454+ else bX
452455 }
453456 else throw("Strict value is not equal to itself.")
454457 }
457460
458461
459462
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))
463+@Callable(aE)
464+func finalise (aH,cm,cn) = valueOrElse(aC(), valueOrElse(aD(aE), {
465+ let co = getStringValue(this, (toString(aH) + z))
466+ let cp = toBase58String(sha256((toBytes(cm) + toBytes(cn))))
467+ if ((cp != co))
465468 then throw("vrf Height hash not matching")
466469 else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483- if ((cr > (cs + cw)))
470+ let cq = aF(value(getString(this, (toString(aH) + J))))
471+ let bo = cq._1
472+ let bp = cq._2
473+ let bq = cq._3
474+ let br = cq._4
475+ let aK = addressFromStringValue(getStringValue(this, (toString(aH) + i)))
476+ let aO = getIntegerValue(this, (toString(aH) + m))
477+ let cr = getIntegerValue(this, (toString(aH) + L))
478+ let cs = valueOrElse(getInteger(this, (toString(aH) + D)), 0)
479+ let ct = getIntegerValue(this, (toString(aH) + p))
480+ let cu = valueOrElse(getIntegerValue(this, (toString(aH) + P)), 0)
481+ let cv = fraction(ct, aO, 100)
482+ let cw = fraction(cu, cr, 100)
483+ let cx = getIntegerValue(this, (toString(aH) + C))
484+ let cy = fraction(cx, aO, 100)
485+ let cz = (((((ct + cx) + cv) + cy) + cu) + cw)
486+ if ((cs > (ct + cx)))
484487 then throw("Can't transfer negative value to project")
485488 else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
489+ let bW = if ((bo == ah))
490+ then invoke(ag, "unlockNeutrino", [cz, toBase58String(ah)], nil)
488491 else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, (((cs + ct) + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
492+ if ((bW == bW))
493+ then [IntegerEntry((toString(aH) + l), height), ScriptTransfer(aK, (((ct + cu) + cx) - cs), bo), ScriptTransfer(af, ((cv + cy) + cw), bo)]
491494 else throw("Strict value is not equal to itself.")
492495 }
493496 }
495498
496499
497500
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))
501+@Callable(aE)
502+func claim (aH) = valueOrElse(aC(), {
503+ let cA = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + S)), 0)
504+ let cB = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + V)), 0)
505+ let cc = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Y)), 0)
506+ let cC = valueOrElse(getBoolean(this, (((toString(aE.caller) + "_") + toString(aH)) + Z)), false)
507+ let cD = valueOrElse(getInteger(this, (toString(aH) + l)), 0)
508+ if ((cD == 0))
506509 then throw("You can't claim because results are not finalized")
507- else if (cB)
510+ else if (cC)
508511 then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
512+ else if (if (if ((cA == 0))
513+ then (cc == 0)
511514 else false)
512- then (cA == 0)
515+ then (cB == 0)
513516 else false)
514517 then throw("You can't claim because you don't buy anything")
515518 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))
519+ let cE = aF(value(getString(this, (toString(aH) + J))))
520+ let bo = cE._1
521+ let bp = cE._2
522+ let bq = cE._3
523+ let br = cE._4
524+ let cF = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + aa)), 0)
525+ let cG = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + ab)), 0)
526+ let cH = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + W)), 0)
527+ let aO = getIntegerValue(this, (toString(aH) + m))
528+ let cr = getIntegerValue(this, (toString(aH) + L))
529+ let cI = min([cc, cH])
530+ let bx = getIntegerValue(this, (toString(aH) + r))
531+ let aP = getIntegerValue(this, (toString(aH) + q))
532+ let cJ = aF(getStringValue(this, (toString(aH) + n)))
533+ let bz = cJ._1
534+ let bA = cJ._2
535+ let bB = cJ._3
536+ let bC = cJ._4
537+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
538+ let aT = getIntegerValue(this, (toString(aH) + v))
539+ let cK = (((cF * aP) + (cI * aT)) + (cG * aP))
540+ let cL = ((cc - cI) * aT)
541+ let cM = fraction(fraction(cL, bx, pow(10, 0, bC, 0, 0, DOWN)), (100 + aO), 100)
542+ let cN = fraction(((cA - cF) * bD), (100 + aO), 100)
543+ let cO = fraction(((cB - cG) * bD), (100 + cr), 100)
544+ let cP = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + R)), 0)
545+ if (if (if ((0 > cM))
545546 then true
546547 else (0 > cN))
548+ then true
549+ else (0 > cO))
547550 then throw("Error with allowed allocation param or wonned tickets param please contact support")
548551 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+ let cQ = (((cN + cO) + cM) - cP)
553+ let cR = if ((cQ > 0))
554+ then [ScriptTransfer(aE.caller, cQ, bo), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + R), cQ)]
552555 else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
556+ let bW = if (if ((cQ > 0))
557+ then (bo == ah)
555558 else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
559+ then invoke(ag, "unlockNeutrino", [cQ, toBase58String(ah)], nil)
557560 else 0
558- if ((bV == bV))
561+ if ((bW == bW))
559562 then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561- if (if ((size(cR) == 0))
563+ let cS = split(valueOrElse(getString(this, (toString(aH) + K)), ""), ",")
564+ if (if ((size(cS) == 0))
562565 then true
563- else (cR[0] == "claimAll"))
566+ else (cS[0] == "claimAll"))
564567 then {
565- let cS = if ((cJ > 0))
566- then [ScriptTransfer(aD.caller, cJ, by)]
568+ let cT = if ((cK > 0))
569+ then [ScriptTransfer(aE.caller, cK, bz)]
567570 else nil
568- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
571+ (([BooleanEntry((((toString(aE.caller) + "_") + toString(aH)) + Z), true), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Q), cK)] ++ cT) ++ cR)
569572 }
570- else if ((cR[0] == "claimPeriod"))
573+ else if ((cS[0] == "claimPeriod"))
571574 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)]
575+ let cU = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Q)), 0)
576+ let cV = value(parseInt(cS[2]))
577+ let cW = (value(parseInt(cS[3])) + cD)
578+ let cX = (cV + cW)
579+ let cY = fraction(cK, value(parseInt(cS[1])), 100)
580+ let cZ = (cY + (if ((height > cW))
581+ then (fraction((cK - cY), (min([height, cX]) - cW), cV) - cU)
582+ else (0 - cU)))
583+ let da = if ((cK >= (cU + cZ)))
584+ then [BooleanEntry((((toString(aE.caller) + "_") + toString(aH)) + Z), true)]
581585 else nil
582- if (if ((cX > 0))
586+ if (if ((cZ > 0))
583587 then true
584- else (cP > 0))
588+ else (cQ > 0))
585589 then {
586- let cS = if ((cX > 0))
587- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
590+ let cT = if ((cZ > 0))
591+ then [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Q), (cU + cZ)), ScriptTransfer(aE.caller, cZ, bz)]
588592 else nil
589- (cQ ++ cS)
593+ (cR ++ cT)
590594 }
591595 else throw("Nothing to claim")
592596 }
599603
600604
601605
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+@Callable(aE)
607+func claimFreezeToken (aH) = valueOrElse(aC(), {
608+ let ba = valueOrElse(getBoolean(this, (toString(aH) + F)), false)
609+ if (!(isDefined(getInteger(this, (toString(aH) + l)))))
606610 then throw("You can't claim because results are not finalized")
607- else if (!(aZ))
611+ else if (!(ba))
608612 then throw("There are no additional token freezing for this launchpad")
609613 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))
614+ let bz = fromBase58String(getStringValue(this, (toString(aH) + G)))
615+ let db = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + ac)), 0)
616+ let aL = valueOrElse(getInteger(this, (toString(aH) + k)), 0)
617+ let aM = valueOrElse(getInteger(this, (toString(aH) + A)), 0)
618+ let dc = getIntegerValue(this, (toString(aH) + H))
619+ let dd = ((aL + aM) + dc)
620+ if ((db == 0))
617621 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)]
622+ else if ((dd > height))
623+ then throw(("Your tokens freezed teel " + toString(dd)))
624+ else [ScriptTransfer(aE.caller, db, bz), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + ac), 0)]
621625 }
622626 })
623627
624628
625629
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)]
630+@Callable(aE)
631+func transferBuyAsset (aH,de) = valueOrElse(aC(), valueOrElse(aD(aE), {
632+ let aK = addressFromStringValue(getStringValue(this, (toString(aH) + i)))
633+ let df = aF(value(getString(this, (toString(aH) + J))))
634+ let bo = df._1
635+ let bp = df._2
636+ let bq = df._3
637+ let br = df._4
638+[IntegerEntry((toString(aH) + D), de), ScriptTransfer(aK, de, bo)]
635639 }))
636640
637641
638642
639-@Callable(aD)
640-func shutdown () = valueOrElse(aC(aD), if (!(aA))
643+@Callable(aE)
644+func shutdown () = valueOrElse(aD(aE), if (!(aB))
641645 then throw("DApp already inactive")
642646 else [BooleanEntry(a, false)])
643647
644648
645649
646-@Callable(aD)
647-func activate () = valueOrElse(aC(aD), if (aA)
650+@Callable(aE)
651+func activate () = valueOrElse(aD(aE), if (aB)
648652 then throw("DApp already active")
649653 else [BooleanEntry(a, true)])
650654
651655
652-@Verifier(de)
653-func df () = {
654- let dg = {
655- let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
656+@Verifier(dg)
657+func dh () = {
658+ let di = {
659+ let dj = if (sigVerify(dg.bodyBytes, dg.proofs[0], aq))
656660 then 1
657661 else 0
658- let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
662+ let dk = if (sigVerify(dg.bodyBytes, dg.proofs[1], ar))
659663 then 1
660664 else 0
661- let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
665+ let dl = if (sigVerify(dg.bodyBytes, dg.proofs[2], as))
662666 then 1
663667 else 0
664- (((dh + di) + dj) >= 2)
668+ (((dj + dk) + dl) >= 2)
665669 }
666- let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
670+ let dm = if (if (if (sigVerify(dg.bodyBytes, dg.proofs[0], aq))
667671 then true
668- else sigVerify(de.bodyBytes, de.proofs[0], ar))
672+ else sigVerify(dg.bodyBytes, dg.proofs[0], ar))
669673 then true
670- else sigVerify(de.bodyBytes, de.proofs[0], as))
674+ else sigVerify(dg.bodyBytes, dg.proofs[0], as))
671675 then true
672- else sigVerify(de.bodyBytes, de.proofs[0], ai)
673- let an = de
676+ else sigVerify(dg.bodyBytes, dg.proofs[0], ai)
677+ let an = dg
674678 if ($isInstanceOf(an, "DataTransaction"))
675679 then {
676- let dl = an
680+ let dn = an
677681 if (valueOrElse(getBoolean(ad, e), false))
678- then dk
682+ then dm
679683 else false
680684 }
681- else dg
685+ else di
682686 }
683687
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'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
115115
116116 let ae = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
117117
118118 let af = Address(base58'3PGYafJ2GuqPckmZNywet8moiPnBHz51Xdg')
119119
120120 let ag = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
121121
122122 let ah = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
123123
124124 let ai = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
125125
126126 let aj = 2
127127
128128 let ak = valueOrElse(getIntegerValue(this, g), -1)
129129
130130 func al (am) = {
131131 let an = getString(ad, am)
132132 if ($isInstanceOf(an, "String"))
133133 then {
134134 let ao = an
135135 fromBase58String(ao)
136136 }
137137 else {
138138 let ap = an
139139 throw("Admin public key is empty")
140140 }
141141 }
142142
143143
144144 let aq = al(b)
145145
146146 let ar = al(c)
147147
148148 let as = al(d)
149149
150150 func at (au) = {
151151 let an = au
152152 if ($isInstanceOf(an, "ByteVector"))
153153 then {
154154 let av = an
155155 let aw = toBase58String(av)
156156 let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157157 $Tuple3(aw, ax.name, ax.decimals)
158158 }
159159 else if ($isInstanceOf(an, "Unit"))
160160 then {
161161 let ay = an
162162 $Tuple3("WAVES", "WAVES", 8)
163163 }
164164 else throw("Match error")
165165 }
166166
167167
168168 func az () = valueOrElse(getInteger(this, f), 1)
169169
170170
171-let aA = valueOrElse(getBoolean(this, a), true)
171+func aA () = valueOrElse(getInteger(ag, ((("rpd_balance_" + toBase58String(ah)) + "_") + toString(this))), 0)
172172
173-func aB () = if (aA)
173+
174+let aB = valueOrElse(getBoolean(this, a), true)
175+
176+func aC () = if (aB)
174177 then unit
175178 else throw("DApp is inactive at this moment")
176179
177180
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
181+func aD (aE) = if (containsElement([aq, ar, as], aE.callerPublicKey))
179182 then unit
180183 else throw("Only admin can call this function")
181184
182185
183-func aE (aF) = if ((aF == "WAVES"))
186+func aF (aG) = if ((aG == "WAVES"))
184187 then $Tuple4(unit, "WAVES", "WAVES", 8)
185188 else {
186- let aw = aF
187- let av = fromBase58String(aF)
189+ let aw = aG
190+ let av = fromBase58String(aG)
188191 let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189192 $Tuple4(av, aw, ax.name, ax.decimals)
190193 }
191194
192195
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
196+@Callable(aE)
197+func hashingRandom (aH,aI) = valueOrElse(aC(), valueOrElse(aD(aE), [StringEntry((toString(aH) + z), aI)]))
195198
196199
197200
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
201+@Callable(aE)
202+func initCaller (aJ) = valueOrElse(aC(), valueOrElse(aD(aE), [StringEntry(h, aJ)]))
200203
201204
202205
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), "")))
206+@Callable(aE)
207+func init (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb) = valueOrElse(aC(), if ((toString(aE.caller) != valueOrElse(getString(this, h), "")))
205208 then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
209+ else if ((size(aE.payments) != 1))
207210 then throw("One attached payment expected")
208- else if ((height > aK))
211+ else if ((height > aL))
209212 then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
213+ else if (if (ba)
214+ then (size(bb) != 3)
212215 else false)
213216 then throw("Freeze params list must have 3 items")
214217 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]))]
218+ let aH = az()
219+ let bc = toString(aH)
220+ let bd = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
221+ let be = bd._1
222+ let bf = bd._2
223+ let bg = at(bf)
224+ let bh = bg._1
225+ let bi = bg._2
226+ let bj = bg._3
227+ let bk = if (ba)
228+ then [BooleanEntry((bc + F), true), StringEntry((bc + G), bb[0]), IntegerEntry((bc + H), parseIntValue(bb[1])), IntegerEntry((bc + I), parseIntValue(bb[2]))]
226229 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)
230+ ([IntegerEntry((bh + "_launchpad"), aH), IntegerEntry(f, (aH + 1)), StringEntry((bc + i), aK), IntegerEntry((bc + j), height), IntegerEntry((bc + k), aL), IntegerEntry((bc + A), aM), StringEntry((bc + J), aN), IntegerEntry((bc + E), aV), IntegerEntry((bc + o), be), StringEntry((bc + n), bh), IntegerEntry((bc + m), aO), IntegerEntry((bc + w), 0), IntegerEntry((bc + N), 0), IntegerEntry((bc + q), aP), IntegerEntry((bc + r), aQ), IntegerEntry((bc + s), aU), IntegerEntry((bc + t), aR), IntegerEntry((bc + u), aS), IntegerEntry((bc + v), aT), StringEntry((bc + K), makeString(aW, ",")), BooleanEntry((bc + M), aX), IntegerEntry((bc + L), aY), IntegerEntry((bc + O), aZ), IntegerEntry(g, aH), StringEntry(h, "")] ++ bk)
228231 })
229232
230233
231234
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))
235+@Callable(aE)
236+func commitSwopfiSale (aH,bl) = valueOrElse(aC(), {
237+ let bm = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
238+ let be = bm._1
239+ let bf = bm._2
240+ let bn = aF(value(getString(this, (toString(aH) + J))))
241+ let bo = bn._1
242+ let bp = bn._2
243+ let bq = bn._3
244+ let br = bn._4
245+ let bs = valueOrElse(getInteger(ae, (toString(aE.caller) + x)), 0)
246+ let bt = (bs / getIntegerValue(this, (toString(aH) + s)))
247+ let bu = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + S)), 0)
248+ let bv = (bt - bu)
249+ let aL = value(getInteger(this, (toString(aH) + k)))
250+ let aM = value(getInteger(this, (toString(aH) + A)))
251+ let ba = valueOrElse(getBoolean(this, (toString(aH) + F)), false)
252+ if ((ak != aH))
250253 then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
254+ else if ((aL > height))
252255 then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
256+ else if ((height > (aL + aM)))
254257 then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
258+ else if (if (!(ba))
259+ then if ((size(aE.payments) != 1))
257260 then true
258- else (be != bn)
261+ else (bf != bo)
259262 else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
263+ then throw((("One attached payment in " + bq) + " expected"))
264+ else if (if (ba)
265+ then if ((size(aE.payments) != 2))
263266 then true
264- else (be != bn)
267+ else (bf != bo)
265268 else false)
266269 then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
270+ let bw = getStringValue(this, (toString(aH) + G))
271+ throw(((("Two attached payments expected: First in " + bq) + ", second in ") + bw))
269272 }
270- else if (if ((0 >= bs))
273+ else if (if ((0 >= bt))
271274 then true
272- else (0 >= bu))
275+ else (0 >= bv))
273276 then throw("Not enought SWOP in staking to buy tickets")
274277 else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
278+ let bx = getIntegerValue(this, (toString(aH) + r))
279+ let aP = getIntegerValue(this, (toString(aH) + q))
280+ let by = aF(getStringValue(this, (toString(aH) + n)))
281+ let bz = by._1
282+ let bA = by._2
283+ let bB = by._3
284+ let bC = by._4
285+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
286+ let bE = fraction(bD, getIntegerValue(this, (toString(aH) + m)), 100)
287+ let bF = (be / (bD + bE))
288+ let bG = min([bF, bv])
289+ let bH = (bG * (bD + bE))
290+ let bI = (be - bH)
291+ if ((bF == 0))
292+ then throw((("Not enought " + bq) + " to buy tickets"))
293+ else if ((bI != 0))
294+ then throw((((("Wrong payment. To buy " + toString(bG)) + "tickets you need to pay ") + toString(bH)) + bq))
292295 else {
293- let bj = if (aZ)
296+ let bk = if (ba)
294297 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))
298+ let bw = getStringValue(this, (toString(aH) + G))
299+ let bJ = getIntegerValue(this, (toString(aH) + I))
300+ let bK = $Tuple2(aE.payments[1].amount, aE.payments[1].assetId)
301+ let bL = bK._1
302+ let bM = bK._2
303+ let bN = at(bf)
304+ let bO = bN._1
305+ let bP = bN._2
306+ let bQ = bN._3
307+ let bR = (bJ * bF)
308+ if (if ((bO != bw))
306309 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+ else (bR != bL))
311+ then throw((((("You need to add " + toString(bR)) + " ") + bP) + " as a second payment"))
312+ else [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + ac), bL)]
310313 }
311314 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)])
315+ let bS = valueOrElse(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + T)), "")
316+ let bT = getIntegerValue(this, (toString(aH) + w))
317+ let bU = ((toString((bT + 1)) + "-") + toString((bT + bG)))
318+ let bV = (bS + (if ((bS != ""))
319+ then ("," + bU)
320+ else ("" + bU)))
321+ let bW = if ((bo == ah))
322+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
320323 else 0
321- if ((bV == bV))
324+ if ((bW == bW))
322325 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
326+ let bX = ([IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + S), (bu + bG)), IntegerEntry((toString(aH) + w), (bT + bG)), StringEntry((((toString(aE.caller) + "_") + toString(aH)) + T), bV)] ++ bk)
327+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
328+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
329+ else bX
327330 }
328331 else throw("Strict value is not equal to itself.")
329332 }
330333 }
331334 })
332335
333336
334337
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))
338+@Callable(aE)
339+func commitAccessListSale (aH,bl) = valueOrElse(aC(), {
340+ let bY = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
341+ let be = bY._1
342+ let bf = bY._2
343+ let bZ = aF(value(getString(this, (toString(aH) + J))))
344+ let bo = bZ._1
345+ let bp = bZ._2
346+ let bq = bZ._3
347+ let br = bZ._4
348+ let ca = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + X)), 0)
349+ let cb = valueOrElse(getInteger(this, (toString(aH) + B)), 0)
350+ let cc = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Y)), 0)
351+ let aO = getIntegerValue(this, (toString(aH) + m))
352+ let bx = getIntegerValue(this, (toString(aH) + r))
353+ let aT = getIntegerValue(this, (toString(aH) + v))
354+ let cd = aF(getStringValue(this, (toString(aH) + n)))
355+ let bz = cd._1
356+ let bA = cd._2
357+ let bB = cd._3
358+ let bC = cd._4
359+ let ce = fraction(fraction(bx, aT, pow(10, 0, bC, 0, 0, DOWN)), (100 + aO), 100)
360+ let aL = value(getInteger(this, (toString(aH) + k)))
361+ let aM = value(getInteger(this, (toString(aH) + A)))
362+ if ((ak != aH))
360363 then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
364+ else if ((aL > height))
362365 then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
366+ else if ((height > (aL + aM)))
364367 then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
368+ else if (if ((size(aE.payments) != 1))
366369 then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370+ else (bf != bo))
371+ then throw((("One attached payment in " + bq) + " expected"))
372+ else if ((cc >= aj))
370373 then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
374+ else if (if ((ce != be))
375+ then ((ce * 2) != be)
373376 else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
377+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ce)) + bq) + " per allocation"))
375378 else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
379+ let cf = (be / ce)
380+ let bW = if ((bo == ah))
381+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
379382 else 0
380- if ((bV == bV))
383+ if ((bW == bW))
381384 then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
385+ let bX = [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Y), (cc + cf)), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + X), (ca + be)), IntegerEntry((toString(aH) + B), (cb + be))]
386+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
387+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
388+ else bX
386389 }
387390 else throw("Strict value is not equal to itself.")
388391 }
389392 })
390393
391394
392395
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))
396+@Callable(aE)
397+func commitHighCompetitionSale (aH,bl) = valueOrElse(aC(), {
398+ let cg = $Tuple2(aE.payments[0].amount, aE.payments[0].assetId)
399+ let be = cg._1
400+ let bf = cg._2
401+ let ch = aF(value(getString(this, (toString(aH) + J))))
402+ let bo = ch._1
403+ let bp = ch._2
404+ let bq = ch._3
405+ let br = ch._4
406+ let aL = value(getInteger(this, (toString(aH) + k)))
407+ let aM = value(getInteger(this, (toString(aH) + A)))
408+ let ci = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + V)), 0)
409+ let cj = valueOrElse(getBoolean(this, (toString(aH) + M)), false)
410+ if ((ak != aH))
408411 then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
412+ else if (!(cj))
410413 then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
414+ else if ((aL > height))
412415 then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
416+ else if ((height > (aL + aM)))
414417 then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
418+ else if (if ((size(aE.payments) != 1))
416419 then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
420+ else (bf != bo))
421+ then throw((("One attached payment in " + bq) + " expected"))
419422 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))
423+ let bx = getIntegerValue(this, (toString(aH) + r))
424+ let aP = getIntegerValue(this, (toString(aH) + q))
425+ let ck = aF(getStringValue(this, (toString(aH) + n)))
426+ let bz = ck._1
427+ let bA = ck._2
428+ let bB = ck._3
429+ let bC = ck._4
430+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
431+ let bE = fraction(bD, getIntegerValue(this, (toString(aH) + L)), 100)
432+ let bF = (be / (bD + bE))
433+ let cl = (bF * (bD + bE))
434+ let bI = (be - cl)
435+ if ((bF == 0))
436+ then throw((("Not enought " + bq) + " to buy tickets"))
437+ else if ((bI != 0))
438+ then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(cl)) + bq))
436439 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)])
440+ let bS = valueOrElse(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + U)), "")
441+ let bT = getIntegerValue(this, (toString(aH) + N))
442+ let bU = ((toString((bT + 1)) + "-") + toString((bT + bF)))
443+ let bV = (bS + (if ((bS != ""))
444+ then ("," + bU)
445+ else ("" + bU)))
446+ let bW = if ((bo == ah))
447+ then invoke(ag, "lockNeutrino", nil, [AttachedPayment(bf, be)])
445448 else 0
446- if ((bV == bV))
449+ if ((bW == bW))
447450 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
451+ let bX = [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + V), (ci + bF)), IntegerEntry((toString(aH) + N), (bT + bF)), StringEntry((((toString(aE.caller) + "_") + toString(aH)) + U), bV)]
452+ if (!(isDefined(getString(this, (((toString(aE.caller) + "_") + toString(aH)) + y)))))
453+ then (bX ++ [StringEntry((((toString(aE.caller) + "_") + toString(aH)) + y), bl)])
454+ else bX
452455 }
453456 else throw("Strict value is not equal to itself.")
454457 }
455458 }
456459 })
457460
458461
459462
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))
463+@Callable(aE)
464+func finalise (aH,cm,cn) = valueOrElse(aC(), valueOrElse(aD(aE), {
465+ let co = getStringValue(this, (toString(aH) + z))
466+ let cp = toBase58String(sha256((toBytes(cm) + toBytes(cn))))
467+ if ((cp != co))
465468 then throw("vrf Height hash not matching")
466469 else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getIntegerValue(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = (((((cs + cw) + cu) + cx) + ct) + cv)
483- if ((cr > (cs + cw)))
470+ let cq = aF(value(getString(this, (toString(aH) + J))))
471+ let bo = cq._1
472+ let bp = cq._2
473+ let bq = cq._3
474+ let br = cq._4
475+ let aK = addressFromStringValue(getStringValue(this, (toString(aH) + i)))
476+ let aO = getIntegerValue(this, (toString(aH) + m))
477+ let cr = getIntegerValue(this, (toString(aH) + L))
478+ let cs = valueOrElse(getInteger(this, (toString(aH) + D)), 0)
479+ let ct = getIntegerValue(this, (toString(aH) + p))
480+ let cu = valueOrElse(getIntegerValue(this, (toString(aH) + P)), 0)
481+ let cv = fraction(ct, aO, 100)
482+ let cw = fraction(cu, cr, 100)
483+ let cx = getIntegerValue(this, (toString(aH) + C))
484+ let cy = fraction(cx, aO, 100)
485+ let cz = (((((ct + cx) + cv) + cy) + cu) + cw)
486+ if ((cs > (ct + cx)))
484487 then throw("Can't transfer negative value to project")
485488 else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
489+ let bW = if ((bo == ah))
490+ then invoke(ag, "unlockNeutrino", [cz, toBase58String(ah)], nil)
488491 else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, (((cs + ct) + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
492+ if ((bW == bW))
493+ then [IntegerEntry((toString(aH) + l), height), ScriptTransfer(aK, (((ct + cu) + cx) - cs), bo), ScriptTransfer(af, ((cv + cy) + cw), bo)]
491494 else throw("Strict value is not equal to itself.")
492495 }
493496 }
494497 }))
495498
496499
497500
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))
501+@Callable(aE)
502+func claim (aH) = valueOrElse(aC(), {
503+ let cA = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + S)), 0)
504+ let cB = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + V)), 0)
505+ let cc = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Y)), 0)
506+ let cC = valueOrElse(getBoolean(this, (((toString(aE.caller) + "_") + toString(aH)) + Z)), false)
507+ let cD = valueOrElse(getInteger(this, (toString(aH) + l)), 0)
508+ if ((cD == 0))
506509 then throw("You can't claim because results are not finalized")
507- else if (cB)
510+ else if (cC)
508511 then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
512+ else if (if (if ((cA == 0))
513+ then (cc == 0)
511514 else false)
512- then (cA == 0)
515+ then (cB == 0)
513516 else false)
514517 then throw("You can't claim because you don't buy anything")
515518 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))
519+ let cE = aF(value(getString(this, (toString(aH) + J))))
520+ let bo = cE._1
521+ let bp = cE._2
522+ let bq = cE._3
523+ let br = cE._4
524+ let cF = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + aa)), 0)
525+ let cG = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + ab)), 0)
526+ let cH = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + W)), 0)
527+ let aO = getIntegerValue(this, (toString(aH) + m))
528+ let cr = getIntegerValue(this, (toString(aH) + L))
529+ let cI = min([cc, cH])
530+ let bx = getIntegerValue(this, (toString(aH) + r))
531+ let aP = getIntegerValue(this, (toString(aH) + q))
532+ let cJ = aF(getStringValue(this, (toString(aH) + n)))
533+ let bz = cJ._1
534+ let bA = cJ._2
535+ let bB = cJ._3
536+ let bC = cJ._4
537+ let bD = fraction(aP, bx, pow(10, 0, bC, 0, 0, DOWN))
538+ let aT = getIntegerValue(this, (toString(aH) + v))
539+ let cK = (((cF * aP) + (cI * aT)) + (cG * aP))
540+ let cL = ((cc - cI) * aT)
541+ let cM = fraction(fraction(cL, bx, pow(10, 0, bC, 0, 0, DOWN)), (100 + aO), 100)
542+ let cN = fraction(((cA - cF) * bD), (100 + aO), 100)
543+ let cO = fraction(((cB - cG) * bD), (100 + cr), 100)
544+ let cP = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + R)), 0)
545+ if (if (if ((0 > cM))
545546 then true
546547 else (0 > cN))
548+ then true
549+ else (0 > cO))
547550 then throw("Error with allowed allocation param or wonned tickets param please contact support")
548551 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+ let cQ = (((cN + cO) + cM) - cP)
553+ let cR = if ((cQ > 0))
554+ then [ScriptTransfer(aE.caller, cQ, bo), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + R), cQ)]
552555 else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
556+ let bW = if (if ((cQ > 0))
557+ then (bo == ah)
555558 else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
559+ then invoke(ag, "unlockNeutrino", [cQ, toBase58String(ah)], nil)
557560 else 0
558- if ((bV == bV))
561+ if ((bW == bW))
559562 then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), ""), ",")
561- if (if ((size(cR) == 0))
563+ let cS = split(valueOrElse(getString(this, (toString(aH) + K)), ""), ",")
564+ if (if ((size(cS) == 0))
562565 then true
563- else (cR[0] == "claimAll"))
566+ else (cS[0] == "claimAll"))
564567 then {
565- let cS = if ((cJ > 0))
566- then [ScriptTransfer(aD.caller, cJ, by)]
568+ let cT = if ((cK > 0))
569+ then [ScriptTransfer(aE.caller, cK, bz)]
567570 else nil
568- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
571+ (([BooleanEntry((((toString(aE.caller) + "_") + toString(aH)) + Z), true), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Q), cK)] ++ cT) ++ cR)
569572 }
570- else if ((cR[0] == "claimPeriod"))
573+ else if ((cS[0] == "claimPeriod"))
571574 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)]
575+ let cU = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + Q)), 0)
576+ let cV = value(parseInt(cS[2]))
577+ let cW = (value(parseInt(cS[3])) + cD)
578+ let cX = (cV + cW)
579+ let cY = fraction(cK, value(parseInt(cS[1])), 100)
580+ let cZ = (cY + (if ((height > cW))
581+ then (fraction((cK - cY), (min([height, cX]) - cW), cV) - cU)
582+ else (0 - cU)))
583+ let da = if ((cK >= (cU + cZ)))
584+ then [BooleanEntry((((toString(aE.caller) + "_") + toString(aH)) + Z), true)]
581585 else nil
582- if (if ((cX > 0))
586+ if (if ((cZ > 0))
583587 then true
584- else (cP > 0))
588+ else (cQ > 0))
585589 then {
586- let cS = if ((cX > 0))
587- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cX)), ScriptTransfer(aD.caller, cX, by)]
590+ let cT = if ((cZ > 0))
591+ then [IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + Q), (cU + cZ)), ScriptTransfer(aE.caller, cZ, bz)]
588592 else nil
589- (cQ ++ cS)
593+ (cR ++ cT)
590594 }
591595 else throw("Nothing to claim")
592596 }
593597 else throw("Unknown claim function")
594598 }
595599 else throw("Strict value is not equal to itself.")
596600 }
597601 }
598602 })
599603
600604
601605
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+@Callable(aE)
607+func claimFreezeToken (aH) = valueOrElse(aC(), {
608+ let ba = valueOrElse(getBoolean(this, (toString(aH) + F)), false)
609+ if (!(isDefined(getInteger(this, (toString(aH) + l)))))
606610 then throw("You can't claim because results are not finalized")
607- else if (!(aZ))
611+ else if (!(ba))
608612 then throw("There are no additional token freezing for this launchpad")
609613 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))
614+ let bz = fromBase58String(getStringValue(this, (toString(aH) + G)))
615+ let db = valueOrElse(getInteger(this, (((toString(aE.caller) + "_") + toString(aH)) + ac)), 0)
616+ let aL = valueOrElse(getInteger(this, (toString(aH) + k)), 0)
617+ let aM = valueOrElse(getInteger(this, (toString(aH) + A)), 0)
618+ let dc = getIntegerValue(this, (toString(aH) + H))
619+ let dd = ((aL + aM) + dc)
620+ if ((db == 0))
617621 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)]
622+ else if ((dd > height))
623+ then throw(("Your tokens freezed teel " + toString(dd)))
624+ else [ScriptTransfer(aE.caller, db, bz), IntegerEntry((((toString(aE.caller) + "_") + toString(aH)) + ac), 0)]
621625 }
622626 })
623627
624628
625629
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)]
630+@Callable(aE)
631+func transferBuyAsset (aH,de) = valueOrElse(aC(), valueOrElse(aD(aE), {
632+ let aK = addressFromStringValue(getStringValue(this, (toString(aH) + i)))
633+ let df = aF(value(getString(this, (toString(aH) + J))))
634+ let bo = df._1
635+ let bp = df._2
636+ let bq = df._3
637+ let br = df._4
638+[IntegerEntry((toString(aH) + D), de), ScriptTransfer(aK, de, bo)]
635639 }))
636640
637641
638642
639-@Callable(aD)
640-func shutdown () = valueOrElse(aC(aD), if (!(aA))
643+@Callable(aE)
644+func shutdown () = valueOrElse(aD(aE), if (!(aB))
641645 then throw("DApp already inactive")
642646 else [BooleanEntry(a, false)])
643647
644648
645649
646-@Callable(aD)
647-func activate () = valueOrElse(aC(aD), if (aA)
650+@Callable(aE)
651+func activate () = valueOrElse(aD(aE), if (aB)
648652 then throw("DApp already active")
649653 else [BooleanEntry(a, true)])
650654
651655
652-@Verifier(de)
653-func df () = {
654- let dg = {
655- let dh = if (sigVerify(de.bodyBytes, de.proofs[0], aq))
656+@Verifier(dg)
657+func dh () = {
658+ let di = {
659+ let dj = if (sigVerify(dg.bodyBytes, dg.proofs[0], aq))
656660 then 1
657661 else 0
658- let di = if (sigVerify(de.bodyBytes, de.proofs[1], ar))
662+ let dk = if (sigVerify(dg.bodyBytes, dg.proofs[1], ar))
659663 then 1
660664 else 0
661- let dj = if (sigVerify(de.bodyBytes, de.proofs[2], as))
665+ let dl = if (sigVerify(dg.bodyBytes, dg.proofs[2], as))
662666 then 1
663667 else 0
664- (((dh + di) + dj) >= 2)
668+ (((dj + dk) + dl) >= 2)
665669 }
666- let dk = if (if (if (sigVerify(de.bodyBytes, de.proofs[0], aq))
670+ let dm = if (if (if (sigVerify(dg.bodyBytes, dg.proofs[0], aq))
667671 then true
668- else sigVerify(de.bodyBytes, de.proofs[0], ar))
672+ else sigVerify(dg.bodyBytes, dg.proofs[0], ar))
669673 then true
670- else sigVerify(de.bodyBytes, de.proofs[0], as))
674+ else sigVerify(dg.bodyBytes, dg.proofs[0], as))
671675 then true
672- else sigVerify(de.bodyBytes, de.proofs[0], ai)
673- let an = de
676+ else sigVerify(dg.bodyBytes, dg.proofs[0], ai)
677+ let an = dg
674678 if ($isInstanceOf(an, "DataTransaction"))
675679 then {
676- let dl = an
680+ let dn = an
677681 if (valueOrElse(getBoolean(ad, e), false))
678- then dk
682+ then dm
679683 else false
680684 }
681- else dg
685+ else di
682686 }
683687

github/deemru/w8io/3ef1775 
305.31 ms