tx · 4uHKpNuapAAwpuPHw8jn1aRtjD4GVShn6b6ToqgBw58i

3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7:  -0.01400000 Waves

2020.09.20 05:05 [2248638] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "4uHKpNuapAAwpuPHw8jn1aRtjD4GVShn6b6ToqgBw58i", "fee": 1400000, "feeAssetId": null, "timestamp": 1600567551682, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "5smsNfkXfmdEgPyFb6zbZYY6rspELNfGLgQGKf1rt7cW6RktQnRNK4CJK7RScjvM1H3JSGTvxJXXa1KcoLXJdXH5", "3kXEP9UHHPXJpb7DhteoF3QegwC22FuJX5wctTyjoGBXtiJFvrLypfpW2c2YfDWJLmZpqXyGzQHEMAd5eviyxy8Y" ], "script": "base64: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YW5zZmVyAAAAAQkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAUJAQAAABFnZXRTY3JpcHRUcmFuc2ZlcgAAAAEJAAGRAAAAAgUAAAAJcG9ydGZvbGlvAAAAAAAAAAAGCQEAAAARZ2V0U2NyaXB0VHJhbnNmZXIAAAABCQABkQAAAAIFAAAACXBvcnRmb2xpbwAAAAAAAAAABwkBAAAAEWdldFNjcmlwdFRyYW5zZmVyAAAAAQkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAgDCQAAZgAAAAIJAAGQAAAAAQUAAAAPc2NyaXB0VHJhbnNmZXJzAAAAAAAAAAAACQAETQAAAAIJAARNAAAAAgkABE4AAAACBQAAAA9zY3JpcHRUcmFuc2ZlcnMJAQAAABBnZXRTY3JpcHRWZXJzaW9uAAAAAAkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARbGFzdEFjdGlvbkRhdGFLZXkFAAAAE2xhc3RBY3Rpb25EYXRhVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABB0aW1lc3RhbXBEYXRhS2V5CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAAIAAAABAgAAADVObyB0cmFuc2ZlcnMgYXZhaWxhYmxlLiBXYWl0IHVudGlsIGltYmFsYW5jZSBhcHBlYXJzLgAAAAFpAQAAAA9zZW5kVGVhbVBheW91dHMAAAAABAAAABNsYXN0QWN0aW9uRGF0YVZhbHVlAgAAAA9zZW5kVGVhbVBheW91dHMDAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5tbWJvdFB1YmxpY0tleQcJAAACAAAAAQIAAAAxT25seSB0aGUgYWRtaW5pc3RyYXRvciBjYW4gcGVyZm9ybSB0aGlzIGZ1bmN0aW9uIQMFAAAAE2lzQ29udHJhY3RTdXNwZW5kZWQJAAACAAAAAQIAAABCVGhlIGFkbWluaXN0cmF0b3IgaGFzIHN1c3BlbmRlZCB0aGUgY29udHJhY3QuIENoZWNrIGJhY2sgbGF0ZXIgLi4uAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAANERvbid0IGF0dGFjaCBwYXltZW50IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAuLi4EAAAADm9sZFRlYW1QYXlvdXRzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEnRlYW1QYXlvdXRzRGF0YUtleQAAAAAAAAAAAAQAAAALdGVhbVBheW91dHMJAABlAAAAAgkAAGsAAAADBQAAAAlmbW10RnVuZHMFAAAAC3RlYW1QZXJjZW50BQAAAAdwZXJjZW50BQAAAA5vbGRUZWFtUGF5b3V0cwMJAABmAAAAAgUAAAALdGVhbVBheW91dHMAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAFZnRlYW0FAAAAC3RlYW1QYXlvdXRzBQAAAAlmbW10QXNzZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEnRlYW1QYXlvdXRzRGF0YUtleQkAAGQAAAACBQAAAA5vbGRUZWFtUGF5b3V0cwUAAAALdGVhbVBheW91dHMJAARNAAAAAgkABE0AAAACCQEAAAAQZ2V0U2NyaXB0VmVyc2lvbgAAAAAJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWxhc3RBY3Rpb25EYXRhS2V5BQAAABNsYXN0QWN0aW9uRGF0YVZhbHVlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQdGltZXN0YW1wRGF0YUtleQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAACAAAAAQIAAAA4Tm8gcGF5bWVudHMgYXZhaWxhYmxlLiBXYWl0IGZvciBuZXcgaW52ZXN0bWVudHMgdG8gY29tZS4AAAABaQEAAAAQc2V0U2NyaXB0VmVyc2lvbgAAAAAEAAAAE2xhc3RBY3Rpb25EYXRhVmFsdWUCAAAAEHNldFNjcmlwdFZlcnNpb24DCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAMU9ubHkgdGhlIGFkbWluaXN0cmF0b3IgY2FuIHBlcmZvcm0gdGhpcyBmdW5jdGlvbiEDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAA0RG9uJ3QgYXR0YWNoIHBheW1lbnQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIC4uLgQAAAAQb2xkU2NyaXB0VmVyc2lvbgkBAAAAEGdldFNjcmlwdFZlcnNpb24AAAAAAwkAAGYAAAACCQABkAAAAAEFAAAAEG9sZFNjcmlwdFZlcnNpb24AAAAAAAAAAAAJAARNAAAAAgkABE0AAAACBQAAABBvbGRTY3JpcHRWZXJzaW9uCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFsYXN0QWN0aW9uRGF0YUtleQUAAAATbGFzdEFjdGlvbkRhdGFWYWx1ZQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEHRpbWVzdGFtcERhdGFLZXkIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAAAgAAAAEJAAEsAAAAAgIAAAAtVGhlIHNjcmlwdCB2ZXJzaW9uIGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZDogBQAAAA1zY3JpcHRWZXJzaW9uAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAMaXNWYWxpZE93bmVyCQAJxAAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAMaXNWYWxpZE1NQm90AwUAAAAMaXNWYWxpZE93bmVyBgkACcQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAADm1tYm90UHVibGljS2V5BAAAAAxpc1ZhbGlkQWRtaW4DBQAAAAxpc1ZhbGlkT3duZXIGCQAJxQAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAOYWRtaW5QdWJsaWNLZXkEAAAAEWlzVmFsaWRHdWFyYW50b3JzCQAAZwAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgMJAAnFAAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABCQABkQAAAAIFAAAACmd1YXJhbnRvcnMAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADCQAJxQAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgkAAZEAAAACBQAAAApndWFyYW50b3JzAAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkACcUAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAGRAAAAAgUAAAAKZ3VhcmFudG9ycwAAAAAAAAAAAgAAAAAAAAAAAQAAAAAAAAAAAAMJAAnFAAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAECQABkQAAAAIFAAAACmd1YXJhbnRvcnMAAAAAAAAAAAMAAAAAAAAAAAEAAAAAAAAAAAADCQAJxQAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAABQkAAZEAAAACBQAAAApndWFyYW50b3JzAAAAAAAAAAAEAAAAAAAAAAABAAAAAAAAAAAABQAAAA1taW5TaWduYXR1cmVzBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPQnVyblRyYW5zYWN0aW9uBAAAAAFiBQAAAAckbWF0Y2gwAwMFAAAADGlzVmFsaWRPd25lcgkBAAAAAiE9AAAAAggFAAAAAWIAAAAHYXNzZXRJZAUAAAAJeGZlZUFzc2V0BwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABYgAAAAdhc3NldElkBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAAAW8FAAAAByRtYXRjaDADAwMFAAAADGlzVmFsaWRPd25lcgMDAwkAAAAAAAACCAUAAAABbwAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAAiE9AAAAAggIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BQAAAAl4ZmVlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAcGAwMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAARTZWxsCQEAAAACIT0AAAACCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BQAAAAl4ZmVlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAW8AAAARbWF0Y2hlckZlZUFzc2V0SWQHCQAAAAAAAAIIBQAAAAFvAAAAEG1hdGNoZXJQdWJsaWNLZXkFAAAADnd4Y2hnUHVibGljS2V5BwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMJAQAAAAEhAAAAAQUAAAATaXNDb250cmFjdFN1c3BlbmRlZAMDAwMFAAAADGlzVmFsaWRPd25lcgkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAAdhc3NldElkBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAApmZWVBc3NldElkBwYDAwMFAAAADGlzVmFsaWRBZG1pbgkAAAAAAAACCAUAAAABdAAAAAdhc3NldElkBQAAAAlmbW10QXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8IBQAAAAF0AAAACmZlZUFzc2V0SWQHCQAAAAAAAAIJAAQkAAAAAQgFAAAAAXQAAAAJcmVjaXBpZW50BQAAAAVmZGFwcAcGAwMDBQAAABFpc1ZhbGlkR3VhcmFudG9ycwkBAAAAAiE9AAAAAggFAAAAAXQAAAAHYXNzZXRJZAUAAAAJZm1tdEFzc2V0BwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgFAAAAAXQAAAAHYXNzZXRJZAcJAAAAAAAAAgkABCQAAAABCAUAAAABdAAAAAlyZWNpcGllbnQFAAAABWZkYXBwBwcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAEExlYXNlVHJhbnNhY3Rpb24EAAAAAWwFAAAAByRtYXRjaDADBQAAAAxpc1ZhbGlkTU1Cb3QDCQAAZwAAAAIFAAAACnJpZ2h0TGVhc2UIBQAAAAFsAAAABmFtb3VudAYJAAACAAAAAQkABLkAAAACCQAETAAAAAICAAAAF01heGltdW0gUG9zc2libGUgTGVhc2U6CQAETAAAAAIJAQAAAA10b0Zsb2F0U3RyaW5nAAAAAgUAAAAKcmlnaHRMZWFzZQUAAAAHZGVjaW1hbAkABEwAAAACAgAAAAVXQVZFUwUAAAADbmlsAgAAAAEgBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAWTGVhc2VDYW5jZWxUcmFuc2FjdGlvbgMFAAAADGlzVmFsaWRNTUJvdAYFAAAAEWlzVmFsaWRHdWFyYW50b3JzAwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgMFAAAADGlzVmFsaWRBZG1pbgUAAAARaXNWYWxpZEd1YXJhbnRvcnMHB8jhWM4=", "height": 2248638, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 84PRMEtPRWigmLffhQE1Jwk4fjfWsusSaS8kQwTbsDgC Next: 77eHkVzLpQc6ZjBmLMbhJ8DhBGYhvayeJPZrcUFDD7yR Diff:
OldNewDifferences
153153
154154 @Verifier(tx)
155155 func verify () = {
156- let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
156+ let isValidOwner = sigVerify_8Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
157+ let isValidMMBot = if (isValidOwner)
158+ then true
159+ else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
157160 let isValidAdmin = if (isValidOwner)
158161 then true
159162 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
160- let isValidMMBot = if (isValidOwner)
161- then true
162- else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
163163 let isValidGuarantors = ((((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
164164 then 1
165165 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let scriptVersion = "v4.12-beta_20200920"
55
66 let percent = 10000
77
88 let decimal = 100000000
99
1010 let riskPercent = 2000
1111
1212 let teamPercent = 1000
1313
1414 let leasePercent = 6000
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(fteam, fmmtAsset)) + assetBalance(fdapp, fmmtAsset)) + assetBalance(fcold, fmmtAsset)))
4343
4444 let wavesFunds = (wavesBalance(fdapp).regular + wavesBalance(fcold).regular)
4545
4646 let wavesLease = (wavesBalance(fcold).regular - wavesBalance(fcold).available)
4747
4848 let rightLease = max([0, (fraction(wavesFunds, leasePercent, percent) - wavesLease)])
4949
5050 let teamPayoutsDataKey = "teamPayouts"
5151
5252 let scriptVersionDataKey = "scriptVersion"
5353
5454 let lastActionDataKey = "lastAction"
5555
5656 let timestampDataKey = "timestamp"
5757
5858 let thisDataKey = toBase58String(this.bytes)
5959
6060 let isContractSuspended = !(valueOrElse(getBoolean(admin, thisDataKey), false))
6161
6262 func toFloatString (num,dec) = makeString([toString((num / dec)), take(drop(toString(((num % dec) + dec)), 1), 8)], ".")
6363
6464
6565 func isAssetDisabled (assetDataKey) = !(valueOrElse(getBoolean(admin, assetDataKey), false))
6666
6767
6868 func difference (fdappFunds,fcoldFunds) = (fraction((fdappFunds + fcoldFunds), riskPercent, percent) - fdappFunds)
6969
7070
7171 func getScriptTransfer (assetId) = {
7272 let amount = match assetId {
7373 case id: ByteVector =>
7474 if (isAssetDisabled(toBase58String(id)))
7575 then 0
7676 else difference(assetBalance(fdapp, id), assetBalance(fcold, id))
7777 case _ =>
7878 if (isAssetDisabled("WAVES"))
7979 then 0
8080 else difference(wavesBalance(fdapp).regular, wavesBalance(fcold).regular)
8181 }
8282 if ((amount > 0))
8383 then [ScriptTransfer(fdapp, amount, assetId)]
8484 else nil
8585 }
8686
8787
8888 func getScriptVersion () = if ((scriptVersion != valueOrElse(getString(this, scriptVersionDataKey), "")))
8989 then [StringEntry(scriptVersionDataKey, scriptVersion)]
9090 else nil
9191
9292
9393 @Callable(i)
9494 func autoRebalance () = {
9595 let lastActionDataValue = "autoRebalance"
9696 if (if (if ((i.callerPublicKey != adminPublicKey))
9797 then (i.callerPublicKey != mmbotPublicKey)
9898 else false)
9999 then !(containsElement(guarantors, i.callerPublicKey))
100100 else false)
101101 then throw("Only the administrator or the guarantors can perform this function!")
102102 else if (isContractSuspended)
103103 then throw("The administrator has suspended the contract. Check back later ...")
104104 else if ((size(i.payments) > 0))
105105 then throw("Don't attach payment when calling this function. ...")
106106 else {
107107 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]))
108108 if ((size(scriptTransfers) > 0))
109109 then (((scriptTransfers ++ getScriptVersion()) :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
110110 else throw("No transfers available. Wait until imbalance appears.")
111111 }
112112 }
113113
114114
115115
116116 @Callable(i)
117117 func sendTeamPayouts () = {
118118 let lastActionDataValue = "sendTeamPayouts"
119119 if (if ((i.callerPublicKey != adminPublicKey))
120120 then (i.callerPublicKey != mmbotPublicKey)
121121 else false)
122122 then throw("Only the administrator can perform this function!")
123123 else if (isContractSuspended)
124124 then throw("The administrator has suspended the contract. Check back later ...")
125125 else if ((size(i.payments) > 0))
126126 then throw("Don't attach payment when calling this function. ...")
127127 else {
128128 let oldTeamPayouts = valueOrElse(getInteger(this, teamPayoutsDataKey), 0)
129129 let teamPayouts = (fraction(fmmtFunds, teamPercent, percent) - oldTeamPayouts)
130130 if ((teamPayouts > 0))
131131 then [ScriptTransfer(fteam, teamPayouts, fmmtAsset), IntegerEntry(teamPayoutsDataKey, (oldTeamPayouts + teamPayouts)), ((getScriptVersion() :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))]
132132 else throw("No payments available. Wait for new investments to come.")
133133 }
134134 }
135135
136136
137137
138138 @Callable(i)
139139 func setScriptVersion () = {
140140 let lastActionDataValue = "setScriptVersion"
141141 if ((i.callerPublicKey != adminPublicKey))
142142 then throw("Only the administrator can perform this function!")
143143 else if ((size(i.payments) > 0))
144144 then throw("Don't attach payment when calling this function. ...")
145145 else {
146146 let oldScriptVersion = getScriptVersion()
147147 if ((size(oldScriptVersion) > 0))
148148 then ((oldScriptVersion :+ StringEntry(lastActionDataKey, lastActionDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
149149 else throw(("The script version has already been updated: " + scriptVersion))
150150 }
151151 }
152152
153153
154154 @Verifier(tx)
155155 func verify () = {
156- let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
156+ let isValidOwner = sigVerify_8Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
157+ let isValidMMBot = if (isValidOwner)
158+ then true
159+ else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
157160 let isValidAdmin = if (isValidOwner)
158161 then true
159162 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
160- let isValidMMBot = if (isValidOwner)
161- then true
162- else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
163163 let isValidGuarantors = ((((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
164164 then 1
165165 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
166166 then 1
167167 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
168168 then 1
169169 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
170170 then 1
171171 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
172172 then 1
173173 else 0)) >= minSignatures)
174174 match tx {
175175 case b: BurnTransaction =>
176176 if (if (isValidOwner)
177177 then (b.assetId != xfeeAsset)
178178 else false)
179179 then !(containsElement(portfolio, b.assetId))
180180 else false
181181 case o: Order =>
182182 if (if (if (isValidOwner)
183183 then if (if (if ((o.orderType == Buy))
184184 then (o.assetPair.priceAsset != xfeeAsset)
185185 else false)
186186 then !(containsElement(portfolio, o.assetPair.priceAsset))
187187 else false)
188188 then true
189189 else if (if ((o.orderType == Sell))
190190 then (o.assetPair.amountAsset != xfeeAsset)
191191 else false)
192192 then !(containsElement(portfolio, o.assetPair.amountAsset))
193193 else false
194194 else false)
195195 then !(isDefined(o.matcherFeeAssetId))
196196 else false)
197197 then (o.matcherPublicKey == wxchgPublicKey)
198198 else false
199199 case t: TransferTransaction =>
200200 if (!(isContractSuspended))
201201 then if (if (if (if (isValidOwner)
202202 then !(containsElement(portfolio, t.assetId))
203203 else false)
204204 then !(containsElement(portfolio, t.feeAssetId))
205205 else false)
206206 then true
207207 else if (if (if (isValidAdmin)
208208 then (t.assetId == fmmtAsset)
209209 else false)
210210 then !(containsElement(portfolio, t.feeAssetId))
211211 else false)
212212 then (addressFromRecipient(t.recipient) == fdapp)
213213 else false)
214214 then true
215215 else if (if (if (isValidGuarantors)
216216 then (t.assetId != fmmtAsset)
217217 else false)
218218 then containsElement(portfolio, t.assetId)
219219 else false)
220220 then (addressFromRecipient(t.recipient) == fdapp)
221221 else false
222222 else false
223223 case l: LeaseTransaction =>
224224 if (isValidMMBot)
225225 then if ((rightLease >= l.amount))
226226 then true
227227 else throw(makeString(["Maximum Possible Lease:", toFloatString(rightLease, decimal), "WAVES"], " "))
228228 else false
229229 case _: LeaseCancelTransaction =>
230230 if (isValidMMBot)
231231 then true
232232 else isValidGuarantors
233233 case _: SetScriptTransaction|DataTransaction =>
234234 if (isValidAdmin)
235235 then isValidGuarantors
236236 else false
237237 case _ =>
238238 false
239239 }
240240 }
241241

github/deemru/w8io/873ac7e 
70.48 ms