tx · D7wzQskJdsz66DRCk6qhR6DucuDpxGR82rBinxYWd1qx

3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a:  -0.01400000 Waves

2021.11.07 22:00 [1780986] smart account 3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a > SELF 0.00000000 Waves

{ "type": 13, "id": "D7wzQskJdsz66DRCk6qhR6DucuDpxGR82rBinxYWd1qx", "fee": 1400000, "feeAssetId": null, "timestamp": 1636311621832, "version": 2, "chainId": 84, "sender": "3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a", "senderPublicKey": "H6cFN4f92Tqmvpuuvii5LhcBHugkttZ7QNJ3tmqYLzuE", "proofs": [ "5b2iXL2XJtzETgKS92PVDK2SvmDSUyfPXL6VKpBVMEHSvKjXFiDxFM9GpiRUVCzCbNbUyuU4YQh9HtygtxHb4WEr" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgYKBBgYGBESBgoECAgBARIAEgMKAQgSBAoCCAEAAAAGAAAAAApkZXBvc2l0RmVlAAAAAAAAAAPoAAAAAA1jb250cm9sbGVyRmVlAAAAAAAAACcQAAAAAAtwbGF0Zm9ybUZlZQAAAAAAAAAnEAAAAAAMYWRtaW5QdWJLZXkxAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAAMYWRtaW5QdWJLZXkyAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAAMYWRtaW5QdWJLZXkzAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAYAAAACYTgBAAAABGluaXQAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAADEzUFBIN3g3aXFvYlc1eml5aVJDaWMxOXJRcUtyNm5QWWFLMV9hc3NldF9iYWxhbmNlAAAAAAAAbdStBQAAAANuaWwAAAABaQEAAAAIYWRkUG9vbHMAAAAEAAAABXBvb2xzAAAAD2xpcXVpZGl0eVRva2VucwAAAA1zZXJ2aWNlVG9rZW5zAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlAAAAAAAAAAAABQAAAAthY2N1bXVsYXRlZAoBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAJcG9vbEluZGV4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABXBvb2xzBQAAAARwb29sBAAAAA5saXF1aWRpdHlUb2tlbgkAAZEAAAACBQAAAA9saXF1aWRpdHlUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAANc2VydmljZVRva2VucwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAWbGlxdWlkaXR5VG9rZW5EZWNpbWFscwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9zZXJ2aWNlX3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAB19hY3RpdmUGBQAAAAthY2N1bXVsYXRlZAQAAAAPcG9vbEJhbGFuY2VLZXlzCgAAAAACJGwFAAAABXBvb2xz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dXNlckVhcm5lZEJlZm9yZQQAAAAHJG1hdGNoMAkABB8AAAABBQAAABF1c2VyUG9vbEVhcm5lZEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAAAAAAAAAAAAAQAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4EAAAAFWxpcXVpZGl0eVRva2VuRGVjaW1hbAQAAAAHJG1hdGNoMAkAA+wAAAABCQACWQAAAAEFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAABWFzc2V0BQAAAAckbWF0Y2gwCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMJAAACAAAAAQIAAAAQQ2FuJ3QgZmluZCBhc3NldAQAAAAQZEFwcEFzc2V0QWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sAgAAAA5fc2VydmljZV90b2tlbgQAAAAPdXNlckVhcm5lZFRvdGFsCQAAZAAAAAIFAAAACnVzZXJFYXJuZWQFAAAAEHVzZXJFYXJuZWRCZWZvcmUEAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAALcGxhdGZvcm1GZWUFAAAABkhBTEZVUAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAA1jb250cm9sbGVyRmVlBQAAAAZIQUxGVVAEAAAADW5ld1Bvb2xBbW91bnQJAABlAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAQYW1vdW50V2l0aG91dEZlZQMJAABnAAAAAgUAAAAKdXNlckFtb3VudAUAAAAGYW1vdW50BAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGUAAAACBQAAAAp1c2VyQW1vdW50BQAAABBhbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAARCdXJuAAAAAgkAAlkAAAABBQAAABBkQXBwQXNzZXRBZGRyZXNzBQAAABBhbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQYW1vdW50V2l0aG91dEZlZQkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXBvb2xBbW91bnRLZXkFAAAADW5ld1Bvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXVzZXJQb29sQW1vdW50S2V5BQAAABFuZXdVc2VyUG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARdXNlclBvb2xFYXJuZWRLZXkFAAAAD3VzZXJFYXJuZWRUb3RhbAUAAAADbmlsCQAAAgAAAAECAAAAJllvdSBoYXZlIG5vdCBzdWNoIGJhbGFuY2UgZm9yIHdpdGhkcmF3AAAAAQAAAAJiNgEAAAACYjcAAAAACQAB9AAAAAMIBQAAAAJiNgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmI2AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAmI2AAAAD3NlbmRlclB1YmxpY0tlebfPDI0=", "height": 1780986, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HxbdepQQjKVJotVZd97K7euiEK8SadCnqiuq2WAJFTBF Next: HsuwNx4yAZrTGHjk5eFty8J4k3GLfAqoXbAGnwqECtBi Diff:
OldNewDifferences
1919
2020
2121 @Callable(i)
22-func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = {
23- func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
22+func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
23+ then {
24+ func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
2425
25- func generatePoolLiquidityTokenKeys (accumulated,pool) = {
26- let poolIndex = value(indexOf(pools, pool))
27- let liquidityToken = liquidityTokens[poolIndex]
26+ func generatePoolLiquidityTokenKeys (accumulated,pool) = {
27+ let poolIndex = value(indexOf(pools, pool))
28+ let liquidityToken = liquidityTokens[poolIndex]
2829 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
30+ }
31+
32+ func generatePoolServiceTokenKeys (accumulated,pool) = {
33+ let poolIndex = value(indexOf(pools, pool))
34+ let liquidityToken = serviceTokens[poolIndex]
35+StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
36+ }
37+
38+ func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
39+ let poolIndex = value(indexOf(pools, pool))
40+ let liquidityToken = liquidityTokenDecimals[poolIndex]
41+IntegerEntry((pool + "_service_token"), liquidityToken) :: accumulated
42+ }
43+
44+ func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
45+
46+ let poolBalanceKeys = {
47+ let $l = pools
48+ let $s = size($l)
49+ let $acc0 = nil
50+ func 1 ($a,$i) = if (($i >= $s))
51+ then $a
52+ else generatePoolKeys($a, $l[$i])
53+
54+ func 2 ($a,$i) = if (($i >= $s))
55+ then $a
56+ else throw("List size exceeds 20")
57+
58+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
59+ }
60+ let poolLiquidityTokenKeys = {
61+ let $l = pools
62+ let $s = size($l)
63+ let $acc0 = nil
64+ func 1 ($a,$i) = if (($i >= $s))
65+ then $a
66+ else generatePoolLiquidityTokenKeys($a, $l[$i])
67+
68+ func 2 ($a,$i) = if (($i >= $s))
69+ then $a
70+ else throw("List size exceeds 20")
71+
72+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
73+ }
74+ let poolServiceTokenKeys = {
75+ let $l = pools
76+ let $s = size($l)
77+ let $acc0 = nil
78+ func 1 ($a,$i) = if (($i >= $s))
79+ then $a
80+ else generatePoolServiceTokenKeys($a, $l[$i])
81+
82+ func 2 ($a,$i) = if (($i >= $s))
83+ then $a
84+ else throw("List size exceeds 20")
85+
86+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
87+ }
88+ let poolLiquidityTokenDecimalKeys = {
89+ let $l = pools
90+ let $s = size($l)
91+ let $acc0 = nil
92+ func 1 ($a,$i) = if (($i >= $s))
93+ then $a
94+ else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
95+
96+ func 2 ($a,$i) = if (($i >= $s))
97+ then $a
98+ else throw("List size exceeds 20")
99+
100+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
101+ }
102+ let poolActiveKeys = {
103+ let $l = pools
104+ let $s = size($l)
105+ let $acc0 = nil
106+ func 1 ($a,$i) = if (($i >= $s))
107+ then $a
108+ else generatePoolActiveKeys($a, $l[$i])
109+
110+ func 2 ($a,$i) = if (($i >= $s))
111+ then $a
112+ else throw("List size exceeds 20")
113+
114+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
115+ }
116+ ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
29117 }
30-
31- func generatePoolServiceTokenKeys (accumulated,pool) = {
32- let poolIndex = value(indexOf(pools, pool))
33- let liquidityToken = serviceTokens[poolIndex]
34-StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
35- }
36-
37- func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
38- let poolIndex = value(indexOf(pools, pool))
39- let liquidityToken = liquidityTokenDecimals[poolIndex]
40-IntegerEntry((pool + "_service_token"), liquidityToken) :: accumulated
41- }
42-
43- func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
44-
45- let poolBalanceKeys = {
46- let $l = pools
47- let $s = size($l)
48- let $acc0 = nil
49- func 1 ($a,$i) = if (($i >= $s))
50- then $a
51- else generatePoolKeys($a, $l[$i])
52-
53- func 2 ($a,$i) = if (($i >= $s))
54- then $a
55- else throw("List size exceeds 20")
56-
57- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
58- }
59- let poolLiquidityTokenKeys = {
60- let $l = pools
61- let $s = size($l)
62- let $acc0 = nil
63- func 1 ($a,$i) = if (($i >= $s))
64- then $a
65- else generatePoolLiquidityTokenKeys($a, $l[$i])
66-
67- func 2 ($a,$i) = if (($i >= $s))
68- then $a
69- else throw("List size exceeds 20")
70-
71- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
72- }
73- let poolServiceTokenKeys = {
74- let $l = pools
75- let $s = size($l)
76- let $acc0 = nil
77- func 1 ($a,$i) = if (($i >= $s))
78- then $a
79- else generatePoolServiceTokenKeys($a, $l[$i])
80-
81- func 2 ($a,$i) = if (($i >= $s))
82- then $a
83- else throw("List size exceeds 20")
84-
85- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
86- }
87- let poolLiquidityTokenDecimalKeys = {
88- let $l = pools
89- let $s = size($l)
90- let $acc0 = nil
91- func 1 ($a,$i) = if (($i >= $s))
92- then $a
93- else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
94-
95- func 2 ($a,$i) = if (($i >= $s))
96- then $a
97- else throw("List size exceeds 20")
98-
99- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
100- }
101- let poolActiveKeys = {
102- let $l = pools
103- let $s = size($l)
104- let $acc0 = nil
105- func 1 ($a,$i) = if (($i >= $s))
106- then $a
107- else generatePoolActiveKeys($a, $l[$i])
108-
109- func 2 ($a,$i) = if (($i >= $s))
110- then $a
111- else throw("List size exceeds 20")
112-
113- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
114- }
115- ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
116- }
118+ else throw("Only admin can call this function")
117119
118120
119121
120122 @Callable(i)
121-func issueToken (name,description,quantity,decimals) = if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
122- then throw("Only admin can call this function")
123- else [Issue(name, description, quantity, decimals, true, unit, 0)]
123+func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
124+ then [Issue(name, description, quantity, decimals, true, unit, 0)]
125+ else throw("Only admin can call this function")
124126
125127
126128
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'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1111
1212 let adminPubKey2 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1313
1414 let adminPubKey3 = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1515
1616 @Callable(a8)
1717 func init () = [IntegerEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_asset_balance", 7197869)]
1818
1919
2020
2121 @Callable(i)
22-func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = {
23- func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
22+func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
23+ then {
24+ func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
2425
25- func generatePoolLiquidityTokenKeys (accumulated,pool) = {
26- let poolIndex = value(indexOf(pools, pool))
27- let liquidityToken = liquidityTokens[poolIndex]
26+ func generatePoolLiquidityTokenKeys (accumulated,pool) = {
27+ let poolIndex = value(indexOf(pools, pool))
28+ let liquidityToken = liquidityTokens[poolIndex]
2829 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
30+ }
31+
32+ func generatePoolServiceTokenKeys (accumulated,pool) = {
33+ let poolIndex = value(indexOf(pools, pool))
34+ let liquidityToken = serviceTokens[poolIndex]
35+StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
36+ }
37+
38+ func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
39+ let poolIndex = value(indexOf(pools, pool))
40+ let liquidityToken = liquidityTokenDecimals[poolIndex]
41+IntegerEntry((pool + "_service_token"), liquidityToken) :: accumulated
42+ }
43+
44+ func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
45+
46+ let poolBalanceKeys = {
47+ let $l = pools
48+ let $s = size($l)
49+ let $acc0 = nil
50+ func 1 ($a,$i) = if (($i >= $s))
51+ then $a
52+ else generatePoolKeys($a, $l[$i])
53+
54+ func 2 ($a,$i) = if (($i >= $s))
55+ then $a
56+ else throw("List size exceeds 20")
57+
58+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
59+ }
60+ let poolLiquidityTokenKeys = {
61+ let $l = pools
62+ let $s = size($l)
63+ let $acc0 = nil
64+ func 1 ($a,$i) = if (($i >= $s))
65+ then $a
66+ else generatePoolLiquidityTokenKeys($a, $l[$i])
67+
68+ func 2 ($a,$i) = if (($i >= $s))
69+ then $a
70+ else throw("List size exceeds 20")
71+
72+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
73+ }
74+ let poolServiceTokenKeys = {
75+ let $l = pools
76+ let $s = size($l)
77+ let $acc0 = nil
78+ func 1 ($a,$i) = if (($i >= $s))
79+ then $a
80+ else generatePoolServiceTokenKeys($a, $l[$i])
81+
82+ func 2 ($a,$i) = if (($i >= $s))
83+ then $a
84+ else throw("List size exceeds 20")
85+
86+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
87+ }
88+ let poolLiquidityTokenDecimalKeys = {
89+ let $l = pools
90+ let $s = size($l)
91+ let $acc0 = nil
92+ func 1 ($a,$i) = if (($i >= $s))
93+ then $a
94+ else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
95+
96+ func 2 ($a,$i) = if (($i >= $s))
97+ then $a
98+ else throw("List size exceeds 20")
99+
100+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
101+ }
102+ let poolActiveKeys = {
103+ let $l = pools
104+ let $s = size($l)
105+ let $acc0 = nil
106+ func 1 ($a,$i) = if (($i >= $s))
107+ then $a
108+ else generatePoolActiveKeys($a, $l[$i])
109+
110+ func 2 ($a,$i) = if (($i >= $s))
111+ then $a
112+ else throw("List size exceeds 20")
113+
114+ 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
115+ }
116+ ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
29117 }
30-
31- func generatePoolServiceTokenKeys (accumulated,pool) = {
32- let poolIndex = value(indexOf(pools, pool))
33- let liquidityToken = serviceTokens[poolIndex]
34-StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
35- }
36-
37- func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
38- let poolIndex = value(indexOf(pools, pool))
39- let liquidityToken = liquidityTokenDecimals[poolIndex]
40-IntegerEntry((pool + "_service_token"), liquidityToken) :: accumulated
41- }
42-
43- func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
44-
45- let poolBalanceKeys = {
46- let $l = pools
47- let $s = size($l)
48- let $acc0 = nil
49- func 1 ($a,$i) = if (($i >= $s))
50- then $a
51- else generatePoolKeys($a, $l[$i])
52-
53- func 2 ($a,$i) = if (($i >= $s))
54- then $a
55- else throw("List size exceeds 20")
56-
57- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
58- }
59- let poolLiquidityTokenKeys = {
60- let $l = pools
61- let $s = size($l)
62- let $acc0 = nil
63- func 1 ($a,$i) = if (($i >= $s))
64- then $a
65- else generatePoolLiquidityTokenKeys($a, $l[$i])
66-
67- func 2 ($a,$i) = if (($i >= $s))
68- then $a
69- else throw("List size exceeds 20")
70-
71- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
72- }
73- let poolServiceTokenKeys = {
74- let $l = pools
75- let $s = size($l)
76- let $acc0 = nil
77- func 1 ($a,$i) = if (($i >= $s))
78- then $a
79- else generatePoolServiceTokenKeys($a, $l[$i])
80-
81- func 2 ($a,$i) = if (($i >= $s))
82- then $a
83- else throw("List size exceeds 20")
84-
85- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
86- }
87- let poolLiquidityTokenDecimalKeys = {
88- let $l = pools
89- let $s = size($l)
90- let $acc0 = nil
91- func 1 ($a,$i) = if (($i >= $s))
92- then $a
93- else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
94-
95- func 2 ($a,$i) = if (($i >= $s))
96- then $a
97- else throw("List size exceeds 20")
98-
99- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
100- }
101- let poolActiveKeys = {
102- let $l = pools
103- let $s = size($l)
104- let $acc0 = nil
105- func 1 ($a,$i) = if (($i >= $s))
106- then $a
107- else generatePoolActiveKeys($a, $l[$i])
108-
109- func 2 ($a,$i) = if (($i >= $s))
110- then $a
111- else throw("List size exceeds 20")
112-
113- 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
114- }
115- ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
116- }
118+ else throw("Only admin can call this function")
117119
118120
119121
120122 @Callable(i)
121-func issueToken (name,description,quantity,decimals) = if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
122- then throw("Only admin can call this function")
123- else [Issue(name, description, quantity, decimals, true, unit, 0)]
123+func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
124+ then [Issue(name, description, quantity, decimals, true, unit, 0)]
125+ else throw("Only admin can call this function")
124126
125127
126128
127129 @Callable(a8)
128130 func call () = {
129131 let a9 = Issue("Asset107112021", "Asset from dApp 1", 100000, 2, true, unit, 0)
130132 let a10 = Issue("Asset207112021", "Asset from dApp 2", 100000, 2, true, unit, 0)
131133 [a10, a9]
132134 }
133135
134136
135137
136138 @Callable(i)
137139 func deposit (pool) = {
138140 let amount = i.payments[0].amount
139141 let assetId = i.payments[0].assetId
140142 let poolAmountKey = (pool + "_asset_balance")
141143 let userAddress = toString(i.caller)
142144 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
143145 let dAppAssetAddress = getStringValue(this, (pool + "_service_token"))
144146 let poolAmount = getIntegerValue(this, poolAmountKey)
145147 let userAmount = match getInteger(userPoolAmountKey) {
146148 case int: Int =>
147149 int
148150 case nothing =>
149151 0
150152 }
151153 let newPoolAmount = (poolAmount + amount)
152154 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
153155 let newUserPoolAmount = (userAmount + userAmountWithoutFee)
154156 [Reissue(fromBase58String(dAppAssetAddress), userAmountWithoutFee, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
155157 }
156158
157159
158160
159161 @Callable(i)
160162 func withdraw (pool,userEarned) = {
161163 let amount = i.payments[0].amount
162164 let assetId = i.payments[0].assetId
163165 let poolAmountKey = (pool + "_asset_balance")
164166 let userAddress = toString(i.caller)
165167 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
166168 let userPoolEarnedKey = (((pool + "_") + userAddress) + "_earned")
167169 let poolAmount = getIntegerValue(this, poolAmountKey)
168170 let userAmount = match getInteger(userPoolAmountKey) {
169171 case int: Int =>
170172 int
171173 case nothing =>
172174 0
173175 }
174176 let userEarnedBefore = match getInteger(userPoolEarnedKey) {
175177 case int: Int =>
176178 int
177179 case nothing =>
178180 0
179181 }
180182 let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
181183 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
182184 case asset: Asset =>
183185 asset.decimals
184186 case _ =>
185187 throw("Can't find asset")
186188 }
187189 let dAppAssetAddress = getStringValue(this, (pool + "_service_token"))
188190 let userEarnedTotal = (userEarned + userEarnedBefore)
189191 let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
190192 let newPoolAmount = (poolAmount - amountWithoutFee)
191193 if ((userAmount >= amount))
192194 then {
193195 let newUserPoolAmount = (userAmount - amountWithoutFee)
194196 [Burn(fromBase58String(dAppAssetAddress), amountWithoutFee), ScriptTransfer(i.caller, amountWithoutFee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount), IntegerEntry(userPoolEarnedKey, userEarnedTotal)]
195197 }
196198 else throw("You have not such balance for withdraw")
197199 }
198200
199201
200202 @Verifier(b6)
201203 func b7 () = sigVerify(b6.bodyBytes, b6.proofs[0], b6.senderPublicKey)
202204

github/deemru/w8io/03bedc9 
50.42 ms