tx · 5re529mCiCM1ex9SugxyVBgZNZHgsXCDoRwQe7eY7wy7

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.09.14 12:05 [1702507] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "5re529mCiCM1ex9SugxyVBgZNZHgsXCDoRwQe7eY7wy7", "fee": 1400000, "feeAssetId": null, "timestamp": 1631610306705, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "2K6J7hZmEeAhgDPYeCiazJNKEJU3tZfNum9N8JVph9ZtgXpvdzKfFrApmfy7qBN3ed1HW3Hchbt5iZyubVtQFQDR", "4acsU8W4VaNmT7Gzv26MzJuHcyDrttPsCGQUew8psjvNz81U54ktJ5JL35yyo2oLMbiWiMoiMA2itP8qhWyPqEr2" ], "script": "base64:AAIFAAAAAAAAFwwIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgUKAwgYARIFCgMICAESBAoCCAESAwoBCBIAEgAaEgoCYTESDGFkbWluUHViS2V5MRoSCgJhMhIMYWRtaW5QdWJLZXkyGhIKAmEzEgxhZG1pblB1YktleTMaEAoCYTQSCmFkbVN0YWtpbmcaGgoCYTUSFGtleVNoYXJlVG9rZW5zTG9ja2VkGhEKAmE2EgtrU2hhcmVMaW1pdBoPCgJhNxIJa2V5QWN0aXZlGg4KAmE4EghrZXlDYXVzZRoiCgJhORIca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudBojCgJiMRIda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMaGwoCYjISFWtleUhlaWdodFBvb2xGcmFjdGlvbhojCgJiMxIda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQaJAoCYjQSHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cxobCgJiNRIVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0GhUKAmI2Eg9rZXlMYXN0SW50ZXJlc3QaGwoCYjcSFWtleUxhc3RJbnRlcmVzdEhlaWdodBoeCgJiOBIYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkGhkKAmI5EhNrZXlVc2VyTGFzdEludGVyZXN0Gg8KAmMxEglrZXlTV09QaWQaHgoCYzISGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudBoiCgJjMxIca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudBoWCgJjNBIQa2V5QXZhaWxhYmxlU1dPUBobCgJjNRIVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0GgwKAmM2EgZrZXlBUFkaHAoCYzcSFmtQcmV2aW91c1RvdGFsVm90ZVNXT1AaGQoCYzgSE2tleVN3b3BZZWFyRW1pc3Npb24aFQoCYzkSD2tleUJhbGFuY2VjcG1tQRoVCgJkMRIPa2V5QmFsYW5jZWNwbW1CGicKAmQyEiFrSGFydmVzdFBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcaKwoCZDMSJWtIYXJ2ZXN0VXNlclBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcaHwoCZDQSGWtleUxpbWl0U2hhcmVGaXJzdEhhcnZlc3QaEQoCZDUSC2tleUFzc2V0SWRBGhEKAmQ2EgtrZXlBc3NldElkQhobCgJkNxIVa2V5Rmlyc3RIYXJ2ZXN0SGVpZ2h0GhkKAmQ4EhNrZXlmaXJzdEhhcnZlc3RDcG1tGhQKAmQ5Eg5rZXlUZW1wUHJldlN1bRoTCgJlMRINa2V5VGVtcEN1clN1bRoXCgJlMhIRZ292ZXJuYW5jZUFkZHJlc3MaDAoCZTMSBndhbGxldBoTCgJlNBINdm90aW5nQWRkcmVzcxoiCgJlNRIcYWRtaW5JbmNyZWFzZUludGVyZXN0QWRkcmVzcxoUCgJlNhIOb25lV2Vla0luQmxvY2saFAoCZTcSDnRvdGFsVm90ZVNoYXJlGhEKAmU4EgtzY2FsZVZhbHVlMRoRCgJlORILc2NhbGVWYWx1ZTMaEQoCZjESC3NjYWxlVmFsdWU1GhEKAmYyEgtzY2FsZVZhbHVlNhoRCgJmMxILc2NhbGVWYWx1ZTgaEgoCZjQSDHNjYWxlVmFsdWUxMRoRCgJmNRILc3RyQXNzZXRJZEEaCgoCZjYSBHBvb2waEQoCZjcSC3N0ckFzc2V0SWRCGg4KAmY4Eghhc3NldElkQRoOCgJmORIIYXNzZXRJZEIaEQoCZzESC2tCYXNlUGVyaW9kGhMKAmcyEg1rUGVyaW9kTGVuZ3RoGhIKAmczEgxrU3RhcnRIZWlnaHQaGQoCZzQSE2tGaXJzdEhhcnZlc3RIZWlnaHQaHAoCZzUSFmtEdXJhdGlvbkZ1bGxWb3RlUG93ZXIaEwoCZzYSDWtNaW5Wb3RlUG93ZXIaEAoCZzcSCmJhc2VQZXJpb2QaEQoCZzgSC3N0YXJ0SGVpZ2h0GhIKAmc5EgxwZXJpb2RMZW5ndGgaGwoCaDESFWR1cmF0aW9uRnVsbFZvdGVQb3dlchoSCgJoMhIMbWluVm90ZVBvd2VyGg4KAmgzEghpc0FjdGl2ZRoQCgJoNBIKY3VyclBlcmlvZBoTCgJoNRINZ2V0TGltaXRUb2tlbhoJCgJoNhIDQVBZGhYKAmg3EhBTd29wWWVhckVtaXNzaW9uGhAKAmg4Egphc3NldE5hbWVBGg0KAmg5EgckbWF0Y2gwGggKAmkxEgJpZBoLCgJpMhIFd2F2ZXMaEAoCaTMSCmFzc2V0TmFtZUIaCgoCaTQSBFNXT1AaFAoCaTUSDmlzRmlyc3RIYXJ2ZXN0GhsKAmk2EhVnZXRIZWlnaHRGaXJzdEhhcnZlc3QaEQoCaTcSC2dldEJhbGFuY2VBGhEKAmk4EgtnZXRCYWxhbmNlQhoYCgJpORISZ2V0U2hhcmVMaW1pdFRva2VuGh4KAmoxEhhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQaFQoCajISD2dldFNoYXJlQXNzZXRJZBoUCgJqMxIOYWNjb3VudEJhbGFuY2UaDQoCajQSB2Fzc2V0SWQaEgoCajUSDGdldEFzc2V0SW5mbxoOCgJqNhIIc3RyaW5nSWQaCgoCajcSBGluZm8aFAoCajgSDmNhbGNTY2FsZVZhbHVlGg4KAmo5Eghhc3NldElkMRoOCgJrMRIIYXNzZXRJZDIaFgoCazISEGFzc2V0SWQxRGVjaW1hbHMaFgoCazMSEGFzc2V0SWQyRGVjaW1hbHMaEQoCazQSC3NjYWxlRGlnaXRzGhcKAms1EhF1c2VyQXZhaWxhYmxlU1dPUBoKCgJrNhIEdXNlchoQCgJrNxIKcmV3YXJkSW5mbxogCgJrOBIadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQaIQoCazkSG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cxofCgJsMRIZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudBoYCgJsMhIScmV3YXJkVXBkYXRlSGVpZ2h0GhwKAmwzEhZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0GiAKAmw0EhpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cxoXCgJsNRIRcmV3YXJkUG9vbEN1cnJlbnQaGAoCbDYSEnJld2FyZFBvb2xQcmV2aW91cxoZCgJsNxITZ2V0TGFzdEludGVyZXN0SW5mbxoSCgJsOBIMbGFzdEludGVyZXN0GhgKAmw5EhJsYXN0SW50ZXJlc3RIZWlnaHQaGQoCbTESE2dldFVzZXJJbnRlcmVzdEluZm8aEQoCbTISC3VzZXJBZGRyU3RyGhYKAm0zEhB1c2VyTGFzdEludGVyZXN0Gg8KAm00Egl1c2VyU2hhcmUaGwoCbTUSFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZRobCgJtNhIVdXNlclNoYXJlVG9rZW5zQW1vdW50GhIKAm03EgxjYWxjSW50ZXJlc3QaGwoCbTgSFWN1cnJlbnRSZXdhcmRQZXJCbG9jaxoWCgJtORIQc2hhcmVUb2tlbkxvY2tlZBocCgJuMRIWcHJldmlvdXNSZXdhcmRQZXJCbG9jaxoQCgJuMhIKc2NhbGVWYWx1ZRoHCgJuMxIBaBoMCgJuNBIGcmV3YXJkGjAKAm41EipyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUaGQoCbjYSE2ludGVyZXN0QWZ0ZXJVcGRhdGUaDwoCbjcSCWNsYWltQ2FsYxoSCgJuOBIMc2hhcmVBc3NldElkGhMKAm45Eg0kdDAxMzA5NjEzMTYxGhMKAm8xEg0kdDAxMzE2NjEzMjc4GhMKAm8yEg0kdDAxMzI4MzEzMzY3GhUKAm8zEg9jdXJyZW50SW50ZXJlc3QaEQoCbzQSC2NsYWltQW1vdW50GhUKAm81Eg91c2VyTmV3SW50ZXJlc3QaGwoCbzYSFWNsYWltQ2FsY0Zvck1pZ3JhdGlvbhoTCgJvNxINJHQwMTQwOTAxNDE1NRoTCgJvOBINJHQwMTQxNjAxNDI3MhoTCgJvORINJHQwMTQyNzcxNDM2MRodCgJwMRIXY2FsY3VsYXRlUHJvdG9jb2xSZXdhcmQaEwoCcDISDSR0MDE0ODY1MTQ5MzAaEwoCcDMSDSR0MDE0OTM1MTUwNDYaHAoCcDQSFmNoZWNrUG10QXNzZXRJZENvcnJlY3QaEAoCcDUSCnBtdEFzc2V0SWQaFgoCcDYSEHBvb2xTaGFyZUFzc2V0SWQaHgoCcDcSGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudBoNCgJwOBIHc3VzcGVuZBoLCgJwORIFY2F1c2UaBwoCcTESAWkaDQoCcTISB2Vhcmx5TFAaEAoCcTMSCmluaXRBbW91bnQaDwoCcTQSCVNXT1Bpc3N1ZRoMCgJxNRIGU1dPUGlkGhMKAnE2Eg0kdDAxODAxNjE4MTE5GhMKAnE3Eg1jdXJyZW50UmV3YXJkGhMKAnE4Eg0kdDAxODUyODE4NjY0GhMKAnE5Eg0kdDAxODY2OTE4NzcyGhMKAnIxEg0kdDAxOTAwNjE5MDgxGg8KAnIyEglwbXRBbW91bnQaEwoCcjMSDSR0MDE5MDg2MTkxNTkaEwoCcjQSDXBtdFN0ckFzc2V0SWQaEgoCcjUSDHBtdEFzc2V0TmFtZRoRCgJyNhILcG10RGVjaW1hbHMaEwoCcjcSDSR0MDE5MTY0MTkyODAaGAoCcjgSEnVzZXJTaGFyZUFtb3VudE5ldxoXCgJyORIRYXZhaWxhYmxlRnVuZHNOZXcaFgoCczESEHRvdGFsU2hhcmVBbW91bnQaGQoCczISE3RvdGFsU2hhcmVBbW91bnROZXcaFwoCczMSEXVzZXJDbGFpbWVkQW1vdW50GhoKAnM0EhR1c2VyQ2xhaW1lZEFtb3VudE5ldxoPCgJzNRIJYmFzZUVudHJ5GhMKAnM2Eg1oYXJ2ZXN0UGVyaW9kGhQKAnM3Eg5hbW91bnRPZlZvdGluZxoWCgJzOBIQYW1vdW50UG9vbFN0cmFjdBokCgJzORIeYW1vdW50QWN0aXZlVm90ZVVzZXJQb29sU3RyYWN0GiAKAnQxEhphbW91bnRQb29sQWN0aXZlVm90ZVN0cmFjdBoaCgJ0MhIUdXNlclNoYXJlVG9rZW5Mb2NrZWQaGAoCdDMSEnVzZXJQb29sQWN0aXZlVm90ZRoUCgJ0NBIOcG9vbEFjdGl2ZVZvdGUaFAoCdDUSDnByb3RvY29sUmV3YXJkGhUKAnQ2Eg9saW1pdFNoYXJlVG9rZW4aEAoCdDcSCnNoYXJlVG9rZW4aHwoCdDgSGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQaEwoCdDkSDXNoYXJlVG9rZW5zSWQaEwoCdTESDSR0MDIzODE1MjM5MzEaCwoCdTISBXVzZXJzGhUKAnUzEg9taWdyYXRpb25IZWlnaHQaEAoCdTQSCnVwZGF0ZVVzZXIaCwoCdTUSBWFjY3VtGgcKAnU2EgF1GgcKAnU3EgFyGhUKAnU4Eg8kbGlzdDI2NDM3MjY0NjgaFQoCdTkSDyRzaXplMjY0MzcyNjQ2OBoVCgJ2MRIPJGFjYzAyNjQzNzI2NDY4GhUKAnYyEg8kYWNjMTI2NDM3MjY0NjgaFQoCdjMSDyRhY2MyMjY0MzcyNjQ2OBoVCgJ2NBIPJGFjYzMyNjQzNzI2NDY4GhUKAnY1Eg8kYWNjNDI2NDM3MjY0NjgaFQoCdjYSDyRhY2M1MjY0MzcyNjQ2OBoVCgJ2NxIPJGFjYzYyNjQzNzI2NDY4GhUKAnY4Eg8kYWNjNzI2NDM3MjY0NjgaFQoCdjkSDyRhY2M4MjY0MzcyNjQ2OBoVCgJ3MRIPJGFjYzkyNjQzNzI2NDY4GhYKAncyEhAkYWNjMTAyNjQzNzI2NDY4GhYKAnczEhAkYWNjMTEyNjQzNzI2NDY4GhYKAnc0EhAkYWNjMTIyNjQzNzI2NDY4GhYKAnc1EhAkYWNjMTMyNjQzNzI2NDY4GhYKAnc2EhAkYWNjMTQyNjQzNzI2NDY4GhYKAnc3EhAkYWNjMTUyNjQzNzI2NDY4GhYKAnc4EhAkYWNjMTYyNjQzNzI2NDY4GhYKAnc5EhAkYWNjMTcyNjQzNzI2NDY4GhYKAngxEhAkYWNjMTgyNjQzNzI2NDY4GhYKAngyEhAkYWNjMTkyNjQzNzI2NDY4GhYKAngzEhAkYWNjMjAyNjQzNzI2NDY4GhYKAng0EhAkYWNjMjEyNjQzNzI2NDY4GhYKAng1EhAkYWNjMjIyNjQzNzI2NDY4GhYKAng2EhAkYWNjMjMyNjQzNzI2NDY4GhYKAng3EhAkYWNjMjQyNjQzNzI2NDY4GhYKAng4EhAkYWNjMjUyNjQzNzI2NDY4GhYKAng5EhAkYWNjMjYyNjQzNzI2NDY4GhYKAnkxEhAkYWNjMjcyNjQzNzI2NDY4GhYKAnkyEhAkYWNjMjgyNjQzNzI2NDY4GhYKAnkzEhAkYWNjMjkyNjQzNzI2NDY4GhYKAnk0EhAkYWNjMzAyNjQzNzI2NDY4GhYKAnk1EhAkYWNjMzEyNjQzNzI2NDY4GhYKAnk2EhAkYWNjMzIyNjQzNzI2NDY4GhYKAnk3EhAkYWNjMzMyNjQzNzI2NDY4GhYKAnk4EhAkYWNjMzQyNjQzNzI2NDY4GhYKAnk5EhAkYWNjMzUyNjQzNzI2NDY4GhYKAnoxEhAkYWNjMzYyNjQzNzI2NDY4GhcKA3oxMBIQJGFjYzQ1MjY0MzcyNjQ2OBoXCgN6MTESECRhY2M0NjI2NDM3MjY0NjgaGwoDejEyEhRzaGFyZVRva2VuTXVsdGlwbHllchoUCgN6MTMSDSR0MDI2Njc5MjY3OTEaHwoDejE0Ehh1c2VyU2hhcmVUb2tlbnNBbW91bnROZXcaJQoDejE1Eh50b3RhbEFtb3VudE5ld1NoYXJlVG9rZW5Mb2NrZWQaKQoDejE2EiJ0b3RhbEFtb3VudFNoYXJlVG9rZW5zTG9ja2VkQmVmb3JlGiYKA3oxNxIfdG90YWxBbW91bnRTaGFyZVRva2Vuc0xvY2tlZE5ldxoUCgN6MTgSDSR0MDI4ODE1Mjg4ODAaFAoDejE5Eg0kdDAyODg4NTI4OTk3GhYKAnoyEhAkYWNjMzcyNjQzNzI2NDY4GhQKA3oyMBINJHQwMjkwMDIyOTExOBoUCgN6MjESDWF2YWlsYWJsZUZ1bmQaCQoDejIyEgJ0eBoNCgN6MjMSBnZlcmlmeRoKCgN6MjQSA2ludhoPCgN6MjUSCGNhbGxFZ2cxGhQKA3oyNhINc2lnbmVkQnlBZG1pbhoZCgN6MjcSEmFkbWluUHViS2V5MVNpZ25lZBoZCgN6MjgSEmFkbWluUHViS2V5MlNpZ25lZBoZCgN6MjkSEmFkbWluUHViS2V5M1NpZ25lZBoWCgJ6MxIQJGFjYzM4MjY0MzcyNjQ2OBoWCgJ6NBIQJGFjYzM5MjY0MzcyNjQ2OBoWCgJ6NRIQJGFjYzQwMjY0MzcyNjQ2OBoWCgJ6NhIQJGFjYzQxMjY0MzcyNjQ2OBoWCgJ6NxIQJGFjYzQyMjY0MzcyNjQ2OBoWCgJ6OBIQJGFjYzQzMjY0MzcyNjQ2OBoWCgJ6ORIQJGFjYzQ0MjY0MzcyNjQ2OAAAAF0AAAAAAmExAQAAACDip4xAO4bNF+a0S4fb5aGDrK4qoew3Ll5lBRPytezvBAAAAAACYTIBAAAAIOo4rLkBtYg8cqOeKD2B1BoiZRETjd+Og418/VfxmxFZAAAAAAJhMwEAAAAgpzSWgrCjycddMmIBfztFJ08z6r82xAHPELd0cKonzG4AAAAAAmE0AQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAACYTUCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAJhNgIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAACYTcCAAAABmFjdGl2ZQAAAAACYTgCAAAADnNodXRkb3duX2NhdXNlAAAAAAJhOQIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAAmIxAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAAmIyAgAAABpfcG9vbF9yZXdhcmRfdXBkYXRlX2hlaWdodAAAAAACYjMCAAAAHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAAAAACYjQCAAAAH3RvdGFsX3Jld2FyZF9wZXJfYmxvY2tfcHJldmlvdXMAAAAAAmI1AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAACYjYCAAAADl9sYXN0X2ludGVyZXN0AAAAAAJiNwIAAAAVX2xhc3RfaW50ZXJlc3RfaGVpZ2h0AAAAAAJiOAIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAAmI5AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAACYzECAAAAB1NXT1BfaWQAAAAAAmMyAgAAABRfU1dPUF9jbGFpbWVkX2Ftb3VudAAAAAACYzMCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAAmM0AgAAAA9fYXZhaWxhYmxlX1NXT1AAAAAAAmM1AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAACYzYCAAAAA2FweQAAAAACYzcCAAAAGHByZXZpb3VzX3RvdGFsX3ZvdGVfU1dPUAAAAAACYzgCAAAAEnN3b3BfeWVhcl9lbWlzc2lvbgAAAAACYzkCAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAACZDECAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAACZDICAAAAHl9oYXJ2ZXN0X3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAACZDMCAAAAI19oYXJ2ZXN0X3VzZXJfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAAAJkNAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAACZDUCAAAACkFfYXNzZXRfaWQAAAAAAmQ2AgAAAApCX2Fzc2V0X2lkAAAAAAJkNwIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAAmQ4AgAAAA1maXJzdF9oYXJ2ZXN0AAAAAAJkOQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAACZTECAAAAEnN1bV9yZXdhcmRfY3VycmVudAAAAAACZTIJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSq+mnegfQTUoXKPy46iFGzGeqYHFnyDS0AAAAA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AwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAACAUAAAACdjkEAAAAAncxCQEAAAACdTQAAAACBQAAAAJ2OQkAAZEAAAACBQAAAAJ1OAAAAAAAAAAACAMJAAAAAAAAAgUAAAACdTkAAAAAAAAAAAkFAAAAAncxBAAAAAJ3MgkBAAAAAnU0AAAAAgUAAAACdzEJAAGRAAAAAgUAAAACdTgAAAAAAAAAAAkDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAKBQAAAAJ3MgQAAAACdzMJAQAAAAJ1NAAAAAIFAAAAAncyCQABkQAAAAIFAAAAAnU4AAAAAAAAAAAKAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAACwUAAAACdzMEAAAAAnc0CQEAAAACdTQAAAACBQAAAAJ3MwkAAZEAAAACBQAAAAJ1OAAAAAAAAAAACwMJAAAAAAAAAgUAAAACdTkAAAAAAAAAAAwFAAAAAnc0BAAAAAJ3NQkBAAAAAnU0AAAAAgUAAAACdzQJAAGRAAAAAgUAAAACdTgAAAAAAAAAAAwDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAANBQAAAAJ3NQQAAAACdzYJAQAAAAJ1NAAAAAIFAAAAAnc1CQABkQAAAAIFAAAAAnU4AAAAAAAAAAANAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAADgUAAAACdzYEAAAAAnc3CQEAAAACdTQAAAACBQAAAAJ3NgkAAZEAAAACBQAAAAJ1OAAAAAAAAAAADgMJAAAAAAAAAgUAAAACdTkAAAAAAAAAAA8FAAAAAnc3BAAAAAJ3OAkBAAAAAnU0AAAAAgUAAAACdzcJAAGRAAAAAgUAAAACdTgAAAAAAAAAAA8DCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAQBQAAAAJ3OAQAAAACdzkJAQAAAAJ1NAAAAAIFAAAAAnc4CQABkQAAAAIFAAAAAnU4AAAAAAAAAAAQAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAEQUAAAACdzkEAAAAAngxCQEAAAACdTQAAAACBQAAAAJ3OQkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAEQMJAAAAAAAAAgUAAAACdTkAAAAAAAAAABIFAAAAAngxBAAAAAJ4MgkBAAAAAnU0AAAAAgUAAAACeDEJAAGRAAAAAgUAAAACdTgAAAAAAAAAABIDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAATBQAAAAJ4MgQAAAACeDMJAQAAAAJ1NAAAAAIFAAAAAngyCQABkQAAAAIFAAAAAnU4AAAAAAAAAAATAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAFAUAAAACeDMEAAAAAng0CQEAAAACdTQAAAACBQAAAAJ4MwkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAFAMJAAAAAAAAAgUAAAACdTkAAAAAAAAAABUFAAAAAng0BAAAAAJ4NQkBAAAAAnU0AAAAAgUAAAACeDQJAAGRAAAAAgUAAAACdTgAAAAAAAAAABUDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAWBQAAAAJ4NQQAAAACeDYJAQAAAAJ1NAAAAAIFAAAAAng1CQABkQAAAAIFAAAAAnU4AAAAAAAAAAAWAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAFwUAAAACeDYEAAAAAng3CQEAAAACdTQAAAACBQAAAAJ4NgkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAFwMJAAAAAAAAAgUAAAACdTkAAAAAAAAAABgFAAAAAng3BAAAAAJ4OAkBAAAAAnU0AAAAAgUAAAACeDcJAAGRAAAAAgUAAAACdTgAAAAAAAAAABgDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAZBQAAAAJ4OAQAAAACeDkJAQAAAAJ1NAAAAAIFAAAAAng4CQABkQAAAAIFAAAAAnU4AAAAAAAAAAAZAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAGgUAAAACeDkEAAAAAnkxCQEAAAACdTQAAAACBQAAAAJ4OQkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAGgMJAAAAAAAAAgUAAAACdTkAAAAAAAAAABsFAAAAAnkxBAAAAAJ5MgkBAAAAAnU0AAAAAgUAAAACeTEJAAGRAAAAAgUAAAACdTgAAAAAAAAAABsDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAcBQAAAAJ5MgQAAAACeTMJAQAAAAJ1NAAAAAIFAAAAAnkyCQABkQAAAAIFAAAAAnU4AAAAAAAAAAAcAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAHQUAAAACeTMEAAAAAnk0CQEAAAACdTQAAAACBQAAAAJ5MwkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAHQMJAAAAAAAAAgUAAAACdTkAAAAAAAAAAB4FAAAAAnk0BAAAAAJ5NQkBAAAAAnU0AAAAAgUAAAACeTQJAAGRAAAAAgUAAAACdTgAAAAAAAAAAB4DCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAfBQAAAAJ5NQQAAAACeTYJAQAAAAJ1NAAAAAIFAAAAAnk1CQABkQAAAAIFAAAAAnU4AAAAAAAAAAAfAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAIAUAAAACeTYEAAAAAnk3CQEAAAACdTQAAAACBQAAAAJ5NgkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAIAMJAAAAAAAAAgUAAAACdTkAAAAAAAAAACEFAAAAAnk3BAAAAAJ5OAkBAAAAAnU0AAAAAgUAAAACeTcJAAGRAAAAAgUAAAACdTgAAAAAAAAAACEDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAiBQAAAAJ5OAQAAAACeTkJAQAAAAJ1NAAAAAIFAAAAAnk4CQABkQAAAAIFAAAAAnU4AAAAAAAAAAAiAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAIwUAAAACeTkEAAAAAnoxCQEAAAACdTQAAAACBQAAAAJ5OQkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAIwMJAAAAAAAAAgUAAAACdTkAAAAAAAAAACQFAAAAAnoxBAAAAAJ6MgkBAAAAAnU0AAAAAgUAAAACejEJAAGRAAAAAgUAAAACdTgAAAAAAAAAACQDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAlBQAAAAJ6MgQAAAACejMJAQAAAAJ1NAAAAAIFAAAAAnoyCQABkQAAAAIFAAAAAnU4AAAAAAAAAAAlAwkAAAAAAAACBQAAAAJ1OQAAAAAAAAAAJgUAAAACejMEAAAAAno0CQEAAAACdTQAAAACBQAAAAJ6MwkAAZEAAAACBQAAAAJ1OAAAAAAAAAAAJgMJAAAAAAAAAgUAAAACdTkAAAAAAAAAACcFAAAAAno0BAAAAAJ6NQkBAAAAAnU0AAAAAgUAAAACejQJAAGRAAAAAgUAAAACdTgAAAAAAAAAACcDCQAAAAAAAAIFAAAAAnU5AAAAAAAAAAAoBQAAAAJ6NQQAAAACejYJAQAAAAJ1NAAAAAIFAAAAAno1CQABkQAAAAIFAAAAAnU4AAAA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", "height": 1702507, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J6ABghUW2KsfFVDNWucZuGU3nNDeDt7jYLWNL2G4fYQD Next: CMEH5S5X7x2bBSYrHfnR5pw8ArvH5LhRkFZmF5s6ndEe Diff:
OldNewDifferences
66 let adminPubKey2 = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk'
77
88 let adminPubKey3 = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
9+
10+let admStaking = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
911
1012 let keyShareTokensLocked = "_total_share_tokens_locked"
1113
320322 let shareAssetId = getShareAssetId(pool)
321323 let scaleValue = calcScaleValue(SWOP, shareAssetId)
322324 let shareTokenLocked = getTotalShareTokenLocked(pool)
323- let $t01302713092 = getLastInterestInfo(pool)
324- let lastInterestHeight = $t01302713092._1
325- let lastInterest = $t01302713092._2
326- let $t01309713209 = rewardInfo(pool)
327- let currentRewardPerBlock = $t01309713209._1
328- let rewardUpdateHeight = $t01309713209._2
329- let previousRewardPerBlock = $t01309713209._3
330- let poolRewardUpdateHeight = $t01309713209._4
331- let $t01321413298 = getUserInterestInfo(pool, userAddrStr)
332- let userLastInterest = $t01321413298._1
333- let userShareTokensAmount = $t01321413298._2
325+ let $t01309613161 = getLastInterestInfo(pool)
326+ let lastInterestHeight = $t01309613161._1
327+ let lastInterest = $t01309613161._2
328+ let $t01316613278 = rewardInfo(pool)
329+ let currentRewardPerBlock = $t01316613278._1
330+ let rewardUpdateHeight = $t01316613278._2
331+ let previousRewardPerBlock = $t01316613278._3
332+ let poolRewardUpdateHeight = $t01316613278._4
333+ let $t01328313367 = getUserInterestInfo(pool, userAddrStr)
334+ let userLastInterest = $t01328313367._1
335+ let userShareTokensAmount = $t01328313367._2
334336 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
335337 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
336338 let userNewInterest = currentInterest
342344 let shareAssetId = getShareAssetId(pool)
343345 let scaleValue = calcScaleValue(SWOP, shareAssetId)
344346 let shareTokenLocked = getTotalShareTokenLocked(pool)
345- let $t01402114086 = getLastInterestInfo(pool)
346- let lastInterestHeight = $t01402114086._1
347- let lastInterest = $t01402114086._2
348- let $t01409114203 = rewardInfo(pool)
349- let currentRewardPerBlock = $t01409114203._1
350- let rewardUpdateHeight = $t01409114203._2
351- let previousRewardPerBlock = $t01409114203._3
352- let poolRewardUpdateHeight = $t01409114203._4
353- let $t01420814292 = getUserInterestInfo(pool, userAddrStr)
354- let userLastInterest = $t01420814292._1
355- let userShareTokensAmount = $t01420814292._2
347+ let $t01409014155 = getLastInterestInfo(pool)
348+ let lastInterestHeight = $t01409014155._1
349+ let lastInterest = $t01409014155._2
350+ let $t01416014272 = rewardInfo(pool)
351+ let currentRewardPerBlock = $t01416014272._1
352+ let rewardUpdateHeight = $t01416014272._2
353+ let previousRewardPerBlock = $t01416014272._3
354+ let poolRewardUpdateHeight = $t01416014272._4
355+ let $t01427714361 = getUserInterestInfo(pool, userAddrStr)
356+ let userLastInterest = $t01427714361._1
357+ let userShareTokensAmount = $t01427714361._2
356358 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
357359 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
358360 let userNewInterest = currentInterest
361363
362364
363365 func calculateProtocolReward (pool) = {
364- let $t01479614861 = getLastInterestInfo(pool)
365- let lastInterestHeight = $t01479614861._1
366- let lastInterest = $t01479614861._2
367- let $t01486614977 = rewardInfo(pool)
368- let currentRewardPerBlock = $t01486614977._1
369- let rewardUpdateHeight = $t01486614977._2
370- let previousRewardPerBlock = $t01486614977._3
371- let poolRewardUpdateHeight = $t01486614977._4
366+ let $t01486514930 = getLastInterestInfo(pool)
367+ let lastInterestHeight = $t01486514930._1
368+ let lastInterest = $t01486514930._2
369+ let $t01493515046 = rewardInfo(pool)
370+ let currentRewardPerBlock = $t01493515046._1
371+ let rewardUpdateHeight = $t01493515046._2
372+ let previousRewardPerBlock = $t01493515046._3
373+ let poolRewardUpdateHeight = $t01493515046._4
372374 let shareTokenLocked = getTotalShareTokenLocked(pool)
373375 if (if ((shareTokenLocked == 0))
374376 then (poolRewardUpdateHeight == 0)
453455 func initPoolShareFarming (pool) = if ((i.caller != this))
454456 then throw("Only the DApp itself can call this function")
455457 else {
456- let $t01794718050 = rewardInfo(pool)
457- let currentReward = $t01794718050._1
458- let rewardUpdateHeight = $t01794718050._2
459- let previousRewardPerBlock = $t01794718050._3
460- let poolRewardUpdateHeight = $t01794718050._4
458+ let $t01801618119 = rewardInfo(pool)
459+ let currentReward = $t01801618119._1
460+ let rewardUpdateHeight = $t01801618119._2
461+ let previousRewardPerBlock = $t01801618119._3
462+ let poolRewardUpdateHeight = $t01801618119._4
461463 [IntegerEntry((pool + keyShareTokensLocked), 0), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), height)]
462464 }
463465
469471 else if (!(isActive))
470472 then throw("DApp is inactive at this moment")
471473 else {
472- let $t01845918595 = claimCalc(pool, toString(adminIncreaseInterestAddress), height)
473- let userNewInterest = $t01845918595._1
474- let currentInterest = $t01845918595._2
475- let claimAmount = $t01845918595._3
476- let userShareTokensAmount = $t01845918595._4
477- let $t01860018703 = rewardInfo(pool)
478- let currentReward = $t01860018703._1
479- let rewardUpdateHeight = $t01860018703._2
480- let previousRewardPerBlock = $t01860018703._3
481- let poolRewardUpdateHeight = $t01860018703._4
474+ let $t01852818664 = claimCalc(pool, toString(adminIncreaseInterestAddress), height)
475+ let userNewInterest = $t01852818664._1
476+ let currentInterest = $t01852818664._2
477+ let claimAmount = $t01852818664._3
478+ let userShareTokensAmount = $t01852818664._4
479+ let $t01866918772 = rewardInfo(pool)
480+ let currentReward = $t01866918772._1
481+ let rewardUpdateHeight = $t01866918772._2
482+ let previousRewardPerBlock = $t01866918772._3
483+ let poolRewardUpdateHeight = $t01866918772._4
482484 [IntegerEntry((pool + keyLastInterest), userNewInterest), IntegerEntry((pool + keyLastInterestHeight), height)]
483485 }
484486
487489 @Callable(i)
488490 func lockShareTokens (pool) = {
489491 let userAddrStr = toString(i.caller)
490- let $t01893719012 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
491- let pmtAmount = $t01893719012._1
492- let pmtAssetId = $t01893719012._2
493- let $t01901719090 = getAssetInfo(pmtAssetId)
494- let pmtStrAssetId = $t01901719090._1
495- let pmtAssetName = $t01901719090._2
496- let pmtDecimals = $t01901719090._3
497- let $t01909519211 = claimCalc(pool, toString(i.caller), height)
498- let userNewInterest = $t01909519211._1
499- let currentInterest = $t01909519211._2
500- let claimAmount = $t01909519211._3
501- let userShareTokensAmount = $t01909519211._4
492+ let $t01900619081 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
493+ let pmtAmount = $t01900619081._1
494+ let pmtAssetId = $t01900619081._2
495+ let $t01908619159 = getAssetInfo(pmtAssetId)
496+ let pmtStrAssetId = $t01908619159._1
497+ let pmtAssetName = $t01908619159._2
498+ let pmtDecimals = $t01908619159._3
499+ let $t01916419280 = claimCalc(pool, toString(i.caller), height)
500+ let userNewInterest = $t01916419280._1
501+ let currentInterest = $t01916419280._2
502+ let claimAmount = $t01916419280._3
503+ let userShareTokensAmount = $t01916419280._4
502504 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
503505 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
504506 let totalShareAmount = getTotalShareTokenLocked(pool)
563565 @Callable(i)
564566 func withdrawShareTokens (pool,shareTokensWithdrawAmount) = {
565567 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
566- let $t02374623862 = claimCalc(pool, toString(i.caller), height)
567- let userNewInterest = $t02374623862._1
568- let currentInterest = $t02374623862._2
569- let claimAmount = $t02374623862._3
570- let userShareTokensAmount = $t02374623862._4
568+ let $t02381523931 = claimCalc(pool, toString(i.caller), height)
569+ let userNewInterest = $t02381523931._1
570+ let currentInterest = $t02381523931._2
571+ let claimAmount = $t02381523931._3
572+ let userShareTokensAmount = $t02381523931._4
571573 let userShareAmountNew = (userShareTokensAmount - shareTokensWithdrawAmount)
572574 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
573575 let totalShareAmount = getTotalShareTokenLocked(pool)
596598 then (pool != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
597599 else false)
598600 then throw()
599- else {
600- func updateUser (accum,u) = {
601- let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
602- if ((r == r))
603- then (accum :+ BooleanEntry((u + "_migration"), true))
604- else throw("Strict value is not equal to itself.")
601+ else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
602+ then throw("Only admin can call this function")
603+ else {
604+ func updateUser (accum,u) = {
605+ let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
606+ if ((r == r))
607+ then (accum :+ BooleanEntry((u + "_migration"), true))
608+ else throw("Strict value is not equal to itself.")
609+ }
610+
611+ let $list2643726468 = users
612+ let $size2643726468 = size($list2643726468)
613+ let $acc02643726468 = nil
614+ if (($size2643726468 == 0))
615+ then $acc02643726468
616+ else {
617+ let $acc12643726468 = updateUser($acc02643726468, $list2643726468[0])
618+ if (($size2643726468 == 1))
619+ then $acc12643726468
620+ else {
621+ let $acc22643726468 = updateUser($acc12643726468, $list2643726468[1])
622+ if (($size2643726468 == 2))
623+ then $acc22643726468
624+ else {
625+ let $acc32643726468 = updateUser($acc22643726468, $list2643726468[2])
626+ if (($size2643726468 == 3))
627+ then $acc32643726468
628+ else {
629+ let $acc42643726468 = updateUser($acc32643726468, $list2643726468[3])
630+ if (($size2643726468 == 4))
631+ then $acc42643726468
632+ else {
633+ let $acc52643726468 = updateUser($acc42643726468, $list2643726468[4])
634+ if (($size2643726468 == 5))
635+ then $acc52643726468
636+ else {
637+ let $acc62643726468 = updateUser($acc52643726468, $list2643726468[5])
638+ if (($size2643726468 == 6))
639+ then $acc62643726468
640+ else {
641+ let $acc72643726468 = updateUser($acc62643726468, $list2643726468[6])
642+ if (($size2643726468 == 7))
643+ then $acc72643726468
644+ else {
645+ let $acc82643726468 = updateUser($acc72643726468, $list2643726468[7])
646+ if (($size2643726468 == 8))
647+ then $acc82643726468
648+ else {
649+ let $acc92643726468 = updateUser($acc82643726468, $list2643726468[8])
650+ if (($size2643726468 == 9))
651+ then $acc92643726468
652+ else {
653+ let $acc102643726468 = updateUser($acc92643726468, $list2643726468[9])
654+ if (($size2643726468 == 10))
655+ then $acc102643726468
656+ else {
657+ let $acc112643726468 = updateUser($acc102643726468, $list2643726468[10])
658+ if (($size2643726468 == 11))
659+ then $acc112643726468
660+ else {
661+ let $acc122643726468 = updateUser($acc112643726468, $list2643726468[11])
662+ if (($size2643726468 == 12))
663+ then $acc122643726468
664+ 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+ }
832+ }
833+ }
834+ }
835+ }
836+ }
837+ }
838+ }
839+ }
840+ }
841+ }
842+ }
843+ }
844+ }
605845 }
606846
607- let $list2620926240 = users
608- let $size2620926240 = size($list2620926240)
609- let $acc02620926240 = nil
610- if (($size2620926240 == 0))
611- then $acc02620926240
612- else {
613- let $acc12620926240 = updateUser($acc02620926240, $list2620926240[0])
614- if (($size2620926240 == 1))
615- then $acc12620926240
616- else {
617- let $acc22620926240 = updateUser($acc12620926240, $list2620926240[1])
618- if (($size2620926240 == 2))
619- then $acc22620926240
620- else {
621- let $acc32620926240 = updateUser($acc22620926240, $list2620926240[2])
622- if (($size2620926240 == 3))
623- then $acc32620926240
624- else {
625- let $acc42620926240 = updateUser($acc32620926240, $list2620926240[3])
626- if (($size2620926240 == 4))
627- then $acc42620926240
628- else {
629- let $acc52620926240 = updateUser($acc42620926240, $list2620926240[4])
630- if (($size2620926240 == 5))
631- then $acc52620926240
632- else {
633- let $acc62620926240 = updateUser($acc52620926240, $list2620926240[5])
634- if (($size2620926240 == 6))
635- then $acc62620926240
636- else {
637- let $acc72620926240 = updateUser($acc62620926240, $list2620926240[6])
638- if (($size2620926240 == 7))
639- then $acc72620926240
640- else {
641- let $acc82620926240 = updateUser($acc72620926240, $list2620926240[7])
642- if (($size2620926240 == 8))
643- then $acc82620926240
644- else {
645- let $acc92620926240 = updateUser($acc82620926240, $list2620926240[8])
646- if (($size2620926240 == 9))
647- then $acc92620926240
648- else {
649- let $acc102620926240 = updateUser($acc92620926240, $list2620926240[9])
650- if (($size2620926240 == 10))
651- then $acc102620926240
652- else {
653- let $acc112620926240 = updateUser($acc102620926240, $list2620926240[10])
654- if (($size2620926240 == 11))
655- then $acc112620926240
656- else {
657- let $acc122620926240 = updateUser($acc112620926240, $list2620926240[11])
658- if (($size2620926240 == 12))
659- then $acc122620926240
660- else {
661- let $acc132620926240 = updateUser($acc122620926240, $list2620926240[12])
662- if (($size2620926240 == 13))
663- then $acc132620926240
664- else {
665- let $acc142620926240 = updateUser($acc132620926240, $list2620926240[13])
666- if (($size2620926240 == 14))
667- then $acc142620926240
668- else {
669- let $acc152620926240 = updateUser($acc142620926240, $list2620926240[14])
670- if (($size2620926240 == 15))
671- then $acc152620926240
672- else {
673- let $acc162620926240 = updateUser($acc152620926240, $list2620926240[15])
674- if (($size2620926240 == 16))
675- then $acc162620926240
676- else {
677- let $acc172620926240 = updateUser($acc162620926240, $list2620926240[16])
678- if (($size2620926240 == 17))
679- then $acc172620926240
680- else {
681- let $acc182620926240 = updateUser($acc172620926240, $list2620926240[17])
682- if (($size2620926240 == 18))
683- then $acc182620926240
684- else {
685- let $acc192620926240 = updateUser($acc182620926240, $list2620926240[18])
686- if (($size2620926240 == 19))
687- then $acc192620926240
688- else {
689- let $acc202620926240 = updateUser($acc192620926240, $list2620926240[19])
690- if (($size2620926240 == 20))
691- then $acc202620926240
692- else {
693- let $acc212620926240 = updateUser($acc202620926240, $list2620926240[20])
694- if (($size2620926240 == 21))
695- then $acc212620926240
696- else {
697- let $acc222620926240 = updateUser($acc212620926240, $list2620926240[21])
698- if (($size2620926240 == 22))
699- then $acc222620926240
700- else {
701- let $acc232620926240 = updateUser($acc222620926240, $list2620926240[22])
702- if (($size2620926240 == 23))
703- then $acc232620926240
704- else {
705- let $acc242620926240 = updateUser($acc232620926240, $list2620926240[23])
706- if (($size2620926240 == 24))
707- then $acc242620926240
708- else {
709- let $acc252620926240 = updateUser($acc242620926240, $list2620926240[24])
710- if (($size2620926240 == 25))
711- then $acc252620926240
712- else {
713- let $acc262620926240 = updateUser($acc252620926240, $list2620926240[25])
714- if (($size2620926240 == 26))
715- then $acc262620926240
716- else {
717- let $acc272620926240 = updateUser($acc262620926240, $list2620926240[26])
718- if (($size2620926240 == 27))
719- then $acc272620926240
720- else {
721- let $acc282620926240 = updateUser($acc272620926240, $list2620926240[27])
722- if (($size2620926240 == 28))
723- then $acc282620926240
724- else {
725- let $acc292620926240 = updateUser($acc282620926240, $list2620926240[28])
726- if (($size2620926240 == 29))
727- then $acc292620926240
728- else {
729- let $acc302620926240 = updateUser($acc292620926240, $list2620926240[29])
730- if (($size2620926240 == 30))
731- then $acc302620926240
732- else {
733- let $acc312620926240 = updateUser($acc302620926240, $list2620926240[30])
734- if (($size2620926240 == 31))
735- then $acc312620926240
736- else {
737- let $acc322620926240 = updateUser($acc312620926240, $list2620926240[31])
738- if (($size2620926240 == 32))
739- then $acc322620926240
740- else {
741- let $acc332620926240 = updateUser($acc322620926240, $list2620926240[32])
742- if (($size2620926240 == 33))
743- then $acc332620926240
744- else {
745- let $acc342620926240 = updateUser($acc332620926240, $list2620926240[33])
746- if (($size2620926240 == 34))
747- then $acc342620926240
748- else {
749- let $acc352620926240 = updateUser($acc342620926240, $list2620926240[34])
750- if (($size2620926240 == 35))
751- then $acc352620926240
752- else {
753- let $acc362620926240 = updateUser($acc352620926240, $list2620926240[35])
754- if (($size2620926240 == 36))
755- then $acc362620926240
756- else {
757- let $acc372620926240 = updateUser($acc362620926240, $list2620926240[36])
758- if (($size2620926240 == 37))
759- then $acc372620926240
760- else {
761- let $acc382620926240 = updateUser($acc372620926240, $list2620926240[37])
762- if (($size2620926240 == 38))
763- then $acc382620926240
764- else {
765- let $acc392620926240 = updateUser($acc382620926240, $list2620926240[38])
766- if (($size2620926240 == 39))
767- then $acc392620926240
768- else {
769- let $acc402620926240 = updateUser($acc392620926240, $list2620926240[39])
770- if (($size2620926240 == 40))
771- then $acc402620926240
772- else {
773- let $acc412620926240 = updateUser($acc402620926240, $list2620926240[40])
774- if (($size2620926240 == 41))
775- then $acc412620926240
776- else {
777- let $acc422620926240 = updateUser($acc412620926240, $list2620926240[41])
778- if (($size2620926240 == 42))
779- then $acc422620926240
780- else {
781- let $acc432620926240 = updateUser($acc422620926240, $list2620926240[42])
782- if (($size2620926240 == 43))
783- then $acc432620926240
784- else {
785- let $acc442620926240 = updateUser($acc432620926240, $list2620926240[43])
786- if (($size2620926240 == 44))
787- then $acc442620926240
788- else {
789- let $acc452620926240 = updateUser($acc442620926240, $list2620926240[44])
790- if (($size2620926240 == 45))
791- then $acc452620926240
792- else {
793- let $acc462620926240 = updateUser($acc452620926240, $list2620926240[45])
794- if (($size2620926240 == 46))
795- then $acc462620926240
796- else {
797- let $acc472620926240 = updateUser($acc462620926240, $list2620926240[46])
798- if (($size2620926240 == 47))
799- then $acc472620926240
800- else {
801- let $acc482620926240 = updateUser($acc472620926240, $list2620926240[47])
802- if (($size2620926240 == 48))
803- then $acc482620926240
804- else {
805- let $acc492620926240 = updateUser($acc482620926240, $list2620926240[48])
806- if (($size2620926240 == 49))
807- then $acc492620926240
808- else {
809- let $acc502620926240 = updateUser($acc492620926240, $list2620926240[49])
810- if (($size2620926240 == 50))
811- then $acc502620926240
812- else {
813- let $acc512620926240 = updateUser($acc502620926240, $list2620926240[50])
814- if (($size2620926240 == 51))
815- then $acc512620926240
816- else {
817- let $acc522620926240 = updateUser($acc512620926240, $list2620926240[51])
818- if (($size2620926240 == 52))
819- then $acc522620926240
820- else {
821- let $acc532620926240 = updateUser($acc522620926240, $list2620926240[52])
822- if (($size2620926240 == 53))
823- then $acc532620926240
824- else {
825- let $acc542620926240 = updateUser($acc532620926240, $list2620926240[53])
826- if (($size2620926240 == 54))
827- then $acc542620926240
828- else {
829- let $acc552620926240 = updateUser($acc542620926240, $list2620926240[54])
830- if (($size2620926240 == 55))
831- then $acc552620926240
832- else {
833- let $acc562620926240 = updateUser($acc552620926240, $list2620926240[55])
834- throw("List size exceed 55")
835- }
836- }
837- }
838- }
839- }
840- }
841- }
842- }
843- }
844- }
845- }
846- }
847- }
848- }
849- }
850- }
851- }
852- }
853- }
854- }
855- }
856- }
857- }
858- }
859- }
860- }
861- }
862- }
863- }
864- }
865- }
866- }
867- }
868- }
869- }
870- }
871- }
872- }
873- }
874- }
875- }
876- }
877- }
878- }
879- }
880- }
881- }
882- }
883- }
884- }
885- }
886- }
887- }
888- }
889- }
890- }
847+
848+
849+@Callable(i)
850+func egg1 (pool,u,migrationHeight) = if ((i.caller != this))
851+ then throw("Only contract itself can invoke this function")
852+ else {
853+ 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
859+ let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
860+ let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
861+ let userClaimedAmountNew = (userClaimedAmount + claimAmount)
862+ 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))]
891865 }
892866
893867
894868
895869 @Callable(i)
896-func egg1 (pool,u,migrationHeight) = {
897- let shareTokenMultiplyer = 1000
898- let $t02635726469 = claimCalc(pool, u, migrationHeight)
899- let userNewInterest = $t02635726469._1
900- let currentInterest = $t02635726469._2
901- let claimAmount = $t02635726469._3
902- let userShareTokensAmount = $t02635726469._4
903- let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
904- let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
905- let userClaimedAmountNew = (userClaimedAmount + claimAmount)
906- let userShareTokensAmountNew = (userShareTokensAmount * shareTokenMultiplyer)
907- let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "total_amount_new_sharetoken_locked")), 0)
908-[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))]
909- }
910-
911-
912-
913-@Callable(i)
914-func updateTotalShareTokensLocked (pool,migrationHeight) = {
915- let shareTokenMultiplyer = 1000
916- let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
917- let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
918- if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
919- then throw("New total amount share tockens != old total amount")
920- else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight)]
921- }
870+func updateTotalShareTokensLocked (pool,migrationHeight) = if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
871+ then throw("Only admin can call this function")
872+ else {
873+ let shareTokenMultiplyer = 1000
874+ let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
875+ let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
876+ if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
877+ then throw("New total amount share tockens != old total amount")
878+ else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight)]
879+ }
922880
923881
924882
926884 func claim (pool) = {
927885 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
928886 let shareTokenLocked = getTotalShareTokenLocked(pool)
929- let $t02833028395 = getLastInterestInfo(pool)
930- let lastInterestHeight = $t02833028395._1
931- let lastInterest = $t02833028395._2
932- let $t02840028512 = rewardInfo(pool)
933- let currentRewardPerBlock = $t02840028512._1
934- let rewardUpdateHeight = $t02840028512._2
935- let previousRewardPerBlock = $t02840028512._3
936- let poolRewardUpdateHeight = $t02840028512._4
937- let $t02851728633 = claimCalc(pool, toString(i.caller), height)
938- let userNewInterest = $t02851728633._1
939- let currentInterest = $t02851728633._2
940- let claimAmount = $t02851728633._3
941- let userShareTokensAmount = $t02851728633._4
887+ let $t02881528880 = getLastInterestInfo(pool)
888+ let lastInterestHeight = $t02881528880._1
889+ let lastInterest = $t02881528880._2
890+ let $t02888528997 = rewardInfo(pool)
891+ let currentRewardPerBlock = $t02888528997._1
892+ let rewardUpdateHeight = $t02888528997._2
893+ let previousRewardPerBlock = $t02888528997._3
894+ let poolRewardUpdateHeight = $t02888528997._4
895+ let $t02900229118 = claimCalc(pool, toString(i.caller), height)
896+ let userNewInterest = $t02900229118._1
897+ let currentInterest = $t02900229118._2
898+ let claimAmount = $t02900229118._3
899+ let userShareTokensAmount = $t02900229118._4
942900 let availableFund = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
943901 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
944902 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
978936
979937 @Verifier(tx)
980938 func verify () = match tx {
939+ case inv: InvokeScriptTransaction =>
940+ let callEgg1 = if ((inv.dApp == this))
941+ then (inv.function == "egg1")
942+ else false
943+ let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
944+ then true
945+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
946+ then true
947+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
948+ then true
949+ else sigVerify(tx.bodyBytes, tx.proofs[0], admStaking)
950+ if (callEgg1)
951+ then signedByAdmin
952+ else false
981953 case _ =>
982954 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
983955 then 1
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'
9+
10+let admStaking = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
911
1012 let keyShareTokensLocked = "_total_share_tokens_locked"
1113
1214 let kShareLimit = "share_limit_on_first_harvest"
1315
1416 let keyActive = "active"
1517
1618 let keyCause = "shutdown_cause"
1719
1820 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
1921
2022 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
2123
2224 let keyHeightPoolFraction = "_pool_reward_update_height"
2325
2426 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
2527
2628 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
2729
2830 let keyRewardUpdateHeight = "reward_update_height"
2931
3032 let keyLastInterest = "_last_interest"
3133
3234 let keyLastInterestHeight = "_last_interest_height"
3335
3436 let keyUserShareTokensLocked = "_share_tokens_locked"
3537
3638 let keyUserLastInterest = "_last_interest"
3739
3840 let keySWOPid = "SWOP_id"
3941
4042 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
4143
4244 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
4345
4446 let keyAvailableSWOP = "_available_SWOP"
4547
4648 let keyFarmingStartHeight = "farming_start_height"
4749
4850 let keyAPY = "apy"
4951
5052 let kPreviousTotalVoteSWOP = "previous_total_vote_SWOP"
5153
5254 let keySwopYearEmission = "swop_year_emission"
5355
5456 let keyBalancecpmmA = "A_asset_balance"
5557
5658 let keyBalancecpmmB = "B_asset_balance"
5759
5860 let kHarvestPoolActiveVoteStrucVoting = "_harvest_pool_activeVote_struc"
5961
6062 let kHarvestUserPoolActiveVoteStrucVoting = "_harvest_user_pool_activeVote_struc"
6163
6264 let keyLimitShareFirstHarvest = "share_limit_on_first_harvest"
6365
6466 let keyAssetIdA = "A_asset_id"
6567
6668 let keyAssetIdB = "B_asset_id"
6769
6870 let keyFirstHarvestHeight = "first_harvest_height"
6971
7072 let keyfirstHarvestCpmm = "first_harvest"
7173
7274 let keyTempPrevSum = "sum_reward_previous"
7375
7476 let keyTempCurSum = "sum_reward_current"
7577
7678 let governanceAddress = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7779
7880 let wallet = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7981
8082 let votingAddress = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8183
8284 let adminIncreaseInterestAddress = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8385
8486 let oneWeekInBlock = 10106
8587
8688 let totalVoteShare = 10000000000
8789
8890 let scaleValue1 = 10
8991
9092 let scaleValue3 = 1000
9193
9294 let scaleValue5 = 100000
9395
9496 let scaleValue6 = 1000000
9597
9698 let scaleValue8 = 100000000
9799
98100 let scaleValue11 = 100000000000
99101
100102 func strAssetIdA (pool) = getStringValue(pool, keyAssetIdA)
101103
102104
103105 func strAssetIdB (pool) = getStringValue(pool, keyAssetIdB)
104106
105107
106108 func assetIdA (pool) = if ((strAssetIdA(pool) == "WAVES"))
107109 then unit
108110 else fromBase58String(strAssetIdA(pool))
109111
110112
111113 func assetIdB (pool) = if ((strAssetIdB(pool) == "WAVES"))
112114 then unit
113115 else fromBase58String(strAssetIdB(pool))
114116
115117
116118 let kBasePeriod = "base_period"
117119
118120 let kPeriodLength = "period_length"
119121
120122 let kStartHeight = "start_height"
121123
122124 let kFirstHarvestHeight = "first_harvest_height"
123125
124126 let kDurationFullVotePower = "duration_full_vote_power"
125127
126128 let kMinVotePower = "min_vote_power"
127129
128130 let basePeriod = valueOrErrorMessage(getInteger(votingAddress, kBasePeriod), "Empty kBasePeriod")
129131
130132 let startHeight = valueOrErrorMessage(getInteger(votingAddress, kStartHeight), "Empty kStartHeight")
131133
132134 let periodLength = valueOrErrorMessage(getInteger(votingAddress, kPeriodLength), "Empty kPeriodLength")
133135
134136 let durationFullVotePower = valueOrErrorMessage(getInteger(votingAddress, kDurationFullVotePower), "Empty kDurationFullVotePower")
135137
136138 let minVotePower = valueOrErrorMessage(getInteger(votingAddress, kMinVotePower), "Empty kMinVotePower")
137139
138140 let isActive = getBooleanValue(this, keyActive)
139141
140142 let currPeriod = (basePeriod + ((height - startHeight) / periodLength))
141143
142144 func getLimitToken (pool) = valueOrElse(getIntegerValue(pool, keyLimitShareFirstHarvest), 0)
143145
144146
145147 let APY = getIntegerValue(this, keyAPY)
146148
147149 let SwopYearEmission = getIntegerValue(this, keySwopYearEmission)
148150
149151 func assetNameA (pool) = match assetIdA(pool) {
150152 case id: ByteVector =>
151153 value(assetInfo(id)).name
152154 case waves: Unit =>
153155 "WAVES"
154156 case _ =>
155157 throw("Match error")
156158 }
157159
158160
159161 func assetNameB (pool) = match assetIdB(pool) {
160162 case id: ByteVector =>
161163 value(assetInfo(id)).name
162164 case waves: Unit =>
163165 "WAVES"
164166 case _ =>
165167 throw("Match error")
166168 }
167169
168170
169171 let SWOP = fromBase58String(getStringValue(this, keySWOPid))
170172
171173 func isFirstHarvest (pool) = valueOrElse(getBoolean(pool, keyfirstHarvestCpmm), false)
172174
173175
174176 func getHeightFirstHarvest (pool) = valueOrElse(getInteger(pool, keyFirstHarvestHeight), 0)
175177
176178
177179 func getBalanceA (pool) = valueOrErrorMessage(getInteger(pool, keyBalancecpmmA), ("No data on the key: " + keyBalancecpmmA))
178180
179181
180182 func getBalanceB (pool) = valueOrErrorMessage(getInteger(pool, keyBalancecpmmB), ("No data on the key: " + keyBalancecpmmB))
181183
182184
183185 func getShareLimitToken (pool) = valueOrErrorMessage(getInteger(pool, kShareLimit), ("No data on the key: " + kShareLimit))
184186
185187
186188 func getTotalShareTokenLocked (pool) = valueOrErrorMessage(getInteger(this, (pool + keyShareTokensLocked)), (("No data on the key: " + pool) + keyShareTokensLocked))
187189
188190
189191 func getShareAssetId (pool) = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
190192
191193
192194 func accountBalance (assetId) = match assetId {
193195 case id: ByteVector =>
194196 assetBalance(this, id)
195197 case waves: Unit =>
196198 wavesBalance(this).available
197199 case _ =>
198200 throw("Match error")
199201 }
200202
201203
202204 func getAssetInfo (assetId) = match assetId {
203205 case id: ByteVector =>
204206 let stringId = toBase58String(id)
205207 let info = valueOrErrorMessage(assetInfo(id), (("Asset " + stringId) + " doesn't exist"))
206208 $Tuple3(stringId, info.name, info.decimals)
207209 case waves: Unit =>
208210 $Tuple3("WAVES", "WAVES", 8)
209211 case _ =>
210212 throw("Match error")
211213 }
212214
213215
214216 func calcScaleValue (assetId1,assetId2) = {
215217 let assetId1Decimals = value(assetInfo(assetId1)).decimals
216218 let assetId2Decimals = value(assetInfo(assetId2)).decimals
217219 let scaleDigits = ((assetId2Decimals - assetId1Decimals) + 8)
218220 pow(10, 0, scaleDigits, 0, 0, FLOOR)
219221 }
220222
221223
222224 func userAvailableSWOP (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + user) + keyAvailableSWOP)), 0)
223225
224226
225227 func rewardInfo (pool) = {
226228 let totalRewardPerBlockCurrent = valueOrErrorMessage(getInteger(governanceAddress, keyTotalRewardPerBlockCurrent), ((("No data on the key: " + keyTotalRewardPerBlockCurrent) + " at address ") + toString(governanceAddress)))
227229 let totalRewardPerBlockPrevious = valueOrErrorMessage(getInteger(governanceAddress, keyTotalRewardPerBlockPrevious), ((("No data on the key: " + keyTotalRewardPerBlockPrevious) + " at address ") + toString(governanceAddress)))
228230 let rewardPoolFractionCurrent = valueOrErrorMessage(getInteger(governanceAddress, (pool + keyRewardPoolFractionCurrent)), (((("No data on the key: " + pool) + keyRewardPoolFractionCurrent) + " at address ") + toString(governanceAddress)))
229231 let rewardUpdateHeight = valueOrErrorMessage(getInteger(governanceAddress, keyRewardUpdateHeight), ((("No data on the key: " + keyRewardUpdateHeight) + " at address ") + toString(governanceAddress)))
230232 let poolRewardUpdateHeight = valueOrElse(getInteger(governanceAddress, (pool + keyHeightPoolFraction)), 0)
231233 let rewardPoolFractionPrevious = valueOrErrorMessage(getInteger(governanceAddress, (pool + keyRewardPoolFractionPrevious)), (((("No data on the key: " + pool) + keyRewardPoolFractionPrevious) + " at address ") + toString(governanceAddress)))
232234 let rewardPoolCurrent = fraction(totalRewardPerBlockCurrent, rewardPoolFractionCurrent, totalVoteShare)
233235 let rewardPoolPrevious = fraction(totalRewardPerBlockPrevious, rewardPoolFractionPrevious, totalVoteShare)
234236 if (if ((rewardPoolCurrent > totalRewardPerBlockCurrent))
235237 then true
236238 else (rewardPoolPrevious > totalRewardPerBlockPrevious))
237239 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
238240 else $Tuple4(rewardPoolCurrent, rewardUpdateHeight, rewardPoolPrevious, poolRewardUpdateHeight)
239241 }
240242
241243
242244 func getLastInterestInfo (pool) = {
243245 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
244246 let lastInterestHeight = valueOrElse(getInteger(this, (pool + keyLastInterestHeight)), height)
245247 $Tuple2(lastInterestHeight, lastInterest)
246248 }
247249
248250
249251 func getUserInterestInfo (pool,userAddrStr) = {
250252 let userLastInterest = getInteger(this, (((pool + "_") + userAddrStr) + keyUserLastInterest))
251253 let userShare = getInteger(this, (((pool + "_") + userAddrStr) + keyUserShareTokensLocked))
252254 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
253255 let userLastInterestValue = match userLastInterest {
254256 case userLastInterest: Int =>
255257 userLastInterest
256258 case _ =>
257259 lastInterest
258260 }
259261 let userShareTokensAmount = match userShare {
260262 case userShare: Int =>
261263 userShare
262264 case _ =>
263265 0
264266 }
265267 $Tuple2(userLastInterestValue, userShareTokensAmount)
266268 }
267269
268270
269271 func calcInterest (lastInterestHeight,rewardUpdateHeight,poolRewardUpdateHeight,lastInterest,currentRewardPerBlock,shareTokenLocked,previousRewardPerBlock,scaleValue,h) = if ((shareTokenLocked == 0))
270272 then 0
271273 else if ((poolRewardUpdateHeight != 0))
272274 then if (if ((rewardUpdateHeight > h))
273275 then (rewardUpdateHeight == poolRewardUpdateHeight)
274276 else false)
275277 then {
276278 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
277279 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
278280 }
279281 else if (if ((h > rewardUpdateHeight))
280282 then (rewardUpdateHeight != poolRewardUpdateHeight)
281283 else false)
282284 then {
283285 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
284286 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
285287 }
286288 else if (if (if ((h > rewardUpdateHeight))
287289 then (rewardUpdateHeight == poolRewardUpdateHeight)
288290 else false)
289291 then (lastInterestHeight > rewardUpdateHeight)
290292 else false)
291293 then {
292294 let reward = (currentRewardPerBlock * (h - lastInterestHeight))
293295 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
294296 }
295297 else {
296298 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
297299 let interestAfterUpdate = (lastInterest + fraction(rewardAfterLastInterestBeforeReawardUpdate, scaleValue, shareTokenLocked))
298300 let reward = (currentRewardPerBlock * (h - rewardUpdateHeight))
299301 (interestAfterUpdate + fraction(reward, scaleValue, shareTokenLocked))
300302 }
301303 else if ((rewardUpdateHeight > h))
302304 then {
303305 let reward = (previousRewardPerBlock * (h - lastInterestHeight))
304306 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
305307 }
306308 else if ((lastInterestHeight > rewardUpdateHeight))
307309 then {
308310 let reward = (currentRewardPerBlock * (h - lastInterestHeight))
309311 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
310312 }
311313 else {
312314 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
313315 let interestAfterUpdate = (lastInterest + fraction(rewardAfterLastInterestBeforeReawardUpdate, scaleValue, shareTokenLocked))
314316 let reward = (currentRewardPerBlock * (h - rewardUpdateHeight))
315317 (interestAfterUpdate + fraction(reward, scaleValue, shareTokenLocked))
316318 }
317319
318320
319321 func claimCalc (pool,userAddrStr,h) = {
320322 let shareAssetId = getShareAssetId(pool)
321323 let scaleValue = calcScaleValue(SWOP, shareAssetId)
322324 let shareTokenLocked = getTotalShareTokenLocked(pool)
323- let $t01302713092 = getLastInterestInfo(pool)
324- let lastInterestHeight = $t01302713092._1
325- let lastInterest = $t01302713092._2
326- let $t01309713209 = rewardInfo(pool)
327- let currentRewardPerBlock = $t01309713209._1
328- let rewardUpdateHeight = $t01309713209._2
329- let previousRewardPerBlock = $t01309713209._3
330- let poolRewardUpdateHeight = $t01309713209._4
331- let $t01321413298 = getUserInterestInfo(pool, userAddrStr)
332- let userLastInterest = $t01321413298._1
333- let userShareTokensAmount = $t01321413298._2
325+ let $t01309613161 = getLastInterestInfo(pool)
326+ let lastInterestHeight = $t01309613161._1
327+ let lastInterest = $t01309613161._2
328+ let $t01316613278 = rewardInfo(pool)
329+ let currentRewardPerBlock = $t01316613278._1
330+ let rewardUpdateHeight = $t01316613278._2
331+ let previousRewardPerBlock = $t01316613278._3
332+ let poolRewardUpdateHeight = $t01316613278._4
333+ let $t01328313367 = getUserInterestInfo(pool, userAddrStr)
334+ let userLastInterest = $t01328313367._1
335+ let userShareTokensAmount = $t01328313367._2
334336 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
335337 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
336338 let userNewInterest = currentInterest
337339 $Tuple4(userNewInterest, currentInterest, claimAmount, userShareTokensAmount)
338340 }
339341
340342
341343 func claimCalcForMigration (pool,userAddrStr,h) = {
342344 let shareAssetId = getShareAssetId(pool)
343345 let scaleValue = calcScaleValue(SWOP, shareAssetId)
344346 let shareTokenLocked = getTotalShareTokenLocked(pool)
345- let $t01402114086 = getLastInterestInfo(pool)
346- let lastInterestHeight = $t01402114086._1
347- let lastInterest = $t01402114086._2
348- let $t01409114203 = rewardInfo(pool)
349- let currentRewardPerBlock = $t01409114203._1
350- let rewardUpdateHeight = $t01409114203._2
351- let previousRewardPerBlock = $t01409114203._3
352- let poolRewardUpdateHeight = $t01409114203._4
353- let $t01420814292 = getUserInterestInfo(pool, userAddrStr)
354- let userLastInterest = $t01420814292._1
355- let userShareTokensAmount = $t01420814292._2
347+ let $t01409014155 = getLastInterestInfo(pool)
348+ let lastInterestHeight = $t01409014155._1
349+ let lastInterest = $t01409014155._2
350+ let $t01416014272 = rewardInfo(pool)
351+ let currentRewardPerBlock = $t01416014272._1
352+ let rewardUpdateHeight = $t01416014272._2
353+ let previousRewardPerBlock = $t01416014272._3
354+ let poolRewardUpdateHeight = $t01416014272._4
355+ let $t01427714361 = getUserInterestInfo(pool, userAddrStr)
356+ let userLastInterest = $t01427714361._1
357+ let userShareTokensAmount = $t01427714361._2
356358 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, poolRewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, scaleValue, h)
357359 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
358360 let userNewInterest = currentInterest
359361 $Tuple4(userNewInterest, currentInterest, claimAmount, userShareTokensAmount)
360362 }
361363
362364
363365 func calculateProtocolReward (pool) = {
364- let $t01479614861 = getLastInterestInfo(pool)
365- let lastInterestHeight = $t01479614861._1
366- let lastInterest = $t01479614861._2
367- let $t01486614977 = rewardInfo(pool)
368- let currentRewardPerBlock = $t01486614977._1
369- let rewardUpdateHeight = $t01486614977._2
370- let previousRewardPerBlock = $t01486614977._3
371- let poolRewardUpdateHeight = $t01486614977._4
366+ let $t01486514930 = getLastInterestInfo(pool)
367+ let lastInterestHeight = $t01486514930._1
368+ let lastInterest = $t01486514930._2
369+ let $t01493515046 = rewardInfo(pool)
370+ let currentRewardPerBlock = $t01493515046._1
371+ let rewardUpdateHeight = $t01493515046._2
372+ let previousRewardPerBlock = $t01493515046._3
373+ let poolRewardUpdateHeight = $t01493515046._4
372374 let shareTokenLocked = getTotalShareTokenLocked(pool)
373375 if (if ((shareTokenLocked == 0))
374376 then (poolRewardUpdateHeight == 0)
375377 else false)
376378 then if ((rewardUpdateHeight > height))
377379 then {
378380 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
379381 reward
380382 }
381383 else if ((lastInterestHeight > rewardUpdateHeight))
382384 then {
383385 let reward = (currentRewardPerBlock * (height - lastInterestHeight))
384386 reward
385387 }
386388 else {
387389 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
388390 let reward = (currentRewardPerBlock * (height - rewardUpdateHeight))
389391 (reward + rewardAfterLastInterestBeforeReawardUpdate)
390392 }
391393 else if (if ((shareTokenLocked == 0))
392394 then (poolRewardUpdateHeight != 0)
393395 else false)
394396 then if (if ((rewardUpdateHeight > height))
395397 then (rewardUpdateHeight == poolRewardUpdateHeight)
396398 else false)
397399 then {
398400 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
399401 reward
400402 }
401403 else if (if ((height > rewardUpdateHeight))
402404 then (rewardUpdateHeight != poolRewardUpdateHeight)
403405 else false)
404406 then {
405407 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
406408 reward
407409 }
408410 else if (if (if ((height > rewardUpdateHeight))
409411 then (rewardUpdateHeight == poolRewardUpdateHeight)
410412 else false)
411413 then (lastInterestHeight > rewardUpdateHeight)
412414 else false)
413415 then {
414416 let reward = (currentRewardPerBlock * (height - lastInterestHeight))
415417 reward
416418 }
417419 else {
418420 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
419421 let reward = (currentRewardPerBlock * (height - rewardUpdateHeight))
420422 (reward + rewardAfterLastInterestBeforeReawardUpdate)
421423 }
422424 else 0
423425 }
424426
425427
426428 func checkPmtAssetIdCorrect (pool,pmtAssetId) = {
427429 let poolShareAssetId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
428430 if ((pmtAssetId == poolShareAssetId))
429431 then true
430432 else false
431433 }
432434
433435
434436 func getUserSWOPClaimedAmount (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + user) + keyUserSWOPClaimedAmount)), 0)
435437
436438
437439 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
438440
439441
440442 @Callable(i)
441443 func init (earlyLP) = if (isDefined(getString(this, keySWOPid)))
442444 then throw("SWOP already initialized")
443445 else {
444446 let initAmount = 100000000000000
445447 let SWOPissue = Issue("SWOP", "SWOP protocol token", initAmount, 8, true)
446448 let SWOPid = calculateAssetId(SWOPissue)
447449 [BooleanEntry(keyActive, true), Issue("SWOP", "SWOP protocol token", initAmount, 8, true), StringEntry(keySWOPid, toBase58String(SWOPid))]
448450 }
449451
450452
451453
452454 @Callable(i)
453455 func initPoolShareFarming (pool) = if ((i.caller != this))
454456 then throw("Only the DApp itself can call this function")
455457 else {
456- let $t01794718050 = rewardInfo(pool)
457- let currentReward = $t01794718050._1
458- let rewardUpdateHeight = $t01794718050._2
459- let previousRewardPerBlock = $t01794718050._3
460- let poolRewardUpdateHeight = $t01794718050._4
458+ let $t01801618119 = rewardInfo(pool)
459+ let currentReward = $t01801618119._1
460+ let rewardUpdateHeight = $t01801618119._2
461+ let previousRewardPerBlock = $t01801618119._3
462+ let poolRewardUpdateHeight = $t01801618119._4
461463 [IntegerEntry((pool + keyShareTokensLocked), 0), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), height)]
462464 }
463465
464466
465467
466468 @Callable(i)
467469 func updatePoolInterest (pool) = if ((i.caller != wallet))
468470 then throw("Only the Admin itself can call this function")
469471 else if (!(isActive))
470472 then throw("DApp is inactive at this moment")
471473 else {
472- let $t01845918595 = claimCalc(pool, toString(adminIncreaseInterestAddress), height)
473- let userNewInterest = $t01845918595._1
474- let currentInterest = $t01845918595._2
475- let claimAmount = $t01845918595._3
476- let userShareTokensAmount = $t01845918595._4
477- let $t01860018703 = rewardInfo(pool)
478- let currentReward = $t01860018703._1
479- let rewardUpdateHeight = $t01860018703._2
480- let previousRewardPerBlock = $t01860018703._3
481- let poolRewardUpdateHeight = $t01860018703._4
474+ let $t01852818664 = claimCalc(pool, toString(adminIncreaseInterestAddress), height)
475+ let userNewInterest = $t01852818664._1
476+ let currentInterest = $t01852818664._2
477+ let claimAmount = $t01852818664._3
478+ let userShareTokensAmount = $t01852818664._4
479+ let $t01866918772 = rewardInfo(pool)
480+ let currentReward = $t01866918772._1
481+ let rewardUpdateHeight = $t01866918772._2
482+ let previousRewardPerBlock = $t01866918772._3
483+ let poolRewardUpdateHeight = $t01866918772._4
482484 [IntegerEntry((pool + keyLastInterest), userNewInterest), IntegerEntry((pool + keyLastInterestHeight), height)]
483485 }
484486
485487
486488
487489 @Callable(i)
488490 func lockShareTokens (pool) = {
489491 let userAddrStr = toString(i.caller)
490- let $t01893719012 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
491- let pmtAmount = $t01893719012._1
492- let pmtAssetId = $t01893719012._2
493- let $t01901719090 = getAssetInfo(pmtAssetId)
494- let pmtStrAssetId = $t01901719090._1
495- let pmtAssetName = $t01901719090._2
496- let pmtDecimals = $t01901719090._3
497- let $t01909519211 = claimCalc(pool, toString(i.caller), height)
498- let userNewInterest = $t01909519211._1
499- let currentInterest = $t01909519211._2
500- let claimAmount = $t01909519211._3
501- let userShareTokensAmount = $t01909519211._4
492+ let $t01900619081 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
493+ let pmtAmount = $t01900619081._1
494+ let pmtAssetId = $t01900619081._2
495+ let $t01908619159 = getAssetInfo(pmtAssetId)
496+ let pmtStrAssetId = $t01908619159._1
497+ let pmtAssetName = $t01908619159._2
498+ let pmtDecimals = $t01908619159._3
499+ let $t01916419280 = claimCalc(pool, toString(i.caller), height)
500+ let userNewInterest = $t01916419280._1
501+ let currentInterest = $t01916419280._2
502+ let claimAmount = $t01916419280._3
503+ let userShareTokensAmount = $t01916419280._4
502504 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
503505 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
504506 let totalShareAmount = getTotalShareTokenLocked(pool)
505507 let totalShareAmountNew = (totalShareAmount + pmtAmount)
506508 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
507509 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
508510 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)]
509511 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
510512 then true
511513 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
512514 then throw()
513515 else if ((0 >= pmtAmount))
514516 then throw("You can't lock token")
515517 else if (!(isActive))
516518 then throw("DApp is inactive at this moment")
517519 else if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
518520 then throw("Incorrect pmtAssetId")
519521 else if (if (isFirstHarvest(Address(fromBase58String(pool))))
520522 then (getHeightFirstHarvest(Address(fromBase58String(pool))) > height)
521523 else false)
522524 then {
523525 let harvestPeriod = ((((getHeightFirstHarvest(Address(fromBase58String(pool))) - startHeight) + 1) / periodLength) - 1)
524526 let amountOfVoting = split(getStringValue(votingAddress, (((userAddrStr + "_") + pool) + "_user_pool_struc")), "_")
525527 let amountPoolStract = split(getStringValue(votingAddress, (pool + "_pool_struc")), "_")
526528 let amountActiveVoteUserPoolStract = split(valueOrElse(getString(votingAddress, (((userAddrStr + "_") + pool) + kHarvestUserPoolActiveVoteStrucVoting)), ""), "_")
527529 let amountPoolActiveVoteStract = split(valueOrElse(getString(votingAddress, (pool + kHarvestPoolActiveVoteStrucVoting)), ""), "_")
528530 let userShareTokenLocked = userShareTokensAmount
529531 let userPoolActiveVote = if ((toString(currPeriod) == amountOfVoting[2]))
530532 then valueOrElse(parseInt(amountActiveVoteUserPoolStract[0]), 0)
531533 else valueOrElse(parseInt(amountOfVoting[1]), 0)
532534 let poolActiveVote = if ((toString(currPeriod) == amountPoolStract[2]))
533535 then valueOrElse(parseInt(amountPoolActiveVoteStract[0]), 0)
534536 else valueOrElse(parseInt(amountPoolStract[1]), 0)
535537 let protocolReward = calculateProtocolReward(pool)
536538 if ((userPoolActiveVote != 0))
537539 then {
538540 let limitShareToken = getShareLimitToken(addressFromStringValue(pool))
539541 let shareToken = (fraction(limitShareToken, userPoolActiveVote, poolActiveVote) - userShareTokenLocked)
540542 if (if ((size(amountActiveVoteUserPoolStract) > 1))
541543 then (valueOrElse(parseInt(amountActiveVoteUserPoolStract[1]), 0) >= harvestPeriod)
542544 else false)
543545 then throw("You can't share token")
544546 else if ((pmtAmount > limitShareToken))
545547 then throw(("You can't share token more than " + toString(limitShareToken)))
546548 else if ((shareToken > 0))
547549 then if ((fraction(99, (accountBalance(pmtAssetId) + pmtAmount), 100) > totalShareAmountNew))
548550 then throw("Balance of share-token is greater than totalAmount")
549551 else if ((totalShareAmount == 0))
550552 then (baseEntry ++ [Reissue(SWOP, protocolReward, true), ScriptTransfer(wallet, protocolReward, SWOP)])
551553 else if ((shareToken >= pmtAmount))
552554 then baseEntry
553555 else throw(("Your maximum share token is " + toString(shareToken)))
554556 else throw("You can't share token")
555557 }
556558 else throw("Your amount of token less than 0")
557559 }
558560 else baseEntry
559561 }
560562
561563
562564
563565 @Callable(i)
564566 func withdrawShareTokens (pool,shareTokensWithdrawAmount) = {
565567 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
566- let $t02374623862 = claimCalc(pool, toString(i.caller), height)
567- let userNewInterest = $t02374623862._1
568- let currentInterest = $t02374623862._2
569- let claimAmount = $t02374623862._3
570- let userShareTokensAmount = $t02374623862._4
568+ let $t02381523931 = claimCalc(pool, toString(i.caller), height)
569+ let userNewInterest = $t02381523931._1
570+ let currentInterest = $t02381523931._2
571+ let claimAmount = $t02381523931._3
572+ let userShareTokensAmount = $t02381523931._4
571573 let userShareAmountNew = (userShareTokensAmount - shareTokensWithdrawAmount)
572574 let availableFundsNew = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
573575 let totalShareAmount = getTotalShareTokenLocked(pool)
574576 let totalShareAmountNew = (totalShareAmount - shareTokensWithdrawAmount)
575577 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
576578 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
577579 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
578580 then true
579581 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
580582 then throw()
581583 else if ((shareTokensWithdrawAmount > userShareTokensAmount))
582584 then throw("Withdraw amount more then user locked amount")
583585 else if (!(isActive))
584586 then throw("DApp is inactive at this moment")
585587 else if ((shareTokensWithdrawAmount > userShareTokensAmount))
586588 then throw("Withdraw amount more then user locked amount")
587589 else if ((fraction(99, (accountBalance(shareTokensId) - shareTokensWithdrawAmount), 100) > totalShareAmountNew))
588590 then throw("Balance of share-token is greater than totalAmount")
589591 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)]
590592 }
591593
592594
593595
594596 @Callable(i)
595597 func egg0 (pool,users,migrationHeight) = if (if ((pool != "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
596598 then (pool != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
597599 else false)
598600 then throw()
599- else {
600- func updateUser (accum,u) = {
601- let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
602- if ((r == r))
603- then (accum :+ BooleanEntry((u + "_migration"), true))
604- else throw("Strict value is not equal to itself.")
601+ else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
602+ then throw("Only admin can call this function")
603+ else {
604+ func updateUser (accum,u) = {
605+ let r = invoke(this, "egg1", [pool, u, migrationHeight], nil)
606+ if ((r == r))
607+ then (accum :+ BooleanEntry((u + "_migration"), true))
608+ else throw("Strict value is not equal to itself.")
609+ }
610+
611+ let $list2643726468 = users
612+ let $size2643726468 = size($list2643726468)
613+ let $acc02643726468 = nil
614+ if (($size2643726468 == 0))
615+ then $acc02643726468
616+ else {
617+ let $acc12643726468 = updateUser($acc02643726468, $list2643726468[0])
618+ if (($size2643726468 == 1))
619+ then $acc12643726468
620+ else {
621+ let $acc22643726468 = updateUser($acc12643726468, $list2643726468[1])
622+ if (($size2643726468 == 2))
623+ then $acc22643726468
624+ else {
625+ let $acc32643726468 = updateUser($acc22643726468, $list2643726468[2])
626+ if (($size2643726468 == 3))
627+ then $acc32643726468
628+ else {
629+ let $acc42643726468 = updateUser($acc32643726468, $list2643726468[3])
630+ if (($size2643726468 == 4))
631+ then $acc42643726468
632+ else {
633+ let $acc52643726468 = updateUser($acc42643726468, $list2643726468[4])
634+ if (($size2643726468 == 5))
635+ then $acc52643726468
636+ else {
637+ let $acc62643726468 = updateUser($acc52643726468, $list2643726468[5])
638+ if (($size2643726468 == 6))
639+ then $acc62643726468
640+ else {
641+ let $acc72643726468 = updateUser($acc62643726468, $list2643726468[6])
642+ if (($size2643726468 == 7))
643+ then $acc72643726468
644+ else {
645+ let $acc82643726468 = updateUser($acc72643726468, $list2643726468[7])
646+ if (($size2643726468 == 8))
647+ then $acc82643726468
648+ else {
649+ let $acc92643726468 = updateUser($acc82643726468, $list2643726468[8])
650+ if (($size2643726468 == 9))
651+ then $acc92643726468
652+ else {
653+ let $acc102643726468 = updateUser($acc92643726468, $list2643726468[9])
654+ if (($size2643726468 == 10))
655+ then $acc102643726468
656+ else {
657+ let $acc112643726468 = updateUser($acc102643726468, $list2643726468[10])
658+ if (($size2643726468 == 11))
659+ then $acc112643726468
660+ else {
661+ let $acc122643726468 = updateUser($acc112643726468, $list2643726468[11])
662+ if (($size2643726468 == 12))
663+ then $acc122643726468
664+ 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+ }
832+ }
833+ }
834+ }
835+ }
836+ }
837+ }
838+ }
839+ }
840+ }
841+ }
842+ }
843+ }
844+ }
605845 }
606846
607- let $list2620926240 = users
608- let $size2620926240 = size($list2620926240)
609- let $acc02620926240 = nil
610- if (($size2620926240 == 0))
611- then $acc02620926240
612- else {
613- let $acc12620926240 = updateUser($acc02620926240, $list2620926240[0])
614- if (($size2620926240 == 1))
615- then $acc12620926240
616- else {
617- let $acc22620926240 = updateUser($acc12620926240, $list2620926240[1])
618- if (($size2620926240 == 2))
619- then $acc22620926240
620- else {
621- let $acc32620926240 = updateUser($acc22620926240, $list2620926240[2])
622- if (($size2620926240 == 3))
623- then $acc32620926240
624- else {
625- let $acc42620926240 = updateUser($acc32620926240, $list2620926240[3])
626- if (($size2620926240 == 4))
627- then $acc42620926240
628- else {
629- let $acc52620926240 = updateUser($acc42620926240, $list2620926240[4])
630- if (($size2620926240 == 5))
631- then $acc52620926240
632- else {
633- let $acc62620926240 = updateUser($acc52620926240, $list2620926240[5])
634- if (($size2620926240 == 6))
635- then $acc62620926240
636- else {
637- let $acc72620926240 = updateUser($acc62620926240, $list2620926240[6])
638- if (($size2620926240 == 7))
639- then $acc72620926240
640- else {
641- let $acc82620926240 = updateUser($acc72620926240, $list2620926240[7])
642- if (($size2620926240 == 8))
643- then $acc82620926240
644- else {
645- let $acc92620926240 = updateUser($acc82620926240, $list2620926240[8])
646- if (($size2620926240 == 9))
647- then $acc92620926240
648- else {
649- let $acc102620926240 = updateUser($acc92620926240, $list2620926240[9])
650- if (($size2620926240 == 10))
651- then $acc102620926240
652- else {
653- let $acc112620926240 = updateUser($acc102620926240, $list2620926240[10])
654- if (($size2620926240 == 11))
655- then $acc112620926240
656- else {
657- let $acc122620926240 = updateUser($acc112620926240, $list2620926240[11])
658- if (($size2620926240 == 12))
659- then $acc122620926240
660- else {
661- let $acc132620926240 = updateUser($acc122620926240, $list2620926240[12])
662- if (($size2620926240 == 13))
663- then $acc132620926240
664- else {
665- let $acc142620926240 = updateUser($acc132620926240, $list2620926240[13])
666- if (($size2620926240 == 14))
667- then $acc142620926240
668- else {
669- let $acc152620926240 = updateUser($acc142620926240, $list2620926240[14])
670- if (($size2620926240 == 15))
671- then $acc152620926240
672- else {
673- let $acc162620926240 = updateUser($acc152620926240, $list2620926240[15])
674- if (($size2620926240 == 16))
675- then $acc162620926240
676- else {
677- let $acc172620926240 = updateUser($acc162620926240, $list2620926240[16])
678- if (($size2620926240 == 17))
679- then $acc172620926240
680- else {
681- let $acc182620926240 = updateUser($acc172620926240, $list2620926240[17])
682- if (($size2620926240 == 18))
683- then $acc182620926240
684- else {
685- let $acc192620926240 = updateUser($acc182620926240, $list2620926240[18])
686- if (($size2620926240 == 19))
687- then $acc192620926240
688- else {
689- let $acc202620926240 = updateUser($acc192620926240, $list2620926240[19])
690- if (($size2620926240 == 20))
691- then $acc202620926240
692- else {
693- let $acc212620926240 = updateUser($acc202620926240, $list2620926240[20])
694- if (($size2620926240 == 21))
695- then $acc212620926240
696- else {
697- let $acc222620926240 = updateUser($acc212620926240, $list2620926240[21])
698- if (($size2620926240 == 22))
699- then $acc222620926240
700- else {
701- let $acc232620926240 = updateUser($acc222620926240, $list2620926240[22])
702- if (($size2620926240 == 23))
703- then $acc232620926240
704- else {
705- let $acc242620926240 = updateUser($acc232620926240, $list2620926240[23])
706- if (($size2620926240 == 24))
707- then $acc242620926240
708- else {
709- let $acc252620926240 = updateUser($acc242620926240, $list2620926240[24])
710- if (($size2620926240 == 25))
711- then $acc252620926240
712- else {
713- let $acc262620926240 = updateUser($acc252620926240, $list2620926240[25])
714- if (($size2620926240 == 26))
715- then $acc262620926240
716- else {
717- let $acc272620926240 = updateUser($acc262620926240, $list2620926240[26])
718- if (($size2620926240 == 27))
719- then $acc272620926240
720- else {
721- let $acc282620926240 = updateUser($acc272620926240, $list2620926240[27])
722- if (($size2620926240 == 28))
723- then $acc282620926240
724- else {
725- let $acc292620926240 = updateUser($acc282620926240, $list2620926240[28])
726- if (($size2620926240 == 29))
727- then $acc292620926240
728- else {
729- let $acc302620926240 = updateUser($acc292620926240, $list2620926240[29])
730- if (($size2620926240 == 30))
731- then $acc302620926240
732- else {
733- let $acc312620926240 = updateUser($acc302620926240, $list2620926240[30])
734- if (($size2620926240 == 31))
735- then $acc312620926240
736- else {
737- let $acc322620926240 = updateUser($acc312620926240, $list2620926240[31])
738- if (($size2620926240 == 32))
739- then $acc322620926240
740- else {
741- let $acc332620926240 = updateUser($acc322620926240, $list2620926240[32])
742- if (($size2620926240 == 33))
743- then $acc332620926240
744- else {
745- let $acc342620926240 = updateUser($acc332620926240, $list2620926240[33])
746- if (($size2620926240 == 34))
747- then $acc342620926240
748- else {
749- let $acc352620926240 = updateUser($acc342620926240, $list2620926240[34])
750- if (($size2620926240 == 35))
751- then $acc352620926240
752- else {
753- let $acc362620926240 = updateUser($acc352620926240, $list2620926240[35])
754- if (($size2620926240 == 36))
755- then $acc362620926240
756- else {
757- let $acc372620926240 = updateUser($acc362620926240, $list2620926240[36])
758- if (($size2620926240 == 37))
759- then $acc372620926240
760- else {
761- let $acc382620926240 = updateUser($acc372620926240, $list2620926240[37])
762- if (($size2620926240 == 38))
763- then $acc382620926240
764- else {
765- let $acc392620926240 = updateUser($acc382620926240, $list2620926240[38])
766- if (($size2620926240 == 39))
767- then $acc392620926240
768- else {
769- let $acc402620926240 = updateUser($acc392620926240, $list2620926240[39])
770- if (($size2620926240 == 40))
771- then $acc402620926240
772- else {
773- let $acc412620926240 = updateUser($acc402620926240, $list2620926240[40])
774- if (($size2620926240 == 41))
775- then $acc412620926240
776- else {
777- let $acc422620926240 = updateUser($acc412620926240, $list2620926240[41])
778- if (($size2620926240 == 42))
779- then $acc422620926240
780- else {
781- let $acc432620926240 = updateUser($acc422620926240, $list2620926240[42])
782- if (($size2620926240 == 43))
783- then $acc432620926240
784- else {
785- let $acc442620926240 = updateUser($acc432620926240, $list2620926240[43])
786- if (($size2620926240 == 44))
787- then $acc442620926240
788- else {
789- let $acc452620926240 = updateUser($acc442620926240, $list2620926240[44])
790- if (($size2620926240 == 45))
791- then $acc452620926240
792- else {
793- let $acc462620926240 = updateUser($acc452620926240, $list2620926240[45])
794- if (($size2620926240 == 46))
795- then $acc462620926240
796- else {
797- let $acc472620926240 = updateUser($acc462620926240, $list2620926240[46])
798- if (($size2620926240 == 47))
799- then $acc472620926240
800- else {
801- let $acc482620926240 = updateUser($acc472620926240, $list2620926240[47])
802- if (($size2620926240 == 48))
803- then $acc482620926240
804- else {
805- let $acc492620926240 = updateUser($acc482620926240, $list2620926240[48])
806- if (($size2620926240 == 49))
807- then $acc492620926240
808- else {
809- let $acc502620926240 = updateUser($acc492620926240, $list2620926240[49])
810- if (($size2620926240 == 50))
811- then $acc502620926240
812- else {
813- let $acc512620926240 = updateUser($acc502620926240, $list2620926240[50])
814- if (($size2620926240 == 51))
815- then $acc512620926240
816- else {
817- let $acc522620926240 = updateUser($acc512620926240, $list2620926240[51])
818- if (($size2620926240 == 52))
819- then $acc522620926240
820- else {
821- let $acc532620926240 = updateUser($acc522620926240, $list2620926240[52])
822- if (($size2620926240 == 53))
823- then $acc532620926240
824- else {
825- let $acc542620926240 = updateUser($acc532620926240, $list2620926240[53])
826- if (($size2620926240 == 54))
827- then $acc542620926240
828- else {
829- let $acc552620926240 = updateUser($acc542620926240, $list2620926240[54])
830- if (($size2620926240 == 55))
831- then $acc552620926240
832- else {
833- let $acc562620926240 = updateUser($acc552620926240, $list2620926240[55])
834- throw("List size exceed 55")
835- }
836- }
837- }
838- }
839- }
840- }
841- }
842- }
843- }
844- }
845- }
846- }
847- }
848- }
849- }
850- }
851- }
852- }
853- }
854- }
855- }
856- }
857- }
858- }
859- }
860- }
861- }
862- }
863- }
864- }
865- }
866- }
867- }
868- }
869- }
870- }
871- }
872- }
873- }
874- }
875- }
876- }
877- }
878- }
879- }
880- }
881- }
882- }
883- }
884- }
885- }
886- }
887- }
888- }
889- }
890- }
847+
848+
849+@Callable(i)
850+func egg1 (pool,u,migrationHeight) = if ((i.caller != this))
851+ then throw("Only contract itself can invoke this function")
852+ else {
853+ 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
859+ let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
860+ let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
861+ let userClaimedAmountNew = (userClaimedAmount + claimAmount)
862+ 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))]
891865 }
892866
893867
894868
895869 @Callable(i)
896-func egg1 (pool,u,migrationHeight) = {
897- let shareTokenMultiplyer = 1000
898- let $t02635726469 = claimCalc(pool, u, migrationHeight)
899- let userNewInterest = $t02635726469._1
900- let currentInterest = $t02635726469._2
901- let claimAmount = $t02635726469._3
902- let userShareTokensAmount = $t02635726469._4
903- let availableFundsNew = (userAvailableSWOP(pool, u) + claimAmount)
904- let userClaimedAmount = getUserSWOPClaimedAmount(pool, u)
905- let userClaimedAmountNew = (userClaimedAmount + claimAmount)
906- let userShareTokensAmountNew = (userShareTokensAmount * shareTokenMultiplyer)
907- let totalAmountNewShareTokenLocked = valueOrElse(getInteger(this, ((pool + "_") + "total_amount_new_sharetoken_locked")), 0)
908-[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))]
909- }
910-
911-
912-
913-@Callable(i)
914-func updateTotalShareTokensLocked (pool,migrationHeight) = {
915- let shareTokenMultiplyer = 1000
916- let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
917- let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
918- if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
919- then throw("New total amount share tockens != old total amount")
920- else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight)]
921- }
870+func updateTotalShareTokensLocked (pool,migrationHeight) = if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, admStaking], i.callerPublicKey)))
871+ then throw("Only admin can call this function")
872+ else {
873+ let shareTokenMultiplyer = 1000
874+ let totalAmountShareTokensLockedBefore = (getIntegerValue(this, (pool + keyShareTokensLocked)) * 1000)
875+ let totalAmountShareTokensLockedNew = getIntegerValue(this, ((pool + "_") + "total_amount_new_sharetoken_locked"))
876+ if ((totalAmountShareTokensLockedBefore != totalAmountShareTokensLockedNew))
877+ then throw("New total amount share tockens != old total amount")
878+ else [IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyLastInterestHeight), migrationHeight)]
879+ }
922880
923881
924882
925883 @Callable(i)
926884 func claim (pool) = {
927885 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
928886 let shareTokenLocked = getTotalShareTokenLocked(pool)
929- let $t02833028395 = getLastInterestInfo(pool)
930- let lastInterestHeight = $t02833028395._1
931- let lastInterest = $t02833028395._2
932- let $t02840028512 = rewardInfo(pool)
933- let currentRewardPerBlock = $t02840028512._1
934- let rewardUpdateHeight = $t02840028512._2
935- let previousRewardPerBlock = $t02840028512._3
936- let poolRewardUpdateHeight = $t02840028512._4
937- let $t02851728633 = claimCalc(pool, toString(i.caller), height)
938- let userNewInterest = $t02851728633._1
939- let currentInterest = $t02851728633._2
940- let claimAmount = $t02851728633._3
941- let userShareTokensAmount = $t02851728633._4
887+ let $t02881528880 = getLastInterestInfo(pool)
888+ let lastInterestHeight = $t02881528880._1
889+ let lastInterest = $t02881528880._2
890+ let $t02888528997 = rewardInfo(pool)
891+ let currentRewardPerBlock = $t02888528997._1
892+ let rewardUpdateHeight = $t02888528997._2
893+ let previousRewardPerBlock = $t02888528997._3
894+ let poolRewardUpdateHeight = $t02888528997._4
895+ let $t02900229118 = claimCalc(pool, toString(i.caller), height)
896+ let userNewInterest = $t02900229118._1
897+ let currentInterest = $t02900229118._2
898+ let claimAmount = $t02900229118._3
899+ let userShareTokensAmount = $t02900229118._4
942900 let availableFund = (userAvailableSWOP(pool, toString(i.caller)) + claimAmount)
943901 let userClaimedAmount = getUserSWOPClaimedAmount(pool, toString(i.caller))
944902 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
945903 if (if ((pool == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
946904 then true
947905 else (pool == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
948906 then throw()
949907 else if ((availableFund == 0))
950908 then throw("You have 0 available SWOP")
951909 else if (!(isActive))
952910 then throw("DApp is inactive at this moment")
953911 else if ((availableFund == 0))
954912 then throw("You have 0 available SWOP")
955913 else if ((fraction(99, accountBalance(shareTokensId), 100) > shareTokenLocked))
956914 then throw("Balance of share-token is greater than totalAmount")
957915 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)]
958916 }
959917
960918
961919
962920 @Callable(i)
963921 func shutdown () = if (!(isActive))
964922 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
965923 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
966924 then throw("Only admin can call this function")
967925 else suspend("Paused by admin")
968926
969927
970928
971929 @Callable(i)
972930 func activate () = if (isActive)
973931 then throw("DApp is already active")
974932 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
975933 then throw("Only admin can call this function")
976934 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
977935
978936
979937 @Verifier(tx)
980938 func verify () = match tx {
939+ case inv: InvokeScriptTransaction =>
940+ let callEgg1 = if ((inv.dApp == this))
941+ then (inv.function == "egg1")
942+ else false
943+ let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
944+ then true
945+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
946+ then true
947+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
948+ then true
949+ else sigVerify(tx.bodyBytes, tx.proofs[0], admStaking)
950+ if (callEgg1)
951+ then signedByAdmin
952+ else false
981953 case _ =>
982954 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
983955 then 1
984956 else 0
985957 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
986958 then 1
987959 else 0
988960 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
989961 then 1
990962 else 0
991963 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
992964 }
993965

github/deemru/w8io/169f3d6 
154.83 ms