tx · EU5yuLZkACTSH7KkoQKBgHSLLyPocJ28zFo7UiaRcWWs

3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7:  -0.01400000 Waves

2020.10.20 17:35 [2292713] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "EU5yuLZkACTSH7KkoQKBgHSLLyPocJ28zFo7UiaRcWWs", "fee": 1400000, "feeAssetId": null, "timestamp": 1603204515455, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "5vU1NbwyUkL7o6zx9AsVSiccrTAdMqMF9CQwqiBELWZnXwZPzWAwhjdiRtMB2P2mxmCtb4AEbohhWiCUr2Lczptb", "5QuThVo78JeZTn5NjaRSeffMcvRH8Kzd88hXpKjMA3PYhkDHn4cWYgUfG8A5PJLKTxiGkgS5vcV4Fth7db1RkWrT" ], "script": "base64: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bXREaWZmZXJlbmNlBQAAAAlmbW10QXNzZXQEAAAAEWxvZ0VudHJ5RGF0YVZhbHVlCQABLAAAAAICAAAALkRlRmkgRnJhbmtsaW4gKEZNTVQpOiBhdXRvUmViYWxhbmNlICgpID0+IHR4OiAJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAMJAABmAAAAAgkAAZAAAAABBQAAAA9zY3JpcHRUcmFuc2ZlcnMAAAAAAAAAAAAJAARNAAAAAgkABE0AAAACCQAETQAAAAIFAAAAD3NjcmlwdFRyYW5zZmVycwkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAB6EgBQAAAAR1bml0CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9sb2dFbnRyeURhdGFLZXkFAAAAEWxvZ0VudHJ5RGF0YVZhbHVlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQdGltZXN0YW1wRGF0YUtleQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAACAAAAAQIAAAArVGhlcmUgYXJlIGN1cnJlbnRseSBubyB0cmFuc2ZlcnMgYXZhaWxhYmxlLgAAAAFpAQAAAA9zZW5kVGVhbVBheW91dHMAAAAAAwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOYWRtaW5QdWJsaWNLZXkJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAObW1ib3RQdWJsaWNLZXkHCQAAAgAAAAECAAAANlRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSBhbiBhZG1pbmlzdHJhdG9yIQMJAABmAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADNEb24ndCBhdHRhY2ggcGF5bWVudCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAuLi4EAAAACm9sZFBheW91dHMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOcGF5b3V0c0RhdGFLZXkAAAAAAAAAAAAEAAAAC3RlYW1QYXlvdXRzCQAAawAAAAMFAAAAC3RyYWRlU3VwcGx5BQAAAAxmdGVhbVBlcmNlbnQFAAAAB3BlcmNlbnQEAAAABmFtb3VudAkBAAAACHZhbGlkYXRlAAAAAQkAAGUAAAACBQAAAAt0ZWFtUGF5b3V0cwUAAAAKb2xkUGF5b3V0cwQAAAARbG9nRW50cnlEYXRhVmFsdWUJAAS5AAAAAgkABEwAAAACAgAAACtEZUZpIEZyYW5rbGluIChGTU1UKTogc2VuZFRlYW1QYXlvdXRzICgpID0+CQAETAAAAAICAAAAB2Ftb3VudDoJAARMAAAAAgkBAAAADXRvRmxvYXRTdHJpbmcAAAACBQAAAAZhbW91bnQAAAAAAAABhqAJAARMAAAAAgIAAAAERk1NVAUAAAADbmlsAgAAAAEgAwkAAGYAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAFZnRlYW0FAAAABmFtb3VudAUAAAAJZm1tdEFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAehIAUAAAAEdW5pdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOcGF5b3V0c0RhdGFLZXkFAAAAC3RlYW1QYXlvdXRzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2xvZ0VudHJ5RGF0YUtleQUAAAARbG9nRW50cnlEYXRhVmFsdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEHRpbWVzdGFtcERhdGFLZXkIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAANuaWwJAAACAAAAAQIAAAAqVGhlcmUgYXJlIGN1cnJlbnRseSBubyBwYXltZW50cyBhdmFpbGFibGUuAAAAAWkBAAAAEHNldFNjcmlwdFZlcnNpb24AAAAAAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkAAAIAAAABAgAAADZUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgYW4gYWRtaW5pc3RyYXRvciEDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAzRG9uJ3QgYXR0YWNoIHBheW1lbnQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gLi4uBAAAAApvbGRWZXJzaW9uCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADnZlcnNpb25EYXRhS2V5AgAAAAAEAAAAC3ZlcnNpb25MaXN0CQAEtQAAAAIJAAEwAAAAAgUAAAANc2NyaXB0VmVyc2lvbgAAAAAAAAAAAQIAAAABXwQAAAARbG9nRW50cnlEYXRhVmFsdWUJAAS5AAAAAgkABEwAAAACAgAAACxEZUZpIEZyYW5rbGluIChGTU1UKTogc2V0U2NyaXB0VmVyc2lvbiAoKSA9PgkABEwAAAACAgAAAAh2ZXJzaW9uOgkABEwAAAACCQABkQAAAAIFAAAAC3ZlcnNpb25MaXN0AAAAAAAAAAAACQAETAAAAAICAAAACSh1cGRhdGVkOgkABEwAAAACCQABLAAAAAIJAAS5AAAAAgkABEwAAAACCQABLwAAAAIJAAGRAAAAAgUAAAALdmVyc2lvbkxpc3QAAAAAAAAAAAEAAAAAAAAAAAQJAARMAAAAAgkAAS8AAAACCQABMAAAAAIJAAGRAAAAAgUAAAALdmVyc2lvbkxpc3QAAAAAAAAAAAEAAAAAAAAAAAQAAAAAAAAAAAIJAARMAAAAAgkAATAAAAACCQABkQAAAAIFAAAAC3ZlcnNpb25MaXN0AAAAAAAAAAABAAAAAAAAAAAGBQAAAANuaWwCAAAAAS0CAAAAASkFAAAAA25pbAIAAAABIAMJAQAAAAIhPQAAAAIFAAAACm9sZFZlcnNpb24FAAAADXNjcmlwdFZlcnNpb24JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAB6EgBQAAAAR1bml0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADnZlcnNpb25EYXRhS2V5BQAAAA1zY3JpcHRWZXJzaW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2xvZ0VudHJ5RGF0YUtleQUAAAARbG9nRW50cnlEYXRhVmFsdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEHRpbWVzdGFtcERhdGFLZXkIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAAC1UaGUgc2NyaXB0IHZlcnNpb24gaGFzIGFscmVhZHkgYmVlbiB1cGRhdGVkOiAFAAAADXNjcmlwdFZlcnNpb24AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAxpc1ZhbGlkT3duZXIJAAnFAAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAxpc1ZhbGlkTU1Cb3QDBQAAAAxpc1ZhbGlkT3duZXIGCQAJxAAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAObW1ib3RQdWJsaWNLZXkEAAAADGlzVmFsaWRBZG1pbgMFAAAADGlzVmFsaWRPd25lcgYJAAnFAAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAA5hZG1pblB1YmxpY0tleQQAAAAPdmFsaWRHdWFyYW50b3JzCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIDCQAJxQAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQkAAZEAAAACBQAAAApndWFyYW50b3JzAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkACcUAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAGRAAAAAgUAAAAKZ3VhcmFudG9ycwAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAMJAAnFAAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAADCQABkQAAAAIFAAAACmd1YXJhbnRvcnMAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAADCQAJxQAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAABAkAAZEAAAACBQAAAApndWFyYW50b3JzAAAAAAAAAAADAAAAAAAAAAABAAAAAAAAAAAAAwkACcUAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAUJAAGRAAAAAgUAAAAKZ3VhcmFudG9ycwAAAAAAAAAABAAAAAAAAAAAAQAAAAAAAAAAAAQAAAARYW55VmFsaWRHdWFyYW50b3IJAABmAAAAAgUAAAAPdmFsaWRHdWFyYW50b3JzAAAAAAAAAAAABAAAABFpc1ZhbGlkR3VhcmFudG9ycwkAAGcAAAACBQAAAA92YWxpZEd1YXJhbnRvcnMFAAAADW1pblNpZ25hdHVyZXMEAAAACndhdmVzTGVhc2UJAABlAAAAAgUAAAAMd2F2ZXNSZWd1bGFyBQAAAA53YXZlc0F2YWlsYWJsZQQAAAAKd2F2ZXNGdW5kcwkAAGQAAAACBQAAAAx3YXZlc1JlZ3VsYXIICQAD7wAAAAEFAAAABWZkYXBwAAAAB3JlZ3VsYXIEAAAADW1heFNhbGVBbW91bnQJAQAAAAh2YWxpZGF0ZQAAAAEJAABlAAAAAgUAAAAJc2FsZUZ1bmRzCQAD8AAAAAIFAAAABWZzYWxlBQAAAAlmbW10QXNzZXQEAAAADm1heExlYXNlQW1vdW50CQEAAAAIdmFsaWRhdGUAAAABCQAAZQAAAAIJAABrAAAAAwUAAAAKd2F2ZXNGdW5kcwUAAAAMbGVhc2VQZXJjZW50BQAAAAdwZXJjZW50BQAAAAp3YXZlc0xlYXNlBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAAAW8FAAAAByRtYXRjaDADAwMFAAAADGlzVmFsaWRNTUJvdAMDAwkAAAAAAAACCAUAAAABbwAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAAiE9AAAAAggIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BQAAAAl4ZmVlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAcGAwMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAARTZWxsCQEAAAACIT0AAAACCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BQAAAAl4ZmVlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAW8AAAARbWF0Y2hlckZlZUFzc2V0SWQHCQAAAAAAAAIIBQAAAAFvAAAAEG1hdGNoZXJQdWJsaWNLZXkFAAAADnd4Y2hnUHVibGljS2V5BwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMDAwMFAAAADGlzVmFsaWRPd25lcgkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAAdhc3NldElkBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAApmZWVBc3NldElkBwYDAwMFAAAADGlzVmFsaWRBZG1pbgkAAAAAAAACCAUAAAABdAAAAAdhc3NldElkBQAAAAlmbW10QXNzZXQHCQAAZwAAAAIFAAAADW1heFNhbGVBbW91bnQIBQAAAAF0AAAABmFtb3VudAcJAAAAAAAAAgkABCQAAAABCAUAAAABdAAAAAlyZWNpcGllbnQFAAAABWZzYWxlBwYDAwMFAAAAEWFueVZhbGlkR3VhcmFudG9yCQEAAAACIT0AAAACCAUAAAABdAAAAAdhc3NldElkBQAAAAlmbW10QXNzZXQHCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAAdhc3NldElkBwkAAAAAAAACCQAEJAAAAAEIBQAAAAF0AAAACXJlY2lwaWVudAUAAAAFZmRhcHAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBMZWFzZVRyYW5zYWN0aW9uBAAAAAFsBQAAAAckbWF0Y2gwAwUAAAAMaXNWYWxpZE1NQm90CQAAZwAAAAIFAAAADm1heExlYXNlQW1vdW50CAUAAAABbAAAAAZhbW91bnQHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABZMZWFzZUNhbmNlbFRyYW5zYWN0aW9uAwUAAAAMaXNWYWxpZE1NQm90BgUAAAARYW55VmFsaWRHdWFyYW50b3IDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uAwUAAAAMaXNWYWxpZEFkbWluBQAAABFpc1ZhbGlkR3VhcmFudG9ycwcHAdr8KA==", "height": 2292713, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2eELjAK4UnJQPHAFxXVTgBghncKREUA8rtJy8FdGR3GE Next: EZuKUHWseCAjf19bJZ1wqtx9s2huYv9mgU6aJ3RpyUCz Diff:
OldNewDifferences
6767
6868 let versionDataKey = "scriptVersion"
6969
70-func validate (intValue) = max([0, intValue])
70+func validate (posValue) = max([0, posValue])
7171
7272
7373 func toFloatString (num,dec) = toUtf8String(if ((num == 0))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let scriptVersion = "v5.08-final_20201020"
55
66 let percent = 100000
77
88 let decimal = 100000000
99
1010 let fteamPercent = 10000
1111
1212 let leasePercent = 72000
1313
1414 let fdappPercent = 20000
1515
1616 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1717
1818 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
1919
2020 let wxchgPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2121
2222 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'')
2323
2424 let actualSize = value(indexOf(guarantors, base58''))
2525
2626 let minSignatures = ((actualSize / 2) + (actualSize % 2))
2727
2828 let btcAsset = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
2929
3030 let ethAsset = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
3131
3232 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
3333
3434 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
3535
3636 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
3737
3838 let portfolio = ([usdtAsset, btcAsset, unit, ethAsset, base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] :+ fmmtAsset)
3939
4040 let fsale = Address(base58'3P6VEUyoBE1qdNuhUzbnFRLThuoe1pzS4B2')
4141
4242 let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL')
4343
4444 let fcold = Address(base58'3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7')
4545
4646 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4747
4848 let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2')
4949
5050 let saleFunds = (10000 * 100000)
5151
5252 let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - saleFunds)
5353
5454 let fteamFunds = assetBalance(fteam, fmmtAsset)
5555
5656 let tradeSupply = max([0, (circSupply - fteamFunds)])
5757
5858 let wavesRegular = wavesBalance(this).regular
5959
6060 let wavesAvailable = wavesBalance(this).available
6161
6262 let logEntryDataKey = "logEntry"
6363
6464 let timestampDataKey = "timestamp"
6565
6666 let payoutsDataKey = "teamPayouts"
6767
6868 let versionDataKey = "scriptVersion"
6969
70-func validate (intValue) = max([0, intValue])
70+func validate (posValue) = max([0, posValue])
7171
7272
7373 func toFloatString (num,dec) = toUtf8String(if ((num == 0))
7474 then base58'q'
7575 else if ((num > 0))
7676 then ((toBytes(toString((num / dec))) + base58'o') + drop(toBytes(toString(((num % dec) + dec))), 1))
7777 else throw("Negative amounts are not allowed! Send a PM to the administrator ..."))
7878
7979
8080 func difference (fdappFunds,fcoldFunds) = {
8181 let minAmount = fraction(fdappFunds, (percent / 100), fdappPercent)
8282 let diffAmount = (fraction((fdappFunds + fcoldFunds), fdappPercent, percent) - fdappFunds)
8383 if ((minAmount > diffAmount))
8484 then 0
8585 else diffAmount
8686 }
8787
8888
8989 func rebalancingAmount (assetId) = match assetId {
9090 case id: ByteVector =>
9191 difference(assetBalance(fdapp, id), assetBalance(this, id))
9292 case _ =>
9393 difference(wavesBalance(fdapp).regular, wavesBalance(this).regular)
9494 }
9595
9696
9797 func getScriptTransfer (address,amount,assetId) = if ((amount > 0))
9898 then [ScriptTransfer(address, amount, assetId)]
9999 else nil
100100
101101
102102 @Callable(i)
103103 func autoRebalance () = {
104104 let wavesDifference = rebalancingAmount(portfolio[2])
105105 if (if (if ((i.callerPublicKey != adminPublicKey))
106106 then (i.callerPublicKey != mmbotPublicKey)
107107 else false)
108108 then !(containsElement(guarantors, i.callerPublicKey))
109109 else false)
110110 then throw("This action can only be performed by an administrator or guarantor!")
111111 else if ((wavesDifference > wavesAvailable))
112112 then throw("Not enough Waves balance! Send a PM to the administrator or cancel the lease.")
113113 else if ((size(i.payments) > 0))
114114 then throw("Don't attach payment when calling this function ...")
115115 else {
116116 let fmmtDifference = (saleFunds - assetBalance(fdapp, fmmtAsset))
117117 let scriptTransfers = (((((((((getScriptTransfer(fdapp, rebalancingAmount(portfolio[0]), portfolio[0]) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(fdapp, wavesDifference, unit)) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[7]), portfolio[7])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[8]), portfolio[8])) ++ getScriptTransfer(fdapp, fmmtDifference, fmmtAsset))
118118 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
119119 if ((size(scriptTransfers) > 0))
120120 then (((scriptTransfers :+ ScriptTransfer(i.caller, 500000, unit)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121121 else throw("There are currently no transfers available.")
122122 }
123123 }
124124
125125
126126
127127 @Callable(i)
128128 func sendTeamPayouts () = if (if ((i.callerPublicKey != adminPublicKey))
129129 then (i.callerPublicKey != mmbotPublicKey)
130130 else false)
131131 then throw("This action can only be performed by an administrator!")
132132 else if ((size(i.payments) > 0))
133133 then throw("Don't attach payment when calling this function ...")
134134 else {
135135 let oldPayouts = valueOrElse(getInteger(this, payoutsDataKey), 0)
136136 let teamPayouts = fraction(tradeSupply, fteamPercent, percent)
137137 let amount = validate((teamPayouts - oldPayouts))
138138 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): sendTeamPayouts () =>", "amount:", toFloatString(amount, 100000), "FMMT"], " ")
139139 if ((amount > 0))
140140 then [ScriptTransfer(fteam, amount, fmmtAsset), ScriptTransfer(i.caller, 500000, unit), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141141 else throw("There are currently no payments available.")
142142 }
143143
144144
145145
146146 @Callable(i)
147147 func setScriptVersion () = if ((i.callerPublicKey != adminPublicKey))
148148 then throw("This action can only be performed by an administrator!")
149149 else if ((size(i.payments) > 0))
150150 then throw("Don't attach payment when calling this function ...")
151151 else {
152152 let oldVersion = valueOrElse(getString(this, versionDataKey), "")
153153 let versionList = split(drop(scriptVersion, 1), "_")
154154 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)], "-") + ")")], " ")
155155 if ((oldVersion != scriptVersion))
156156 then [ScriptTransfer(i.caller, 500000, unit), StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157157 else throw(("The script version has already been updated: " + scriptVersion))
158158 }
159159
160160
161161 @Verifier(tx)
162162 func verify () = {
163163 let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164164 let isValidMMBot = if (isValidOwner)
165165 then true
166166 else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
167167 let isValidAdmin = if (isValidOwner)
168168 then true
169169 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
170170 let validGuarantors = (((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
171171 then 1
172172 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
173173 then 1
174174 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
175175 then 1
176176 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
177177 then 1
178178 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
179179 then 1
180180 else 0))
181181 let anyValidGuarantor = (validGuarantors > 0)
182182 let isValidGuarantors = (validGuarantors >= minSignatures)
183183 let wavesLease = (wavesRegular - wavesAvailable)
184184 let wavesFunds = (wavesRegular + wavesBalance(fdapp).regular)
185185 let maxSaleAmount = validate((saleFunds - assetBalance(fsale, fmmtAsset)))
186186 let maxLeaseAmount = validate((fraction(wavesFunds, leasePercent, percent) - wavesLease))
187187 match tx {
188188 case o: Order =>
189189 if (if (if (isValidMMBot)
190190 then if (if (if ((o.orderType == Buy))
191191 then (o.assetPair.priceAsset != xfeeAsset)
192192 else false)
193193 then !(containsElement(portfolio, o.assetPair.priceAsset))
194194 else false)
195195 then true
196196 else if (if ((o.orderType == Sell))
197197 then (o.assetPair.amountAsset != xfeeAsset)
198198 else false)
199199 then !(containsElement(portfolio, o.assetPair.amountAsset))
200200 else false
201201 else false)
202202 then !(isDefined(o.matcherFeeAssetId))
203203 else false)
204204 then (o.matcherPublicKey == wxchgPublicKey)
205205 else false
206206 case t: TransferTransaction =>
207207 if (if (if (if (isValidOwner)
208208 then !(containsElement(portfolio, t.assetId))
209209 else false)
210210 then !(containsElement(portfolio, t.feeAssetId))
211211 else false)
212212 then true
213213 else if (if (if (isValidAdmin)
214214 then (t.assetId == fmmtAsset)
215215 else false)
216216 then (maxSaleAmount >= t.amount)
217217 else false)
218218 then (addressFromRecipient(t.recipient) == fsale)
219219 else false)
220220 then true
221221 else if (if (if (anyValidGuarantor)
222222 then (t.assetId != fmmtAsset)
223223 else false)
224224 then containsElement(portfolio, t.assetId)
225225 else false)
226226 then (addressFromRecipient(t.recipient) == fdapp)
227227 else false
228228 case l: LeaseTransaction =>
229229 if (isValidMMBot)
230230 then (maxLeaseAmount >= l.amount)
231231 else false
232232 case _: LeaseCancelTransaction =>
233233 if (isValidMMBot)
234234 then true
235235 else anyValidGuarantor
236236 case _: SetScriptTransaction|DataTransaction =>
237237 if (isValidAdmin)
238238 then isValidGuarantors
239239 else false
240240 case _ =>
241241 false
242242 }
243243 }
244244

github/deemru/w8io/0e76f2f 
62.13 ms