tx · FcE25x1ocrxWJNfQ2oDbchU6pb8YqTCGzxYtVKqGb814

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.12.15 22:17 [1835776] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

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