tx · 5DJKTBUbZTpSd8zzPtqirMmNwaKcB2TyakNtmBrqe2tf

3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi:  -0.01400000 Waves

2021.12.14 16:25 [1833982] smart account 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi > SELF 0.00000000 Waves

{ "type": 13, "id": "5DJKTBUbZTpSd8zzPtqirMmNwaKcB2TyakNtmBrqe2tf", "fee": 1400000, "feeAssetId": null, "timestamp": 1639488359447, "version": 2, "chainId": 84, "sender": "3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi", "senderPublicKey": "FRotxVW1MhTQRDvVbMM4yvYGWzBFvHqvMsonvGeEXQUy", "proofs": [ "4N6wco3QbcmadetDSNVULb4VjaCpLX4vP6q28n6PgsEwDt6RwXT6a5u2ZCSYDwnh7PpycZYrt91Mykw5YDizVLkD", "4meNtqvrYfdHgUHKqXig1d6uiofujjzaDupEzd1kewQULZKuMgLZKZi5Nqkecy1rbpLpTxhpRZWKN1xXS8gwpqNv" ], "script": "base64:AAIFAAAAAAAAEzoIAhIECgIBCBIDCgEIEhQKEggBAQgBAQEBAQEBARgEAQEEGBIECgIBCBIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIDCgEBEgQKAgEBEgASABoPCgJhMRIJa2V5QWN0aXZlGhUKAmEyEg9rZXlBZG1pblB1YktleTEaFQoCYTMSD2tleUFkbWluUHViS2V5MhoVCgJhNBIPa2V5QWRtaW5QdWJLZXkzGicKAmE1EiFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMaGAoCYTYSEmtleUxhdW5jaHBhZE5leHRJZBoaCgJhNxIUa2V5TGF1bmNocGFkQWN0aXZlSWQaEwoCYTgSDWtleUluaXRDYWxsZXIaEAoCYTkSCmtleUFkZHJlc3MaEwoCYjESDWtleUluaXRIZWlnaHQaFAoCYjISDmtleVN0YXJ0SGVpZ2h0GhcKAmIzEhFrZXlGaW5hbGlzZUhlaWdodBoSCgJiNBIMa2V5Q29taXNzaW9uGhAKAmI1EgprZXlBc3NldElkGhkKAmI2EhNrZXlUb3RhbFRva2VuQW1vdW50GiAKAmI3EhprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZBoYCgJiOBISa2V5VG9rZW5zUGVyVGlja2V0GhYKAmI5EhBrZXlQcmljZVBlclRva2VuGhYKAmMxEhBrZXlTd29wUGVyVGlja2V0GhwKAmMyEhZrZXlTd29wZmlUaWNrZXRzQW1vdW50Gh0KAmMzEhdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudBocCgJjNBIWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbhoZCgJjNRITa2V5VGlja2V0TGFzdE51bWJlchoZCgJjNhITa2V5R292ZXJuYW5jZVN0YWtlZBoSCgJjNxIMa2V5VXNlclJlZklkGhMKAmM4Eg1rZXlWZXJpZnlIYXNoGhEKAmM5EgtrZXlEdXJhdGlvbhoiCgJkMRIca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZxorCgJkMhIla2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZ0ZpbmFsaXplZBoZCgJkMxITa2V5VHJhbnNmZXJCdXlBc3NldBoaCgJkNBIUa2V5RnJlZXpTd29wRHVyYXRpb24aHgoCZDUSGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbhoWCgJkNhIQa2V5RnJlZXplVG9rZW5JZBocCgJkNxIWa2V5RnJlZXplVG9rZW5EdXJhdGlvbhodCgJkOBIXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQaEQoCZDkSC2tleUJ1eVRva2VuGhQKAmUxEg5rZXlDbGFpbVBhcmFtcxohCgJlMhIba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uGhwKAmUzEhZrZXlIaWdoQ29tcGV0aXRpb25TYWxlGhsKAmU0EhVrZXlIQ1RpY2tldExhc3ROdW1iZXIaHgoCZTUSGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudBoiCgJlNhIca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQxogCgJlNxIaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQaFAoCZTgSDmtleVVzZXJUaWNrZXRzGhYKAmU5EhBrZXlVc2VySENUaWNrZXRzGiIKAmYxEhxrZXlVc2VySENCb3VnaHRUaWNrZXRzQW1vdW50GiEKAmYyEhtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMaJgoCZjMSIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGh4KAmY0EhhrZXlVc2VyQm91Z2h0QWxsb2NhdGlvbnMaGAoCZjUSEmtleVVzZXJDbGFpbVN0YXR1cxogCgJmNhIaa2V5VXNlcldpbm5lZFRpY2tldHNBbW91bnQaLwoCZjcSKWtleVVzZXJXaW5uZWRIaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50GhgKAmY4EhJrZXlVc2VyRnJlZXplVG9rZW4aDAoCZjkSBm9yYWNsZRoQCgJnMRIKZ292ZXJuYW5jZRoWCgJnMhIQY29tbWlzc2lvbldhbGxldBoYCgJnMxISc3Rha2luZ1VTRE5BZGRyZXNzGgoKAmc0EgRVU0ROGhgKAmc1EhJhZG1pblB1YktleVN0YWtpbmcaGgoCZzYSFG1heEFsbG9jYXRpb25zQW1vdW50Gg4KAmc3Eghpc0FjdGl2ZRoXCgJnOBIRYWN0aXZlTGF1bmNocGFkSWQaEQoCZzkSC2dldEFkbWluUHViGhEKAmgxEgtrZXlBZG1pblB1YhoNCgJoMhIHJG1hdGNoMBoMCgJoMxIGc3RyaW5nGg0KAmg0Egdub3RoaW5nGhIKAmg1EgxhZG1pblB1YktleTEaEgoCaDYSDGFkbWluUHViS2V5MhoSCgJoNxIMYWRtaW5QdWJLZXkzGhIKAmg4EgxnZXRBc3NldEluZm8aDQoCaDkSB2Fzc2V0SWQaDgoCaTESCHN0cmluZ0lkGgoKAmkyEgRpbmZvGgsKAmkzEgV3YXZlcxoYCgJpNBISZ2V0TGF1bmNocGFkTmV4dElkGhYKAmk1EhBzdGFrZWRVc2RuQW1vdW50GhwKAmk2EhZnZXRBc3NldEluZm9Gcm9tU3RyaW5nGg4KAmk3Eghhc3NldFN0choRCgJpOBILbGF1bmNocGFkSWQaCgoCaTkSBGhhc2gaDQoCajESB2FkZHJlc3MaFAoCajISDnByb2plY3RBZGRyZXNzGhEKAmozEgtzdGFydEhlaWdodBoOCgJqNBIIZHVyYXRpb24aDgoCajUSCGJ1eVRva2VuGhAKAmo2Egpjb21taXNzaW9uGhUKAmo3Eg90b2tlbnNQZXJUaWNrZXQaEwoCajgSDXByaWNlUGVyVG9rZW4aGQoCajkSE3N3b3BmaVRpY2tldHNBbW91bnQaGgoCazESFGNhbXBhaWduVG9rZW5zQW1vdW50GhkKAmsyEhN0b2tlbnNQZXJBbGxvY2F0aW9uGhMKAmszEg1zd29wUGVyVGlja2V0GhgKAms0EhJzd29wRnJlZXplRHVyYXRpb24aEQoCazUSC2NsYWltUGFyYW1zGhkKAms2EhNIaWdoQ29tcGV0aXRpb25TYWxlGh4KAms3EhhoaWdoQ29tcGV0aXRpb25Db21pc3Npb24aIgoCazgSHGhpZ2hDb21wZXRpdGlvblRpY2tldHNBbW91bnQaGwoCazkSFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbhoSCgJsMRIMZnJlZXplUGFyYW1zGhQKAmwyEg5sYXVuY2hwYWRJZFN0choRCgJsMxILJHQwNjQ2MDY1MzUaDwoCbDQSCXBtdEFtb3VudBoQCgJsNRIKcG10QXNzZXRJZBoRCgJsNhILJHQwNjU0NDY2MTcaEwoCbDcSDXBtdFN0ckFzc2V0SWQaEgoCbDgSDHBtdEFzc2V0TmFtZRoRCgJsORILcG10RGVjaW1hbHMaGwoCbTESFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeRoLCgJtMhIFcmVmSWQaEQoCbTMSCyR0MDkxMzA5MjA1GhEKAm00EgskdDA5MjEwOTM2MBoQCgJtNRIKYnV5QXNzZXRJZBoTCgJtNhINYnV5QXNzZXRTdHJJZBoSCgJtNxIMYnV5QXNzZXROYW1lGhYKAm04EhBidXlBc3NldERlY2ltYWxzGhEKAm05EgtzdGFrZWRTd29wcxodCgJuMRIXYWxsb3dlZFRpY2tldHNBbW91bnRBbGwaGQoCbjISE2JvdWdodFRpY2tldHNBbW91bnQaGgoCbjMSFGFsbG93ZWRUaWNrZXRzQW1vdW50GhMKAm40Eg1mcmVlemVUb2tlbklkGhAKAm41Egp0b2tlblByaWNlGhMKAm42Eg0kdDAxMTI0ODExMzkyGg0KAm43Egd0b2tlbklkGhUKAm44Eg90b2tlblN0ckFzc2V0SWQaFAoCbjkSDnRva2VuQXNzZXROYW1lGhMKAm8xEg10b2tlbkRlY2ltYWxzGhEKAm8yEgt0aWNrZXRQcmljZRoZCgJvMxITY29tbWlzc2lvblBlclRpY2tldBoVCgJvNBIPYnV5VGlja2V0QW1vdW50GhwKAm81EhZhbGxvd2VkQnV5VGlja2V0QW1vdW50GiIKAm82EhxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uGgwKAm83EgZjaGFuZ2UaGgoCbzgSFGZyZWV6ZVRva2VuUGVyVGlja2V0GhMKAm85Eg0kdDAxMjU1NjEyNjQzGhUKAnAxEg9wbXRBbW91bnRGcmVlemUaFgoCcDISEHBtdEFzc2V0SWRGcmVlemUaEwoCcDMSDSR0MDEyNjYwMTI3NTEaGQoCcDQSE3BtdEZyZWV6ZVN0ckFzc2V0SWQaGAoCcDUSEnBtdEZyZWV6ZUFzc2V0TmFtZRoXCgJwNhIRcG10RnJlZXplRGVjaW1hbHMaFgoCcDcSEG5lZWRGcmVlemVUb2tlbnMaHgoCcDgSGHVzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxocCgJwORIWbGFzdEJvdWdodFRpY2tldE51bWJlchoRCgJxMRILYm91Z2h0UmFuZ2UaIQoCcTISG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycxoJCgJxMxIDaW52Gg8KAnE0EgliYXNlRW50cnkaEwoCcTUSDSR0MDE0Nzk4MTQ4NzMaEwoCcTYSDSR0MDE0ODc4MTUwMjgaGQoCcTcSE3VzZXJVc2RuSW5NYXJrZXRpbmcaFQoCcTgSD3VzZG5Jbk1hcmtldGluZxoXCgJxORIRYm91Z2h0QWxsb2NhdGlvbnMaEwoCcjESDSR0MDE1Njk3MTU4NDEaIgoCcjISHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24aGgoCcjMSFGJ1eUFsbG9jYXRpb25zQW1vdW50GhMKAnI0Eg0kdDAxODE1MDE4MjI1GhMKAnI1Eg0kdDAxODIzMDE4MzgwGhsKAnI2EhVib3VnaHRIQ1RpY2tldHNBbW91bnQaGQoCcjcSE2hpZ2hDb21wZXRpdGlvblNhbGUaEwoCcjgSDSR0MDE5NjI5MTk3NzMaGwoCcjkSFWJ1eVByaWNlV2l0aENvbWlzc2lvbhoPCgJzMRIJdnJmSGVpZ2h0GhAKAnMyEgpzZWNyZXRXb3JkGg8KAnMzEglzYXZlZEhhc2gaDgoCczQSCGNhbGNIYXNoGhMKAnM1Eg0kdDAyMjU1ODIyNzA4GhIKAnM2Egxjb21taXNzaW9uSEMaGAoCczcSEnRyYW5zZmVyZWRCdXlBc3NldBohCgJzOBIbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50GhwKAnM5EhZzd29wZmlIQ0J1eUFzc2V0QW1vdW50GhwKAnQxEhZzd29wZmlNZW1iZXJzQ29taXNzaW9uGhcKAnQyEhFzd29wZmlIQ0NvbWlzc2lvbhokCgJ0MxIedG90YWxBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGhgKAnQ0EhJtYXJrZXRpbmdDb21pc3Npb24aEwoCdDUSDXVuc3Rha2VBbW91bnQaFQoCdDYSD3VzZXJDbGFpbVN0YXR1cxoTCgJ0NxINYm91Z2h0VGlja2V0cxoTCgJ0OBINJHQwMjU1NjcyNTcxNxoTCgJ0ORINd29ubmVkVGlja2V0cxoaCgJ1MRIUYXdhaWxhYmxlQWxsb2NhdGlvbnMaGAoCdTISEmFsbG93ZWRBbGxvY2F0aW9ucxoTCgJ1MxINJHQwMjYzNjQyNjUwOBoaCgJ1NBIUdHJhbnNmZXJUb2tlbnNBbW91bnQaIQoCdTUSG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucxocCgJ1NhIWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucxogCgJ1NxIaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMaHAoCdTgSFnJldHVybmVkQnV5QXNzZXRBbW91bnQaEgoCdTkSDHRyYW5zZmVyVXNkbhoUCgJ2MRIOdHJhbnNmZXJUb2tlbnMaFwoCdjISEXVzZXJUb2tlbnNGcmVlemVkGhkKAnYzEhNmcmVlemVUb2tlbkR1cmF0aW9uGhQKAnY0Eg5ibG9ja0VuZEhlaWdodBoMCgJ2NRIGYW1vdW50GhMKAnY2Eg0kdDAzMDE4MDMwMzMwGgwKAnY3EgZ2ZXJpZnkaGQoCdjgSE211bHRpU2lnbmVkQnlBZG1pbnMaGAoCdjkSEmFkbWluUHViS2V5MVNpZ25lZBoYCgJ3MRISYWRtaW5QdWJLZXkyU2lnbmVkGhgKAncyEhJhZG1pblB1YktleTNTaWduZWQaEwoCdzMSDXNpZ25lZEJ5QWRtaW4aCQoCdzQSA2R0eAAAAEYAAAAAAmExAgAAAAZhY3RpdmUAAAAAAmEyAgAAAAthZG1pbl9wdWJfMQAAAAACYTMCAAAAC2FkbWluX3B1Yl8yAAAAAAJhNAIAAAALYWRtaW5fcHViXzMAAAAAAmE1AgAAACFsYXVuY2hwYWRfZGF0YV90cmFuc2FjdGlvbl9zdGF0dXMAAAAAAmE2AgAAABFsYXVuY2hwYWRfbmV4dF9pZAAAAAACYTcCAAAAE2xhdW5jaHBhZF9hY3RpdmVfaWQAAAAAAmE4AgAAAAtpbml0X2NhbGxlcgAAAAACYTkCAAAACF9hZGRyZXNzAAAAAAJiMQIAAAAMX2luaXRfaGVpZ2h0AAAAAAJiMgIAAAANX3N0YXJ0X2hlaWdodAAAAAACYjMCAAAAEF9maW5hbGlzZV9oZWlnaHQAAAAAAmI0AgAAAApfY29taXNzaW9uAAAAAAJiNQIAAAAJX2Fzc2V0X2lkAAAAAAJiNgIAAAATX3RvdGFsX3Rva2VuX2Ftb3VudAAAAAACYjcCAAAAFV90b3RhbF9idXlfYXNzZXRfc29sZAAAAAACYjgCAAAAEl90b2tlbnNfcGVyX3RpY2tldAAAAAACYjkCAAAAEF9wcmljZV9wZXJfdG9rZW4AAAAAAmMxAgAAABBfc3dvcF9wZXJfdGlja2V0AAAAAAJjMgIAAAAXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAAAAAAmMzAgAAABNfdG9rZW5zX2FjY2Vzc19saXN0AAAAAAJjNAIAAAAWX3Rva2Vuc19wZXJfYWxsb2NhdGlvbgAAAAACYzUCAAAAJF90aWNrZXRfbGFzdF9udW1iZXJfaGlnaF9jb21wZXRpdGlvbgAAAAACYzYCAAAADF9TV09QX2Ftb3VudAAAAAACYzcCAAAAB19yZWZfaWQAAAAAAmM4AgAAAAxfdmVyaWZ5X2hhc2gAAAAAAmM5AgAAAAlfZHVyYXRpb24AAAAAAmQxAgAAACdfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmcAAAAAAmQyAgAAADFfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmdfZmluYWxpemVkAAAAAAJkMwIAAAATX3RyYW5zZmVyX2J1eV9hc3NldAAAAAACZDQCAAAAFV9mcmVlemVfc3dvcF9kdXJhdGlvbgAAAAACZDUCAAAAGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAAAAACZDYCAAAAEF9mcmVlemVfdG9rZW5faWQAAAAAAmQ3AgAAABZfZnJlZXplX3Rva2VuX2R1cmF0aW9uAAAAAAJkOAIAAAAYX2ZyZWV6ZV90b2tlbl9wZXJfdGlja2V0AAAAAAJkOQIAAAAKX2J1eV90b2tlbgAAAAACZTECAAAADV9jbGFpbV9wYXJhbXMAAAAAAmUyAgAAABtfaGlnaF9jb21wZXRpdGlvbl9jb21pc3Npb24AAAAAAmUzAgAAABZfaGlnaF9jb21wZXRpdGlvbl9zYWxlAAAAAAJlNAIAAAAkX2hpZ2hfY29tcGV0aXRpb25fdGlja2V0X2xhc3RfbnVtYmVyAAAAAAJlNQIAAAAZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAAAAACZTYCAAAAJl90b3RhbF9idXlfYXNzZXRfc29sZF9oaWdoX2NvbXBldGl0aW9uAAAAAAJlNwIAAAAPX2JvdWdodF90aWNrZXRzAAAAAAJlOAIAAAAPX3RpY2tldHNfbnVtYmVyAAAA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", "height": 1833982, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 472AGAchqVUaSHUBUBHuXF6feBdwjbsh6bGao5kS8Egc Next: DY7MKkABKfTiV8XzFkqjR1RNnAw25S7FwSQnrGPjGaHq Diff:
OldNewDifferences
7979
8080 let M = "_high_competition_sale"
8181
82-let N = "_ticket_last_number"
82+let N = "_high_competition_ticket_last_number"
8383
8484 let O = "_tickets_high_competition"
8585
103103
104104 let Y = "_tickets_result"
105105
106-let Z = "_freeze_token_amount"
106+let Z = "_tickets_result_high_competition"
107107
108-let aa = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
108+let aa = "_freeze_token_amount"
109109
110-let ab = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
110+let ab = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
111111
112-let ac = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
112+let ac = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
113113
114-let ad = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
114+let ad = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
115115
116-let ae = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
116+let ae = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
117117
118-let af = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
118+let af = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
119119
120-let ag = 2
120+let ag = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
121121
122-let ah = valueOrElse(getBoolean(this, a), true)
122+let ah = 2
123123
124-let ai = valueOrElse(getIntegerValue(this, g), -1)
124+let ai = valueOrElse(getBoolean(this, a), true)
125125
126-func aj (ak) = {
127- let al = getString(aa, ak)
128- if ($isInstanceOf(al, "String"))
126+let aj = valueOrElse(getIntegerValue(this, g), -1)
127+
128+func ak (al) = {
129+ let am = getString(ab, al)
130+ if ($isInstanceOf(am, "String"))
129131 then {
130- let am = al
131- fromBase58String(am)
132+ let an = am
133+ fromBase58String(an)
132134 }
133135 else {
134- let an = al
136+ let ao = am
135137 throw("Admin public key is empty")
136138 }
137139 }
138140
139141
140-let ao = aj(b)
142+let ap = ak(b)
141143
142-let ap = aj(c)
144+let aq = ak(c)
143145
144-let aq = aj(d)
146+let ar = ak(d)
145147
146-func ar (as) = {
147- let al = as
148- if ($isInstanceOf(al, "ByteVector"))
148+func as (at) = {
149+ let am = at
150+ if ($isInstanceOf(am, "ByteVector"))
149151 then {
150- let at = al
151- let au = toBase58String(at)
152- let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
153- $Tuple3(au, av.name, av.decimals)
152+ let au = am
153+ let av = toBase58String(au)
154+ let aw = valueOrErrorMessage(assetInfo(au), (("Asset " + av) + " doesn't exist"))
155+ $Tuple3(av, aw.name, aw.decimals)
154156 }
155- else if ($isInstanceOf(al, "Unit"))
157+ else if ($isInstanceOf(am, "Unit"))
156158 then {
157- let aw = al
159+ let ax = am
158160 $Tuple3("WAVES", "WAVES", 8)
159161 }
160162 else throw("Match error")
161163 }
162164
163165
164-func ax () = valueOrElse(getInteger(this, f), 1)
166+func ay () = valueOrElse(getInteger(this, f), 1)
165167
166168
167-func ay () = valueOrElse(getInteger(ad, ((("rpd_balance_" + toBase58String(ae)) + "_") + toString(this))), 0)
169+func az () = valueOrElse(getInteger(ae, ((("rpd_balance_" + toBase58String(af)) + "_") + toString(this))), 0)
168170
169171
170-func az (aA) = if ((aA == "WAVES"))
172+func aA (aB) = if ((aB == "WAVES"))
171173 then $Tuple4(unit, "WAVES", "WAVES", 8)
172174 else {
173- let au = aA
174- let at = fromBase58String(aA)
175- let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
176- $Tuple4(at, au, av.name, av.decimals)
175+ let av = aB
176+ let au = fromBase58String(aB)
177+ let aw = valueOrErrorMessage(assetInfo(au), (("Asset " + av) + " doesn't exist"))
178+ $Tuple4(au, av, aw.name, aw.decimals)
177179 }
178180
179181
180-@Callable(aB)
181-func hashingRandom (aC,aD) = if (!(ah))
182+@Callable(aC)
183+func hashingRandom (aD,aE) = if (!(ai))
182184 then throw("DApp is inactive at this moment")
183- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
185+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
184186 then throw("Only admin can call this function")
185- else [StringEntry((toString(aC) + z), aD)]
187+ else [StringEntry((toString(aD) + z), aE)]
186188
187189
188190
189-@Callable(aB)
190-func initCaller (aE) = if (!(ah))
191+@Callable(aC)
192+func initCaller (aF) = if (!(ai))
191193 then throw("DApp is inactive at this moment")
192- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
194+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
193195 then throw("Only admin can call this function")
194- else [StringEntry(h, aE)]
196+ else [StringEntry(h, aF)]
195197
196198
197199
198-@Callable(aB)
199-func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = if (!(ah))
200+@Callable(aC)
201+func init (aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX) = if (!(ai))
200202 then throw("DApp is inactive at this moment")
201- else if ((toString(aB.caller) != valueOrElse(getString(this, h), "")))
203+ else if ((toString(aC.caller) != valueOrElse(getString(this, h), "")))
202204 then throw("Only project admin can call init function")
203- else if ((size(aB.payments) != 1))
205+ else if ((size(aC.payments) != 1))
204206 then throw("One attached payment expected")
205- else if ((height > aG))
207+ else if ((height > aH))
206208 then throw("Start height must be greater than blockchain height")
207- else if (if (aV)
208- then (size(aW) != 3)
209+ else if (if (aW)
210+ then (size(aX) != 3)
209211 else false)
210212 then throw("Freeze params list must have 3 items")
211213 else {
212- let aC = ax()
213- let aX = toString(aC)
214- let aY = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
215- let aZ = aY._1
216- let ba = aY._2
217- let bb = ar(ba)
218- let bc = bb._1
219- let bd = bb._2
220- let be = bb._3
221- let bf = if (aV)
222- then [BooleanEntry((aX + F), true), StringEntry((aX + G), aW[0]), IntegerEntry((aX + H), parseIntValue(aW[1])), IntegerEntry((aX + I), parseIntValue(aW[2]))]
214+ let aD = ay()
215+ let aY = toString(aD)
216+ let aZ = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
217+ let ba = aZ._1
218+ let bb = aZ._2
219+ let bc = as(bb)
220+ let bd = bc._1
221+ let be = bc._2
222+ let bf = bc._3
223+ let bg = if (aW)
224+ then [BooleanEntry((aY + F), true), StringEntry((aY + G), aX[0]), IntegerEntry((aY + H), parseIntValue(aX[1])), IntegerEntry((aY + I), parseIntValue(aX[2]))]
223225 else nil
224- ([IntegerEntry((bc + "_launchpad"), aC), IntegerEntry(f, (aC + 1)), StringEntry((aX + i), aF), IntegerEntry((aX + j), height), IntegerEntry((aX + k), aG), IntegerEntry((aX + A), aH), StringEntry((aX + J), aI), IntegerEntry((aX + E), aQ), IntegerEntry((aX + o), aZ), StringEntry((aX + n), bc), IntegerEntry((aX + m), aJ), IntegerEntry((aX + w), 0), IntegerEntry((aX + q), aK), IntegerEntry((aX + r), aL), IntegerEntry((aX + s), aP), IntegerEntry((aX + t), aM), IntegerEntry((aX + u), aN), IntegerEntry((aX + v), aO), StringEntry((aX + K), makeString(aR, ",")), BooleanEntry((aX + M), aS), IntegerEntry((aX + L), aT), IntegerEntry((aX + O), aU), IntegerEntry(g, aC), StringEntry(h, "")] ++ bf)
226+ ([IntegerEntry((bd + "_launchpad"), aD), IntegerEntry(f, (aD + 1)), StringEntry((aY + i), aG), IntegerEntry((aY + j), height), IntegerEntry((aY + k), aH), IntegerEntry((aY + A), aI), StringEntry((aY + J), aJ), IntegerEntry((aY + E), aR), IntegerEntry((aY + o), ba), StringEntry((aY + n), bd), IntegerEntry((aY + m), aK), IntegerEntry((aY + w), 0), IntegerEntry((aY + q), aL), IntegerEntry((aY + r), aM), IntegerEntry((aY + s), aQ), IntegerEntry((aY + t), aN), IntegerEntry((aY + u), aO), IntegerEntry((aY + v), aP), StringEntry((aY + K), makeString(aS, ",")), BooleanEntry((aY + M), aT), IntegerEntry((aY + L), aU), IntegerEntry((aY + O), aV), IntegerEntry(g, aD), StringEntry(h, "")] ++ bg)
225227 }
226228
227229
228230
229-@Callable(aB)
230-func commitSwopfiSale (aC,bg) = {
231- let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
232- let aZ = bh._1
233- let ba = bh._2
234- let bi = az(value(getString(this, (toString(aC) + J))))
235- let bj = bi._1
236- let bk = bi._2
237- let bl = bi._3
238- let bm = bi._4
239- let bn = valueOrElse(getInteger(ab, (toString(aB.caller) + x)), 0)
240- let bo = (bn / getIntegerValue(this, (toString(aC) + s)))
241- let bp = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
242- let bq = (bo - bp)
243- let aG = value(getInteger(this, (toString(aC) + k)))
244- let aH = value(getInteger(this, (toString(aC) + A)))
245- let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
246- if (!(ah))
231+@Callable(aC)
232+func commitSwopfiSale (aD,bh) = {
233+ let bi = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
234+ let ba = bi._1
235+ let bb = bi._2
236+ let bj = aA(value(getString(this, (toString(aD) + J))))
237+ let bk = bj._1
238+ let bl = bj._2
239+ let bm = bj._3
240+ let bn = bj._4
241+ let bo = valueOrElse(getInteger(ac, (toString(aC.caller) + x)), 0)
242+ let bp = (bo / getIntegerValue(this, (toString(aD) + s)))
243+ let bq = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Q)), 0)
244+ let br = (bp - bq)
245+ let aH = value(getInteger(this, (toString(aD) + k)))
246+ let aI = value(getInteger(this, (toString(aD) + A)))
247+ let aW = valueOrElse(getBoolean(this, (toString(aD) + F)), false)
248+ if (!(ai))
247249 then throw("DApp is inactive at this moment")
248- else if ((ai != aC))
250+ else if ((aj != aD))
249251 then throw("There is no active launchpad or this launchpad is ended")
250- else if ((aG > height))
252+ else if ((aH > height))
251253 then throw("Launchpad sale not started yet")
252- else if ((height > (aG + aH)))
254+ else if ((height > (aH + aI)))
253255 then throw("Launchpad sale ended")
254- else if (if (!(aV))
255- then if ((size(aB.payments) != 1))
256+ else if (if (!(aW))
257+ then if ((size(aC.payments) != 1))
256258 then true
257- else (ba != bj)
259+ else (bb != bk)
258260 else false)
259- then throw((("One attached payment in " + bl) + " expected"))
260- else if (if (aV)
261- then if ((size(aB.payments) != 2))
261+ then throw((("One attached payment in " + bm) + " expected"))
262+ else if (if (aW)
263+ then if ((size(aC.payments) != 2))
262264 then true
263- else (ba != bj)
265+ else (bb != bk)
264266 else false)
265267 then {
266- let br = getStringValue(this, (toString(aC) + G))
267- throw(((("Two attached payments expected: First in " + bl) + ", second in ") + br))
268+ let bs = getStringValue(this, (toString(aD) + G))
269+ throw(((("Two attached payments expected: First in " + bm) + ", second in ") + bs))
268270 }
269- else if (if ((0 >= bo))
271+ else if (if ((0 >= bp))
270272 then true
271- else (0 >= bq))
273+ else (0 >= br))
272274 then throw("Not enought SWOP in staking to buy tickets")
273275 else {
274- let bs = getIntegerValue(this, (toString(aC) + r))
275- let aK = getIntegerValue(this, (toString(aC) + q))
276- let bt = az(getStringValue(this, (toString(aC) + n)))
277- let bu = bt._1
278- let bv = bt._2
279- let bw = bt._3
280- let bx = bt._4
281- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
282- let bz = fraction(by, getIntegerValue(this, (toString(aC) + m)), 100)
283- let bA = (aZ / (by + bz))
284- let bB = min([bA, bq])
285- let bC = (bB * (by + bz))
286- let bD = (aZ - bC)
287- if ((bA == 0))
288- then throw((("Not enought " + bl) + " to buy tickets"))
289- else if ((bD != 0))
290- then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(bC)) + bl))
276+ let bt = getIntegerValue(this, (toString(aD) + r))
277+ let aL = getIntegerValue(this, (toString(aD) + q))
278+ let bu = aA(getStringValue(this, (toString(aD) + n)))
279+ let bv = bu._1
280+ let bw = bu._2
281+ let bx = bu._3
282+ let by = bu._4
283+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
284+ let bA = fraction(bz, getIntegerValue(this, (toString(aD) + m)), 100)
285+ let bB = (ba / (bz + bA))
286+ let bC = min([bB, br])
287+ let bD = (bC * (bz + bA))
288+ let bE = (ba - bD)
289+ if ((bB == 0))
290+ then throw((("Not enought " + bm) + " to buy tickets"))
291+ else if ((bE != 0))
292+ then throw((((("Wrong payment. To buy " + toString(bC)) + "tickets you need to pay ") + toString(bD)) + bm))
291293 else {
292- let bf = if (aV)
294+ let bg = if (aW)
293295 then {
294- let br = getStringValue(this, (toString(aC) + G))
295- let bE = getIntegerValue(this, (toString(aC) + I))
296- let bF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
297- let bG = bF._1
298- let bH = bF._2
299- let bI = ar(ba)
300- let bJ = bI._1
301- let bK = bI._2
302- let bL = bI._3
303- let bM = (bE * bA)
304- if (if ((bJ != br))
296+ let bs = getStringValue(this, (toString(aD) + G))
297+ let bF = getIntegerValue(this, (toString(aD) + I))
298+ let bG = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
299+ let bH = bG._1
300+ let bI = bG._2
301+ let bJ = as(bb)
302+ let bK = bJ._1
303+ let bL = bJ._2
304+ let bM = bJ._3
305+ let bN = (bF * bB)
306+ if (if ((bK != bs))
305307 then true
306- else (bM != bG))
307- then throw((((("You need to add " + toString(bM)) + " ") + bK) + " as a second payment"))
308- else [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), bG)]
308+ else (bN != bH))
309+ then throw((((("You need to add " + toString(bN)) + " ") + bL) + " as a second payment"))
310+ else [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + aa), bH)]
309311 }
310312 else nil
311- let bN = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + R)), "")
312- let bO = getIntegerValue(this, (toString(aC) + w))
313- let bP = ((toString((bO + 1)) + "-") + toString((bO + bB)))
314- let bQ = (bN + (if ((bN != ""))
315- then ("," + bP)
316- else ("" + bP)))
317- let bR = if ((bj == ae))
318- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
313+ let bO = valueOrElse(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + R)), "")
314+ let bP = getIntegerValue(this, (toString(aD) + w))
315+ let bQ = ((toString((bP + 1)) + "-") + toString((bP + bC)))
316+ let bR = (bO + (if ((bO != ""))
317+ then ("," + bQ)
318+ else ("" + bQ)))
319+ let bS = if ((bk == af))
320+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
319321 else 0
320- if ((bR == bR))
322+ if ((bS == bS))
321323 then {
322- let bS = ([IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Q), (bp + bB)), IntegerEntry((toString(aC) + w), (bO + bB)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + R), bQ)] ++ bf)
323- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
324- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
325- else bS
324+ let bT = ([IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + Q), (bq + bC)), IntegerEntry((toString(aD) + w), (bP + bC)), StringEntry((((toString(aC.caller) + "_") + toString(aD)) + R), bR)] ++ bg)
325+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
326+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
327+ else bT
326328 }
327329 else throw("Strict value is not equal to itself.")
328330 }
331333
332334
333335
334-@Callable(aB)
335-func commitAccessListSale (aC,bg) = {
336- let bT = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
337- let aZ = bT._1
338- let ba = bT._2
339- let bU = az(value(getString(this, (toString(aC) + J))))
340- let bj = bU._1
341- let bk = bU._2
342- let bl = bU._3
343- let bm = bU._4
344- let bV = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + V)), 0)
345- let bW = valueOrElse(getInteger(this, (toString(aC) + B)), 0)
346- let bX = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
347- let aJ = getIntegerValue(this, (toString(aC) + m))
348- let bs = getIntegerValue(this, (toString(aC) + r))
349- let aO = getIntegerValue(this, (toString(aC) + v))
350- let bY = az(getStringValue(this, (toString(aC) + n)))
351- let bu = bY._1
352- let bv = bY._2
353- let bw = bY._3
354- let bx = bY._4
355- let bZ = fraction(fraction(bs, aO, pow(10, 0, bx, 0, 0, DOWN)), (100 + aJ), 100)
356- let aG = value(getInteger(this, (toString(aC) + k)))
357- let aH = value(getInteger(this, (toString(aC) + A)))
358- if (!(ah))
336+@Callable(aC)
337+func commitAccessListSale (aD,bh) = {
338+ let bU = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
339+ let ba = bU._1
340+ let bb = bU._2
341+ let bV = aA(value(getString(this, (toString(aD) + J))))
342+ let bk = bV._1
343+ let bl = bV._2
344+ let bm = bV._3
345+ let bn = bV._4
346+ let bW = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + V)), 0)
347+ let bX = valueOrElse(getInteger(this, (toString(aD) + B)), 0)
348+ let bY = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + W)), 0)
349+ let aK = getIntegerValue(this, (toString(aD) + m))
350+ let bt = getIntegerValue(this, (toString(aD) + r))
351+ let aP = getIntegerValue(this, (toString(aD) + v))
352+ let bZ = aA(getStringValue(this, (toString(aD) + n)))
353+ let bv = bZ._1
354+ let bw = bZ._2
355+ let bx = bZ._3
356+ let by = bZ._4
357+ let ca = fraction(fraction(bt, aP, pow(10, 0, by, 0, 0, DOWN)), (100 + aK), 100)
358+ let aH = value(getInteger(this, (toString(aD) + k)))
359+ let aI = value(getInteger(this, (toString(aD) + A)))
360+ if (!(ai))
359361 then throw("DApp is inactive at this moment")
360- else if ((ai != aC))
362+ else if ((aj != aD))
361363 then throw("There is no active launchpad or this launchpad is ended")
362- else if ((aG > height))
364+ else if ((aH > height))
363365 then throw("Launchpad sale not started yet")
364- else if ((height > (aG + aH)))
366+ else if ((height > (aH + aI)))
365367 then throw("Launchpad sale ended")
366- else if (if ((size(aB.payments) != 1))
368+ else if (if ((size(aC.payments) != 1))
367369 then true
368- else (ba != bj))
369- then throw((("One attached payment in " + bl) + " expected"))
370- else if ((bX >= ag))
371- then throw((("You can buy only " + toString(ag)) + "allocations"))
372- else if (if ((bZ != aZ))
373- then ((bZ * 2) != aZ)
370+ else (bb != bk))
371+ then throw((("One attached payment in " + bm) + " expected"))
372+ else if ((bY >= ah))
373+ then throw((("You can buy only " + toString(ah)) + "allocations"))
374+ else if (if ((ca != ba))
375+ then ((ca * 2) != ba)
374376 else false)
375- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bZ)) + bl) + " per allocation"))
377+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ca)) + bm) + " per allocation"))
376378 else {
377- let ca = (aZ / bZ)
378- let bR = if ((bj == ae))
379- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
379+ let cb = (ba / ca)
380+ let bS = if ((bk == af))
381+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
380382 else 0
381- if ((bR == bR))
383+ if ((bS == bS))
382384 then {
383- let bS = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + W), (bX + ca)), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + V), (bV + aZ)), IntegerEntry((toString(aC) + B), (bW + aZ))]
384- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
385- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
386- else bS
385+ let bT = [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + W), (bY + cb)), IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + V), (bW + ba)), IntegerEntry((toString(aD) + B), (bX + ba))]
386+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
387+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
388+ else bT
387389 }
388390 else throw("Strict value is not equal to itself.")
389391 }
391393
392394
393395
394-@Callable(aB)
395-func commitHighCompetitionSale (aC,bg) = {
396- let cb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
397- let aZ = cb._1
398- let ba = cb._2
399- let cc = az(value(getString(this, (toString(aC) + J))))
400- let bj = cc._1
401- let bk = cc._2
402- let bl = cc._3
403- let bm = cc._4
404- let aG = value(getInteger(this, (toString(aC) + k)))
405- let aH = value(getInteger(this, (toString(aC) + A)))
406- let cd = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
407- let ce = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
408- if (!(ah))
396+@Callable(aC)
397+func commitHighCompetitionSale (aD,bh) = {
398+ let cc = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
399+ let ba = cc._1
400+ let bb = cc._2
401+ let cd = aA(value(getString(this, (toString(aD) + J))))
402+ let bk = cd._1
403+ let bl = cd._2
404+ let bm = cd._3
405+ let bn = cd._4
406+ let aH = value(getInteger(this, (toString(aD) + k)))
407+ let aI = value(getInteger(this, (toString(aD) + A)))
408+ let ce = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + T)), 0)
409+ let cf = valueOrElse(getBoolean(this, (toString(aD) + M)), false)
410+ if (!(ai))
409411 then throw("DApp is inactive at this moment")
410- else if ((ai != aC))
412+ else if ((aj != aD))
411413 then throw("There is no active launchpad or this launchpad is ended")
412- else if (!(ce))
414+ else if (!(cf))
413415 then throw("There is no high competition sale for this launchpad")
414- else if ((aG > height))
416+ else if ((aH > height))
415417 then throw("Launchpad sale not started yet")
416- else if ((height > (aG + aH)))
418+ else if ((height > (aH + aI)))
417419 then throw("Launchpad sale ended")
418- else if (if ((size(aB.payments) != 1))
420+ else if (if ((size(aC.payments) != 1))
419421 then true
420- else (ba != bj))
421- then throw((("One attached payment in " + bl) + " expected"))
422+ else (bb != bk))
423+ then throw((("One attached payment in " + bm) + " expected"))
422424 else {
423- let bs = getIntegerValue(this, (toString(aC) + r))
424- let aK = getIntegerValue(this, (toString(aC) + q))
425- let cf = az(getStringValue(this, (toString(aC) + n)))
426- let bu = cf._1
427- let bv = cf._2
428- let bw = cf._3
429- let bx = cf._4
430- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
431- let bz = fraction(by, getIntegerValue(this, (toString(aC) + L)), 100)
432- let bA = (aZ / (by + bz))
433- let cg = (bA * (by + bz))
434- let bD = (aZ - cg)
435- if ((bA == 0))
436- then throw((("Not enought " + bl) + " to buy tickets"))
437- else if ((bD != 0))
438- then throw((((("Wrong payment. To buy " + toString(bA)) + "tickets you need to pay ") + toString(cg)) + bl))
425+ let bt = getIntegerValue(this, (toString(aD) + r))
426+ let aL = getIntegerValue(this, (toString(aD) + q))
427+ let cg = aA(getStringValue(this, (toString(aD) + n)))
428+ let bv = cg._1
429+ let bw = cg._2
430+ let bx = cg._3
431+ let by = cg._4
432+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
433+ let bA = fraction(bz, getIntegerValue(this, (toString(aD) + L)), 100)
434+ let bB = (ba / (bz + bA))
435+ let ch = (bB * (bz + bA))
436+ let bE = (ba - ch)
437+ if ((bB == 0))
438+ then throw((("Not enought " + bm) + " to buy tickets"))
439+ else if ((bE != 0))
440+ then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(ch)) + bm))
439441 else {
440- let bN = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + S)), "")
441- let bO = getIntegerValue(this, (toString(aC) + N))
442- let bP = ((toString((bO + 1)) + "-") + toString((bO + bA)))
443- let bQ = (bN + (if ((bN != ""))
444- then ("," + bP)
445- else ("" + bP)))
446- let bR = if ((bj == ae))
447- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
442+ let bO = valueOrElse(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + S)), "")
443+ let bP = getIntegerValue(this, (toString(aD) + N))
444+ let bQ = ((toString((bP + 1)) + "-") + toString((bP + bB)))
445+ let bR = (bO + (if ((bO != ""))
446+ then ("," + bQ)
447+ else ("" + bQ)))
448+ let bS = if ((bk == af))
449+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
448450 else 0
449- if ((bR == bR))
451+ if ((bS == bS))
450452 then {
451- let bS = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + T), (cd + bA)), IntegerEntry((toString(aC) + N), (bO + bA)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + S), bQ)]
452- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
453- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
454- else bS
453+ let bT = [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + T), (ce + bB)), IntegerEntry((toString(aD) + N), (bP + bB)), StringEntry((((toString(aC.caller) + "_") + toString(aD)) + S), bR)]
454+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
455+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
456+ else bT
455457 }
456458 else throw("Strict value is not equal to itself.")
457459 }
460462
461463
462464
463-@Callable(aB)
464-func finalise (aC,ch,ci) = {
465- let cj = getStringValue(this, (toString(aC) + z))
466- let ck = toBase58String(sha256((toBytes(ch) + toBytes(ci))))
467- if (!(ah))
465+@Callable(aC)
466+func finalise (aD,ci,cj) = {
467+ let ck = getStringValue(this, (toString(aD) + z))
468+ let cl = toBase58String(sha256((toBytes(ci) + toBytes(cj))))
469+ if (!(ai))
468470 then throw("DApp is inactive at this moment")
469- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
471+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
470472 then throw("Only admin can call this function")
471- else if ((ck != cj))
473+ else if ((cl != ck))
472474 then throw("vrf Height hash not matching")
473475 else {
474- let cl = az(value(getString(this, (toString(aC) + J))))
475- let bj = cl._1
476- let bk = cl._2
477- let bl = cl._3
478- let bm = cl._4
479- let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
480- let aJ = getIntegerValue(this, (toString(aC) + m))
481- let cm = getIntegerValue(this, (toString(aC) + L))
482- let cn = valueOrElse(getInteger(this, (toString(aC) + D)), 0)
483- let co = getIntegerValue(this, (toString(aC) + p))
484- let cp = valueOrElse(getIntegerValue(this, (toString(aC) + P)), 0)
485- let cq = fraction(co, aJ, 100)
486- let cr = fraction(cp, cm, 100)
487- let cs = getIntegerValue(this, (toString(aC) + C))
488- let ct = fraction(cs, aJ, 100)
489- let cu = (((((co + cs) + cq) + ct) + cp) + cr)
490- if ((cn > (co + cs)))
476+ let cm = aA(value(getString(this, (toString(aD) + J))))
477+ let bk = cm._1
478+ let bl = cm._2
479+ let bm = cm._3
480+ let bn = cm._4
481+ let aG = addressFromStringValue(getStringValue(this, (toString(aD) + i)))
482+ let aK = getIntegerValue(this, (toString(aD) + m))
483+ let cn = getIntegerValue(this, (toString(aD) + L))
484+ let co = valueOrElse(getInteger(this, (toString(aD) + D)), 0)
485+ let cp = getIntegerValue(this, (toString(aD) + p))
486+ let cq = valueOrElse(getIntegerValue(this, (toString(aD) + P)), 0)
487+ let cr = fraction(cp, aK, 100)
488+ let cs = fraction(cq, cn, 100)
489+ let ct = getIntegerValue(this, (toString(aD) + C))
490+ let cu = fraction(ct, aK, 100)
491+ let cv = (((((cp + ct) + cr) + cu) + cq) + cs)
492+ if ((co > (cp + ct)))
491493 then throw("Can't transfer negative value to project")
492494 else {
493- let bR = if ((bj == ae))
494- then invoke(ad, "unlockNeutrino", [cu, toBase58String(ae)], nil)
495+ let bS = if ((bk == af))
496+ then invoke(ae, "unlockNeutrino", [cv, toBase58String(af)], nil)
495497 else 0
496- if ((bR == bR))
497- then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((co + cs) - cn), bj), ScriptTransfer(ac, ((cq + ct) + cr), bj)]
498+ if ((bS == bS))
499+ then [IntegerEntry((toString(aD) + l), height), ScriptTransfer(aG, ((cp + ct) - co), bk), ScriptTransfer(ad, ((cr + cu) + cs), bk)]
498500 else throw("Strict value is not equal to itself.")
499501 }
500502 }
502504
503505
504506
505-@Callable(aB)
506-func claim (aC) = {
507- let cv = valueOrElse(getBoolean(this, (((toString(aB.caller) + "_") + toString(aC)) + X)), false)
508- let cw = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
509- let bX = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
510- if (!(ah))
507+@Callable(aC)
508+func claim (aD) = {
509+ let cw = valueOrElse(getBoolean(this, (((toString(aC.caller) + "_") + toString(aD)) + X)), false)
510+ let cx = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Q)), 0)
511+ let bY = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + W)), 0)
512+ if (!(ai))
511513 then throw("DApp is inactive at this moment")
512- else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
514+ else if (!(isDefined(getInteger(this, (toString(aD) + l)))))
513515 then throw("You can't claim because results are not finalized")
514- else if (cv)
516+ else if (cw)
515517 then throw("You are already claimed")
516- else if (if ((cw == 0))
517- then (bX == 0)
518+ else if (if ((cx == 0))
519+ then (bY == 0)
518520 else false)
519521 then throw("You can't claim because you don't buy anything")
520522 else {
521- let cx = az(value(getString(this, (toString(aC) + J))))
522- let bj = cx._1
523- let bk = cx._2
524- let bl = cx._3
525- let bm = cx._4
526- let cy = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Y)), 0)
527- let cz = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + U)), 0)
528- let aJ = getIntegerValue(this, (toString(aC) + m))
529- let cA = min([bX, cz])
530- let bs = getIntegerValue(this, (toString(aC) + r))
531- let aK = getIntegerValue(this, (toString(aC) + q))
532- let cB = az(getStringValue(this, (toString(aC) + n)))
533- let bu = cB._1
534- let bv = cB._2
535- let bw = cB._3
536- let bx = cB._4
537- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
538- let aO = getIntegerValue(this, (toString(aC) + v))
539- let cC = ((cy * aK) + (cA * aO))
540- let cD = ((bX - cA) * aO)
541- let cE = fraction(fraction(cD, bs, pow(10, 0, bx, 0, 0, DOWN)), (100 + aJ), 100)
542- let cF = fraction(((cw - cy) * by), (100 + aJ), 100)
543- if (if ((0 > cE))
523+ let cy = aA(value(getString(this, (toString(aD) + J))))
524+ let bk = cy._1
525+ let bl = cy._2
526+ let bm = cy._3
527+ let bn = cy._4
528+ let cz = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Y)), 0)
529+ let cA = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + U)), 0)
530+ let aK = getIntegerValue(this, (toString(aD) + m))
531+ let cB = min([bY, cA])
532+ let bt = getIntegerValue(this, (toString(aD) + r))
533+ let aL = getIntegerValue(this, (toString(aD) + q))
534+ let cC = aA(getStringValue(this, (toString(aD) + n)))
535+ let bv = cC._1
536+ let bw = cC._2
537+ let bx = cC._3
538+ let by = cC._4
539+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
540+ let aP = getIntegerValue(this, (toString(aD) + v))
541+ let cD = ((cz * aL) + (cB * aP))
542+ let cE = ((bY - cB) * aP)
543+ let cF = fraction(fraction(cE, bt, pow(10, 0, by, 0, 0, DOWN)), (100 + aK), 100)
544+ let cG = fraction(((cx - cz) * bz), (100 + aK), 100)
545+ if (if ((0 > cF))
544546 then true
545- else (0 > cF))
547+ else (0 > cG))
546548 then throw("Error with allowed allocation param or wonned tickets param please contact support")
547549 else {
548- let cG = (cF + cF)
549- let cH = if ((cG > 0))
550- then [ScriptTransfer(aB.caller, cG, bj)]
550+ let cH = (cG + cG)
551+ let cI = if ((cH > 0))
552+ then [ScriptTransfer(aC.caller, cH, bk)]
551553 else nil
552- let cI = if ((cC > 0))
553- then [ScriptTransfer(aB.caller, cC, bu)]
554+ let cJ = if ((cD > 0))
555+ then [ScriptTransfer(aC.caller, cD, bv)]
554556 else nil
555- let bR = if (if ((cG > 0))
556- then (bj == ae)
557+ let bS = if (if ((cH > 0))
558+ then (bk == af)
557559 else false)
558- then invoke(ad, "unlockNeutrino", [cG, toBase58String(ae)], nil)
560+ then invoke(ae, "unlockNeutrino", [cH, toBase58String(af)], nil)
559561 else 0
560- if ((bR == bR))
561- then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cI) ++ cH)
562+ if ((bS == bS))
563+ then (([BooleanEntry((((toString(aC.caller) + "_") + toString(aD)) + X), true)] ++ cJ) ++ cI)
562564 else throw("Strict value is not equal to itself.")
563565 }
564566 }
566568
567569
568570
569-@Callable(aB)
570-func claimFreezeToken (aC) = {
571- let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
572- if (!(ah))
571+@Callable(aC)
572+func claimFreezeToken (aD) = {
573+ let aW = valueOrElse(getBoolean(this, (toString(aD) + F)), false)
574+ if (!(ai))
573575 then throw("DApp is inactive at this moment")
574- else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
576+ else if (!(isDefined(getInteger(this, (toString(aD) + l)))))
575577 then throw("You can't claim because results are not finalized")
576- else if (!(aV))
578+ else if (!(aW))
577579 then throw("There are no additional token freezing for this launchpad")
578580 else {
579- let bu = fromBase58String(getStringValue(this, (toString(aC) + G)))
580- let cJ = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
581- let aG = valueOrElse(getInteger(this, (toString(aC) + k)), 0)
582- let aH = valueOrElse(getInteger(this, (toString(aC) + A)), 0)
583- let cK = getIntegerValue(this, (toString(aC) + H))
584- let cL = ((aG + aH) + cK)
585- if ((cJ == 0))
581+ let bv = fromBase58String(getStringValue(this, (toString(aD) + G)))
582+ let cK = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + aa)), 0)
583+ let aH = valueOrElse(getInteger(this, (toString(aD) + k)), 0)
584+ let aI = valueOrElse(getInteger(this, (toString(aD) + A)), 0)
585+ let cL = getIntegerValue(this, (toString(aD) + H))
586+ let cM = ((aH + aI) + cL)
587+ if ((cK == 0))
586588 then throw("You are already claimed your tokens or not paid anything")
587- else if ((cL > height))
588- then throw(("Your tokens freezed teel " + toString(cL)))
589- else [ScriptTransfer(aB.caller, cJ, bu), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), 0)]
589+ else if ((cM > height))
590+ then throw(("Your tokens freezed teel " + toString(cM)))
591+ else [ScriptTransfer(aC.caller, cK, bv), IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + aa), 0)]
590592 }
591593 }
592594
593595
594596
595-@Callable(aB)
596-func transferBuyAsset (aC,cM) = if (!(ah))
597+@Callable(aC)
598+func transferBuyAsset (aD,cN) = if (!(ai))
597599 then throw("DApp is inactive")
598- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
600+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
599601 then throw("Only admin can call this function")
600602 else {
601- let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
602- let cN = az(value(getString(this, (toString(aC) + J))))
603- let bj = cN._1
604- let bk = cN._2
605- let bl = cN._3
606- let bm = cN._4
607-[IntegerEntry((toString(aC) + D), cM), ScriptTransfer(aF, cM, bj)]
603+ let aG = addressFromStringValue(getStringValue(this, (toString(aD) + i)))
604+ let cO = aA(value(getString(this, (toString(aD) + J))))
605+ let bk = cO._1
606+ let bl = cO._2
607+ let bm = cO._3
608+ let bn = cO._4
609+[IntegerEntry((toString(aD) + D), cN), ScriptTransfer(aG, cN, bk)]
608610 }
609611
610612
611613
612-@Callable(aB)
613-func shutdown () = if (!(ah))
614+@Callable(aC)
615+func shutdown () = if (!(ai))
614616 then throw("DApp already inactive")
615- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
617+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
616618 then throw("Only admin can call this function")
617619 else [BooleanEntry(a, false)]
618620
619621
620622
621-@Callable(aB)
622-func activate () = if (ah)
623+@Callable(aC)
624+func activate () = if (ai)
623625 then throw("DApp already active")
624- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
626+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
625627 then throw("Only admin can call this function")
626628 else [BooleanEntry(a, true)]
627629
628630
629-@Verifier(cO)
630-func cP () = {
631- let cQ = {
632- let cR = if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
631+@Verifier(cP)
632+func cQ () = {
633+ let cR = {
634+ let cS = if (sigVerify(cP.bodyBytes, cP.proofs[0], ap))
633635 then 1
634636 else 0
635- let cS = if (sigVerify(cO.bodyBytes, cO.proofs[1], ap))
637+ let cT = if (sigVerify(cP.bodyBytes, cP.proofs[1], aq))
636638 then 1
637639 else 0
638- let cT = if (sigVerify(cO.bodyBytes, cO.proofs[2], aq))
640+ let cU = if (sigVerify(cP.bodyBytes, cP.proofs[2], ar))
639641 then 1
640642 else 0
641- (((cR + cS) + cT) >= 2)
643+ (((cS + cT) + cU) >= 2)
642644 }
643- let cU = if (if (if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
645+ let cV = if (if (if (sigVerify(cP.bodyBytes, cP.proofs[0], ap))
644646 then true
645- else sigVerify(cO.bodyBytes, cO.proofs[0], ap))
647+ else sigVerify(cP.bodyBytes, cP.proofs[0], aq))
646648 then true
647- else sigVerify(cO.bodyBytes, cO.proofs[0], aq))
649+ else sigVerify(cP.bodyBytes, cP.proofs[0], ar))
648650 then true
649- else sigVerify(cO.bodyBytes, cO.proofs[0], af)
650- let al = cO
651- if ($isInstanceOf(al, "DataTransaction"))
651+ else sigVerify(cP.bodyBytes, cP.proofs[0], ag)
652+ let am = cP
653+ if ($isInstanceOf(am, "DataTransaction"))
652654 then {
653- let cV = al
654- if (valueOrElse(getBoolean(aa, e), false))
655- then cU
655+ let cW = am
656+ if (valueOrElse(getBoolean(ab, e), false))
657+ then cV
656658 else false
657659 }
658- else cQ
660+ else cR
659661 }
660662
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_high_competition"
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
82-let N = "_ticket_last_number"
82+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 = "_bought_tickets"
8989
9090 let R = "_tickets_number"
9191
9292 let S = "_tickets_number_high_competition"
9393
9494 let T = "_bought_tickets_high_competition"
9595
9696 let U = "_available_purchase_marketing"
9797
9898 let V = "_purchased_buy_asset_in_marketing"
9999
100100 let W = "_bought_allocations"
101101
102102 let X = "_claim_status"
103103
104104 let Y = "_tickets_result"
105105
106-let Z = "_freeze_token_amount"
106+let Z = "_tickets_result_high_competition"
107107
108-let aa = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
108+let aa = "_freeze_token_amount"
109109
110-let ab = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
110+let ab = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
111111
112-let ac = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
112+let ac = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
113113
114-let ad = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
114+let ad = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
115115
116-let ae = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
116+let ae = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
117117
118-let af = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
118+let af = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
119119
120-let ag = 2
120+let ag = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
121121
122-let ah = valueOrElse(getBoolean(this, a), true)
122+let ah = 2
123123
124-let ai = valueOrElse(getIntegerValue(this, g), -1)
124+let ai = valueOrElse(getBoolean(this, a), true)
125125
126-func aj (ak) = {
127- let al = getString(aa, ak)
128- if ($isInstanceOf(al, "String"))
126+let aj = valueOrElse(getIntegerValue(this, g), -1)
127+
128+func ak (al) = {
129+ let am = getString(ab, al)
130+ if ($isInstanceOf(am, "String"))
129131 then {
130- let am = al
131- fromBase58String(am)
132+ let an = am
133+ fromBase58String(an)
132134 }
133135 else {
134- let an = al
136+ let ao = am
135137 throw("Admin public key is empty")
136138 }
137139 }
138140
139141
140-let ao = aj(b)
142+let ap = ak(b)
141143
142-let ap = aj(c)
144+let aq = ak(c)
143145
144-let aq = aj(d)
146+let ar = ak(d)
145147
146-func ar (as) = {
147- let al = as
148- if ($isInstanceOf(al, "ByteVector"))
148+func as (at) = {
149+ let am = at
150+ if ($isInstanceOf(am, "ByteVector"))
149151 then {
150- let at = al
151- let au = toBase58String(at)
152- let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
153- $Tuple3(au, av.name, av.decimals)
152+ let au = am
153+ let av = toBase58String(au)
154+ let aw = valueOrErrorMessage(assetInfo(au), (("Asset " + av) + " doesn't exist"))
155+ $Tuple3(av, aw.name, aw.decimals)
154156 }
155- else if ($isInstanceOf(al, "Unit"))
157+ else if ($isInstanceOf(am, "Unit"))
156158 then {
157- let aw = al
159+ let ax = am
158160 $Tuple3("WAVES", "WAVES", 8)
159161 }
160162 else throw("Match error")
161163 }
162164
163165
164-func ax () = valueOrElse(getInteger(this, f), 1)
166+func ay () = valueOrElse(getInteger(this, f), 1)
165167
166168
167-func ay () = valueOrElse(getInteger(ad, ((("rpd_balance_" + toBase58String(ae)) + "_") + toString(this))), 0)
169+func az () = valueOrElse(getInteger(ae, ((("rpd_balance_" + toBase58String(af)) + "_") + toString(this))), 0)
168170
169171
170-func az (aA) = if ((aA == "WAVES"))
172+func aA (aB) = if ((aB == "WAVES"))
171173 then $Tuple4(unit, "WAVES", "WAVES", 8)
172174 else {
173- let au = aA
174- let at = fromBase58String(aA)
175- let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
176- $Tuple4(at, au, av.name, av.decimals)
175+ let av = aB
176+ let au = fromBase58String(aB)
177+ let aw = valueOrErrorMessage(assetInfo(au), (("Asset " + av) + " doesn't exist"))
178+ $Tuple4(au, av, aw.name, aw.decimals)
177179 }
178180
179181
180-@Callable(aB)
181-func hashingRandom (aC,aD) = if (!(ah))
182+@Callable(aC)
183+func hashingRandom (aD,aE) = if (!(ai))
182184 then throw("DApp is inactive at this moment")
183- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
185+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
184186 then throw("Only admin can call this function")
185- else [StringEntry((toString(aC) + z), aD)]
187+ else [StringEntry((toString(aD) + z), aE)]
186188
187189
188190
189-@Callable(aB)
190-func initCaller (aE) = if (!(ah))
191+@Callable(aC)
192+func initCaller (aF) = if (!(ai))
191193 then throw("DApp is inactive at this moment")
192- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
194+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
193195 then throw("Only admin can call this function")
194- else [StringEntry(h, aE)]
196+ else [StringEntry(h, aF)]
195197
196198
197199
198-@Callable(aB)
199-func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = if (!(ah))
200+@Callable(aC)
201+func init (aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX) = if (!(ai))
200202 then throw("DApp is inactive at this moment")
201- else if ((toString(aB.caller) != valueOrElse(getString(this, h), "")))
203+ else if ((toString(aC.caller) != valueOrElse(getString(this, h), "")))
202204 then throw("Only project admin can call init function")
203- else if ((size(aB.payments) != 1))
205+ else if ((size(aC.payments) != 1))
204206 then throw("One attached payment expected")
205- else if ((height > aG))
207+ else if ((height > aH))
206208 then throw("Start height must be greater than blockchain height")
207- else if (if (aV)
208- then (size(aW) != 3)
209+ else if (if (aW)
210+ then (size(aX) != 3)
209211 else false)
210212 then throw("Freeze params list must have 3 items")
211213 else {
212- let aC = ax()
213- let aX = toString(aC)
214- let aY = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
215- let aZ = aY._1
216- let ba = aY._2
217- let bb = ar(ba)
218- let bc = bb._1
219- let bd = bb._2
220- let be = bb._3
221- let bf = if (aV)
222- then [BooleanEntry((aX + F), true), StringEntry((aX + G), aW[0]), IntegerEntry((aX + H), parseIntValue(aW[1])), IntegerEntry((aX + I), parseIntValue(aW[2]))]
214+ let aD = ay()
215+ let aY = toString(aD)
216+ let aZ = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
217+ let ba = aZ._1
218+ let bb = aZ._2
219+ let bc = as(bb)
220+ let bd = bc._1
221+ let be = bc._2
222+ let bf = bc._3
223+ let bg = if (aW)
224+ then [BooleanEntry((aY + F), true), StringEntry((aY + G), aX[0]), IntegerEntry((aY + H), parseIntValue(aX[1])), IntegerEntry((aY + I), parseIntValue(aX[2]))]
223225 else nil
224- ([IntegerEntry((bc + "_launchpad"), aC), IntegerEntry(f, (aC + 1)), StringEntry((aX + i), aF), IntegerEntry((aX + j), height), IntegerEntry((aX + k), aG), IntegerEntry((aX + A), aH), StringEntry((aX + J), aI), IntegerEntry((aX + E), aQ), IntegerEntry((aX + o), aZ), StringEntry((aX + n), bc), IntegerEntry((aX + m), aJ), IntegerEntry((aX + w), 0), IntegerEntry((aX + q), aK), IntegerEntry((aX + r), aL), IntegerEntry((aX + s), aP), IntegerEntry((aX + t), aM), IntegerEntry((aX + u), aN), IntegerEntry((aX + v), aO), StringEntry((aX + K), makeString(aR, ",")), BooleanEntry((aX + M), aS), IntegerEntry((aX + L), aT), IntegerEntry((aX + O), aU), IntegerEntry(g, aC), StringEntry(h, "")] ++ bf)
226+ ([IntegerEntry((bd + "_launchpad"), aD), IntegerEntry(f, (aD + 1)), StringEntry((aY + i), aG), IntegerEntry((aY + j), height), IntegerEntry((aY + k), aH), IntegerEntry((aY + A), aI), StringEntry((aY + J), aJ), IntegerEntry((aY + E), aR), IntegerEntry((aY + o), ba), StringEntry((aY + n), bd), IntegerEntry((aY + m), aK), IntegerEntry((aY + w), 0), IntegerEntry((aY + q), aL), IntegerEntry((aY + r), aM), IntegerEntry((aY + s), aQ), IntegerEntry((aY + t), aN), IntegerEntry((aY + u), aO), IntegerEntry((aY + v), aP), StringEntry((aY + K), makeString(aS, ",")), BooleanEntry((aY + M), aT), IntegerEntry((aY + L), aU), IntegerEntry((aY + O), aV), IntegerEntry(g, aD), StringEntry(h, "")] ++ bg)
225227 }
226228
227229
228230
229-@Callable(aB)
230-func commitSwopfiSale (aC,bg) = {
231- let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
232- let aZ = bh._1
233- let ba = bh._2
234- let bi = az(value(getString(this, (toString(aC) + J))))
235- let bj = bi._1
236- let bk = bi._2
237- let bl = bi._3
238- let bm = bi._4
239- let bn = valueOrElse(getInteger(ab, (toString(aB.caller) + x)), 0)
240- let bo = (bn / getIntegerValue(this, (toString(aC) + s)))
241- let bp = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
242- let bq = (bo - bp)
243- let aG = value(getInteger(this, (toString(aC) + k)))
244- let aH = value(getInteger(this, (toString(aC) + A)))
245- let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
246- if (!(ah))
231+@Callable(aC)
232+func commitSwopfiSale (aD,bh) = {
233+ let bi = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
234+ let ba = bi._1
235+ let bb = bi._2
236+ let bj = aA(value(getString(this, (toString(aD) + J))))
237+ let bk = bj._1
238+ let bl = bj._2
239+ let bm = bj._3
240+ let bn = bj._4
241+ let bo = valueOrElse(getInteger(ac, (toString(aC.caller) + x)), 0)
242+ let bp = (bo / getIntegerValue(this, (toString(aD) + s)))
243+ let bq = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Q)), 0)
244+ let br = (bp - bq)
245+ let aH = value(getInteger(this, (toString(aD) + k)))
246+ let aI = value(getInteger(this, (toString(aD) + A)))
247+ let aW = valueOrElse(getBoolean(this, (toString(aD) + F)), false)
248+ if (!(ai))
247249 then throw("DApp is inactive at this moment")
248- else if ((ai != aC))
250+ else if ((aj != aD))
249251 then throw("There is no active launchpad or this launchpad is ended")
250- else if ((aG > height))
252+ else if ((aH > height))
251253 then throw("Launchpad sale not started yet")
252- else if ((height > (aG + aH)))
254+ else if ((height > (aH + aI)))
253255 then throw("Launchpad sale ended")
254- else if (if (!(aV))
255- then if ((size(aB.payments) != 1))
256+ else if (if (!(aW))
257+ then if ((size(aC.payments) != 1))
256258 then true
257- else (ba != bj)
259+ else (bb != bk)
258260 else false)
259- then throw((("One attached payment in " + bl) + " expected"))
260- else if (if (aV)
261- then if ((size(aB.payments) != 2))
261+ then throw((("One attached payment in " + bm) + " expected"))
262+ else if (if (aW)
263+ then if ((size(aC.payments) != 2))
262264 then true
263- else (ba != bj)
265+ else (bb != bk)
264266 else false)
265267 then {
266- let br = getStringValue(this, (toString(aC) + G))
267- throw(((("Two attached payments expected: First in " + bl) + ", second in ") + br))
268+ let bs = getStringValue(this, (toString(aD) + G))
269+ throw(((("Two attached payments expected: First in " + bm) + ", second in ") + bs))
268270 }
269- else if (if ((0 >= bo))
271+ else if (if ((0 >= bp))
270272 then true
271- else (0 >= bq))
273+ else (0 >= br))
272274 then throw("Not enought SWOP in staking to buy tickets")
273275 else {
274- let bs = getIntegerValue(this, (toString(aC) + r))
275- let aK = getIntegerValue(this, (toString(aC) + q))
276- let bt = az(getStringValue(this, (toString(aC) + n)))
277- let bu = bt._1
278- let bv = bt._2
279- let bw = bt._3
280- let bx = bt._4
281- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
282- let bz = fraction(by, getIntegerValue(this, (toString(aC) + m)), 100)
283- let bA = (aZ / (by + bz))
284- let bB = min([bA, bq])
285- let bC = (bB * (by + bz))
286- let bD = (aZ - bC)
287- if ((bA == 0))
288- then throw((("Not enought " + bl) + " to buy tickets"))
289- else if ((bD != 0))
290- then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(bC)) + bl))
276+ let bt = getIntegerValue(this, (toString(aD) + r))
277+ let aL = getIntegerValue(this, (toString(aD) + q))
278+ let bu = aA(getStringValue(this, (toString(aD) + n)))
279+ let bv = bu._1
280+ let bw = bu._2
281+ let bx = bu._3
282+ let by = bu._4
283+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
284+ let bA = fraction(bz, getIntegerValue(this, (toString(aD) + m)), 100)
285+ let bB = (ba / (bz + bA))
286+ let bC = min([bB, br])
287+ let bD = (bC * (bz + bA))
288+ let bE = (ba - bD)
289+ if ((bB == 0))
290+ then throw((("Not enought " + bm) + " to buy tickets"))
291+ else if ((bE != 0))
292+ then throw((((("Wrong payment. To buy " + toString(bC)) + "tickets you need to pay ") + toString(bD)) + bm))
291293 else {
292- let bf = if (aV)
294+ let bg = if (aW)
293295 then {
294- let br = getStringValue(this, (toString(aC) + G))
295- let bE = getIntegerValue(this, (toString(aC) + I))
296- let bF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
297- let bG = bF._1
298- let bH = bF._2
299- let bI = ar(ba)
300- let bJ = bI._1
301- let bK = bI._2
302- let bL = bI._3
303- let bM = (bE * bA)
304- if (if ((bJ != br))
296+ let bs = getStringValue(this, (toString(aD) + G))
297+ let bF = getIntegerValue(this, (toString(aD) + I))
298+ let bG = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
299+ let bH = bG._1
300+ let bI = bG._2
301+ let bJ = as(bb)
302+ let bK = bJ._1
303+ let bL = bJ._2
304+ let bM = bJ._3
305+ let bN = (bF * bB)
306+ if (if ((bK != bs))
305307 then true
306- else (bM != bG))
307- then throw((((("You need to add " + toString(bM)) + " ") + bK) + " as a second payment"))
308- else [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), bG)]
308+ else (bN != bH))
309+ then throw((((("You need to add " + toString(bN)) + " ") + bL) + " as a second payment"))
310+ else [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + aa), bH)]
309311 }
310312 else nil
311- let bN = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + R)), "")
312- let bO = getIntegerValue(this, (toString(aC) + w))
313- let bP = ((toString((bO + 1)) + "-") + toString((bO + bB)))
314- let bQ = (bN + (if ((bN != ""))
315- then ("," + bP)
316- else ("" + bP)))
317- let bR = if ((bj == ae))
318- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
313+ let bO = valueOrElse(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + R)), "")
314+ let bP = getIntegerValue(this, (toString(aD) + w))
315+ let bQ = ((toString((bP + 1)) + "-") + toString((bP + bC)))
316+ let bR = (bO + (if ((bO != ""))
317+ then ("," + bQ)
318+ else ("" + bQ)))
319+ let bS = if ((bk == af))
320+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
319321 else 0
320- if ((bR == bR))
322+ if ((bS == bS))
321323 then {
322- let bS = ([IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Q), (bp + bB)), IntegerEntry((toString(aC) + w), (bO + bB)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + R), bQ)] ++ bf)
323- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
324- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
325- else bS
324+ let bT = ([IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + Q), (bq + bC)), IntegerEntry((toString(aD) + w), (bP + bC)), StringEntry((((toString(aC.caller) + "_") + toString(aD)) + R), bR)] ++ bg)
325+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
326+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
327+ else bT
326328 }
327329 else throw("Strict value is not equal to itself.")
328330 }
329331 }
330332 }
331333
332334
333335
334-@Callable(aB)
335-func commitAccessListSale (aC,bg) = {
336- let bT = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
337- let aZ = bT._1
338- let ba = bT._2
339- let bU = az(value(getString(this, (toString(aC) + J))))
340- let bj = bU._1
341- let bk = bU._2
342- let bl = bU._3
343- let bm = bU._4
344- let bV = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + V)), 0)
345- let bW = valueOrElse(getInteger(this, (toString(aC) + B)), 0)
346- let bX = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
347- let aJ = getIntegerValue(this, (toString(aC) + m))
348- let bs = getIntegerValue(this, (toString(aC) + r))
349- let aO = getIntegerValue(this, (toString(aC) + v))
350- let bY = az(getStringValue(this, (toString(aC) + n)))
351- let bu = bY._1
352- let bv = bY._2
353- let bw = bY._3
354- let bx = bY._4
355- let bZ = fraction(fraction(bs, aO, pow(10, 0, bx, 0, 0, DOWN)), (100 + aJ), 100)
356- let aG = value(getInteger(this, (toString(aC) + k)))
357- let aH = value(getInteger(this, (toString(aC) + A)))
358- if (!(ah))
336+@Callable(aC)
337+func commitAccessListSale (aD,bh) = {
338+ let bU = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
339+ let ba = bU._1
340+ let bb = bU._2
341+ let bV = aA(value(getString(this, (toString(aD) + J))))
342+ let bk = bV._1
343+ let bl = bV._2
344+ let bm = bV._3
345+ let bn = bV._4
346+ let bW = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + V)), 0)
347+ let bX = valueOrElse(getInteger(this, (toString(aD) + B)), 0)
348+ let bY = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + W)), 0)
349+ let aK = getIntegerValue(this, (toString(aD) + m))
350+ let bt = getIntegerValue(this, (toString(aD) + r))
351+ let aP = getIntegerValue(this, (toString(aD) + v))
352+ let bZ = aA(getStringValue(this, (toString(aD) + n)))
353+ let bv = bZ._1
354+ let bw = bZ._2
355+ let bx = bZ._3
356+ let by = bZ._4
357+ let ca = fraction(fraction(bt, aP, pow(10, 0, by, 0, 0, DOWN)), (100 + aK), 100)
358+ let aH = value(getInteger(this, (toString(aD) + k)))
359+ let aI = value(getInteger(this, (toString(aD) + A)))
360+ if (!(ai))
359361 then throw("DApp is inactive at this moment")
360- else if ((ai != aC))
362+ else if ((aj != aD))
361363 then throw("There is no active launchpad or this launchpad is ended")
362- else if ((aG > height))
364+ else if ((aH > height))
363365 then throw("Launchpad sale not started yet")
364- else if ((height > (aG + aH)))
366+ else if ((height > (aH + aI)))
365367 then throw("Launchpad sale ended")
366- else if (if ((size(aB.payments) != 1))
368+ else if (if ((size(aC.payments) != 1))
367369 then true
368- else (ba != bj))
369- then throw((("One attached payment in " + bl) + " expected"))
370- else if ((bX >= ag))
371- then throw((("You can buy only " + toString(ag)) + "allocations"))
372- else if (if ((bZ != aZ))
373- then ((bZ * 2) != aZ)
370+ else (bb != bk))
371+ then throw((("One attached payment in " + bm) + " expected"))
372+ else if ((bY >= ah))
373+ then throw((("You can buy only " + toString(ah)) + "allocations"))
374+ else if (if ((ca != ba))
375+ then ((ca * 2) != ba)
374376 else false)
375- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bZ)) + bl) + " per allocation"))
377+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ca)) + bm) + " per allocation"))
376378 else {
377- let ca = (aZ / bZ)
378- let bR = if ((bj == ae))
379- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
379+ let cb = (ba / ca)
380+ let bS = if ((bk == af))
381+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
380382 else 0
381- if ((bR == bR))
383+ if ((bS == bS))
382384 then {
383- let bS = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + W), (bX + ca)), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + V), (bV + aZ)), IntegerEntry((toString(aC) + B), (bW + aZ))]
384- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
385- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
386- else bS
385+ let bT = [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + W), (bY + cb)), IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + V), (bW + ba)), IntegerEntry((toString(aD) + B), (bX + ba))]
386+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
387+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
388+ else bT
387389 }
388390 else throw("Strict value is not equal to itself.")
389391 }
390392 }
391393
392394
393395
394-@Callable(aB)
395-func commitHighCompetitionSale (aC,bg) = {
396- let cb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
397- let aZ = cb._1
398- let ba = cb._2
399- let cc = az(value(getString(this, (toString(aC) + J))))
400- let bj = cc._1
401- let bk = cc._2
402- let bl = cc._3
403- let bm = cc._4
404- let aG = value(getInteger(this, (toString(aC) + k)))
405- let aH = value(getInteger(this, (toString(aC) + A)))
406- let cd = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
407- let ce = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
408- if (!(ah))
396+@Callable(aC)
397+func commitHighCompetitionSale (aD,bh) = {
398+ let cc = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
399+ let ba = cc._1
400+ let bb = cc._2
401+ let cd = aA(value(getString(this, (toString(aD) + J))))
402+ let bk = cd._1
403+ let bl = cd._2
404+ let bm = cd._3
405+ let bn = cd._4
406+ let aH = value(getInteger(this, (toString(aD) + k)))
407+ let aI = value(getInteger(this, (toString(aD) + A)))
408+ let ce = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + T)), 0)
409+ let cf = valueOrElse(getBoolean(this, (toString(aD) + M)), false)
410+ if (!(ai))
409411 then throw("DApp is inactive at this moment")
410- else if ((ai != aC))
412+ else if ((aj != aD))
411413 then throw("There is no active launchpad or this launchpad is ended")
412- else if (!(ce))
414+ else if (!(cf))
413415 then throw("There is no high competition sale for this launchpad")
414- else if ((aG > height))
416+ else if ((aH > height))
415417 then throw("Launchpad sale not started yet")
416- else if ((height > (aG + aH)))
418+ else if ((height > (aH + aI)))
417419 then throw("Launchpad sale ended")
418- else if (if ((size(aB.payments) != 1))
420+ else if (if ((size(aC.payments) != 1))
419421 then true
420- else (ba != bj))
421- then throw((("One attached payment in " + bl) + " expected"))
422+ else (bb != bk))
423+ then throw((("One attached payment in " + bm) + " expected"))
422424 else {
423- let bs = getIntegerValue(this, (toString(aC) + r))
424- let aK = getIntegerValue(this, (toString(aC) + q))
425- let cf = az(getStringValue(this, (toString(aC) + n)))
426- let bu = cf._1
427- let bv = cf._2
428- let bw = cf._3
429- let bx = cf._4
430- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
431- let bz = fraction(by, getIntegerValue(this, (toString(aC) + L)), 100)
432- let bA = (aZ / (by + bz))
433- let cg = (bA * (by + bz))
434- let bD = (aZ - cg)
435- if ((bA == 0))
436- then throw((("Not enought " + bl) + " to buy tickets"))
437- else if ((bD != 0))
438- then throw((((("Wrong payment. To buy " + toString(bA)) + "tickets you need to pay ") + toString(cg)) + bl))
425+ let bt = getIntegerValue(this, (toString(aD) + r))
426+ let aL = getIntegerValue(this, (toString(aD) + q))
427+ let cg = aA(getStringValue(this, (toString(aD) + n)))
428+ let bv = cg._1
429+ let bw = cg._2
430+ let bx = cg._3
431+ let by = cg._4
432+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
433+ let bA = fraction(bz, getIntegerValue(this, (toString(aD) + L)), 100)
434+ let bB = (ba / (bz + bA))
435+ let ch = (bB * (bz + bA))
436+ let bE = (ba - ch)
437+ if ((bB == 0))
438+ then throw((("Not enought " + bm) + " to buy tickets"))
439+ else if ((bE != 0))
440+ then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(ch)) + bm))
439441 else {
440- let bN = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + S)), "")
441- let bO = getIntegerValue(this, (toString(aC) + N))
442- let bP = ((toString((bO + 1)) + "-") + toString((bO + bA)))
443- let bQ = (bN + (if ((bN != ""))
444- then ("," + bP)
445- else ("" + bP)))
446- let bR = if ((bj == ae))
447- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
442+ let bO = valueOrElse(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + S)), "")
443+ let bP = getIntegerValue(this, (toString(aD) + N))
444+ let bQ = ((toString((bP + 1)) + "-") + toString((bP + bB)))
445+ let bR = (bO + (if ((bO != ""))
446+ then ("," + bQ)
447+ else ("" + bQ)))
448+ let bS = if ((bk == af))
449+ then invoke(ae, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
448450 else 0
449- if ((bR == bR))
451+ if ((bS == bS))
450452 then {
451- let bS = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + T), (cd + bA)), IntegerEntry((toString(aC) + N), (bO + bA)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + S), bQ)]
452- if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
453- then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
454- else bS
453+ let bT = [IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + T), (ce + bB)), IntegerEntry((toString(aD) + N), (bP + bB)), StringEntry((((toString(aC.caller) + "_") + toString(aD)) + S), bR)]
454+ if (!(isDefined(getString(this, (((toString(aC.caller) + "_") + toString(aD)) + y)))))
455+ then (bT ++ [StringEntry((((toString(aC.caller) + "_") + toString(aD)) + y), bh)])
456+ else bT
455457 }
456458 else throw("Strict value is not equal to itself.")
457459 }
458460 }
459461 }
460462
461463
462464
463-@Callable(aB)
464-func finalise (aC,ch,ci) = {
465- let cj = getStringValue(this, (toString(aC) + z))
466- let ck = toBase58String(sha256((toBytes(ch) + toBytes(ci))))
467- if (!(ah))
465+@Callable(aC)
466+func finalise (aD,ci,cj) = {
467+ let ck = getStringValue(this, (toString(aD) + z))
468+ let cl = toBase58String(sha256((toBytes(ci) + toBytes(cj))))
469+ if (!(ai))
468470 then throw("DApp is inactive at this moment")
469- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
471+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
470472 then throw("Only admin can call this function")
471- else if ((ck != cj))
473+ else if ((cl != ck))
472474 then throw("vrf Height hash not matching")
473475 else {
474- let cl = az(value(getString(this, (toString(aC) + J))))
475- let bj = cl._1
476- let bk = cl._2
477- let bl = cl._3
478- let bm = cl._4
479- let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
480- let aJ = getIntegerValue(this, (toString(aC) + m))
481- let cm = getIntegerValue(this, (toString(aC) + L))
482- let cn = valueOrElse(getInteger(this, (toString(aC) + D)), 0)
483- let co = getIntegerValue(this, (toString(aC) + p))
484- let cp = valueOrElse(getIntegerValue(this, (toString(aC) + P)), 0)
485- let cq = fraction(co, aJ, 100)
486- let cr = fraction(cp, cm, 100)
487- let cs = getIntegerValue(this, (toString(aC) + C))
488- let ct = fraction(cs, aJ, 100)
489- let cu = (((((co + cs) + cq) + ct) + cp) + cr)
490- if ((cn > (co + cs)))
476+ let cm = aA(value(getString(this, (toString(aD) + J))))
477+ let bk = cm._1
478+ let bl = cm._2
479+ let bm = cm._3
480+ let bn = cm._4
481+ let aG = addressFromStringValue(getStringValue(this, (toString(aD) + i)))
482+ let aK = getIntegerValue(this, (toString(aD) + m))
483+ let cn = getIntegerValue(this, (toString(aD) + L))
484+ let co = valueOrElse(getInteger(this, (toString(aD) + D)), 0)
485+ let cp = getIntegerValue(this, (toString(aD) + p))
486+ let cq = valueOrElse(getIntegerValue(this, (toString(aD) + P)), 0)
487+ let cr = fraction(cp, aK, 100)
488+ let cs = fraction(cq, cn, 100)
489+ let ct = getIntegerValue(this, (toString(aD) + C))
490+ let cu = fraction(ct, aK, 100)
491+ let cv = (((((cp + ct) + cr) + cu) + cq) + cs)
492+ if ((co > (cp + ct)))
491493 then throw("Can't transfer negative value to project")
492494 else {
493- let bR = if ((bj == ae))
494- then invoke(ad, "unlockNeutrino", [cu, toBase58String(ae)], nil)
495+ let bS = if ((bk == af))
496+ then invoke(ae, "unlockNeutrino", [cv, toBase58String(af)], nil)
495497 else 0
496- if ((bR == bR))
497- then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((co + cs) - cn), bj), ScriptTransfer(ac, ((cq + ct) + cr), bj)]
498+ if ((bS == bS))
499+ then [IntegerEntry((toString(aD) + l), height), ScriptTransfer(aG, ((cp + ct) - co), bk), ScriptTransfer(ad, ((cr + cu) + cs), bk)]
498500 else throw("Strict value is not equal to itself.")
499501 }
500502 }
501503 }
502504
503505
504506
505-@Callable(aB)
506-func claim (aC) = {
507- let cv = valueOrElse(getBoolean(this, (((toString(aB.caller) + "_") + toString(aC)) + X)), false)
508- let cw = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
509- let bX = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
510- if (!(ah))
507+@Callable(aC)
508+func claim (aD) = {
509+ let cw = valueOrElse(getBoolean(this, (((toString(aC.caller) + "_") + toString(aD)) + X)), false)
510+ let cx = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Q)), 0)
511+ let bY = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + W)), 0)
512+ if (!(ai))
511513 then throw("DApp is inactive at this moment")
512- else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
514+ else if (!(isDefined(getInteger(this, (toString(aD) + l)))))
513515 then throw("You can't claim because results are not finalized")
514- else if (cv)
516+ else if (cw)
515517 then throw("You are already claimed")
516- else if (if ((cw == 0))
517- then (bX == 0)
518+ else if (if ((cx == 0))
519+ then (bY == 0)
518520 else false)
519521 then throw("You can't claim because you don't buy anything")
520522 else {
521- let cx = az(value(getString(this, (toString(aC) + J))))
522- let bj = cx._1
523- let bk = cx._2
524- let bl = cx._3
525- let bm = cx._4
526- let cy = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Y)), 0)
527- let cz = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + U)), 0)
528- let aJ = getIntegerValue(this, (toString(aC) + m))
529- let cA = min([bX, cz])
530- let bs = getIntegerValue(this, (toString(aC) + r))
531- let aK = getIntegerValue(this, (toString(aC) + q))
532- let cB = az(getStringValue(this, (toString(aC) + n)))
533- let bu = cB._1
534- let bv = cB._2
535- let bw = cB._3
536- let bx = cB._4
537- let by = fraction(aK, bs, pow(10, 0, bx, 0, 0, DOWN))
538- let aO = getIntegerValue(this, (toString(aC) + v))
539- let cC = ((cy * aK) + (cA * aO))
540- let cD = ((bX - cA) * aO)
541- let cE = fraction(fraction(cD, bs, pow(10, 0, bx, 0, 0, DOWN)), (100 + aJ), 100)
542- let cF = fraction(((cw - cy) * by), (100 + aJ), 100)
543- if (if ((0 > cE))
523+ let cy = aA(value(getString(this, (toString(aD) + J))))
524+ let bk = cy._1
525+ let bl = cy._2
526+ let bm = cy._3
527+ let bn = cy._4
528+ let cz = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + Y)), 0)
529+ let cA = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + U)), 0)
530+ let aK = getIntegerValue(this, (toString(aD) + m))
531+ let cB = min([bY, cA])
532+ let bt = getIntegerValue(this, (toString(aD) + r))
533+ let aL = getIntegerValue(this, (toString(aD) + q))
534+ let cC = aA(getStringValue(this, (toString(aD) + n)))
535+ let bv = cC._1
536+ let bw = cC._2
537+ let bx = cC._3
538+ let by = cC._4
539+ let bz = fraction(aL, bt, pow(10, 0, by, 0, 0, DOWN))
540+ let aP = getIntegerValue(this, (toString(aD) + v))
541+ let cD = ((cz * aL) + (cB * aP))
542+ let cE = ((bY - cB) * aP)
543+ let cF = fraction(fraction(cE, bt, pow(10, 0, by, 0, 0, DOWN)), (100 + aK), 100)
544+ let cG = fraction(((cx - cz) * bz), (100 + aK), 100)
545+ if (if ((0 > cF))
544546 then true
545- else (0 > cF))
547+ else (0 > cG))
546548 then throw("Error with allowed allocation param or wonned tickets param please contact support")
547549 else {
548- let cG = (cF + cF)
549- let cH = if ((cG > 0))
550- then [ScriptTransfer(aB.caller, cG, bj)]
550+ let cH = (cG + cG)
551+ let cI = if ((cH > 0))
552+ then [ScriptTransfer(aC.caller, cH, bk)]
551553 else nil
552- let cI = if ((cC > 0))
553- then [ScriptTransfer(aB.caller, cC, bu)]
554+ let cJ = if ((cD > 0))
555+ then [ScriptTransfer(aC.caller, cD, bv)]
554556 else nil
555- let bR = if (if ((cG > 0))
556- then (bj == ae)
557+ let bS = if (if ((cH > 0))
558+ then (bk == af)
557559 else false)
558- then invoke(ad, "unlockNeutrino", [cG, toBase58String(ae)], nil)
560+ then invoke(ae, "unlockNeutrino", [cH, toBase58String(af)], nil)
559561 else 0
560- if ((bR == bR))
561- then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cI) ++ cH)
562+ if ((bS == bS))
563+ then (([BooleanEntry((((toString(aC.caller) + "_") + toString(aD)) + X), true)] ++ cJ) ++ cI)
562564 else throw("Strict value is not equal to itself.")
563565 }
564566 }
565567 }
566568
567569
568570
569-@Callable(aB)
570-func claimFreezeToken (aC) = {
571- let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
572- if (!(ah))
571+@Callable(aC)
572+func claimFreezeToken (aD) = {
573+ let aW = valueOrElse(getBoolean(this, (toString(aD) + F)), false)
574+ if (!(ai))
573575 then throw("DApp is inactive at this moment")
574- else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
576+ else if (!(isDefined(getInteger(this, (toString(aD) + l)))))
575577 then throw("You can't claim because results are not finalized")
576- else if (!(aV))
578+ else if (!(aW))
577579 then throw("There are no additional token freezing for this launchpad")
578580 else {
579- let bu = fromBase58String(getStringValue(this, (toString(aC) + G)))
580- let cJ = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
581- let aG = valueOrElse(getInteger(this, (toString(aC) + k)), 0)
582- let aH = valueOrElse(getInteger(this, (toString(aC) + A)), 0)
583- let cK = getIntegerValue(this, (toString(aC) + H))
584- let cL = ((aG + aH) + cK)
585- if ((cJ == 0))
581+ let bv = fromBase58String(getStringValue(this, (toString(aD) + G)))
582+ let cK = valueOrElse(getInteger(this, (((toString(aC.caller) + "_") + toString(aD)) + aa)), 0)
583+ let aH = valueOrElse(getInteger(this, (toString(aD) + k)), 0)
584+ let aI = valueOrElse(getInteger(this, (toString(aD) + A)), 0)
585+ let cL = getIntegerValue(this, (toString(aD) + H))
586+ let cM = ((aH + aI) + cL)
587+ if ((cK == 0))
586588 then throw("You are already claimed your tokens or not paid anything")
587- else if ((cL > height))
588- then throw(("Your tokens freezed teel " + toString(cL)))
589- else [ScriptTransfer(aB.caller, cJ, bu), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), 0)]
589+ else if ((cM > height))
590+ then throw(("Your tokens freezed teel " + toString(cM)))
591+ else [ScriptTransfer(aC.caller, cK, bv), IntegerEntry((((toString(aC.caller) + "_") + toString(aD)) + aa), 0)]
590592 }
591593 }
592594
593595
594596
595-@Callable(aB)
596-func transferBuyAsset (aC,cM) = if (!(ah))
597+@Callable(aC)
598+func transferBuyAsset (aD,cN) = if (!(ai))
597599 then throw("DApp is inactive")
598- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
600+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
599601 then throw("Only admin can call this function")
600602 else {
601- let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
602- let cN = az(value(getString(this, (toString(aC) + J))))
603- let bj = cN._1
604- let bk = cN._2
605- let bl = cN._3
606- let bm = cN._4
607-[IntegerEntry((toString(aC) + D), cM), ScriptTransfer(aF, cM, bj)]
603+ let aG = addressFromStringValue(getStringValue(this, (toString(aD) + i)))
604+ let cO = aA(value(getString(this, (toString(aD) + J))))
605+ let bk = cO._1
606+ let bl = cO._2
607+ let bm = cO._3
608+ let bn = cO._4
609+[IntegerEntry((toString(aD) + D), cN), ScriptTransfer(aG, cN, bk)]
608610 }
609611
610612
611613
612-@Callable(aB)
613-func shutdown () = if (!(ah))
614+@Callable(aC)
615+func shutdown () = if (!(ai))
614616 then throw("DApp already inactive")
615- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
617+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
616618 then throw("Only admin can call this function")
617619 else [BooleanEntry(a, false)]
618620
619621
620622
621-@Callable(aB)
622-func activate () = if (ah)
623+@Callable(aC)
624+func activate () = if (ai)
623625 then throw("DApp already active")
624- else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
626+ else if (!(containsElement([ap, aq, ar], aC.callerPublicKey)))
625627 then throw("Only admin can call this function")
626628 else [BooleanEntry(a, true)]
627629
628630
629-@Verifier(cO)
630-func cP () = {
631- let cQ = {
632- let cR = if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
631+@Verifier(cP)
632+func cQ () = {
633+ let cR = {
634+ let cS = if (sigVerify(cP.bodyBytes, cP.proofs[0], ap))
633635 then 1
634636 else 0
635- let cS = if (sigVerify(cO.bodyBytes, cO.proofs[1], ap))
637+ let cT = if (sigVerify(cP.bodyBytes, cP.proofs[1], aq))
636638 then 1
637639 else 0
638- let cT = if (sigVerify(cO.bodyBytes, cO.proofs[2], aq))
640+ let cU = if (sigVerify(cP.bodyBytes, cP.proofs[2], ar))
639641 then 1
640642 else 0
641- (((cR + cS) + cT) >= 2)
643+ (((cS + cT) + cU) >= 2)
642644 }
643- let cU = if (if (if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
645+ let cV = if (if (if (sigVerify(cP.bodyBytes, cP.proofs[0], ap))
644646 then true
645- else sigVerify(cO.bodyBytes, cO.proofs[0], ap))
647+ else sigVerify(cP.bodyBytes, cP.proofs[0], aq))
646648 then true
647- else sigVerify(cO.bodyBytes, cO.proofs[0], aq))
649+ else sigVerify(cP.bodyBytes, cP.proofs[0], ar))
648650 then true
649- else sigVerify(cO.bodyBytes, cO.proofs[0], af)
650- let al = cO
651- if ($isInstanceOf(al, "DataTransaction"))
651+ else sigVerify(cP.bodyBytes, cP.proofs[0], ag)
652+ let am = cP
653+ if ($isInstanceOf(am, "DataTransaction"))
652654 then {
653- let cV = al
654- if (valueOrElse(getBoolean(aa, e), false))
655- then cU
655+ let cW = am
656+ if (valueOrElse(getBoolean(ab, e), false))
657+ then cV
656658 else false
657659 }
658- else cQ
660+ else cR
659661 }
660662

github/deemru/w8io/169f3d6 
765.07 ms