tx · DHJ5LjxQx1cEEnEX4nPJPN2qF9u35hFF9nsJRaySc9g8

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.14 14:25 [1878558] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "DHJ5LjxQx1cEEnEX4nPJPN2qF9u35hFF9nsJRaySc9g8", "fee": 1400000, "feeAssetId": null, "timestamp": 1642159527846, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "4B8yXUYvoYxnUESGGRxAPawidxpd24FFHXdE3g5gQoSsqvPxpCT9VoJEW6gskejDh6CcaAJ8cSizfXQbStHywQEi", "4XJ6YjoRKMMVTJwXqMRJ9ziciiVvBeqHvWkjBttVfg7eXHDrmMGnY89k5oW6cVK6qhbNmELbsk1rfys5hP1YhZZR", "3kgqiLds4jXMEy7T49afoWxZALUpuY6R435zLshnT6HhaDRufUStEGe551fuHnMX3wXzAQT8m4zaNGbmN3hCVJjL" ], "script": "base64:AAIFAAAAAAAAB74IAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoMCgFBEgdhc3NldElkGhUKAUISEGRBcHBTdGFrZWRUb2tlbnMaFAoBQxIPYXNzZXRJZFF1YW50aXR5GgoKAUQSBWFzc2V0GhkKAUUSFHRyYW5zZmVyVG9Vc2VyQW1vdW50GgYKAUYSAWkaCgoBRxIFcG9vbHMaFAoBSBIPbGlxdWlkaXR5VG9rZW5zGhIKAUkSDXNlcnZpY2VUb2tlbnMaGwoBShIWbGlxdWlkaXR5VG9rZW5EZWNpbWFscxoVCgFLEhBnZW5lcmF0ZVBvb2xLZXlzGhAKAUwSC2FjY3VtdWxhdGVkGiMKAU0SHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cxoOCgFOEglwb29sSW5kZXgaEwoBTxIObGlxdWlkaXR5VG9rZW4aIQoBUBIcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cxoqCgFREiVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGhsKAVISFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMaFAoBUxIPcG9vbEJhbGFuY2VLZXlzGgcKAVQSAiRsGgcKAVUSAiRzGgoKAVYSBSRhY2MwGgoKAVcSBSRmMF8xGgcKAVgSAiRhGgcKAVkSAiRpGgoKAVoSBSRmMF8yGg8KAWESCmRlcG9zaXRGZWUaFgoCYUESEGRBcHBBc3NldEFkZHJlc3MaGwoCYUISFWxpcXVpZHV0eUFzc2V0QWRkcmVzcxobCgJhQxIVbGlxdWlkaXR5VG9rZW5EZWNpbWFsGhAKAmFEEgpwb29sQW1vdW50GhAKAmFFEgp1c2VyQW1vdW50GgkKAmFGEgNpbnQaGgoCYUcSFHVzZXJBbW91bnRXaXRob3V0RmVlGgkKAmFIEgNmZWUaEwoCYUkSDW5ld1Bvb2xBbW91bnQaFwoCYUoSEW5ld1VzZXJQb29sQW1vdW50GhMKAmFLEg1sb2NrVG9rZW5zS2V5Gh0KAmFMEhd0cmFuc2ZlclRvVXNlckFtb3VudFBvdxoOCgJhTRIIc3RhdHVzZXMaDAoCYU4SBnN0YXR1cxoICgJhTxICdHgaDAoCYVASBnZlcmlmeRoJCgJhURIDaW52GhUKAmFSEg9sb2NrU2hhcmVUb2tlbnMaEQoCYVMSC2RBcHBBZGRyZXNzGg0KAmFUEgckbWF0Y2gxGgoKAmFVEgRkQXBwGhMKAmFWEg1wb29sRnVuY3Rpb25zGhMKAmFXEg1zaWduZWRCeUFkbWluGhAKAmFYEgphZG0xU2lnbmVkGhAKAmFZEgphZG0yU2lnbmVkGhAKAmFaEgphZG0zU2lnbmVkGhwKAmFhEhZwb29sTGlxdWlkaXR5VG9rZW5LZXlzGgsKAmFiEgUkZjFfMRoLCgJhYxIFJGYxXzIaGgoCYWQSFHBvb2xTZXJ2aWNlVG9rZW5LZXlzGgsKAmFlEgUkZjJfMRoLCgJhZhIFJGYyXzIaIwoCYWcSHXBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGgsKAmFoEgUkZjNfMRoLCgJhaRIFJGYzXzIaFAoCYWoSDnBvb2xBY3RpdmVLZXlzGgsKAmFrEgUkZjRfMRoLCgJhbBIFJGY0XzIaDQoCYW0SB3JlY29yZHMaGgoCYW4SFGdlbmVyYXRlRGVsZXRpbmdLZXlzGgwKAmFvEgZyZWNvcmQaEAoCYXASCmRlbGV0ZUtleXMaCgoCYXESBG5hbWUaEQoCYXISC2Rlc2NyaXB0aW9uGg4KAmFzEghxdWFudGl0eRoOCgJhdBIIZGVjaW1hbHMaCAoCYXUSAmE4GhMKAmF2Eg1hc3NldElkU3RyaW5nGggKAmF3EgJpZBoTCgJheBINcG9vbEFtb3VudEtleRoRCgJheRILdXNlckFkZHJlc3MaFwoCYXoSEXVzZXJQb29sQW1vdW50S2V5GhIKAWISDWNvbnRyb2xsZXJGZWUaEAoBYxILcGxhdGZvcm1GZWUaEQoBZBIMYWRtaW5QdWJLZXkxGhEKAWUSDGFkbWluUHViS2V5MhoRCgFmEgxhZG1pblB1YktleTMaEQoBZxIMYWRtaW5QdWJLZXk0GhYKAWgSEWdvdmVybWFuY2VBZGRyZXNzGhMKAWkSDmZhcm1pbmdBZGRyZXNzGhAKAWoSC3N3b3BGaVBvb2xzGhQKAWsSD3N3b3BGaUZ1bmN0aW9ucxoRCgFsEgxpc1Bvb2xBY3RpdmUaCQoBbRIEcG9vbBoMCgFuEgdrQWN0aXZlGg0KAW8SCGlzQWN0aXZlGgwKAXAS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AAFZBQAAAAFVBQAAAAFYCQEAAAACYW4AAAACBQAAAAFYCQABkQAAAAIFAAAAAVQFAAAAAVkKAQAAAAFaAAAAAgAAAAFYAAAAAVkDCQAAZwAAAAIFAAAAAVkFAAAAAVUFAAAAAVgJAAACAAAAAQIAAAAVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEAAAABWgAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgUAAAABVgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAAAAAAAAAAJgAAAAAAAAAAJwAAAAAAAAAAKAAAAAAAAAAAKQAAAAAAAAAAKgAAAAAAAAAAKwAAAAAAAAAALAAAAAAAAAAALQAAAAAAAAAALgAAAAAAAAAALwAAAAAAAAAAMAAAAAAAAAAAMQAAAAAAAAAAMgAAAAAAAAAAMwAAAAAAAAAANAAAAAAAAAAANQAAAAAAAAAANgAAAAAAAAAANwAAAAAAAAAAOAAAAAAAAAAAOQAAAAAAAAAAOgAAAAAAAAAAOwAAAAAAAAAA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AVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIFAAAAAVYAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAA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", "height": 1878558, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6ZZxVJincQpennNXQneCBNHuDeu7BqhdCVtPannTHpW8 Next: 8hbYPZCwopn5wnKLXDwaRaPA5aqsEJqh84zfx4hRqSML Diff:
OldNewDifferences
264264 let newUserPoolAmount = (userAmount + transferToUserAmount)
265265 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
266266 let dAppStakedTokens = getStakedAmount(pool)
267- let assetIdQuantity = match assetInfo(fromBase58String(assetIdString)) {
267+ let assetIdQuantity = match assetInfo(fromBase58String(dAppAssetAddress)) {
268268 case asset: Asset =>
269269 asset.quantity
270270 case _ =>
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, dAppStakedTokens, assetIdQuantity)
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(assetIdString), 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")
266266 let dAppStakedTokens = getStakedAmount(pool)
267- let assetIdQuantity = match assetInfo(fromBase58String(assetIdString)) {
267+ let assetIdQuantity = match assetInfo(fromBase58String(dAppAssetAddress)) {
268268 case asset: Asset =>
269269 asset.quantity
270270 case _ =>
271271 throw("Can't find asset")
272272 }
273273 let transferToUserAmountPow = fraction(amount, dAppStakedTokens, assetIdQuantity)
274274 [Reissue(fromBase58String(dAppAssetAddress), transferToUserAmount, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry("assetIdQuantity", assetIdQuantity), IntegerEntry("dAppStakedTokens", dAppStakedTokens), IntegerEntry("transferToUserAmountPow", transferToUserAmountPow), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
275275 }
276276 }
277277 else throw("Pool is not active!")
278278 }
279279 }
280280
281281
282282
283283 @Callable(i)
284284 func withdraw (pool) = if ((size(i.payments) != 1))
285285 then throw("One attached payment expected")
286286 else {
287287 let amount = i.payments[0].amount
288288 let assetId = i.payments[0].assetId
289289 let assetIdString = match assetId {
290290 case id: ByteVector =>
291291 toBase58String(id)
292292 case _ =>
293293 throw("Match error")
294294 }
295295 if ((0 >= amount))
296296 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
297297 else if (isPoolActive(pool))
298298 then {
299299 let poolAmountKey = (pool + "_asset_balance")
300300 let userAddress = toString(i.caller)
301301 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
302302 let userAmount = match getInteger(userPoolAmountKey) {
303303 case int: Int =>
304304 int
305305 case nothing =>
306306 0
307307 }
308308 let dAppAssetAddress = getDAppAssetAddress(pool)
309309 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
310310 let poolAmount = getIntegerValue(this, poolAmountKey)
311311 let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
312312 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
313313 let newPoolAmount = (poolAmount - userAmountWithoutFee)
314314 let fee = (amount - userAmountWithoutFee)
315315 let newUserPoolAmount = (userAmount - amount)
316316 [Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
317317 }
318318 else throw("Pool is not active!")
319319 }
320320
321321
322322
323323 @Callable(i)
324324 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
325325 then {
326326 func generatePoolActiveKeys (accumulated,pool) = {
327327 let poolIndex = value(indexOf(pools, pool))
328328 let status = statuses[poolIndex]
329329 BooleanEntry((pool + "_active"), status) :: accumulated
330330 }
331331
332332 let poolActiveKeys = {
333333 let $l = pools
334334 let $s = size($l)
335335 let $acc0 = nil
336336 func $f0_1 ($a,$i) = if (($i >= $s))
337337 then $a
338338 else generatePoolActiveKeys($a, $l[$i])
339339
340340 func $f0_2 ($a,$i) = if (($i >= $s))
341341 then $a
342342 else throw("List size exceeds 100")
343343
344344 $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)
345345 }
346346 poolActiveKeys
347347 }
348348 else throw("Only admin can call this function")
349349
350350
351351 @Verifier(tx)
352352 func verify () = match tx {
353353 case inv: InvokeScriptTransaction =>
354354 let lockShareTokens = if ((inv.dApp == farmingAddress))
355355 then if (if ((inv.function == "lockShareTokens"))
356356 then true
357357 else (inv.function == "claim"))
358358 then true
359359 else (inv.function == "withdrawShareTokens")
360360 else false
361361 let dAppAddress = match inv.dApp {
362362 case dApp: Address =>
363363 toString(dApp)
364364 case _ =>
365365 throw("Transaction must have only address")
366366 }
367367 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
368368 then containsElement(swopFiFunctions, inv.function)
369369 else false
370370 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
371371 then true
372372 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
373373 then true
374374 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
375375 then true
376376 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
377377 if (if (lockShareTokens)
378378 then true
379379 else poolFunctions)
380380 then signedByAdmin
381381 else false
382382 case _ =>
383383 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
384384 then 1
385385 else 0
386386 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
387387 then 1
388388 else 0
389389 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
390390 then 1
391391 else 0
392392 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
393393 }
394394

github/deemru/w8io/169f3d6 
50.11 ms