tx · 9ihmoSb7gVFvZQJmRzoMqZqpbziZPUoH6jB25psBx8Cp

3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7:  -0.01400000 Waves

2020.09.25 21:07 [2256859] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "9ihmoSb7gVFvZQJmRzoMqZqpbziZPUoH6jB25psBx8Cp", "fee": 1400000, "feeAssetId": null, "timestamp": 1601057224632, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "z7RM3x62Ca5jtn42SUb35GgW9831T8oRq2gwoLhemHyiTNi8VC91jNiSEWiSHMJETPvq4Ps5RYgH9N7dtj3nTQ8", "2ZubtTjjLexkSHJqxVgzH8pT9XPD9vXuhdUUw95z52G62xDAVigoG9BKNPhhp2rE1v811WALoJ3s4mCzeW4LxquU" ], "script": "base64:AAIEAAAAAAAAAAgIAhIAEgASAAAAACMAAAAADXNjcmlwdFZlcnNpb24CAAAAE3Y0LjE4LWJldGFfMjAyMDA5MjUAAAAAB3BlcmNlbnQAAAAAAAAAJxAAAAAAB2RlY2ltYWwAAAAAAAX14QAAAAAADGZ0ZWFtUGVyY2VudAAAAAAAAAAD6AAAAAAMbGVhc2VQZXJjZW50AAAAAAAAABdwAAAAAAxmZGFwcFBlcmNlbnQAAAAAAAAAB9AAAAAADmFkbWluUHVibGljS2V5AQAAACD/zQv9xtp+IwicmSq/7YB3qzF8dYREKcB8rX1b2hNXAwAAAAAObW1ib3RQdWJsaWNLZXkBAAAAIEqgkw+zGUn3ol5We69ddjVnvmBgACO3KOUi2aj4AewvAAAAAA53eGNoZ1B1YmxpY0tleQEAAAAggAq2ugzeDF6skG1TO9Xj9NziJC/76c4DtrpDnL/Ve24AAAAACmd1YXJhbnRvcnMJAARMAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAEdGhpcwIAAAAKZ3VhcmFudG9yMQkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MikAAAACBQAAAAR0aGlzAgAAAApndWFyYW50b3IyCQAETAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUyKQAAAAIFAAAABHRoaXMCAAAACmd1YXJhbnRvcjMJAARMAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAEdGhpcwIAAAAKZ3VhcmFudG9yNAkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MikAAAACBQAAAAR0aGlzAgAAAApndWFyYW50b3I1BQAAAANuaWwAAAAACmFjdHVhbFNpemUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAARPAAAAAgUAAAAKZ3VhcmFudG9ycwEAAAAACQABkAAAAAEFAAAACmd1YXJhbnRvcnMAAAAADW1pblNpZ25hdHVyZXMJAABkAAAAAgkAAGkAAAACBQAAAAphY3R1YWxTaXplAAAAAAAAAAACCQAAagAAAAIFAAAACmFjdHVhbFNpemUAAAAAAAAAAAIAAAAACWZtbXRBc3NldAEAAAAgZivx3DxMNqe5Oqj6+zVD3E24B4WnU3ZlP3VejOt/OPQAAAAACXhmZWVBc3NldAEAAAAgPtqpo25+ABHwB4wBPcXeLo1HMTudGEE43iw65h6utjcAAAAACXBvcnRmb2xpbwkABE0AAAACCQAETAAAAAIBAAAAIB6UBxNSdqEllf3IYaiCXxB/3zpPKbv8mkY/Wv02T5+RCQAETAAAAAIBAAAAIGz6av/F7aqMC3+1KpPSogwvgoLbdHoEjFP7/RMfc6D/CQAETAAAAAIFAAAABHVuaXQJAARMAAAAAgEAAAAgLiDD9uqKn4lRu7/oiBETNux+2MJCA3JlDVjNcyZCZYIJAARMAAAAAgEAAAAgDrECagw+n0f35EaU5062t7xDfH5ladDpGJsi5gny6M4JAARMAAAAAgEAAAAg9h42QtOX3fJaWBUg7iwP2i1GBoqANpKuVYlZnrDFLKEJAARMAAAAAgEAAAAglVMgFzLH9/gxbVKojbVZ08/r8nPtlHFX5Z0m586HauAJAARMAAAAAgEAAAAgQxj0G3VSMI+7+iJkvwQoTrekocmcbhiCndEGv8vAJAIJAARMAAAAAgEAAAAgoVJa1UnWcbrDrx+GyZJ/6g+KWhwfmKQrcwaOzJr+1WcFAAAAA25pbAUAAAAJZm1tdEFzc2V0AAAAAAVhZG1pbgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV8rwUxidz54gYuHT1Vqo28voD3/QB9rENQAAAAAFZnRlYW0JAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVcQuxlHOiTpd3q4b4Qfpy/dkXxJLp2SbpcAAAAABWZkYXBwCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXlBjOKoGGbEMXkLYvPqBcwClDZ2ShsgYNAAAAAAVmY29sZAkBAAAAB0FkZHJlc3MAAAABAQAAABoBV360Duo7pwBQsbjpbsN3eh/rMJVFBpHXbAAAAAAJZm1tdEZ1bmRzCQAAZQAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACWZtbXRBc3NldAAAAAhxdWFudGl0eQkAAGQAAAACCQAAZAAAAAIJAAPwAAAAAgUAAAAFYWRtaW4FAAAACWZtbXRBc3NldAkAA/AAAAACBQAAAAVmZGFwcAUAAAAJZm1tdEFzc2V0CQAD8AAAAAIFAAAABWZjb2xkBQAAAAlmbW10QXNzZXQAAAAACmZ0ZWFtRnVuZHMJAAPwAAAAAgUAAAAFZnRlYW0FAAAACWZtbXRBc3NldAAAAAAKd2F2ZXNGdW5kcwkAAGQAAAACCAkAA+8AAAABBQAAAAVmZGFwcAAAAAdyZWd1bGFyCAkAA+8AAAABBQAAAAVmY29sZAAAAAdyZWd1bGFyAAAAAAp3YXZlc0xlYXNlCQAAZQAAAAIICQAD7wAAAAEFAAAABWZjb2xkAAAAB3JlZ3VsYXIICQAD7wAAAAEFAAAABWZjb2xkAAAACWF2YWlsYWJsZQAAAAAKcmlnaHRMZWFzZQkAAZYAAAABCQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgkAAGUAAAACCQAAawAAAAMFAAAACndhdmVzRnVuZHMFAAAADGxlYXNlUGVyY2VudAUAAAAHcGVyY2VudAUAAAAKd2F2ZXNMZWFzZQUAAAADbmlsAAAAABJ0ZWFtUGF5b3V0c0RhdGFLZXkCAAAAC3RlYW1QYXlvdXRzAAAAABRzY3JpcHRWZXJzaW9uRGF0YUtleQIAAAANc2NyaXB0VmVyc2lvbgAAAAAPbG9nRW50cnlEYXRhS2V5AgAAAAhsb2dFbnRyeQAAAAAQdGltZXN0YW1wRGF0YUtleQIAAAAJdGltZXN0YW1wAAAAAAt0aGlzRGF0YUtleQkAAlgAAAABCAUAAAAEdGhpcwAAAAVieXRlcwAAAAATaXNDb250cmFjdFN1c3BlbmRlZAkBAAAAASEAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABWFkbWluBQAAAAt0aGlzRGF0YUtleQcBAAAADXRvRmxvYXRTdHJpbmcAAAACAAAAA251bQAAAANkZWMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAA251bQkAAAIAAAABAgAAACFOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCEJAASwAAAAAQkAAMsAAAACCQAAywAAAAIJAAGbAAAAAQkAAaQAAAABCQAAaQAAAAIFAAAAA251bQUAAAADZGVjAQAAAAEuCQAAygAAAAIJAAGbAAAAAQkAAaQAAAABCQAAZAAAAAIJAABqAAAAAgUAAAADbnVtBQAAAANkZWMFAAAAA2RlYwAAAAAAAAAAAQEAAAAPaXNBc3NldERpc2FibGVkAAAAAQAAAAxhc3NldERhdGFLZXkJAQAAAAEhAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAVhZG1pbgUAAAAMYXNzZXREYXRhS2V5BwEAAAAKZGlmZmVyZW5jZQAAAAIAAAAKZmRhcHBGdW5kcwAAAApmY29sZEZ1bmRzCQAAZQAAAAIJAABrAAAAAwkAAGQAAAACBQAAAApmZGFwcEZ1bmRzBQAAAApmY29sZEZ1bmRzBQAAAAxmZGFwcFBlcmNlbnQFAAAAB3BlcmNlbnQFAAAACmZkYXBwRnVuZHMBAAAAEWdldFNjcmlwdFRyYW5zZmVyAAAAAwAAAAdhZGRyZXNzAAAABmFtb3VudAAAAAdhc3NldElkAwkAAGYAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAHYWRkcmVzcwUAAAAGYW1vdW50BQAAAAdhc3NldElkBQAAAANuaWwFAAAAA25pbAEAAAAUZ2V0UmViYWxhbmNlVHJhbnNmZXIAAAABAAAAB2Fzc2V0SWQEAAAABmFtb3VudAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDADCQEAAAAPaXNBc3NldERpc2FibGVkAAAAAQkAAlgAAAABBQAAAAJpZAAAAAAAAAAAAAkBAAAACmRpZmZlcmVuY2UAAAACCQAD8AAAAAIFAAAABWZkYXBwBQAAAAJpZAkAA/AAAAACBQAAAAVmY29sZAUAAAACaWQDCQEAAAAPaXNBc3NldERpc2FibGVkAAAAAQIAAAAFV0FWRVMAAAAAAAAAAAAJAQAAAApkaWZmZXJlbmNlAAAAAggJAAPvAAAAAQUAAAAFZmRhcHAAAAAHcmVndWxhcggJAAPvAAAAAQUAAAAFZmNvbGQAAAAHcmVndWxhcgkBAAAAEWdldFNjcmlwdFRyYW5zZmVyAAAAAwUAAAAFZmRhcHAFAAAABmFtb3VudAUAAAAHYXNzZXRJZAAAAAMAAAABaQEAAAANYXV0b1JlYmFsYW5jZQAAAAAEAAAAEWxvZ0VudHJ5RGF0YVZhbHVlAgAAAA1hdXRvUmViYWxhbmNlAwUAAAATaXNDb250cmFjdFN1c3BlbmRlZAkAAAIAAAABAgAAAD9UaGUgYWRtaW5pc3RyYXRvciBoYXMgc3VzcGVuZGVkIHRoZSBjb250cmFjdCEgQ2hlY2sgYmFjayBsYXRlci4DAwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOYWRtaW5QdWJsaWNLZXkJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAObW1ib3RQdWJsaWNLZXkHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAApndWFyYW50b3JzCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkHCQAAAgAAAAECAAAAQU9ubHkgdGhlIGFkbWluaXN0cmF0b3IgKG9yIGd1YXJhbnRvcnMpIGNhbiBwZXJmb3JtIHRoaXMgZnVuY3Rpb24hAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAM0Rvbid0IGF0dGFjaCBwYXltZW50IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIC4uLgQAAAAScmViYWxhbmNlVHJhbnNmZXJzCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAAROAAAAAgkBAAAAFGdldFJlYmFsYW5jZVRyYW5zZmVyAAAAAQkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAAJAQAAABRnZXRSZWJhbGFuY2VUcmFuc2ZlcgAAAAEJAAGRAAAAAgUAAAAJcG9ydGZvbGlvAAAAAAAAAAABCQEAAAAUZ2V0UmViYWxhbmNlVHJhbnNmZXIAAAABCQABkQAAAAIFAAAACXBvcnRmb2xpbwAAAAAAAAAAAgkBAAAAFGdldFJlYmFsYW5jZVRyYW5zZmVyAAAAAQkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAMJAQAAABRnZXRSZWJhbGFuY2VUcmFuc2ZlcgAAAAEJAAGRAAAAAgUAAAAJcG9ydGZvbGlvAAAAAAAAAAAECQEAAAAUZ2V0UmViYWxhbmNlVHJhbnNmZXIAAAABCQABkQAAAAIFAAAACXBvcnRmb2xpbwAAAAAAAAAABQkBAAAAFGdldFJlYmFsYW5jZVRyYW5zZmVyAAAAAQkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAYJAQAAABRnZXRSZWJhbGFuY2VUcmFuc2ZlcgAAAAEJAAGRAAAAAgUAAAAJcG9ydGZvbGlvAAAAAAAAAAAHCQEAAAAUZ2V0UmViYWxhbmNlVHJhbnNmZXIAAAABCQABkQAAAAIFAAAACXBvcnRmb2xpbwAAAAAAAAAACAMJAABmAAAAAgkAAZAAAAABBQAAABJyZWJhbGFuY2VUcmFuc2ZlcnMAAAAAAAAAAAAJAARNAAAAAgkABE0AAAACBQAAABJyZWJhbGFuY2VUcmFuc2ZlcnMJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2xvZ0VudHJ5RGF0YUtleQUAAAARbG9nRW50cnlEYXRhVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABB0aW1lc3RhbXBEYXRhS2V5CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAAIAAAABAgAAADVObyB0cmFuc2ZlcnMgYXZhaWxhYmxlISBXYWl0IHVudGlsIGltYmFsYW5jZSBhcHBlYXJzLgAAAAFpAQAAAA9zZW5kVGVhbVBheW91dHMAAAAABAAAABFsb2dFbnRyeURhdGFWYWx1ZQIAAAAPc2VuZFRlYW1QYXlvdXRzAwUAAAATaXNDb250cmFjdFN1c3BlbmRlZAkAAAIAAAABAgAAAD9UaGUgYWRtaW5pc3RyYXRvciBoYXMgc3VzcGVuZGVkIHRoZSBjb250cmFjdCEgQ2hlY2sgYmFjayBsYXRlci4DAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5tbWJvdFB1YmxpY0tleQcJAAACAAAAAQIAAAAxT25seSB0aGUgYWRtaW5pc3RyYXRvciBjYW4gcGVyZm9ybSB0aGlzIGZ1bmN0aW9uIQMJAABmAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADNEb24ndCBhdHRhY2ggcGF5bWVudCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAuLi4EAAAACm9sZFBheW91dHMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASdGVhbVBheW91dHNEYXRhS2V5AAAAAAAAAAAABAAAAAt0ZWFtUGF5b3V0cwkAAGUAAAACCQAAawAAAAMJAABlAAAAAgUAAAAJZm1tdEZ1bmRzBQAAAApmdGVhbUZ1bmRzBQAAAAxmdGVhbVBlcmNlbnQFAAAAB3BlcmNlbnQFAAAACm9sZFBheW91dHMDCQAAZgAAAAIFAAAAC3RlYW1QYXlvdXRzAAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABWZ0ZWFtBQAAAAt0ZWFtUGF5b3V0cwUAAAAJZm1tdEFzc2V0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ0ZWFtUGF5b3V0c0RhdGFLZXkJAABkAAAAAgUAAAAKb2xkUGF5b3V0cwUAAAALdGVhbVBheW91dHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPbG9nRW50cnlEYXRhS2V5BQAAABFsb2dFbnRyeURhdGFWYWx1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQdGltZXN0YW1wRGF0YUtleQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAA25pbAkAAAIAAAABAgAAADhObyBwYXltZW50cyBhdmFpbGFibGUhIFdhaXQgZm9yIG5ldyBpbnZlc3RtZW50cyB0byBjb21lLgAAAAFpAQAAABBzZXRTY3JpcHRWZXJzaW9uAAAAAAQAAAARbG9nRW50cnlEYXRhVmFsdWUCAAAAEHNldFNjcmlwdFZlcnNpb24DCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAMU9ubHkgdGhlIGFkbWluaXN0cmF0b3IgY2FuIHBlcmZvcm0gdGhpcyBmdW5jdGlvbiEDCQAAZgAAAAIJAAGQAAAAAQgF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", "height": 2256859, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AoS1D2qBzg5tNiEB5MBAv4Szr3RukPSEtQGQVxBGeiCN Next: HBn4G3QbS6yPBqSFWaABVmUtNenJKYdszLwBuw7AQuyz Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v4.17-beta_20200923"
4+let scriptVersion = "v4.18-beta_20200925"
55
66 let percent = 10000
77
5353
5454 let scriptVersionDataKey = "scriptVersion"
5555
56-let lastActionDataKey = "lastAction"
56+let logEntryDataKey = "logEntry"
5757
5858 let timestampDataKey = "timestamp"
5959
9494
9595 @Callable(i)
9696 func autoRebalance () = {
97- let lastActionDataValue = "autoRebalance"
97+ let logEntryDataValue = "autoRebalance"
9898 if (isContractSuspended)
9999 then throw("The administrator has suspended the contract! Check back later.")
100100 else if (if (if ((i.callerPublicKey != adminPublicKey))
108108 else {
109109 let rebalanceTransfers = ((((((((getRebalanceTransfer(portfolio[0]) ++ getRebalanceTransfer(portfolio[1])) ++ getRebalanceTransfer(portfolio[2])) ++ getRebalanceTransfer(portfolio[3])) ++ getRebalanceTransfer(portfolio[4])) ++ getRebalanceTransfer(portfolio[5])) ++ getRebalanceTransfer(portfolio[6])) ++ getRebalanceTransfer(portfolio[7])) ++ getRebalanceTransfer(portfolio[8]))
110110 if ((size(rebalanceTransfers) > 0))
111- then ((rebalanceTransfers :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
111+ then ((rebalanceTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
112112 else throw("No transfers available! Wait until imbalance appears.")
113113 }
114114 }
117117
118118 @Callable(i)
119119 func sendTeamPayouts () = {
120- let lastActionDataValue = "sendTeamPayouts"
120+ let logEntryDataValue = "sendTeamPayouts"
121121 if (isContractSuspended)
122122 then throw("The administrator has suspended the contract! Check back later.")
123123 else if (if ((i.callerPublicKey != adminPublicKey))
130130 let oldPayouts = valueOrElse(getInteger(this, teamPayoutsDataKey), 0)
131131 let teamPayouts = (fraction((fmmtFunds - fteamFunds), fteamPercent, percent) - oldPayouts)
132132 if ((teamPayouts > 0))
133- then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldPayouts + teamPayouts)), StringEntry(lastActionDataKey, lastActionDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
133+ then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldPayouts + teamPayouts)), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
134134 else throw("No payments available! Wait for new investments to come.")
135135 }
136136 }
139139
140140 @Callable(i)
141141 func setScriptVersion () = {
142- let lastActionDataValue = "setScriptVersion"
142+ let logEntryDataValue = "setScriptVersion"
143143 if ((i.callerPublicKey != adminPublicKey))
144144 then throw("Only the administrator can perform this function!")
145145 else if ((size(i.payments) > 0))
147147 else {
148148 let oldVersion = valueOrElse(getString(this, scriptVersionDataKey), "")
149149 if ((oldVersion != scriptVersion))
150- then [StringEntry(scriptVersionDataKey, scriptVersion), StringEntry(lastActionDataKey, lastActionDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
150+ then [StringEntry(scriptVersionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
151151 else throw(("The script version has already been updated: " + oldVersion))
152152 }
153153 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v4.17-beta_20200923"
4+let scriptVersion = "v4.18-beta_20200925"
55
66 let percent = 10000
77
88 let decimal = 100000000
99
1010 let fteamPercent = 1000
1111
1212 let leasePercent = 6000
1313
1414 let fdappPercent = 2000
1515
1616 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1717
1818 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
1919
2020 let wxchgPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2121
2222 let guarantors = [getBinaryValue(this, "guarantor1"), getBinaryValue(this, "guarantor2"), getBinaryValue(this, "guarantor3"), getBinaryValue(this, "guarantor4"), getBinaryValue(this, "guarantor5")]
2323
2424 let actualSize = valueOrElse(indexOf(guarantors, base58''), size(guarantors))
2525
2626 let minSignatures = ((actualSize / 2) + (actualSize % 2))
2727
2828 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
2929
3030 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
3131
3232 let portfolio = ([base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] :+ fmmtAsset)
3333
3434 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
3535
3636 let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2')
3737
3838 let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL')
3939
4040 let fcold = Address(base58'3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7')
4141
4242 let fmmtFunds = (value(assetInfo(fmmtAsset)).quantity - ((assetBalance(admin, fmmtAsset) + assetBalance(fdapp, fmmtAsset)) + assetBalance(fcold, fmmtAsset)))
4343
4444 let fteamFunds = assetBalance(fteam, fmmtAsset)
4545
4646 let wavesFunds = (wavesBalance(fdapp).regular + wavesBalance(fcold).regular)
4747
4848 let wavesLease = (wavesBalance(fcold).regular - wavesBalance(fcold).available)
4949
5050 let rightLease = max([0, (fraction(wavesFunds, leasePercent, percent) - wavesLease)])
5151
5252 let teamPayoutsDataKey = "teamPayouts"
5353
5454 let scriptVersionDataKey = "scriptVersion"
5555
56-let lastActionDataKey = "lastAction"
56+let logEntryDataKey = "logEntry"
5757
5858 let timestampDataKey = "timestamp"
5959
6060 let thisDataKey = toBase58String(this.bytes)
6161
6262 let isContractSuspended = !(valueOrElse(getBoolean(admin, thisDataKey), false))
6363
6464 func toFloatString (num,dec) = if ((0 > num))
6565 then throw("Negative numbers are not allowed!")
6666 else toUtf8String(((toBytes(toString((num / dec))) + base58'o') + drop(toBytes(toString(((num % dec) + dec))), 1)))
6767
6868
6969 func isAssetDisabled (assetDataKey) = !(valueOrElse(getBoolean(admin, assetDataKey), false))
7070
7171
7272 func difference (fdappFunds,fcoldFunds) = (fraction((fdappFunds + fcoldFunds), fdappPercent, percent) - fdappFunds)
7373
7474
7575 func getScriptTransfer (address,amount,assetId) = if ((amount > 0))
7676 then [ScriptTransfer(address, amount, assetId)]
7777 else nil
7878
7979
8080 func getRebalanceTransfer (assetId) = {
8181 let amount = match assetId {
8282 case id: ByteVector =>
8383 if (isAssetDisabled(toBase58String(id)))
8484 then 0
8585 else difference(assetBalance(fdapp, id), assetBalance(fcold, id))
8686 case _ =>
8787 if (isAssetDisabled("WAVES"))
8888 then 0
8989 else difference(wavesBalance(fdapp).regular, wavesBalance(fcold).regular)
9090 }
9191 getScriptTransfer(fdapp, amount, assetId)
9292 }
9393
9494
9595 @Callable(i)
9696 func autoRebalance () = {
97- let lastActionDataValue = "autoRebalance"
97+ let logEntryDataValue = "autoRebalance"
9898 if (isContractSuspended)
9999 then throw("The administrator has suspended the contract! Check back later.")
100100 else if (if (if ((i.callerPublicKey != adminPublicKey))
101101 then (i.callerPublicKey != mmbotPublicKey)
102102 else false)
103103 then !(containsElement(guarantors, i.callerPublicKey))
104104 else false)
105105 then throw("Only the administrator (or guarantors) can perform this function!")
106106 else if ((size(i.payments) > 0))
107107 then throw("Don't attach payment when calling this function ...")
108108 else {
109109 let rebalanceTransfers = ((((((((getRebalanceTransfer(portfolio[0]) ++ getRebalanceTransfer(portfolio[1])) ++ getRebalanceTransfer(portfolio[2])) ++ getRebalanceTransfer(portfolio[3])) ++ getRebalanceTransfer(portfolio[4])) ++ getRebalanceTransfer(portfolio[5])) ++ getRebalanceTransfer(portfolio[6])) ++ getRebalanceTransfer(portfolio[7])) ++ getRebalanceTransfer(portfolio[8]))
110110 if ((size(rebalanceTransfers) > 0))
111- then ((rebalanceTransfers :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
111+ then ((rebalanceTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
112112 else throw("No transfers available! Wait until imbalance appears.")
113113 }
114114 }
115115
116116
117117
118118 @Callable(i)
119119 func sendTeamPayouts () = {
120- let lastActionDataValue = "sendTeamPayouts"
120+ let logEntryDataValue = "sendTeamPayouts"
121121 if (isContractSuspended)
122122 then throw("The administrator has suspended the contract! Check back later.")
123123 else if (if ((i.callerPublicKey != adminPublicKey))
124124 then (i.callerPublicKey != mmbotPublicKey)
125125 else false)
126126 then throw("Only the administrator can perform this function!")
127127 else if ((size(i.payments) > 0))
128128 then throw("Don't attach payment when calling this function ...")
129129 else {
130130 let oldPayouts = valueOrElse(getInteger(this, teamPayoutsDataKey), 0)
131131 let teamPayouts = (fraction((fmmtFunds - fteamFunds), fteamPercent, percent) - oldPayouts)
132132 if ((teamPayouts > 0))
133- then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldPayouts + teamPayouts)), StringEntry(lastActionDataKey, lastActionDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
133+ then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldPayouts + teamPayouts)), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
134134 else throw("No payments available! Wait for new investments to come.")
135135 }
136136 }
137137
138138
139139
140140 @Callable(i)
141141 func setScriptVersion () = {
142- let lastActionDataValue = "setScriptVersion"
142+ let logEntryDataValue = "setScriptVersion"
143143 if ((i.callerPublicKey != adminPublicKey))
144144 then throw("Only the administrator can perform this function!")
145145 else if ((size(i.payments) > 0))
146146 then throw("Don't attach payment when calling this function ...")
147147 else {
148148 let oldVersion = valueOrElse(getString(this, scriptVersionDataKey), "")
149149 if ((oldVersion != scriptVersion))
150- then [StringEntry(scriptVersionDataKey, scriptVersion), StringEntry(lastActionDataKey, lastActionDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
150+ then [StringEntry(scriptVersionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
151151 else throw(("The script version has already been updated: " + oldVersion))
152152 }
153153 }
154154
155155
156156 @Verifier(tx)
157157 func verify () = {
158158 let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
159159 let isValidMMBot = if (isValidOwner)
160160 then true
161161 else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
162162 let isValidAdmin = if (isValidOwner)
163163 then true
164164 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
165165 let isValidGuarantors = ((((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
166166 then 1
167167 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
168168 then 1
169169 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
170170 then 1
171171 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
172172 then 1
173173 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
174174 then 1
175175 else 0)) >= minSignatures)
176176 match tx {
177177 case b: BurnTransaction =>
178178 if (if (isValidOwner)
179179 then (b.assetId != xfeeAsset)
180180 else false)
181181 then !(containsElement(portfolio, b.assetId))
182182 else false
183183 case o: Order =>
184184 if (if (if (isValidOwner)
185185 then if (if (if ((o.orderType == Buy))
186186 then (o.assetPair.priceAsset != xfeeAsset)
187187 else false)
188188 then !(containsElement(portfolio, o.assetPair.priceAsset))
189189 else false)
190190 then true
191191 else if (if ((o.orderType == Sell))
192192 then (o.assetPair.amountAsset != xfeeAsset)
193193 else false)
194194 then !(containsElement(portfolio, o.assetPair.amountAsset))
195195 else false
196196 else false)
197197 then !(isDefined(o.matcherFeeAssetId))
198198 else false)
199199 then (o.matcherPublicKey == wxchgPublicKey)
200200 else false
201201 case t: TransferTransaction =>
202202 if (!(isContractSuspended))
203203 then if (if (if (if (isValidOwner)
204204 then !(containsElement(portfolio, t.assetId))
205205 else false)
206206 then !(containsElement(portfolio, t.feeAssetId))
207207 else false)
208208 then true
209209 else if (if (if (isValidAdmin)
210210 then (t.assetId == fmmtAsset)
211211 else false)
212212 then !(containsElement(portfolio, t.feeAssetId))
213213 else false)
214214 then (addressFromRecipient(t.recipient) == fdapp)
215215 else false)
216216 then true
217217 else if (if (if (isValidGuarantors)
218218 then (t.assetId != fmmtAsset)
219219 else false)
220220 then containsElement(portfolio, t.assetId)
221221 else false)
222222 then (addressFromRecipient(t.recipient) == fdapp)
223223 else false
224224 else false
225225 case l: LeaseTransaction =>
226226 if (isValidMMBot)
227227 then if ((rightLease >= l.amount))
228228 then true
229229 else throw(makeString(["Maximum Possible Lease:", toFloatString(rightLease, decimal), "WAVES"], " "))
230230 else false
231231 case _: LeaseCancelTransaction =>
232232 if (isValidMMBot)
233233 then true
234234 else isValidGuarantors
235235 case _: SetScriptTransaction|DataTransaction =>
236236 if (isValidAdmin)
237237 then isValidGuarantors
238238 else false
239239 case _ =>
240240 false
241241 }
242242 }
243243

github/deemru/w8io/6500d08 
82.58 ms