tx · 3pzzP2TTTo7kdYMXmWeisHxHHh1Y5dZEfNt9NqYr4pb9

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.14 13:26 [1878501] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "3pzzP2TTTo7kdYMXmWeisHxHHh1Y5dZEfNt9NqYr4pb9", "fee": 1400000, "feeAssetId": null, "timestamp": 1642155969645, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "2L5okvT7yybn4frcWQjPYvcSb67eFeYxcPzWZF2sjL2Jf3tJEWg2tfNgs57Rnepy3hxG5DZ2pAbJdzgRdAr2BYxs", "2gZSHRkC7tVSy8RKExByS9uD5HP3UKXig3DXj4JQfa4Pbvj6zxezPXadZJJXwuRw7JngUSk7JnPvsbcwxcUtiyzE", "CyQx9j9KyjHQfRHUbMA4Wok9Qja2xnQ4Pcr6PxwbJhe638QARifSV2JaW6w2Zn6G4t1AomFo2nhbxnukwcKjFLz" ], "script": "base64:AAIFAAAAAAAAB58IAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoMCgFBEgdhc3NldElkGhUKAUISEGRBcHBTdGFrZWRUb2tlbnMaFAoBQxIPYXNzZXRJZFF1YW50aXR5GgoKAUQSBWFzc2V0GhkKAUUSFHRyYW5zZmVyVG9Vc2VyQW1vdW50GgYKAUYSAWkaCgoBRxIFcG9vbHMaFAoBSBIPbGlxdWlkaXR5VG9rZW5zGhIKAUkSDXNlcnZpY2VUb2tlbnMaGwoBShIWbGlxdWlkaXR5VG9rZW5EZWNpbWFscxoVCgFLEhBnZW5lcmF0ZVBvb2xLZXlzGhAKAUwSC2FjY3VtdWxhdGVkGiMKAU0SHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cxoOCgFOEglwb29sSW5kZXgaEwoBTxIObGlxdWlkaXR5VG9rZW4aIQoBUBIcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cxoqCgFREiVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGhsKAVISFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMaFAoBUxIPcG9vbEJhbGFuY2VLZXlzGgcKAVQSAiRsGgcKAVUSAiRzGgoKAVYSBSRhY2MwGgoKAVcSBSRmMF8xGgcKAVgSAiRhGgcKAVkSAiRpGgoKAVoSBSRmMF8yGg8KAWESCmRlcG9zaXRGZWUaFgoCYUESEGRBcHBBc3NldEFkZHJlc3MaGwoCYUISFWxpcXVpZHV0eUFzc2V0QWRkcmVzcxobCgJhQxIVbGlxdWlkaXR5VG9rZW5EZWNpbWFsGhAKAmFEEgpwb29sQW1vdW50GhAKAmFFEgp1c2VyQW1vdW50GgkKAmFGEgNpbnQaGgoCYUcSFHVzZXJBbW91bnRXaXRob3V0RmVlGgkKAmFIEgNmZWUaEwoCYUkSDW5ld1Bvb2xBbW91bnQaFwoCYUoSEW5ld1VzZXJQb29sQW1vdW50GhMKAmFLEg1sb2NrVG9rZW5zS2V5Gg4KAmFMEghzdGF0dXNlcxoMCgJhTRIGc3RhdHVzGggKAmFOEgJ0eBoMCgJhTxIGdmVyaWZ5GgkKAmFQEgNpbnYaFQoCYVESD2xvY2tTaGFyZVRva2VucxoRCgJhUhILZEFwcEFkZHJlc3MaDQoCYVMSByRtYXRjaDEaCgoCYVQSBGRBcHAaEwoCYVUSDXBvb2xGdW5jdGlvbnMaEwoCYVYSDXNpZ25lZEJ5QWRtaW4aEAoCYVcSCmFkbTFTaWduZWQaEAoCYVgSCmFkbTJTaWduZWQaEAoCYVkSCmFkbTNTaWduZWQaHAoCYWESFnBvb2xMaXF1aWRpdHlUb2tlbktleXMaCwoCYWISBSRmMV8xGgsKAmFjEgUkZjFfMhoaCgJhZBIUcG9vbFNlcnZpY2VUb2tlbktleXMaCwoCYWUSBSRmMl8xGgsKAmFmEgUkZjJfMhojCgJhZxIdcG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMaCwoCYWgSBSRmM18xGgsKAmFpEgUkZjNfMhoUCgJhahIOcG9vbEFjdGl2ZUtleXMaCwoCYWsSBSRmNF8xGgsKAmFsEgUkZjRfMhoNCgJhbRIHcmVjb3JkcxoaCgJhbhIUZ2VuZXJhdGVEZWxldGluZ0tleXMaDAoCYW8SBnJlY29yZBoQCgJhcBIKZGVsZXRlS2V5cxoKCgJhcRIEbmFtZRoRCgJhchILZGVzY3JpcHRpb24aDgoCYXMSCHF1YW50aXR5Gg4KAmF0EghkZWNpbWFscxoICgJhdRICYTgaEwoCYXYSDWFzc2V0SWRTdHJpbmcaCAoCYXcSAmlkGhMKAmF4Eg1wb29sQW1vdW50S2V5GhEKAmF5Egt1c2VyQWRkcmVzcxoXCgJhehIRdXNlclBvb2xBbW91bnRLZXkaEgoBYhINY29udHJvbGxlckZlZRoQCgFjEgtwbGF0Zm9ybUZlZRoRCgFkEgxhZG1pblB1YktleTEaEQoBZRIMYWRtaW5QdWJLZXkyGhEKAWYSDGFkbWluUHViS2V5MxoRCgFnEgxhZG1pblB1YktleTQaFgoBaBIRZ292ZXJtYW5jZUFkZHJlc3MaEwoBaRIOZmFybWluZ0FkZHJlc3MaEAoBahILc3dvcEZpUG9vbHMaFAoBaxIPc3dvcEZpRnVuY3Rpb25zGhEKAWwSDGlzUG9vbEFjdGl2ZRoJCgFtEgRwb29sGgwKAW4SB2tBY3RpdmUaDQoBbxIIaXNBY3RpdmUaDAoBcBIHJG1hdGNoMBoMCgFxEgdib29sZWFuGhgKAXISE2dl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AVgJAAGRAAAAAgUAAAABVAUAAAABWQoBAAAAAVoAAAACAAAAAVgAAAABWQMJAABnAAAAAgUAAAABWQUAAAABVQUAAAABWAkAAAIAAAABAgAAABVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQAAAAFaAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAA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aXplIGV4Y2VlZHMgMTAwCQEAAAABWgAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgkBAAAAAVcAAAACCQEAAAABVwAAAAIJAQAAAAFXAAAAAgUAAAABVgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAAAAAAAAAAJgAAAAAAAAAAJwAAAAAAAAAAKAAAAAAAAAAAKQAAAAAAAAAAKgAAAAAAAAAAKwAAAAAAAAAALAAAAAAAAAAALQAAAAAAAAAALgAAAAAAAAAALwAAAAAAAAAAMAAAAAAAAAAAMQAAAAAAAAAAMgAAAAAAAAAAMwAAAAAAAAAANAAAAAAAAAAANQAAAAAAAAAANgAAAAAAAAAANwAAAAAAAAAAOAAAAAAAAAAAOQAAAAAAAAAAOgAAAAAAAAAAOwAAAAAAAAAAPAAAAAAAAAAAPQAAAAAAAAAAPgAAAAAAAAAAPwAAAAAAAAAAQAAAAAAAAAAAQQAAAAAAAAAAQgAAAAAAAAAAQwAAAAAAAAAARAAAAAAAAAAARQAAAAAAAAAARgAAAAAAAAAARwAAAAAAAAAASAAAAAAAAAAASQAAAAAAAAAASgAAAAAAAAAASwAAAAAAAAAATAAAAAAAAAAATQAAAAAAAAAATgAAAAAAAAAATwAAAAAAAAAAUAAAAAAAAAAAUQAAAAAAAAAAUgAAAAAAAAAAUwAAAAAAAAAAVAAAAAAAAAAAVQAAAAAAAAAAVgAAAAAAAAAAVwAAAAAAAAAAWAAAAAAAAAAAWQAAAAAAAAAAWgAAAAAAAAAAWwAAAAAAAAAAXAAAAAAAAAAAXQAAAAAAAAAAXgAAAAAAAAAAXwAAAAAAAAAAYAAAAAAAAAAAYQAAAAAAAAAAYgAAAAAAAAAAYwAAAAAAAAAAZAUAAAACYWoJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAAAAAQAAAAJhTgEAAAACYU8AAAAABAAAAAFwBQAAAAJhTgMJAAABAAAAAgUAAAABcAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAAmFQBQAAAAFwBAAAAAJhUQMJAAAAAAAAAggFAAAAAmFQAAAABGRBcHAFAAAAAWkDAwkAAAAAAAACCAUAAAACYVAAAAAIZnVuY3Rpb24CAAAAD2xvY2tTaGFyZVRva2VucwYJAAAAAAAAAggFAAAAAmFQAAAACGZ1bmN0aW9uAgAAAAVjbGFpbQYJAAAAAAAAAggFAAAAAmFQAAAACGZ1bmN0aW9uAgAAABN3aXRoZHJhd1NoYXJlVG9rZW5zBwQAAAACYVIEAAAAAmFTCAUAAAACYVAAAAAEZEFwcAMJAAABAAAAAgUAAAACYVMCAAAAB0FkZHJlc3MEAAAAAmFUBQAAAAJhUwkABCUAAAABBQAAAAJhVAkAAAIAAAABAgAAACJUcmFuc2FjdGlvbiBtdXN0IGhhdmUgb25seSBhZGRyZXNzBAAAAAJhVQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAFqBQAAAAJhUgkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAAWsIBQAAAAJhUAAAAAhmdW5jdGlvbgcEAAAAAmFWAwMDCQAB9AAAAAMIBQAAAAJhTgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmFOAAAABnByb29mcwAAAAAAAAAAAAUAAAABZAYJAAH0AAAAAwgFAAAAAmFOAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACYU4AAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAFlBgkAAfQAAAADCAUAAAACYU4AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTgAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAAWcGCQAB9AAAAAMIBQAAAAJhTgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmFOAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAmFOAAAAD3NlbmRlclB1YmxpY0tleQMDBQAAAAJhUQYFAAAAAmFVBQAAAAJhVgcEAAAAAmFXAwkAAfQAAAADCAUAAAACYU4AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTgAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAAWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAmFYAwkAAfQAAAADCAUAAAACYU4AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTgAAAAZwcm9vZnMAAAAAAAAAAAEFAAAAAWUAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAmFZAwkAAfQAAAADCAUAAAACYU4AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTgAAAAZwcm9vZnMAAAAAAAAAAAIFAAAAAWYAAAAAAAAAAAEAAAAAAAAAAAAJAABnAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAAmFXBQAAAAJhWAUAAAACYVkAAAAAAAAAAAJiwbGc", "height": 1878501, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 722Er5Ax6WFtFhRSi8v18qXPrrmvLwBJJhDabQYzNrmi Next: 6ZZxVJincQpennNXQneCBNHuDeu7BqhdCVtPannTHpW8 Diff:
OldNewDifferences
6969 case _ =>
7070 throw("Can't find asset")
7171 }
72- fraction(amount, dAppStakedTokens, assetIdQuantity)
72+ let transferToUserAmount = fraction(amount, dAppStakedTokens, assetIdQuantity)
73+ if ((transferToUserAmount == 0))
74+ then amount
75+ else transferToUserAmount
7376 }
7477
7578
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositFee = 1000
55
66 let controllerFee = 10000
77
88 let platformFee = 10000
99
1010 let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let adminPubKey2 = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
1616 let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1717
1818 let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
1919
2020 let farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
2121
2222 let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
2323
2424 let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
2525
2626 func isPoolActive (pool) = {
2727 let kActive = (pool + "_active")
2828 let isActive = match getBoolean(this, kActive) {
2929 case boolean: Boolean =>
3030 boolean
3131 case _ =>
3232 throw("Pool is not active!")
3333 }
3434 isActive
3535 }
3636
3737
3838 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
3939 case string: String =>
4040 string
4141 case nothing =>
4242 throw("You try to deposit on unsupported pool")
4343 }
4444
4545
4646 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
4747 case string: String =>
4848 string
4949 case nothing =>
5050 throw("You try to withdraw from unsupported pool")
5151 }
5252
5353
5454 func getStakedAmount (poolAddress) = match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
5555 case staked: Int =>
5656 staked
5757 case nothing: Unit =>
5858 0
5959 case _ =>
6060 throw("Match error")
6161 }
6262
6363
6464 func transferToUser (amount,assetId,poolAddress) = {
6565 let dAppStakedTokens = getStakedAmount(poolAddress)
6666 let assetIdQuantity = match assetInfo(assetId) {
6767 case asset: Asset =>
6868 asset.quantity
6969 case _ =>
7070 throw("Can't find asset")
7171 }
72- fraction(amount, dAppStakedTokens, assetIdQuantity)
72+ let transferToUserAmount = fraction(amount, dAppStakedTokens, assetIdQuantity)
73+ if ((transferToUserAmount == 0))
74+ then amount
75+ else transferToUserAmount
7376 }
7477
7578
7679 @Callable(i)
7780 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
7881 then {
7982 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
8083
8184 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
8285 let poolIndex = value(indexOf(pools, pool))
8386 let liquidityToken = liquidityTokens[poolIndex]
8487 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
8588 }
8689
8790 func generatePoolServiceTokenKeys (accumulated,pool) = {
8891 let poolIndex = value(indexOf(pools, pool))
8992 let liquidityToken = serviceTokens[poolIndex]
9093 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
9194 }
9295
9396 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
9497 let poolIndex = value(indexOf(pools, pool))
9598 let liquidityToken = liquidityTokenDecimals[poolIndex]
9699 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
97100 }
98101
99102 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
100103
101104 let poolBalanceKeys = {
102105 let $l = pools
103106 let $s = size($l)
104107 let $acc0 = nil
105108 func $f0_1 ($a,$i) = if (($i >= $s))
106109 then $a
107110 else generatePoolKeys($a, $l[$i])
108111
109112 func $f0_2 ($a,$i) = if (($i >= $s))
110113 then $a
111114 else throw("List size exceeds 20")
112115
113116 $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)
114117 }
115118 let poolLiquidityTokenKeys = {
116119 let $l = pools
117120 let $s = size($l)
118121 let $acc0 = nil
119122 func $f1_1 ($a,$i) = if (($i >= $s))
120123 then $a
121124 else generatePoolLiquidityTokenKeys($a, $l[$i])
122125
123126 func $f1_2 ($a,$i) = if (($i >= $s))
124127 then $a
125128 else throw("List size exceeds 20")
126129
127130 $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)
128131 }
129132 let poolServiceTokenKeys = {
130133 let $l = pools
131134 let $s = size($l)
132135 let $acc0 = nil
133136 func $f2_1 ($a,$i) = if (($i >= $s))
134137 then $a
135138 else generatePoolServiceTokenKeys($a, $l[$i])
136139
137140 func $f2_2 ($a,$i) = if (($i >= $s))
138141 then $a
139142 else throw("List size exceeds 20")
140143
141144 $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)
142145 }
143146 let poolLiquidityTokenDecimalKeys = {
144147 let $l = pools
145148 let $s = size($l)
146149 let $acc0 = nil
147150 func $f3_1 ($a,$i) = if (($i >= $s))
148151 then $a
149152 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
150153
151154 func $f3_2 ($a,$i) = if (($i >= $s))
152155 then $a
153156 else throw("List size exceeds 20")
154157
155158 $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)
156159 }
157160 let poolActiveKeys = {
158161 let $l = pools
159162 let $s = size($l)
160163 let $acc0 = nil
161164 func $f4_1 ($a,$i) = if (($i >= $s))
162165 then $a
163166 else generatePoolActiveKeys($a, $l[$i])
164167
165168 func $f4_2 ($a,$i) = if (($i >= $s))
166169 then $a
167170 else throw("List size exceeds 20")
168171
169172 $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)
170173 }
171174 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
172175 }
173176 else throw("Only admin can call this function")
174177
175178
176179
177180 @Callable(i)
178181 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
179182 then {
180183 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
181184
182185 let deleteKeys = {
183186 let $l = records
184187 let $s = size($l)
185188 let $acc0 = nil
186189 func $f0_1 ($a,$i) = if (($i >= $s))
187190 then $a
188191 else generateDeletingKeys($a, $l[$i])
189192
190193 func $f0_2 ($a,$i) = if (($i >= $s))
191194 then $a
192195 else throw("List size exceeds 100")
193196
194197 $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)
195198 }
196199 deleteKeys
197200 }
198201 else throw("Only admin can call this function")
199202
200203
201204
202205 @Callable(i)
203206 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
204207 then [Issue(name, description, quantity, decimals, true, unit, 0)]
205208 else throw("Only admin can call this function")
206209
207210
208211
209212 @Callable(a8)
210213 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
211214
212215
213216
214217 @Callable(i)
215218 func deposit (pool) = if ((size(i.payments) != 1))
216219 then throw("One attached payment expected")
217220 else {
218221 let amount = i.payments[0].amount
219222 let assetId = i.payments[0].assetId
220223 let assetIdString = match assetId {
221224 case id: ByteVector =>
222225 toBase58String(id)
223226 case _ =>
224227 throw("Match error")
225228 }
226229 if ((0 >= amount))
227230 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
228231 else {
229232 let poolAmountKey = (pool + "_asset_balance")
230233 let userAddress = toString(i.caller)
231234 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
232235 let dAppAssetAddress = getDAppAssetAddress(pool)
233236 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
234237 case string: String =>
235238 string
236239 case nothing =>
237240 throw("You try to deposit on unsupported pool")
238241 }
239242 if (isPoolActive(pool))
240243 then {
241244 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
242245 case asset: Asset =>
243246 asset.decimals
244247 case _ =>
245248 throw("Can't find asset")
246249 }
247250 if ((liquidutyAssetAddress != assetIdString))
248251 then throw("You attached wrong liquidity token from Swop.fi")
249252 else {
250253 let poolAmount = getIntegerValue(this, poolAmountKey)
251254 let userAmount = match getInteger(userPoolAmountKey) {
252255 case int: Int =>
253256 int
254257 case nothing =>
255258 0
256259 }
257260 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
258261 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
259262 let fee = (amount - userAmountWithoutFee)
260263 let newPoolAmount = ((poolAmount + amount) - fee)
261264 let newUserPoolAmount = (userAmount + transferToUserAmount)
262265 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
263266 [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)]
264267 }
265268 }
266269 else throw("Pool is not active!")
267270 }
268271 }
269272
270273
271274
272275 @Callable(i)
273276 func withdraw (pool) = if ((size(i.payments) != 1))
274277 then throw("One attached payment expected")
275278 else {
276279 let amount = i.payments[0].amount
277280 let assetId = i.payments[0].assetId
278281 let assetIdString = match assetId {
279282 case id: ByteVector =>
280283 toBase58String(id)
281284 case _ =>
282285 throw("Match error")
283286 }
284287 if ((0 >= amount))
285288 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
286289 else if (isPoolActive(pool))
287290 then {
288291 let poolAmountKey = (pool + "_asset_balance")
289292 let userAddress = toString(i.caller)
290293 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
291294 let userAmount = match getInteger(userPoolAmountKey) {
292295 case int: Int =>
293296 int
294297 case nothing =>
295298 0
296299 }
297300 let dAppAssetAddress = getDAppAssetAddress(pool)
298301 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
299302 let poolAmount = getIntegerValue(this, poolAmountKey)
300303 let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
301304 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
302305 let newPoolAmount = (poolAmount - userAmountWithoutFee)
303306 let fee = (amount - userAmountWithoutFee)
304307 let newUserPoolAmount = (userAmount - amount)
305308 [Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
306309 }
307310 else throw("Pool is not active!")
308311 }
309312
310313
311314
312315 @Callable(i)
313316 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
314317 then {
315318 func generatePoolActiveKeys (accumulated,pool) = {
316319 let poolIndex = value(indexOf(pools, pool))
317320 let status = statuses[poolIndex]
318321 BooleanEntry((pool + "_active"), status) :: accumulated
319322 }
320323
321324 let poolActiveKeys = {
322325 let $l = pools
323326 let $s = size($l)
324327 let $acc0 = nil
325328 func $f0_1 ($a,$i) = if (($i >= $s))
326329 then $a
327330 else generatePoolActiveKeys($a, $l[$i])
328331
329332 func $f0_2 ($a,$i) = if (($i >= $s))
330333 then $a
331334 else throw("List size exceeds 100")
332335
333336 $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)
334337 }
335338 poolActiveKeys
336339 }
337340 else throw("Only admin can call this function")
338341
339342
340343 @Verifier(tx)
341344 func verify () = match tx {
342345 case inv: InvokeScriptTransaction =>
343346 let lockShareTokens = if ((inv.dApp == farmingAddress))
344347 then if (if ((inv.function == "lockShareTokens"))
345348 then true
346349 else (inv.function == "claim"))
347350 then true
348351 else (inv.function == "withdrawShareTokens")
349352 else false
350353 let dAppAddress = match inv.dApp {
351354 case dApp: Address =>
352355 toString(dApp)
353356 case _ =>
354357 throw("Transaction must have only address")
355358 }
356359 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
357360 then containsElement(swopFiFunctions, inv.function)
358361 else false
359362 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
360363 then true
361364 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
362365 then true
363366 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
364367 then true
365368 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
366369 if (if (lockShareTokens)
367370 then true
368371 else poolFunctions)
369372 then signedByAdmin
370373 else false
371374 case _ =>
372375 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
373376 then 1
374377 else 0
375378 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
376379 then 1
377380 else 0
378381 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
379382 then 1
380383 else 0
381384 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
382385 }
383386

github/deemru/w8io/026f985 
57.59 ms