tx · G6JKKDtnrXWZggHs1qNV2tDtSqLCijYZuh9Cc1XsvHNU

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.09.15 11:56 [1703934] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "G6JKKDtnrXWZggHs1qNV2tDtSqLCijYZuh9Cc1XsvHNU", "fee": 1400000, "feeAssetId": null, "timestamp": 1631696222142, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "2inqJRtdpqwC7W8nrV9bPEvjvjwf7RKEfC7iNpNavMBDuXCFQwFFCTGKm3HFskvjW45ULW7uvJHNHdvfRHrZW1Fo", "2CEMmye9FCUy1ja7YikydEM4CETFdn6Sqn5ABySz9GtBLYBJE5xTqi843UYQiBJMFJSjrm8c8RFx53sLRasJ2tco" ], "script": "base64:AAIFAAAAAAAAE+AIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgUKAwgYARIFCgMICAESBAoCCAESAwoBCBIAEgAaEgoCYTESDGFkbWluUHViS2V5MRoSCgJhMhIMYWRtaW5QdWJLZXkyGhIKAmEzEgxhZG1pblB1YktleTMaEAoCYTQSCmFkbVN0YWtpbmcaGgoCYTUSFGtleVNoYXJlVG9rZW5zTG9ja2VkGhEKAmE2EgtrU2hhcmVMaW1pdBoPCgJhNxIJa2V5QWN0aXZlGg4KAmE4EghrZXlDYXVzZRoiCgJhORIca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudBojCgJiMRIda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMaGwoCYjISFWtleUhlaWdodFBvb2xGcmFjdGlvbhojCgJiMxIda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQaJAoCYjQSHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cxobCgJiNRIVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0GhUKAmI2Eg9rZXlMYXN0SW50ZXJlc3QaGwoCYjcSFWtleUxhc3RJbnRlcmVzdEhlaWdodBoeCgJiOBIYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkGhkKAmI5EhNrZXlVc2VyTGFzdEludGVyZXN0Gg8KAmMxEglrZXlTV09QaWQaHgoCYzISGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudBoiCgJjMxIca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudBoWCgJjNBIQa2V5QXZhaWxhYmxlU1dPUBobCgJjNRIVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0GgwKAmM2EgZrZXlBUFkaHAoCYzcSFmtQcmV2aW91c1RvdGFsVm90ZVNXT1AaGQoCYzgSE2tleVN3b3BZZWFyRW1pc3Npb24aFQoCYzkSD2tleUJhbGFuY2VjcG1tQRoVCgJkMRIPa2V5QmFsYW5jZWNwbW1CGicKAmQyEiFrSGFydmVzdFBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcaKwoCZDMSJWtIYXJ2ZXN0VXNlclBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcaHwoCZDQSGWtleUxpbWl0U2hhcmVGaXJzdEhhcnZlc3QaEQoCZDUSC2tleUFzc2V0SWRBGhEKAmQ2EgtrZXlBc3NldElkQhobCgJkNxIVa2V5Rmlyc3RIYXJ2ZXN0SGVpZ2h0GhkKAmQ4EhNrZXlmaXJzdEhhcnZlc3RDcG1tGhQKAmQ5Eg5rZXlUZW1wUHJldlN1bRoTCgJlMRINa2V5VGVtcEN1clN1bRoXCgJlMhIRZ292ZXJuYW5jZUFkZHJlc3MaDAoCZTMSBndhbGxldBoTCgJlNBINdm90aW5nQWRkcmVzcxoiCgJlNRIcYWRtaW5JbmNyZWFzZUludGVyZXN0QWRkcmVzcxoUCgJlNhIOb25lV2Vla0luQmxvY2saFAoCZTcSDnRvdGFsVm90ZVNoYXJlGhEKAmU4EgtzY2FsZVZhbHVlMRoRCgJlORILc2NhbGVWYWx1ZTMaEQoCZjESC3NjYWxlVmFsdWU1GhEKAmYyEgtzY2FsZVZhbHVlNhoRCgJmMxILc2NhbGVWYWx1ZTgaEgoCZjQSDHNjYWxlVmFsdWUxMRoRCgJmNRILc3RyQXNzZXRJZEEaCgoCZjYSBHBvb2waEQoCZjcSC3N0ckFzc2V0SWRCGg4KAmY4Eghhc3NldElkQRoOCgJmORIIYXNzZXRJZEIaEQoCZzESC2tCYXNlUGVyaW9kGhMKAmcyEg1rUGVyaW9kTGVuZ3RoGhIKAmczEgxrU3RhcnRIZWlnaHQaGQoCZzQSE2tGaXJzdEhhcnZlc3RIZWlnaHQaHAoCZzUSFmtEdXJhdGlvbkZ1bGxWb3RlUG93ZXIaEwoCZzYSDWtNaW5Wb3RlUG93ZXIaEAoCZzcSCmJhc2VQZXJpb2QaEQoCZzgSC3N0YXJ0SGVpZ2h0GhIKAmc5EgxwZXJpb2RMZW5ndGgaGwoCaDESFWR1cmF0aW9uRnVsbFZvdGVQb3dlchoSCgJoMhIMbWluVm90ZVBvd2VyGg4KAmgzEghpc0FjdGl2ZRoQCgJoNBIKY3VyclBlcmlvZBoTCgJoNRINZ2V0TGltaXRUb2tlbhoJCgJoNhIDQVBZGhYKAmg3EhBTd29wWWVhckVtaXNzaW9uGhAKAmg4Egphc3NldE5hbWVBGg0KAmg5EgckbWF0Y2gwGggKAmkxEgJpZBoLCgJpMhIFd2F2ZXMaEAoCaTMSCmFzc2V0TmFtZUIaCgoCaTQSBFNXT1AaFAoCaTUSDmlzRmlyc3RIYXJ2ZXN0GhsKAmk2EhVnZXRIZWlnaHRGaXJzdEhhcnZlc3QaEQoCaTcSC2dldEJhbGFuY2VBGhEKAmk4EgtnZXRCYWxhbmNlQhoYCgJpORISZ2V0U2hhcmVMaW1pdFRva2VuGh4KAmoxEhhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQaFQoCajISD2dldFNoYXJlQXNzZXRJZBoUCgJqMxIOYWNjb3VudEJhbGFuY2UaDQoCajQSB2Fzc2V0SWQaEgoCajUSDGdldEFzc2V0SW5mbxoOCgJqNhIIc3RyaW5nSWQaCgoCajcSBGluZm8aFAoCajgSDmNhbGNTY2FsZVZhbHVlGg4KAmo5Eghhc3NldElkMRoOCgJrMRIIYXNzZXRJZDIaFgoCazISEGFzc2V0SWQxRGVjaW1hbHMaFgoCazMSEGFzc2V0SWQyRGVjaW1hbHMaEQoCazQSC3NjYWxlRGlnaXRzGhcKAms1EhF1c2VyQXZhaWxhYmxlU1dPUBoKCgJrNhIEdXNlchoQCgJrNxIKcmV3YXJkSW5mbxogCgJrOBIadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQaIQoCazkSG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cxofCgJsMRIZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudBoYCgJsMhIScmV3YXJkVXBkYXRlSGVpZ2h0GhwKAmwzEhZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0GiAKAmw0EhpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cxoXCgJsNRIRcmV3YXJkUG9vbEN1cnJlbnQaGAoCbDYSEnJld2FyZFBvb2xQcmV2aW91cxoZCgJsNxITZ2V0TGFzdEludGVyZXN0SW5mbxoSCgJsOBIMbGFzdEludGVyZXN0GhgKAmw5EhJsYXN0SW50ZXJlc3RIZWlnaHQaGQoCbTESE2dldFVzZXJJbnRlcmVzdEluZm8aEQoCbTISC3VzZXJBZGRyU3RyGhYKAm0zEhB1c2VyTGFzdEludGVyZXN0Gg8KAm00Egl1c2VyU2hhcmUaGwoCbTUSFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZRobCgJtNhIVdXNlclNoYXJlVG9rZW5zQW1vdW50GhIKAm03EgxjYWxjSW50ZXJlc3QaGwoCbTgSFWN1cnJlbnRSZXdhcmRQZXJCbG9jaxoWCgJtORIQc2hhcmVUb2tlbkxvY2tlZBocCgJuMRIWcHJldmlvdXNSZXdhcmRQZXJCbG9jaxoQCgJuMhIKc2NhbGVWYWx1ZRoHCgJuMxIBaBoMCgJuNBIGcmV3YXJkGjAKAm41EipyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUaGQoCbjYSE2ludGVyZXN0QWZ0ZXJVcGRhdGUaDwoCbjcSCWNsYWltQ2FsYxoSCgJuOBIMc2hhcmVBc3NldElkGhMKAm45Eg0kdDAxMzA5NjEzMTYxGhMKAm8xEg0kdDAxMzE2NjEzMjc4GhMKAm8yEg0kdDAxMzI4MzEzMzY3GhUKAm8zEg9jdXJyZW50SW50ZXJlc3QaEQoCbzQSC2NsYWltQW1vdW50GhUKAm81Eg91c2VyTmV3SW50ZXJlc3QaGwoCbzYSFWNsYWltQ2FsY0Zvck1pZ3JhdGlvbhoTCgJvNxINJHQwMTQwOTAxNDE1NRoTCgJvOBINJHQwMTQxNjAxNDI3MhoTCgJvORINJHQwMTQyNzcxNDM2MRodCgJwMRIXY2FsY3VsYXRlUHJvdG9jb2xSZXdhcmQaEwoCcDISDSR0MDE0ODY1MTQ5MzAaEwoCcDMSDSR0MDE0OTM1MTUwNDYaHAoCcDQSFmNoZWNrUG10QXNzZXRJZENvcnJlY3QaEAoCcDUSCnBtdEFzc2V0SWQaFgoCcDYSEHBvb2xTaGFyZUFzc2V0SWQaHgoCcDcSGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudBoNCgJwOBIHc3VzcGVuZBoLCgJwORIFY2F1c2UaBwoCcTESAWkaDQoCcTISB2Vhcmx5TFAaEAoCcTMSCmluaXRBbW91bnQaDwoCcTQSCVNXT1Bpc3N1ZRoMCgJxNRIGU1dPUGlkGhMKAnE2Eg0kdDAxODAxNjE4MTE5GhMKAnE3Eg1jdXJyZW50UmV3YXJkGhMKAnE4Eg0kdDAxODUyODE4NjY0GhMKAnE5Eg0kdDAxODY2OTE4NzcyGhMKAnIxEg0kdDAxOTAwNjE5MDgxGg8KAnIyEglwbXRBbW91bnQaEwoCcjMSDSR0MDE5MDg2MTkxNTkaEwoCcjQSDXBtdFN0ckFzc2V0SWQaEgoCcjUSDHBtdEFzc2V0TmFtZRoRCgJyNhILcG10RGVjaW1hbHMaEwoCcjcSDSR0MDE5MTY0MTkyODAaGAoCcjgSEnVzZXJTaGFyZUFtb3VudE5ldxoXCgJyORIRYXZhaWxhYmxlRnVuZHNOZXcaFgoCczESEHRvdGFsU2hhcmVBbW91bnQaGQoCczISE3RvdGFsU2hhcmVBbW91bnROZXcaFwoCczMSEXVzZXJDbGFpbWVkQW1vdW50GhoKAnM0EhR1c2VyQ2xhaW1lZEFtb3VudE5ldxoPCgJzNRIJYmFzZUVudHJ5GhMKAnM2Eg1oYXJ2ZXN0UGVyaW9kGhQKAnM3Eg5hbW91bnRPZlZvdGluZxoWCgJzOBIQYW1vdW50UG9vbFN0cmFjdBokCgJzORIeYW1vdW50QWN0aXZlVm90ZVVzZXJQb29sU3RyYWN0GiAKAnQxEhphbW91bnRQb29sQWN0aXZlVm90ZVN0cmFjdBoaCgJ0MhIUdXNlclNoYXJlVG9rZW5Mb2NrZWQaGAoCdDMSEnVzZXJQb29sQWN0aXZlVm90ZRoUCgJ0NBIOcG9vbEFjdGl2ZVZvdGUaFAoCdDUSDnByb3RvY29sUmV3YXJkGhUKAnQ2Eg9saW1pdFNoYXJlVG9rZW4aEAoCdDcSCnNoYXJlVG9rZW4aHwoCdDgSGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQaEwoCdDkSDXNoYXJlVG9rZW5zSWQaEwoCdTESDSR0MDIzODE1MjM5MzEaCwoCdTISBXVzZXJzGhUKAnUzEg9taWdyYXRpb25IZWlnaHQaEAoCdTQSCnVwZGF0ZVVzZXIaCwoCdTUSBWFjY3VtGgcKAnU2EgF1GgcKAnU3EgFyGhUKAnU4Eg8kbGlzdDI2Mzk3MjY0MjgaFQoCdTkSDyRzaXplMjYzOTcyNjQyOBoVCgJ2MRIPJGFjYzAyNjM5NzI2NDI4GhUKAnYyEg8kYWNjMTI2Mzk3MjY0MjgaFQoCdjMSDyRhY2MyMjYzOTcyNjQyOBoVCgJ2NBIPJGFjYzMyNjM5NzI2NDI4GhUKAnY1Eg8kYWNjNDI2Mzk3MjY0MjgaFQoCdjYSDyRhY2M1MjYzOTcyNjQyOBoVCgJ2NxIPJGFjYzYyNjM5NzI2NDI4GhUKAnY4Eg8kYWNjNzI2Mzk3MjY0MjgaFQoCdjkSDyRhY2M4MjYzOTcyNjQyOBoVCgJ3MRIPJGFjYzkyNjM5NzI2NDI4GhYKAncyEhAkYWNjMTAyNjM5NzI2NDI4GhYKAnczEhAkYWNjMTEyNjM5NzI2NDI4GhYKAnc0EhAkYWNjMTIyNjM5NzI2NDI4GhYKAnc1EhAkYWNjMTMyNjM5NzI2NDI4GhoKAnc2EhRzaGFyZVRva2VuTXVsdGlwbHllchoTCgJ3NxINJHQwMjY2MzkyNjc1MRoeCgJ3OBIYdXNlclNoYXJlVG9rZW5zQW1vdW50TmV3GiQKAnc5Eh50b3RhbEFtb3VudE5ld1NoYXJlVG9rZW5Mb2NrZWQaKAoCeDESInRvdGFsQW1vdW50U2hhcmVUb2tlbnNMb2NrZWRCZWZvcmUaJQoCeDISH3RvdGFsQW1vdW50U2hhcmVUb2tlbnNMb2NrZWROZXcaEwoCeDMSDSR0MDI4ODE1Mjg4ODAaEwoCeDQSDSR0MDI4ODg1Mjg5OTcaEwoCeDUSDSR0MDI5MDAyMjkxMTgaEwoCeDYSDWF2YWlsYWJsZUZ1bmQaCAoCeDcSAnR4GgwKAng4EgZ2ZXJpZnkaCQoCeDkSA2ludhoOCgJ5MRIIY2FsbEVnZzEaEwoCeTISDXNpZ25lZEJ5QWRtaW4aGAoCeTMSEmFkbWluUHViS2V5MVNpZ25lZBoYCgJ5NBISYWRtaW5QdWJLZXkyU2lnbmVkGhgKAnk1EhJhZG1pblB1YktleTNTaWduZWQAAABdAAAAAAJhMQEAAAAg4qeMQDuGzRfmtEuH2+Whg6yuKqHsNy5eZQUT8rXs7wQAAAAAAmEyAQAAACDqOKy5AbWIPHKjnig9gdQaImURE43fjoONfP1X8ZsRWQAAAAACYTMBAAAAIKc0loKwo8nHXTJiAX87RSdPM+q/NsQBzxC3dHCqJ8xuAAAAAAJhNAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAAmE1AgAAABpfdG90YWxfc2hhcmVfdG9rZW5zX2xvY2tlZAAAAAACYTYCAAAAHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QAAAAAAmE3AgAAAAZhY3RpdmUAAAAAAmE4AgAAAA5zaHV0ZG93bl9jYXVzZQAAAAACYTkCAAAAHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAAAJiMQIAAAAeX3ByZXZpb3VzX3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAAAJiMgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAAmIzAgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAAmI0AgAAAB90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzAAAAAAJiNQIAAAAUcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAAmI2AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAACYjcCAAAAFV9sYXN0X2ludGVyZXN0X2hlaWdodAAAAAACYjgCAAAAFF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAJiOQIAAAAOX2xhc3RfaW50ZXJlc3QAAAAAAmMxAgAAAAdTV09QX2lkAAAAAAJjMgIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAAmMzAgAAABlfU1dPUF9sYXN0X2NsYWltZWRfYW1vdW50AAAAAAJjNAIAAAAPX2F2YWlsYWJsZV9TV09QAAAAAAJjNQIAAAAUZmFybWluZ19zdGFydF9oZWlnaHQAAAAAAmM2AgAAAANhcHkAAAAAAmM3AgAAABhwcmV2aW91c190b3RhbF92b3RlX1NXT1AAAAAAAmM4AgAAABJzd29wX3llYXJfZW1pc3Npb24AAAAAAmM5AgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAAAmQxAgAAAA9CX2Fzc2V0X2JhbGFuY2UAAAAAAmQyAgAAAB5faGFydmVzdF9wb29sX2FjdGl2ZVZvdGVfc3RydWMAAAAAAmQzAgAAACNfaGFydmVzdF91c2VyX3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAACZDQCAAAAHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QAAAAAAmQ1AgAAAApBX2Fzc2V0X2lkAAAAAAJkNgIAAAAKQl9hc3NldF9pZAAAAAACZDcCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAJkOAIAAAANZmlyc3RfaGFydmVzdAAAAAACZDkCAAAAE3N1bV9yZXdhcmRfcHJldmlvdXMA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", "height": 1703934, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9YZ9zJxaUyTWBMA7DjNtdK7M8RmB4o4syWwHmKYncQSy Next: BnPQP9ridg9HH8p8BfqaBVUwGn8GQtxKP2AUugyiH7bB Diff:
OldNewDifferences
594594
595595
596596 @Callable(i)
597-func egg0 (pool,users,migrationHeight) = if (if ((pool != "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
598- then (pool != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
599- else false)
597+func egg0 (pool,users,migrationHeight) = if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
598+ then true
599+ else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
600600 then throw()
601601 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
602602 then throw("Only admin can call this function")
604604 func updateUser (accum,u) = {
605605 let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
606606 if ((r == r))
607- then (accum :+ BooleanEntry((u + "_migration"), true))
607+ then accum
608608 else throw("Strict value is not equal to itself.")
609609 }
610610
611- let $list2643726468 = users
612- let $size2643726468 = size($list2643726468)
613- let $acc02643726468 = nil
614- if (($size2643726468 == 0))
615- then $acc02643726468
611+ let $list2639726428 = users
612+ let $size2639726428 = size($list2639726428)
613+ let $acc02639726428 = nil
614+ if (($size2639726428 == 0))
615+ then $acc02639726428
616616 else {
617- let $acc12643726468 = updateUser($acc02643726468, $list2643726468[0])
618- if (($size2643726468 == 1))
619- then $acc12643726468
617+ let $acc12639726428 = updateUser($acc02639726428, $list2639726428[0])
618+ if (($size2639726428 == 1))
619+ then $acc12639726428
620620 else {
621- let $acc22643726468 = updateUser($acc12643726468, $list2643726468[1])
622- if (($size2643726468 == 2))
623- then $acc22643726468
621+ let $acc22639726428 = updateUser($acc12639726428, $list2639726428[1])
622+ if (($size2639726428 == 2))
623+ then $acc22639726428
624624 else {
625- let $acc32643726468 = updateUser($acc22643726468, $list2643726468[2])
626- if (($size2643726468 == 3))
627- then $acc32643726468
625+ let $acc32639726428 = updateUser($acc22639726428, $list2639726428[2])
626+ if (($size2639726428 == 3))
627+ then $acc32639726428
628628 else {
629- let $acc42643726468 = updateUser($acc32643726468, $list2643726468[3])
630- if (($size2643726468 == 4))
631- then $acc42643726468
629+ let $acc42639726428 = updateUser($acc32639726428, $list2639726428[3])
630+ if (($size2639726428 == 4))
631+ then $acc42639726428
632632 else {
633- let $acc52643726468 = updateUser($acc42643726468, $list2643726468[4])
634- if (($size2643726468 == 5))
635- then $acc52643726468
633+ let $acc52639726428 = updateUser($acc42639726428, $list2639726428[4])
634+ if (($size2639726428 == 5))
635+ then $acc52639726428
636636 else {
637- let $acc62643726468 = updateUser($acc52643726468, $list2643726468[5])
638- if (($size2643726468 == 6))
639- then $acc62643726468
637+ let $acc62639726428 = updateUser($acc52639726428, $list2639726428[5])
638+ if (($size2639726428 == 6))
639+ then $acc62639726428
640640 else {
641- let $acc72643726468 = updateUser($acc62643726468, $list2643726468[6])
642- if (($size2643726468 == 7))
643- then $acc72643726468
641+ let $acc72639726428 = updateUser($acc62639726428, $list2639726428[6])
642+ if (($size2639726428 == 7))
643+ then $acc72639726428
644644 else {
645- let $acc82643726468 = updateUser($acc72643726468, $list2643726468[7])
646- if (($size2643726468 == 8))
647- then $acc82643726468
645+ let $acc82639726428 = updateUser($acc72639726428, $list2639726428[7])
646+ if (($size2639726428 == 8))
647+ then $acc82639726428
648648 else {
649- let $acc92643726468 = updateUser($acc82643726468, $list2643726468[8])
650- if (($size2643726468 == 9))
651- then $acc92643726468
649+ let $acc92639726428 = updateUser($acc82639726428, $list2639726428[8])
650+ if (($size2639726428 == 9))
651+ then $acc92639726428
652652 else {
653- let $acc102643726468 = updateUser($acc92643726468, $list2643726468[9])
654- if (($size2643726468 == 10))
655- then $acc102643726468
653+ let $acc102639726428 = updateUser($acc92639726428, $list2639726428[9])
654+ if (($size2639726428 == 10))
655+ then $acc102639726428
656656 else {
657- let $acc112643726468 = updateUser($acc102643726468, $list2643726468[10])
658- if (($size2643726468 == 11))
659- then $acc112643726468
657+ let $acc112639726428 = updateUser($acc102639726428, $list2639726428[10])
658+ if (($size2639726428 == 11))
659+ then $acc112639726428
660660 else {
661- let $acc122643726468 = updateUser($acc112643726468, $list2643726468[11])
662- if (($size2643726468 == 12))
663- then $acc122643726468
661+ let $acc122639726428 = updateUser($acc112639726428, $list2639726428[11])
662+ if (($size2639726428 == 12))
663+ then $acc122639726428
664664 else {
665- let $acc132643726468 = updateUser($acc122643726468, $list2643726468[12])
666- if (($size2643726468 == 13))
667- then $acc132643726468
668- else {
669- let $acc142643726468 = updateUser($acc132643726468, $list2643726468[13])
670- if (($size2643726468 == 14))
671- then $acc142643726468
672- else {
673- let $acc152643726468 = updateUser($acc142643726468, $list2643726468[14])
674- if (($size2643726468 == 15))
675- then $acc152643726468
676- else {
677- let $acc162643726468 = updateUser($acc152643726468, $list2643726468[15])
678- if (($size2643726468 == 16))
679- then $acc162643726468
680- else {
681- let $acc172643726468 = updateUser($acc162643726468, $list2643726468[16])
682- if (($size2643726468 == 17))
683- then $acc172643726468
684- else {
685- let $acc182643726468 = updateUser($acc172643726468, $list2643726468[17])
686- if (($size2643726468 == 18))
687- then $acc182643726468
688- else {
689- let $acc192643726468 = updateUser($acc182643726468, $list2643726468[18])
690- if (($size2643726468 == 19))
691- then $acc192643726468
692- else {
693- let $acc202643726468 = updateUser($acc192643726468, $list2643726468[19])
694- if (($size2643726468 == 20))
695- then $acc202643726468
696- else {
697- let $acc212643726468 = updateUser($acc202643726468, $list2643726468[20])
698- if (($size2643726468 == 21))
699- then $acc212643726468
700- else {
701- let $acc222643726468 = updateUser($acc212643726468, $list2643726468[21])
702- if (($size2643726468 == 22))
703- then $acc222643726468
704- else {
705- let $acc232643726468 = updateUser($acc222643726468, $list2643726468[22])
706- if (($size2643726468 == 23))
707- then $acc232643726468
708- else {
709- let $acc242643726468 = updateUser($acc232643726468, $list2643726468[23])
710- if (($size2643726468 == 24))
711- then $acc242643726468
712- else {
713- let $acc252643726468 = updateUser($acc242643726468, $list2643726468[24])
714- if (($size2643726468 == 25))
715- then $acc252643726468
716- else {
717- let $acc262643726468 = updateUser($acc252643726468, $list2643726468[25])
718- if (($size2643726468 == 26))
719- then $acc262643726468
720- else {
721- let $acc272643726468 = updateUser($acc262643726468, $list2643726468[26])
722- if (($size2643726468 == 27))
723- then $acc272643726468
724- else {
725- let $acc282643726468 = updateUser($acc272643726468, $list2643726468[27])
726- if (($size2643726468 == 28))
727- then $acc282643726468
728- else {
729- let $acc292643726468 = updateUser($acc282643726468, $list2643726468[28])
730- if (($size2643726468 == 29))
731- then $acc292643726468
732- else {
733- let $acc302643726468 = updateUser($acc292643726468, $list2643726468[29])
734- if (($size2643726468 == 30))
735- then $acc302643726468
736- else {
737- let $acc312643726468 = updateUser($acc302643726468, $list2643726468[30])
738- if (($size2643726468 == 31))
739- then $acc312643726468
740- else {
741- let $acc322643726468 = updateUser($acc312643726468, $list2643726468[31])
742- if (($size2643726468 == 32))
743- then $acc322643726468
744- else {
745- let $acc332643726468 = updateUser($acc322643726468, $list2643726468[32])
746- if (($size2643726468 == 33))
747- then $acc332643726468
748- else {
749- let $acc342643726468 = updateUser($acc332643726468, $list2643726468[33])
750- if (($size2643726468 == 34))
751- then $acc342643726468
752- else {
753- let $acc352643726468 = updateUser($acc342643726468, $list2643726468[34])
754- if (($size2643726468 == 35))
755- then $acc352643726468
756- else {
757- let $acc362643726468 = updateUser($acc352643726468, $list2643726468[35])
758- if (($size2643726468 == 36))
759- then $acc362643726468
760- else {
761- let $acc372643726468 = updateUser($acc362643726468, $list2643726468[36])
762- if (($size2643726468 == 37))
763- then $acc372643726468
764- else {
765- let $acc382643726468 = updateUser($acc372643726468, $list2643726468[37])
766- if (($size2643726468 == 38))
767- then $acc382643726468
768- else {
769- let $acc392643726468 = updateUser($acc382643726468, $list2643726468[38])
770- if (($size2643726468 == 39))
771- then $acc392643726468
772- else {
773- let $acc402643726468 = updateUser($acc392643726468, $list2643726468[39])
774- if (($size2643726468 == 40))
775- then $acc402643726468
776- else {
777- let $acc412643726468 = updateUser($acc402643726468, $list2643726468[40])
778- if (($size2643726468 == 41))
779- then $acc412643726468
780- else {
781- let $acc422643726468 = updateUser($acc412643726468, $list2643726468[41])
782- if (($size2643726468 == 42))
783- then $acc422643726468
784- else {
785- let $acc432643726468 = updateUser($acc422643726468, $list2643726468[42])
786- if (($size2643726468 == 43))
787- then $acc432643726468
788- else {
789- let $acc442643726468 = updateUser($acc432643726468, $list2643726468[43])
790- if (($size2643726468 == 44))
791- then $acc442643726468
792- else {
793- let $acc452643726468 = updateUser($acc442643726468, $list2643726468[44])
794- if (($size2643726468 == 45))
795- then $acc452643726468
796- else {
797- let $acc462643726468 = updateUser($acc452643726468, $list2643726468[45])
798- throw("List size exceed 45")
799- }
800- }
801- }
802- }
803- }
804- }
805- }
806- }
807- }
808- }
809- }
810- }
811- }
812- }
813- }
814- }
815- }
816- }
817- }
818- }
819- }
820- }
821- }
822- }
823- }
824- }
825- }
826- }
827- }
828- }
829- }
830- }
831- }
665+ let $acc132639726428 = updateUser($acc122639726428, $list2639726428[12])
666+ throw("List size exceed 12")
832667 }
833668 }
834669 }
851686 then throw("Only contract itself can invoke this function")
852687 else {
853688 let shareTokenMultiplyer = 1000
854- let $t02667926791 = claimCalc(pool, u, migrationHeight)
855- let userNewInterest = $t02667926791._1
856- let currentInterest = $t02667926791._2
857- let claimAmount = $t02667926791._3
858- let userShareTokensAmount = $t02667926791._4
689+ let $t02663926751 = claimCalc(pool, u, migrationHeight)
690+ let userNewInterest = $t02663926751._1
691+ let currentInterest = $t02663926751._2
692+ let claimAmount = $t02663926751._3
693+ let userShareTokensAmount = $t02663926751._4
859694 let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
860695 let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
861696 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
862697 let userShareTokensAmountNew = (userShareTokensAmount * shareTokenMultiplyer)
863- let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "total_amount_new_sharetoken_locked")), 0)
864-[IntegerEntry((((pool + "_") + u) + keyUserLastInterest), 0), IntegerEntry((((pool + "_") + u) + keyUserShareTokensLocked), userShareTokensAmountNew), IntegerEntry((((pool + "_") + u) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry(((pool + "_") + "total_amount_new_sharetoken_locked"), (totalAmountNewShareTokenLocked + userShareTokensAmountNew))]
698+ let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "tansl")), 0)
699+[IntegerEntry((((pool + "_") + u) + keyUserLastInterest), 0), IntegerEntry((((pool + "_") + u) + keyUserShareTokensLocked), userShareTokensAmountNew), IntegerEntry((((pool + "_") + u) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry(((pool + "_") + "tansl"), (totalAmountNewShareTokenLocked + userShareTokensAmountNew))]
865700 }
866701
867702
872707 else {
873708 let shareTokenMultiplyer = 1000
874709 let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
875- let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
710+ let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "tansl"))
876711 if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
877712 then throw("New total amount share tockens != old total amount")
878- else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight), IntegerEntry((pool + keyShareTokensLocked), totalAmountShareTokensLockedNew), DeleteEntry(((pool + "_") + "total_amount_new_sharetoken_locked"))]
713+ else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight), IntegerEntry((pool + keyShareTokensLocked), totalAmountShareTokensLockedNew), DeleteEntry(((pool + "_") + "tansl"))]
879714 }
880715
881716
884719 func claim (pool) = {
885720 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
886721 let shareTokenLocked = getTotalShareTokenLocked(pool)
887- let $t02897129036 = getLastInterestInfo(pool)
888- let lastInterestHeight = $t02897129036._1
889- let lastInterest = $t02897129036._2
890- let $t02904129153 = rewardInfo(pool)
891- let currentRewardPerBlock = $t02904129153._1
892- let rewardUpdateHeight = $t02904129153._2
893- let previousRewardPerBlock = $t02904129153._3
894- let poolRewardUpdateHeight = $t02904129153._4
895- let $t02915829274 = claimCalc(pool, toString(i.caller), height)
896- let userNewInterest = $t02915829274._1
897- let currentInterest = $t02915829274._2
898- let claimAmount = $t02915829274._3
899- let userShareTokensAmount = $t02915829274._4
722+ let $t02881528880 = getLastInterestInfo(pool)
723+ let lastInterestHeight = $t02881528880._1
724+ let lastInterest = $t02881528880._2
725+ let $t02888528997 = rewardInfo(pool)
726+ let currentRewardPerBlock = $t02888528997._1
727+ let rewardUpdateHeight = $t02888528997._2
728+ let previousRewardPerBlock = $t02888528997._3
729+ let poolRewardUpdateHeight = $t02888528997._4
730+ let $t02900229118 = claimCalc(pool, toString(i.caller), height)
731+ let userNewInterest = $t02900229118._1
732+ let currentInterest = $t02900229118._2
733+ let claimAmount = $t02900229118._3
734+ let userShareTokensAmount = $t02900229118._4
900735 let availableFund = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
901736 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
902737 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminPubKey1 = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy'
55
66 let adminPubKey2 = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk'
77
88 let adminPubKey3 = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
99
1010 let admStaking = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
1111
1212 let keyShareTokensLocked = "_total_share_tokens_locked"
1313
1414 let kShareLimit = "share_limit_on_first_harvest"
1515
1616 let keyActive = "active"
1717
1818 let keyCause = "shutdown_cause"
1919
2020 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
2121
2222 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
2323
2424 let keyHeightPoolFraction = "_pool_reward_update_height"
2525
2626 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
2727
2828 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
2929
3030 let keyRewardUpdateHeight = "reward_update_height"
3131
3232 let keyLastInterest = "_last_interest"
3333
3434 let keyLastInterestHeight = "_last_interest_height"
3535
3636 let keyUserShareTokensLocked = "_share_tokens_locked"
3737
3838 let keyUserLastInterest = "_last_interest"
3939
4040 let keySWOPid = "SWOP_id"
4141
4242 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
4343
4444 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
4545
4646 let keyAvailableSWOP = "_available_SWOP"
4747
4848 let keyFarmingStartHeight = "farming_start_height"
4949
5050 let keyAPY = "apy"
5151
5252 let kPreviousTotalVoteSWOP = "previous_total_vote_SWOP"
5353
5454 let keySwopYearEmission = "swop_year_emission"
5555
5656 let keyBalancecpmmA = "A_asset_balance"
5757
5858 let keyBalancecpmmB = "B_asset_balance"
5959
6060 let kHarvestPoolActiveVoteStrucVoting = "_harvest_pool_activeVote_struc"
6161
6262 let kHarvestUserPoolActiveVoteStrucVoting = "_harvest_user_pool_activeVote_struc"
6363
6464 let keyLimitShareFirstHarvest = "share_limit_on_first_harvest"
6565
6666 let keyAssetIdA = "A_asset_id"
6767
6868 let keyAssetIdB = "B_asset_id"
6969
7070 let keyFirstHarvestHeight = "first_harvest_height"
7171
7272 let keyfirstHarvestCpmm = "first_harvest"
7373
7474 let keyTempPrevSum = "sum_reward_previous"
7575
7676 let keyTempCurSum = "sum_reward_current"
7777
7878 let governanceAddress = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7979
8080 let wallet = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8181
8282 let votingAddress = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8383
8484 let adminIncreaseInterestAddress = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8585
8686 let oneWeekInBlock = 10106
8787
8888 let totalVoteShare = 10000000000
8989
9090 let scaleValue1 = 10
9191
9292 let scaleValue3 = 1000
9393
9494 let scaleValue5 = 100000
9595
9696 let scaleValue6 = 1000000
9797
9898 let scaleValue8 = 100000000
9999
100100 let scaleValue11 = 100000000000
101101
102102 func strAssetIdA (pool) = getStringValue(pool, keyAssetIdA)
103103
104104
105105 func strAssetIdB (pool) = getStringValue(pool, keyAssetIdB)
106106
107107
108108 func assetIdA (pool) = if ((strAssetIdA(pool) == "WAVES"))
109109 then unit
110110 else fromBase58String(strAssetIdA(pool))
111111
112112
113113 func assetIdB (pool) = if ((strAssetIdB(pool) == "WAVES"))
114114 then unit
115115 else fromBase58String(strAssetIdB(pool))
116116
117117
118118 let kBasePeriod = "base_period"
119119
120120 let kPeriodLength = "period_length"
121121
122122 let kStartHeight = "start_height"
123123
124124 let kFirstHarvestHeight = "first_harvest_height"
125125
126126 let kDurationFullVotePower = "duration_full_vote_power"
127127
128128 let kMinVotePower = "min_vote_power"
129129
130130 let basePeriod = valueOrErrorMessage(getInteger(votingAddress, kBasePeriod), "Empty kBasePeriod")
131131
132132 let startHeight = valueOrErrorMessage(getInteger(votingAddress, kStartHeight), "Empty kStartHeight")
133133
134134 let periodLength = valueOrErrorMessage(getInteger(votingAddress, kPeriodLength), "Empty kPeriodLength")
135135
136136 let durationFullVotePower = valueOrErrorMessage(getInteger(votingAddress, kDurationFullVotePower), "Empty kDurationFullVotePower")
137137
138138 let minVotePower = valueOrErrorMessage(getInteger(votingAddress, kMinVotePower), "Empty kMinVotePower")
139139
140140 let isActive = getBooleanValue(this, keyActive)
141141
142142 let currPeriod = (basePeriod + ((height - startHeight) / periodLength))
143143
144144 func getLimitToken (pool) = valueOrElse(getIntegerValue(pool, keyLimitShareFirstHarvest), 0)
145145
146146
147147 let APY = getIntegerValue(this, keyAPY)
148148
149149 let SwopYearEmission = getIntegerValue(this, keySwopYearEmission)
150150
151151 func assetNameA (pool) = match assetIdA(pool) {
152152 case id: ByteVector =>
153153 value(assetInfo(id)).name
154154 case waves: Unit =>
155155 "WAVES"
156156 case _ =>
157157 throw("Match error")
158158 }
159159
160160
161161 func assetNameB (pool) = match assetIdB(pool) {
162162 case id: ByteVector =>
163163 value(assetInfo(id)).name
164164 case waves: Unit =>
165165 "WAVES"
166166 case _ =>
167167 throw("Match error")
168168 }
169169
170170
171171 let SWOP = fromBase58String(getStringValue(this, keySWOPid))
172172
173173 func isFirstHarvest (pool) = valueOrElse(getBoolean(pool, keyfirstHarvestCpmm), false)
174174
175175
176176 func getHeightFirstHarvest (pool) = valueOrElse(getInteger(pool, keyFirstHarvestHeight), 0)
177177
178178
179179 func getBalanceA (pool) = valueOrErrorMessage(getInteger(pool, keyBalancecpmmA), ("No data on the key: " + keyBalancecpmmA))
180180
181181
182182 func getBalanceB (pool) = valueOrErrorMessage(getInteger(pool, keyBalancecpmmB), ("No data on the key: " + keyBalancecpmmB))
183183
184184
185185 func getShareLimitToken (pool) = valueOrErrorMessage(getInteger(pool, kShareLimit), ("No data on the key: " + kShareLimit))
186186
187187
188188 func getTotalShareTokenLocked (pool) = valueOrErrorMessage(getInteger(this, (pool + keyShareTokensLocked)), (("No data on the key: " + pool) + keyShareTokensLocked))
189189
190190
191191 func getShareAssetId (pool) = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
192192
193193
194194 func accountBalance (assetId) = match assetId {
195195 case id: ByteVector =>
196196 assetBalance(this, id)
197197 case waves: Unit =>
198198 wavesBalance(this).available
199199 case _ =>
200200 throw("Match error")
201201 }
202202
203203
204204 func getAssetInfo (assetId) = match assetId {
205205 case id: ByteVector =>
206206 let stringId = toBase58String(id)
207207 let info = valueOrErrorMessage(assetInfo(id), (("Asset " + stringId) + " doesn't exist"))
208208 $Tuple3(stringId, info.name, info.decimals)
209209 case waves: Unit =>
210210 $Tuple3("WAVES", "WAVES", 8)
211211 case _ =>
212212 throw("Match error")
213213 }
214214
215215
216216 func calcScaleValue (assetId1,assetId2) = {
217217 let assetId1Decimals = value(assetInfo(assetId1)).decimals
218218 let assetId2Decimals = value(assetInfo(assetId2)).decimals
219219 let scaleDigits = ((assetId2Decimals - assetId1Decimals) + 8)
220220 pow(10, 0, scaleDigits, 0, 0, FLOOR)
221221 }
222222
223223
224224 func userAvailableSWOP (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + user) + keyAvailableSWOP)), 0)
225225
226226
227227 func rewardInfo (pool) = {
228228 let totalRewardPerBlockCurrent = valueOrErrorMessage(getInteger(governanceAddress, keyTotalRewardPerBlockCurrent), ((("No data on the key: " + keyTotalRewardPerBlockCurrent) + " at address ") + toString(governanceAddress)))
229229 let totalRewardPerBlockPrevious = valueOrErrorMessage(getInteger(governanceAddress, keyTotalRewardPerBlockPrevious), ((("No data on the key: " + keyTotalRewardPerBlockPrevious) + " at address ") + toString(governanceAddress)))
230230 let rewardPoolFractionCurrent = valueOrErrorMessage(getInteger(governanceAddress, (pool + keyRewardPoolFractionCurrent)), (((("No data on the key: " + pool) + keyRewardPoolFractionCurrent) + " at address ") + toString(governanceAddress)))
231231 let rewardUpdateHeight = valueOrErrorMessage(getInteger(governanceAddress, keyRewardUpdateHeight), ((("No data on the key: " + keyRewardUpdateHeight) + " at address ") + toString(governanceAddress)))
232232 let poolRewardUpdateHeight = valueOrElse(getInteger(governanceAddress, (pool + keyHeightPoolFraction)), 0)
233233 let rewardPoolFractionPrevious = valueOrErrorMessage(getInteger(governanceAddress, (pool + keyRewardPoolFractionPrevious)), (((("No data on the key: " + pool) + keyRewardPoolFractionPrevious) + " at address ") + toString(governanceAddress)))
234234 let rewardPoolCurrent = fraction(totalRewardPerBlockCurrent, rewardPoolFractionCurrent, totalVoteShare)
235235 let rewardPoolPrevious = fraction(totalRewardPerBlockPrevious, rewardPoolFractionPrevious, totalVoteShare)
236236 if (if ((rewardPoolCurrent > totalRewardPerBlockCurrent))
237237 then true
238238 else (rewardPoolPrevious > totalRewardPerBlockPrevious))
239239 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
240240 else $Tuple4(rewardPoolCurrent, rewardUpdateHeight, rewardPoolPrevious, poolRewardUpdateHeight)
241241 }
242242
243243
244244 func getLastInterestInfo (pool) = {
245245 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
246246 let lastInterestHeight = valueOrElse(getInteger(this, (pool + keyLastInterestHeight)), height)
247247 $Tuple2(lastInterestHeight, lastInterest)
248248 }
249249
250250
251251 func getUserInterestInfo (pool,userAddrStr) = {
252252 let userLastInterest = getInteger(this, (((pool + "_") + userAddrStr) + keyUserLastInterest))
253253 let userShare = getInteger(this, (((pool + "_") + userAddrStr) + keyUserShareTokensLocked))
254254 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
255255 let userLastInterestValue = match userLastInterest {
256256 case userLastInterest: Int =>
257257 userLastInterest
258258 case _ =>
259259 lastInterest
260260 }
261261 let userShareTokensAmount = match userShare {
262262 case userShare: Int =>
263263 userShare
264264 case _ =>
265265 0
266266 }
267267 $Tuple2(userLastInterestValue, userShareTokensAmount)
268268 }
269269
270270
271271 func calcInterest (lastInterestHeight,rewardUpdateHeight,poolRewardUpdateHeight,lastInterest,currentRewardPerBlock,shareTokenLocked,previousRewardPerBlock,scaleValue,h) = if ((shareTokenLocked == 0))
272272 then 0
273273 else if ((poolRewardUpdateHeight != 0))
274274 then if (if ((rewardUpdateHeight > h))
275275 then (rewardUpdateHeight == poolRewardUpdateHeight)
276276 else false)
277277 then {
278278 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
279279 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
280280 }
281281 else if (if ((h > rewardUpdateHeight))
282282 then (rewardUpdateHeight != poolRewardUpdateHeight)
283283 else false)
284284 then {
285285 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
286286 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
287287 }
288288 else if (if (if ((h > rewardUpdateHeight))
289289 then (rewardUpdateHeight == poolRewardUpdateHeight)
290290 else false)
291291 then (lastInterestHeight > rewardUpdateHeight)
292292 else false)
293293 then {
294294 let reward = (currentRewardPerBlock * (h - lastInterestHeight))
295295 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
296296 }
297297 else {
298298 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
299299 let interestAfterUpdate = (lastInterest + fraction(rewardAfterLastInterestBeforeReawardUpdate, scaleValue, shareTokenLocked))
300300 let reward = (currentRewardPerBlock * (h - rewardUpdateHeight))
301301 (interestAfterUpdate + fraction(reward, scaleValue, shareTokenLocked))
302302 }
303303 else if ((rewardUpdateHeight > h))
304304 then {
305305 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
306306 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
307307 }
308308 else if ((lastInterestHeight > rewardUpdateHeight))
309309 then {
310310 let reward = (currentRewardPerBlock * (h - lastInterestHeight))
311311 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
312312 }
313313 else {
314314 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
315315 let interestAfterUpdate = (lastInterest + fraction(rewardAfterLastInterestBeforeReawardUpdate, scaleValue, shareTokenLocked))
316316 let reward = (currentRewardPerBlock * (h - rewardUpdateHeight))
317317 (interestAfterUpdate + fraction(reward, scaleValue, shareTokenLocked))
318318 }
319319
320320
321321 func claimCalc (pool,userAddrStr,h) = {
322322 let shareAssetId = getShareAssetId(pool)
323323 let scaleValue = calcScaleValue(SWOP, shareAssetId)
324324 let shareTokenLocked = getTotalShareTokenLocked(pool)
325325 let $t01309613161 = getLastInterestInfo(pool)
326326 let lastInterestHeight = $t01309613161._1
327327 let lastInterest = $t01309613161._2
328328 let $t01316613278 = rewardInfo(pool)
329329 let currentRewardPerBlock = $t01316613278._1
330330 let rewardUpdateHeight = $t01316613278._2
331331 let previousRewardPerBlock = $t01316613278._3
332332 let poolRewardUpdateHeight = $t01316613278._4
333333 let $t01328313367 = getUserInterestInfo(pool, userAddrStr)
334334 let userLastInterest = $t01328313367._1
335335 let userShareTokensAmount = $t01328313367._2
336336 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
337337 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
338338 let userNewInterest = currentInterest
339339 $Tuple4(userNewInterest, currentInterest, claimAmount, userShareTokensAmount)
340340 }
341341
342342
343343 func claimCalcForMigration (pool,userAddrStr,h) = {
344344 let shareAssetId = getShareAssetId(pool)
345345 let scaleValue = calcScaleValue(SWOP, shareAssetId)
346346 let shareTokenLocked = getTotalShareTokenLocked(pool)
347347 let $t01409014155 = getLastInterestInfo(pool)
348348 let lastInterestHeight = $t01409014155._1
349349 let lastInterest = $t01409014155._2
350350 let $t01416014272 = rewardInfo(pool)
351351 let currentRewardPerBlock = $t01416014272._1
352352 let rewardUpdateHeight = $t01416014272._2
353353 let previousRewardPerBlock = $t01416014272._3
354354 let poolRewardUpdateHeight = $t01416014272._4
355355 let $t01427714361 = getUserInterestInfo(pool, userAddrStr)
356356 let userLastInterest = $t01427714361._1
357357 let userShareTokensAmount = $t01427714361._2
358358 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
359359 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
360360 let userNewInterest = currentInterest
361361 $Tuple4(userNewInterest, currentInterest, claimAmount, userShareTokensAmount)
362362 }
363363
364364
365365 func calculateProtocolReward (pool) = {
366366 let $t01486514930 = getLastInterestInfo(pool)
367367 let lastInterestHeight = $t01486514930._1
368368 let lastInterest = $t01486514930._2
369369 let $t01493515046 = rewardInfo(pool)
370370 let currentRewardPerBlock = $t01493515046._1
371371 let rewardUpdateHeight = $t01493515046._2
372372 let previousRewardPerBlock = $t01493515046._3
373373 let poolRewardUpdateHeight = $t01493515046._4
374374 let shareTokenLocked = getTotalShareTokenLocked(pool)
375375 if (if ((shareTokenLocked == 0))
376376 then (poolRewardUpdateHeight == 0)
377377 else false)
378378 then if ((rewardUpdateHeight > height))
379379 then {
380380 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
381381 reward
382382 }
383383 else if ((lastInterestHeight > rewardUpdateHeight))
384384 then {
385385 let reward = (currentRewardPerBlock * (height - lastInterestHeight))
386386 reward
387387 }
388388 else {
389389 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
390390 let reward = (currentRewardPerBlock * (height - rewardUpdateHeight))
391391 (reward + rewardAfterLastInterestBeforeReawardUpdate)
392392 }
393393 else if (if ((shareTokenLocked == 0))
394394 then (poolRewardUpdateHeight != 0)
395395 else false)
396396 then if (if ((rewardUpdateHeight > height))
397397 then (rewardUpdateHeight == poolRewardUpdateHeight)
398398 else false)
399399 then {
400400 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
401401 reward
402402 }
403403 else if (if ((height > rewardUpdateHeight))
404404 then (rewardUpdateHeight != poolRewardUpdateHeight)
405405 else false)
406406 then {
407407 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
408408 reward
409409 }
410410 else if (if (if ((height > rewardUpdateHeight))
411411 then (rewardUpdateHeight == poolRewardUpdateHeight)
412412 else false)
413413 then (lastInterestHeight > rewardUpdateHeight)
414414 else false)
415415 then {
416416 let reward = (currentRewardPerBlock * (height - lastInterestHeight))
417417 reward
418418 }
419419 else {
420420 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
421421 let reward = (currentRewardPerBlock * (height - rewardUpdateHeight))
422422 (reward + rewardAfterLastInterestBeforeReawardUpdate)
423423 }
424424 else 0
425425 }
426426
427427
428428 func checkPmtAssetIdCorrect (pool,pmtAssetId) = {
429429 let poolShareAssetId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
430430 if ((pmtAssetId == poolShareAssetId))
431431 then true
432432 else false
433433 }
434434
435435
436436 func getUserSWOPClaimedAmount (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + user) + keyUserSWOPClaimedAmount)), 0)
437437
438438
439439 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
440440
441441
442442 @Callable(i)
443443 func init (earlyLP) = if (isDefined(getString(this, keySWOPid)))
444444 then throw("SWOP already initialized")
445445 else {
446446 let initAmount = 100000000000000
447447 let SWOPissue = Issue("SWOP", "SWOP protocol token", initAmount, 8, true)
448448 let SWOPid = calculateAssetId(SWOPissue)
449449 [BooleanEntry(keyActive, true), Issue("SWOP", "SWOP protocol token", initAmount, 8, true), StringEntry(keySWOPid, toBase58String(SWOPid))]
450450 }
451451
452452
453453
454454 @Callable(i)
455455 func initPoolShareFarming (pool) = if ((i.caller != this))
456456 then throw("Only the DApp itself can call this function")
457457 else {
458458 let $t01801618119 = rewardInfo(pool)
459459 let currentReward = $t01801618119._1
460460 let rewardUpdateHeight = $t01801618119._2
461461 let previousRewardPerBlock = $t01801618119._3
462462 let poolRewardUpdateHeight = $t01801618119._4
463463 [IntegerEntry((pool + keyShareTokensLocked), 0), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), height)]
464464 }
465465
466466
467467
468468 @Callable(i)
469469 func updatePoolInterest (pool) = if ((i.caller != wallet))
470470 then throw("Only the Admin itself can call this function")
471471 else if (!(isActive))
472472 then throw("DApp is inactive at this moment")
473473 else {
474474 let $t01852818664 = claimCalc(pool, toString(adminIncreaseInterestAddress), height)
475475 let userNewInterest = $t01852818664._1
476476 let currentInterest = $t01852818664._2
477477 let claimAmount = $t01852818664._3
478478 let userShareTokensAmount = $t01852818664._4
479479 let $t01866918772 = rewardInfo(pool)
480480 let currentReward = $t01866918772._1
481481 let rewardUpdateHeight = $t01866918772._2
482482 let previousRewardPerBlock = $t01866918772._3
483483 let poolRewardUpdateHeight = $t01866918772._4
484484 [IntegerEntry((pool + keyLastInterest), userNewInterest), IntegerEntry((pool + keyLastInterestHeight), height)]
485485 }
486486
487487
488488
489489 @Callable(i)
490490 func lockShareTokens (pool) = {
491491 let userAddrStr = toString(i.caller)
492492 let $t01900619081 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
493493 let pmtAmount = $t01900619081._1
494494 let pmtAssetId = $t01900619081._2
495495 let $t01908619159 = getAssetInfo(pmtAssetId)
496496 let pmtStrAssetId = $t01908619159._1
497497 let pmtAssetName = $t01908619159._2
498498 let pmtDecimals = $t01908619159._3
499499 let $t01916419280 = claimCalc(pool, toString(i.caller), height)
500500 let userNewInterest = $t01916419280._1
501501 let currentInterest = $t01916419280._2
502502 let claimAmount = $t01916419280._3
503503 let userShareTokensAmount = $t01916419280._4
504504 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
505505 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
506506 let totalShareAmount = getTotalShareTokenLocked(pool)
507507 let totalShareAmountNew = (totalShareAmount + pmtAmount)
508508 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
509509 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
510510 let baseEntry = [IntegerEntry((((pool + "_") + userAddrStr) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + userAddrStr) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((((pool + "_") + userAddrStr) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + userAddrStr) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry((((pool + "_") + userAddrStr) + keyAvailableSWOP), availableFundsNew)]
511511 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
512512 then true
513513 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
514514 then throw()
515515 else if ((0 >= pmtAmount))
516516 then throw("You can't lock token")
517517 else if (!(isActive))
518518 then throw("DApp is inactive at this moment")
519519 else if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
520520 then throw("Incorrect pmtAssetId")
521521 else if (if (isFirstHarvest(Address(fromBase58String(pool))))
522522 then (getHeightFirstHarvest(Address(fromBase58String(pool))) > height)
523523 else false)
524524 then {
525525 let harvestPeriod = ((((getHeightFirstHarvest(Address(fromBase58String(pool))) - startHeight) + 1) / periodLength) - 1)
526526 let amountOfVoting = split(getStringValue(votingAddress, (((userAddrStr + "_") + pool) + "_user_pool_struc")), "_")
527527 let amountPoolStract = split(getStringValue(votingAddress, (pool + "_pool_struc")), "_")
528528 let amountActiveVoteUserPoolStract = split(valueOrElse(getString(votingAddress, (((userAddrStr + "_") + pool) + kHarvestUserPoolActiveVoteStrucVoting)), ""), "_")
529529 let amountPoolActiveVoteStract = split(valueOrElse(getString(votingAddress, (pool + kHarvestPoolActiveVoteStrucVoting)), ""), "_")
530530 let userShareTokenLocked = userShareTokensAmount
531531 let userPoolActiveVote = if ((toString(currPeriod) == amountOfVoting[2]))
532532 then valueOrElse(parseInt(amountActiveVoteUserPoolStract[0]), 0)
533533 else valueOrElse(parseInt(amountOfVoting[1]), 0)
534534 let poolActiveVote = if ((toString(currPeriod) == amountPoolStract[2]))
535535 then valueOrElse(parseInt(amountPoolActiveVoteStract[0]), 0)
536536 else valueOrElse(parseInt(amountPoolStract[1]), 0)
537537 let protocolReward = calculateProtocolReward(pool)
538538 if ((userPoolActiveVote != 0))
539539 then {
540540 let limitShareToken = getShareLimitToken(addressFromStringValue(pool))
541541 let shareToken = (fraction(limitShareToken, userPoolActiveVote, poolActiveVote) - userShareTokenLocked)
542542 if (if ((size(amountActiveVoteUserPoolStract) > 1))
543543 then (valueOrElse(parseInt(amountActiveVoteUserPoolStract[1]), 0) >= harvestPeriod)
544544 else false)
545545 then throw("You can't share token")
546546 else if ((pmtAmount > limitShareToken))
547547 then throw(("You can't share token more than " + toString(limitShareToken)))
548548 else if ((shareToken > 0))
549549 then if ((fraction(99, (accountBalance(pmtAssetId) + pmtAmount), 100) > totalShareAmountNew))
550550 then throw("Balance of share-token is greater than totalAmount")
551551 else if ((totalShareAmount == 0))
552552 then (baseEntry ++ [Reissue(SWOP, protocolReward, true), ScriptTransfer(wallet, protocolReward, SWOP)])
553553 else if ((shareToken >= pmtAmount))
554554 then baseEntry
555555 else throw(("Your maximum share token is " + toString(shareToken)))
556556 else throw("You can't share token")
557557 }
558558 else throw("Your amount of token less than 0")
559559 }
560560 else baseEntry
561561 }
562562
563563
564564
565565 @Callable(i)
566566 func withdrawShareTokens (pool,shareTokensWithdrawAmount) = {
567567 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
568568 let $t02381523931 = claimCalc(pool, toString(i.caller), height)
569569 let userNewInterest = $t02381523931._1
570570 let currentInterest = $t02381523931._2
571571 let claimAmount = $t02381523931._3
572572 let userShareTokensAmount = $t02381523931._4
573573 let userShareAmountNew = (userShareTokensAmount - shareTokensWithdrawAmount)
574574 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
575575 let totalShareAmount = getTotalShareTokenLocked(pool)
576576 let totalShareAmountNew = (totalShareAmount - shareTokensWithdrawAmount)
577577 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
578578 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
579579 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
580580 then true
581581 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
582582 then throw()
583583 else if ((shareTokensWithdrawAmount > userShareTokensAmount))
584584 then throw("Withdraw amount more then user locked amount")
585585 else if (!(isActive))
586586 then throw("DApp is inactive at this moment")
587587 else if ((shareTokensWithdrawAmount > userShareTokensAmount))
588588 then throw("Withdraw amount more then user locked amount")
589589 else if ((fraction(99, (accountBalance(shareTokensId) - shareTokensWithdrawAmount), 100) > totalShareAmountNew))
590590 then throw("Balance of share-token is greater than totalAmount")
591591 else [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, shareTokensWithdrawAmount, shareTokensId)]
592592 }
593593
594594
595595
596596 @Callable(i)
597-func egg0 (pool,users,migrationHeight) = if (if ((pool != "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
598- then (pool != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
599- else false)
597+func egg0 (pool,users,migrationHeight) = if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
598+ then true
599+ else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
600600 then throw()
601601 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
602602 then throw("Only admin can call this function")
603603 else {
604604 func updateUser (accum,u) = {
605605 let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
606606 if ((r == r))
607- then (accum :+ BooleanEntry((u + "_migration"), true))
607+ then accum
608608 else throw("Strict value is not equal to itself.")
609609 }
610610
611- let $list2643726468 = users
612- let $size2643726468 = size($list2643726468)
613- let $acc02643726468 = nil
614- if (($size2643726468 == 0))
615- then $acc02643726468
611+ let $list2639726428 = users
612+ let $size2639726428 = size($list2639726428)
613+ let $acc02639726428 = nil
614+ if (($size2639726428 == 0))
615+ then $acc02639726428
616616 else {
617- let $acc12643726468 = updateUser($acc02643726468, $list2643726468[0])
618- if (($size2643726468 == 1))
619- then $acc12643726468
617+ let $acc12639726428 = updateUser($acc02639726428, $list2639726428[0])
618+ if (($size2639726428 == 1))
619+ then $acc12639726428
620620 else {
621- let $acc22643726468 = updateUser($acc12643726468, $list2643726468[1])
622- if (($size2643726468 == 2))
623- then $acc22643726468
621+ let $acc22639726428 = updateUser($acc12639726428, $list2639726428[1])
622+ if (($size2639726428 == 2))
623+ then $acc22639726428
624624 else {
625- let $acc32643726468 = updateUser($acc22643726468, $list2643726468[2])
626- if (($size2643726468 == 3))
627- then $acc32643726468
625+ let $acc32639726428 = updateUser($acc22639726428, $list2639726428[2])
626+ if (($size2639726428 == 3))
627+ then $acc32639726428
628628 else {
629- let $acc42643726468 = updateUser($acc32643726468, $list2643726468[3])
630- if (($size2643726468 == 4))
631- then $acc42643726468
629+ let $acc42639726428 = updateUser($acc32639726428, $list2639726428[3])
630+ if (($size2639726428 == 4))
631+ then $acc42639726428
632632 else {
633- let $acc52643726468 = updateUser($acc42643726468, $list2643726468[4])
634- if (($size2643726468 == 5))
635- then $acc52643726468
633+ let $acc52639726428 = updateUser($acc42639726428, $list2639726428[4])
634+ if (($size2639726428 == 5))
635+ then $acc52639726428
636636 else {
637- let $acc62643726468 = updateUser($acc52643726468, $list2643726468[5])
638- if (($size2643726468 == 6))
639- then $acc62643726468
637+ let $acc62639726428 = updateUser($acc52639726428, $list2639726428[5])
638+ if (($size2639726428 == 6))
639+ then $acc62639726428
640640 else {
641- let $acc72643726468 = updateUser($acc62643726468, $list2643726468[6])
642- if (($size2643726468 == 7))
643- then $acc72643726468
641+ let $acc72639726428 = updateUser($acc62639726428, $list2639726428[6])
642+ if (($size2639726428 == 7))
643+ then $acc72639726428
644644 else {
645- let $acc82643726468 = updateUser($acc72643726468, $list2643726468[7])
646- if (($size2643726468 == 8))
647- then $acc82643726468
645+ let $acc82639726428 = updateUser($acc72639726428, $list2639726428[7])
646+ if (($size2639726428 == 8))
647+ then $acc82639726428
648648 else {
649- let $acc92643726468 = updateUser($acc82643726468, $list2643726468[8])
650- if (($size2643726468 == 9))
651- then $acc92643726468
649+ let $acc92639726428 = updateUser($acc82639726428, $list2639726428[8])
650+ if (($size2639726428 == 9))
651+ then $acc92639726428
652652 else {
653- let $acc102643726468 = updateUser($acc92643726468, $list2643726468[9])
654- if (($size2643726468 == 10))
655- then $acc102643726468
653+ let $acc102639726428 = updateUser($acc92639726428, $list2639726428[9])
654+ if (($size2639726428 == 10))
655+ then $acc102639726428
656656 else {
657- let $acc112643726468 = updateUser($acc102643726468, $list2643726468[10])
658- if (($size2643726468 == 11))
659- then $acc112643726468
657+ let $acc112639726428 = updateUser($acc102639726428, $list2639726428[10])
658+ if (($size2639726428 == 11))
659+ then $acc112639726428
660660 else {
661- let $acc122643726468 = updateUser($acc112643726468, $list2643726468[11])
662- if (($size2643726468 == 12))
663- then $acc122643726468
661+ let $acc122639726428 = updateUser($acc112639726428, $list2639726428[11])
662+ if (($size2639726428 == 12))
663+ then $acc122639726428
664664 else {
665- let $acc132643726468 = updateUser($acc122643726468, $list2643726468[12])
666- if (($size2643726468 == 13))
667- then $acc132643726468
668- else {
669- let $acc142643726468 = updateUser($acc132643726468, $list2643726468[13])
670- if (($size2643726468 == 14))
671- then $acc142643726468
672- else {
673- let $acc152643726468 = updateUser($acc142643726468, $list2643726468[14])
674- if (($size2643726468 == 15))
675- then $acc152643726468
676- else {
677- let $acc162643726468 = updateUser($acc152643726468, $list2643726468[15])
678- if (($size2643726468 == 16))
679- then $acc162643726468
680- else {
681- let $acc172643726468 = updateUser($acc162643726468, $list2643726468[16])
682- if (($size2643726468 == 17))
683- then $acc172643726468
684- else {
685- let $acc182643726468 = updateUser($acc172643726468, $list2643726468[17])
686- if (($size2643726468 == 18))
687- then $acc182643726468
688- else {
689- let $acc192643726468 = updateUser($acc182643726468, $list2643726468[18])
690- if (($size2643726468 == 19))
691- then $acc192643726468
692- else {
693- let $acc202643726468 = updateUser($acc192643726468, $list2643726468[19])
694- if (($size2643726468 == 20))
695- then $acc202643726468
696- else {
697- let $acc212643726468 = updateUser($acc202643726468, $list2643726468[20])
698- if (($size2643726468 == 21))
699- then $acc212643726468
700- else {
701- let $acc222643726468 = updateUser($acc212643726468, $list2643726468[21])
702- if (($size2643726468 == 22))
703- then $acc222643726468
704- else {
705- let $acc232643726468 = updateUser($acc222643726468, $list2643726468[22])
706- if (($size2643726468 == 23))
707- then $acc232643726468
708- else {
709- let $acc242643726468 = updateUser($acc232643726468, $list2643726468[23])
710- if (($size2643726468 == 24))
711- then $acc242643726468
712- else {
713- let $acc252643726468 = updateUser($acc242643726468, $list2643726468[24])
714- if (($size2643726468 == 25))
715- then $acc252643726468
716- else {
717- let $acc262643726468 = updateUser($acc252643726468, $list2643726468[25])
718- if (($size2643726468 == 26))
719- then $acc262643726468
720- else {
721- let $acc272643726468 = updateUser($acc262643726468, $list2643726468[26])
722- if (($size2643726468 == 27))
723- then $acc272643726468
724- else {
725- let $acc282643726468 = updateUser($acc272643726468, $list2643726468[27])
726- if (($size2643726468 == 28))
727- then $acc282643726468
728- else {
729- let $acc292643726468 = updateUser($acc282643726468, $list2643726468[28])
730- if (($size2643726468 == 29))
731- then $acc292643726468
732- else {
733- let $acc302643726468 = updateUser($acc292643726468, $list2643726468[29])
734- if (($size2643726468 == 30))
735- then $acc302643726468
736- else {
737- let $acc312643726468 = updateUser($acc302643726468, $list2643726468[30])
738- if (($size2643726468 == 31))
739- then $acc312643726468
740- else {
741- let $acc322643726468 = updateUser($acc312643726468, $list2643726468[31])
742- if (($size2643726468 == 32))
743- then $acc322643726468
744- else {
745- let $acc332643726468 = updateUser($acc322643726468, $list2643726468[32])
746- if (($size2643726468 == 33))
747- then $acc332643726468
748- else {
749- let $acc342643726468 = updateUser($acc332643726468, $list2643726468[33])
750- if (($size2643726468 == 34))
751- then $acc342643726468
752- else {
753- let $acc352643726468 = updateUser($acc342643726468, $list2643726468[34])
754- if (($size2643726468 == 35))
755- then $acc352643726468
756- else {
757- let $acc362643726468 = updateUser($acc352643726468, $list2643726468[35])
758- if (($size2643726468 == 36))
759- then $acc362643726468
760- else {
761- let $acc372643726468 = updateUser($acc362643726468, $list2643726468[36])
762- if (($size2643726468 == 37))
763- then $acc372643726468
764- else {
765- let $acc382643726468 = updateUser($acc372643726468, $list2643726468[37])
766- if (($size2643726468 == 38))
767- then $acc382643726468
768- else {
769- let $acc392643726468 = updateUser($acc382643726468, $list2643726468[38])
770- if (($size2643726468 == 39))
771- then $acc392643726468
772- else {
773- let $acc402643726468 = updateUser($acc392643726468, $list2643726468[39])
774- if (($size2643726468 == 40))
775- then $acc402643726468
776- else {
777- let $acc412643726468 = updateUser($acc402643726468, $list2643726468[40])
778- if (($size2643726468 == 41))
779- then $acc412643726468
780- else {
781- let $acc422643726468 = updateUser($acc412643726468, $list2643726468[41])
782- if (($size2643726468 == 42))
783- then $acc422643726468
784- else {
785- let $acc432643726468 = updateUser($acc422643726468, $list2643726468[42])
786- if (($size2643726468 == 43))
787- then $acc432643726468
788- else {
789- let $acc442643726468 = updateUser($acc432643726468, $list2643726468[43])
790- if (($size2643726468 == 44))
791- then $acc442643726468
792- else {
793- let $acc452643726468 = updateUser($acc442643726468, $list2643726468[44])
794- if (($size2643726468 == 45))
795- then $acc452643726468
796- else {
797- let $acc462643726468 = updateUser($acc452643726468, $list2643726468[45])
798- throw("List size exceed 45")
799- }
800- }
801- }
802- }
803- }
804- }
805- }
806- }
807- }
808- }
809- }
810- }
811- }
812- }
813- }
814- }
815- }
816- }
817- }
818- }
819- }
820- }
821- }
822- }
823- }
824- }
825- }
826- }
827- }
828- }
829- }
830- }
831- }
665+ let $acc132639726428 = updateUser($acc122639726428, $list2639726428[12])
666+ throw("List size exceed 12")
832667 }
833668 }
834669 }
835670 }
836671 }
837672 }
838673 }
839674 }
840675 }
841676 }
842677 }
843678 }
844679 }
845680 }
846681
847682
848683
849684 @Callable(i)
850685 func egg1 (pool,u,migrationHeight) = if ((i.caller != this))
851686 then throw("Only contract itself can invoke this function")
852687 else {
853688 let shareTokenMultiplyer = 1000
854- let $t02667926791 = claimCalc(pool, u, migrationHeight)
855- let userNewInterest = $t02667926791._1
856- let currentInterest = $t02667926791._2
857- let claimAmount = $t02667926791._3
858- let userShareTokensAmount = $t02667926791._4
689+ let $t02663926751 = claimCalc(pool, u, migrationHeight)
690+ let userNewInterest = $t02663926751._1
691+ let currentInterest = $t02663926751._2
692+ let claimAmount = $t02663926751._3
693+ let userShareTokensAmount = $t02663926751._4
859694 let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
860695 let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
861696 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
862697 let userShareTokensAmountNew = (userShareTokensAmount * shareTokenMultiplyer)
863- let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "total_amount_new_sharetoken_locked")), 0)
864-[IntegerEntry((((pool + "_") + u) + keyUserLastInterest), 0), IntegerEntry((((pool + "_") + u) + keyUserShareTokensLocked), userShareTokensAmountNew), IntegerEntry((((pool + "_") + u) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry(((pool + "_") + "total_amount_new_sharetoken_locked"), (totalAmountNewShareTokenLocked + userShareTokensAmountNew))]
698+ let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "tansl")), 0)
699+[IntegerEntry((((pool + "_") + u) + keyUserLastInterest), 0), IntegerEntry((((pool + "_") + u) + keyUserShareTokensLocked), userShareTokensAmountNew), IntegerEntry((((pool + "_") + u) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry(((pool + "_") + "tansl"), (totalAmountNewShareTokenLocked + userShareTokensAmountNew))]
865700 }
866701
867702
868703
869704 @Callable(i)
870705 func updateTotalShareTokensLocked (pool,migrationHeight) = if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
871706 then throw("Only admin can call this function")
872707 else {
873708 let shareTokenMultiplyer = 1000
874709 let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
875- let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
710+ let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "tansl"))
876711 if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
877712 then throw("New total amount share tockens != old total amount")
878- else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight), IntegerEntry((pool + keyShareTokensLocked), totalAmountShareTokensLockedNew), DeleteEntry(((pool + "_") + "total_amount_new_sharetoken_locked"))]
713+ else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight), IntegerEntry((pool + keyShareTokensLocked), totalAmountShareTokensLockedNew), DeleteEntry(((pool + "_") + "tansl"))]
879714 }
880715
881716
882717
883718 @Callable(i)
884719 func claim (pool) = {
885720 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
886721 let shareTokenLocked = getTotalShareTokenLocked(pool)
887- let $t02897129036 = getLastInterestInfo(pool)
888- let lastInterestHeight = $t02897129036._1
889- let lastInterest = $t02897129036._2
890- let $t02904129153 = rewardInfo(pool)
891- let currentRewardPerBlock = $t02904129153._1
892- let rewardUpdateHeight = $t02904129153._2
893- let previousRewardPerBlock = $t02904129153._3
894- let poolRewardUpdateHeight = $t02904129153._4
895- let $t02915829274 = claimCalc(pool, toString(i.caller), height)
896- let userNewInterest = $t02915829274._1
897- let currentInterest = $t02915829274._2
898- let claimAmount = $t02915829274._3
899- let userShareTokensAmount = $t02915829274._4
722+ let $t02881528880 = getLastInterestInfo(pool)
723+ let lastInterestHeight = $t02881528880._1
724+ let lastInterest = $t02881528880._2
725+ let $t02888528997 = rewardInfo(pool)
726+ let currentRewardPerBlock = $t02888528997._1
727+ let rewardUpdateHeight = $t02888528997._2
728+ let previousRewardPerBlock = $t02888528997._3
729+ let poolRewardUpdateHeight = $t02888528997._4
730+ let $t02900229118 = claimCalc(pool, toString(i.caller), height)
731+ let userNewInterest = $t02900229118._1
732+ let currentInterest = $t02900229118._2
733+ let claimAmount = $t02900229118._3
734+ let userShareTokensAmount = $t02900229118._4
900735 let availableFund = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
901736 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
902737 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
903738 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
904739 then true
905740 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
906741 then throw()
907742 else if ((availableFund == 0))
908743 then throw("You have 0 available SWOP")
909744 else if (!(isActive))
910745 then throw("DApp is inactive at this moment")
911746 else if ((availableFund == 0))
912747 then throw("You have 0 available SWOP")
913748 else if ((fraction(99, accountBalance(shareTokensId), 100) > shareTokenLocked))
914749 then throw("Balance of share-token is greater than totalAmount")
915750 else [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), 0), Reissue(SWOP, availableFund, true), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, availableFund, SWOP)]
916751 }
917752
918753
919754
920755 @Callable(i)
921756 func shutdown () = if (!(isActive))
922757 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
923758 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
924759 then throw("Only admin can call this function")
925760 else suspend("Paused by admin")
926761
927762
928763
929764 @Callable(i)
930765 func activate () = if (isActive)
931766 then throw("DApp is already active")
932767 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
933768 then throw("Only admin can call this function")
934769 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
935770
936771
937772 @Verifier(tx)
938773 func verify () = match tx {
939774 case inv: InvokeScriptTransaction =>
940775 let callEgg1 = if ((inv.dApp == this))
941776 then (inv.function == "egg1")
942777 else false
943778 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
944779 then true
945780 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
946781 then true
947782 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
948783 then true
949784 else sigVerify(tx.bodyBytes, tx.proofs[0], admStaking)
950785 if (callEgg1)
951786 then signedByAdmin
952787 else false
953788 case _ =>
954789 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
955790 then 1
956791 else 0
957792 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
958793 then 1
959794 else 0
960795 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
961796 then 1
962797 else 0
963798 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
964799 }
965800

github/deemru/w8io/873ac7e 
197.71 ms