tx · FM25eVbuBZQz3brG1BevUBxPuyccxJ5TBfFWmWpjHWhc

3N5qejBhCedYyTbK7Qgqxn2T6kubSeHt7pu:  -0.14000000 Waves

2021.10.28 14:05 [1766063] smart account 3N5qejBhCedYyTbK7Qgqxn2T6kubSeHt7pu > SELF 0.00000000 Waves

{ "type": 13, "id": "FM25eVbuBZQz3brG1BevUBxPuyccxJ5TBfFWmWpjHWhc", "fee": 14000000, "feeAssetId": null, "timestamp": 1635419123693, "version": 2, "chainId": 84, "sender": "3N5qejBhCedYyTbK7Qgqxn2T6kubSeHt7pu", "senderPublicKey": "Ese6jz6mtrhgwJWdXbAxHNHg2qzae5D2xXWuVF7tLfs8", "proofs": [ "5NiaUsLmUN1Xb4WTP1mN8y7MFdFGDZ6cc8E5W1d3s3kC8ny3mkb1EXjaZ9DqpafegjMVU4MuYFkMBGGFdAPYEkRL", "5ZJ9EfQ6ua1K94WuWx1DK5QEfQJtGJFL76Pu8tAMQnK9DFZVF6c9XK3igttCY2B2SS7z1KtzHV8zhA4zg3NJTLoh" ], "script": "base64:AAIFAAAAAAAAABEIAhIAEgMKAQESABIAEgASAAAAABMAAAAADGFkbWluUHViS2V5MQEAAAAgziDrH6xfwdIN/6jc9LbpeFKW8n6DL11Crgzyd6TZbxsAAAAADGFkbWluUHViS2V5MgEAAAAgziDrH6xfwdIN/6jc9LbpeFKW8n6DL11Crgzyd6TZbxsAAAAADGFkbWluUHViS2V5MwEAAAAgziDrH6xfwdIN/6jc9LbpeFKW8n6DL11Crgzyd6TZbxsAAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wAQAAACDOIOsfrF/B0g3/qNz0tul4UpbyfoMvXUKuDPJ3pNlvGwAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAARa2V5VXNlckVOTk9Mb2NrZWQCAAAADF9FTk5PX2Ftb3VudAAAAAASa2V5VG90YWxFTk5PTG9ja2VkAgAAABF0b3RhbF9FTk5PX2Ftb3VudAAAAAAYa2V5VXNlckVOTk9DbGFpbWVkQW1vdW50AgAAABRfRU5OT19jbGFpbWVkX2Ftb3VudAAAAAAca2V5VXNlckVOTk9MYXN0Q2xhaW1lZEFtb3VudAIAAAAZX0VOTk9fbGFzdF9jbGFpbWVkX2Ftb3VudAAAAAAUa2V5VXNlckVOTk9Mb2NrZWRUYWcCAAAABnNoYXJlXwAAAAAIaXNBY3RpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlBgAAAAAJc2hhcmVEYXRhAQAAACBbQ+QzUMC1aF2T3qieo6NeRn/NixQZhgbin5TRqlXoWQAAAAAERU5OTwEAAAAgFbvcV9OA6rL+53m/DeV6nxGYIu+IXr9brrnP32tIN3ABAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAARa2V5VXNlckVOTk9Mb2NrZWQAAAAAAAAAAAABAAAAEmdldFRvdGFsRU5OT0xvY2tlZAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5VG90YWxFTk5PTG9ja2VkAAAAAAAAAAAAAQAAAA5nZXRDYWxsZXJTaGFyZQAAAAEAAAAGY2FsbGVyBAAAAAtjYWxsZXJTaGFyZQkABBoAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAlzaGFyZURhdGEJAAEsAAAAAgUAAAAUa2V5VXNlckVOTk9Mb2NrZWRUYWcJAAQlAAAAAQUAAAAGY2FsbGVyBAAAABFjYWxsZXJTaGFyZUFtb3VudAQAAAAHJG1hdGNoMAUAAAALY2FsbGVyU2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFc2hhcmUFAAAAByRtYXRjaDAFAAAABXNoYXJlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAVzaGFyZQUAAAAHJG1hdGNoMAkAAAIAAAABAgAAADJPbmx5IGdvdmVybmFuY2UgcXVhbGlmaWVycyBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgUAAAARY2FsbGVyU2hhcmVBbW91bnQBAAAAEGdldENsYWltZWRBbW91bnQAAAABAAAABmNhbGxlcgQAAAAPY2FsbGVyV2l0aGRyYXduCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAZjYWxsZXIFAAAAGGtleVVzZXJFTk5PQ2xhaW1lZEFtb3VudAQAAAAVY2FsbGVyV2l0aGRyYXduQW1vdW50BAAAAAckbWF0Y2gwBQAAAA9jYWxsZXJXaXRoZHJhd24DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFc2hhcmUFAAAAByRtYXRjaDAFAAAABXNoYXJlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAVzaGFyZQUAAAAHJG1hdGNoMAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgUAAAAVY2FsbGVyV2l0aGRyYXduQW1vdW50AAAABgAAAAFpAQAAAAhsb2NrRU5OTwAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACyR0MDE4OTYxOTcxCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwMTg5NjE5NzEAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDAxODk2MTk3MQAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABEVOTk8JAAACAAAAAQIAAAA0SW5jb3JyZWN0IHBheW1lbnQgYXNzZXRJZCBvbmx5IEVubm8gQ2FzaCBpcyBhbGxvd2VkLgQAAAAOdXNlckVOTk9Mb2NrZWQJAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAARdXNlckVOTk9Mb2NrZWROZXcJAABkAAAAAgUAAAAOdXNlckVOTk9Mb2NrZWQFAAAACXBtdEFtb3VudAQAAAAPdG90YWxFTk5PTG9ja2VkCQEAAAASZ2V0VG90YWxFTk5PTG9ja2VkAAAAAAQAAAASdG90YWxFTk5PTG9ja2VkTmV3CQAAZAAAAAIFAAAAD3RvdGFsRU5OT0xvY2tlZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAABFrZXlVc2VyRU5OT0xvY2tlZAUAAAARdXNlckVOTk9Mb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsRU5OT0xvY2tlZAUAAAASdG90YWxFTk5PTG9ja2VkTmV3BQAAAANuaWwAAAABaQEAAAAMd2l0aGRyYXdFTk5PAAAAAQAAAA53aXRoZHJhd0Ftb3VudAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAOd2l0aGRyYXdBbW91bnQJAAACAAAAAQIAAAATd2l0aGRyYXdBbW91bnQgPD0gMAQAAAAPdG90YWxFTk5PTG9ja2VkCQEAAAASZ2V0VG90YWxFTk5PTG9ja2VkAAAAAAQAAAAOdXNlckVOTk9Mb2NrZWQJAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAABmAAAAAgUAAAAOd2l0aGRyYXdBbW91bnQFAAAAD3RvdGFsRU5OT0xvY2tlZAkAAAIAAAABAgAAADF3aXRoZHJhd0Ftb3VudCBpcyBtb3JlIHRoYW4gYXZhaWxhYmxlIHRvIHdpdGhkcmF3AwkAAGYAAAACBQAAAA53aXRoZHJhd0Ftb3VudAUAAAAOdXNlckVOTk9Mb2NrZWQJAAACAAAAAQIAAAA0WW91IGFyZSB0cnlpbmcgdG8gdW5zdGFrZSBtb3JlIHRoYW4geW91IGhhdmUgc3Rha2VkLgQAAAASdG90YWxFTk5PTG9ja2VkTmV3CQAAZQAAAAIFAAAAD3RvdGFsRU5OT0xvY2tlZAUAAAAOd2l0aGRyYXdBbW91bnQEAAAAEXVzZXJFTk5PYW1vdW50TmV3CQAAZQAAAAIFAAAADnVzZXJFTk5PTG9ja2VkBQAAAA53aXRoZHJhd0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlckVOTk9Mb2NrZWQFAAAAEXVzZXJFTk5PYW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlUb3RhbEVOTk9Mb2NrZWQFAAAAEnRvdGFsRU5OT0xvY2tlZE5ldwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADndpdGhkcmF3QW1vdW50BQAAAARFTk5PBQAAAANuaWwAAAABaQEAAAAUY2xhaW1BbmRXaXRoZHJhd0VOTk8AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAAl1c2VyU2hhcmUJAQAAAA5nZXRDYWxsZXJTaGFyZQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABBnZXRDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAtjbGFpbUFtb3VudAkAAGUAAAACBQAAAAl1c2VyU2hhcmUFAAAAEXVzZXJDbGFpbWVkQW1vdW50BAAAAA90b3RhbEVOTk9Mb2NrZWQJAQAAABJnZXRUb3RhbEVOTk9Mb2NrZWQAAAAAAwkAAGYAAAACBQAAAAtjbGFpbUFtb3VudAUAAAAPdG90YWxFTk5PTG9ja2VkCQAAAgAAAAECAAAALmNsYWltQW1vdW50IGlzIG1vcmUgdGhhbiBhdmFpbGFibGUgdG8gd2l0aGRyYXcDCQAAZwAAAAIAAAAAAAAAAAAFAAAAC2NsYWltQW1vdW50CQAAAgAAAAECAAAAIkNsYWltIGFtb3VudCBtdXN0IGJlIGJpZ2dlciB0aGFuIDAEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BQAAAARFTk5PCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyRU5OT0NsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyRU5OT0xhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAUAAAADbmlsAAAAAWkBAAAAEWNsYWltQW5kU3Rha2VFTk5PAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAJdXNlclNoYXJlCQEAAAAOZ2V0Q2FsbGVyU2hhcmUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAQZ2V0Q2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAALY2xhaW1BbW91bnQJAABlAAAAAgUAAAAJdXNlclNoYXJlBQAAABF1c2VyQ2xhaW1lZEFtb3VudAMJAABnAAAAAgAAAAAAAAAAAAUAAAALY2xhaW1BbW91bnQJAAACAAAAAQIAAAAiQ2xhaW0gYW1vdW50IG11c3QgYmUgYmlnZ2VyIHRoYW4gMAQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAAA51c2VyRU5OT0xvY2tlZAkBAAAAEWdldFVzZXJFTk5PTG9ja2VkAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABF1c2VyRU5OT0xvY2tlZE5ldwkAAGQAAAACBQAAAA51c2VyRU5OT0xvY2tlZAUAAAALY2xhaW1BbW91bnQEAAAAD3RvdGFsRU5OT0xvY2tlZAkBAAAAEmdldFRvdGFsRU5OT0xvY2tlZAAAAAAEAAAAEnRvdGFsRU5OT0xvY2tlZE5ldwkAAGQAAAACBQAAAA90b3RhbEVOTk9Mb2NrZWQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABFrZXlVc2VyRU5OT0xvY2tlZAUAAAARdXNlckVOTk9Mb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsRU5OT0xvY2tlZAUAAAASdG90YWxFTk5PTG9ja2VkTmV3BQAAAANuaWwAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABJhZG1pblB1YktleTFTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAAClA6Tmw==", "height": 1766063, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GbznBGgfwacLpZXqqXWdoGfd3AAYrbt9pXZi4BiPhecs Next: 6f1RKAwJURygkYjSvWC9j7N7Akp3qMXEDwoiT7PVw3GK Diff:
OldNewDifferences
9494 else {
9595 let totalENNOLocked = getTotalENNOLocked()
9696 let userENNOLocked = getUserENNOLocked(i.caller)
97- if ((withdrawAmount > userENNOLocked))
98- then throw("You are trying to unstake more than you have staked.")
99- else {
100- let totalENNOLockedNew = (totalENNOLocked - withdrawAmount)
101- let userENNOamountNew = (userENNOLocked - withdrawAmount)
97+ if ((withdrawAmount > totalENNOLocked))
98+ then throw("withdrawAmount is more than available to withdraw")
99+ else if ((withdrawAmount > userENNOLocked))
100+ then throw("You are trying to unstake more than you have staked.")
101+ else {
102+ let totalENNOLockedNew = (totalENNOLocked - withdrawAmount)
103+ let userENNOamountNew = (userENNOLocked - withdrawAmount)
102104 [IntegerEntry((toString(i.caller) + keyUserENNOLocked), userENNOamountNew), IntegerEntry(keyTotalENNOLocked, totalENNOLockedNew), ScriptTransfer(i.caller, withdrawAmount, ENNO)]
103- }
105+ }
104106 }
105107
106108
112114 let userShare = getCallerShare(i.caller)
113115 let userClaimedAmount = getClaimedAmount(i.caller)
114116 let claimAmount = (userShare - userClaimedAmount)
115- if ((0 >= claimAmount))
116- then throw("Claim amount must be bigger than 0")
117- else {
118- let userClaimedAmountNew = (userClaimedAmount + claimAmount)
117+ let totalENNOLocked = getTotalENNOLocked()
118+ if ((claimAmount > totalENNOLocked))
119+ then throw("claimAmount is more than available to withdraw")
120+ else if ((0 >= claimAmount))
121+ then throw("Claim amount must be bigger than 0")
122+ else {
123+ let userClaimedAmountNew = (userClaimedAmount + claimAmount)
119124 [ScriptTransfer(i.caller, claimAmount, ENNO), IntegerEntry((toString(i.caller) + keyUserENNOClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserENNOLastClaimedAmount), claimAmount)]
120- }
125+ }
121126 }
122127
123128
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminPubKey1 = base58'Ese6jz6mtrhgwJWdXbAxHNHg2qzae5D2xXWuVF7tLfs8'
55
66 let adminPubKey2 = base58'Ese6jz6mtrhgwJWdXbAxHNHg2qzae5D2xXWuVF7tLfs8'
77
88 let adminPubKey3 = base58'Ese6jz6mtrhgwJWdXbAxHNHg2qzae5D2xXWuVF7tLfs8'
99
1010 let adminPubKeyStartStop = base58'Ese6jz6mtrhgwJWdXbAxHNHg2qzae5D2xXWuVF7tLfs8'
1111
1212 let keyActive = "active"
1313
1414 let keyCause = "shutdown_cause"
1515
1616 let keyUserENNOLocked = "_ENNO_amount"
1717
1818 let keyTotalENNOLocked = "total_ENNO_amount"
1919
2020 let keyUserENNOClaimedAmount = "_ENNO_claimed_amount"
2121
2222 let keyUserENNOLastClaimedAmount = "_ENNO_last_claimed_amount"
2323
2424 let keyUserENNOLockedTag = "share_"
2525
2626 let isActive = valueOrElse(getBoolean(this, keyActive), true)
2727
2828 let shareData = base58'79G9MRTWPsir5gThDeuicpBuQxx8UFNqVaDUYcRfWtPA'
2929
3030 let ENNO = base58'2Tqhz5PWbkijnzYpdLxLDFfVDw5ALQWm2rmxQ79ooMRZ'
3131
3232 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
3333
3434
3535 func getUserENNOLocked (user) = valueOrElse(getInteger(this, (toString(user) + keyUserENNOLocked)), 0)
3636
3737
3838 func getTotalENNOLocked () = valueOrElse(getInteger(this, keyTotalENNOLocked), 0)
3939
4040
4141 func getCallerShare (caller) = {
4242 let callerShare = getInteger(addressFromPublicKey(shareData), (keyUserENNOLockedTag + toString(caller)))
4343 let callerShareAmount = match callerShare {
4444 case share: Int =>
4545 share
4646 case share: Unit =>
4747 throw("Only governance qualifiers can call this function.")
4848 case _ =>
4949 throw("Match error")
5050 }
5151 callerShareAmount
5252 }
5353
5454
5555 func getClaimedAmount (caller) = {
5656 let callerWithdrawn = getInteger(this, (toString(caller) + keyUserENNOClaimedAmount))
5757 let callerWithdrawnAmount = match callerWithdrawn {
5858 case share: Int =>
5959 share
6060 case share: Unit =>
6161 0
6262 case _ =>
6363 throw("Match error")
6464 }
6565 callerWithdrawnAmount
6666 }
6767
6868
6969 @Callable(i)
7070 func lockENNO () = if (!(isActive))
7171 then throw("DApp is inactive at this moment")
7272 else {
7373 let $t018961971 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
7474 let pmtAmount = $t018961971._1
7575 let pmtAssetId = $t018961971._2
7676 if ((pmtAssetId != ENNO))
7777 then throw("Incorrect payment assetId only Enno Cash is allowed.")
7878 else {
7979 let userENNOLocked = getUserENNOLocked(i.originCaller)
8080 let userENNOLockedNew = (userENNOLocked + pmtAmount)
8181 let totalENNOLocked = getTotalENNOLocked()
8282 let totalENNOLockedNew = (totalENNOLocked + pmtAmount)
8383 [IntegerEntry((toString(i.originCaller) + keyUserENNOLocked), userENNOLockedNew), IntegerEntry(keyTotalENNOLocked, totalENNOLockedNew)]
8484 }
8585 }
8686
8787
8888
8989 @Callable(i)
9090 func withdrawENNO (withdrawAmount) = if (!(isActive))
9191 then throw("DApp is inactive at this moment")
9292 else if ((0 >= withdrawAmount))
9393 then throw("withdrawAmount <= 0")
9494 else {
9595 let totalENNOLocked = getTotalENNOLocked()
9696 let userENNOLocked = getUserENNOLocked(i.caller)
97- if ((withdrawAmount > userENNOLocked))
98- then throw("You are trying to unstake more than you have staked.")
99- else {
100- let totalENNOLockedNew = (totalENNOLocked - withdrawAmount)
101- let userENNOamountNew = (userENNOLocked - withdrawAmount)
97+ if ((withdrawAmount > totalENNOLocked))
98+ then throw("withdrawAmount is more than available to withdraw")
99+ else if ((withdrawAmount > userENNOLocked))
100+ then throw("You are trying to unstake more than you have staked.")
101+ else {
102+ let totalENNOLockedNew = (totalENNOLocked - withdrawAmount)
103+ let userENNOamountNew = (userENNOLocked - withdrawAmount)
102104 [IntegerEntry((toString(i.caller) + keyUserENNOLocked), userENNOamountNew), IntegerEntry(keyTotalENNOLocked, totalENNOLockedNew), ScriptTransfer(i.caller, withdrawAmount, ENNO)]
103- }
105+ }
104106 }
105107
106108
107109
108110 @Callable(i)
109111 func claimAndWithdrawENNO () = if (!(isActive))
110112 then throw("DApp is inactive at this moment")
111113 else {
112114 let userShare = getCallerShare(i.caller)
113115 let userClaimedAmount = getClaimedAmount(i.caller)
114116 let claimAmount = (userShare - userClaimedAmount)
115- if ((0 >= claimAmount))
116- then throw("Claim amount must be bigger than 0")
117- else {
118- let userClaimedAmountNew = (userClaimedAmount + claimAmount)
117+ let totalENNOLocked = getTotalENNOLocked()
118+ if ((claimAmount > totalENNOLocked))
119+ then throw("claimAmount is more than available to withdraw")
120+ else if ((0 >= claimAmount))
121+ then throw("Claim amount must be bigger than 0")
122+ else {
123+ let userClaimedAmountNew = (userClaimedAmount + claimAmount)
119124 [ScriptTransfer(i.caller, claimAmount, ENNO), IntegerEntry((toString(i.caller) + keyUserENNOClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserENNOLastClaimedAmount), claimAmount)]
120- }
125+ }
121126 }
122127
123128
124129
125130 @Callable(i)
126131 func claimAndStakeENNO () = if (!(isActive))
127132 then throw("DApp is inactive at this moment")
128133 else {
129134 let userShare = getCallerShare(i.caller)
130135 let userClaimedAmount = getClaimedAmount(i.caller)
131136 let claimAmount = (userShare - userClaimedAmount)
132137 if ((0 >= claimAmount))
133138 then throw("Claim amount must be bigger than 0")
134139 else {
135140 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
136141 let userENNOLocked = getUserENNOLocked(i.caller)
137142 let userENNOLockedNew = (userENNOLocked + claimAmount)
138143 let totalENNOLocked = getTotalENNOLocked()
139144 let totalENNOLockedNew = (totalENNOLocked + claimAmount)
140145 [IntegerEntry((toString(i.caller) + keyUserENNOLocked), userENNOLockedNew), IntegerEntry(keyTotalENNOLocked, totalENNOLockedNew)]
141146 }
142147 }
143148
144149
145150
146151 @Callable(i)
147152 func shutdown () = if (!(isActive))
148153 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
149154 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
150155 then throw("Only admin can call this function")
151156 else suspend("Paused by admin")
152157
153158
154159
155160 @Callable(i)
156161 func activate () = if (isActive)
157162 then throw("DApp is already active")
158163 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
159164 then throw("Only admin can call this function")
160165 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
161166
162167
163168 @Verifier(tx)
164169 func verify () = {
165170 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
166171 then 1
167172 else 0
168173 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
169174 then 1
170175 else 0
171176 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
172177 then 1
173178 else 0
174179 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
175180 }
176181

github/deemru/w8io/169f3d6 
41.10 ms