tx · AqZXJWFqaS4ZfGgKVhkWiaapyrj2sdAiHHr9FfucoXvK

3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA:  -0.01400000 Waves

2020.12.20 14:59 [2380686] smart account 3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA > SELF 0.00000000 Waves

{ "type": 13, "id": "AqZXJWFqaS4ZfGgKVhkWiaapyrj2sdAiHHr9FfucoXvK", "fee": 1400000, "feeAssetId": null, "timestamp": 1608465446540, "version": 1, "sender": "3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA", "senderPublicKey": "5gGSWjBNTQGAMZViHK3qbn35JUNmbzqboicpdMuweapK", "proofs": [ "4Uzn36drW4DqDuKYmBunnRHnpSQLcxH3sYgbvrLkRiiH2XHYry31zfP385jDqnDSAk1KeJyn54QUoQyY1L8bSxjX", "2ip9Tbrkiih2bnPFrN4hixVpDcYPp3Ew7xBscao8T4trYboE1JLNboybqycYM24xoGkf5ajDLV44z7ePYdkqijSf" ], "script": "base64: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", "chainId": 87, "height": 2380686, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E72gLLJwaW6eeUPdqMc2LunNXwWGz68fdja69Jt7dPzs Next: CTKcuQ3Z4pWbi6FtfG1c6ywP42Nu7JegFofSGotiy7s1 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v7.04_20201219"
4+let scriptVersion = "v7.05_20201220"
55
66 let txFee = 500000
77
6464 else intValue
6565
6666
67-func valueOrMaximum (intValue,maxValue) = min([intValue, maxValue])
67+func valueOrMaximum (intValue,maxValue) = if ((maxValue > intValue))
68+ then intValue
69+ else maxValue
6870
6971
7072 func isAssetDisabled (assetId) = !(valueOrElse(getBoolean(admin, toBase58String(assetId)), false))
131133 else {
132134 let recipient = fdapp
133135 let xfeeAmount = valueOrMaximum(txFee, assetBalance(this, xfeeAsset))
134- let scriptTransfers = (((((((getScriptTransfer(recipient, rebalancingAmount(portfolio[0]), portfolio[0]) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[2]), portfolio[2])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[7]), portfolio[7]))
136+ let fmmtRebalancingAmount = (fdappSupply - assetBalance(fdapp, fmmtAsset))
137+ let scriptTransfers = ((((((((getScriptTransfer(recipient, fmmtRebalancingAmount, fmmtAsset) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[0]), portfolio[0])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[2]), portfolio[2])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[7]), portfolio[7]))
135138 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
136139 if ((size(scriptTransfers) == 0))
137140 then throw("There are currently no transfers available.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v7.04_20201219"
4+let scriptVersion = "v7.05_20201220"
55
66 let txFee = 500000
77
88 let fdappSupply = (1000 * 100000)
99
1010 let fsaleSupply = (10000 * 100000)
1111
1212 let percent = 100000
1313
1414 let decimal = 100000000
1515
1616 let feePercent = 10000
1717
1818 let fdappPercent = 30000
1919
2020 let wavesMatcher = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2121
2222 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2323
2424 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
2525
2626 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'')] :+ base58'')
2727
2828 let actualSize = value(indexOf(guarantors, base58''))
2929
3030 let minSignatures = ((actualSize / 2) + (actualSize % 2))
3131
3232 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
3333
3434 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
3535
3636 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
3737
3838 let portfolio = ([base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] :+ fmmtAsset)
3939
4040 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4141
4242 let fdapp = Address(base58'3PEPsNg7aSWSSgdC6XweyJkvDXmwVoWeNHL')
4343
4444 let fcold = Address(base58'3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA')
4545
4646 let fsale = Address(base58'3PDKVpNDPg7Ztcp31DvmKmDbzA9uUjs914Y')
4747
4848 let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - fsaleSupply)
4949
5050 let fteamFunds = assetBalance(admin, fmmtAsset)
5151
5252 let investments = max([0, (circSupply - fteamFunds)])
5353
5454 let logEntryDataKey = "logEntry"
5555
5656 let timestampDataKey = "timestamp"
5757
5858 let payoutsDataKey = "teamPayouts"
5959
6060 let versionDataKey = "scriptVersion"
6161
6262 func validate (intValue,minValue) = if ((minValue > intValue))
6363 then 0
6464 else intValue
6565
6666
67-func valueOrMaximum (intValue,maxValue) = min([intValue, maxValue])
67+func valueOrMaximum (intValue,maxValue) = if ((maxValue > intValue))
68+ then intValue
69+ else maxValue
6870
6971
7072 func isAssetDisabled (assetId) = !(valueOrElse(getBoolean(admin, toBase58String(assetId)), false))
7173
7274
7375 func toFloatString (num,dec) = if ((num == 0))
7476 then "0"
7577 else if ((num > 0))
7678 then toUtf8String(((toBytes(toString((num / dec))) + base58'o') + drop(toBytes(toString(((num % dec) + dec))), 1)))
7779 else throw("Negative amounts are not allowed!")
7880
7981
8082 func difference (fdappFunds,fcoldFunds) = {
8183 let total = (fdappFunds + fcoldFunds)
8284 validate((fraction(total, fdappPercent, percent) - fdappFunds), (total / 100))
8385 }
8486
8587
8688 func rebalancingAmount (assetId) = if (isAssetDisabled(assetId))
8789 then assetBalance(this, assetId)
8890 else difference(assetBalance(fdapp, assetId), assetBalance(this, assetId))
8991
9092
9193 func airdropBalance (assetId) = if (containsElement(portfolio, assetId))
9294 then throw(("Delete asset ID: " + toBase58String(assetId)))
9395 else if ((assetId == base58''))
9496 then 0
9597 else assetBalance(this, assetId)
9698
9799
98100 func getScriptTransfer (address,amount,assetId) = if ((0 >= amount))
99101 then nil
100102 else [ScriptTransfer(address, amount, assetId)]
101103
102104
103105 @Callable(i)
104106 func teamPayouts () = if (if ((i.callerPublicKey != adminPublicKey))
105107 then (i.callerPublicKey != mmbotPublicKey)
106108 else false)
107109 then throw("This action can only be performed by an administrator!")
108110 else if ((size(i.payments) > 0))
109111 then throw("Don't attach payment when calling this function ...")
110112 else {
111113 let oldPayouts = valueOrElse(getInteger(this, payoutsDataKey), 0)
112114 let teamPayouts = fraction(investments, feePercent, (percent - feePercent))
113115 let amount = validate((teamPayouts - oldPayouts), 0)
114116 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): teamPayouts () =>", "amount:", toFloatString(amount, 100000), "FMMT"], " ")
115117 if ((0 >= amount))
116118 then throw("There are currently no payments available.")
117119 else [ScriptTransfer(admin, amount, fmmtAsset), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
118120 }
119121
120122
121123
122124 @Callable(i)
123125 func autoRebalance () = if (if (if ((i.callerPublicKey != adminPublicKey))
124126 then (i.callerPublicKey != mmbotPublicKey)
125127 else false)
126128 then !(containsElement(guarantors, i.callerPublicKey))
127129 else false)
128130 then throw("This action can only be performed by an administrator or guarantor!")
129131 else if ((size(i.payments) > 0))
130132 then throw("Don't attach payment when calling this function ...")
131133 else {
132134 let recipient = fdapp
133135 let xfeeAmount = valueOrMaximum(txFee, assetBalance(this, xfeeAsset))
134- let scriptTransfers = (((((((getScriptTransfer(recipient, rebalancingAmount(portfolio[0]), portfolio[0]) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[2]), portfolio[2])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[7]), portfolio[7]))
136+ let fmmtRebalancingAmount = (fdappSupply - assetBalance(fdapp, fmmtAsset))
137+ let scriptTransfers = ((((((((getScriptTransfer(recipient, fmmtRebalancingAmount, fmmtAsset) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[0]), portfolio[0])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[2]), portfolio[2])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(recipient, rebalancingAmount(portfolio[7]), portfolio[7]))
135138 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
136139 if ((size(scriptTransfers) == 0))
137140 then throw("There are currently no transfers available.")
138141 else (((scriptTransfers ++ getScriptTransfer(i.caller, xfeeAmount, xfeeAsset)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
139142 }
140143
141144
142145
143146 @Callable(i)
144147 func airdropWasher (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((i.callerPublicKey != adminPublicKey))
145148 then throw("This action can only be performed by an administrator!")
146149 else if ((size(i.payments) > 0))
147150 then throw("Don't attach payment when calling this function ...")
148151 else {
149152 let scriptTransfers = (((((((((getScriptTransfer(admin, airdropBalance(id0), id0) ++ getScriptTransfer(admin, airdropBalance(id1), id1)) ++ getScriptTransfer(admin, airdropBalance(id2), id2)) ++ getScriptTransfer(admin, airdropBalance(id3), id3)) ++ getScriptTransfer(admin, airdropBalance(id4), id4)) ++ getScriptTransfer(admin, airdropBalance(id5), id5)) ++ getScriptTransfer(admin, airdropBalance(id6), id6)) ++ getScriptTransfer(admin, airdropBalance(id7), id7)) ++ getScriptTransfer(admin, airdropBalance(id8), id8)) ++ getScriptTransfer(admin, airdropBalance(id9), id9))
150153 let logEntryDataValue = ("DeFi Franklin (FMMT): airdropWasher () => tx: " + toBase58String(i.transactionId))
151154 if ((size(scriptTransfers) == 0))
152155 then throw("There are currently no transfers available.")
153156 else ((scriptTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
154157 }
155158
156159
157160
158161 @Callable(i)
159162 func setScriptVersion () = if ((i.callerPublicKey != adminPublicKey))
160163 then throw("This action can only be performed by an administrator!")
161164 else if ((size(i.payments) > 0))
162165 then throw("Don't attach payment when calling this function ...")
163166 else {
164167 let oldVersion = valueOrElse(getString(this, versionDataKey), "")
165168 let versionList = split(drop(scriptVersion, 1), "_")
166169 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): setScriptVersion () =>", "version:", (versionList[0] + ";"), "updated:", makeString([take(versionList[1], 4), take(drop(versionList[1], 4), 2), drop(versionList[1], 6)], "-")], " ")
167170 if ((oldVersion == scriptVersion))
168171 then throw(("The script version has already been updated: " + scriptVersion))
169172 else [StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
170173 }
171174
172175
173176 @Verifier(tx)
174177 func verify () = {
175178 let fmmtSupply = assetBalance(fsale, fmmtAsset)
176179 let maxSendAmount = validate((fsaleSupply - fmmtSupply), 0)
177180 let isValidOwner = sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
178181 let isValidMMBot = if (isValidOwner)
179182 then true
180183 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], mmbotPublicKey)
181184 let isValidAdmin = if (isValidOwner)
182185 then true
183186 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
184187 let isValidGuarantors = ((((((if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
185188 then 1
186189 else 0) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
187190 then 1
188191 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
189192 then 1
190193 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
191194 then 1
192195 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
193196 then 1
194197 else 0)) >= minSignatures)
195198 match tx {
196199 case b: BurnTransaction =>
197200 if (if (isValidOwner)
198201 then (b.assetId != xfeeAsset)
199202 else false)
200203 then !(containsElement(portfolio, b.assetId))
201204 else false
202205 case l: LeaseCancelTransaction|LeaseTransaction =>
203206 isValidOwner
204207 case o: Order =>
205208 if (if (if (isValidMMBot)
206209 then if (if (if ((o.orderType == Buy))
207210 then (o.assetPair.priceAsset != xfeeAsset)
208211 else false)
209212 then !(containsElement(portfolio, o.assetPair.priceAsset))
210213 else false)
211214 then true
212215 else if (if ((o.orderType == Sell))
213216 then (o.assetPair.amountAsset != xfeeAsset)
214217 else false)
215218 then !(containsElement(portfolio, o.assetPair.amountAsset))
216219 else false
217220 else false)
218221 then if (!(isDefined(o.matcherFeeAssetId)))
219222 then true
220223 else (o.matcherFeeAssetId == o.assetPair.priceAsset)
221224 else false)
222225 then (o.matcherPublicKey == wavesMatcher)
223226 else false
224227 case t: TransferTransaction =>
225228 if (if (if (if (if (isValidOwner)
226229 then !(containsElement(portfolio, t.assetId))
227230 else false)
228231 then !(containsElement(portfolio, t.feeAssetId))
229232 else false)
230233 then true
231234 else if (isValidAdmin)
232235 then (addressFromRecipient(t.recipient) == fcold)
233236 else false)
234237 then true
235238 else if (if (isValidAdmin)
236239 then true
237240 else isValidGuarantors)
238241 then (addressFromRecipient(t.recipient) == fdapp)
239242 else false)
240243 then true
241244 else if (if (if (if (isValidAdmin)
242245 then true
243246 else isValidGuarantors)
244247 then (t.assetId == fmmtAsset)
245248 else false)
246249 then (maxSendAmount >= t.amount)
247250 else false)
248251 then (addressFromRecipient(t.recipient) == fsale)
249252 else false
250253 case _: SetScriptTransaction|MassTransferTransaction|DataTransaction =>
251254 if (isValidAdmin)
252255 then isValidGuarantors
253256 else false
254257 case _ =>
255258 false
256259 }
257260 }
258261

github/deemru/w8io/873ac7e 
80.34 ms