tx · HaDtci8T7KLDnfwuvpRTJZLuZjutpSAJBftQGpMcE5PE

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.12 19:23 [1875965] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "HaDtci8T7KLDnfwuvpRTJZLuZjutpSAJBftQGpMcE5PE", "fee": 1400000, "feeAssetId": null, "timestamp": 1642004669520, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "2v2w6gNybVPGe8cuaAvU6MZA3RB6kzbbjGCcR9kVm9SMngALYartaSsGvg64ZiMUs4hqLjnE3GH51b5LtYGdJjvF", "28wg1bdYdjsDz1Wo7JX56isy7ENN3PaLkeCSB8ckFN893mJsoJA5XC9YHJxCxR4GaKsaj8mRTRUNH9Fts5f5jgZv", "5rSBQWgCR8BtLmRNyxwfgTH4yEmiCSoZaEs6za116ZJZDbM96yi2xvUCLJ6MSsU9QtyEfzPtZ9c1p2KfE2mvQonx" ], "script": "base64:AAIFAAAAAAAAB58IAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoMCgFBEgdhc3NldElkGhUKAUISEGRBcHBTdGFrZWRUb2tlbnMaFAoBQxIPYXNzZXRJZFF1YW50aXR5GgoKAUQSBWFzc2V0GgYKAUUSAWkaCgoBRhIFcG9vbHMaFAoBRxIPbGlxdWlkaXR5VG9rZW5zGhIKAUgSDXNlcnZpY2VUb2tlbnMaGwoBSRIWbGlxdWlkaXR5VG9rZW5EZWNpbWFscxoVCgFKEhBnZW5lcmF0ZVBvb2xLZXlzGhAKAUsSC2FjY3VtdWxhdGVkGiMKAUwSHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cxoOCgFNEglwb29sSW5kZXgaEwoBThIObGlxdWlkaXR5VG9rZW4aIQoBTxIcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cxoqCgFQEiVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGhsKAVESFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMaFAoBUhIPcG9vbEJhbGFuY2VLZXlzGgcKAVMSAiRsGgcKAVQSAiRzGgoKAVUSBSRhY2MwGgoKAVYSBSRmMF8xGgcKAVcSAiRhGgcKAVgSAiRpGgoKAVkSBSRmMF8yGhsKAVoSFnBvb2xMaXF1aWRpdHlUb2tlbktleXMaDwoBYRIKZGVwb3NpdEZlZRobCgJhQRIVbGlxdWlkdXR5QXNzZXRBZGRyZXNzGhsKAmFCEhVsaXF1aWRpdHlUb2tlbkRlY2ltYWwaEAoCYUMSCnBvb2xBbW91bnQaEAoCYUQSCnVzZXJBbW91bnQaCQoCYUUSA2ludBoaCgJhRhIUdXNlckFtb3VudFdpdGhvdXRGZWUaGgoCYUcSFHRyYW5zZmVyVG9Vc2VyQW1vdW50GgkKAmFIEgNmZWUaEwoCYUkSDW5ld1Bvb2xBbW91bnQaFwoCYUoSEW5ld1VzZXJQb29sQW1vdW50GhMKAmFLEg1sb2NrVG9rZW5zS2V5Gg4KAmFMEghzdGF0dXNlcxoMCgJhTRIGc3RhdHVzGggKAmFOEgJ0eBoMCgJhTxIGdmVyaWZ5GgkKAmFQEgNpbnYaFQoCYVESD2xvY2tTaGFyZVRva2VucxoRCgJhUhILZEFwcEFkZHJlc3MaDQoCYVMSByRtYXRjaDEaCgoCYVQSBGRBcHAaEwoCYVUSDXBvb2xGdW5jdGlvbnMaEwoCYVYSDXNpZ25lZEJ5QWRtaW4aEAoCYVcSCmFkbTFTaWduZWQaEAoCYVgSCmFkbTJTaWduZWQaEAoCYVkSCmFkbTNTaWduZWQaCwoCYWESBSRmMV8xGgsKAmFiEgUkZjFfMhoaCgJhYxIUcG9vbFNlcnZpY2VUb2tlbktleXMaCwoCYWQSBSRmMl8xGgsKAmFlEgUkZjJfMhojCgJhZhIdcG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMaCwoCYWcSBSRmM18xGgsKAmFoEgUkZjNfMhoUCgJhaRIOcG9vbEFjdGl2ZUtleXMaCwoCYWoSBSRmNF8xGgsKAmFrEgUkZjRfMhoNCgJhbBIHcmVjb3JkcxoaCgJhbRIUZ2VuZXJhdGVEZWxldGluZ0tleXMaDAoCYW4SBnJlY29yZBoQCgJhbxIKZGVsZXRlS2V5cxoKCgJhcBIEbmFtZRoRCgJhcRILZGVzY3JpcHRpb24aDgoCYXISCHF1YW50aXR5Gg4KAmFzEghkZWNpbWFscxoICgJhdBICYTgaEwoCYXUSDWFzc2V0SWRTdHJpbmcaCAoCYXYSAmlkGhMKAmF3Eg1wb29sQW1vdW50S2V5GhEKAmF4Egt1c2VyQWRkcmVzcxoXCgJheRIRdXNlclBvb2xBbW91bnRLZXkaFgoCYXoSEGRBcHBBc3NldEFkZHJlc3MaEgoBYhINY29udHJvbGxlckZlZRoQCgFjEgtwbGF0Zm9ybUZlZRoRCgFkEgxhZG1pblB1YktleTEaEQoBZRIMYWRtaW5QdWJLZXkyGhEKAWYSDGFkbWluUHViS2V5MxoRCgFnEgxhZG1pblB1YktleTQaFgoBaBIRZ292ZXJtYW5jZUFkZHJlc3MaEwoBaRIOZmFybWluZ0FkZHJlc3MaEAoBahILc3dvcEZpUG9vbHMaFAoBaxIPc3dvcEZpRnVuY3Rpb25zGhEKAWwSDGlzUG9vbEFjdGl2ZRoJCgFtEgRwb29sGgwKAW4SB2tBY3RpdmUaDQoBbxIIaXNBY3RpdmUaDAoBcBIHJG1hdGNoMBoMCgFxEgdib29sZWFuGhgKAXISE2dl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AAABWQAAAAIAAAABVwAAAAFYAwkAAGcAAAACBQAAAAFYBQAAAAFUBQAAAAFXCQAAAgAAAAECAAAAFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBAAAAAVkAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIFAAAAAVUAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAAAAAAAB8AAAAAAAAAACAAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACMAAAAAAAAAACQAAAAAAAAAACUAAAAAAAAAACYAAAAAAAAAACcAAAAAAAAAACgAAAAAAAAAACkAAAAAAAAAACoAAAAAAAAAACsAAAAAAAAAACwAAAAAAAAAAC0AAAAAAAAAAC4AAAAAAAAAAC8AAAAAAAAAADAAAAAAAAAAADEAAAAAAAAAADIAAAAAAAAAADMAAAAAAAAAADQAAAAAAAAAADUAAAAAAAAAADYAAAAAAAAAADcAAAAAAAAAADgAAAAAAAAAADkAAAAAAAAAADoAAAAAAAAAADsAAAAAAAAAADwAAAAAAAAAAD0AAAAAAAAAAD4AAAAAAAAAAD8AAAAAAAAAAEAAAAAAAAAAAEEAAAAAAAAAAEIA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AAFZAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkBAAAAAVYAAAACCQEAAAABVgAAAAIJAQAAAAFWAAAAAgkB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", "height": 1875965, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DY7dLcNsgeZddD8yuk4VHuiiGxAqEe7rjA7jNXLohqV3 Next: 92UeVfdK9qV1W98iLsT1qgEfesEDdVVmAhSiwixn4h1x Diff:
OldNewDifferences
2525
2626 func isPoolActive (pool) = {
2727 let kActive = (pool + "_active")
28- let isActive = getBooleanValue(this, kActive)
28+ let isActive = match getBooleanValue(this, kActive) {
29+ case boolean: Boolean =>
30+ boolean
31+ case _ =>
32+ throw("Pool is not active!")
33+ }
2934 isActive
3035 }
3136
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'3PKoJ7GHwmidFPX6NiqKZdq8Zj2auPMNPnE')
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")
28- let isActive = getBooleanValue(this, kActive)
28+ let isActive = match getBooleanValue(this, kActive) {
29+ case boolean: Boolean =>
30+ boolean
31+ case _ =>
32+ throw("Pool is not active!")
33+ }
2934 isActive
3035 }
3136
3237
3338 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
3439 case string: String =>
3540 string
3641 case nothing =>
3742 throw("You try to deposit on unsupported pool")
3843 }
3944
4045
4146 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
4247 case string: String =>
4348 string
4449 case nothing =>
4550 throw("You try to withdraw from unsupported pool")
4651 }
4752
4853
4954 func getStakedAmount (poolAddress) = match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
5055 case staked: Int =>
5156 staked
5257 case nothing: Unit =>
5358 0
5459 case _ =>
5560 throw("Match error")
5661 }
5762
5863
5964 func transferToUser (amount,assetId,poolAddress) = {
6065 let dAppStakedTokens = getStakedAmount(poolAddress)
6166 let assetIdQuantity = match assetInfo(assetId) {
6267 case asset: Asset =>
6368 asset.quantity
6469 case _ =>
6570 throw("Can't find asset")
6671 }
6772 fraction(amount, dAppStakedTokens, assetIdQuantity)
6873 }
6974
7075
7176 @Callable(i)
7277 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
7378 then {
7479 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
7580
7681 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
7782 let poolIndex = value(indexOf(pools, pool))
7883 let liquidityToken = liquidityTokens[poolIndex]
7984 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
8085 }
8186
8287 func generatePoolServiceTokenKeys (accumulated,pool) = {
8388 let poolIndex = value(indexOf(pools, pool))
8489 let liquidityToken = serviceTokens[poolIndex]
8590 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
8691 }
8792
8893 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
8994 let poolIndex = value(indexOf(pools, pool))
9095 let liquidityToken = liquidityTokenDecimals[poolIndex]
9196 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
9297 }
9398
9499 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
95100
96101 let poolBalanceKeys = {
97102 let $l = pools
98103 let $s = size($l)
99104 let $acc0 = nil
100105 func $f0_1 ($a,$i) = if (($i >= $s))
101106 then $a
102107 else generatePoolKeys($a, $l[$i])
103108
104109 func $f0_2 ($a,$i) = if (($i >= $s))
105110 then $a
106111 else throw("List size exceeds 20")
107112
108113 $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)
109114 }
110115 let poolLiquidityTokenKeys = {
111116 let $l = pools
112117 let $s = size($l)
113118 let $acc0 = nil
114119 func $f1_1 ($a,$i) = if (($i >= $s))
115120 then $a
116121 else generatePoolLiquidityTokenKeys($a, $l[$i])
117122
118123 func $f1_2 ($a,$i) = if (($i >= $s))
119124 then $a
120125 else throw("List size exceeds 20")
121126
122127 $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)
123128 }
124129 let poolServiceTokenKeys = {
125130 let $l = pools
126131 let $s = size($l)
127132 let $acc0 = nil
128133 func $f2_1 ($a,$i) = if (($i >= $s))
129134 then $a
130135 else generatePoolServiceTokenKeys($a, $l[$i])
131136
132137 func $f2_2 ($a,$i) = if (($i >= $s))
133138 then $a
134139 else throw("List size exceeds 20")
135140
136141 $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)
137142 }
138143 let poolLiquidityTokenDecimalKeys = {
139144 let $l = pools
140145 let $s = size($l)
141146 let $acc0 = nil
142147 func $f3_1 ($a,$i) = if (($i >= $s))
143148 then $a
144149 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
145150
146151 func $f3_2 ($a,$i) = if (($i >= $s))
147152 then $a
148153 else throw("List size exceeds 20")
149154
150155 $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)
151156 }
152157 let poolActiveKeys = {
153158 let $l = pools
154159 let $s = size($l)
155160 let $acc0 = nil
156161 func $f4_1 ($a,$i) = if (($i >= $s))
157162 then $a
158163 else generatePoolActiveKeys($a, $l[$i])
159164
160165 func $f4_2 ($a,$i) = if (($i >= $s))
161166 then $a
162167 else throw("List size exceeds 20")
163168
164169 $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)
165170 }
166171 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
167172 }
168173 else throw("Only admin can call this function")
169174
170175
171176
172177 @Callable(i)
173178 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
174179 then {
175180 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
176181
177182 let deleteKeys = {
178183 let $l = records
179184 let $s = size($l)
180185 let $acc0 = nil
181186 func $f0_1 ($a,$i) = if (($i >= $s))
182187 then $a
183188 else generateDeletingKeys($a, $l[$i])
184189
185190 func $f0_2 ($a,$i) = if (($i >= $s))
186191 then $a
187192 else throw("List size exceeds 100")
188193
189194 $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)
190195 }
191196 deleteKeys
192197 }
193198 else throw("Only admin can call this function")
194199
195200
196201
197202 @Callable(i)
198203 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
199204 then [Issue(name, description, quantity, decimals, true, unit, 0)]
200205 else throw("Only admin can call this function")
201206
202207
203208
204209 @Callable(a8)
205210 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
206211
207212
208213
209214 @Callable(i)
210215 func deposit (pool) = if ((size(i.payments) != 1))
211216 then throw("One attached payment expected")
212217 else {
213218 let amount = i.payments[0].amount
214219 let assetId = i.payments[0].assetId
215220 let assetIdString = match assetId {
216221 case id: ByteVector =>
217222 toBase58String(id)
218223 case _ =>
219224 throw("Match error")
220225 }
221226 if ((0 >= amount))
222227 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
223228 else {
224229 let poolAmountKey = (pool + "_asset_balance")
225230 let userAddress = toString(i.caller)
226231 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
227232 let dAppAssetAddress = getDAppAssetAddress(pool)
228233 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
229234 case string: String =>
230235 string
231236 case nothing =>
232237 throw("You try to deposit on unsupported pool")
233238 }
234239 if (isPoolActive(pool))
235240 then {
236241 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
237242 case asset: Asset =>
238243 asset.decimals
239244 case _ =>
240245 throw("Can't find asset")
241246 }
242247 if ((liquidutyAssetAddress != assetIdString))
243248 then throw("You attached wrong liquidity token from Swop.fi")
244249 else {
245250 let poolAmount = getIntegerValue(this, poolAmountKey)
246251 let userAmount = match getInteger(userPoolAmountKey) {
247252 case int: Int =>
248253 int
249254 case nothing =>
250255 0
251256 }
252257 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
253258 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
254259 let fee = (amount - userAmountWithoutFee)
255260 let newPoolAmount = ((poolAmount + amount) - fee)
256261 let newUserPoolAmount = (userAmount + transferToUserAmount)
257262 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
258263 [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)]
259264 }
260265 }
261266 else throw("Pool is not active!")
262267 }
263268 }
264269
265270
266271
267272 @Callable(i)
268273 func withdraw (pool) = if ((size(i.payments) != 1))
269274 then throw("One attached payment expected")
270275 else {
271276 let amount = i.payments[0].amount
272277 let assetId = i.payments[0].assetId
273278 let assetIdString = match assetId {
274279 case id: ByteVector =>
275280 toBase58String(id)
276281 case _ =>
277282 throw("Match error")
278283 }
279284 if ((0 >= amount))
280285 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
281286 else if (isPoolActive(pool))
282287 then {
283288 let poolAmountKey = (pool + "_asset_balance")
284289 let userAddress = toString(i.caller)
285290 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
286291 let userAmount = match getInteger(userPoolAmountKey) {
287292 case int: Int =>
288293 int
289294 case nothing =>
290295 0
291296 }
292297 let dAppAssetAddress = getDAppAssetAddress(pool)
293298 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
294299 let poolAmount = getIntegerValue(this, poolAmountKey)
295300 let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
296301 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
297302 let newPoolAmount = (poolAmount - userAmountWithoutFee)
298303 let fee = (amount - userAmountWithoutFee)
299304 let newUserPoolAmount = (userAmount - amount)
300305 [Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
301306 }
302307 else throw("Pool is not active!")
303308 }
304309
305310
306311
307312 @Callable(i)
308313 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
309314 then {
310315 func generatePoolActiveKeys (accumulated,pool) = {
311316 let poolIndex = value(indexOf(pools, pool))
312317 let status = statuses[poolIndex]
313318 BooleanEntry((pool + "_active"), status) :: accumulated
314319 }
315320
316321 let poolActiveKeys = {
317322 let $l = pools
318323 let $s = size($l)
319324 let $acc0 = nil
320325 func $f0_1 ($a,$i) = if (($i >= $s))
321326 then $a
322327 else generatePoolActiveKeys($a, $l[$i])
323328
324329 func $f0_2 ($a,$i) = if (($i >= $s))
325330 then $a
326331 else throw("List size exceeds 100")
327332
328333 $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)
329334 }
330335 poolActiveKeys
331336 }
332337 else throw("Only admin can call this function")
333338
334339
335340 @Verifier(tx)
336341 func verify () = match tx {
337342 case inv: InvokeScriptTransaction =>
338343 let lockShareTokens = if ((inv.dApp == farmingAddress))
339344 then if (if ((inv.function == "lockShareTokens"))
340345 then true
341346 else (inv.function == "claim"))
342347 then true
343348 else (inv.function == "withdrawShareTokens")
344349 else false
345350 let dAppAddress = match inv.dApp {
346351 case dApp: Address =>
347352 toString(dApp)
348353 case _ =>
349354 throw("Transaction must have only address")
350355 }
351356 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
352357 then containsElement(swopFiFunctions, inv.function)
353358 else false
354359 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
355360 then true
356361 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
357362 then true
358363 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
359364 then true
360365 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
361366 if (if (lockShareTokens)
362367 then true
363368 else poolFunctions)
364369 then signedByAdmin
365370 else false
366371 case _ =>
367372 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
368373 then 1
369374 else 0
370375 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
371376 then 1
372377 else 0
373378 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
374379 then 1
375380 else 0
376381 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
377382 }
378383

github/deemru/w8io/169f3d6 
1013.59 ms