tx · B7GaSXMisByH2ddWTBw2WVwS6So1ExeHYWVfGU9Pscub

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.14 14:38 [1878571] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "B7GaSXMisByH2ddWTBw2WVwS6So1ExeHYWVfGU9Pscub", "fee": 1400000, "feeAssetId": null, "timestamp": 1642160427521, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "5PmMLKexHt7rEdkPvQXBXwzBMTJyVe3UiXx4GvJkYeSioCXAe4VkhxVTB8awEMzZJ1F4ArePkuiScyYyvRrQmxZU", "5PF6uudT1M9G9BXApzuR7bSAYqzhD6oa9EnEvzvbr5Jov5WCNHHRJfob7s3jedHTStV8Kik33uabdPq57X4rFbKC", "388xqogMawnustWEg671zj9fLuJSiMdRjSMo9H61bAyM7oCDPBsB5yRSZfB5S7QgNVkNS1yFXBS8gjCJezwDAiW9" ], "script": "base64:AAIFAAAAAAAAB58IAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoMCgFBEgdhc3NldElkGhUKAUISEGRBcHBTdGFrZWRUb2tlbnMaFAoBQxIPYXNzZXRJZFF1YW50aXR5GgoKAUQSBWFzc2V0GhkKAUUSFHRyYW5zZmVyVG9Vc2VyQW1vdW50GgYKAUYSAWkaCgoBRxIFcG9vbHMaFAoBSBIPbGlxdWlkaXR5VG9rZW5zGhIKAUkSDXNlcnZpY2VUb2tlbnMaGwoBShIWbGlxdWlkaXR5VG9rZW5EZWNpbWFscxoVCgFLEhBnZW5lcmF0ZVBvb2xLZXlzGhAKAUwSC2FjY3VtdWxhdGVkGiMKAU0SHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cxoOCgFOEglwb29sSW5kZXgaEwoBTxIObGlxdWlkaXR5VG9rZW4aIQoBUBIcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cxoqCgFREiVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGhsKAVISFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMaFAoBUxIPcG9vbEJhbGFuY2VLZXlzGgcKAVQSAiRsGgcKAVUSAiRzGgoKAVYSBSRhY2MwGgoKAVcSBSRmMF8xGgcKAVgSAiRhGgcKAVkSAiRpGgoKAVoSBSRmMF8yGg8KAWESCmRlcG9zaXRGZWUaFgoCYUESEGRBcHBBc3NldEFkZHJlc3MaGwoCYUISFWxpcXVpZHV0eUFzc2V0QWRkcmVzcxobCgJhQxIVbGlxdWlkaXR5VG9rZW5EZWNpbWFsGhAKAmFEEgpwb29sQW1vdW50GhAKAmFFEgp1c2VyQW1vdW50GgkKAmFGEgNpbnQaGgoCYUcSFHVzZXJBbW91bnRXaXRob3V0RmVlGgkKAmFIEgNmZWUaEwoCYUkSDW5ld1Bvb2xBbW91bnQaFwoCYUoSEW5ld1VzZXJQb29sQW1vdW50GhMKAmFLEg1sb2NrVG9rZW5zS2V5Gg4KAmFMEghzdGF0dXNlcxoMCgJhTRIGc3RhdHVzGggKAmFOEgJ0eBoMCgJhTxIGdmVyaWZ5GgkKAmFQEgNpbnYaFQoCYVESD2xvY2tTaGFyZVRva2VucxoRCgJhUhILZEFwcEFkZHJlc3MaDQoCYVMSByRtYXRjaDEaCgoCYVQSBGRBcHAaEwoCYVUSDXBvb2xGdW5jdGlvbnMaEwoCYVYSDXNpZ25lZEJ5QWRtaW4aEAoCYVcSCmFkbTFTaWduZWQaEAoCYVgSCmFkbTJTaWduZWQaEAoCYVkSCmFkbTNTaWduZWQaHAoCYWESFnBvb2xMaXF1aWRpdHlUb2tlbktleXMaCwoCYWISBSRmMV8xGgsKAmFjEgUkZjFfMhoaCgJhZBIUcG9vbFNlcnZpY2VUb2tlbktleXMaCwoCYWUSBSRmMl8xGgsKAmFmEgUkZjJfMhojCgJhZxIdcG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMaCwoCYWgSBSRmM18xGgsKAmFpEgUkZjNfMhoUCgJhahIOcG9vbEFjdGl2ZUtleXMaCwoCYWsSBSRmNF8xGgsKAmFsEgUkZjRfMhoNCgJhbRIHcmVjb3JkcxoaCgJhbhIUZ2VuZXJhdGVEZWxldGluZ0tleXMaDAoCYW8SBnJlY29yZBoQCgJhcBIKZGVsZXRlS2V5cxoKCgJhcRIEbmFtZRoRCgJhchILZGVzY3JpcHRpb24aDgoCYXMSCHF1YW50aXR5Gg4KAmF0EghkZWNpbWFscxoICgJhdRICYTgaEwoCYXYSDWFzc2V0SWRTdHJpbmcaCAoCYXcSAmlkGhMKAmF4Eg1wb29sQW1vdW50S2V5GhEKAmF5Egt1c2VyQWRkcmVzcxoXCgJhehIRdXNlclBvb2xBbW91bnRLZXkaEgoBYhINY29udHJvbGxlckZlZRoQCgFjEgtwbGF0Zm9ybUZlZRoRCgFkEgxhZG1pblB1YktleTEaEQoBZRIMYWRtaW5QdWJLZXkyGhEKAWYSDGFkbWluUHViS2V5MxoRCgFnEgxhZG1pblB1YktleTQaFgoBaBIRZ292ZXJtYW5jZUFkZHJlc3MaEwoBaRIOZmFybWluZ0FkZHJlc3MaEAoBahILc3dvcEZpUG9vbHMaFAoBaxIPc3dvcEZpRnVuY3Rpb25zGhEKAWwSDGlzUG9vbEFjdGl2ZRoJCgFtEgRwb29sGgwKAW4SB2tBY3RpdmUaDQoBbxIIaXNBY3RpdmUaDAoBcBIHJG1hdGNoMBoMCgFxEgdib29sZWFuGhgKAXISE2dl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AVgJAAGRAAAAAgUAAAABVAUAAAABWQoBAAAAAVoAAAACAAAAAVgAAAABWQMJAABnAAAAAgUAAAABWQUAAAABVQUAAAABWAkAAAIAAAABAgAAABVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQAAAAFaAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAA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emUgZXhjZWVkcyAxMDAJAQAAAAFaAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAAB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", "height": 1878571, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 882Pwnx4aZgGbAbErjgAqKnkmFrYPUzWwCCVCssPRtXk Next: 9geSeobvSjdTMtjczoKTUS2UWBcNiv6GjXEqDY5HPqq6 Diff:
OldNewDifferences
263263 let newPoolAmount = ((poolAmount + amount) - fee)
264264 let newUserPoolAmount = (userAmount + transferToUserAmount)
265265 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
266-[Reissue(fromBase58String(dAppAssetAddress), transferToUserAmount, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
266+[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)]
267267 }
268268 }
269269 else throw("Pool is not active!")
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 farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
2121
2222 let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
2323
2424 let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
2525
2626 func isPoolActive (pool) = {
2727 let kActive = (pool + "_active")
2828 let isActive = match getBoolean(this, kActive) {
2929 case boolean: Boolean =>
3030 boolean
3131 case _ =>
3232 throw("Pool is not active!")
3333 }
3434 isActive
3535 }
3636
3737
3838 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
3939 case string: String =>
4040 string
4141 case nothing =>
4242 throw("You try to deposit on unsupported pool")
4343 }
4444
4545
4646 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
4747 case string: String =>
4848 string
4949 case nothing =>
5050 throw("You try to withdraw from unsupported pool")
5151 }
5252
5353
5454 func getStakedAmount (poolAddress) = match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
5555 case staked: Int =>
5656 staked
5757 case nothing: Unit =>
5858 0
5959 case _ =>
6060 throw("Match error")
6161 }
6262
6363
6464 func transferToUser (amount,assetId,poolAddress) = {
6565 let dAppStakedTokens = getStakedAmount(poolAddress)
6666 let assetIdQuantity = match assetInfo(assetId) {
6767 case asset: Asset =>
6868 asset.quantity
6969 case _ =>
7070 throw("Can't find asset")
7171 }
7272 let transferToUserAmount = fraction(amount, assetIdQuantity, dAppStakedTokens)
7373 if ((transferToUserAmount == 0))
7474 then amount
7575 else transferToUserAmount
7676 }
7777
7878
7979 @Callable(i)
8080 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
8181 then {
8282 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
8383
8484 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
8585 let poolIndex = value(indexOf(pools, pool))
8686 let liquidityToken = liquidityTokens[poolIndex]
8787 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
8888 }
8989
9090 func generatePoolServiceTokenKeys (accumulated,pool) = {
9191 let poolIndex = value(indexOf(pools, pool))
9292 let liquidityToken = serviceTokens[poolIndex]
9393 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
9494 }
9595
9696 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
9797 let poolIndex = value(indexOf(pools, pool))
9898 let liquidityToken = liquidityTokenDecimals[poolIndex]
9999 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
100100 }
101101
102102 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
103103
104104 let poolBalanceKeys = {
105105 let $l = pools
106106 let $s = size($l)
107107 let $acc0 = nil
108108 func $f0_1 ($a,$i) = if (($i >= $s))
109109 then $a
110110 else generatePoolKeys($a, $l[$i])
111111
112112 func $f0_2 ($a,$i) = if (($i >= $s))
113113 then $a
114114 else throw("List size exceeds 20")
115115
116116 $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)
117117 }
118118 let poolLiquidityTokenKeys = {
119119 let $l = pools
120120 let $s = size($l)
121121 let $acc0 = nil
122122 func $f1_1 ($a,$i) = if (($i >= $s))
123123 then $a
124124 else generatePoolLiquidityTokenKeys($a, $l[$i])
125125
126126 func $f1_2 ($a,$i) = if (($i >= $s))
127127 then $a
128128 else throw("List size exceeds 20")
129129
130130 $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)
131131 }
132132 let poolServiceTokenKeys = {
133133 let $l = pools
134134 let $s = size($l)
135135 let $acc0 = nil
136136 func $f2_1 ($a,$i) = if (($i >= $s))
137137 then $a
138138 else generatePoolServiceTokenKeys($a, $l[$i])
139139
140140 func $f2_2 ($a,$i) = if (($i >= $s))
141141 then $a
142142 else throw("List size exceeds 20")
143143
144144 $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)
145145 }
146146 let poolLiquidityTokenDecimalKeys = {
147147 let $l = pools
148148 let $s = size($l)
149149 let $acc0 = nil
150150 func $f3_1 ($a,$i) = if (($i >= $s))
151151 then $a
152152 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
153153
154154 func $f3_2 ($a,$i) = if (($i >= $s))
155155 then $a
156156 else throw("List size exceeds 20")
157157
158158 $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)
159159 }
160160 let poolActiveKeys = {
161161 let $l = pools
162162 let $s = size($l)
163163 let $acc0 = nil
164164 func $f4_1 ($a,$i) = if (($i >= $s))
165165 then $a
166166 else generatePoolActiveKeys($a, $l[$i])
167167
168168 func $f4_2 ($a,$i) = if (($i >= $s))
169169 then $a
170170 else throw("List size exceeds 20")
171171
172172 $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)
173173 }
174174 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
175175 }
176176 else throw("Only admin can call this function")
177177
178178
179179
180180 @Callable(i)
181181 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
182182 then {
183183 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
184184
185185 let deleteKeys = {
186186 let $l = records
187187 let $s = size($l)
188188 let $acc0 = nil
189189 func $f0_1 ($a,$i) = if (($i >= $s))
190190 then $a
191191 else generateDeletingKeys($a, $l[$i])
192192
193193 func $f0_2 ($a,$i) = if (($i >= $s))
194194 then $a
195195 else throw("List size exceeds 100")
196196
197197 $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)
198198 }
199199 deleteKeys
200200 }
201201 else throw("Only admin can call this function")
202202
203203
204204
205205 @Callable(i)
206206 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
207207 then [Issue(name, description, quantity, decimals, true, unit, 0)]
208208 else throw("Only admin can call this function")
209209
210210
211211
212212 @Callable(a8)
213213 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
214214
215215
216216
217217 @Callable(i)
218218 func deposit (pool) = if ((size(i.payments) != 1))
219219 then throw("One attached payment expected")
220220 else {
221221 let amount = i.payments[0].amount
222222 let assetId = i.payments[0].assetId
223223 let assetIdString = match assetId {
224224 case id: ByteVector =>
225225 toBase58String(id)
226226 case _ =>
227227 throw("Match error")
228228 }
229229 if ((0 >= amount))
230230 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
231231 else {
232232 let poolAmountKey = (pool + "_asset_balance")
233233 let userAddress = toString(i.caller)
234234 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
235235 let dAppAssetAddress = getDAppAssetAddress(pool)
236236 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
237237 case string: String =>
238238 string
239239 case nothing =>
240240 throw("You try to deposit on unsupported pool")
241241 }
242242 if (isPoolActive(pool))
243243 then {
244244 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
245245 case asset: Asset =>
246246 asset.decimals
247247 case _ =>
248248 throw("Can't find asset")
249249 }
250250 if ((liquidutyAssetAddress != assetIdString))
251251 then throw("You attached wrong liquidity token from Swop.fi")
252252 else {
253253 let poolAmount = getIntegerValue(this, poolAmountKey)
254254 let userAmount = match getInteger(userPoolAmountKey) {
255255 case int: Int =>
256256 int
257257 case nothing =>
258258 0
259259 }
260260 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
261261 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(dAppAssetAddress), pool)
262262 let fee = (amount - userAmountWithoutFee)
263263 let newPoolAmount = ((poolAmount + amount) - fee)
264264 let newUserPoolAmount = (userAmount + transferToUserAmount)
265265 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
266-[Reissue(fromBase58String(dAppAssetAddress), transferToUserAmount, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
266+[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)]
267267 }
268268 }
269269 else throw("Pool is not active!")
270270 }
271271 }
272272
273273
274274
275275 @Callable(i)
276276 func withdraw (pool) = if ((size(i.payments) != 1))
277277 then throw("One attached payment expected")
278278 else {
279279 let amount = i.payments[0].amount
280280 let assetId = i.payments[0].assetId
281281 let assetIdString = match assetId {
282282 case id: ByteVector =>
283283 toBase58String(id)
284284 case _ =>
285285 throw("Match error")
286286 }
287287 if ((0 >= amount))
288288 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
289289 else if (isPoolActive(pool))
290290 then {
291291 let poolAmountKey = (pool + "_asset_balance")
292292 let userAddress = toString(i.caller)
293293 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
294294 let userAmount = match getInteger(userPoolAmountKey) {
295295 case int: Int =>
296296 int
297297 case nothing =>
298298 0
299299 }
300300 let dAppAssetAddress = getDAppAssetAddress(pool)
301301 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
302302 let poolAmount = getIntegerValue(this, poolAmountKey)
303303 let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
304304 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
305305 let newPoolAmount = (poolAmount - userAmountWithoutFee)
306306 let fee = (amount - userAmountWithoutFee)
307307 let newUserPoolAmount = (userAmount - amount)
308308 [Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
309309 }
310310 else throw("Pool is not active!")
311311 }
312312
313313
314314
315315 @Callable(i)
316316 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
317317 then {
318318 func generatePoolActiveKeys (accumulated,pool) = {
319319 let poolIndex = value(indexOf(pools, pool))
320320 let status = statuses[poolIndex]
321321 BooleanEntry((pool + "_active"), status) :: accumulated
322322 }
323323
324324 let poolActiveKeys = {
325325 let $l = pools
326326 let $s = size($l)
327327 let $acc0 = nil
328328 func $f0_1 ($a,$i) = if (($i >= $s))
329329 then $a
330330 else generatePoolActiveKeys($a, $l[$i])
331331
332332 func $f0_2 ($a,$i) = if (($i >= $s))
333333 then $a
334334 else throw("List size exceeds 100")
335335
336336 $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)
337337 }
338338 poolActiveKeys
339339 }
340340 else throw("Only admin can call this function")
341341
342342
343343 @Verifier(tx)
344344 func verify () = match tx {
345345 case inv: InvokeScriptTransaction =>
346346 let lockShareTokens = if ((inv.dApp == farmingAddress))
347347 then if (if ((inv.function == "lockShareTokens"))
348348 then true
349349 else (inv.function == "claim"))
350350 then true
351351 else (inv.function == "withdrawShareTokens")
352352 else false
353353 let dAppAddress = match inv.dApp {
354354 case dApp: Address =>
355355 toString(dApp)
356356 case _ =>
357357 throw("Transaction must have only address")
358358 }
359359 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
360360 then containsElement(swopFiFunctions, inv.function)
361361 else false
362362 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
363363 then true
364364 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
365365 then true
366366 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
367367 then true
368368 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
369369 if (if (lockShareTokens)
370370 then true
371371 else poolFunctions)
372372 then signedByAdmin
373373 else false
374374 case _ =>
375375 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
376376 then 1
377377 else 0
378378 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
379379 then 1
380380 else 0
381381 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
382382 then 1
383383 else 0
384384 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
385385 }
386386

github/deemru/w8io/03bedc9 
89.57 ms