tx · DY7dLcNsgeZddD8yuk4VHuiiGxAqEe7rjA7jNXLohqV3

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.01.12 19:15 [1875959] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "DY7dLcNsgeZddD8yuk4VHuiiGxAqEe7rjA7jNXLohqV3", "fee": 1400000, "feeAssetId": null, "timestamp": 1642004186896, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "2hvrLQxzkhMZ66SeWCsRYXPs32PMAHcYNfxDQZS6zqMKifreZJJKvVhNprmPBg6WKPgrzGuD9YcjqL1Wx6To7Lqe", "H9CfGbvkoQwyuMTNHbBarJqsbUZ61h6Zp69dDYfygkjT1qRvecCVFoaXgKX1y73BezFXbL5d4tD5RTQkBENdipC", "2QX739BeSJaSNy4eTaqtK9A2VrCMhu3nDFLytqgJgYGaKxTuVr2HxWD9Acdr86gFuRfE9rsjBfeZd9TqSTe1zvj1" ], "script": "base64:AAIFAAAAAAAAB5AIAhIGCgQYGBgREgMKARgSBgoECAgBARIAEgMKAQgSAwoBCBIECgIYFBoVCgFBEhBkQXBwU3Rha2VkVG9rZW5zGhQKAUISD2Fzc2V0SWRRdWFudGl0eRoKCgFDEgVhc3NldBoGCgFEEgFpGgoKAUUSBXBvb2xzGhQKAUYSD2xpcXVpZGl0eVRva2VucxoSCgFHEg1zZXJ2aWNlVG9rZW5zGhsKAUgSFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMaFQoBSRIQZ2VuZXJhdGVQb29sS2V5cxoQCgFKEgthY2N1bXVsYXRlZBojCgFLEh5nZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbktleXMaDgoBTBIJcG9vbEluZGV4GhMKAU0SDmxpcXVpZGl0eVRva2VuGiEKAU4SHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMaKgoBTxIlZ2VuZXJhdGVQb29sTGlxdWlkaXR5VG9rZW5EZWNpbWFsS2V5cxobCgFQEhZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzGhQKAVESD3Bvb2xCYWxhbmNlS2V5cxoHCgFSEgIkbBoHCgFTEgIkcxoKCgFUEgUkYWNjMBoKCgFVEgUkZjBfMRoHCgFWEgIkYRoHCgFXEgIkaRoKCgFYEgUkZjBfMhobCgFZEhZwb29sTGlxdWlkaXR5VG9rZW5LZXlzGgoKAVoSBSRmMV8xGg8KAWESCmRlcG9zaXRGZWUaGwoCYUESFWxpcXVpZGl0eVRva2VuRGVjaW1hbBoQCgJhQhIKcG9vbEFtb3VudBoQCgJhQxIKdXNlckFtb3VudBoJCgJhRBIDaW50GhoKAmFFEhR1c2VyQW1vdW50V2l0aG91dEZlZRoaCgJhRhIUdHJhbnNmZXJUb1VzZXJBbW91bnQaCQoCYUcSA2ZlZRoTCgJhSBINbmV3UG9vbEFtb3VudBoXCgJhSRIRbmV3VXNlclBvb2xBbW91bnQaEwoCYUoSDWxvY2tUb2tlbnNLZXkaDgoCYUsSCHN0YXR1c2VzGgwKAmFMEgZzdGF0dXMaCAoCYU0SAnR4GgwKAmFOEgZ2ZXJpZnkaCQoCYU8SA2ludhoVCgJhUBIPbG9ja1NoYXJlVG9rZW5zGhEKAmFREgtkQXBwQWRkcmVzcxoNCgJhUhIHJG1hdGNoMRoKCgJhUxIEZEFwcBoTCgJhVBINcG9vbEZ1bmN0aW9ucxoTCgJhVRINc2lnbmVkQnlBZG1pbhoQCgJhVhIKYWRtMVNpZ25lZBoQCgJhVxIKYWRtMlNpZ25lZBoQCgJhWBIKYWRtM1NpZ25lZBoLCgJhYRIFJGYxXzIaGgoCYWISFHBvb2xTZXJ2aWNlVG9rZW5LZXlzGgsKAmFjEgUkZjJfMRoLCgJhZBIFJGYyXzIaIwoCYWUSHXBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzGgsKAmFmEgUkZjNfMRoLCgJhZxIFJGYzXzIaFAoCYWgSDnBvb2xBY3RpdmVLZXlzGgsKAmFpEgUkZjRfMRoLCgJhahIFJGY0XzIaDQoCYWsSB3JlY29yZHMaGgoCYWwSFGdlbmVyYXRlRGVsZXRpbmdLZXlzGgwKAmFtEgZyZWNvcmQaEAoCYW4SCmRlbGV0ZUtleXMaCgoCYW8SBG5hbWUaEQoCYXASC2Rlc2NyaXB0aW9uGg4KAmFxEghxdWFudGl0eRoOCgJhchIIZGVjaW1hbHMaCAoCYXMSAmE4GhMKAmF0Eg1hc3NldElkU3RyaW5nGggKAmF1EgJpZBoTCgJhdhINcG9vbEFtb3VudEtleRoRCgJhdxILdXNlckFkZHJlc3MaFwoCYXgSEXVzZXJQb29sQW1vdW50S2V5GhYKAmF5EhBkQXBwQXNzZXRBZGRyZXNzGhsKAmF6EhVsaXF1aWR1dHlBc3NldEFkZHJlc3MaEgoBYhINY29udHJvbGxlckZlZRoQCgFjEgtwbGF0Zm9ybUZlZRoRCgFkEgxhZG1pblB1YktleTEaEQoBZRIMYWRtaW5QdWJLZXkyGhEKAWYSDGFkbWluUHViS2V5MxoRCgFnEgxhZG1pblB1YktleTQaFgoBaBIRZ292ZXJtYW5jZUFkZHJlc3MaEwoBaRIOZmFybWluZ0FkZHJlc3MaEAoBahILc3dvcEZpUG9vbHMaFAoBaxIPc3dvcEZpRnVuY3Rpb25zGhEKAWwSDGlzUG9vbEFjdGl2ZRoJCgFtEgRwb29sGgwKAW4SB2tBY3RpdmUaDQoBbxIIaXNBY3RpdmUaGAoBcBITZ2V0REFwcEFzc2V0QWRkcmVzcxoMCgFxEgckbWF0Y2gwGgsKAXISBnN0cmlu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AAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgUAAAABVAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAQAAAABWQoAAAAAAVIFAAAAAUUKAAAAAAFTCQABkAAAAAEFAAAAAVIKAAAAAAFUBQAAAANuaWwKAQAAAAFaAAAAAgAAAAFWAAAAAVcDCQAAZwAAAAIFAAAAAVcFAAAAAVMFAAAAAVYJAQAAAAFLAAAAAgUAAAABVgkAAZEAAAACBQAAAAFSBQAAAAFXCgEAAAACYWEAAAACAAAAAVYAAAABVwMJAABnAAAAAgUAAAABVwUAAAABUwUAAAABVgkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAAAmFhAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIJAQAAAAFaAAAAAgkBAAAAAVoAAAACCQEAAAABWgAAAAIFAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsA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AAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAA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AAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgkBAAAAAVUAAAACCQEAAAABVQAAAAIJAQAAAAFVAAAAAgUAAAABVAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAAAAAAAAAAJgAAAAAAAAAAJwAAAAAAAAAAKAAAAAAAAAAAKQAAAAAAAAAAKgAAAAAAAAAAKwAAAAAAAAAALAAAAAAAAAAALQAAAAAAAAAALgAAAAAAAAAALwAAAAAAAAAAMAAAAAAAAAAAMQAAAAAAAAAAMgAAAAAAAAAAMwAAAAAAAAAANAAAAAAAAAAANQAAAAAAAAAANgAAAAAAAAAANwAAAAAAAAAAOAAAAAAAAAAAOQAAAAAAAAAAOgAAAAAAAAAAOwAAAAAAAAAAPAAAAAAAAAAAPQAAAAAAAAAAPgAAAAAAAAAAPwAAAAAAAAAAQAAAAAAAAAAAQQAAAAAAAAAAQgAAAAAAAAAAQwAAAAAAAAAARAAAAAAAAAAARQAAAAAAAAAARgAAAAAAAAAARwAAAAAAAAAASAAAAAAAAAAASQAAAAAAAAAASgAAAAAAAAAASwAAAAAAAAAATAAAAAAAAAAATQAAAAAAAAAATgAAAAAAAAAATwAAAAAAAAAAUAAAAAAAAAAAUQAAAAAAAAAAUgAAAAAAAAAAUwAAAAAAAAAAVAAAAAAAAAAAVQAAAAAAAAAAVgAAAAAAAAAAVwAAAAAAAAAAWAAAAAAAAAAAWQAAAAAAAAAAWgAAAAAAAAAAWwAAAAAAAAAAXAAAAAAAAAAAXQAAAAAAAAAAXgAAAAAAAAAAXwAAAAAAAAAAYAAAAAAAAAAAYQAAAAAAAAAAYgAAAAAAAAAAYwAAAAAAAAAAZAUAAAACYWgJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAAAAAQAAAAJhTQEAAAACYU4AAAAABAAAAAFxBQAAAAJhTQMJAAABAAAAAgUAAAABcQIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAAmFPBQAAAAFxBAAAAAJhUAMJAAAAAAAAAggFAAAAAmFPAAAABGRBcHAFAAAAAWkDAwkAAAAAAAACCAUAAAACYU8AAAAIZnVuY3Rpb24CAAAAD2xvY2tTaGFyZVRva2VucwYJAAAAAAAAAggFAAAAAmFPAAAACGZ1bmN0aW9uAgAAAAVjbGFpbQYJAAAAAAAAAggFAAAAAmFPAAAACGZ1bmN0aW9uAgAAABN3aXRoZHJhd1NoYXJlVG9rZW5zBwQAAAACYVEEAAAAAmFSCAUAAAACYU8AAAAEZEFwcAMJAAABAAAAAgUAAAACYVICAAAAB0FkZHJlc3MEAAAAAmFTBQAAAAJhUgkABCUAAAABBQAAAAJhUwkAAAIAAAABAgAAACJUcmFuc2FjdGlvbiBtdXN0IGhhdmUgb25seSBhZGRyZXNzBAAAAAJhVAMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAFqBQAAAAJhUQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAAWsIBQAAAAJhTwAAAAhmdW5jdGlvbgcEAAAAAmFVAwMDCQAB9AAAAAMIBQAAAAJhTQAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmFNAAAABnByb29mcwAAAAAAAAAAAAUAAAABZAYJAAH0AAAAAwgFAAAAAmFNAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACYU0AAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAFlBgkAAfQAAAADCAUAAAACYU0AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTQAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAAWcGCQAB9AAAAAMIBQAAAAJhTQAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmFNAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAmFNAAAAD3NlbmRlclB1YmxpY0tleQMDBQAAAAJhUAYFAAAAAmFUBQAAAAJhVQcEAAAAAmFWAwkAAfQAAAADCAUAAAACYU0AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTQAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAAWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAmFXAwkAAfQAAAADCAUAAAACYU0AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTQAAAAZwcm9vZnMAAAAAAAAAAAEFAAAAAWUAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAmFYAwkAAfQAAAADCAUAAAACYU0AAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJhTQAAAAZwcm9vZnMAAAAAAAAAAAIFAAAAAWYAAAAAAAAAAAEAAAAAAAAAAAAJAABnAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAAmFWBQAAAAJhVwUAAAACYVgAAAAAAAAAAAKIQAy4", "height": 1875959, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DvzhaZFW6vDaCuMw9xrT1px3HMRPF8kXYjutroGjrdJC Next: HaDtci8T7KLDnfwuvpRTJZLuZjutpSAJBftQGpMcE5PE Diff:
OldNewDifferences
5858
5959 func transferToUser (amount,assetId,poolAddress) = {
6060 let dAppStakedTokens = getStakedAmount(poolAddress)
61- let assetIdQuantity = value(assetInfo(assetId)).quantity
61+ let assetIdQuantity = match assetInfo(assetId) {
62+ case asset: Asset =>
63+ asset.quantity
64+ case _ =>
65+ throw("Can't find asset")
66+ }
6267 fraction(amount, dAppStakedTokens, assetIdQuantity)
6368 }
6469
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositFee = 1000
55
66 let controllerFee = 10000
77
88 let platformFee = 10000
99
1010 let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let adminPubKey2 = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
1616 let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1717
1818 let govermanceAddress = Address(base58'3PKoJ7GHwmidFPX6NiqKZdq8Zj2auPMNPnE')
1919
2020 let farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
2121
2222 let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
2323
2424 let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
2525
2626 func isPoolActive (pool) = {
2727 let kActive = (pool + "_active")
2828 let isActive = getBooleanValue(this, kActive)
2929 isActive
3030 }
3131
3232
3333 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
3434 case string: String =>
3535 string
3636 case nothing =>
3737 throw("You try to deposit on unsupported pool")
3838 }
3939
4040
4141 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
4242 case string: String =>
4343 string
4444 case nothing =>
4545 throw("You try to withdraw from unsupported pool")
4646 }
4747
4848
4949 func getStakedAmount (poolAddress) = match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
5050 case staked: Int =>
5151 staked
5252 case nothing: Unit =>
5353 0
5454 case _ =>
5555 throw("Match error")
5656 }
5757
5858
5959 func transferToUser (amount,assetId,poolAddress) = {
6060 let dAppStakedTokens = getStakedAmount(poolAddress)
61- let assetIdQuantity = value(assetInfo(assetId)).quantity
61+ let assetIdQuantity = match assetInfo(assetId) {
62+ case asset: Asset =>
63+ asset.quantity
64+ case _ =>
65+ throw("Can't find asset")
66+ }
6267 fraction(amount, dAppStakedTokens, assetIdQuantity)
6368 }
6469
6570
6671 @Callable(i)
6772 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
6873 then {
6974 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
7075
7176 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
7277 let poolIndex = value(indexOf(pools, pool))
7378 let liquidityToken = liquidityTokens[poolIndex]
7479 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
7580 }
7681
7782 func generatePoolServiceTokenKeys (accumulated,pool) = {
7883 let poolIndex = value(indexOf(pools, pool))
7984 let liquidityToken = serviceTokens[poolIndex]
8085 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
8186 }
8287
8388 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
8489 let poolIndex = value(indexOf(pools, pool))
8590 let liquidityToken = liquidityTokenDecimals[poolIndex]
8691 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
8792 }
8893
8994 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
9095
9196 let poolBalanceKeys = {
9297 let $l = pools
9398 let $s = size($l)
9499 let $acc0 = nil
95100 func $f0_1 ($a,$i) = if (($i >= $s))
96101 then $a
97102 else generatePoolKeys($a, $l[$i])
98103
99104 func $f0_2 ($a,$i) = if (($i >= $s))
100105 then $a
101106 else throw("List size exceeds 20")
102107
103108 $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)
104109 }
105110 let poolLiquidityTokenKeys = {
106111 let $l = pools
107112 let $s = size($l)
108113 let $acc0 = nil
109114 func $f1_1 ($a,$i) = if (($i >= $s))
110115 then $a
111116 else generatePoolLiquidityTokenKeys($a, $l[$i])
112117
113118 func $f1_2 ($a,$i) = if (($i >= $s))
114119 then $a
115120 else throw("List size exceeds 20")
116121
117122 $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)
118123 }
119124 let poolServiceTokenKeys = {
120125 let $l = pools
121126 let $s = size($l)
122127 let $acc0 = nil
123128 func $f2_1 ($a,$i) = if (($i >= $s))
124129 then $a
125130 else generatePoolServiceTokenKeys($a, $l[$i])
126131
127132 func $f2_2 ($a,$i) = if (($i >= $s))
128133 then $a
129134 else throw("List size exceeds 20")
130135
131136 $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)
132137 }
133138 let poolLiquidityTokenDecimalKeys = {
134139 let $l = pools
135140 let $s = size($l)
136141 let $acc0 = nil
137142 func $f3_1 ($a,$i) = if (($i >= $s))
138143 then $a
139144 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
140145
141146 func $f3_2 ($a,$i) = if (($i >= $s))
142147 then $a
143148 else throw("List size exceeds 20")
144149
145150 $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)
146151 }
147152 let poolActiveKeys = {
148153 let $l = pools
149154 let $s = size($l)
150155 let $acc0 = nil
151156 func $f4_1 ($a,$i) = if (($i >= $s))
152157 then $a
153158 else generatePoolActiveKeys($a, $l[$i])
154159
155160 func $f4_2 ($a,$i) = if (($i >= $s))
156161 then $a
157162 else throw("List size exceeds 20")
158163
159164 $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)
160165 }
161166 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
162167 }
163168 else throw("Only admin can call this function")
164169
165170
166171
167172 @Callable(i)
168173 func deleteDepositLockRecords (records) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
169174 then {
170175 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
171176
172177 let deleteKeys = {
173178 let $l = records
174179 let $s = size($l)
175180 let $acc0 = nil
176181 func $f0_1 ($a,$i) = if (($i >= $s))
177182 then $a
178183 else generateDeletingKeys($a, $l[$i])
179184
180185 func $f0_2 ($a,$i) = if (($i >= $s))
181186 then $a
182187 else throw("List size exceeds 100")
183188
184189 $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)
185190 }
186191 deleteKeys
187192 }
188193 else throw("Only admin can call this function")
189194
190195
191196
192197 @Callable(i)
193198 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
194199 then [Issue(name, description, quantity, decimals, true, unit, 0)]
195200 else throw("Only admin can call this function")
196201
197202
198203
199204 @Callable(a8)
200205 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
201206
202207
203208
204209 @Callable(i)
205210 func deposit (pool) = if ((size(i.payments) != 1))
206211 then throw("One attached payment expected")
207212 else {
208213 let amount = i.payments[0].amount
209214 let assetId = i.payments[0].assetId
210215 let assetIdString = match assetId {
211216 case id: ByteVector =>
212217 toBase58String(id)
213218 case _ =>
214219 throw("Match error")
215220 }
216221 if ((0 >= amount))
217222 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
218223 else {
219224 let poolAmountKey = (pool + "_asset_balance")
220225 let userAddress = toString(i.caller)
221226 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
222227 let dAppAssetAddress = getDAppAssetAddress(pool)
223228 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
224229 case string: String =>
225230 string
226231 case nothing =>
227232 throw("You try to deposit on unsupported pool")
228233 }
229234 if (isPoolActive(pool))
230235 then {
231236 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
232237 case asset: Asset =>
233238 asset.decimals
234239 case _ =>
235240 throw("Can't find asset")
236241 }
237242 if ((liquidutyAssetAddress != assetIdString))
238243 then throw("You attached wrong liquidity token from Swop.fi")
239244 else {
240245 let poolAmount = getIntegerValue(this, poolAmountKey)
241246 let userAmount = match getInteger(userPoolAmountKey) {
242247 case int: Int =>
243248 int
244249 case nothing =>
245250 0
246251 }
247252 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
248253 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
249254 let fee = (amount - userAmountWithoutFee)
250255 let newPoolAmount = ((poolAmount + amount) - fee)
251256 let newUserPoolAmount = (userAmount + transferToUserAmount)
252257 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
253258 [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)]
254259 }
255260 }
256261 else throw("Pool is not active!")
257262 }
258263 }
259264
260265
261266
262267 @Callable(i)
263268 func withdraw (pool) = if ((size(i.payments) != 1))
264269 then throw("One attached payment expected")
265270 else {
266271 let amount = i.payments[0].amount
267272 let assetId = i.payments[0].assetId
268273 let assetIdString = match assetId {
269274 case id: ByteVector =>
270275 toBase58String(id)
271276 case _ =>
272277 throw("Match error")
273278 }
274279 if ((0 >= amount))
275280 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
276281 else if (isPoolActive(pool))
277282 then {
278283 let poolAmountKey = (pool + "_asset_balance")
279284 let userAddress = toString(i.caller)
280285 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
281286 let userAmount = match getInteger(userPoolAmountKey) {
282287 case int: Int =>
283288 int
284289 case nothing =>
285290 0
286291 }
287292 let dAppAssetAddress = getDAppAssetAddress(pool)
288293 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
289294 let poolAmount = getIntegerValue(this, poolAmountKey)
290295 let userAmountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
291296 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(assetIdString), pool)
292297 let newPoolAmount = (poolAmount - userAmountWithoutFee)
293298 let fee = (amount - userAmountWithoutFee)
294299 let newUserPoolAmount = (userAmount - amount)
295300 [Burn(fromBase58String(dAppAssetAddress), transferToUserAmount), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(liquidutyAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
296301 }
297302 else throw("Pool is not active!")
298303 }
299304
300305
301306
302307 @Callable(i)
303308 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
304309 then {
305310 func generatePoolActiveKeys (accumulated,pool) = {
306311 let poolIndex = value(indexOf(pools, pool))
307312 let status = statuses[poolIndex]
308313 BooleanEntry((pool + "_active"), status) :: accumulated
309314 }
310315
311316 let poolActiveKeys = {
312317 let $l = pools
313318 let $s = size($l)
314319 let $acc0 = nil
315320 func $f0_1 ($a,$i) = if (($i >= $s))
316321 then $a
317322 else generatePoolActiveKeys($a, $l[$i])
318323
319324 func $f0_2 ($a,$i) = if (($i >= $s))
320325 then $a
321326 else throw("List size exceeds 100")
322327
323328 $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)
324329 }
325330 poolActiveKeys
326331 }
327332 else throw("Only admin can call this function")
328333
329334
330335 @Verifier(tx)
331336 func verify () = match tx {
332337 case inv: InvokeScriptTransaction =>
333338 let lockShareTokens = if ((inv.dApp == farmingAddress))
334339 then if (if ((inv.function == "lockShareTokens"))
335340 then true
336341 else (inv.function == "claim"))
337342 then true
338343 else (inv.function == "withdrawShareTokens")
339344 else false
340345 let dAppAddress = match inv.dApp {
341346 case dApp: Address =>
342347 toString(dApp)
343348 case _ =>
344349 throw("Transaction must have only address")
345350 }
346351 let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
347352 then containsElement(swopFiFunctions, inv.function)
348353 else false
349354 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
350355 then true
351356 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
352357 then true
353358 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
354359 then true
355360 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
356361 if (if (lockShareTokens)
357362 then true
358363 else poolFunctions)
359364 then signedByAdmin
360365 else false
361366 case _ =>
362367 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
363368 then 1
364369 else 0
365370 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
366371 then 1
367372 else 0
368373 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
369374 then 1
370375 else 0
371376 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
372377 }
373378

github/deemru/w8io/169f3d6 
51.07 ms