tx · CTzBrCnLmh6v3spTLF6acEyKqs6UdUmuKhbRdCge7wNj

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.11.09 20:39 [1783785] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "CTzBrCnLmh6v3spTLF6acEyKqs6UdUmuKhbRdCge7wNj", "fee": 1400000, "feeAssetId": null, "timestamp": 1636479566977, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "4i1tAMts81hCAsrbtph4y4HA8nNz8hADgbdMPksUtgV17CJkrdPyms1xDMfdEyQdYwX8ECyRXzVtc8Xe43yKi9h" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgYKBBgYGBESBgoECAgBARIAEgMKAQgSBAoCCAEAAAAGAAAAAApkZXBvc2l0RmVlAAAAAAAAAAPoAAAAAA1jb250cm9sbGVyRmVlAAAAAAAAACcQAAAAAAtwbGF0Zm9ybUZlZQAAAAAAAAAnEAAAAAAMYWRtaW5QdWJLZXkxAQAAACBML0XVfOoUYZ0u5wVeWtFjxl6V510E+3IIEVV8EjlQeAAAAAAMYWRtaW5QdWJLZXkyAQAAACBML0XVfOoUYZ0u5wVeWtFjxl6V510E+3IIEVV8EjlQeAAAAAAMYWRtaW5QdWJLZXkzAQAAACBML0XVfOoUYZ0u5wVeWtFjxl6V510E+3IIEVV8EjlQeAAAAAYAAAACYTgBAAAABGluaXQAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAADEzUFBIN3g3aXFvYlc1eml5aVJDaWMxOXJRcUtyNm5QWWFLMV9hc3NldF9iYWxhbmNlAAAAAAAAbdStBQAAAANuaWwAAAABaQEAAAAIYWRkUG9vbHMAAAAEAAAABXBvb2xzAAAAD2xpcXVpZGl0eVRva2VucwAAAA1zZXJ2aWNlVG9rZW5zAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlAAAAAAAAAAAABQAAAAthY2N1bXVsYXRlZAoBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAJcG9vbEluZGV4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABXBvb2xzBQAAAARwb29sBAAAAA5saXF1aWRpdHlUb2tlbgkAAZEAAAACBQAAAA9saXF1aWRpdHlUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAANc2VydmljZVRva2VucwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAWbGlxdWlkaXR5VG9rZW5EZWNpbWFscwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9zZXJ2aWNlX3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAB19hY3RpdmUGBQAAAAthY2N1bXVsYXRlZAQAAAAPcG9vbEJhbGFuY2VLZXlzCgAAAAACJGwFAAAABXBvb2xz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bEJhbGFuY2VLZXlzBQAAABZwb29sTGlxdWlkaXR5VG9rZW5LZXlzBQAAABRwb29sU2VydmljZVRva2VuS2V5cwUAAAAdcG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMFAAAADnBvb2xBY3RpdmVLZXlzCQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgAAAAFpAQAAAAppc3N1ZVRva2VuAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAACHF1YW50aXR5AAAACGRlY2ltYWxzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAETAAAAAIJAARDAAAABwUAAAAEbmFtZQUAAAALZGVzY3JpcHRpb24FAAAACHF1YW50aXR5BQAAAAhkZWNpbWFscwYFAAAABHVuaXQAAAAAAAAAAAAFAAAAA25pbAkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24AAAACYTgBAAAABGNhbGwAAAAABAAAAApwbXRBbW91bnRBAAAAAAAAAAAKBAAAAApwbXRBbW91bnRCAAAAAAAAAAABBAAAAAxwbXREZWNpbWFsc0EAAAAAAAAAAAgEAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABgQAAAANc2hhcmVEZWNpbWFscwkAAGkAAAACCQAAZAAAAAIFAAAADHBtdERlY2ltYWxzQQUAAAAMcG10RGVjaW1hbHNCAAAAAAAAAAACBAAAAAJhOQkAAGwAAAAGBQAAAApwbXRBbW91bnRBBQAAAAxwbXREZWNpbWFsc0EAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQQUAAAAERE9XTgQAAAADYTEwCQAAbAAAAAYFAAAACnBtdEFtb3VudEIFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNCBQAAAARET1dOBAAAAAV0aGlyZAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA1zaGFyZURlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAAAVmb3V0aAkAAGsAAAADBQAAAAJhOQUAAAADYTEwBQAAAAV0aGlyZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAFZmlzcnQFAAAAAmE5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAZzZWNvbmQFAAAAA2ExMAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAFdGhpcmQFAAAABXRoaXJkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAVmb3V0aAUAAAAFZm91dGgFAAAAA25pbAAAAAFpAQAAAAdkZXBvc2l0AAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAQAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAB2Fzc2V0SWQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAADWFzc2V0SWRTdHJpbmcEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwCQACWAAAAAEFAAAAAmlkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAwkAAGcAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACAgAAAClEZXBvc2l0IGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAAAZhbW91bnQEAAAADXBvb2xBbW91bnRLZXkJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX2Fzc2V0X2JhbGFuY2UEAAAAC3VzZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARdXNlclBvb2xBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAA5fYXNzZXRfYmFsYW5jZQQAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzBAAAAAckbWF0Y2gwCQAEIgAAAAEJAAEsAAAAAgUAAAAEcG9vbAIAAAAQX2xpcXVpZGl0eV90b2tlbgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACZZb3UgdHJ5IHRvIGRlcG9zaXQgb24gdW5zdXBwb3J0ZWQgcG9vbAQAAAAVbGlxdWlkaXR5VG9rZW5EZWNpbWFsBAAAAAckbWF0Y2gwCQAD7AAAAAEJAAJZAAAAAQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFYXNzZXQFAAAAByRtYXRjaDAIBQAAAAVhc3NldAAAAAhkZWNpbWFscwkAAAIAAAABAgAAABBDYW4ndCBmaW5kIGFzc2V0AwkBAAAAAiE9AAAAAgUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzBQAAAA1hc3NldElkU3RyaW5nCQAAAgAAAAECAAAAL1lvdSBhdHRhY2hlZCB3cm9uZyBsaXF1aWRpdHkgdG9rZW4gZnJvbSBTd29wLmZpBAAAAApwb29sQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1wb29sQW1vdW50S2V5BAAAAAp1c2VyQW1vdW50BAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAEXVzZXJQb29sQW1vdW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50BAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwAAAAAAAAAAAABAAAAA1uZXdQb29sQW1vdW50CQAAZAAAAAIFAAAACnBvb2xBbW91bnQFAAAABmFtb3VudAQAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAAKZGVwb3NpdEZlZQUAAAAGSEFMRlVQCQEAAAAIZnJhY3Rpb24AAAAEBQAAAAZhbW91bnQAAAAAAAAAAAEFAAAADWNvbnRyb2xsZXJGZWUFAAAABkhBTEZVUAQAAAARbmV3VXNlclBvb2xBbW91bnQJAABkAAAAAgUAAAAKdXNlckFtb3VudAUAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXBvb2xBbW91bnRLZXkFAAAADW5ld1Bvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXVzZXJQb29sQW1vdW50S2V5BQAAABFuZXdVc2VyUG9vbEFtb3VudAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAARwb29sAAAABmFtb3VudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAApRGVwb3NpdCBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAAGYW1vdW50BAAAAA1wb29sQW1vdW50S2V5CQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlBAAAAAt1c2VyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAEXVzZXJQb29sQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfBQAAAAt1c2VyQWRkcmVzcwIAAAAOX2Fzc2V0X2JhbGFuY2UEAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQIAAAApWW91IHRyeSB0byB3aXRoZHJhdyBmcm9tIHVuc3VwcG9ydGVkIHBvb2wEAAAACnBvb2xBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXBvb2xBbW91bnRLZXkEAAAACnVzZXJBbW91bnQEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAARdXNlclBvb2xBbW91bnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAAAAAAAAAAAAAEAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAALcGxhdGZvcm1GZWUFAAAABkhBTEZVUAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAA1jb250cm9sbGVyRmVlBQAAAAZIQUxGVVAEAAAADW5ld1Bvb2xBbW91bnQJAABlAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAQYW1vdW50V2l0aG91dEZlZQMJAABnAAAAAgUAAAAKdXNlckFtb3VudAUAAAAGYW1vdW50BAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGUAAAACBQAAAAp1c2VyQW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBhbW91bnRXaXRob3V0RmVlCQACWQAAAAEFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANcG9vbEFtb3VudEtleQUAAAANbmV3UG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARdXNlclBvb2xBbW91bnRLZXkFAAAAEW5ld1VzZXJQb29sQW1vdW50BQAAAANuaWwJAAACAAAAAQIAAAAmWW91IGhhdmUgbm90IHN1Y2ggYmFsYW5jZSBmb3Igd2l0aGRyYXcAAAABAAAAAmI2AQAAAAJiNwAAAAAJAAH0AAAAAwgFAAAAAmI2AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACYjYAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACYjYAAAAPc2VuZGVyUHVibGljS2V5wTXtGA==", "height": 1783785, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J7B6yuv6AzVHTTog1W2SVGH85RGiLuswz6cc83S5Et4k Next: A9teUyf6k86uNxRqmnPdjuPQG5VWuMr2Vdm7Ngcc5a22 Diff:
OldNewDifferences
77
88 let platformFee = 10000
99
10-let adminPubKey1 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
10+let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
12-let adminPubKey2 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
12+let adminPubKey2 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1313
14-let adminPubKey3 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
14+let adminPubKey3 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1515
1616 @Callable(a8)
1717 func init () = [IntegerEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_asset_balance", 7197869)]
160160 let poolAmountKey = (pool + "_asset_balance")
161161 let userAddress = toString(i.caller)
162162 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
163- let dAppAssetAddress = match getString((pool + "_service_token")) {
163+ let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
164164 case string: String =>
165165 string
166166 case nothing =>
167167 throw("You try to deposit on unsupported pool")
168168 }
169- let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
170169 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
171170 case asset: Asset =>
172171 asset.decimals
194193
195194
196195 @Callable(i)
197-func withdraw (pool,userEarned) = {
198- let amount = i.payments[0].amount
199- let assetId = i.payments[0].assetId
200- let assetIdString = match assetId {
201- case id: ByteVector =>
202- toBase58String(id)
203- case _ =>
204- throw("Match error")
205- }
206- if ((size(i.payments) != 1))
207- then throw("One attached payment expected")
208- else if ((0 >= amount))
209- then throw(("Withdraw amount must be positive. Actual: " + toString(amount)))
210- else {
211- let poolAmountKey = (pool + "_asset_balance")
212- let userAddress = toString(i.caller)
213- let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
214- let userPoolEarnedKey = (((pool + "_") + userAddress) + "_earned")
215- let dAppAssetAddress = match getString((pool + "_service_token")) {
216- case string: String =>
217- string
218- case nothing =>
219- throw("You try to withdraw from unsupported pool")
196+func withdraw (pool,amount) = if ((0 >= amount))
197+ then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
198+ else {
199+ let poolAmountKey = (pool + "_asset_balance")
200+ let userAddress = toString(i.caller)
201+ let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
202+ let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
203+ case string: String =>
204+ string
205+ case nothing =>
206+ throw("You try to withdraw from unsupported pool")
207+ }
208+ let poolAmount = getIntegerValue(this, poolAmountKey)
209+ let userAmount = match getInteger(userPoolAmountKey) {
210+ case int: Int =>
211+ int
212+ case nothing =>
213+ 0
214+ }
215+ let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
216+ let newPoolAmount = (poolAmount - amountWithoutFee)
217+ if ((userAmount >= amount))
218+ then {
219+ let newUserPoolAmount = (userAmount - amount)
220+[ScriptTransfer(i.caller, amountWithoutFee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
220221 }
221- if ((dAppAssetAddress != assetIdString))
222- then throw("You attached an wrong token")
223- else {
224- let poolAmount = getIntegerValue(this, poolAmountKey)
225- let userAmount = match getInteger(userPoolAmountKey) {
226- case int: Int =>
227- int
228- case nothing =>
229- 0
230- }
231- let userEarnedBefore = match getInteger(userPoolEarnedKey) {
232- case int: Int =>
233- int
234- case nothing =>
235- 0
236- }
237- let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
238- let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
239- case asset: Asset =>
240- asset.decimals
241- case _ =>
242- throw("Can't find asset")
243- }
244- let userEarnedTotal = (userEarned + userEarnedBefore)
245- let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
246- let newPoolAmount = (poolAmount - amountWithoutFee)
247- if ((userAmount >= amount))
248- then {
249- let newUserPoolAmount = (userAmount - amountWithoutFee)
250-[IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount), IntegerEntry(userPoolEarnedKey, userEarnedTotal)]
251- }
252- else throw("You have not such balance for withdraw")
253- }
254- }
255- }
222+ else throw("You have not such balance for withdraw")
223+ }
256224
257225
258226 @Verifier(b6)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositFee = 1000
55
66 let controllerFee = 10000
77
88 let platformFee = 10000
99
10-let adminPubKey1 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
10+let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
12-let adminPubKey2 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
12+let adminPubKey2 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1313
14-let adminPubKey3 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
14+let adminPubKey3 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1515
1616 @Callable(a8)
1717 func init () = [IntegerEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_asset_balance", 7197869)]
1818
1919
2020
2121 @Callable(i)
2222 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
2323 then {
2424 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
2525
2626 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
2727 let poolIndex = value(indexOf(pools, pool))
2828 let liquidityToken = liquidityTokens[poolIndex]
2929 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
3030 }
3131
3232 func generatePoolServiceTokenKeys (accumulated,pool) = {
3333 let poolIndex = value(indexOf(pools, pool))
3434 let liquidityToken = serviceTokens[poolIndex]
3535 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
3636 }
3737
3838 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
3939 let poolIndex = value(indexOf(pools, pool))
4040 let liquidityToken = liquidityTokenDecimals[poolIndex]
4141 IntegerEntry((pool + "_service_token"), liquidityToken) :: accumulated
4242 }
4343
4444 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
4545
4646 let poolBalanceKeys = {
4747 let $l = pools
4848 let $s = size($l)
4949 let $acc0 = nil
5050 func 1 ($a,$i) = if (($i >= $s))
5151 then $a
5252 else generatePoolKeys($a, $l[$i])
5353
5454 func 2 ($a,$i) = if (($i >= $s))
5555 then $a
5656 else throw("List size exceeds 20")
5757
5858 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
5959 }
6060 let poolLiquidityTokenKeys = {
6161 let $l = pools
6262 let $s = size($l)
6363 let $acc0 = nil
6464 func 1 ($a,$i) = if (($i >= $s))
6565 then $a
6666 else generatePoolLiquidityTokenKeys($a, $l[$i])
6767
6868 func 2 ($a,$i) = if (($i >= $s))
6969 then $a
7070 else throw("List size exceeds 20")
7171
7272 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
7373 }
7474 let poolServiceTokenKeys = {
7575 let $l = pools
7676 let $s = size($l)
7777 let $acc0 = nil
7878 func 1 ($a,$i) = if (($i >= $s))
7979 then $a
8080 else generatePoolServiceTokenKeys($a, $l[$i])
8181
8282 func 2 ($a,$i) = if (($i >= $s))
8383 then $a
8484 else throw("List size exceeds 20")
8585
8686 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8787 }
8888 let poolLiquidityTokenDecimalKeys = {
8989 let $l = pools
9090 let $s = size($l)
9191 let $acc0 = nil
9292 func 1 ($a,$i) = if (($i >= $s))
9393 then $a
9494 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
9595
9696 func 2 ($a,$i) = if (($i >= $s))
9797 then $a
9898 else throw("List size exceeds 20")
9999
100100 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
101101 }
102102 let poolActiveKeys = {
103103 let $l = pools
104104 let $s = size($l)
105105 let $acc0 = nil
106106 func 1 ($a,$i) = if (($i >= $s))
107107 then $a
108108 else generatePoolActiveKeys($a, $l[$i])
109109
110110 func 2 ($a,$i) = if (($i >= $s))
111111 then $a
112112 else throw("List size exceeds 20")
113113
114114 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
115115 }
116116 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
117117 }
118118 else throw("Only admin can call this function")
119119
120120
121121
122122 @Callable(i)
123123 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
124124 then [Issue(name, description, quantity, decimals, true, unit, 0)]
125125 else throw("Only admin can call this function")
126126
127127
128128
129129 @Callable(a8)
130130 func call () = {
131131 let pmtAmountA = 10
132132 let pmtAmountB = 1
133133 let pmtDecimalsA = 8
134134 let pmtDecimalsB = 6
135135 let shareDecimals = ((pmtDecimalsA + pmtDecimalsB) / 2)
136136 let a9 = pow(pmtAmountA, pmtDecimalsA, 5, 1, pmtDecimalsA, DOWN)
137137 let a10 = pow(pmtAmountB, pmtDecimalsB, 5, 1, pmtDecimalsB, DOWN)
138138 let third = pow(10, 0, shareDecimals, 0, 0, DOWN)
139139 let fouth = fraction(a9, a10, third)
140140 [IntegerEntry("fisrt", a9), IntegerEntry("second", a10), IntegerEntry("third", third), IntegerEntry("fouth", fouth)]
141141 }
142142
143143
144144
145145 @Callable(i)
146146 func deposit (pool) = if ((size(i.payments) != 1))
147147 then throw("One attached payment expected")
148148 else {
149149 let amount = i.payments[0].amount
150150 let assetId = i.payments[0].assetId
151151 let assetIdString = match assetId {
152152 case id: ByteVector =>
153153 toBase58String(id)
154154 case _ =>
155155 throw("Match error")
156156 }
157157 if ((0 >= amount))
158158 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
159159 else {
160160 let poolAmountKey = (pool + "_asset_balance")
161161 let userAddress = toString(i.caller)
162162 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
163- let dAppAssetAddress = match getString((pool + "_service_token")) {
163+ let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
164164 case string: String =>
165165 string
166166 case nothing =>
167167 throw("You try to deposit on unsupported pool")
168168 }
169- let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
170169 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
171170 case asset: Asset =>
172171 asset.decimals
173172 case _ =>
174173 throw("Can't find asset")
175174 }
176175 if ((liquidutyAssetAddress != assetIdString))
177176 then throw("You attached wrong liquidity token from Swop.fi")
178177 else {
179178 let poolAmount = getIntegerValue(this, poolAmountKey)
180179 let userAmount = match getInteger(userPoolAmountKey) {
181180 case int: Int =>
182181 int
183182 case nothing =>
184183 0
185184 }
186185 let newPoolAmount = (poolAmount + amount)
187186 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
188187 let newUserPoolAmount = (userAmount + userAmountWithoutFee)
189188 [IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
190189 }
191190 }
192191 }
193192
194193
195194
196195 @Callable(i)
197-func withdraw (pool,userEarned) = {
198- let amount = i.payments[0].amount
199- let assetId = i.payments[0].assetId
200- let assetIdString = match assetId {
201- case id: ByteVector =>
202- toBase58String(id)
203- case _ =>
204- throw("Match error")
205- }
206- if ((size(i.payments) != 1))
207- then throw("One attached payment expected")
208- else if ((0 >= amount))
209- then throw(("Withdraw amount must be positive. Actual: " + toString(amount)))
210- else {
211- let poolAmountKey = (pool + "_asset_balance")
212- let userAddress = toString(i.caller)
213- let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
214- let userPoolEarnedKey = (((pool + "_") + userAddress) + "_earned")
215- let dAppAssetAddress = match getString((pool + "_service_token")) {
216- case string: String =>
217- string
218- case nothing =>
219- throw("You try to withdraw from unsupported pool")
196+func withdraw (pool,amount) = if ((0 >= amount))
197+ then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
198+ else {
199+ let poolAmountKey = (pool + "_asset_balance")
200+ let userAddress = toString(i.caller)
201+ let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
202+ let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
203+ case string: String =>
204+ string
205+ case nothing =>
206+ throw("You try to withdraw from unsupported pool")
207+ }
208+ let poolAmount = getIntegerValue(this, poolAmountKey)
209+ let userAmount = match getInteger(userPoolAmountKey) {
210+ case int: Int =>
211+ int
212+ case nothing =>
213+ 0
214+ }
215+ let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
216+ let newPoolAmount = (poolAmount - amountWithoutFee)
217+ if ((userAmount >= amount))
218+ then {
219+ let newUserPoolAmount = (userAmount - amount)
220+[ScriptTransfer(i.caller, amountWithoutFee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
220221 }
221- if ((dAppAssetAddress != assetIdString))
222- then throw("You attached an wrong token")
223- else {
224- let poolAmount = getIntegerValue(this, poolAmountKey)
225- let userAmount = match getInteger(userPoolAmountKey) {
226- case int: Int =>
227- int
228- case nothing =>
229- 0
230- }
231- let userEarnedBefore = match getInteger(userPoolEarnedKey) {
232- case int: Int =>
233- int
234- case nothing =>
235- 0
236- }
237- let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
238- let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
239- case asset: Asset =>
240- asset.decimals
241- case _ =>
242- throw("Can't find asset")
243- }
244- let userEarnedTotal = (userEarned + userEarnedBefore)
245- let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
246- let newPoolAmount = (poolAmount - amountWithoutFee)
247- if ((userAmount >= amount))
248- then {
249- let newUserPoolAmount = (userAmount - amountWithoutFee)
250-[IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount), IntegerEntry(userPoolEarnedKey, userEarnedTotal)]
251- }
252- else throw("You have not such balance for withdraw")
253- }
254- }
255- }
222+ else throw("You have not such balance for withdraw")
223+ }
256224
257225
258226 @Verifier(b6)
259227 func b7 () = sigVerify(b6.bodyBytes, b6.proofs[0], b6.senderPublicKey)
260228

github/deemru/w8io/169f3d6 
37.34 ms