tx · 4nSjJLr1GqEzSDs5ZQ9wKdkydzettMENgDMwHcnwhnqr

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.12.15 22:32 [1835789] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "4nSjJLr1GqEzSDs5ZQ9wKdkydzettMENgDMwHcnwhnqr", "fee": 1400000, "feeAssetId": null, "timestamp": 1639596713349, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "5gAQeobJFssqsZKMgCzydHzwSVpXHPHZuZ5bznAz4xfSrPdBcpEPisJrFtVPDNzZEkjU4b1zJLbzy5zXi7HsuoSf", "56xSknQGuTj7DhTtq3rcdaFi7PEq1Byso8gx14BbtUMWTVad8262sTuLEGK1r5eThMwSp4Yy8iVDXvgTwBAMR22C", "HshGG7j4JkiGqrJyqwsacbXHfu4YuP5DeQSBMTp83FW4SxUsDicn3gUT7VFzbgfF3h7vx8WQTJs9HoFaLXYwuiA" ], "script": "base64:AAIFAAAAAAAACBMIAhIGCgQYGBgREgMKARgSBgoECAEYERIGCgQICAEBEgASAwoBCBIDCgEIEgMKAQgSBAoCGBQaEAoBQRILYWNjdW11bGF0ZWQaIwoBQhIeZ2VuZXJhdGVQb29sTGlxdWlkaXR5VG9rZW5LZXlzGg4KAUMSCXBvb2xJbmRleBoTCgFEEg5saXF1aWRpdHlUb2tlbhohCgFFEhxnZW5lcmF0ZVBvb2xTZXJ2aWNlVG9rZW5LZXlzGioKAUYSJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMaGwoBRxIWZ2VuZXJhdGVQb29sQWN0aXZlS2V5cxoUCgFIEg9wb29sQmFsYW5jZUtleXMaBwoBSRICJGwaBwoBShICJHMaCgoBSxIFJGFjYzAaCgoBTBIFJGYwXzEaBwoBTRICJGEaBwoBThICJGkaCgoBTxIFJGYwXzIaGwoBUBIWcG9vbExpcXVpZGl0eVRva2VuS2V5cxoKCgFREgUkZjFfMRoKCgFSEgUkZjFfMhoZCgFTEhRwb29sU2VydmljZVRva2VuS2V5cxoKCgFUEgUkZjJfMRoKCgFVEgUkZjJfMhoiCgFWEh1wb29sTGlxdWlkaXR5VG9rZW5EZWNpbWFsS2V5cxoKCgFXEgUkZjNfMRoKCgFYEgUkZjNfMhoTCgFZEg5wb29sQWN0aXZlS2V5cxoKCgFaEgUkZjRfMRoPCgFhEgpkZXBvc2l0RmVlGggKAmFBEgJpZBoTCgJhQhINcG9vbEFtb3VudEtleRoRCgJhQxILdXNlckFkZHJlc3MaFwoCYUQSEXVzZXJQb29sQW1vdW50S2V5GhsKAmFFEhVsaXF1aWR1dHlBc3NldEFkZHJlc3MaGwoCYUYSFWxpcXVpZGl0eVRva2VuRGVjaW1hbBoLCgJhRxIFYXNzZXQaEAoCYUgSCnBvb2xBbW91bnQaEAoCYUkSCnVzZXJBbW91bnQaEwoCYUoSDW5ld1Bvb2xBbW91bnQaGgoCYUsSFHVzZXJBbW91bnRXaXRob3V0RmVlGgkKAmFMEgNmZWUaFwoCYU0SEW5ld1VzZXJQb29sQW1vdW50GhMKAmFOEg1sb2NrVG9rZW5zS2V5GhYKAmFPEhBhbW91bnRXaXRob3V0RmVlGhMKAmFQEg11c2VyUmV3YXJkS2V5GhAKAmFREgp1c2VyUmV3YXJkGg4KAmFSEghzdGF0dXNlcxoMCgJhUxIGc3RhdHVzGggKAmFUEgJ0eBoMCgJhVRIGdmVyaWZ5GgkKAmFWEgNpbnYaFQoCYVcSD2xvY2tTaGFyZVRva2VucxoRCgJhWBILZEFwcEFkZHJlc3MaDQoCYVkSByRtYXRjaDEaCgoCYVoSBGRBcHAaCwoCYWESBSRmNF8yGg0KAmFiEgdyZWNvcmRzGhoKAmFjEhRnZW5lcmF0ZURlbGV0aW5nS2V5cxoMCgJhZBIGcmVjb3JkGhAKAmFlEgpkZWxldGVLZXlzGhEKAmFmEgt0b3RhbFJld2FyZBoNCgJhZxIHd2FsbGV0cxoSCgJhaBIMcmV3YXJkVmFsdWVzGhUKAmFpEg9nZW5lcmF0ZVJlY29yZHMaDAoCYWoSBndhbGxldBoRCgJhaxILd2FsbGV0SW5kZXgaEQoCYWwSC3Jld2FyZFZhbHVlGg8KAmFtEglyZXdhcmRLZXkaGAoCYW4SEnVzZXJQcmV2aW91c1Jld2FyZBoJCgJhbxIDaW50GhMKAmFwEg11c2VyTmV3UmV3YXJkGg0KAmFxEgdyZXdhcmRzGhYKAmFyEhBkQXBwQXNzZXRBZGRyZXNzGgoKAmFzEgRuYW1lGhEKAmF0EgtkZXNjcmlwdGlvbhoOCgJhdRIIcXVhbnRpdHkaDgoCYXYSCGRlY2ltYWxzGggKAmF3EgJhOBoMCgJheBIGYW1vdW50Gg0KAmF5Egdhc3NldElkGhMKAmF6Eg1hc3NldElkU3RyaW5nGhIKAWISDWNvbnRyb2xsZXJGZWUaEwoCYmESDXBvb2xGdW5jdGlvbnMaEwoCYmISDXNpZ25lZEJ5QWRtaW4aEAoCYmMSCmFkbTFTaWduZWQaEAoCYmQSCmFkbTJTaWduZWQaEAoCYmUSCmFkbTNTaWduZWQaEAoBYxILcGxhdGZvcm1GZWUaEQoBZBIMYWRtaW5QdWJLZXkxGhEKAWUSDGFkbWluUHViS2V5MhoRCgFmEgxhZG1pblB1YktleTMaEQoBZxIMYWRtaW5QdWJLZXk0GhYKAWgSEWdvdmVybWFuY2VBZGRyZXNzGhMKAWkSDmZhcm1pbmdBZGRyZXNzGhAKAWoSC3N3b3BGaVBvb2xzGhQKAWsSD3N3b3BGaUZ1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AAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIFAAAAAUsAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0A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TAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgUAAAABSwAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAA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AAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIJAQAAAAFMAAAAAgkBAAAAAUwAAAACCQEAAAABTAAAAAIFAAAAAUsAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAA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", "height": 1835789, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FcE25x1ocrxWJNfQ2oDbchU6pb8YqTCGzxYtVKqGb814 Next: DvzhaZFW6vDaCuMw9xrT1px3HMRPF8kXYjutroGjrdJC Diff:
OldNewDifferences
1212 let adminPubKey2 = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
15+
16+let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1517
1618 let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
1719
373375 then true
374376 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
375377 then true
376- else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3)
378+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4)
377379 if (if (lockShareTokens)
378380 then true
379381 else poolFunctions)
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'
15+
16+let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1517
1618 let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
1719
1820 let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw')
1921
2022 let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1"]
2123
2224 let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
2325
2426 func isPoolActive (pool) = {
2527 let kActive = (pool + "_active")
2628 let isActive = getBooleanValue(this, kActive)
2729 isActive
2830 }
2931
3032
3133 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
3234 case string: String =>
3335 string
3436 case nothing =>
3537 throw("You try to deposit on unsupported pool")
3638 }
3739
3840
3941 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
4042 case string: String =>
4143 string
4244 case nothing =>
4345 throw("You try to withdraw from unsupported pool")
4446 }
4547
4648
4749 @Callable(i)
4850 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
4951 then {
5052 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
5153
5254 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
5355 let poolIndex = value(indexOf(pools, pool))
5456 let liquidityToken = liquidityTokens[poolIndex]
5557 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
5658 }
5759
5860 func generatePoolServiceTokenKeys (accumulated,pool) = {
5961 let poolIndex = value(indexOf(pools, pool))
6062 let liquidityToken = serviceTokens[poolIndex]
6163 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
6264 }
6365
6466 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
6567 let poolIndex = value(indexOf(pools, pool))
6668 let liquidityToken = liquidityTokenDecimals[poolIndex]
6769 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
6870 }
6971
7072 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
7173
7274 let poolBalanceKeys = {
7375 let $l = pools
7476 let $s = size($l)
7577 let $acc0 = nil
7678 func $f0_1 ($a,$i) = if (($i >= $s))
7779 then $a
7880 else generatePoolKeys($a, $l[$i])
7981
8082 func $f0_2 ($a,$i) = if (($i >= $s))
8183 then $a
8284 else throw("List size exceeds 20")
8385
8486 $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)
8587 }
8688 let poolLiquidityTokenKeys = {
8789 let $l = pools
8890 let $s = size($l)
8991 let $acc0 = nil
9092 func $f1_1 ($a,$i) = if (($i >= $s))
9193 then $a
9294 else generatePoolLiquidityTokenKeys($a, $l[$i])
9395
9496 func $f1_2 ($a,$i) = if (($i >= $s))
9597 then $a
9698 else throw("List size exceeds 20")
9799
98100 $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)
99101 }
100102 let poolServiceTokenKeys = {
101103 let $l = pools
102104 let $s = size($l)
103105 let $acc0 = nil
104106 func $f2_1 ($a,$i) = if (($i >= $s))
105107 then $a
106108 else generatePoolServiceTokenKeys($a, $l[$i])
107109
108110 func $f2_2 ($a,$i) = if (($i >= $s))
109111 then $a
110112 else throw("List size exceeds 20")
111113
112114 $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)
113115 }
114116 let poolLiquidityTokenDecimalKeys = {
115117 let $l = pools
116118 let $s = size($l)
117119 let $acc0 = nil
118120 func $f3_1 ($a,$i) = if (($i >= $s))
119121 then $a
120122 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
121123
122124 func $f3_2 ($a,$i) = if (($i >= $s))
123125 then $a
124126 else throw("List size exceeds 20")
125127
126128 $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)
127129 }
128130 let poolActiveKeys = {
129131 let $l = pools
130132 let $s = size($l)
131133 let $acc0 = nil
132134 func $f4_1 ($a,$i) = if (($i >= $s))
133135 then $a
134136 else generatePoolActiveKeys($a, $l[$i])
135137
136138 func $f4_2 ($a,$i) = if (($i >= $s))
137139 then $a
138140 else throw("List size exceeds 20")
139141
140142 $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)
141143 }
142144 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
143145 }
144146 else throw("Only admin can call this function")
145147
146148
147149
148150 @Callable(i)
149151 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
150152 then {
151153 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
152154
153155 let deleteKeys = {
154156 let $l = records
155157 let $s = size($l)
156158 let $acc0 = nil
157159 func $f0_1 ($a,$i) = if (($i >= $s))
158160 then $a
159161 else generateDeletingKeys($a, $l[$i])
160162
161163 func $f0_2 ($a,$i) = if (($i >= $s))
162164 then $a
163165 else throw("List size exceeds 100")
164166
165167 $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)
166168 }
167169 deleteKeys
168170 }
169171 else throw("Only admin can call this function")
170172
171173
172174
173175 @Callable(i)
174176 func distributionReward (pool,totalReward,wallets,rewardValues) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
175177 then {
176178 func generateRecords (accumulated,wallet) = {
177179 let walletIndex = value(indexOf(wallets, wallet))
178180 let rewardValue = rewardValues[walletIndex]
179181 let rewardKey = (((pool + "_") + wallet) + "_current_reward")
180182 let userPreviousReward = match getInteger(rewardKey) {
181183 case int: Int =>
182184 int
183185 case nothing =>
184186 0
185187 }
186188 let userNewReward = (userPreviousReward + rewardValue)
187189 IntegerEntry(rewardKey, userNewReward) :: accumulated
188190 }
189191
190192 let rewards = {
191193 let $l = wallets
192194 let $s = size($l)
193195 let $acc0 = nil
194196 func $f0_1 ($a,$i) = if (($i >= $s))
195197 then $a
196198 else generateRecords($a, $l[$i])
197199
198200 func $f0_2 ($a,$i) = if (($i >= $s))
199201 then $a
200202 else throw("List size exceeds 87")
201203
202204 $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($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)
203205 }
204206 let dAppAssetAddress = getDAppAssetAddress(pool)
205207 Reissue(fromBase58String(dAppAssetAddress), totalReward, true) :: rewards
206208 }
207209 else throw("Only admin can call this function")
208210
209211
210212
211213 @Callable(i)
212214 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
213215 then [Issue(name, description, quantity, decimals, true, unit, 0)]
214216 else throw("Only admin can call this function")
215217
216218
217219
218220 @Callable(a8)
219221 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
220222
221223
222224
223225 @Callable(i)
224226 func deposit (pool) = if ((size(i.payments) != 1))
225227 then throw("One attached payment expected")
226228 else {
227229 let amount = i.payments[0].amount
228230 let assetId = i.payments[0].assetId
229231 let assetIdString = match assetId {
230232 case id: ByteVector =>
231233 toBase58String(id)
232234 case _ =>
233235 throw("Match error")
234236 }
235237 if ((0 >= amount))
236238 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
237239 else {
238240 let poolAmountKey = (pool + "_asset_balance")
239241 let userAddress = toString(i.caller)
240242 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
241243 let dAppAssetAddress = getDAppAssetAddress(pool)
242244 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
243245 case string: String =>
244246 string
245247 case nothing =>
246248 throw("You try to deposit on unsupported pool")
247249 }
248250 if (isPoolActive(pool))
249251 then {
250252 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
251253 case asset: Asset =>
252254 asset.decimals
253255 case _ =>
254256 throw("Can't find asset")
255257 }
256258 if ((liquidutyAssetAddress != assetIdString))
257259 then throw("You attached wrong liquidity token from Swop.fi")
258260 else {
259261 let poolAmount = getIntegerValue(this, poolAmountKey)
260262 let userAmount = match getInteger(userPoolAmountKey) {
261263 case int: Int =>
262264 int
263265 case nothing =>
264266 0
265267 }
266268 let newPoolAmount = (poolAmount + amount)
267269 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
268270 let fee = (amount - userAmountWithoutFee)
269271 let newUserPoolAmount = (userAmount + userAmountWithoutFee)
270272 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
271273 [Reissue(fromBase58String(dAppAssetAddress), userAmountWithoutFee, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
272274 }
273275 }
274276 else throw("Pool is not active!")
275277 }
276278 }
277279
278280
279281
280282 @Callable(i)
281283 func withdraw (pool) = if ((size(i.payments) != 1))
282284 then throw("One attached payment expected")
283285 else {
284286 let amount = i.payments[0].amount
285287 let assetId = i.payments[0].assetId
286288 let assetIdString = match assetId {
287289 case id: ByteVector =>
288290 toBase58String(id)
289291 case _ =>
290292 throw("Match error")
291293 }
292294 if ((0 >= amount))
293295 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
294296 else {
295297 let poolAmountKey = (pool + "_asset_balance")
296298 let userAddress = toString(i.caller)
297299 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
298300 let dAppAssetAddress = getDAppAssetAddress(pool)
299301 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
300302 let poolAmount = getIntegerValue(this, poolAmountKey)
301303 let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
302304 let newPoolAmount = (poolAmount - amountWithoutFee)
303305 let fee = (amount - amountWithoutFee)
304306 [Burn(fromBase58String(dAppAssetAddress), amountWithoutFee), ScriptTransfer(i.caller, amountWithoutFee, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount)]
305307 }
306308 }
307309
308310
309311
310312 @Callable(i)
311313 func claimReward (pool) = {
312314 let userAddress = toString(i.caller)
313315 let userRewardKey = (((pool + "_") + userAddress) + "_current_reward")
314316 let userReward = match getInteger(userRewardKey) {
315317 case int: Int =>
316318 int
317319 case nothing =>
318320 throw("You have not any reward in this pool")
319321 }
320322 let dAppAssetAddress = getDAppAssetAddress(pool)
321323 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
322324 [Burn(fromBase58String(dAppAssetAddress), userReward), ScriptTransfer(i.caller, userReward, fromBase58String(liquidutyAssetAddress)), IntegerEntry(userRewardKey, 0)]
323325 }
324326
325327
326328
327329 @Callable(i)
328330 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
329331 then {
330332 func generatePoolActiveKeys (accumulated,pool) = {
331333 let poolIndex = value(indexOf(pools, pool))
332334 let status = statuses[poolIndex]
333335 BooleanEntry((pool + "_active"), status) :: accumulated
334336 }
335337
336338 let poolActiveKeys = {
337339 let $l = pools
338340 let $s = size($l)
339341 let $acc0 = nil
340342 func $f0_1 ($a,$i) = if (($i >= $s))
341343 then $a
342344 else generatePoolActiveKeys($a, $l[$i])
343345
344346 func $f0_2 ($a,$i) = if (($i >= $s))
345347 then $a
346348 else throw("List size exceeds 100")
347349
348350 $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)
349351 }
350352 poolActiveKeys
351353 }
352354 else throw("Only admin can call this function")
353355
354356
355357 @Verifier(tx)
356358 func verify () = match tx {
357359 case inv: InvokeScriptTransaction =>
358360 let lockShareTokens = if ((inv.dApp == farmingAddress))
359361 then if ((inv.function == "lockShareTokens"))
360362 then true
361363 else (inv.function == "claim")
362364 else false
363365 let dAppAddress = match inv.dApp {
364366 case dApp: Address =>
365367 toString(dApp)
366368 case _ =>
367369 throw("Transaction must have only address")
368370 }
369371 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
370372 then containsElement(swopFiFunctions, inv.function)
371373 else false
372374 let signedByAdmin = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
373375 then true
374376 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
375377 then true
376- else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3)
378+ else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4)
377379 if (if (lockShareTokens)
378380 then true
379381 else poolFunctions)
380382 then signedByAdmin
381383 else false
382384 case _ =>
383385 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
384386 then 1
385387 else 0
386388 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
387389 then 1
388390 else 0
389391 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
390392 then 1
391393 else 0
392394 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
393395 }
394396

github/deemru/w8io/169f3d6 
68.48 ms