tx · 472AGAchqVUaSHUBUBHuXF6feBdwjbsh6bGao5kS8Egc

3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi:  -0.01400000 Waves

2021.12.13 17:44 [1832618] smart account 3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi > SELF 0.00000000 Waves

{ "type": 13, "id": "472AGAchqVUaSHUBUBHuXF6feBdwjbsh6bGao5kS8Egc", "fee": 1400000, "feeAssetId": null, "timestamp": 1639406705916, "version": 2, "chainId": 84, "sender": "3MwkjgDrsm5k73WJU9Nbxbx4y2iy3zjQzMi", "senderPublicKey": "FRotxVW1MhTQRDvVbMM4yvYGWzBFvHqvMsonvGeEXQUy", "proofs": [ "4KS9uGGoAehQHqWrjD26JMNvazrVJj1okPe9PP82fjokgSdeKDJu2pseb7iHno1FVaYWz5uzmw7jPHmWZe8j2kPR", "4nnQKq7534NV7oq1GFAbivUiPtT8VDx3fhYUQ6NF5ewRzKT6s5b1bHxKC7B8eCt7uYH4u5Qu9Hm1zuLD7mR4e3bJ" ], "script": "base64:AAIFAAAAAAAAEwkIAhIECgIBCBIDCgEIEhQKEggBAQgBAQEBAQEBARgEAQEEGBIECgIBCBIECgIBCBIECgIBCBIFCgMBAQgSAwoBARIDCgEBEgQKAgEBEgASABoPCgJhMRIJa2V5QWN0aXZlGhUKAmEyEg9rZXlBZG1pblB1YktleTEaFQoCYTMSD2tleUFkbWluUHViS2V5MhoVCgJhNBIPa2V5QWRtaW5QdWJLZXkzGicKAmE1EiFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMaGAoCYTYSEmtleUxhdW5jaHBhZE5leHRJZBoaCgJhNxIUa2V5TGF1bmNocGFkQWN0aXZlSWQaEwoCYTgSDWtleUluaXRDYWxsZXIaEAoCYTkSCmtleUFkZHJlc3MaEwoCYjESDWtleUluaXRIZWlnaHQaFAoCYjISDmtleVN0YXJ0SGVpZ2h0GhcKAmIzEhFrZXlGaW5hbGlzZUhlaWdodBoSCgJiNBIMa2V5Q29taXNzaW9uGhAKAmI1EgprZXlBc3NldElkGhkKAmI2EhNrZXlUb3RhbFRva2VuQW1vdW50GiAKAmI3EhprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZBoYCgJiOBISa2V5VG9rZW5zUGVyVGlja2V0GhYKAmI5EhBrZXlQcmljZVBlclRva2VuGhYKAmMxEhBrZXlTd29wUGVyVGlja2V0GhwKAmMyEhZrZXlTd29wZmlUaWNrZXRzQW1vdW50Gh0KAmMzEhdrZXlDYW1wYWlnblRva2Vuc0Ftb3VudBocCgJjNBIWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbhoZCgJjNRITa2V5VGlja2V0TGFzdE51bWJlchoZCgJjNhITa2V5R292ZXJuYW5jZVN0YWtlZBoSCgJjNxIMa2V5VXNlclJlZklkGhMKAmM4Eg1rZXlWZXJpZnlIYXNoGhEKAmM5EgtrZXlEdXJhdGlvbhoiCgJkMRIca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZxorCgJkMhIla2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZ0ZpbmFsaXplZBoZCgJkMxITa2V5VHJhbnNmZXJCdXlBc3NldBoaCgJkNBIUa2V5RnJlZXpTd29wRHVyYXRpb24aHgoCZDUSGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbhoWCgJkNhIQa2V5RnJlZXplVG9rZW5JZBocCgJkNxIWa2V5RnJlZXplVG9rZW5EdXJhdGlvbhodCgJkOBIXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQaEQoCZDkSC2tleUJ1eVRva2VuGhQKAmUxEg5rZXlDbGFpbVBhcmFtcxohCgJlMhIba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uGhwKAmUzEhZrZXlIaWdoQ29tcGV0aXRpb25TYWxlGhsKAmU0EhVrZXlIQ1RpY2tldExhc3ROdW1iZXIaHgoCZTUSGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudBoiCgJlNhIca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQxogCgJlNxIaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQaFAoCZTgSDmtleVVzZXJUaWNrZXRzGhYKAmU5EhBrZXlVc2VySENUaWNrZXRzGiIKAmYxEhxrZXlVc2VySENCb3VnaHRUaWNrZXRzQW1vdW50GiEKAmYyEhtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMaJgoCZjMSIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nGh4KAmY0EhhrZXlVc2VyQm91Z2h0QWxsb2NhdGlvbnMaGAoCZjUSEmtleVVzZXJDbGFpbVN0YXR1cxogCgJmNhIaa2V5VXNlcldpbm5lZFRpY2tldHNBbW91bnQaGAoCZjcSEmtleVVzZXJGcmVlemVUb2tlbhoMCgJmOBIGb3JhY2xlGhAKAmY5Egpnb3Zlcm5hbmNlGhYKAmcxEhBjb21taXNzaW9uV2FsbGV0GhgKAmcyEhJzdGFraW5nVVNETkFkZHJlc3MaCgoCZzMSBFVTRE4aGAoCZzQSEmFkbWluUHViS2V5U3Rha2luZxoaCgJnNRIUbWF4QWxsb2NhdGlvbnNBbW91bnQaDgoCZzYSCGlzQWN0aXZlGhcKAmc3EhFhY3RpdmVMYXVuY2hwYWRJZBoRCgJnOBILZ2V0QWRtaW5QdWIaEQoCZzkSC2tleUFkbWluUHViGg0KAmgxEgckbWF0Y2gwGgwKAmgyEgZzdHJpbmcaDQoCaDMSB25vdGhpbmcaEgoCaDQSDGFkbWluUHViS2V5MRoSCgJoNRIMYWRtaW5QdWJLZXkyGhIKAmg2EgxhZG1pblB1YktleTMaEgoCaDcSDGdldEFzc2V0SW5mbxoNCgJoOBIHYXNzZXRJZBoOCgJoORIIc3RyaW5nSWQaCgoCaTESBGluZm8aCwoCaTISBXdhdmVzGhgKAmkzEhJnZXRMYXVuY2hwYWROZXh0SWQaFgoCaTQSEHN0YWtlZFVzZG5BbW91bnQaHAoCaTUSFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcaDgoCaTYSCGFzc2V0U3RyGhEKAmk3EgtsYXVuY2hwYWRJZBoKCgJpOBIEaGFzaBoNCgJpORIHYWRkcmVzcxoUCgJqMRIOcHJvamVjdEFkZHJlc3MaEQoCajISC3N0YXJ0SGVpZ2h0Gg4KAmozEghkdXJhdGlvbhoOCgJqNBIIYnV5VG9rZW4aEAoCajUSCmNvbW1pc3Npb24aFQoCajYSD3Rva2Vuc1BlclRpY2tldBoTCgJqNxINcHJpY2VQZXJUb2tlbhoZCgJqOBITc3dvcGZpVGlja2V0c0Ftb3VudBoaCgJqORIUY2FtcGFpZ25Ub2tlbnNBbW91bnQaGQoCazESE3Rva2Vuc1BlckFsbG9jYXRpb24aEwoCazISDXN3b3BQZXJUaWNrZXQaGAoCazMSEnN3b3BGcmVlemVEdXJhdGlvbhoRCgJrNBILY2xhaW1QYXJhbXMaGQoCazUSE0hpZ2hDb21wZXRpdGlvblNhbGUaHgoCazYSGGhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhoiCgJrNxIcaGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudBobCgJrOBIVZnJlZXplQWRkaXRpb25hbFRva2VuGhIKAms5EgxmcmVlemVQYXJhbXMaFAoCbDESDmxhdW5jaHBhZElkU3RyGhEKAmwyEgskdDA2MzU0NjQyORoPCgJsMxIJcG10QW1vdW50GhAKAmw0EgpwbXRBc3NldElkGhEKAmw1EgskdDA2NDM4NjUxMRoTCgJsNhINcG10U3RyQXNzZXRJZBoSCgJsNxIMcG10QXNzZXROYW1lGhEKAmw4EgtwbXREZWNpbWFscxobCgJsORIVZnJlZXplQWRkaXRpb25hbEVudHJ5GgsKAm0xEgVyZWZJZBoRCgJtMhILJHQwOTAyNDkwOTkaEQoCbTMSCyR0MDkxMDQ5MjU0GhAKAm00EgpidXlBc3NldElkGhMKAm01Eg1idXlBc3NldFN0cklkGhIKAm02EgxidXlBc3NldE5hbWUaFgoCbTcSEGJ1eUFzc2V0RGVjaW1hbHMaEQoCbTgSC3N0YWtlZFN3b3BzGh0KAm05EhdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbBoZCgJuMRITYm91Z2h0VGlja2V0c0Ftb3VudBoaCgJuMhIUYWxsb3dlZFRpY2tldHNBbW91bnQaEwoCbjMSDWZyZWV6ZVRva2VuSWQaEAoCbjQSCnRva2VuUHJpY2UaEwoCbjUSDSR0MDExMTQyMTEyODYaDQoCbjYSB3Rva2VuSWQaFQoCbjcSD3Rva2VuU3RyQXNzZXRJZBoUCgJuOBIOdG9rZW5Bc3NldE5hbWUaEwoCbjkSDXRva2VuRGVjaW1hbHMaEQoCbzESC3RpY2tldFByaWNlGhkKAm8yEhNjb21taXNzaW9uUGVyVGlja2V0GhUKAm8zEg9idXlUaWNrZXRBbW91bnQaHAoCbzQSFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQaIgoCbzUSHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24aDAoCbzYSBmNoYW5nZRoaCgJvNxIUZnJlZXplVG9rZW5QZXJUaWNrZXQaEwoCbzgSDSR0MDEyNDUwMTI1MzcaFQoCbzkSD3BtdEFtb3VudEZyZWV6ZRoWCgJwMRIQcG10QXNzZXRJZEZyZWV6ZRoTCgJwMhINJHQwMTI1NTQxMjY0NRoZCgJwMxITcG10RnJlZXplU3RyQXNzZXRJZBoYCgJwNBIScG10RnJlZXplQXNzZXROYW1lGhcKAnA1EhFwbXRGcmVlemVEZWNpbWFscxoWCgJwNhIQbmVlZEZyZWV6ZVRva2VucxoeCgJwNxIYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzGhwKAnA4EhZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyGhEKAnA5Egtib3VnaHRSYW5nZRohCgJxMRIbbmV3VXNlckJvdWdodFRpY2tldHNOdW1iZXJzGgkKAnEyEgNpbnYaDwoCcTMSCWJhc2VFbnRyeRoTCgJxNBINJHQwMTQ2OTIxNDc2NxoTCgJxNRINJHQwMTQ3NzIxNDkyMhoZCgJxNhITdXNlclVzZG5Jbk1hcmtldGluZxoVCgJxNxIPdXNkbkluTWFya2V0aW5nGhcKAnE4EhFib3VnaHRBbGxvY2F0aW9ucxoTCgJxORINJHQwMTU1OTExNTczNRoiCgJyMRIcYWxsb2NhdGlvblByaWNlV2l0aENvbWlzc2lvbhoaCgJyMhIUYnV5QWxsb2NhdGlvbnNBbW91bnQaEwoCcjMSDSR0MDE4MDQ0MTgxMTkaEwoCcjQSDSR0MDE4MTI0MTgyNzQaGwoCcjUSFWJvdWdodEhDVGlja2V0c0Ftb3VudBoZCgJyNhITaGlnaENvbXBldGl0aW9uU2FsZRoTCgJyNxINJHQwMTk1MjMxOTY2NxobCgJyOBIVYnV5UHJpY2VXaXRoQ29taXNzaW9uGg8KAnI5Egl2cmZIZWlnaHQaEAoCczESCnNlY3JldFdvcmQaDwoCczISCXNhdmVkSGFzaBoOCgJzMxIIY2FsY0hhc2gaEwoCczQSDSR0MDIyNDUyMjI2MDIaEgoCczUSDGNvbW1pc3Npb25IQxoYCgJzNhISdHJhbnNmZXJlZEJ1eUFzc2V0GiEKAnM3Ehtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQaHAoCczgSFnN3b3BmaUhDQnV5QXNzZXRBbW91bnQaHAoCczkSFnN3b3BmaU1lbWJlcnNDb21pc3Npb24aFwoCdDESEXN3b3BmaUhDQ29taXNzaW9uGiQKAnQyEh50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcaGAoCdDMSEm1hcmtldGluZ0NvbWlzc2lvbhoTCgJ0NBINdW5zdGFrZUFtb3VudBoVCgJ0NRIPdXNlckNsYWltU3RhdHVzGhMKAnQ2Eg1ib3VnaHRUaWNrZXRzGhMKAnQ3Eg0kdDAyNTQ2MTI1NjExGhMKAnQ4Eg13b25uZWRUaWNrZXRzGhoKAnQ5EhRhd2FpbGFibGVBbGxvY2F0aW9ucxoYCgJ1MRISYWxsb3dlZEFsbG9jYXRpb25zGhMKAnUyEg0kdDAyNjI1ODI2NDAyGhoKAnUzEhR0cmFuc2ZlclRva2Vuc0Ftb3VudBohCgJ1NBIbbm90QWxsb3dlZEFsbG9jYXRpb25zVG9rZW5zGhwKAnU1EhZidXlBc3NldEZvckFsbG9jYXRpb25zGiAKAnU2EhpidXlBc3NldEZvclVud29ubmVkVGlja2V0cxocCgJ1NxIWcmV0dXJuZWRCdXlBc3NldEFtb3VudBoSCgJ1OBIMdHJhbnNmZXJVc2RuGhQKAnU5Eg50cmFuc2ZlclRva2VucxoXCgJ2MRIRdXNlclRva2Vuc0ZyZWV6ZWQaGQoCdjISE2ZyZWV6ZVRva2VuRHVyYXRpb24aFAoCdjMSDmJsb2NrRW5kSGVpZ2h0GgwKAnY0EgZhbW91bnQaEwoCdjUSDSR0MDMwMDc0MzAyMjQaDAoCdjYSBnZlcmlmeRoZCgJ2NxITbXVsdGlTaWduZWRCeUFkbWlucxoYCgJ2OBISYWRtaW5QdWJLZXkxU2lnbmVkGhgKAnY5EhJhZG1pblB1YktleTJTaWduZWQaGAoCdzESEmFkbWluUHViS2V5M1NpZ25lZBoTCgJ3MhINc2lnbmVkQnlBZG1pbhoJCgJ3MxIDZHR4AAAARQAAAAACYTECAAAABmFjdGl2ZQAAAAACYTICAAAAC2FkbWluX3B1Yl8xAAAAAAJhMwIAAAALYWRtaW5fcHViXzIAAAAAAmE0AgAAAAthZG1pbl9wdWJfMwAAAAACYTUCAAAAIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwAAAAACYTYCAAAAEWxhdW5jaHBhZF9uZXh0X2lkAAAAAAJhNwIAAAATbGF1bmNocGFkX2FjdGl2ZV9pZAAAAAACYTgCAAAAC2luaXRfY2FsbGVyAAAAAAJhOQIAAAAIX2FkZHJlc3MAAAAAAmIxAgAAAAxfaW5pdF9oZWlnaHQAAAAAAmIyAgAAAA1fc3RhcnRfaGVpZ2h0AAAAAAJiMwIAAAAQX2ZpbmFsaXNlX2hlaWdodAAAAAACYjQCAAAACl9jb21pc3Npb24AAAAAAmI1AgAAAAlfYXNzZXRfaWQAAAAAAmI2AgAAABNfdG90YWxfdG9rZW5fYW1vdW50AAAAAAJiNwIAAAAVX3RvdGFsX2J1eV9hc3NldF9zb2xkAAAAAAJiOAIAAAASX3Rva2Vuc19wZXJfdGlja2V0AAAAAAJiOQIAAAAQX3ByaWNlX3Blcl90b2tlbgAAAAACYzECAAAAEF9zd29wX3Blcl90aWNrZXQAAAAAAmMyAgAAABdfdGlja2V0c19zd29wZmlfbWVtYmVycwAAAAACYzMCAAAAE190b2tlbnNfYWNjZXNzX2xpc3QAAAAAAmM0AgAAABZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uAAAAAAJjNQIAAAAkX3RpY2tldF9sYXN0X251bWJlcl9oaWdoX2NvbXBldGl0aW9uAAAAAAJjNgIAAAAMX1NXT1BfYW1vdW50AAAAAAJjNwIAAAAHX3JlZl9pZAAAAAACYzgCAAAADF92ZXJpZnlfaGFzaAAAAAACYzkCAAAACV9kdXJhdGlvbgAAAAACZDECAAAAJ190b3RhbF9wdXJjaGFzZWRfYnV5X2Fzc2V0X2luX21hcmtldGluZwAAAAACZDICAAAAMV90b3RhbF9wdXJjaGFzZWRfYnV5X2Fzc2V0X2luX21hcmtldGluZ19maW5hbGl6ZWQAAAAAAmQzAgAAABNfdHJhbnNmZXJfYnV5X2Fzc2V0AAAAAAJkNAIAAAAVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uAAAAAAJkNQIAAAAYX2ZyZWV6ZV9hZGRpdGlvbmFsX3Rva2VuAAAAAAJkNgIAAAAQX2ZyZWV6ZV90b2tlbl9pZAAAAAACZDcCAAAAFl9mcmVlemVfdG9rZW5fZHVyYXRpb24AAAAAAmQ4AgAAABhfZnJlZXplX3Rva2VuX3Blcl90aWNrZXQAAAAAAmQ5AgAAAApfYnV5X3Rva2VuAAAAAAJlMQIAAAANX2NsYWltX3BhcmFtcwAAAAACZTICAAAAG19oaWdoX2NvbXBldGl0aW9uX2NvbWlzc2lvbgAAAAACZTMCAAAAFl9oaWdoX2NvbXBldGl0aW9uX3NhbGUAAAAAAmU0AgAAABNfdGlja2V0X2xhc3RfbnVtYmVyAAAAAAJlNQIAAAAZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAAAAACZTYCAAAAJl90b3RhbF9idXlfYXNzZXRfc29sZF9oaWdoX2NvbXBldGl0aW9uAAAAAAJlNwIAAAAPX2JvdWdodF90aWNrZXRzAAAAAAJlOAIAAAAPX3RpY2tldHNfbnVtYmVyAAAAAAJlOQIAAAAgX3RpY2tldHNfbnVtYmVyX2hpZ2hfY29tcGV0aXRpb24AAAAAAmYxAgAAACBfYm91Z2h0X3RpY2tl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", "height": 1832618, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ee2jxru2Dv1HBbkLEU7kn6KKUVG1ktegyhjEcbgGUkHq Next: 5DJKTBUbZTpSd8zzPtqirMmNwaKcB2TyakNtmBrqe2tf Diff:
OldNewDifferences
196196
197197
198198 @Callable(aB)
199-func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = {
200- let aX = valueOrElse(getString(this, h), "")
201- if (!(ah))
202- then throw("DApp is inactive at this moment")
203- else if ((toString(aB.caller) != aX))
204- then throw("Only project admin can call init function")
205- else if ((size(aB.payments) != 1))
206- then throw("One attached payment expected")
207- else if ((height > aG))
208- then throw("Start height must be greater than blockchain height")
209- else if (if (aV)
210- then (size(aW) != 3)
211- else false)
212- then throw("Freeze params list must have 3 items")
213- else {
214- let aC = ax()
215- let aY = toString(aC)
216- let aZ = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
217- let ba = aZ._1
218- let bb = aZ._2
219- let bc = ar(bb)
220- let bd = bc._1
221- let be = bc._2
222- let bf = bc._3
223- let bg = if (aV)
224- then [BooleanEntry((aY + F), true), StringEntry((aY + G), aW[0]), IntegerEntry((aY + H), parseIntValue(aW[1])), IntegerEntry((aY + I), parseIntValue(aW[2]))]
225- else nil
226- ([IntegerEntry((bd + "_launchpad"), aC), IntegerEntry(f, (aC + 1)), StringEntry((aY + i), aF), IntegerEntry((aY + j), height), IntegerEntry((aY + k), aG), IntegerEntry((aY + A), aH), StringEntry((aY + J), aI), IntegerEntry((aY + E), aQ), IntegerEntry((aY + o), ba), StringEntry((aY + n), bd), IntegerEntry((aY + m), aJ), IntegerEntry((aY + w), 0), IntegerEntry((aY + q), aK), IntegerEntry((aY + r), aL), IntegerEntry((aY + s), aP), IntegerEntry((aY + t), aM), IntegerEntry((aY + u), aN), IntegerEntry((aY + v), aO), StringEntry((aY + K), makeString(aR, ",")), BooleanEntry((aY + M), aS), IntegerEntry((aY + L), aT), IntegerEntry((aY + O), aU), IntegerEntry(g, aC), StringEntry(h, "")] ++ bg)
227- }
228- }
199+func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = if (!(ah))
200+ then throw("DApp is inactive at this moment")
201+ else if ((toString(aB.caller) != valueOrElse(getString(this, h), "")))
202+ then throw("Only project admin can call init function")
203+ else if ((size(aB.payments) != 1))
204+ then throw("One attached payment expected")
205+ else if ((height > aG))
206+ then throw("Start height must be greater than blockchain height")
207+ else if (if (aV)
208+ then (size(aW) != 3)
209+ else false)
210+ then throw("Freeze params list must have 3 items")
211+ 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]))]
223+ 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)
225+ }
229226
230227
231228
232229 @Callable(aB)
233-func commitSwopfiSale (aC,bh) = {
234- let bi = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
235- let ba = bi._1
236- let bb = bi._2
237- let bj = az(value(getString(this, (toString(aC) + J))))
238- let bk = bj._1
239- let bl = bj._2
240- let bm = bj._3
241- let bn = bj._4
242- let bo = valueOrElse(getInteger(ab, (toString(aB.caller) + x)), 0)
243- let bp = (bo / getIntegerValue(this, (toString(aC) + s)))
244- let bq = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
245- let br = (bp - bq)
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)
246243 let aG = value(getInteger(this, (toString(aC) + k)))
247244 let aH = value(getInteger(this, (toString(aC) + A)))
248245 let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
257254 else if (if (!(aV))
258255 then if ((size(aB.payments) != 1))
259256 then true
260- else (bb != bk)
257+ else (ba != bj)
261258 else false)
262- then throw((("One attached payment in " + bm) + " expected"))
259+ then throw((("One attached payment in " + bl) + " expected"))
263260 else if (if (aV)
264261 then if ((size(aB.payments) != 2))
265262 then true
266- else (bb != bk)
263+ else (ba != bj)
267264 else false)
268265 then {
269- let bs = getStringValue(this, (toString(aC) + G))
270- throw(((("Two attached payments expected: First in " + bm) + ", second in ") + bs))
266+ let br = getStringValue(this, (toString(aC) + G))
267+ throw(((("Two attached payments expected: First in " + bl) + ", second in ") + br))
271268 }
272- else if (if ((0 >= bp))
269+ else if (if ((0 >= bo))
273270 then true
274- else (0 >= br))
271+ else (0 >= bq))
275272 then throw("Not enought SWOP in staking to buy tickets")
276273 else {
277- let bt = getIntegerValue(this, (toString(aC) + r))
274+ let bs = getIntegerValue(this, (toString(aC) + r))
278275 let aK = getIntegerValue(this, (toString(aC) + q))
279- let bu = az(getStringValue(this, (toString(aC) + n)))
280- let bv = bu._1
281- let bw = bu._2
282- let bx = bu._3
283- let by = bu._4
284- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
285- let bA = fraction(bz, getIntegerValue(this, (toString(aC) + m)), 100)
286- let bB = (ba / (bz + bA))
287- let bC = min([bB, br])
288- let bD = (bC * (bz + bA))
289- let bE = (ba - bD)
290- if ((bB == 0))
291- then throw((("Not enought " + bm) + " to buy tickets"))
292- else if ((bE != 0))
293- then throw((((("Wrong payment. To buy " + toString(bC)) + "tickets you need to pay ") + toString(bD)) + bm))
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))
294291 else {
295- let bg = if (aV)
292+ let bf = if (aV)
296293 then {
297- let bs = getStringValue(this, (toString(aC) + G))
298- let bF = getIntegerValue(this, (toString(aC) + I))
299- let bG = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
300- let bH = bG._1
301- let bI = bG._2
302- let bJ = ar(bb)
303- let bK = bJ._1
304- let bL = bJ._2
305- let bM = bJ._3
306- let bN = (bF * bB)
307- if (if ((bK != bs))
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))
308305 then true
309- else (bN != bH))
310- then throw((((("You need to add " + toString(bN)) + " ") + bL) + " as a second payment"))
311- else [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), bH)]
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)]
312309 }
313310 else nil
314- let bO = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + R)), "")
315- let bP = getIntegerValue(this, (toString(aC) + w))
316- let bQ = ((toString((bP + 1)) + "-") + toString((bP + bC)))
317- let bR = (bO + (if ((bO != ""))
318- then ("," + bQ)
319- else ("" + bQ)))
320- let bS = if ((bk == ae))
321- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
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)])
322319 else 0
323- if ((bS == bS))
320+ if ((bR == bR))
324321 then {
325- let bT = ([IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Q), (bq + bC)), IntegerEntry((toString(aC) + w), (bP + bC)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + R), bR)] ++ bg)
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)
326323 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
327- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
328- else bT
324+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
325+ else bS
329326 }
330327 else throw("Strict value is not equal to itself.")
331328 }
335332
336333
337334 @Callable(aB)
338-func commitAccessListSale (aC,bh) = {
339- let bU = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
340- let ba = bU._1
341- let bb = bU._2
342- let bV = az(value(getString(this, (toString(aC) + J))))
343- let bk = bV._1
344- let bl = bV._2
345- let bm = bV._3
346- let bn = bV._4
347- let bW = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + V)), 0)
348- let bX = valueOrElse(getInteger(this, (toString(aC) + B)), 0)
349- let bY = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
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)
350347 let aJ = getIntegerValue(this, (toString(aC) + m))
351- let bt = getIntegerValue(this, (toString(aC) + r))
348+ let bs = getIntegerValue(this, (toString(aC) + r))
352349 let aO = getIntegerValue(this, (toString(aC) + v))
353- let bZ = az(getStringValue(this, (toString(aC) + n)))
354- let bv = bZ._1
355- let bw = bZ._2
356- let bx = bZ._3
357- let by = bZ._4
358- let ca = fraction(fraction(bt, aO, pow(10, 0, by, 0, 0, DOWN)), (100 + aJ), 100)
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)
359356 let aG = value(getInteger(this, (toString(aC) + k)))
360357 let aH = value(getInteger(this, (toString(aC) + A)))
361358 if (!(ah))
368365 then throw("Launchpad sale ended")
369366 else if (if ((size(aB.payments) != 1))
370367 then true
371- else (bb != bk))
372- then throw((("One attached payment in " + bm) + " expected"))
373- else if ((bY >= ag))
368+ else (ba != bj))
369+ then throw((("One attached payment in " + bl) + " expected"))
370+ else if ((bX >= ag))
374371 then throw((("You can buy only " + toString(ag)) + "allocations"))
375- else if (if ((ca != ba))
376- then ((ca * 2) != ba)
372+ else if (if ((bZ != aZ))
373+ then ((bZ * 2) != aZ)
377374 else false)
378- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ca)) + bm) + " per allocation"))
375+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bZ)) + bl) + " per allocation"))
379376 else {
380- let cb = (ba / ca)
381- let bS = if ((bk == ae))
382- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
377+ let ca = (aZ / bZ)
378+ let bR = if ((bj == ae))
379+ then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
383380 else 0
384- if ((bS == bS))
381+ if ((bR == bR))
385382 then {
386- let bT = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + W), (bY + cb)), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + V), (bW + ba)), IntegerEntry((toString(aC) + B), (bX + ba))]
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))]
387384 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
388- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
389- else bT
385+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
386+ else bS
390387 }
391388 else throw("Strict value is not equal to itself.")
392389 }
395392
396393
397394 @Callable(aB)
398-func commitHighCompetitionSale (aC,bh) = {
399- let cc = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
400- let ba = cc._1
401- let bb = cc._2
402- let cd = az(value(getString(this, (toString(aC) + J))))
403- let bk = cd._1
404- let bl = cd._2
405- let bm = cd._3
406- let bn = cd._4
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
407404 let aG = value(getInteger(this, (toString(aC) + k)))
408405 let aH = value(getInteger(this, (toString(aC) + A)))
409- let ce = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
410- let cf = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
406+ let cd = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
407+ let ce = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
411408 if (!(ah))
412409 then throw("DApp is inactive at this moment")
413410 else if ((ai != aC))
414411 then throw("There is no active launchpad or this launchpad is ended")
415- else if (!(cf))
412+ else if (!(ce))
416413 then throw("There is no high competition sale for this launchpad")
417414 else if ((aG > height))
418415 then throw("Launchpad sale not started yet")
420417 then throw("Launchpad sale ended")
421418 else if (if ((size(aB.payments) != 1))
422419 then true
423- else (bb != bk))
424- then throw((("One attached payment in " + bm) + " expected"))
420+ else (ba != bj))
421+ then throw((("One attached payment in " + bl) + " expected"))
425422 else {
426- let bt = getIntegerValue(this, (toString(aC) + r))
423+ let bs = getIntegerValue(this, (toString(aC) + r))
427424 let aK = getIntegerValue(this, (toString(aC) + q))
428- let cg = az(getStringValue(this, (toString(aC) + n)))
429- let bv = cg._1
430- let bw = cg._2
431- let bx = cg._3
432- let by = cg._4
433- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
434- let bA = fraction(bz, getIntegerValue(this, (toString(aC) + L)), 100)
435- let bB = (ba / (bz + bA))
436- let ch = (bB * (bz + bA))
437- let bE = (ba - ch)
438- if ((bB == 0))
439- then throw((("Not enought " + bm) + " to buy tickets"))
440- else if ((bE != 0))
441- then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(ch)) + bm))
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))
442439 else {
443- let bO = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + S)), "")
444- let bP = getIntegerValue(this, (toString(aC) + N))
445- let bQ = ((toString((bP + 1)) + "-") + toString((bP + bB)))
446- let bR = (bO + (if ((bO != ""))
447- then ("," + bQ)
448- else ("" + bQ)))
449- let bS = if ((bk == ae))
450- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
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)])
451448 else 0
452- if ((bS == bS))
449+ if ((bR == bR))
453450 then {
454- let bT = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + T), (ce + bB)), IntegerEntry((toString(aC) + N), (bP + bB)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + S), bR)]
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)]
455452 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
456- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
457- else bT
453+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
454+ else bS
458455 }
459456 else throw("Strict value is not equal to itself.")
460457 }
464461
465462
466463 @Callable(aB)
467-func finalise (aC,ci,cj) = {
468- let ck = getStringValue(this, (toString(aC) + z))
469- let cl = toBase58String(sha256((toBytes(ci) + toBytes(cj))))
464+func finalise (aC,ch,ci) = {
465+ let cj = getStringValue(this, (toString(aC) + z))
466+ let ck = toBase58String(sha256((toBytes(ch) + toBytes(ci))))
470467 if (!(ah))
471468 then throw("DApp is inactive at this moment")
472469 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
473470 then throw("Only admin can call this function")
474- else if ((cl != ck))
471+ else if ((ck != cj))
475472 then throw("vrf Height hash not matching")
476473 else {
477- let cm = az(value(getString(this, (toString(aC) + J))))
478- let bk = cm._1
479- let bl = cm._2
480- let bm = cm._3
481- let bn = cm._4
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
482479 let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
483480 let aJ = getIntegerValue(this, (toString(aC) + m))
484- let cn = getIntegerValue(this, (toString(aC) + L))
485- let co = valueOrElse(getInteger(this, (toString(aC) + D)), 0)
486- let cp = getIntegerValue(this, (toString(aC) + p))
487- let cq = valueOrElse(getIntegerValue(this, (toString(aC) + P)), 0)
488- let cr = fraction(cp, aJ, 100)
489- let cs = fraction(cq, cn, 100)
490- let ct = getIntegerValue(this, (toString(aC) + C))
491- let cu = fraction(ct, aJ, 100)
492- let cv = (((((cp + ct) + cr) + cu) + cq) + cs)
493- if ((co > (cp + ct)))
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)))
494491 then throw("Can't transfer negative value to project")
495492 else {
496- let bS = if ((bk == ae))
497- then invoke(ad, "unlockNeutrino", [cv, toBase58String(ae)], nil)
493+ let bR = if ((bj == ae))
494+ then invoke(ad, "unlockNeutrino", [cu, toBase58String(ae)], nil)
498495 else 0
499- if ((bS == bS))
500- then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((cp + ct) - co), bk), ScriptTransfer(ac, ((cr + cu) + cs), bk)]
496+ if ((bR == bR))
497+ then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((co + cs) - cn), bj), ScriptTransfer(ac, ((cq + ct) + cr), bj)]
501498 else throw("Strict value is not equal to itself.")
502499 }
503500 }
507504
508505 @Callable(aB)
509506 func claim (aC) = {
510- let cw = valueOrElse(getBoolean(this, (((toString(aB.caller) + "_") + toString(aC)) + X)), false)
511- let cx = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
512- let bY = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
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)
513510 if (!(ah))
514511 then throw("DApp is inactive at this moment")
515512 else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
516513 then throw("You can't claim because results are not finalized")
517- else if (cw)
514+ else if (cv)
518515 then throw("You are already claimed")
519- else if (if ((cx == 0))
520- then (bY == 0)
516+ else if (if ((cw == 0))
517+ then (bX == 0)
521518 else false)
522519 then throw("You can't claim because you don't buy anything")
523520 else {
524- let cy = az(value(getString(this, (toString(aC) + J))))
525- let bk = cy._1
526- let bl = cy._2
527- let bm = cy._3
528- let bn = cy._4
529- let cz = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Y)), 0)
530- let cA = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + U)), 0)
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)
531528 let aJ = getIntegerValue(this, (toString(aC) + m))
532- let cB = min([bY, cA])
533- let bt = getIntegerValue(this, (toString(aC) + r))
529+ let cA = min([bX, cz])
530+ let bs = getIntegerValue(this, (toString(aC) + r))
534531 let aK = getIntegerValue(this, (toString(aC) + q))
535- let cC = az(getStringValue(this, (toString(aC) + n)))
536- let bv = cC._1
537- let bw = cC._2
538- let bx = cC._3
539- let by = cC._4
540- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
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))
541538 let aO = getIntegerValue(this, (toString(aC) + v))
542- let cD = ((cz * aK) + (cB * aO))
543- let cE = ((bY - cB) * aO)
544- let cF = fraction(fraction(cE, bt, pow(10, 0, by, 0, 0, DOWN)), (100 + aJ), 100)
545- let cG = fraction(((cx - cz) * bz), (100 + aJ), 100)
546- if (if ((0 > cF))
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))
547544 then true
548- else (0 > cG))
545+ else (0 > cF))
549546 then throw("Error with allowed allocation param or wonned tickets param please contact support")
550547 else {
551- let cH = (cG + cG)
552- let cI = if ((cH > 0))
553- then [ScriptTransfer(aB.caller, cH, bk)]
548+ let cG = (cF + cF)
549+ let cH = if ((cG > 0))
550+ then [ScriptTransfer(aB.caller, cG, bj)]
554551 else nil
555- let cJ = if ((cD > 0))
556- then [ScriptTransfer(aB.caller, cD, bv)]
552+ let cI = if ((cC > 0))
553+ then [ScriptTransfer(aB.caller, cC, bu)]
557554 else nil
558- let bS = if (if ((cH > 0))
559- then (bk == ae)
555+ let bR = if (if ((cG > 0))
556+ then (bj == ae)
560557 else false)
561- then invoke(ad, "unlockNeutrino", [cH, toBase58String(ae)], nil)
558+ then invoke(ad, "unlockNeutrino", [cG, toBase58String(ae)], nil)
562559 else 0
563- if ((bS == bS))
564- then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cJ) ++ cI)
560+ if ((bR == bR))
561+ then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cI) ++ cH)
565562 else throw("Strict value is not equal to itself.")
566563 }
567564 }
579576 else if (!(aV))
580577 then throw("There are no additional token freezing for this launchpad")
581578 else {
582- let bv = fromBase58String(getStringValue(this, (toString(aC) + G)))
583- let cK = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
579+ let bu = fromBase58String(getStringValue(this, (toString(aC) + G)))
580+ let cJ = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
584581 let aG = valueOrElse(getInteger(this, (toString(aC) + k)), 0)
585582 let aH = valueOrElse(getInteger(this, (toString(aC) + A)), 0)
586- let cL = getIntegerValue(this, (toString(aC) + H))
587- let cM = ((aG + aH) + cL)
588- if ((cK == 0))
583+ let cK = getIntegerValue(this, (toString(aC) + H))
584+ let cL = ((aG + aH) + cK)
585+ if ((cJ == 0))
589586 then throw("You are already claimed your tokens or not paid anything")
590- else if ((cM > height))
591- then throw(("Your tokens freezed teel " + toString(cM)))
592- else [ScriptTransfer(aB.caller, cK, bv), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), 0)]
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)]
593590 }
594591 }
595592
596593
597594
598595 @Callable(aB)
599-func transferBuyAsset (aC,cN) = if (!(ah))
596+func transferBuyAsset (aC,cM) = if (!(ah))
600597 then throw("DApp is inactive")
601598 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
602599 then throw("Only admin can call this function")
603600 else {
604601 let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
605- let cO = az(value(getString(this, (toString(aC) + J))))
606- let bk = cO._1
607- let bl = cO._2
608- let bm = cO._3
609- let bn = cO._4
610-[IntegerEntry((toString(aC) + D), cN), ScriptTransfer(aF, cN, bk)]
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)]
611608 }
612609
613610
629626 else [BooleanEntry(a, true)]
630627
631628
632-@Verifier(cP)
633-func cQ () = {
634- let cR = {
635- let cS = if (sigVerify(cP.bodyBytes, cP.proofs[0], ao))
629+@Verifier(cO)
630+func cP () = {
631+ let cQ = {
632+ let cR = if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
636633 then 1
637634 else 0
638- let cT = if (sigVerify(cP.bodyBytes, cP.proofs[1], ap))
635+ let cS = if (sigVerify(cO.bodyBytes, cO.proofs[1], ap))
639636 then 1
640637 else 0
641- let cU = if (sigVerify(cP.bodyBytes, cP.proofs[2], aq))
638+ let cT = if (sigVerify(cO.bodyBytes, cO.proofs[2], aq))
642639 then 1
643640 else 0
644- (((cS + cT) + cU) >= 2)
641+ (((cR + cS) + cT) >= 2)
645642 }
646- let cV = if (if (if (sigVerify(cP.bodyBytes, cP.proofs[0], ao))
643+ let cU = if (if (if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
647644 then true
648- else sigVerify(cP.bodyBytes, cP.proofs[0], ap))
645+ else sigVerify(cO.bodyBytes, cO.proofs[0], ap))
649646 then true
650- else sigVerify(cP.bodyBytes, cP.proofs[0], aq))
647+ else sigVerify(cO.bodyBytes, cO.proofs[0], aq))
651648 then true
652- else sigVerify(cP.bodyBytes, cP.proofs[0], af)
653- let al = cP
649+ else sigVerify(cO.bodyBytes, cO.proofs[0], af)
650+ let al = cO
654651 if ($isInstanceOf(al, "DataTransaction"))
655652 then {
656- let cW = al
653+ let cV = al
657654 if (valueOrElse(getBoolean(aa, e), false))
658- then cV
655+ then cU
659656 else false
660657 }
661- else cR
658+ else cQ
662659 }
663660
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
8282 let N = "_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
106106 let Z = "_freeze_token_amount"
107107
108108 let aa = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
109109
110110 let ab = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
111111
112112 let ac = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
113113
114114 let ad = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
115115
116116 let ae = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
117117
118118 let af = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
119119
120120 let ag = 2
121121
122122 let ah = valueOrElse(getBoolean(this, a), true)
123123
124124 let ai = valueOrElse(getIntegerValue(this, g), -1)
125125
126126 func aj (ak) = {
127127 let al = getString(aa, ak)
128128 if ($isInstanceOf(al, "String"))
129129 then {
130130 let am = al
131131 fromBase58String(am)
132132 }
133133 else {
134134 let an = al
135135 throw("Admin public key is empty")
136136 }
137137 }
138138
139139
140140 let ao = aj(b)
141141
142142 let ap = aj(c)
143143
144144 let aq = aj(d)
145145
146146 func ar (as) = {
147147 let al = as
148148 if ($isInstanceOf(al, "ByteVector"))
149149 then {
150150 let at = al
151151 let au = toBase58String(at)
152152 let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
153153 $Tuple3(au, av.name, av.decimals)
154154 }
155155 else if ($isInstanceOf(al, "Unit"))
156156 then {
157157 let aw = al
158158 $Tuple3("WAVES", "WAVES", 8)
159159 }
160160 else throw("Match error")
161161 }
162162
163163
164164 func ax () = valueOrElse(getInteger(this, f), 1)
165165
166166
167167 func ay () = valueOrElse(getInteger(ad, ((("rpd_balance_" + toBase58String(ae)) + "_") + toString(this))), 0)
168168
169169
170170 func az (aA) = if ((aA == "WAVES"))
171171 then $Tuple4(unit, "WAVES", "WAVES", 8)
172172 else {
173173 let au = aA
174174 let at = fromBase58String(aA)
175175 let av = valueOrErrorMessage(assetInfo(at), (("Asset " + au) + " doesn't exist"))
176176 $Tuple4(at, au, av.name, av.decimals)
177177 }
178178
179179
180180 @Callable(aB)
181181 func hashingRandom (aC,aD) = if (!(ah))
182182 then throw("DApp is inactive at this moment")
183183 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
184184 then throw("Only admin can call this function")
185185 else [StringEntry((toString(aC) + z), aD)]
186186
187187
188188
189189 @Callable(aB)
190190 func initCaller (aE) = if (!(ah))
191191 then throw("DApp is inactive at this moment")
192192 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
193193 then throw("Only admin can call this function")
194194 else [StringEntry(h, aE)]
195195
196196
197197
198198 @Callable(aB)
199-func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = {
200- let aX = valueOrElse(getString(this, h), "")
201- if (!(ah))
202- then throw("DApp is inactive at this moment")
203- else if ((toString(aB.caller) != aX))
204- then throw("Only project admin can call init function")
205- else if ((size(aB.payments) != 1))
206- then throw("One attached payment expected")
207- else if ((height > aG))
208- then throw("Start height must be greater than blockchain height")
209- else if (if (aV)
210- then (size(aW) != 3)
211- else false)
212- then throw("Freeze params list must have 3 items")
213- else {
214- let aC = ax()
215- let aY = toString(aC)
216- let aZ = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
217- let ba = aZ._1
218- let bb = aZ._2
219- let bc = ar(bb)
220- let bd = bc._1
221- let be = bc._2
222- let bf = bc._3
223- let bg = if (aV)
224- then [BooleanEntry((aY + F), true), StringEntry((aY + G), aW[0]), IntegerEntry((aY + H), parseIntValue(aW[1])), IntegerEntry((aY + I), parseIntValue(aW[2]))]
225- else nil
226- ([IntegerEntry((bd + "_launchpad"), aC), IntegerEntry(f, (aC + 1)), StringEntry((aY + i), aF), IntegerEntry((aY + j), height), IntegerEntry((aY + k), aG), IntegerEntry((aY + A), aH), StringEntry((aY + J), aI), IntegerEntry((aY + E), aQ), IntegerEntry((aY + o), ba), StringEntry((aY + n), bd), IntegerEntry((aY + m), aJ), IntegerEntry((aY + w), 0), IntegerEntry((aY + q), aK), IntegerEntry((aY + r), aL), IntegerEntry((aY + s), aP), IntegerEntry((aY + t), aM), IntegerEntry((aY + u), aN), IntegerEntry((aY + v), aO), StringEntry((aY + K), makeString(aR, ",")), BooleanEntry((aY + M), aS), IntegerEntry((aY + L), aT), IntegerEntry((aY + O), aU), IntegerEntry(g, aC), StringEntry(h, "")] ++ bg)
227- }
228- }
199+func init (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = if (!(ah))
200+ then throw("DApp is inactive at this moment")
201+ else if ((toString(aB.caller) != valueOrElse(getString(this, h), "")))
202+ then throw("Only project admin can call init function")
203+ else if ((size(aB.payments) != 1))
204+ then throw("One attached payment expected")
205+ else if ((height > aG))
206+ then throw("Start height must be greater than blockchain height")
207+ else if (if (aV)
208+ then (size(aW) != 3)
209+ else false)
210+ then throw("Freeze params list must have 3 items")
211+ 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]))]
223+ 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)
225+ }
229226
230227
231228
232229 @Callable(aB)
233-func commitSwopfiSale (aC,bh) = {
234- let bi = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
235- let ba = bi._1
236- let bb = bi._2
237- let bj = az(value(getString(this, (toString(aC) + J))))
238- let bk = bj._1
239- let bl = bj._2
240- let bm = bj._3
241- let bn = bj._4
242- let bo = valueOrElse(getInteger(ab, (toString(aB.caller) + x)), 0)
243- let bp = (bo / getIntegerValue(this, (toString(aC) + s)))
244- let bq = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
245- let br = (bp - bq)
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)
246243 let aG = value(getInteger(this, (toString(aC) + k)))
247244 let aH = value(getInteger(this, (toString(aC) + A)))
248245 let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
249246 if (!(ah))
250247 then throw("DApp is inactive at this moment")
251248 else if ((ai != aC))
252249 then throw("There is no active launchpad or this launchpad is ended")
253250 else if ((aG > height))
254251 then throw("Launchpad sale not started yet")
255252 else if ((height > (aG + aH)))
256253 then throw("Launchpad sale ended")
257254 else if (if (!(aV))
258255 then if ((size(aB.payments) != 1))
259256 then true
260- else (bb != bk)
257+ else (ba != bj)
261258 else false)
262- then throw((("One attached payment in " + bm) + " expected"))
259+ then throw((("One attached payment in " + bl) + " expected"))
263260 else if (if (aV)
264261 then if ((size(aB.payments) != 2))
265262 then true
266- else (bb != bk)
263+ else (ba != bj)
267264 else false)
268265 then {
269- let bs = getStringValue(this, (toString(aC) + G))
270- throw(((("Two attached payments expected: First in " + bm) + ", second in ") + bs))
266+ let br = getStringValue(this, (toString(aC) + G))
267+ throw(((("Two attached payments expected: First in " + bl) + ", second in ") + br))
271268 }
272- else if (if ((0 >= bp))
269+ else if (if ((0 >= bo))
273270 then true
274- else (0 >= br))
271+ else (0 >= bq))
275272 then throw("Not enought SWOP in staking to buy tickets")
276273 else {
277- let bt = getIntegerValue(this, (toString(aC) + r))
274+ let bs = getIntegerValue(this, (toString(aC) + r))
278275 let aK = getIntegerValue(this, (toString(aC) + q))
279- let bu = az(getStringValue(this, (toString(aC) + n)))
280- let bv = bu._1
281- let bw = bu._2
282- let bx = bu._3
283- let by = bu._4
284- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
285- let bA = fraction(bz, getIntegerValue(this, (toString(aC) + m)), 100)
286- let bB = (ba / (bz + bA))
287- let bC = min([bB, br])
288- let bD = (bC * (bz + bA))
289- let bE = (ba - bD)
290- if ((bB == 0))
291- then throw((("Not enought " + bm) + " to buy tickets"))
292- else if ((bE != 0))
293- then throw((((("Wrong payment. To buy " + toString(bC)) + "tickets you need to pay ") + toString(bD)) + bm))
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))
294291 else {
295- let bg = if (aV)
292+ let bf = if (aV)
296293 then {
297- let bs = getStringValue(this, (toString(aC) + G))
298- let bF = getIntegerValue(this, (toString(aC) + I))
299- let bG = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
300- let bH = bG._1
301- let bI = bG._2
302- let bJ = ar(bb)
303- let bK = bJ._1
304- let bL = bJ._2
305- let bM = bJ._3
306- let bN = (bF * bB)
307- if (if ((bK != bs))
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))
308305 then true
309- else (bN != bH))
310- then throw((((("You need to add " + toString(bN)) + " ") + bL) + " as a second payment"))
311- else [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), bH)]
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)]
312309 }
313310 else nil
314- let bO = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + R)), "")
315- let bP = getIntegerValue(this, (toString(aC) + w))
316- let bQ = ((toString((bP + 1)) + "-") + toString((bP + bC)))
317- let bR = (bO + (if ((bO != ""))
318- then ("," + bQ)
319- else ("" + bQ)))
320- let bS = if ((bk == ae))
321- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
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)])
322319 else 0
323- if ((bS == bS))
320+ if ((bR == bR))
324321 then {
325- let bT = ([IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Q), (bq + bC)), IntegerEntry((toString(aC) + w), (bP + bC)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + R), bR)] ++ bg)
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)
326323 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
327- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
328- else bT
324+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
325+ else bS
329326 }
330327 else throw("Strict value is not equal to itself.")
331328 }
332329 }
333330 }
334331
335332
336333
337334 @Callable(aB)
338-func commitAccessListSale (aC,bh) = {
339- let bU = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
340- let ba = bU._1
341- let bb = bU._2
342- let bV = az(value(getString(this, (toString(aC) + J))))
343- let bk = bV._1
344- let bl = bV._2
345- let bm = bV._3
346- let bn = bV._4
347- let bW = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + V)), 0)
348- let bX = valueOrElse(getInteger(this, (toString(aC) + B)), 0)
349- let bY = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
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)
350347 let aJ = getIntegerValue(this, (toString(aC) + m))
351- let bt = getIntegerValue(this, (toString(aC) + r))
348+ let bs = getIntegerValue(this, (toString(aC) + r))
352349 let aO = getIntegerValue(this, (toString(aC) + v))
353- let bZ = az(getStringValue(this, (toString(aC) + n)))
354- let bv = bZ._1
355- let bw = bZ._2
356- let bx = bZ._3
357- let by = bZ._4
358- let ca = fraction(fraction(bt, aO, pow(10, 0, by, 0, 0, DOWN)), (100 + aJ), 100)
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)
359356 let aG = value(getInteger(this, (toString(aC) + k)))
360357 let aH = value(getInteger(this, (toString(aC) + A)))
361358 if (!(ah))
362359 then throw("DApp is inactive at this moment")
363360 else if ((ai != aC))
364361 then throw("There is no active launchpad or this launchpad is ended")
365362 else if ((aG > height))
366363 then throw("Launchpad sale not started yet")
367364 else if ((height > (aG + aH)))
368365 then throw("Launchpad sale ended")
369366 else if (if ((size(aB.payments) != 1))
370367 then true
371- else (bb != bk))
372- then throw((("One attached payment in " + bm) + " expected"))
373- else if ((bY >= ag))
368+ else (ba != bj))
369+ then throw((("One attached payment in " + bl) + " expected"))
370+ else if ((bX >= ag))
374371 then throw((("You can buy only " + toString(ag)) + "allocations"))
375- else if (if ((ca != ba))
376- then ((ca * 2) != ba)
372+ else if (if ((bZ != aZ))
373+ then ((bZ * 2) != aZ)
377374 else false)
378- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ca)) + bm) + " per allocation"))
375+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(bZ)) + bl) + " per allocation"))
379376 else {
380- let cb = (ba / ca)
381- let bS = if ((bk == ae))
382- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
377+ let ca = (aZ / bZ)
378+ let bR = if ((bj == ae))
379+ then invoke(ad, "lockNeutrino", nil, [AttachedPayment(ba, aZ)])
383380 else 0
384- if ((bS == bS))
381+ if ((bR == bR))
385382 then {
386- let bT = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + W), (bY + cb)), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + V), (bW + ba)), IntegerEntry((toString(aC) + B), (bX + ba))]
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))]
387384 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
388- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
389- else bT
385+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
386+ else bS
390387 }
391388 else throw("Strict value is not equal to itself.")
392389 }
393390 }
394391
395392
396393
397394 @Callable(aB)
398-func commitHighCompetitionSale (aC,bh) = {
399- let cc = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
400- let ba = cc._1
401- let bb = cc._2
402- let cd = az(value(getString(this, (toString(aC) + J))))
403- let bk = cd._1
404- let bl = cd._2
405- let bm = cd._3
406- let bn = cd._4
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
407404 let aG = value(getInteger(this, (toString(aC) + k)))
408405 let aH = value(getInteger(this, (toString(aC) + A)))
409- let ce = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
410- let cf = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
406+ let cd = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + T)), 0)
407+ let ce = valueOrElse(getBoolean(this, (toString(aC) + M)), false)
411408 if (!(ah))
412409 then throw("DApp is inactive at this moment")
413410 else if ((ai != aC))
414411 then throw("There is no active launchpad or this launchpad is ended")
415- else if (!(cf))
412+ else if (!(ce))
416413 then throw("There is no high competition sale for this launchpad")
417414 else if ((aG > height))
418415 then throw("Launchpad sale not started yet")
419416 else if ((height > (aG + aH)))
420417 then throw("Launchpad sale ended")
421418 else if (if ((size(aB.payments) != 1))
422419 then true
423- else (bb != bk))
424- then throw((("One attached payment in " + bm) + " expected"))
420+ else (ba != bj))
421+ then throw((("One attached payment in " + bl) + " expected"))
425422 else {
426- let bt = getIntegerValue(this, (toString(aC) + r))
423+ let bs = getIntegerValue(this, (toString(aC) + r))
427424 let aK = getIntegerValue(this, (toString(aC) + q))
428- let cg = az(getStringValue(this, (toString(aC) + n)))
429- let bv = cg._1
430- let bw = cg._2
431- let bx = cg._3
432- let by = cg._4
433- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
434- let bA = fraction(bz, getIntegerValue(this, (toString(aC) + L)), 100)
435- let bB = (ba / (bz + bA))
436- let ch = (bB * (bz + bA))
437- let bE = (ba - ch)
438- if ((bB == 0))
439- then throw((("Not enought " + bm) + " to buy tickets"))
440- else if ((bE != 0))
441- then throw((((("Wrong payment. To buy " + toString(bB)) + "tickets you need to pay ") + toString(ch)) + bm))
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))
442439 else {
443- let bO = valueOrElse(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + S)), "")
444- let bP = getIntegerValue(this, (toString(aC) + N))
445- let bQ = ((toString((bP + 1)) + "-") + toString((bP + bB)))
446- let bR = (bO + (if ((bO != ""))
447- then ("," + bQ)
448- else ("" + bQ)))
449- let bS = if ((bk == ae))
450- then invoke(ad, "lockNeutrino", nil, [AttachedPayment(bb, ba)])
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)])
451448 else 0
452- if ((bS == bS))
449+ if ((bR == bR))
453450 then {
454- let bT = [IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + T), (ce + bB)), IntegerEntry((toString(aC) + N), (bP + bB)), StringEntry((((toString(aB.caller) + "_") + toString(aC)) + S), bR)]
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)]
455452 if (!(isDefined(getString(this, (((toString(aB.caller) + "_") + toString(aC)) + y)))))
456- then (bT ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bh)])
457- else bT
453+ then (bS ++ [StringEntry((((toString(aB.caller) + "_") + toString(aC)) + y), bg)])
454+ else bS
458455 }
459456 else throw("Strict value is not equal to itself.")
460457 }
461458 }
462459 }
463460
464461
465462
466463 @Callable(aB)
467-func finalise (aC,ci,cj) = {
468- let ck = getStringValue(this, (toString(aC) + z))
469- let cl = toBase58String(sha256((toBytes(ci) + toBytes(cj))))
464+func finalise (aC,ch,ci) = {
465+ let cj = getStringValue(this, (toString(aC) + z))
466+ let ck = toBase58String(sha256((toBytes(ch) + toBytes(ci))))
470467 if (!(ah))
471468 then throw("DApp is inactive at this moment")
472469 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
473470 then throw("Only admin can call this function")
474- else if ((cl != ck))
471+ else if ((ck != cj))
475472 then throw("vrf Height hash not matching")
476473 else {
477- let cm = az(value(getString(this, (toString(aC) + J))))
478- let bk = cm._1
479- let bl = cm._2
480- let bm = cm._3
481- let bn = cm._4
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
482479 let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
483480 let aJ = getIntegerValue(this, (toString(aC) + m))
484- let cn = getIntegerValue(this, (toString(aC) + L))
485- let co = valueOrElse(getInteger(this, (toString(aC) + D)), 0)
486- let cp = getIntegerValue(this, (toString(aC) + p))
487- let cq = valueOrElse(getIntegerValue(this, (toString(aC) + P)), 0)
488- let cr = fraction(cp, aJ, 100)
489- let cs = fraction(cq, cn, 100)
490- let ct = getIntegerValue(this, (toString(aC) + C))
491- let cu = fraction(ct, aJ, 100)
492- let cv = (((((cp + ct) + cr) + cu) + cq) + cs)
493- if ((co > (cp + ct)))
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)))
494491 then throw("Can't transfer negative value to project")
495492 else {
496- let bS = if ((bk == ae))
497- then invoke(ad, "unlockNeutrino", [cv, toBase58String(ae)], nil)
493+ let bR = if ((bj == ae))
494+ then invoke(ad, "unlockNeutrino", [cu, toBase58String(ae)], nil)
498495 else 0
499- if ((bS == bS))
500- then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((cp + ct) - co), bk), ScriptTransfer(ac, ((cr + cu) + cs), bk)]
496+ if ((bR == bR))
497+ then [IntegerEntry((toString(aC) + l), height), ScriptTransfer(aF, ((co + cs) - cn), bj), ScriptTransfer(ac, ((cq + ct) + cr), bj)]
501498 else throw("Strict value is not equal to itself.")
502499 }
503500 }
504501 }
505502
506503
507504
508505 @Callable(aB)
509506 func claim (aC) = {
510- let cw = valueOrElse(getBoolean(this, (((toString(aB.caller) + "_") + toString(aC)) + X)), false)
511- let cx = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Q)), 0)
512- let bY = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + W)), 0)
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)
513510 if (!(ah))
514511 then throw("DApp is inactive at this moment")
515512 else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
516513 then throw("You can't claim because results are not finalized")
517- else if (cw)
514+ else if (cv)
518515 then throw("You are already claimed")
519- else if (if ((cx == 0))
520- then (bY == 0)
516+ else if (if ((cw == 0))
517+ then (bX == 0)
521518 else false)
522519 then throw("You can't claim because you don't buy anything")
523520 else {
524- let cy = az(value(getString(this, (toString(aC) + J))))
525- let bk = cy._1
526- let bl = cy._2
527- let bm = cy._3
528- let bn = cy._4
529- let cz = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Y)), 0)
530- let cA = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + U)), 0)
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)
531528 let aJ = getIntegerValue(this, (toString(aC) + m))
532- let cB = min([bY, cA])
533- let bt = getIntegerValue(this, (toString(aC) + r))
529+ let cA = min([bX, cz])
530+ let bs = getIntegerValue(this, (toString(aC) + r))
534531 let aK = getIntegerValue(this, (toString(aC) + q))
535- let cC = az(getStringValue(this, (toString(aC) + n)))
536- let bv = cC._1
537- let bw = cC._2
538- let bx = cC._3
539- let by = cC._4
540- let bz = fraction(aK, bt, pow(10, 0, by, 0, 0, DOWN))
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))
541538 let aO = getIntegerValue(this, (toString(aC) + v))
542- let cD = ((cz * aK) + (cB * aO))
543- let cE = ((bY - cB) * aO)
544- let cF = fraction(fraction(cE, bt, pow(10, 0, by, 0, 0, DOWN)), (100 + aJ), 100)
545- let cG = fraction(((cx - cz) * bz), (100 + aJ), 100)
546- if (if ((0 > cF))
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))
547544 then true
548- else (0 > cG))
545+ else (0 > cF))
549546 then throw("Error with allowed allocation param or wonned tickets param please contact support")
550547 else {
551- let cH = (cG + cG)
552- let cI = if ((cH > 0))
553- then [ScriptTransfer(aB.caller, cH, bk)]
548+ let cG = (cF + cF)
549+ let cH = if ((cG > 0))
550+ then [ScriptTransfer(aB.caller, cG, bj)]
554551 else nil
555- let cJ = if ((cD > 0))
556- then [ScriptTransfer(aB.caller, cD, bv)]
552+ let cI = if ((cC > 0))
553+ then [ScriptTransfer(aB.caller, cC, bu)]
557554 else nil
558- let bS = if (if ((cH > 0))
559- then (bk == ae)
555+ let bR = if (if ((cG > 0))
556+ then (bj == ae)
560557 else false)
561- then invoke(ad, "unlockNeutrino", [cH, toBase58String(ae)], nil)
558+ then invoke(ad, "unlockNeutrino", [cG, toBase58String(ae)], nil)
562559 else 0
563- if ((bS == bS))
564- then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cJ) ++ cI)
560+ if ((bR == bR))
561+ then (([BooleanEntry((((toString(aB.caller) + "_") + toString(aC)) + X), true)] ++ cI) ++ cH)
565562 else throw("Strict value is not equal to itself.")
566563 }
567564 }
568565 }
569566
570567
571568
572569 @Callable(aB)
573570 func claimFreezeToken (aC) = {
574571 let aV = valueOrElse(getBoolean(this, (toString(aC) + F)), false)
575572 if (!(ah))
576573 then throw("DApp is inactive at this moment")
577574 else if (!(isDefined(getInteger(this, (toString(aC) + l)))))
578575 then throw("You can't claim because results are not finalized")
579576 else if (!(aV))
580577 then throw("There are no additional token freezing for this launchpad")
581578 else {
582- let bv = fromBase58String(getStringValue(this, (toString(aC) + G)))
583- let cK = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
579+ let bu = fromBase58String(getStringValue(this, (toString(aC) + G)))
580+ let cJ = valueOrElse(getInteger(this, (((toString(aB.caller) + "_") + toString(aC)) + Z)), 0)
584581 let aG = valueOrElse(getInteger(this, (toString(aC) + k)), 0)
585582 let aH = valueOrElse(getInteger(this, (toString(aC) + A)), 0)
586- let cL = getIntegerValue(this, (toString(aC) + H))
587- let cM = ((aG + aH) + cL)
588- if ((cK == 0))
583+ let cK = getIntegerValue(this, (toString(aC) + H))
584+ let cL = ((aG + aH) + cK)
585+ if ((cJ == 0))
589586 then throw("You are already claimed your tokens or not paid anything")
590- else if ((cM > height))
591- then throw(("Your tokens freezed teel " + toString(cM)))
592- else [ScriptTransfer(aB.caller, cK, bv), IntegerEntry((((toString(aB.caller) + "_") + toString(aC)) + Z), 0)]
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)]
593590 }
594591 }
595592
596593
597594
598595 @Callable(aB)
599-func transferBuyAsset (aC,cN) = if (!(ah))
596+func transferBuyAsset (aC,cM) = if (!(ah))
600597 then throw("DApp is inactive")
601598 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
602599 then throw("Only admin can call this function")
603600 else {
604601 let aF = addressFromStringValue(getStringValue(this, (toString(aC) + i)))
605- let cO = az(value(getString(this, (toString(aC) + J))))
606- let bk = cO._1
607- let bl = cO._2
608- let bm = cO._3
609- let bn = cO._4
610-[IntegerEntry((toString(aC) + D), cN), ScriptTransfer(aF, cN, bk)]
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)]
611608 }
612609
613610
614611
615612 @Callable(aB)
616613 func shutdown () = if (!(ah))
617614 then throw("DApp already inactive")
618615 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
619616 then throw("Only admin can call this function")
620617 else [BooleanEntry(a, false)]
621618
622619
623620
624621 @Callable(aB)
625622 func activate () = if (ah)
626623 then throw("DApp already active")
627624 else if (!(containsElement([ao, ap, aq], aB.callerPublicKey)))
628625 then throw("Only admin can call this function")
629626 else [BooleanEntry(a, true)]
630627
631628
632-@Verifier(cP)
633-func cQ () = {
634- let cR = {
635- let cS = if (sigVerify(cP.bodyBytes, cP.proofs[0], ao))
629+@Verifier(cO)
630+func cP () = {
631+ let cQ = {
632+ let cR = if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
636633 then 1
637634 else 0
638- let cT = if (sigVerify(cP.bodyBytes, cP.proofs[1], ap))
635+ let cS = if (sigVerify(cO.bodyBytes, cO.proofs[1], ap))
639636 then 1
640637 else 0
641- let cU = if (sigVerify(cP.bodyBytes, cP.proofs[2], aq))
638+ let cT = if (sigVerify(cO.bodyBytes, cO.proofs[2], aq))
642639 then 1
643640 else 0
644- (((cS + cT) + cU) >= 2)
641+ (((cR + cS) + cT) >= 2)
645642 }
646- let cV = if (if (if (sigVerify(cP.bodyBytes, cP.proofs[0], ao))
643+ let cU = if (if (if (sigVerify(cO.bodyBytes, cO.proofs[0], ao))
647644 then true
648- else sigVerify(cP.bodyBytes, cP.proofs[0], ap))
645+ else sigVerify(cO.bodyBytes, cO.proofs[0], ap))
649646 then true
650- else sigVerify(cP.bodyBytes, cP.proofs[0], aq))
647+ else sigVerify(cO.bodyBytes, cO.proofs[0], aq))
651648 then true
652- else sigVerify(cP.bodyBytes, cP.proofs[0], af)
653- let al = cP
649+ else sigVerify(cO.bodyBytes, cO.proofs[0], af)
650+ let al = cO
654651 if ($isInstanceOf(al, "DataTransaction"))
655652 then {
656- let cW = al
653+ let cV = al
657654 if (valueOrElse(getBoolean(aa, e), false))
658- then cV
655+ then cU
659656 else false
660657 }
661- else cR
658+ else cQ
662659 }
663660

github/deemru/w8io/873ac7e 
252.81 ms