2020.09.14 16:12 [2240657] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "6txMAhYc8zZnKPVMoSRiA3piL6JGvNLaN7FGyEQTGsuN", "fee": 1400000, "feeAssetId": null, "timestamp": 1600089146113, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "4VaDYsUvS5LsVYDRPxyVYYerPsquY1EXfY15enV9n8KVEaC78njfs5toi36mbZmUTpUxTvAPvaezG4QuJW4z1Jig", "4hHjrrdEekgE7STBtcEYLUv4hT9jqWKtgHbg3WPH1GapcCbaUFiVtw3X5v6nEZmoEqrXaXh2vW7xp9Hzt3YWzzTE" ], "script": "base64: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AggJAAPvAAAAAQUAAAAEdGhpcwAAAAdyZWd1bGFyCAkAA+8AAAABBQAAAAVmZGFwcAAAAAdyZWd1bGFyAAAAAAp3YXZlc1N0YWtlCQAAZQAAAAIICQAD7wAAAAEFAAAABHRoaXMAAAAHcmVndWxhcggJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUAAAAAEnRlYW1QYXlvdXRzRGF0YUtleQIAAAALdGVhbVBheW91dHMAAAAAFHNjcmlwdFZlcnNpb25EYXRhS2V5AgAAAA1zY3JpcHRWZXJzaW9uAAAAABB0aW1lc3RhbXBEYXRhS2V5AgAAAAl0aW1lc3RhbXAAAAAAEWxhc3RBY3Rpb25EYXRhS2V5AgAAAApsYXN0QWN0aW9uAAAAAAtkYXBwRGF0YUtleQkAAlgAAAABCAUAAAAEdGhpcwAAAAVieXRlcwAAAAATaXNDb250cmFjdFN1c3BlbmRlZAkBAAAAASEAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABWFkbWluBQAAAAtkYXBwRGF0YUtleQcBAAAADXRvRmxvYXRTdHJpbmcAAAABAAAABm51bWJlcgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQkAAGkAAAACBQAAAAZudW1iZXIFAAAAB2RlY2ltYWwCAAAAAS4JAAEwAAAAAgkAAaQAAAABCQAAZAAAAAIJAABqAAAAAgUAAAAGbnVtYmVyBQAAAAdkZWNpbWFsBQAAAAdkZWNpbWFsAAAAAAAAAAABAQAAABFnZXRTY3JpcHRUcmFuc2ZlcgAAAAEAAAAFYXNzZXQKAQAAAA9pc0Fzc2V0RGlzYWJsZWQAAAABAAAADGFzc2V0RGF0YUtleQkBAAAAASEAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABWFkbWluBQAAAAxhc3NldERhdGFLZXkHCgEAAAAKZGlmZmVyZW5jZQAAAAIAAAAMZmNvbGRCYWxhbmNlAAAADGZkYXBwQmFsYW5jZQkAAGUAAAACCQAAawAAAAMJAABkAAAAAgUAAAAMZmNvbGRCYWxhbmNlBQAAAAxmZGFwcEJhbGFuY2UFAAAAC3Jpc2tQZXJjZW50BQAAAAdwZXJjZW50BQAAAAxmZGFwcEJhbGFuY2UE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cnRmb2xpbwAAAAAAAAAACAMJAABmAAAAAgkAAZAAAAABBQAAAA9zY3JpcHRUcmFuc2ZlcnMAAAAAAAAAAAAJAARNAAAAAgkABE0AAAACCQAETgAAAAIFAAAAD3NjcmlwdFRyYW5zZmVycwkBAAAAEGdldFNjcmlwdFZlcnNpb24AAAAACQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFsYXN0QWN0aW9uRGF0YUtleQUAAAATbGFzdEFjdGlvbkRhdGFWYWx1ZQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEHRpbWVzdGFtcERhdGFLZXkIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAAAgAAAAECAAAANU5vIHRyYW5zZmVycyBhdmFpbGFibGUuIFdhaXQgdW50aWwgaW1iYWxhbmNlIGFwcGVhcnMuAAAAAWkBAAAAD3NlbmRUZWFtUGF5b3V0cwAAAAAEAAAAE2xhc3RBY3Rpb25EYXRhVmFsdWUCAAAAD3NlbmRUZWFtUGF5b3V0cwMFAAAAE2lzQ29udHJhY3RTdXNwZW5kZWQJAAACAAAAAQIAAAAtVGhlIGFkbWluaXN0cmF0b3IgaGFzIHN1c3BlbmRlZCB0aGUgY29udHJhY3QhAwMDCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADm1tYm90UHVibGljS2V5BwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5mdGVhbVB1YmxpY0tleQcJAAACAAAAAQIAAAAxT25seSB0aGUgYWRtaW5pc3RyYXRvciBjYW4gcGVyZm9ybSB0aGlzIGZ1bmN0aW9uIQMJAABmAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADJEb24ndCBhdHRhY2ggcGF5bWVudCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4uLgQAAAAOb2xkVGVhbVBheW91dHMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASdGVhbVBheW91dHNEYXRhS2V5AAAAAAAAAAAABAAAAAt0ZWFtUGF5b3V0cwkAAGUAAAACCQAAawAAAAMFAAAACWZtbXRGdW5kcwUAAAALdGVhbVBlcmNlbnQFAAAAB3BlcmNlbnQFAAAADm9sZFRlYW1QYXlvdXRzAwkAAGYAAAACBQAAAAt0ZWFtUGF5b3V0cwAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAVmdGVhbQUAAAALdGVhbVBheW91dHMFAAAACWZtbXRBc3NldAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASdGVhbVBheW91dHNEYXRhS2V5CQAAZAAAAAIFAAAADm9sZFRlYW1QYXlvdXRzBQAAAAt0ZWFtUGF5b3V0cwkABE0AAAACCQAETQAAAAIJAQAAABBnZXRTY3JpcHRWZXJzaW9uAAAAAAkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARbGFzdEFjdGlvbkRhdGFLZXkFAAAAE2xhc3RBY3Rpb25EYXRhVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABB0aW1lc3RhbXBEYXRhS2V5CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAAIAAAABAgAAADhObyBwYXltZW50cyBhdmFpbGFibGUuIFdhaXQgZm9yIG5ldyBpbnZlc3RtZW50cyB0byBjb21lLgAAAAFpAQAAABBzZXRTY3JpcHRWZXJzaW9uAAAAAAQAAAATbGFzdEFjdGlvbkRhdGFWYWx1ZQIAAAAQc2V0U2NyaXB0VmVyc2lvbgMFAAAAE2lzQ29udHJhY3RTdXNwZW5kZWQJAAACAAAAAQIAAAAtVGhlIGFkbWluaXN0cmF0b3IgaGFzIHN1c3BlbmRlZCB0aGUgY29udHJhY3QhAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkAAAIAAAABAgAAADFPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGNhbiBwZXJmb3JtIHRoaXMgZnVuY3Rpb24hAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAA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", "height": 2240657, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 13Zs3zDz8afPYjTdQhqkr1rDUooevqu81YQTz167sPrR Next: B9kYeCNia1M9bDjmAjtEeba9J4W99PqgPacagHfBrPUK Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v3.08_20200913"
4+let scriptVersion = "v3.09_20200914"
55
6-let percent = 100
6+let percent = 1000
77
8-let riskPercent = 20
8+let decimal = 100000000
99
10-let teamPercent = 10
10+let riskPercent = 200
11+
12+let teamPercent = 100
13+
14+let stakePercent = 600
1115
1216 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1317
1519
1620 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
1721
18-let addition = [base58'', base58'', base58'', base58'', base58'', base58'', base58'']
22+let guarantors = [valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58''), valueOrElse(getBinary(this, "guarantor4"), base58''), valueOrElse(getBinary(this, "guarantor5"), base58'')]
1923
20-let guarantors = ([base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'] ++ addition)
24+let actualSize = valueOrElse(indexOf(guarantors, base58''), size(guarantors))
2125
22-let guarantorSize = (size(guarantors) - size(addition))
23-
24-let minSignatures = ((guarantorSize / 2) + (guarantorSize % 2))
26+let minSignatures = ((actualSize / 2) + (actualSize % 2))
2527
2628 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
2729
3537
3638 let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL')
3739
38-let hedgeFunds = (value(assetInfo(fmmtAsset)).quantity - ((assetBalance(this, fmmtAsset) + assetBalance(fteam, fmmtAsset)) + assetBalance(fdapp, fmmtAsset)))
40+let fmmtFunds = (value(assetInfo(fmmtAsset)).quantity - ((assetBalance(this, fmmtAsset) + assetBalance(fteam, fmmtAsset)) + assetBalance(fdapp, fmmtAsset)))
41+
42+let wavesFunds = (wavesBalance(this).regular + wavesBalance(fdapp).regular)
43+
44+let wavesStake = (wavesBalance(this).regular - wavesBalance(this).available)
3945
4046 let teamPayoutsDataKey = "teamPayouts"
4147
4854 let dappDataKey = toBase58String(this.bytes)
4955
5056 let isContractSuspended = !(valueOrElse(getBoolean(admin, dappDataKey), false))
57+
58+func toFloatString (number) = ((toString((number / decimal)) + ".") + drop(toString(((number % decimal) + decimal)), 1))
59+
5160
5261 func getScriptTransfer (asset) = {
5362 func isAssetDisabled (assetDataKey) = !(valueOrElse(getBoolean(admin, assetDataKey), false))
106115 let lastActionDataValue = "sendTeamPayouts"
107116 if (isContractSuspended)
108117 then throw("The administrator has suspended the contract!")
109- else if (if ((i.callerPublicKey != adminPublicKey))
118+ else if (if (if ((i.callerPublicKey != adminPublicKey))
119+ then (i.callerPublicKey != mmbotPublicKey)
120+ else false)
110121 then (i.callerPublicKey != fteamPublicKey)
111122 else false)
112123 then throw("Only the administrator can perform this function!")
114125 then throw("Don't attach payment when calling this function...")
115126 else {
116127 let oldTeamPayouts = valueOrElse(getInteger(this, teamPayoutsDataKey), 0)
117- let teamPayouts = (fraction(hedgeFunds, teamPercent, percent) - oldTeamPayouts)
128+ let teamPayouts = (fraction(fmmtFunds, teamPercent, percent) - oldTeamPayouts)
118129 if ((teamPayouts > 0))
119130 then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldTeamPayouts + teamPayouts)), ((getScriptVersion() :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))]
120131 else throw("No payments available. Wait for new investments to come.")
161172 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
162173 then 1
163174 else 0)) >= minSignatures)
175+ let availableStake = max([0, (fraction(wavesFunds, stakePercent, percent) - wavesStake)])
164176 match tx {
165177 case b: BurnTransaction =>
166178 if (isValidOwner)
168180 else false
169181 case o: Order =>
170182 if (isValidOwner)
171- then if (if ((o.orderType == Buy))
183+ then if (if (if ((o.orderType == Buy))
184+ then !(isDefined(o.matcherFeeAssetId))
185+ else false)
172186 then !(containsElement(portfolio, o.assetPair.priceAsset))
173187 else false)
174188 then true
175- else if ((o.orderType == Sell))
189+ else if (if ((o.orderType == Sell))
190+ then !(isDefined(o.matcherFeeAssetId))
191+ else false)
176192 then !(containsElement(portfolio, o.assetPair.amountAsset))
177193 else false
178194 else false
202218 then (addressFromRecipient(t.recipient) == fdapp)
203219 else false
204220 else false
205- case l: LeaseTransaction =>
206- isValidMMBot
221+ case s: LeaseTransaction =>
222+ if (isValidMMBot)
223+ then if ((availableStake >= s.amount))
224+ then true
225+ else throw((("The maximum available is " + toFloatString(availableStake)) + " Waves."))
226+ else false
207227 case _: LeaseCancelTransaction =>
208228 if (isValidMMBot)
209229 then true
210230 else isValidGuarantors
211- case _: InvokeScriptTransaction|SetScriptTransaction|DataTransaction =>
212- if (isValidAdmin)
231+ case _: SetScriptTransaction|DataTransaction =>
232+ if (if (isValidAdmin)
213233 then isValidGuarantors
214- else false
234+ else false)
235+ then true
236+ else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], fteamPublicKey)
215237 case _ =>
216238 false
217239 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v3.08_20200913"
4+let scriptVersion = "v3.09_20200914"
55
6-let percent = 100
6+let percent = 1000
77
8-let riskPercent = 20
8+let decimal = 100000000
99
10-let teamPercent = 10
10+let riskPercent = 200
11+
12+let teamPercent = 100
13+
14+let stakePercent = 600
1115
1216 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1317
1418 let fteamPublicKey = base58'9rEa7ydWcSWkHfn9wmoHZAKd1LsRNxhcLmdpAJP7Toyj'
1519
1620 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
1721
18-let addition = [base58'', base58'', base58'', base58'', base58'', base58'', base58'']
22+let guarantors = [valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58''), valueOrElse(getBinary(this, "guarantor4"), base58''), valueOrElse(getBinary(this, "guarantor5"), base58'')]
1923
20-let guarantors = ([base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'] ++ addition)
24+let actualSize = valueOrElse(indexOf(guarantors, base58''), size(guarantors))
2125
22-let guarantorSize = (size(guarantors) - size(addition))
23-
24-let minSignatures = ((guarantorSize / 2) + (guarantorSize % 2))
26+let minSignatures = ((actualSize / 2) + (actualSize % 2))
2527
2628 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
2729
2830 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
2931
3032 let portfolio = (([base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] :+ xfeeAsset) :+ fmmtAsset)
3133
3234 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
3335
3436 let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2')
3537
3638 let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL')
3739
38-let hedgeFunds = (value(assetInfo(fmmtAsset)).quantity - ((assetBalance(this, fmmtAsset) + assetBalance(fteam, fmmtAsset)) + assetBalance(fdapp, fmmtAsset)))
40+let fmmtFunds = (value(assetInfo(fmmtAsset)).quantity - ((assetBalance(this, fmmtAsset) + assetBalance(fteam, fmmtAsset)) + assetBalance(fdapp, fmmtAsset)))
41+
42+let wavesFunds = (wavesBalance(this).regular + wavesBalance(fdapp).regular)
43+
44+let wavesStake = (wavesBalance(this).regular - wavesBalance(this).available)
3945
4046 let teamPayoutsDataKey = "teamPayouts"
4147
4248 let scriptVersionDataKey = "scriptVersion"
4349
4450 let timestampDataKey = "timestamp"
4551
4652 let lastActionDataKey = "lastAction"
4753
4854 let dappDataKey = toBase58String(this.bytes)
4955
5056 let isContractSuspended = !(valueOrElse(getBoolean(admin, dappDataKey), false))
57+
58+func toFloatString (number) = ((toString((number / decimal)) + ".") + drop(toString(((number % decimal) + decimal)), 1))
59+
5160
5261 func getScriptTransfer (asset) = {
5362 func isAssetDisabled (assetDataKey) = !(valueOrElse(getBoolean(admin, assetDataKey), false))
5463
5564 func difference (fcoldBalance,fdappBalance) = (fraction((fcoldBalance + fdappBalance), riskPercent, percent) - fdappBalance)
5665
5766 let amount = match asset {
5867 case id: ByteVector =>
5968 if (isAssetDisabled(toBase58String(id)))
6069 then 0
6170 else difference(assetBalance(this, id), assetBalance(fdapp, id))
6271 case _ =>
6372 if (isAssetDisabled("WAVES"))
6473 then 0
6574 else difference(wavesBalance(this).regular, wavesBalance(fdapp).regular)
6675 }
6776 if ((amount > 0))
6877 then [ScriptTransfer(fdapp, amount, asset)]
6978 else nil
7079 }
7180
7281
7382 func getScriptVersion () = {
7483 let oldScriptVersion = valueOrElse(getString(this, scriptVersionDataKey), "")
7584 if ((oldScriptVersion == scriptVersion))
7685 then nil
7786 else [StringEntry(scriptVersionDataKey, scriptVersion)]
7887 }
7988
8089
8190 @Callable(i)
8291 func autoRebalance () = {
8392 let lastActionDataValue = "autoRebalance"
8493 if (isContractSuspended)
8594 then throw("The administrator has suspended the contract!")
8695 else if (if (if ((i.callerPublicKey != adminPublicKey))
8796 then (i.callerPublicKey != mmbotPublicKey)
8897 else false)
8998 then !(containsElement(guarantors, i.callerPublicKey))
9099 else false)
91100 then throw("Only the administrator can perform this function!")
92101 else if ((size(i.payments) > 0))
93102 then throw("Don't attach payment when calling this function...")
94103 else {
95104 let scriptTransfers = ((((((((getScriptTransfer(portfolio[0]) ++ getScriptTransfer(portfolio[1])) ++ getScriptTransfer(portfolio[2])) ++ getScriptTransfer(portfolio[3])) ++ getScriptTransfer(portfolio[4])) ++ getScriptTransfer(portfolio[5])) ++ getScriptTransfer(portfolio[6])) ++ getScriptTransfer(portfolio[7])) ++ getScriptTransfer(portfolio[8]))
96105 if ((size(scriptTransfers) > 0))
97106 then (((scriptTransfers ++ getScriptVersion()) :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
98107 else throw("No transfers available. Wait until imbalance appears.")
99108 }
100109 }
101110
102111
103112
104113 @Callable(i)
105114 func sendTeamPayouts () = {
106115 let lastActionDataValue = "sendTeamPayouts"
107116 if (isContractSuspended)
108117 then throw("The administrator has suspended the contract!")
109- else if (if ((i.callerPublicKey != adminPublicKey))
118+ else if (if (if ((i.callerPublicKey != adminPublicKey))
119+ then (i.callerPublicKey != mmbotPublicKey)
120+ else false)
110121 then (i.callerPublicKey != fteamPublicKey)
111122 else false)
112123 then throw("Only the administrator can perform this function!")
113124 else if ((size(i.payments) > 0))
114125 then throw("Don't attach payment when calling this function...")
115126 else {
116127 let oldTeamPayouts = valueOrElse(getInteger(this, teamPayoutsDataKey), 0)
117- let teamPayouts = (fraction(hedgeFunds, teamPercent, percent) - oldTeamPayouts)
128+ let teamPayouts = (fraction(fmmtFunds, teamPercent, percent) - oldTeamPayouts)
118129 if ((teamPayouts > 0))
119130 then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldTeamPayouts + teamPayouts)), ((getScriptVersion() :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))]
120131 else throw("No payments available. Wait for new investments to come.")
121132 }
122133 }
123134
124135
125136
126137 @Callable(i)
127138 func setScriptVersion () = {
128139 let lastActionDataValue = "setScriptVersion"
129140 if (isContractSuspended)
130141 then throw("The administrator has suspended the contract!")
131142 else if ((i.callerPublicKey != adminPublicKey))
132143 then throw("Only the administrator can perform this function!")
133144 else if ((size(i.payments) > 0))
134145 then throw("Don't attach payment when calling this function...")
135146 else {
136147 let oldScriptVersion = getScriptVersion()
137148 if ((size(oldScriptVersion) > 0))
138149 then ((oldScriptVersion :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
139150 else throw(("The script version has already been updated: " + scriptVersion))
140151 }
141152 }
142153
143154
144155 @Verifier(tx)
145156 func verify () = {
146157 let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
147158 let isValidAdmin = if (isValidOwner)
148159 then true
149160 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
150161 let isValidMMBot = if (isValidOwner)
151162 then true
152163 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
153164 let isValidGuarantors = ((((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
154165 then 1
155166 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
156167 then 1
157168 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
158169 then 1
159170 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
160171 then 1
161172 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
162173 then 1
163174 else 0)) >= minSignatures)
175+ let availableStake = max([0, (fraction(wavesFunds, stakePercent, percent) - wavesStake)])
164176 match tx {
165177 case b: BurnTransaction =>
166178 if (isValidOwner)
167179 then !(containsElement(portfolio, b.assetId))
168180 else false
169181 case o: Order =>
170182 if (isValidOwner)
171- then if (if ((o.orderType == Buy))
183+ then if (if (if ((o.orderType == Buy))
184+ then !(isDefined(o.matcherFeeAssetId))
185+ else false)
172186 then !(containsElement(portfolio, o.assetPair.priceAsset))
173187 else false)
174188 then true
175- else if ((o.orderType == Sell))
189+ else if (if ((o.orderType == Sell))
190+ then !(isDefined(o.matcherFeeAssetId))
191+ else false)
176192 then !(containsElement(portfolio, o.assetPair.amountAsset))
177193 else false
178194 else false
179195 case t: TransferTransaction =>
180196 if (!(isContractSuspended))
181197 then if (if (if (if (isValidOwner)
182198 then (t.feeAssetId == xfeeAsset)
183199 else false)
184200 then !(containsElement(portfolio, t.assetId))
185201 else false)
186202 then true
187203 else if (if (if (isValidAdmin)
188204 then (t.assetId == fmmtAsset)
189205 else false)
190206 then (t.feeAssetId == xfeeAsset)
191207 else false)
192208 then (addressFromRecipient(t.recipient) == fdapp)
193209 else false)
194210 then true
195211 else if (if (if (if (isValidGuarantors)
196212 then (t.assetId != fmmtAsset)
197213 else false)
198214 then (t.assetId != xfeeAsset)
199215 else false)
200216 then containsElement(portfolio, t.assetId)
201217 else false)
202218 then (addressFromRecipient(t.recipient) == fdapp)
203219 else false
204220 else false
205- case l: LeaseTransaction =>
206- isValidMMBot
221+ case s: LeaseTransaction =>
222+ if (isValidMMBot)
223+ then if ((availableStake >= s.amount))
224+ then true
225+ else throw((("The maximum available is " + toFloatString(availableStake)) + " Waves."))
226+ else false
207227 case _: LeaseCancelTransaction =>
208228 if (isValidMMBot)
209229 then true
210230 else isValidGuarantors
211- case _: InvokeScriptTransaction|SetScriptTransaction|DataTransaction =>
212- if (isValidAdmin)
231+ case _: SetScriptTransaction|DataTransaction =>
232+ if (if (isValidAdmin)
213233 then isValidGuarantors
214- else false
234+ else false)
235+ then true
236+ else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], fteamPublicKey)
215237 case _ =>
216238 false
217239 }
218240 }
219241

github/deemru/w8io/786bc32 
68.86 ms