tx · Fte7wojy8nEuiZ6HfL4AenCu4ErHt6wVBmV7X7Szsy9Z

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.09.16 14:54 [1705569] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "Fte7wojy8nEuiZ6HfL4AenCu4ErHt6wVBmV7X7Szsy9Z", "fee": 1400000, "feeAssetId": null, "timestamp": 1631793308416, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "4hWLnZ9yBzFaNHVdukRXCnMgo1gxLV5dvcsaR8cofAEaukfJVin1WSpfxbMWShFXLUunftUZccWupxsZVNb7mVfw", "4oPXeoZm3b4DKNVUgqZURZ9QzxZpYG26BRBfmCMieX4S3n7ASydSLomb3LDW85mhAq4dLRhHcvF8xwXpteTY1g3n" ], "script": "base64:AAIEAAAAAAAAEKIIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgSABIAGhIKAmExEgxhZG1pblB1YktleTEaEgoCYTISDGFkbWluUHViS2V5MhoSCgJhMxIMYWRtaW5QdWJLZXkzGhoKAmE0EhRrZXlTaGFyZVRva2Vuc0xvY2tlZBoRCgJhNRILa1NoYXJlTGltaXQaDwoCYTYSCWtleUFjdGl2ZRoOCgJhNxIIa2V5Q2F1c2UaIgoCYTgSHGtleVJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQaIwoCYTkSHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzGhsKAmIxEhVrZXlIZWlnaHRQb29sRnJhY3Rpb24aIwoCYjISHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50GiQKAmIzEh5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMaGwoCYjQSFWtleVJld2FyZFVwZGF0ZUhlaWdodBoVCgJiNRIPa2V5TGFzdEludGVyZXN0GhsKAmI2EhVrZXlMYXN0SW50ZXJlc3RIZWlnaHQaHgoCYjcSGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZBoZCgJiOBITa2V5VXNlckxhc3RJbnRlcmVzdBoPCgJiORIJa2V5U1dPUGlkGh4KAmMxEhhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQaIgoCYzISHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQaFgoCYzMSEGtleUF2YWlsYWJsZVNXT1AaGwoCYzQSFWtleUZhcm1pbmdTdGFydEhlaWdodBoMCgJjNRIGa2V5QVBZGhwKAmM2EhZrUHJldmlvdXNUb3RhbFZvdGVTV09QGhkKAmM3EhNrZXlTd29wWWVhckVtaXNzaW9uGhUKAmM4Eg9rZXlCYWxhbmNlY3BtbUEaFQoCYzkSD2tleUJhbGFuY2VjcG1tQhonCgJkMRIha0hhcnZlc3RQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nGisKAmQyEiVrSGFydmVzdFVzZXJQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nGh8KAmQzEhlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0GhEKAmQ0EgtrZXlBc3NldElkQRoRCgJkNRILa2V5QXNzZXRJZEIaGwoCZDYSFWtleUZpcnN0SGFydmVzdEhlaWdodBoZCgJkNxITa2V5Zmlyc3RIYXJ2ZXN0Q3BtbRoUCgJkOBIOa2V5VGVtcFByZXZTdW0aEwoCZDkSDWtleVRlbXBDdXJTdW0aFwoCZTESEWdvdmVybmFuY2VBZGRyZXNzGgwKAmUyEgZ3YWxsZXQaEwoCZTMSDXZvdGluZ0FkZHJlc3MaIgoCZTQSHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MaFAoCZTUSDm9uZVdlZWtJbkJsb2NrGhQKAmU2Eg50b3RhbFZvdGVTaGFyZRoRCgJlNxILc2NhbGVWYWx1ZTEaEQoCZTgSC3NjYWxlVmFsdWUzGhEKAmU5EgtzY2FsZVZhbHVlNRoRCgJmMRILc2NhbGVWYWx1ZTYaEQoCZjISC3NjYWxlVmFsdWU4GhIKAmYzEgxzY2FsZVZhbHVlMTEaEQoCZjQSC3N0ckFzc2V0SWRBGgoKAmY1EgRwb29sGhEKAmY2EgtzdHJBc3NldElkQhoOCgJmNxIIYXNzZXRJZEEaDgoCZjgSCGFzc2V0SWRCGhEKAmY5EgtrQmFzZVBlcmlvZBoTCgJnMRINa1BlcmlvZExlbmd0aBoSCgJnMhIMa1N0YXJ0SGVpZ2h0GhkKAmczEhNrRmlyc3RIYXJ2ZXN0SGVpZ2h0GhwKAmc0EhZrRHVyYXRpb25GdWxsVm90ZVBvd2VyGhMKAmc1Eg1rTWluVm90ZVBvd2VyGhAKAmc2EgpiYXNlUGVyaW9kGhEKAmc3EgtzdGFydEhlaWdodBoSCgJnOBIMcGVyaW9kTGVuZ3RoGhsKAmc5EhVkdXJhdGlvbkZ1bGxWb3RlUG93ZXIaEgoCaDESDG1pblZvdGVQb3dlchoOCgJoMhIIaXNBY3RpdmUaEAoCaDMSCmN1cnJQZXJpb2QaEwoCaDQSDWdldExpbWl0VG9rZW4aCQoCaDUSA0FQWRoWCgJoNhIQU3dvcFllYXJFbWlzc2lvbhoQCgJoNxIKYXNzZXROYW1lQRoNCgJoOBIHJG1hdGNoMBoICgJoORICaWQaCwoCaTESBXdhdmVzGhAKAmkyEgphc3NldE5hbWVCGgoKAmkzEgRTV09QGhQKAmk0Eg5pc0ZpcnN0SGFydmVzdBobCgJpNRIVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0GhEKAmk2EgtnZXRCYWxhbmNlQRoRCgJpNxILZ2V0QmFsYW5jZUIaGAoCaTgSEmdldFNoYXJlTGltaXRUb2tlbhoeCgJpORIYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkGhUKAmoxEg9nZXRTaGFyZUFzc2V0SWQaFAoCajISDmFjY291bnRCYWxhbmNlGg0KAmozEgdhc3NldElkGhIKAmo0EgxnZXRBc3NldEluZm8aDgoCajUSCHN0cmluZ0lkGgoKAmo2EgRpbmZvGhQKAmo3Eg5jYWxjU2NhbGVWYWx1ZRoOCgJqOBIIYXNzZXRJZDEaDgoCajkSCGFzc2V0SWQyGhYKAmsxEhBhc3NldElkMURlY2ltYWxzGhYKAmsyEhBhc3NldElkMkRlY2ltYWxzGhEKAmszEgtzY2FsZURpZ2l0cxoXCgJrNBIRdXNlckF2YWlsYWJsZVNXT1AaCgoCazUSBHVzZXIaEAoCazYSCnJld2FyZEluZm8aIAoCazcSGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50GiEKAms4Eht0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMaHwoCazkSGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQaGAoCbDESEnJld2FyZFVwZGF0ZUhlaWdodBocCgJsMhIWcG9vbFJld2FyZFVwZGF0ZUhlaWdodBogCgJsMxIacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMaFwoCbDQSEXJld2FyZFBvb2xDdXJyZW50GhgKAmw1EhJyZXdhcmRQb29sUHJldmlvdXMaGQoCbDYSE2dldExhc3RJbnRlcmVzdEluZm8aEgoCbDcSDGxhc3RJbnRlcmVzdBoYCgJsOBISbGFzdEludGVyZXN0SGVpZ2h0GhkKAmw5EhNnZXRVc2VySW50ZXJlc3RJbmZvGhEKAm0xEgt1c2VyQWRkcmVzcxoWCgJtMhIQdXNlckxhc3RJbnRlcmVzdBoPCgJtMxIJdXNlclNoYXJlGhsKAm00EhV1c2VyTGFzdEludGVyZXN0VmFsdWUaGwoCbTUSFXVzZXJTaGFyZVRva2Vuc0Ftb3VudBoSCgJtNhIMY2FsY0ludGVyZXN0GhsKAm03EhVjdXJyZW50UmV3YXJkUGVyQmxvY2saFgoCbTgSEHNoYXJlVG9rZW5Mb2NrZWQaHAoCbTkSFnByZXZpb3VzUmV3YXJkUGVyQmxvY2saEgoCbjESDHNoYXJlQXNzZXRJZBoQCgJuMhIKc2NhbGVWYWx1ZRoPCgJuMxIJcG10QW1vdW50GgwKAm40EgZyZXdhcmQaMAoCbjUSKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZRoZCgJuNhITaW50ZXJlc3RBZnRlclVwZGF0ZRoPCgJuNxIJY2xhaW1DYWxjGgwKAm44EgZjYWxsZXIaEwoCbjkSDSR0MDEzMTUzMTMyMTgaEwoCbzESDSR0MDEzMjIzMTMzMzUaEwoCbzISDSR0MDEzMzQwMTM0MTkaFQoCbzMSD2N1cnJlbnRJbnRlcmVzdBoRCgJvNBILY2xhaW1BbW91bnQaFQoCbzUSD3VzZXJOZXdJbnRlcmVzdBodCgJvNhIXY2FsY3VsYXRlUHJvdG9jb2xSZXdhcmQaEwoCbzcSDSR0MDEzOTM3MTQwMDIaEwoCbzgSDSR0MDE0MDA3MTQxMTgaHAoCbzkSFmNoZWNrUG10QXNzZXRJZENvcnJlY3QaEAoCcDESCnBtdEFzc2V0SWQaFgoCcDISEHBvb2xTaGFyZUFzc2V0SWQaHgoCcDMSGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudBoNCgJwNBIHc3VzcGVuZBoLCgJwNRIFY2F1c2UaBwoCcDYSAWkaDQoCcDcSB2Vhcmx5TFAaEAoCcDgSCmluaXRBbW91bnQaDwoCcDkSCVNXT1Bpc3N1ZRoMCgJxMRIGU1dPUGlkGhMKAnEyEg0kdDAxNzEwMDE3MjAzGhMKAnEzEg1jdXJyZW50UmV3YXJkGhMKAnE0Eg0kdDAxNzYxMjE3NzMyGhMKAnE1Eg0kdDAxNzczNzE3ODQwGhMKAnE2Eg0kdDAxODAzMjE4MTA3GhMKAnE3Eg0kdDAxODExMjE4MTg1GhMKAnE4Eg1wbXRTdHJBc3NldElkGhIKAnE5EgxwbXRBc3NldE5hbWUaEQoCcjESC3BtdERlY2ltYWxzGhMKAnIyEg0kdDAxODE5MDE4Mjk4GhgKAnIzEhJ1c2VyU2hhcmVBbW91bnROZXcaFwoCcjQSEWF2YWlsYWJsZUZ1bmRzTmV3GhYKAnI1EhB0b3RhbFNoYXJlQW1vdW50GhkKAnI2EhN0b3RhbFNoYXJlQW1vdW50TmV3GhcKAnI3EhF1c2VyQ2xhaW1lZEFtb3VudBoaCgJyOBIUdXNlckNsYWltZWRBbW91bnROZXcaDwoCcjkSCWJhc2VFbnRyeRoTCgJzMRINaGFydmVzdFBlcmlvZBoUCgJzMhIOYW1vdW50T2ZWb3RpbmcaFgoCczMSEGFtb3VudFBvb2xTdHJhY3QaJAoCczQSHmFtb3VudEFjdGl2ZVZvdGVVc2VyUG9vbFN0cmFjdBogCgJzNRIaYW1vdW50UG9vbEFjdGl2ZVZvdGVTdHJhY3QaGgoCczYSFHVzZXJTaGFyZVRva2VuTG9ja2VkGhgKAnM3EhJ1c2VyUG9vbEFjdGl2ZVZvdGUaFAoCczgSDnBvb2xBY3RpdmVWb3RlGhQKAnM5Eg5wcm90b2NvbFJld2FyZBoVCgJ0MRIPbGltaXRTaGFyZVRva2VuGhAKAnQyEgpzaGFyZVRva2VuGh8KAnQzEhlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50GhMKAnQ0Eg1zaGFyZVRva2Vuc0lkGhMKAnQ1Eg0kdDAyMjc0ODIyODQ4GhMKAnQ2Eg0kdDAyNDg1NTI0OTIwGhMKAnQ3Eg0kdDAyNDkyNTI1MDM3GhMKAnQ4Eg0kdDAyNTA0MjI1MTQyGhMKAnQ5Eg1hdmFpbGFibGVGdW5kGggKAnUxEgJ0eBoMCgJ1MhIGdmVyaWZ5GhgKAnUzEhJhZG1pblB1YktleTFTaWduZWQaGAoCdTQSEmFkbWluUHViS2V5MlNpZ25lZBoYCgJ1NRISYWRtaW5QdWJLZXkzU2lnbmVkAAAAWwAAAAACYTEBAAAAIOKnjEA7hs0X5rRLh9vloYOsriqh7DcuXmUFE/K17O8EAAAAAAJhMgEAAAAg6jisuQG1iDxyo54oPYHUGiJlERON346DjXz9V/GbEVkAAAAAAmEzAQAAACCnNJaCsKPJx10yYgF/O0UnTzPqvzbEAc8Qt3RwqifMbgAAAAACYTQCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAJhNQIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAACYTYCAAAABmFjdGl2ZQAAAAACYTcCAAAADnNodXRkb3duX2NhdXNlAAAAAAJhOAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAAmE5AgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAAmIxAgAAABpfcG9vbF9yZXdhcmRfdXBkYXRlX2hlaWdodAAAAAACYjICAAAAHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAAAAACYjMCAAAAH3RvdGFsX3Jld2FyZF9wZXJfYmxvY2tfcHJldmlvdXMAAAAAAmI0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAACYjUCAAAADl9sYXN0X2ludGVyZXN0AAAAAAJiNgIAAAAVX2xhc3RfaW50ZXJlc3RfaGVpZ2h0AAAAAAJiNwIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAAmI4AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAACYjkCAAAAB1NXT1BfaWQAAAAAAmMxAgAAABRfU1dPUF9jbGFpbWVkX2Ftb3VudAAAAAACYzICAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAAmMzAgAAAA9fYXZhaWxhYmxlX1NXT1AAAAAAAmM0AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAACYzUCAAAAA2FweQAAAAACYzYCAAAAGHByZXZpb3VzX3RvdGFsX3ZvdGVfU1dPUAAAAAACYzcCAAAAEnN3b3BfeWVhcl9lbWlzc2lvbgAAAAACYzgCAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAACYzkCAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAACZDECAAAAHl9oYXJ2ZXN0X3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAACZDICAAAAI19oYXJ2ZXN0X3VzZXJfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAAAJkMwIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAACZDQCAAAACkFfYXNzZXRfaWQAAAAAAmQ1AgAAAApCX2Fzc2V0X2lkAAAAAAJkNgIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAAmQ3AgAAAA1maXJzdF9oYXJ2ZXN0AAAAAAJk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", "height": 1705569, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BnPQP9ridg9HH8p8BfqaBVUwGn8GQtxKP2AUugyiH7bB Next: 41WXnGFiJ7c7WMKXnLj314dNjgpCKN55kN9eRTeCcErN Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy'
77
88 let c = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
99
10-let d = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
10+let d = "_total_share_tokens_locked"
1111
12-let e = "_total_share_tokens_locked"
12+let e = "share_limit_on_first_harvest"
1313
14-let f = "share_limit_on_first_harvest"
14+let f = "active"
1515
16-let g = "active"
16+let g = "shutdown_cause"
1717
18-let h = "shutdown_cause"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "_current_pool_fraction_reward"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "_previous_pool_fraction_reward"
22+let j = "_pool_reward_update_height"
2323
24-let k = "_pool_reward_update_height"
24+let k = "total_reward_per_block_current"
2525
26-let l = "total_reward_per_block_current"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "total_reward_per_block_previous"
28+let m = "reward_update_height"
2929
30-let n = "reward_update_height"
30+let n = "_last_interest"
3131
32-let o = "_last_interest"
32+let o = "_last_interest_height"
3333
34-let p = "_last_interest_height"
34+let p = "_share_tokens_locked"
3535
36-let q = "_share_tokens_locked"
36+let q = "_last_interest"
3737
38-let r = "_last_interest"
38+let r = "SWOP_id"
3939
40-let s = "SWOP_id"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "_SWOP_claimed_amount"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "_SWOP_last_claimed_amount"
44+let u = "_available_SWOP"
4545
46-let v = "_available_SWOP"
46+let v = "farming_start_height"
4747
48-let w = "farming_start_height"
48+let w = "apy"
4949
50-let x = "apy"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "previous_total_vote_SWOP"
52+let y = "swop_year_emission"
5353
54-let z = "swop_year_emission"
54+let z = "A_asset_balance"
5555
56-let A = "A_asset_balance"
56+let A = "B_asset_balance"
5757
58-let B = "B_asset_balance"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "_harvest_pool_activeVote_struc"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "_harvest_user_pool_activeVote_struc"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "share_limit_on_first_harvest"
64+let E = "A_asset_id"
6565
66-let F = "A_asset_id"
66+let F = "B_asset_id"
6767
68-let G = "B_asset_id"
68+let G = "first_harvest_height"
6969
70-let H = "first_harvest_height"
70+let H = "first_harvest"
7171
72-let I = "first_harvest"
72+let I = "sum_reward_previous"
7373
74-let J = "sum_reward_previous"
74+let J = "sum_reward_current"
7575
76-let K = "sum_reward_current"
76+let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7777
78-let L = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
78+let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
80+let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
82-let N = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
82+let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
84-let O = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
84+let O = 10106
8585
86-let P = 10106
86+let P = 10000000000
8787
88-let Q = 10000000000
88+let Q = 10
8989
90-let R = 10
90+let R = 1000
9191
92-let S = 1000
92+let S = 100000
9393
94-let T = 100000
94+let T = 1000000
9595
96-let U = 1000000
96+let U = 100000000
9797
98-let V = 100000000
98+let V = 100000000000
9999
100-let W = 100000000000
101-
102-func X (Y) = getStringValue(Y, F)
100+func W (X) = getStringValue(X, E)
103101
104102
105-func Z (Y) = getStringValue(Y, G)
103+func Y (X) = getStringValue(X, F)
106104
107105
108-func aa (Y) = if ((X(Y) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
109107 then unit
110- else fromBase58String(X(Y))
108+ else fromBase58String(W(X))
111109
112110
113-func ab (Y) = if ((Z(Y) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
114112 then unit
115- else fromBase58String(Z(Y))
113+ else fromBase58String(Y(X))
116114
117115
118-let ac = "base_period"
116+let ab = "base_period"
119117
120-let ad = "period_length"
118+let ac = "period_length"
121119
122-let ae = "start_height"
120+let ad = "start_height"
123121
124-let af = "first_harvest_height"
122+let ae = "first_harvest_height"
125123
126-let ag = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
127125
128-let ah = "min_vote_power"
126+let ag = "min_vote_power"
129127
130-let ai = valueOrErrorMessage(getInteger(N, ac), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
131129
132-let aj = valueOrErrorMessage(getInteger(N, ae), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
133131
134-let ak = valueOrErrorMessage(getInteger(N, ad), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
135133
136-let al = valueOrErrorMessage(getInteger(N, ag), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
137135
138-let am = valueOrErrorMessage(getInteger(N, ah), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
139137
140-let an = getBooleanValue(this, g)
138+let am = getBooleanValue(this, f)
141139
142-let ao = (ai + ((height - aj) / ak))
140+let an = (ah + ((height - ai) / aj))
143141
144-func ap (Y) = valueOrElse(getIntegerValue(Y, E), 0)
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
145143
146144
147-let aq = getIntegerValue(this, x)
145+let ap = getIntegerValue(this, w)
148146
149-let ar = getIntegerValue(this, z)
147+let aq = getIntegerValue(this, y)
150148
151-func as (Y) = {
152- let at = aa(Y)
153- if ($isInstanceOf(at, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
154152 then {
155- let au = at
156- value(assetInfo(au)).name
153+ let at = as
154+ value(assetInfo(at)).name
157155 }
158- else if ($isInstanceOf(at, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
159157 then {
160- let av = at
158+ let au = as
161159 "WAVES"
162160 }
163161 else throw("Match error")
164162 }
165163
166164
167-func aw (Y) = {
168- let at = ab(Y)
169- if ($isInstanceOf(at, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
170168 then {
171- let au = at
172- value(assetInfo(au)).name
169+ let at = as
170+ value(assetInfo(at)).name
173171 }
174- else if ($isInstanceOf(at, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
175173 then {
176- let av = at
174+ let au = as
177175 "WAVES"
178176 }
179177 else throw("Match error")
180178 }
181179
182180
183-let ax = fromBase58String(getStringValue(this, s))
181+let aw = fromBase58String(getStringValue(this, r))
184182
185-func ay (Y) = valueOrElse(getBoolean(Y, I), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
186184
187185
188-func az (Y) = valueOrElse(getInteger(Y, H), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
189187
190188
191-func aA (Y) = valueOrErrorMessage(getInteger(Y, A), ("No data on the key: " + A))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
192190
193191
194-func aB (Y) = valueOrErrorMessage(getInteger(Y, B), ("No data on the key: " + B))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
195193
196194
197-func aC (Y) = valueOrErrorMessage(getInteger(Y, f), ("No data on the key: " + f))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
198196
199197
200-func aD (Y) = valueOrErrorMessage(getInteger(this, (Y + e)), (("No data on the key: " + Y) + e))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
201199
202200
203-func aE (Y) = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
204202
205203
206-func aF (aG) = {
207- let at = aG
208- if ($isInstanceOf(at, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
209207 then {
210- let au = at
211- assetBalance(this, au)
208+ let at = as
209+ assetBalance(this, at)
212210 }
213- else if ($isInstanceOf(at, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
214212 then {
215- let av = at
213+ let au = as
216214 wavesBalance(this).available
217215 }
218216 else throw("Match error")
219217 }
220218
221219
222-func aH (aG) = {
223- let at = aG
224- if ($isInstanceOf(at, "ByteVector"))
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
225223 then {
226- let au = at
227- let aI = toBase58String(au)
228- let aJ = valueOrErrorMessage(assetInfo(au), (("Asset " + aI) + " doesn't exist"))
229- $Tuple3(aI, aJ.name, aJ.decimals)
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
230228 }
231- else if ($isInstanceOf(at, "Unit"))
229+ else if ($isInstanceOf(as, "Unit"))
232230 then {
233- let av = at
231+ let au = as
234232 $Tuple3("WAVES", "WAVES", 8)
235233 }
236234 else throw("Match error")
237235 }
238236
239237
240-func aK (aL,aM) = {
238+func aJ (aK,aL) = {
239+ let aM = value(assetInfo(aK)).decimals
241240 let aN = value(assetInfo(aL)).decimals
242- let aO = value(assetInfo(aM)).decimals
243- let aP = ((aO - aN) + 8)
244- pow(10, 0, aP, 0, 0, FLOOR)
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
245243 }
246244
247245
248-func aQ (Y,aR) = valueOrElse(getInteger(this, (((Y + "_") + aR) + v)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
249247
250248
251-func aS (Y) = {
252- let aT = valueOrErrorMessage(getInteger(L, l), ((("No data on the key: " + l) + " at address ") + toString(L)))
253- let aU = valueOrErrorMessage(getInteger(L, m), ((("No data on the key: " + m) + " at address ") + toString(L)))
254- let aV = valueOrErrorMessage(getInteger(L, (Y + i)), (((("No data on the key: " + Y) + i) + " at address ") + toString(L)))
255- let aW = valueOrErrorMessage(getInteger(L, n), ((("No data on the key: " + n) + " at address ") + toString(L)))
256- let aX = valueOrElse(getInteger(L, (Y + k)), 0)
257- let aY = valueOrErrorMessage(getInteger(L, (Y + j)), (((("No data on the key: " + Y) + j) + " at address ") + toString(L)))
258- let aZ = fraction(aT, aV, Q)
259- let ba = fraction(aU, aY, Q)
260- if (if ((aZ > aT))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
261259 then true
262- else (ba > aU))
260+ else (aZ > aT))
263261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
264- else $Tuple4(aZ, aW, ba, aX)
262+ else $Tuple4(aY, aV, aZ, aW)
265263 }
266264
267265
268-func bb (Y) = {
269- let bc = valueOrErrorMessage(getInteger(this, (Y + o)), (("No data on the key: " + Y) + o))
270- let bd = valueOrElse(getInteger(this, (Y + p)), height)
271- $Tuple2(bd, bc)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
272270 }
273271
274272
275-func be (Y,bf) = {
276- let bg = getInteger(this, (((Y + "_") + bf) + r))
277- let bh = getInteger(this, (((Y + "_") + bf) + q))
278- let bc = valueOrErrorMessage(getInteger(this, (Y + o)), (("No data on the key: " + Y) + o))
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277+ let bh = {
278+ let as = bf
279+ if ($isInstanceOf(as, "Int"))
280+ then {
281+ let bf = as
282+ bf
283+ }
284+ else bb
285+ }
279286 let bi = {
280- let at = bg
281- if ($isInstanceOf(at, "Int"))
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
282289 then {
283- let bg = at
290+ let bg = as
284291 bg
285- }
286- else bc
287- }
288- let bj = {
289- let at = bh
290- if ($isInstanceOf(at, "Int"))
291- then {
292- let bh = at
293- bh
294292 }
295293 else 0
296294 }
297- $Tuple2(bi, bj)
295+ $Tuple2(bh, bi)
298296 }
299297
300298
301-func bk (bd,aW,aX,bc,bl,bm,bn,bo,bp) = if ((bm == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
302300 then 0
303- else if ((aX != 0))
304- then if (if ((aW > bp))
305- then (aW == aX)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
306304 else false)
307305 then {
308- let bq = (bn * (bp - bd))
309- (bc + fraction(bq, bo, bm))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
310308 }
311- else if (if ((bp > aW))
312- then (aW != aX)
309+ else if (if ((height > aV))
310+ then (aV != aW)
313311 else false)
314312 then {
315- let bq = (bn * (bp - bd))
316- (bc + fraction(bq, bo, bm))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
317315 }
318- else if (if (if ((bp > aW))
319- then (aW == aX)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
320318 else false)
321- then (bd > aW)
319+ then (bc > aV)
322320 else false)
323321 then {
324- let bq = (bl * (bp - bd))
325- (bc + fraction(bq, bo, bm))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
326324 }
327325 else {
328- let br = (bn * (aW - bd))
329- let bs = (bc + fraction(br, bo, bm))
330- let bq = (bl * (bp - aW))
331- (bs + fraction(bq, bo, bm))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
332330 }
333- else if ((aW > bp))
331+ else if ((aV > height))
334332 then {
335- let bq = (bn * (bp - bd))
336- (bc + fraction(bq, bo, bm))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
337335 }
338- else if ((bd > aW))
336+ else if ((bc > aV))
339337 then {
340- let bq = (bl * (bp - bd))
341- (bc + fraction(bq, bo, bm))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
342340 }
343341 else {
344- let br = (bn * (aW - bd))
345- let bs = (bc + fraction(br, bo, bm))
346- let bq = (bl * (bp - aW))
347- (bs + fraction(bq, bo, bm))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
348346 }
349347
350348
351-func bt (Y,bf,bp) = {
352- let bu = aE(Y)
353- let bo = aK(ax, bu)
354- let bm = aD(Y)
355- let bv = bb(Y)
356- let bd = bv._1
357- let bc = bv._2
358- let bw = aS(Y)
359- let bl = bw._1
360- let aW = bw._2
361- let bn = bw._3
362- let aX = bw._4
363- let bx = be(Y, bf)
364- let bg = bx._1
365- let bj = bx._2
366- let by = bk(bd, aW, aX, bc, bl, bm, bn, bo, bp)
367- let bz = fraction(bj, (by - bg), bo)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
368366 let bA = by
369- $Tuple4(bA, by, bz, bj)
367+ $Tuple4(bA, by, bz, bi)
370368 }
371369
372370
373-func bB (Y,bf,bp) = {
374- let bu = aE(Y)
375- let bo = aK(ax, bu)
376- let bm = aD(Y)
377- let bC = bb(Y)
378- let bd = bC._1
379- let bc = bC._2
380- let bD = aS(Y)
381- let bl = bD._1
382- let aW = bD._2
383- let bn = bD._3
384- let aX = bD._4
385- let bE = be(Y, bf)
386- let bg = bE._1
387- let bj = bE._2
388- let by = bk(bd, aW, aX, bc, bl, bm, bn, bo, bp)
389- let bz = fraction(bj, (by - bg), bo)
390- let bA = by
391- $Tuple4(bA, by, bz, bj)
392- }
393-
394-
395-func bF (Y) = {
396- let bG = bb(Y)
397- let bd = bG._1
398- let bc = bG._2
399- let bH = aS(Y)
400- let bl = bH._1
401- let aW = bH._2
402- let bn = bH._3
403- let aX = bH._4
404- let bm = aD(Y)
405- if (if ((bm == 0))
406- then (aX == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
407383 else false)
408- then if ((aW > height))
384+ then if ((aV > height))
409385 then {
410- let bq = (bn * (height - bd))
386+ let bq = (bm * (height - bc))
411387 bq
412388 }
413- else if ((bd > aW))
389+ else if ((bc > aV))
414390 then {
415- let bq = (bl * (height - bd))
391+ let bq = (bk * (height - bc))
416392 bq
417393 }
418394 else {
419- let br = (bn * (aW - bd))
420- let bq = (bl * (height - aW))
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
421397 (bq + br)
422398 }
423- else if (if ((bm == 0))
424- then (aX != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
425401 else false)
426- then if (if ((aW > height))
427- then (aW == aX)
402+ then if (if ((aV > height))
403+ then (aV == aW)
428404 else false)
429405 then {
430- let bq = (bn * (height - bd))
406+ let bq = (bm * (height - bc))
431407 bq
432408 }
433- else if (if ((height > aW))
434- then (aW != aX)
409+ else if (if ((height > aV))
410+ then (aV != aW)
435411 else false)
436412 then {
437- let bq = (bn * (height - bd))
413+ let bq = (bm * (height - bc))
438414 bq
439415 }
440- else if (if (if ((height > aW))
441- then (aW == aX)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
442418 else false)
443- then (bd > aW)
419+ then (bc > aV)
444420 else false)
445421 then {
446- let bq = (bl * (height - bd))
422+ let bq = (bk * (height - bc))
447423 bq
448424 }
449425 else {
450- let br = (bn * (aW - bd))
451- let bq = (bl * (height - aW))
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
452428 (bq + br)
453429 }
454430 else 0
455431 }
456432
457433
458-func bI (Y,bJ) = {
459- let bK = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
460- if ((bJ == bK))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
461437 then true
462438 else false
463439 }
464440
465441
466-func bL (Y,aR) = valueOrElse(getInteger(this, (((Y + "_") + aR) + t)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
467443
468444
469-func bM (bN) = [BooleanEntry(g, false), StringEntry(h, bN)]
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
470446
471447
472-@Callable(bO)
473-func init (bP) = if (isDefined(getString(this, s)))
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
474450 then throw("SWOP already initialized")
475451 else {
476- let bQ = 100000000000000
477- let bR = Issue("SWOP", "SWOP protocol token", bQ, 8, true)
478- let bS = calculateAssetId(bR)
479-[BooleanEntry(g, true), Issue("SWOP", "SWOP protocol token", bQ, 8, true), StringEntry(s, toBase58String(bS))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
480456 }
481457
482458
483459
484-@Callable(bO)
485-func initPoolShareFarming (Y) = if ((bO.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
486462 then throw("Only the DApp itself can call this function")
487463 else {
488- let bT = aS(Y)
489- let bU = bT._1
490- let aW = bT._2
491- let bn = bT._3
492- let aX = bT._4
493-[IntegerEntry((Y + e), 0), IntegerEntry((Y + o), 0), IntegerEntry((Y + p), height)]
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
469+[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
494470 }
495471
496472
497473
498-@Callable(bO)
499-func updatePoolInterest (Y) = if ((bO.caller != M))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
500476 then throw("Only the Admin itself can call this function")
501- else if (!(an))
477+ else if (!(am))
502478 then throw("DApp is inactive at this moment")
503479 else {
504- let bV = bt(Y, toString(O), height)
505- let bA = bV._1
506- let by = bV._2
507- let bz = bV._3
508- let bj = bV._4
509- let bW = aS(Y)
510- let bU = bW._1
511- let aW = bW._2
512- let bn = bW._3
513- let aX = bW._4
514-[IntegerEntry((Y + o), bA), IntegerEntry((Y + p), height)]
480+ let bR = bt(X, N, 0)
481+ let bA = bR._1
482+ let by = bR._2
483+ let bz = bR._3
484+ let bi = bR._4
485+ let bS = aR(X)
486+ let bQ = bS._1
487+ let aV = bS._2
488+ let bm = bS._3
489+ let aW = bS._4
490+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
515491 }
516492
517493
518494
519-@Callable(bO)
520-func lockShareTokens (Y) = {
521- let bf = toString(bO.caller)
522- let bX = $Tuple2(bO.payments[0].amount, bO.payments[0].assetId)
523- let bY = bX._1
524- let bJ = bX._2
525- let bZ = aH(bJ)
526- let ca = bZ._1
527- let cb = bZ._2
528- let cc = bZ._3
529- let cd = bt(Y, toString(bO.caller), height)
530- let bA = cd._1
531- let by = cd._2
532- let bz = cd._3
533- let bj = cd._4
534- let ce = (bj + bY)
535- let cf = (aQ(Y, toString(bO.caller)) + bz)
536- let cg = aD(Y)
537- let ch = (cg + bY)
538- let ci = bL(Y, toString(bO.caller))
539- let cj = (ci + bz)
540- let ck = [IntegerEntry((((Y + "_") + bf) + r), bA), IntegerEntry((((Y + "_") + bf) + q), ce), IntegerEntry((Y + e), ch), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((((Y + "_") + bf) + t), cj), IntegerEntry((((Y + "_") + bf) + u), bz), IntegerEntry((((Y + "_") + bf) + v), cf)]
541- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
542- then true
543- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
544- then throw()
545- else if ((0 >= bY))
546- then throw("You can't lock token")
547- else if (!(an))
548- then throw("DApp is inactive at this moment")
549- else if (!(bI(Y, bJ)))
550- then throw("Incorrect pmtAssetId")
551- else if (if (ay(Address(fromBase58String(Y))))
552- then (az(Address(fromBase58String(Y))) > height)
553- else false)
554- then {
555- let cl = ((((az(Address(fromBase58String(Y))) - aj) + 1) / ak) - 1)
556- let cm = split(getStringValue(N, (((bf + "_") + Y) + "_user_pool_struc")), "_")
557- let cn = split(getStringValue(N, (Y + "_pool_struc")), "_")
558- let co = split(valueOrElse(getString(N, (((bf + "_") + Y) + D)), ""), "_")
559- let cp = split(valueOrElse(getString(N, (Y + C)), ""), "_")
560- let cq = bj
561- let cr = if ((toString(ao) == cm[2]))
562- then valueOrElse(parseInt(co[0]), 0)
563- else valueOrElse(parseInt(cm[1]), 0)
564- let cs = if ((toString(ao) == cn[2]))
565- then valueOrElse(parseInt(cp[0]), 0)
566- else valueOrElse(parseInt(cn[1]), 0)
567- let ct = bF(Y)
568- if ((cr != 0))
569- then {
570- let cu = aC(addressFromStringValue(Y))
571- let cv = (fraction(cu, cr, cs) - cq)
572- if (if ((size(co) > 1))
573- then (valueOrElse(parseInt(co[1]), 0) >= cl)
574- else false)
575- then throw("You can't share token")
576- else if ((bY > cu))
577- then throw(("You can't share token more than " + toString(cu)))
578- else if ((cv > 0))
579- then if ((fraction(99, (aF(bJ) + bY), 100) > ch))
580- then throw("Balance of share-token is greater than totalAmount")
581- else if ((cg == 0))
582- then (ck ++ [Reissue(ax, ct, true), ScriptTransfer(M, ct, ax)])
583- else if ((cv >= bY))
584- then ck
585- else throw(("Your maximum share token is " + toString(cv)))
586- else throw("You can't share token")
587- }
588- else throw("Your amount of token less than 0")
589- }
590- else ck
495+@Callable(bK)
496+func lockShareTokens (X) = {
497+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498+ let bp = bT._1
499+ let bF = bT._2
500+ let bU = aG(bF)
501+ let bV = bU._1
502+ let bW = bU._2
503+ let bX = bU._3
504+ let bY = bt(X, bK.caller, bp)
505+ let bA = bY._1
506+ let by = bY._2
507+ let bz = bY._3
508+ let bi = bY._4
509+ let bZ = (bi + bp)
510+ let ca = (aP(X, bK.caller) + bz)
511+ let cb = aC(X)
512+ let cc = (cb + bp)
513+ let cd = bH(X, bK.caller)
514+ let ce = (cd + bz)
515+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516+ if ((0 >= bp))
517+ then throw("You can't lock token")
518+ else if (!(am))
519+ then throw("DApp is inactive at this moment")
520+ else if (!(bE(X, bF)))
521+ then throw("Incorrect pmtAssetId")
522+ else if (if (ax(Address(fromBase58String(X))))
523+ then (ay(Address(fromBase58String(X))) > height)
524+ else false)
525+ then {
526+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531+ let cl = bi
532+ let cm = if ((toString(an) == ch[2]))
533+ then valueOrElse(parseInt(cj[0]), 0)
534+ else valueOrElse(parseInt(ch[1]), 0)
535+ let cn = if ((toString(an) == ci[2]))
536+ then valueOrElse(parseInt(ck[0]), 0)
537+ else valueOrElse(parseInt(ci[1]), 0)
538+ let co = bB(X)
539+ if ((cm != 0))
540+ then {
541+ let cp = aB(addressFromStringValue(X))
542+ let cq = (fraction(cp, cm, cn) - cl)
543+ if (if ((size(cj) > 1))
544+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545+ else false)
546+ then throw("You can't share token")
547+ else if ((bp > cp))
548+ then throw(("You can't share token more than " + toString(cp)))
549+ else if ((cq > 0))
550+ then if ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [ScriptTransfer(L, co, aw)])
554+ else if ((cq >= bp))
555+ then cf
556+ else throw(("Your maximum share token is " + toString(cq)))
557+ else throw("You can't share token")
558+ }
559+ else throw("Your amount of token less than 0")
560+ }
561+ else cf
591562 }
592563
593564
594565
595-@Callable(bO)
596-func withdrawShareTokens (Y,cw) = {
597- let cx = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
598- let cy = bt(Y, toString(bO.caller), height)
599- let bA = cy._1
600- let by = cy._2
601- let bz = cy._3
602- let bj = cy._4
603- let ce = (bj - cw)
604- let cf = (aQ(Y, toString(bO.caller)) + bz)
605- let cg = aD(Y)
606- let ch = (cg - cw)
607- let ci = bL(Y, toString(bO.caller))
608- let cj = (ci + bz)
609- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
610- then true
611- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
612- then throw()
613- else if ((cw > bj))
614- then throw("Withdraw amount more then user locked amount")
615- else if (!(an))
616- then throw("DApp is inactive at this moment")
617- else if ((cw > bj))
618- then throw("Withdraw amount more then user locked amount")
619- else if ((fraction(99, (aF(cx) - cw), 100) > ch))
620- then throw("Balance of share-token is greater than totalAmount")
621- else [IntegerEntry((((Y + "_") + toString(bO.caller)) + r), bA), IntegerEntry((((Y + "_") + toString(bO.caller)) + q), ce), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((Y + e), ch), IntegerEntry((((Y + "_") + toString(bO.caller)) + v), cf), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), ScriptTransfer(bO.caller, cw, cx)]
566+@Callable(bK)
567+func withdrawShareTokens (X,cr) = {
568+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569+ let ct = bt(X, bK.caller, 1)
570+ let bA = ct._1
571+ let by = ct._2
572+ let bz = ct._3
573+ let bi = ct._4
574+ let bZ = (bi - cr)
575+ let ca = (aP(X, bK.caller) + bz)
576+ let cb = aC(X)
577+ let cc = (cb - cr)
578+ let cd = bH(X, bK.caller)
579+ let ce = (cd + bz)
580+ if ((cr > bi))
581+ then throw("Withdraw amount more then user locked amount")
582+ else if (!(am))
583+ then throw("DApp is inactive at this moment")
584+ else if ((cr > bi))
585+ then throw("Withdraw amount more then user locked amount")
586+ else if ((fraction(99, (aE(cs) - cr), 100) > cc))
587+ then throw("Balance of share-token is greater than totalAmount")
588+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
622589 }
623590
624591
625592
626-@Callable(bO)
627-func egg0 (Y,cz,cA) = if (if ((Y != "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
628- then (Y != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
629- else false)
630- then throw()
631- else if (!(containsElement([a, b, c, d], bO.callerPublicKey)))
632- then throw("Only admin can call this function")
633- else {
634- func cB (cC,cD) = {
635- let cE = invoke(this, "egg1", [Y, cD, cA], nil)
636- if ((cE == cE))
637- then cC
638- else throw("Strict value is not equal to itself.")
639- }
640-
641- let cF = cz
642- let cG = size(cF)
643- let cH = nil
644- if ((cG == 0))
645- then cH
646- else {
647- let cI = cB(cH, cF[0])
648- if ((cG == 1))
649- then cI
650- else {
651- let cJ = cB(cI, cF[1])
652- if ((cG == 2))
653- then cJ
654- else {
655- let cK = cB(cJ, cF[2])
656- if ((cG == 3))
657- then cK
658- else {
659- let cL = cB(cK, cF[3])
660- if ((cG == 4))
661- then cL
662- else {
663- let cM = cB(cL, cF[4])
664- if ((cG == 5))
665- then cM
666- else {
667- let cN = cB(cM, cF[5])
668- if ((cG == 6))
669- then cN
670- else {
671- let cO = cB(cN, cF[6])
672- if ((cG == 7))
673- then cO
674- else {
675- let cP = cB(cO, cF[7])
676- if ((cG == 8))
677- then cP
678- else {
679- let cQ = cB(cP, cF[8])
680- if ((cG == 9))
681- then cQ
682- else {
683- let cR = cB(cQ, cF[9])
684- if ((cG == 10))
685- then cR
686- else {
687- let cS = cB(cR, cF[10])
688- if ((cG == 11))
689- then cS
690- else {
691- let cT = cB(cS, cF[11])
692- if ((cG == 12))
693- then cT
694- else {
695- let cU = cB(cT, cF[12])
696- throw("List size exceed 12")
697- }
698- }
699- }
700- }
701- }
702- }
703- }
704- }
705- }
706- }
707- }
708- }
709- }
710- }
711-
712-
713-
714-@Callable(bO)
715-func egg1 (Y,cD,cA) = if ((bO.caller != this))
716- then throw("Only contract itself can invoke this function")
717- else {
718- let cV = 1000
719- let cW = bt(Y, cD, cA)
720- let bA = cW._1
721- let by = cW._2
722- let bz = cW._3
723- let bj = cW._4
724- let cf = (aQ(Y, cD) + bz)
725- let ci = bL(Y, cD)
726- let cj = (ci + bz)
727- let cX = (bj * cV)
728- let cY = valueOrElse(getInteger(this, ((Y + "_") + "tansl")), 0)
729-[IntegerEntry((((Y + "_") + cD) + r), 0), IntegerEntry((((Y + "_") + cD) + q), cX), IntegerEntry((((Y + "_") + cD) + v), cf), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), IntegerEntry(((Y + "_") + "tansl"), (cY + cX))]
730- }
731-
732-
733-
734-@Callable(bO)
735-func updateTotalShareTokensLocked (Y,cA) = if (!(containsElement([a, b, c, d], bO.callerPublicKey)))
736- then throw("Only admin can call this function")
737- else {
738- let cV = 1000
739- let cZ = (getIntegerValue(this, (Y + e)) * 1000)
740- let da = getIntegerValue(this, ((Y + "_") + "tansl"))
741- if ((cZ != da))
742- then throw("New total amount share tockens != old total amount")
743- else [IntegerEntry((Y + o), 0), IntegerEntry((Y + p), cA), IntegerEntry((Y + e), da), DeleteEntry(((Y + "_") + "tansl"))]
744- }
745-
746-
747-
748-@Callable(bO)
749-func claim (Y) = {
750- let cx = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
751- let bm = aD(Y)
752- let db = bb(Y)
753- let bd = db._1
754- let bc = db._2
755- let dc = aS(Y)
756- let bl = dc._1
757- let aW = dc._2
758- let bn = dc._3
759- let aX = dc._4
760- let dd = bt(Y, toString(bO.caller), height)
761- let bA = dd._1
762- let by = dd._2
763- let bz = dd._3
764- let bj = dd._4
765- let de = (aQ(Y, toString(bO.caller)) + bz)
766- let ci = bL(Y, toString(bO.caller))
767- let cj = (ci + bz)
768- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
769- then true
770- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
771- then throw()
772- else if ((de == 0))
773- then throw("You have 0 available SWOP")
774- else if (!(an))
775- then throw("DApp is inactive at this moment")
776- else if ((de == 0))
777- then throw("You have 0 available SWOP")
778- else if ((fraction(99, aF(cx), 100) > bm))
779- then throw("Balance of share-token is greater than totalAmount")
780- else [IntegerEntry((((Y + "_") + toString(bO.caller)) + r), bA), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((((Y + "_") + toString(bO.caller)) + v), 0), Reissue(ax, de, true), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), ScriptTransfer(bO.caller, de, ax)]
593+@Callable(bK)
594+func claim (X) = {
595+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596+ let bl = aC(X)
597+ let cu = ba(X)
598+ let bc = cu._1
599+ let bb = cu._2
600+ let cv = aR(X)
601+ let bk = cv._1
602+ let aV = cv._2
603+ let bm = cv._3
604+ let aW = cv._4
605+ let cw = bt(X, bK.caller, 1)
606+ let bA = cw._1
607+ let by = cw._2
608+ let bz = cw._3
609+ let bi = cw._4
610+ let cx = (aP(X, bK.caller) + bz)
611+ let cd = bH(X, bK.caller)
612+ let ce = (cd + bz)
613+ if ((cx == 0))
614+ then throw("You have 0 available SWOP")
615+ else if (!(am))
616+ then throw("DApp is inactive at this moment")
617+ else if ((cx == 0))
618+ then throw("You have 0 available SWOP")
619+ else if ((fraction(99, aE(cs), 100) > bl))
620+ then throw("Balance of share-token is greater than totalAmount")
621+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
781622 }
782623
783624
784625
785-@Callable(bO)
786-func shutdown () = if (!(an))
787- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, h), "the cause wasn't specified")))
788- else if (!(containsElement([a, b, c], bO.callerPublicKey)))
626+@Callable(bK)
627+func shutdown () = if (!(am))
628+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
789630 then throw("Only admin can call this function")
790- else bM("Paused by admin")
631+ else bI("Paused by admin")
791632
792633
793634
794-@Callable(bO)
795-func activate () = if (an)
635+@Callable(bK)
636+func activate () = if (am)
796637 then throw("DApp is already active")
797- else if (!(containsElement([a, b, c], bO.callerPublicKey)))
638+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
798639 then throw("Only admin can call this function")
799- else [BooleanEntry(g, true), DeleteEntry(h)]
640+ else [BooleanEntry(f, true), DeleteEntry(g)]
800641
801642
802-@Verifier(df)
803-func dg () = {
804- let at = df
805- if ($isInstanceOf(at, "InvokeScriptTransaction"))
806- then {
807- let dh = at
808- let di = if ((dh.dApp == this))
809- then (dh.function == "egg1")
810- else false
811- let dj = if (if (if (sigVerify(df.bodyBytes, df.proofs[0], a))
812- then true
813- else sigVerify(df.bodyBytes, df.proofs[0], b))
814- then true
815- else sigVerify(df.bodyBytes, df.proofs[0], c))
816- then true
817- else sigVerify(df.bodyBytes, df.proofs[0], d)
818- if (di)
819- then dj
820- else false
821- }
822- else {
823- let dk = if (sigVerify(df.bodyBytes, df.proofs[0], a))
824- then 1
825- else 0
826- let dl = if (sigVerify(df.bodyBytes, df.proofs[1], b))
827- then 1
828- else 0
829- let dm = if (sigVerify(df.bodyBytes, df.proofs[2], c))
830- then 1
831- else 0
832- (((dk + dl) + dm) >= 2)
833- }
643+@Verifier(cy)
644+func cz () = {
645+ let as = cy
646+ let cA = if (sigVerify(cy.bodyBytes, cy.proofs[0], a))
647+ then 1
648+ else 0
649+ let cB = if (sigVerify(cy.bodyBytes, cy.proofs[1], b))
650+ then 1
651+ else 0
652+ let cC = if (sigVerify(cy.bodyBytes, cy.proofs[2], c))
653+ then 1
654+ else 0
655+ (((cA + cB) + cC) >= 2)
834656 }
835657
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy'
55
66 let b = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk'
77
88 let c = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
99
10-let d = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
10+let d = "_total_share_tokens_locked"
1111
12-let e = "_total_share_tokens_locked"
12+let e = "share_limit_on_first_harvest"
1313
14-let f = "share_limit_on_first_harvest"
14+let f = "active"
1515
16-let g = "active"
16+let g = "shutdown_cause"
1717
18-let h = "shutdown_cause"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "_current_pool_fraction_reward"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "_previous_pool_fraction_reward"
22+let j = "_pool_reward_update_height"
2323
24-let k = "_pool_reward_update_height"
24+let k = "total_reward_per_block_current"
2525
26-let l = "total_reward_per_block_current"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "total_reward_per_block_previous"
28+let m = "reward_update_height"
2929
30-let n = "reward_update_height"
30+let n = "_last_interest"
3131
32-let o = "_last_interest"
32+let o = "_last_interest_height"
3333
34-let p = "_last_interest_height"
34+let p = "_share_tokens_locked"
3535
36-let q = "_share_tokens_locked"
36+let q = "_last_interest"
3737
38-let r = "_last_interest"
38+let r = "SWOP_id"
3939
40-let s = "SWOP_id"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "_SWOP_claimed_amount"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "_SWOP_last_claimed_amount"
44+let u = "_available_SWOP"
4545
46-let v = "_available_SWOP"
46+let v = "farming_start_height"
4747
48-let w = "farming_start_height"
48+let w = "apy"
4949
50-let x = "apy"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "previous_total_vote_SWOP"
52+let y = "swop_year_emission"
5353
54-let z = "swop_year_emission"
54+let z = "A_asset_balance"
5555
56-let A = "A_asset_balance"
56+let A = "B_asset_balance"
5757
58-let B = "B_asset_balance"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "_harvest_pool_activeVote_struc"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "_harvest_user_pool_activeVote_struc"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "share_limit_on_first_harvest"
64+let E = "A_asset_id"
6565
66-let F = "A_asset_id"
66+let F = "B_asset_id"
6767
68-let G = "B_asset_id"
68+let G = "first_harvest_height"
6969
70-let H = "first_harvest_height"
70+let H = "first_harvest"
7171
72-let I = "first_harvest"
72+let I = "sum_reward_previous"
7373
74-let J = "sum_reward_previous"
74+let J = "sum_reward_current"
7575
76-let K = "sum_reward_current"
76+let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7777
78-let L = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
78+let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
80+let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
82-let N = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
82+let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
84-let O = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
84+let O = 10106
8585
86-let P = 10106
86+let P = 10000000000
8787
88-let Q = 10000000000
88+let Q = 10
8989
90-let R = 10
90+let R = 1000
9191
92-let S = 1000
92+let S = 100000
9393
94-let T = 100000
94+let T = 1000000
9595
96-let U = 1000000
96+let U = 100000000
9797
98-let V = 100000000
98+let V = 100000000000
9999
100-let W = 100000000000
101-
102-func X (Y) = getStringValue(Y, F)
100+func W (X) = getStringValue(X, E)
103101
104102
105-func Z (Y) = getStringValue(Y, G)
103+func Y (X) = getStringValue(X, F)
106104
107105
108-func aa (Y) = if ((X(Y) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
109107 then unit
110- else fromBase58String(X(Y))
108+ else fromBase58String(W(X))
111109
112110
113-func ab (Y) = if ((Z(Y) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
114112 then unit
115- else fromBase58String(Z(Y))
113+ else fromBase58String(Y(X))
116114
117115
118-let ac = "base_period"
116+let ab = "base_period"
119117
120-let ad = "period_length"
118+let ac = "period_length"
121119
122-let ae = "start_height"
120+let ad = "start_height"
123121
124-let af = "first_harvest_height"
122+let ae = "first_harvest_height"
125123
126-let ag = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
127125
128-let ah = "min_vote_power"
126+let ag = "min_vote_power"
129127
130-let ai = valueOrErrorMessage(getInteger(N, ac), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
131129
132-let aj = valueOrErrorMessage(getInteger(N, ae), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
133131
134-let ak = valueOrErrorMessage(getInteger(N, ad), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
135133
136-let al = valueOrErrorMessage(getInteger(N, ag), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
137135
138-let am = valueOrErrorMessage(getInteger(N, ah), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
139137
140-let an = getBooleanValue(this, g)
138+let am = getBooleanValue(this, f)
141139
142-let ao = (ai + ((height - aj) / ak))
140+let an = (ah + ((height - ai) / aj))
143141
144-func ap (Y) = valueOrElse(getIntegerValue(Y, E), 0)
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
145143
146144
147-let aq = getIntegerValue(this, x)
145+let ap = getIntegerValue(this, w)
148146
149-let ar = getIntegerValue(this, z)
147+let aq = getIntegerValue(this, y)
150148
151-func as (Y) = {
152- let at = aa(Y)
153- if ($isInstanceOf(at, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
154152 then {
155- let au = at
156- value(assetInfo(au)).name
153+ let at = as
154+ value(assetInfo(at)).name
157155 }
158- else if ($isInstanceOf(at, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
159157 then {
160- let av = at
158+ let au = as
161159 "WAVES"
162160 }
163161 else throw("Match error")
164162 }
165163
166164
167-func aw (Y) = {
168- let at = ab(Y)
169- if ($isInstanceOf(at, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
170168 then {
171- let au = at
172- value(assetInfo(au)).name
169+ let at = as
170+ value(assetInfo(at)).name
173171 }
174- else if ($isInstanceOf(at, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
175173 then {
176- let av = at
174+ let au = as
177175 "WAVES"
178176 }
179177 else throw("Match error")
180178 }
181179
182180
183-let ax = fromBase58String(getStringValue(this, s))
181+let aw = fromBase58String(getStringValue(this, r))
184182
185-func ay (Y) = valueOrElse(getBoolean(Y, I), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
186184
187185
188-func az (Y) = valueOrElse(getInteger(Y, H), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
189187
190188
191-func aA (Y) = valueOrErrorMessage(getInteger(Y, A), ("No data on the key: " + A))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
192190
193191
194-func aB (Y) = valueOrErrorMessage(getInteger(Y, B), ("No data on the key: " + B))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
195193
196194
197-func aC (Y) = valueOrErrorMessage(getInteger(Y, f), ("No data on the key: " + f))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
198196
199197
200-func aD (Y) = valueOrErrorMessage(getInteger(this, (Y + e)), (("No data on the key: " + Y) + e))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
201199
202200
203-func aE (Y) = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
204202
205203
206-func aF (aG) = {
207- let at = aG
208- if ($isInstanceOf(at, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
209207 then {
210- let au = at
211- assetBalance(this, au)
208+ let at = as
209+ assetBalance(this, at)
212210 }
213- else if ($isInstanceOf(at, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
214212 then {
215- let av = at
213+ let au = as
216214 wavesBalance(this).available
217215 }
218216 else throw("Match error")
219217 }
220218
221219
222-func aH (aG) = {
223- let at = aG
224- if ($isInstanceOf(at, "ByteVector"))
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
225223 then {
226- let au = at
227- let aI = toBase58String(au)
228- let aJ = valueOrErrorMessage(assetInfo(au), (("Asset " + aI) + " doesn't exist"))
229- $Tuple3(aI, aJ.name, aJ.decimals)
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
230228 }
231- else if ($isInstanceOf(at, "Unit"))
229+ else if ($isInstanceOf(as, "Unit"))
232230 then {
233- let av = at
231+ let au = as
234232 $Tuple3("WAVES", "WAVES", 8)
235233 }
236234 else throw("Match error")
237235 }
238236
239237
240-func aK (aL,aM) = {
238+func aJ (aK,aL) = {
239+ let aM = value(assetInfo(aK)).decimals
241240 let aN = value(assetInfo(aL)).decimals
242- let aO = value(assetInfo(aM)).decimals
243- let aP = ((aO - aN) + 8)
244- pow(10, 0, aP, 0, 0, FLOOR)
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
245243 }
246244
247245
248-func aQ (Y,aR) = valueOrElse(getInteger(this, (((Y + "_") + aR) + v)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
249247
250248
251-func aS (Y) = {
252- let aT = valueOrErrorMessage(getInteger(L, l), ((("No data on the key: " + l) + " at address ") + toString(L)))
253- let aU = valueOrErrorMessage(getInteger(L, m), ((("No data on the key: " + m) + " at address ") + toString(L)))
254- let aV = valueOrErrorMessage(getInteger(L, (Y + i)), (((("No data on the key: " + Y) + i) + " at address ") + toString(L)))
255- let aW = valueOrErrorMessage(getInteger(L, n), ((("No data on the key: " + n) + " at address ") + toString(L)))
256- let aX = valueOrElse(getInteger(L, (Y + k)), 0)
257- let aY = valueOrErrorMessage(getInteger(L, (Y + j)), (((("No data on the key: " + Y) + j) + " at address ") + toString(L)))
258- let aZ = fraction(aT, aV, Q)
259- let ba = fraction(aU, aY, Q)
260- if (if ((aZ > aT))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
261259 then true
262- else (ba > aU))
260+ else (aZ > aT))
263261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
264- else $Tuple4(aZ, aW, ba, aX)
262+ else $Tuple4(aY, aV, aZ, aW)
265263 }
266264
267265
268-func bb (Y) = {
269- let bc = valueOrErrorMessage(getInteger(this, (Y + o)), (("No data on the key: " + Y) + o))
270- let bd = valueOrElse(getInteger(this, (Y + p)), height)
271- $Tuple2(bd, bc)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
272270 }
273271
274272
275-func be (Y,bf) = {
276- let bg = getInteger(this, (((Y + "_") + bf) + r))
277- let bh = getInteger(this, (((Y + "_") + bf) + q))
278- let bc = valueOrErrorMessage(getInteger(this, (Y + o)), (("No data on the key: " + Y) + o))
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277+ let bh = {
278+ let as = bf
279+ if ($isInstanceOf(as, "Int"))
280+ then {
281+ let bf = as
282+ bf
283+ }
284+ else bb
285+ }
279286 let bi = {
280- let at = bg
281- if ($isInstanceOf(at, "Int"))
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
282289 then {
283- let bg = at
290+ let bg = as
284291 bg
285- }
286- else bc
287- }
288- let bj = {
289- let at = bh
290- if ($isInstanceOf(at, "Int"))
291- then {
292- let bh = at
293- bh
294292 }
295293 else 0
296294 }
297- $Tuple2(bi, bj)
295+ $Tuple2(bh, bi)
298296 }
299297
300298
301-func bk (bd,aW,aX,bc,bl,bm,bn,bo,bp) = if ((bm == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
302300 then 0
303- else if ((aX != 0))
304- then if (if ((aW > bp))
305- then (aW == aX)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
306304 else false)
307305 then {
308- let bq = (bn * (bp - bd))
309- (bc + fraction(bq, bo, bm))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
310308 }
311- else if (if ((bp > aW))
312- then (aW != aX)
309+ else if (if ((height > aV))
310+ then (aV != aW)
313311 else false)
314312 then {
315- let bq = (bn * (bp - bd))
316- (bc + fraction(bq, bo, bm))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
317315 }
318- else if (if (if ((bp > aW))
319- then (aW == aX)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
320318 else false)
321- then (bd > aW)
319+ then (bc > aV)
322320 else false)
323321 then {
324- let bq = (bl * (bp - bd))
325- (bc + fraction(bq, bo, bm))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
326324 }
327325 else {
328- let br = (bn * (aW - bd))
329- let bs = (bc + fraction(br, bo, bm))
330- let bq = (bl * (bp - aW))
331- (bs + fraction(bq, bo, bm))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
332330 }
333- else if ((aW > bp))
331+ else if ((aV > height))
334332 then {
335- let bq = (bn * (bp - bd))
336- (bc + fraction(bq, bo, bm))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
337335 }
338- else if ((bd > aW))
336+ else if ((bc > aV))
339337 then {
340- let bq = (bl * (bp - bd))
341- (bc + fraction(bq, bo, bm))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
342340 }
343341 else {
344- let br = (bn * (aW - bd))
345- let bs = (bc + fraction(br, bo, bm))
346- let bq = (bl * (bp - aW))
347- (bs + fraction(bq, bo, bm))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
348346 }
349347
350348
351-func bt (Y,bf,bp) = {
352- let bu = aE(Y)
353- let bo = aK(ax, bu)
354- let bm = aD(Y)
355- let bv = bb(Y)
356- let bd = bv._1
357- let bc = bv._2
358- let bw = aS(Y)
359- let bl = bw._1
360- let aW = bw._2
361- let bn = bw._3
362- let aX = bw._4
363- let bx = be(Y, bf)
364- let bg = bx._1
365- let bj = bx._2
366- let by = bk(bd, aW, aX, bc, bl, bm, bn, bo, bp)
367- let bz = fraction(bj, (by - bg), bo)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
368366 let bA = by
369- $Tuple4(bA, by, bz, bj)
367+ $Tuple4(bA, by, bz, bi)
370368 }
371369
372370
373-func bB (Y,bf,bp) = {
374- let bu = aE(Y)
375- let bo = aK(ax, bu)
376- let bm = aD(Y)
377- let bC = bb(Y)
378- let bd = bC._1
379- let bc = bC._2
380- let bD = aS(Y)
381- let bl = bD._1
382- let aW = bD._2
383- let bn = bD._3
384- let aX = bD._4
385- let bE = be(Y, bf)
386- let bg = bE._1
387- let bj = bE._2
388- let by = bk(bd, aW, aX, bc, bl, bm, bn, bo, bp)
389- let bz = fraction(bj, (by - bg), bo)
390- let bA = by
391- $Tuple4(bA, by, bz, bj)
392- }
393-
394-
395-func bF (Y) = {
396- let bG = bb(Y)
397- let bd = bG._1
398- let bc = bG._2
399- let bH = aS(Y)
400- let bl = bH._1
401- let aW = bH._2
402- let bn = bH._3
403- let aX = bH._4
404- let bm = aD(Y)
405- if (if ((bm == 0))
406- then (aX == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
407383 else false)
408- then if ((aW > height))
384+ then if ((aV > height))
409385 then {
410- let bq = (bn * (height - bd))
386+ let bq = (bm * (height - bc))
411387 bq
412388 }
413- else if ((bd > aW))
389+ else if ((bc > aV))
414390 then {
415- let bq = (bl * (height - bd))
391+ let bq = (bk * (height - bc))
416392 bq
417393 }
418394 else {
419- let br = (bn * (aW - bd))
420- let bq = (bl * (height - aW))
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
421397 (bq + br)
422398 }
423- else if (if ((bm == 0))
424- then (aX != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
425401 else false)
426- then if (if ((aW > height))
427- then (aW == aX)
402+ then if (if ((aV > height))
403+ then (aV == aW)
428404 else false)
429405 then {
430- let bq = (bn * (height - bd))
406+ let bq = (bm * (height - bc))
431407 bq
432408 }
433- else if (if ((height > aW))
434- then (aW != aX)
409+ else if (if ((height > aV))
410+ then (aV != aW)
435411 else false)
436412 then {
437- let bq = (bn * (height - bd))
413+ let bq = (bm * (height - bc))
438414 bq
439415 }
440- else if (if (if ((height > aW))
441- then (aW == aX)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
442418 else false)
443- then (bd > aW)
419+ then (bc > aV)
444420 else false)
445421 then {
446- let bq = (bl * (height - bd))
422+ let bq = (bk * (height - bc))
447423 bq
448424 }
449425 else {
450- let br = (bn * (aW - bd))
451- let bq = (bl * (height - aW))
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
452428 (bq + br)
453429 }
454430 else 0
455431 }
456432
457433
458-func bI (Y,bJ) = {
459- let bK = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
460- if ((bJ == bK))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
461437 then true
462438 else false
463439 }
464440
465441
466-func bL (Y,aR) = valueOrElse(getInteger(this, (((Y + "_") + aR) + t)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
467443
468444
469-func bM (bN) = [BooleanEntry(g, false), StringEntry(h, bN)]
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
470446
471447
472-@Callable(bO)
473-func init (bP) = if (isDefined(getString(this, s)))
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
474450 then throw("SWOP already initialized")
475451 else {
476- let bQ = 100000000000000
477- let bR = Issue("SWOP", "SWOP protocol token", bQ, 8, true)
478- let bS = calculateAssetId(bR)
479-[BooleanEntry(g, true), Issue("SWOP", "SWOP protocol token", bQ, 8, true), StringEntry(s, toBase58String(bS))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
480456 }
481457
482458
483459
484-@Callable(bO)
485-func initPoolShareFarming (Y) = if ((bO.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
486462 then throw("Only the DApp itself can call this function")
487463 else {
488- let bT = aS(Y)
489- let bU = bT._1
490- let aW = bT._2
491- let bn = bT._3
492- let aX = bT._4
493-[IntegerEntry((Y + e), 0), IntegerEntry((Y + o), 0), IntegerEntry((Y + p), height)]
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
469+[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
494470 }
495471
496472
497473
498-@Callable(bO)
499-func updatePoolInterest (Y) = if ((bO.caller != M))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
500476 then throw("Only the Admin itself can call this function")
501- else if (!(an))
477+ else if (!(am))
502478 then throw("DApp is inactive at this moment")
503479 else {
504- let bV = bt(Y, toString(O), height)
505- let bA = bV._1
506- let by = bV._2
507- let bz = bV._3
508- let bj = bV._4
509- let bW = aS(Y)
510- let bU = bW._1
511- let aW = bW._2
512- let bn = bW._3
513- let aX = bW._4
514-[IntegerEntry((Y + o), bA), IntegerEntry((Y + p), height)]
480+ let bR = bt(X, N, 0)
481+ let bA = bR._1
482+ let by = bR._2
483+ let bz = bR._3
484+ let bi = bR._4
485+ let bS = aR(X)
486+ let bQ = bS._1
487+ let aV = bS._2
488+ let bm = bS._3
489+ let aW = bS._4
490+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
515491 }
516492
517493
518494
519-@Callable(bO)
520-func lockShareTokens (Y) = {
521- let bf = toString(bO.caller)
522- let bX = $Tuple2(bO.payments[0].amount, bO.payments[0].assetId)
523- let bY = bX._1
524- let bJ = bX._2
525- let bZ = aH(bJ)
526- let ca = bZ._1
527- let cb = bZ._2
528- let cc = bZ._3
529- let cd = bt(Y, toString(bO.caller), height)
530- let bA = cd._1
531- let by = cd._2
532- let bz = cd._3
533- let bj = cd._4
534- let ce = (bj + bY)
535- let cf = (aQ(Y, toString(bO.caller)) + bz)
536- let cg = aD(Y)
537- let ch = (cg + bY)
538- let ci = bL(Y, toString(bO.caller))
539- let cj = (ci + bz)
540- let ck = [IntegerEntry((((Y + "_") + bf) + r), bA), IntegerEntry((((Y + "_") + bf) + q), ce), IntegerEntry((Y + e), ch), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((((Y + "_") + bf) + t), cj), IntegerEntry((((Y + "_") + bf) + u), bz), IntegerEntry((((Y + "_") + bf) + v), cf)]
541- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
542- then true
543- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
544- then throw()
545- else if ((0 >= bY))
546- then throw("You can't lock token")
547- else if (!(an))
548- then throw("DApp is inactive at this moment")
549- else if (!(bI(Y, bJ)))
550- then throw("Incorrect pmtAssetId")
551- else if (if (ay(Address(fromBase58String(Y))))
552- then (az(Address(fromBase58String(Y))) > height)
553- else false)
554- then {
555- let cl = ((((az(Address(fromBase58String(Y))) - aj) + 1) / ak) - 1)
556- let cm = split(getStringValue(N, (((bf + "_") + Y) + "_user_pool_struc")), "_")
557- let cn = split(getStringValue(N, (Y + "_pool_struc")), "_")
558- let co = split(valueOrElse(getString(N, (((bf + "_") + Y) + D)), ""), "_")
559- let cp = split(valueOrElse(getString(N, (Y + C)), ""), "_")
560- let cq = bj
561- let cr = if ((toString(ao) == cm[2]))
562- then valueOrElse(parseInt(co[0]), 0)
563- else valueOrElse(parseInt(cm[1]), 0)
564- let cs = if ((toString(ao) == cn[2]))
565- then valueOrElse(parseInt(cp[0]), 0)
566- else valueOrElse(parseInt(cn[1]), 0)
567- let ct = bF(Y)
568- if ((cr != 0))
569- then {
570- let cu = aC(addressFromStringValue(Y))
571- let cv = (fraction(cu, cr, cs) - cq)
572- if (if ((size(co) > 1))
573- then (valueOrElse(parseInt(co[1]), 0) >= cl)
574- else false)
575- then throw("You can't share token")
576- else if ((bY > cu))
577- then throw(("You can't share token more than " + toString(cu)))
578- else if ((cv > 0))
579- then if ((fraction(99, (aF(bJ) + bY), 100) > ch))
580- then throw("Balance of share-token is greater than totalAmount")
581- else if ((cg == 0))
582- then (ck ++ [Reissue(ax, ct, true), ScriptTransfer(M, ct, ax)])
583- else if ((cv >= bY))
584- then ck
585- else throw(("Your maximum share token is " + toString(cv)))
586- else throw("You can't share token")
587- }
588- else throw("Your amount of token less than 0")
589- }
590- else ck
495+@Callable(bK)
496+func lockShareTokens (X) = {
497+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498+ let bp = bT._1
499+ let bF = bT._2
500+ let bU = aG(bF)
501+ let bV = bU._1
502+ let bW = bU._2
503+ let bX = bU._3
504+ let bY = bt(X, bK.caller, bp)
505+ let bA = bY._1
506+ let by = bY._2
507+ let bz = bY._3
508+ let bi = bY._4
509+ let bZ = (bi + bp)
510+ let ca = (aP(X, bK.caller) + bz)
511+ let cb = aC(X)
512+ let cc = (cb + bp)
513+ let cd = bH(X, bK.caller)
514+ let ce = (cd + bz)
515+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516+ if ((0 >= bp))
517+ then throw("You can't lock token")
518+ else if (!(am))
519+ then throw("DApp is inactive at this moment")
520+ else if (!(bE(X, bF)))
521+ then throw("Incorrect pmtAssetId")
522+ else if (if (ax(Address(fromBase58String(X))))
523+ then (ay(Address(fromBase58String(X))) > height)
524+ else false)
525+ then {
526+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531+ let cl = bi
532+ let cm = if ((toString(an) == ch[2]))
533+ then valueOrElse(parseInt(cj[0]), 0)
534+ else valueOrElse(parseInt(ch[1]), 0)
535+ let cn = if ((toString(an) == ci[2]))
536+ then valueOrElse(parseInt(ck[0]), 0)
537+ else valueOrElse(parseInt(ci[1]), 0)
538+ let co = bB(X)
539+ if ((cm != 0))
540+ then {
541+ let cp = aB(addressFromStringValue(X))
542+ let cq = (fraction(cp, cm, cn) - cl)
543+ if (if ((size(cj) > 1))
544+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545+ else false)
546+ then throw("You can't share token")
547+ else if ((bp > cp))
548+ then throw(("You can't share token more than " + toString(cp)))
549+ else if ((cq > 0))
550+ then if ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [ScriptTransfer(L, co, aw)])
554+ else if ((cq >= bp))
555+ then cf
556+ else throw(("Your maximum share token is " + toString(cq)))
557+ else throw("You can't share token")
558+ }
559+ else throw("Your amount of token less than 0")
560+ }
561+ else cf
591562 }
592563
593564
594565
595-@Callable(bO)
596-func withdrawShareTokens (Y,cw) = {
597- let cx = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
598- let cy = bt(Y, toString(bO.caller), height)
599- let bA = cy._1
600- let by = cy._2
601- let bz = cy._3
602- let bj = cy._4
603- let ce = (bj - cw)
604- let cf = (aQ(Y, toString(bO.caller)) + bz)
605- let cg = aD(Y)
606- let ch = (cg - cw)
607- let ci = bL(Y, toString(bO.caller))
608- let cj = (ci + bz)
609- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
610- then true
611- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
612- then throw()
613- else if ((cw > bj))
614- then throw("Withdraw amount more then user locked amount")
615- else if (!(an))
616- then throw("DApp is inactive at this moment")
617- else if ((cw > bj))
618- then throw("Withdraw amount more then user locked amount")
619- else if ((fraction(99, (aF(cx) - cw), 100) > ch))
620- then throw("Balance of share-token is greater than totalAmount")
621- else [IntegerEntry((((Y + "_") + toString(bO.caller)) + r), bA), IntegerEntry((((Y + "_") + toString(bO.caller)) + q), ce), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((Y + e), ch), IntegerEntry((((Y + "_") + toString(bO.caller)) + v), cf), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), ScriptTransfer(bO.caller, cw, cx)]
566+@Callable(bK)
567+func withdrawShareTokens (X,cr) = {
568+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569+ let ct = bt(X, bK.caller, 1)
570+ let bA = ct._1
571+ let by = ct._2
572+ let bz = ct._3
573+ let bi = ct._4
574+ let bZ = (bi - cr)
575+ let ca = (aP(X, bK.caller) + bz)
576+ let cb = aC(X)
577+ let cc = (cb - cr)
578+ let cd = bH(X, bK.caller)
579+ let ce = (cd + bz)
580+ if ((cr > bi))
581+ then throw("Withdraw amount more then user locked amount")
582+ else if (!(am))
583+ then throw("DApp is inactive at this moment")
584+ else if ((cr > bi))
585+ then throw("Withdraw amount more then user locked amount")
586+ else if ((fraction(99, (aE(cs) - cr), 100) > cc))
587+ then throw("Balance of share-token is greater than totalAmount")
588+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
622589 }
623590
624591
625592
626-@Callable(bO)
627-func egg0 (Y,cz,cA) = if (if ((Y != "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
628- then (Y != "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8")
629- else false)
630- then throw()
631- else if (!(containsElement([a, b, c, d], bO.callerPublicKey)))
632- then throw("Only admin can call this function")
633- else {
634- func cB (cC,cD) = {
635- let cE = invoke(this, "egg1", [Y, cD, cA], nil)
636- if ((cE == cE))
637- then cC
638- else throw("Strict value is not equal to itself.")
639- }
640-
641- let cF = cz
642- let cG = size(cF)
643- let cH = nil
644- if ((cG == 0))
645- then cH
646- else {
647- let cI = cB(cH, cF[0])
648- if ((cG == 1))
649- then cI
650- else {
651- let cJ = cB(cI, cF[1])
652- if ((cG == 2))
653- then cJ
654- else {
655- let cK = cB(cJ, cF[2])
656- if ((cG == 3))
657- then cK
658- else {
659- let cL = cB(cK, cF[3])
660- if ((cG == 4))
661- then cL
662- else {
663- let cM = cB(cL, cF[4])
664- if ((cG == 5))
665- then cM
666- else {
667- let cN = cB(cM, cF[5])
668- if ((cG == 6))
669- then cN
670- else {
671- let cO = cB(cN, cF[6])
672- if ((cG == 7))
673- then cO
674- else {
675- let cP = cB(cO, cF[7])
676- if ((cG == 8))
677- then cP
678- else {
679- let cQ = cB(cP, cF[8])
680- if ((cG == 9))
681- then cQ
682- else {
683- let cR = cB(cQ, cF[9])
684- if ((cG == 10))
685- then cR
686- else {
687- let cS = cB(cR, cF[10])
688- if ((cG == 11))
689- then cS
690- else {
691- let cT = cB(cS, cF[11])
692- if ((cG == 12))
693- then cT
694- else {
695- let cU = cB(cT, cF[12])
696- throw("List size exceed 12")
697- }
698- }
699- }
700- }
701- }
702- }
703- }
704- }
705- }
706- }
707- }
708- }
709- }
710- }
711-
712-
713-
714-@Callable(bO)
715-func egg1 (Y,cD,cA) = if ((bO.caller != this))
716- then throw("Only contract itself can invoke this function")
717- else {
718- let cV = 1000
719- let cW = bt(Y, cD, cA)
720- let bA = cW._1
721- let by = cW._2
722- let bz = cW._3
723- let bj = cW._4
724- let cf = (aQ(Y, cD) + bz)
725- let ci = bL(Y, cD)
726- let cj = (ci + bz)
727- let cX = (bj * cV)
728- let cY = valueOrElse(getInteger(this, ((Y + "_") + "tansl")), 0)
729-[IntegerEntry((((Y + "_") + cD) + r), 0), IntegerEntry((((Y + "_") + cD) + q), cX), IntegerEntry((((Y + "_") + cD) + v), cf), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), IntegerEntry(((Y + "_") + "tansl"), (cY + cX))]
730- }
731-
732-
733-
734-@Callable(bO)
735-func updateTotalShareTokensLocked (Y,cA) = if (!(containsElement([a, b, c, d], bO.callerPublicKey)))
736- then throw("Only admin can call this function")
737- else {
738- let cV = 1000
739- let cZ = (getIntegerValue(this, (Y + e)) * 1000)
740- let da = getIntegerValue(this, ((Y + "_") + "tansl"))
741- if ((cZ != da))
742- then throw("New total amount share tockens != old total amount")
743- else [IntegerEntry((Y + o), 0), IntegerEntry((Y + p), cA), IntegerEntry((Y + e), da), DeleteEntry(((Y + "_") + "tansl"))]
744- }
745-
746-
747-
748-@Callable(bO)
749-func claim (Y) = {
750- let cx = fromBase58String(getStringValue(value(addressFromString(Y)), "share_asset_id"))
751- let bm = aD(Y)
752- let db = bb(Y)
753- let bd = db._1
754- let bc = db._2
755- let dc = aS(Y)
756- let bl = dc._1
757- let aW = dc._2
758- let bn = dc._3
759- let aX = dc._4
760- let dd = bt(Y, toString(bO.caller), height)
761- let bA = dd._1
762- let by = dd._2
763- let bz = dd._3
764- let bj = dd._4
765- let de = (aQ(Y, toString(bO.caller)) + bz)
766- let ci = bL(Y, toString(bO.caller))
767- let cj = (ci + bz)
768- if (if ((Y == "3Mx6wBFzPJG2hUWNLy2mei8ZHbtmRZ6JJTG"))
769- then true
770- else (Y == "3Mrwe8BMFXLVdGcBhdf3T9YNUnrUEMHkDA8"))
771- then throw()
772- else if ((de == 0))
773- then throw("You have 0 available SWOP")
774- else if (!(an))
775- then throw("DApp is inactive at this moment")
776- else if ((de == 0))
777- then throw("You have 0 available SWOP")
778- else if ((fraction(99, aF(cx), 100) > bm))
779- then throw("Balance of share-token is greater than totalAmount")
780- else [IntegerEntry((((Y + "_") + toString(bO.caller)) + r), bA), IntegerEntry((Y + o), by), IntegerEntry((Y + p), height), IntegerEntry((((Y + "_") + toString(bO.caller)) + v), 0), Reissue(ax, de, true), IntegerEntry((((Y + "_") + toString(bO.caller)) + t), cj), IntegerEntry((((Y + "_") + toString(bO.caller)) + u), bz), ScriptTransfer(bO.caller, de, ax)]
593+@Callable(bK)
594+func claim (X) = {
595+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596+ let bl = aC(X)
597+ let cu = ba(X)
598+ let bc = cu._1
599+ let bb = cu._2
600+ let cv = aR(X)
601+ let bk = cv._1
602+ let aV = cv._2
603+ let bm = cv._3
604+ let aW = cv._4
605+ let cw = bt(X, bK.caller, 1)
606+ let bA = cw._1
607+ let by = cw._2
608+ let bz = cw._3
609+ let bi = cw._4
610+ let cx = (aP(X, bK.caller) + bz)
611+ let cd = bH(X, bK.caller)
612+ let ce = (cd + bz)
613+ if ((cx == 0))
614+ then throw("You have 0 available SWOP")
615+ else if (!(am))
616+ then throw("DApp is inactive at this moment")
617+ else if ((cx == 0))
618+ then throw("You have 0 available SWOP")
619+ else if ((fraction(99, aE(cs), 100) > bl))
620+ then throw("Balance of share-token is greater than totalAmount")
621+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
781622 }
782623
783624
784625
785-@Callable(bO)
786-func shutdown () = if (!(an))
787- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, h), "the cause wasn't specified")))
788- else if (!(containsElement([a, b, c], bO.callerPublicKey)))
626+@Callable(bK)
627+func shutdown () = if (!(am))
628+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
789630 then throw("Only admin can call this function")
790- else bM("Paused by admin")
631+ else bI("Paused by admin")
791632
792633
793634
794-@Callable(bO)
795-func activate () = if (an)
635+@Callable(bK)
636+func activate () = if (am)
796637 then throw("DApp is already active")
797- else if (!(containsElement([a, b, c], bO.callerPublicKey)))
638+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
798639 then throw("Only admin can call this function")
799- else [BooleanEntry(g, true), DeleteEntry(h)]
640+ else [BooleanEntry(f, true), DeleteEntry(g)]
800641
801642
802-@Verifier(df)
803-func dg () = {
804- let at = df
805- if ($isInstanceOf(at, "InvokeScriptTransaction"))
806- then {
807- let dh = at
808- let di = if ((dh.dApp == this))
809- then (dh.function == "egg1")
810- else false
811- let dj = if (if (if (sigVerify(df.bodyBytes, df.proofs[0], a))
812- then true
813- else sigVerify(df.bodyBytes, df.proofs[0], b))
814- then true
815- else sigVerify(df.bodyBytes, df.proofs[0], c))
816- then true
817- else sigVerify(df.bodyBytes, df.proofs[0], d)
818- if (di)
819- then dj
820- else false
821- }
822- else {
823- let dk = if (sigVerify(df.bodyBytes, df.proofs[0], a))
824- then 1
825- else 0
826- let dl = if (sigVerify(df.bodyBytes, df.proofs[1], b))
827- then 1
828- else 0
829- let dm = if (sigVerify(df.bodyBytes, df.proofs[2], c))
830- then 1
831- else 0
832- (((dk + dl) + dm) >= 2)
833- }
643+@Verifier(cy)
644+func cz () = {
645+ let as = cy
646+ let cA = if (sigVerify(cy.bodyBytes, cy.proofs[0], a))
647+ then 1
648+ else 0
649+ let cB = if (sigVerify(cy.bodyBytes, cy.proofs[1], b))
650+ then 1
651+ else 0
652+ let cC = if (sigVerify(cy.bodyBytes, cy.proofs[2], c))
653+ then 1
654+ else 0
655+ (((cA + cB) + cC) >= 2)
834656 }
835657

github/deemru/w8io/169f3d6 
215.55 ms