tx · 7JGivjj9bn4Snc1ZcCjCHw2xVgVY8vRwf1eHoPqicUd

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.15 15:03 [1880056] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "7JGivjj9bn4Snc1ZcCjCHw2xVgVY8vRwf1eHoPqicUd", "fee": 1400000, "feeAssetId": null, "timestamp": 1642248177969, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "3FhF8esxyShg1ZjSQK8QsXivaLPGhRiybnzzuCiyqa71VAUtN4i6heTvDJVdiM9BUL5GUTpZKWiNxKR17QoEVnoU", "5s31De73xaqe4Lj13rhXG2FjwAdA3CGZi4e1B56WVNWn8P2zD2ErYQjUbcdDRygjsu3AWCcWEw3ScEFuLmty4y6p", "5JuyPHPoYY687nftFzn63t7hHposhnEapkykAQq94j6qKa8fZGAXAoUESLKQiuiA349gYbYiTTm9eDmuXkHzoT4w" ], "script": "base64:AAIFAAAAAAAAB9IIAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoTCgFBEg50cmFuc2ZlclRvVXNlchoLCgFCEgZhbW91bnQaDAoBQxIHYXNzZXRJZBoJCgFEEgR0eXBlGhUKAUUSEGRBcHBTdGFrZWRUb2tlbnMaFAoBRhIPYXNzZXRJZFF1YW50aXR5GgoKAUcSBWFzc2V0GhkKAUgSFHRyYW5zZmVyVG9Vc2VyQW1vdW50GgYKAUkSAWkaCgoBShIFcG9vbHMaFAoBSxIPbGlxdWlkaXR5VG9rZW5zGhIKAUwSDXNlcnZpY2VUb2tlbnMaGwoBTRIWbGlxdWlkaXR5VG9rZW5EZWNpbWFscxoVCgFOEhBnZW5lcmF0ZVBvb2xLZXlzGhAKAU8SC2FjY3VtdWxhdGVkGiMKAVASHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cxoOCgFREglwb29sSW5kZXgaEwoBUhIObGlxdWlkaXR5VG9rZW4aIQoBUxIcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cxoqCgFUEiVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGhsKAVUSFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMaFAoBVhIPcG9vbEJhbGFuY2VLZXlzGgcKAVcSAiRsGgcKAVgSAiRzGgoKAVkSBSRhY2MwGgoKAVoSBSRmMF8xGg8KAWESCmRlcG9zaXRGZWUaEwoCYUESDXBvb2xBbW91bnRLZXkaEQoCYUISC3VzZXJBZGRyZXNzGhcKAmFDEhF1c2VyUG9vbEFtb3VudEtleRoWCgJhRBIQZEFwcEFzc2V0QWRkcmVzcxobCgJhRRIVbGlxdWlkdXR5QXNzZXRBZGRyZXNzGhsKAmFGEhVsaXF1aWRpdHlUb2tlbkRlY2ltYWwaEAoCYUcSCnBvb2xBbW91bnQaEAoCYUgSCnVzZXJBbW91bnQaCQoCYUkSA2ludBoaCgJhShIUdXNlckFtb3VudFdpdGhvdXRGZWUaCQoCYUsSA2ZlZRoTCgJhTBINbmV3UG9vbEFtb3VudBoXCgJhTRIRbmV3VXNlclBvb2xBbW91bnQaEwoCYU4SDWxvY2tUb2tlbnNLZXkaDgoCYU8SCHN0YXR1c2VzGgwKAmFQEgZzdGF0dXMaCAoCYVESAnR4GgwKAmFSEgZ2ZXJpZnkaCQoCYVMSA2ludhoVCgJhVBIPbG9ja1NoYXJlVG9rZW5zGhEKAmFVEgtkQXBwQWRkcmVzcxoNCgJhVhIHJG1hdGNoMRoKCgJhVxIEZEFwcBoTCgJhWBINcG9vbEZ1bmN0aW9ucxoTCgJhWRINc2lnbmVkQnlBZG1pbhoQCgJhWhIKYWRtMVNpZ25lZBoICgJhYRICJGEaCAoCYWISAiRpGgsKAmFjEgUkZjBfMhocCgJhZBIWcG9vbExpcXVpZGl0eVRva2VuS2V5cxoLCgJhZRIFJGYxXzEaCwoCYWYSBSRmMV8yGhoKAmFnEhRwb29sU2VydmljZVRva2VuS2V5cxoLCgJhaBIFJGYyXzEaCwoCYWkSBSRmMl8yGiMKAmFqEh1wb29sTGlxdWlkaXR5VG9rZW5EZWNpbWFsS2V5cxoLCgJhaxIFJGYzXzEaCwoCYWwSBSRmM18yGhQKAmFtEg5wb29sQWN0aXZlS2V5cxoLCgJhbhIFJGY0XzEaCwoCYW8SBSRmNF8yGg0KAmFwEgdyZWNvcmRzGhoKAmFxEhRnZW5lcmF0ZURlbGV0aW5nS2V5cxoMCgJhchIGcmVjb3JkGhAKAmFzEgpkZWxldGVLZXlzGgoKAmF0EgRuYW1lGhEKAmF1EgtkZXNjcmlwdGlvbhoOCgJhdhIIcXVhbnRpdHkaDgoCYXcSCGRlY2ltYWxzGggKAmF4EgJhOBoTCgJheRINYXNzZXRJZFN0cmluZxoICgJhehICaWQaEgoBYhINY29udHJvbGxlckZlZRoQCgJiYRIKYWRtMlNpZ25lZBoQCgJiYhIKYWRtM1NpZ25lZBoQCgFjEgtwbGF0Zm9ybUZlZRoRCgFkEgxhZG1pblB1YktleTEaEQoBZRIMYWRtaW5QdWJLZXkyGhEKAWYSDGFkbWluUHViS2V5MxoRCgFnEgxhZG1pblB1YktleTQaFgoBaBIRZ292ZXJtYW5jZUFkZHJlc3MaEAoBaRILZGVwb3NpdFR5cGUaEQoBahIMd2l0aGRyYXdUeXBlGhMKAWsSDmZhcm1pbmdBZGRyZXNzGhAKAWwSC3N3b3BGaVBvb2xzGhQKAW0SD3N3b3BGaUZ1bmN0aW9ucxoRCgFuEgxpc1Bv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AAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgkBAAAAAmFlAAAAAgUAAAABWQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAQAAAACYWcKAAAAAAFXBQAAAAFKCgAAAAABWAkAAZAAAAABBQAAAAFXCgAAAAABWQUAAAADbmlsCgEAAAACYWgAAAACAAAAAmFhAAAAAmFiAwkAAGcAAAACBQAAAAJhYgUAAAABWAUAAAACYWEJAQAAAAFTAAAAAgUAAAACYWEJAAGRAAAAAgUAAAABVwUAAAACYWIKAQAAAAJhaQAAAAIAAAACYWEAAAACYWIDCQAAZwAAAAIFAAAAAmFiBQAAAAFYBQAAAAJhYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAAAmFpAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgkBAAAAAmFoAAAAAgUAAAABWQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAQAAAACYWoKAAAAAAFXBQAAAAFKCgAAAAABWAkAAZAAAAABBQAAAAFXCgAAAAABWQUAAAADbmlsCgEAAAACYWsAAAACAAAAAmFhAAAAAmFiAwkAAGcAAAACBQAAAAJhYgUAAAABWAUAAAACYWEJAQAAAAFUAAAAAgUAAAACYWEJAAGRAAAAAgUAAAABVwUAAAACYWIKAQAAAAJhbAAAAAIAAAACYWEAAAACYWIDCQAAZwAAAAIFAAAAAmFiBQAAAAFYBQAAAAJhYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAAAmFsAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgkBAAAAAmFrAAAAAgUAAAABWQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAQAAAACYW0KAAAAAAFXBQAAAAFKCgAAAAABWAkAAZAAAAABBQAAAAFX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AAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACBQAAAAFZAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUAAAAAAAAAAAVAAAAAAAAAAAWAAAAAAAAAAAXAAAAAAAAAAAYAAAAAAAAAAAZAAAAAAAAAAAaAAAAAAAAAAAbAAAAAAAAAAAcAAAAAAAAAAAdAAAAAAAAAAAeAAAAAAAAAAAfAAAAAAAAAAAgAAAAAAAAAAAhAAAAAAAAAAAiAAAAAAAAAAAjAAAAAAAAAAAkAAAAAAAAAAAlAAAAAAAAAAAmAAAAAAAAAAAnAAAA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CQAAAgAAAAECAAAAFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBAAAAAmFjAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFa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", "height": 1880056, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8Wt8G9Y4s7vAsviL4koNi23THBRxGVaCoFQLc7cAHubF Next: 7JdeDJkNLEZgYZyedBSsuhHtu2dbTVw5n4uNKWT8vtL9 Diff:
OldNewDifferences
311311 let dAppAssetAddress = getDAppAssetAddress(pool)
312312 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
313313 let poolAmount = getIntegerValue(this, poolAmountKey)
314- let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
315- let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool, withdrawType)
316- let newPoolAmount = (poolAmount - userAmountWithoutFee)
317- let fee = (amount - userAmountWithoutFee)
314+ let transferToUserAmount = transferToUser(amount, fromBase58String(assetIdString), pool, withdrawType)
315+ let newPoolAmount = (poolAmount - amount)
318316 let newUserPoolAmount = (userAmount - amount)
319-[Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
317+[Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
320318 }
321319 else throw("Pool is not active!")
322320 }
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
1010 let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let adminPubKey2 = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
1616 let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1717
1818 let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
1919
2020 let depositType = "deposit"
2121
2222 let withdrawType = "withdraw"
2323
2424 let farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
2525
2626 let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
2727
2828 let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
2929
3030 func isPoolActive (pool) = {
3131 let kActive = (pool + "_active")
3232 let isActive = match getBoolean(this, kActive) {
3333 case boolean: Boolean =>
3434 boolean
3535 case _ =>
3636 throw("Pool is not active!")
3737 }
3838 isActive
3939 }
4040
4141
4242 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
4343 case string: String =>
4444 string
4545 case nothing =>
4646 throw("You try to deposit on unsupported pool")
4747 }
4848
4949
5050 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
5151 case string: String =>
5252 string
5353 case nothing =>
5454 throw("You try to withdraw from unsupported pool")
5555 }
5656
5757
5858 func getStakedAmount (poolAddress) = match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
5959 case staked: Int =>
6060 staked
6161 case nothing: Unit =>
6262 0
6363 case _ =>
6464 throw("Match error")
6565 }
6666
6767
6868 func transferToUser (amount,assetId,poolAddress,type) = {
6969 let dAppStakedTokens = getStakedAmount(poolAddress)
7070 let assetIdQuantity = match assetInfo(assetId) {
7171 case asset: Asset =>
7272 asset.quantity
7373 case _ =>
7474 throw("Can't find asset")
7575 }
7676 if ((dAppStakedTokens == 0))
7777 then amount
7878 else if ((type == depositType))
7979 then {
8080 let transferToUserAmount = fraction(amount, assetIdQuantity, dAppStakedTokens)
8181 transferToUserAmount
8282 }
8383 else {
8484 let transferToUserAmount = fraction(amount, dAppStakedTokens, assetIdQuantity)
8585 transferToUserAmount
8686 }
8787 }
8888
8989
9090 @Callable(i)
9191 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
9292 then {
9393 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
9494
9595 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
9696 let poolIndex = value(indexOf(pools, pool))
9797 let liquidityToken = liquidityTokens[poolIndex]
9898 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
9999 }
100100
101101 func generatePoolServiceTokenKeys (accumulated,pool) = {
102102 let poolIndex = value(indexOf(pools, pool))
103103 let liquidityToken = serviceTokens[poolIndex]
104104 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
105105 }
106106
107107 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
108108 let poolIndex = value(indexOf(pools, pool))
109109 let liquidityToken = liquidityTokenDecimals[poolIndex]
110110 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
111111 }
112112
113113 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
114114
115115 let poolBalanceKeys = {
116116 let $l = pools
117117 let $s = size($l)
118118 let $acc0 = nil
119119 func $f0_1 ($a,$i) = if (($i >= $s))
120120 then $a
121121 else generatePoolKeys($a, $l[$i])
122122
123123 func $f0_2 ($a,$i) = if (($i >= $s))
124124 then $a
125125 else throw("List size exceeds 20")
126126
127127 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
128128 }
129129 let poolLiquidityTokenKeys = {
130130 let $l = pools
131131 let $s = size($l)
132132 let $acc0 = nil
133133 func $f1_1 ($a,$i) = if (($i >= $s))
134134 then $a
135135 else generatePoolLiquidityTokenKeys($a, $l[$i])
136136
137137 func $f1_2 ($a,$i) = if (($i >= $s))
138138 then $a
139139 else throw("List size exceeds 20")
140140
141141 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
142142 }
143143 let poolServiceTokenKeys = {
144144 let $l = pools
145145 let $s = size($l)
146146 let $acc0 = nil
147147 func $f2_1 ($a,$i) = if (($i >= $s))
148148 then $a
149149 else generatePoolServiceTokenKeys($a, $l[$i])
150150
151151 func $f2_2 ($a,$i) = if (($i >= $s))
152152 then $a
153153 else throw("List size exceeds 20")
154154
155155 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
156156 }
157157 let poolLiquidityTokenDecimalKeys = {
158158 let $l = pools
159159 let $s = size($l)
160160 let $acc0 = nil
161161 func $f3_1 ($a,$i) = if (($i >= $s))
162162 then $a
163163 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
164164
165165 func $f3_2 ($a,$i) = if (($i >= $s))
166166 then $a
167167 else throw("List size exceeds 20")
168168
169169 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
170170 }
171171 let poolActiveKeys = {
172172 let $l = pools
173173 let $s = size($l)
174174 let $acc0 = nil
175175 func $f4_1 ($a,$i) = if (($i >= $s))
176176 then $a
177177 else generatePoolActiveKeys($a, $l[$i])
178178
179179 func $f4_2 ($a,$i) = if (($i >= $s))
180180 then $a
181181 else throw("List size exceeds 20")
182182
183183 $f4_2($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
184184 }
185185 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
186186 }
187187 else throw("Only admin can call this function")
188188
189189
190190
191191 @Callable(i)
192192 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
193193 then {
194194 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
195195
196196 let deleteKeys = {
197197 let $l = records
198198 let $s = size($l)
199199 let $acc0 = nil
200200 func $f0_1 ($a,$i) = if (($i >= $s))
201201 then $a
202202 else generateDeletingKeys($a, $l[$i])
203203
204204 func $f0_2 ($a,$i) = if (($i >= $s))
205205 then $a
206206 else throw("List size exceeds 100")
207207
208208 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
209209 }
210210 deleteKeys
211211 }
212212 else throw("Only admin can call this function")
213213
214214
215215
216216 @Callable(i)
217217 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
218218 then [Issue(name, description, quantity, decimals, true, unit, 0)]
219219 else throw("Only admin can call this function")
220220
221221
222222
223223 @Callable(a8)
224224 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
225225
226226
227227
228228 @Callable(i)
229229 func deposit (pool) = if ((size(i.payments) != 1))
230230 then throw("One attached payment expected")
231231 else {
232232 let amount = i.payments[0].amount
233233 let assetId = i.payments[0].assetId
234234 let assetIdString = match assetId {
235235 case id: ByteVector =>
236236 toBase58String(id)
237237 case _ =>
238238 throw("Match error")
239239 }
240240 if ((0 >= amount))
241241 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
242242 else {
243243 let poolAmountKey = (pool + "_asset_balance")
244244 let userAddress = toString(i.caller)
245245 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
246246 let dAppAssetAddress = getDAppAssetAddress(pool)
247247 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
248248 case string: String =>
249249 string
250250 case nothing =>
251251 throw("You try to deposit on unsupported pool")
252252 }
253253 if (isPoolActive(pool))
254254 then {
255255 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
256256 case asset: Asset =>
257257 asset.decimals
258258 case _ =>
259259 throw("Can't find asset")
260260 }
261261 if ((liquidutyAssetAddress != assetIdString))
262262 then throw("You attached wrong liquidity token from Swop.fi")
263263 else {
264264 let poolAmount = getIntegerValue(this, poolAmountKey)
265265 let userAmount = match getInteger(userPoolAmountKey) {
266266 case int: Int =>
267267 int
268268 case nothing =>
269269 0
270270 }
271271 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
272272 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(dAppAssetAddress), pool, depositType)
273273 let fee = (amount - userAmountWithoutFee)
274274 let newPoolAmount = ((poolAmount + amount) - fee)
275275 let newUserPoolAmount = (userAmount + transferToUserAmount)
276276 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
277277 [Reissue(fromBase58String(dAppAssetAddress), transferToUserAmount, true), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
278278 }
279279 }
280280 else throw("Pool is not active!")
281281 }
282282 }
283283
284284
285285
286286 @Callable(i)
287287 func withdraw (pool) = if ((size(i.payments) != 1))
288288 then throw("One attached payment expected")
289289 else {
290290 let amount = i.payments[0].amount
291291 let assetId = i.payments[0].assetId
292292 let assetIdString = match assetId {
293293 case id: ByteVector =>
294294 toBase58String(id)
295295 case _ =>
296296 throw("Match error")
297297 }
298298 if ((0 >= amount))
299299 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
300300 else if (isPoolActive(pool))
301301 then {
302302 let poolAmountKey = (pool + "_asset_balance")
303303 let userAddress = toString(i.caller)
304304 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
305305 let userAmount = match getInteger(userPoolAmountKey) {
306306 case int: Int =>
307307 int
308308 case nothing =>
309309 0
310310 }
311311 let dAppAssetAddress = getDAppAssetAddress(pool)
312312 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
313313 let poolAmount = getIntegerValue(this, poolAmountKey)
314- let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
315- let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool, withdrawType)
316- let newPoolAmount = (poolAmount - userAmountWithoutFee)
317- let fee = (amount - userAmountWithoutFee)
314+ let transferToUserAmount = transferToUser(amount, fromBase58String(assetIdString), pool, withdrawType)
315+ let newPoolAmount = (poolAmount - amount)
318316 let newUserPoolAmount = (userAmount - amount)
319-[Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
317+[Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
320318 }
321319 else throw("Pool is not active!")
322320 }
323321
324322
325323
326324 @Callable(i)
327325 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
328326 then {
329327 func generatePoolActiveKeys (accumulated,pool) = {
330328 let poolIndex = value(indexOf(pools, pool))
331329 let status = statuses[poolIndex]
332330 BooleanEntry((pool + "_active"), status) :: accumulated
333331 }
334332
335333 let poolActiveKeys = {
336334 let $l = pools
337335 let $s = size($l)
338336 let $acc0 = nil
339337 func $f0_1 ($a,$i) = if (($i >= $s))
340338 then $a
341339 else generatePoolActiveKeys($a, $l[$i])
342340
343341 func $f0_2 ($a,$i) = if (($i >= $s))
344342 then $a
345343 else throw("List size exceeds 100")
346344
347345 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
348346 }
349347 poolActiveKeys
350348 }
351349 else throw("Only admin can call this function")
352350
353351
354352 @Verifier(tx)
355353 func verify () = match tx {
356354 case inv: InvokeScriptTransaction =>
357355 let lockShareTokens = if ((inv.dApp == farmingAddress))
358356 then if (if ((inv.function == "lockShareTokens"))
359357 then true
360358 else (inv.function == "claim"))
361359 then true
362360 else (inv.function == "withdrawShareTokens")
363361 else false
364362 let dAppAddress = match inv.dApp {
365363 case dApp: Address =>
366364 toString(dApp)
367365 case _ =>
368366 throw("Transaction must have only address")
369367 }
370368 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
371369 then containsElement(swopFiFunctions, inv.function)
372370 else false
373371 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
374372 then true
375373 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
376374 then true
377375 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
378376 then true
379377 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
380378 if (if (lockShareTokens)
381379 then true
382380 else poolFunctions)
383381 then signedByAdmin
384382 else false
385383 case _ =>
386384 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
387385 then 1
388386 else 0
389387 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
390388 then 1
391389 else 0
392390 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
393391 then 1
394392 else 0
395393 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
396394 }
397395

github/deemru/w8io/03bedc9 
94.78 ms