tx · 36xSmKofvKM8LbnBeoyrcCDRFscrC33tdBLRPmJLm28q 3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA: -0.01400000 Waves 2021.01.19 23:14 [2424524] smart account 3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA > SELF 0.00000000 Waves
{ "type": 13, "id": "36xSmKofvKM8LbnBeoyrcCDRFscrC33tdBLRPmJLm28q", "fee": 1400000, "feeAssetId": null, "timestamp": 1611087201120, "version": 1, "sender": "3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA", "senderPublicKey": "5gGSWjBNTQGAMZViHK3qbn35JUNmbzqboicpdMuweapK", "proofs": [ "4fikXuYEDwV8XDiFdYFvieVDQCr6MV9PDcPyjgYSWpefnfBxqPVnDxRzhXXNLQSV9JXwwEnYQu2pe8cjtFASewEA", "245sarnfgqwXaRZRsuxoXCmVTAvb1b9VZVQhLhf3bfqQPvKYrYjrtuJygnvweCYY6jPC4AVwp4ytqBSjvKK3t95g" ], "script": "base64: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AAACBQAAAAlwb3J0Zm9saW8IBQAAAAFiAAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlvdXJBc3NldHMIBQAAAAFiAAAAB2Fzc2V0SWQHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVPcmRlcgQAAAABbwUAAAAHJG1hdGNoMAMDAwMDBQAAAAxpc1ZhbGlkUm9ib3QJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAFvAAAAEW1hdGNoZXJGZWVBc3NldElkBwkAAAAAAAACCAUAAAABbwAAABBtYXRjaGVyUHVibGljS2V5BQAAAA53ZXhjaFB1YmxpY0tleQcDAwMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BwYDCQAAAAAAAAIIBQAAAAFvAAAACW9yZGVyVHlwZQUAAAAEU2VsbAkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwYDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACW91ckFzc2V0cwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJb3VyQXNzZXRzCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF0BQAAAAckbWF0Y2gwAwMDBQAAAAxpc1ZhbGlkQWRtaW4FAAAAEWlzVmFsaWRHdWFyYW50b3JzBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAAdhc3NldElkBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAApmZWVBc3NldElkBwMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24DBQAAAAxpc1ZhbGlkQWRtaW4FAAAAEWlzVmFsaWRHdWFyYW50b3JzBwcQB867", "chainId": 87, "height": 2424524, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DKSYBL9eatuVUZFHXBMVt1RofFbNoL5ZHSdgZAUYWcXP Next: EDDxcEvZJ5FLtnhSSvAtFT79xp8bLQazEWR5CeQLBEGb Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let ScriptVersion = "2.1. | |
4 | + | let ScriptVersion = "2.1.5-beta_20210119" | |
5 | 5 | ||
6 | 6 | let percent = 10000 | |
7 | 7 | ||
76 | 76 | else val | |
77 | 77 | ||
78 | 78 | ||
79 | - | func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey)) | |
80 | - | then nil | |
81 | - | else [IntegerEntry("timestamp", lastBlock.timestamp)] | |
82 | - | ||
83 | - | ||
84 | - | func excessAmount (assetId) = { | |
85 | - | let fmainFunds = assetBalance(fmain, assetId) | |
86 | - | let totalFunds = (fmainFunds + assetBalance(fcold, assetId)) | |
87 | - | valueOrMinimum((fraction(totalFunds, mainPercent, percent) - fmainFunds), 0) | |
88 | - | } | |
89 | - | ||
90 | - | ||
91 | - | func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId)) | |
92 | - | then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " ")) | |
93 | - | else if ((assetId == base58'')) | |
94 | - | then 0 | |
95 | - | else assetBalance(this, assetId) | |
96 | - | ||
97 | - | ||
98 | 79 | func toDateTimeString (timestamp) = { | |
99 | 80 | let sp = toBytes(" ") | |
100 | 81 | let zd = toBytes(" UTC") | |
158 | 139 | toUtf8String((((date + sp) + time) + zd)) | |
159 | 140 | } | |
160 | 141 | } | |
142 | + | ||
143 | + | ||
144 | + | func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey)) | |
145 | + | then nil | |
146 | + | else [IntegerEntry("timestamp", lastBlock.timestamp)] | |
147 | + | ||
148 | + | ||
149 | + | func excessAmount (assetId) = { | |
150 | + | let fmainFunds = assetBalance(fmain, assetId) | |
151 | + | let totalFunds = (fmainFunds + assetBalance(fcold, assetId)) | |
152 | + | valueOrMinimum((fraction(totalFunds, mainPercent, percent) - fmainFunds), 0) | |
153 | + | } | |
154 | + | ||
155 | + | ||
156 | + | func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId)) | |
157 | + | then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " ")) | |
158 | + | else if ((assetId == base58'')) | |
159 | + | then 0 | |
160 | + | else assetBalance(this, assetId) | |
161 | 161 | ||
162 | 162 | ||
163 | 163 | @Callable(i) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let ScriptVersion = "2.1. | |
4 | + | let ScriptVersion = "2.1.5-beta_20210119" | |
5 | 5 | ||
6 | 6 | let percent = 10000 | |
7 | 7 | ||
8 | 8 | let usdMult = 1000000 | |
9 | 9 | ||
10 | 10 | let decMult = 100000000 | |
11 | 11 | ||
12 | 12 | let oneWeek = (604800 * 1000) | |
13 | 13 | ||
14 | 14 | let fhfsPrice = (100 * usdMult) | |
15 | 15 | ||
16 | 16 | let mainPercent = ((20 * percent) / 100) | |
17 | 17 | ||
18 | 18 | let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k' | |
19 | 19 | ||
20 | 20 | let robotPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k' | |
21 | 21 | ||
22 | 22 | let wexchPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5' | |
23 | 23 | ||
24 | 24 | let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58'')] :+ base58'') | |
25 | 25 | ||
26 | 26 | let actualSize = value(indexOf(guarantors, base58'')) | |
27 | 27 | ||
28 | 28 | let minSignatures = ((actualSize / 2) + (actualSize % 2)) | |
29 | 29 | ||
30 | 30 | let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
31 | 31 | ||
32 | 32 | let usdcAsset = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ' | |
33 | 33 | ||
34 | 34 | let fhfsAsset = base58'4wcCKU3Cu4ABpmfiwzufocvrQQuRX4QMHZ7TjpRwtAmn' | |
35 | 35 | ||
36 | 36 | let ratsAsset = base58'Z7817F7hnbWYsVHykjPtn8sUjyuLLf8NPofdveb8CMD' | |
37 | 37 | ||
38 | 38 | let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk' | |
39 | 39 | ||
40 | 40 | let portfolio = [base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] | |
41 | 41 | ||
42 | 42 | let ourAssets = [fhfsAsset, xfeeAsset, ratsAsset] | |
43 | 43 | ||
44 | 44 | let majorSize = 1 | |
45 | 45 | ||
46 | 46 | let majorMult = 2 | |
47 | 47 | ||
48 | 48 | let altMult = (majorMult * (size(portfolio) - majorSize)) | |
49 | 49 | ||
50 | 50 | let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x') | |
51 | 51 | ||
52 | 52 | let fmain = Address(base58'3PEPsNg7aSWSSgdC6XweyJkvDXmwVoWeNHL') | |
53 | 53 | ||
54 | 54 | let fcold = Address(base58'3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA') | |
55 | 55 | ||
56 | 56 | let frats = Address(base58'3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi') | |
57 | 57 | ||
58 | 58 | let fhfsTotal = (assetBalance(fmain, fhfsAsset) + assetBalance(fcold, fhfsAsset)) | |
59 | 59 | ||
60 | 60 | let fhfsFunds = (value(assetInfo(fhfsAsset)).quantity - fhfsTotal) | |
61 | 61 | ||
62 | 62 | let ratsTotal = (assetBalance(frats, ratsAsset) + assetBalance(fcold, ratsAsset)) | |
63 | 63 | ||
64 | 64 | let ratsFunds = (value(assetInfo(ratsAsset)).quantity - ratsTotal) | |
65 | 65 | ||
66 | 66 | let usdxFunds = (assetBalance(frats, usdtAsset) + assetBalance(frats, usdcAsset)) | |
67 | 67 | ||
68 | 68 | func round (xVal) = ((xVal + 1) / 2) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func fractionRound (val,num,den) = round(fraction((2 * val), num, den)) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func valueOrMinimum (val,minVal) = if ((minVal > val)) | |
75 | 75 | then minVal | |
76 | 76 | else val | |
77 | 77 | ||
78 | 78 | ||
79 | - | func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey)) | |
80 | - | then nil | |
81 | - | else [IntegerEntry("timestamp", lastBlock.timestamp)] | |
82 | - | ||
83 | - | ||
84 | - | func excessAmount (assetId) = { | |
85 | - | let fmainFunds = assetBalance(fmain, assetId) | |
86 | - | let totalFunds = (fmainFunds + assetBalance(fcold, assetId)) | |
87 | - | valueOrMinimum((fraction(totalFunds, mainPercent, percent) - fmainFunds), 0) | |
88 | - | } | |
89 | - | ||
90 | - | ||
91 | - | func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId)) | |
92 | - | then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " ")) | |
93 | - | else if ((assetId == base58'')) | |
94 | - | then 0 | |
95 | - | else assetBalance(this, assetId) | |
96 | - | ||
97 | - | ||
98 | 79 | func toDateTimeString (timestamp) = { | |
99 | 80 | let sp = toBytes(" ") | |
100 | 81 | let zd = toBytes(" UTC") | |
101 | 82 | let norm = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365] | |
102 | 83 | let leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] | |
103 | 84 | let epoch = (((((1969 * 365) + (1969 / 4)) - (1969 / 100)) + (1969 / 400)) + 366) | |
104 | 85 | let ce = (timestamp + ((epoch * 86400) * 1000)) | |
105 | 86 | if (((-12212553600 * 1000) > timestamp)) | |
106 | 87 | then throw("ISO 8601: Only years after 1583 inclusive are allowed!") | |
107 | 88 | else { | |
108 | 89 | let date = { | |
109 | 90 | let yyyy = ((ce / (31556952 * 1000)) - 1) | |
110 | 91 | let ytd = ((ce / (86400 * 1000)) - (((((yyyy * 365) + (yyyy / 4)) - (yyyy / 100)) + (yyyy / 400)) + 366)) | |
111 | 92 | let months = if (if (if ((((yyyy + 1) % 4) == 0)) | |
112 | 93 | then (((yyyy + 1) % 100) != 0) | |
113 | 94 | else false) | |
114 | 95 | then true | |
115 | 96 | else (((yyyy + 1) % 400) == 0)) | |
116 | 97 | then leap | |
117 | 98 | else norm | |
118 | 99 | let mm = if (if ((0 > ytd)) | |
119 | 100 | then true | |
120 | 101 | else (ytd >= months[12])) | |
121 | 102 | then throw("Unexpected error: Value overflow for months!") | |
122 | 103 | else if ((ytd >= months[11])) | |
123 | 104 | then 11 | |
124 | 105 | else if ((ytd >= months[10])) | |
125 | 106 | then 10 | |
126 | 107 | else if ((ytd >= months[9])) | |
127 | 108 | then 9 | |
128 | 109 | else if ((ytd >= months[8])) | |
129 | 110 | then 8 | |
130 | 111 | else if ((ytd >= months[7])) | |
131 | 112 | then 7 | |
132 | 113 | else if ((ytd >= months[6])) | |
133 | 114 | then 6 | |
134 | 115 | else if ((ytd >= months[5])) | |
135 | 116 | then 5 | |
136 | 117 | else if ((ytd >= months[4])) | |
137 | 118 | then 4 | |
138 | 119 | else if ((ytd >= months[3])) | |
139 | 120 | then 3 | |
140 | 121 | else if ((ytd >= months[2])) | |
141 | 122 | then 2 | |
142 | 123 | else if ((ytd >= months[1])) | |
143 | 124 | then 1 | |
144 | 125 | else 0 | |
145 | 126 | let dd = (ytd - months[mm]) | |
146 | 127 | ((((drop(toBytes(toString((yyyy + 1))), 0) + base58'n') + drop(toBytes(toString((mm + 101))), 1)) + base58'n') + drop(toBytes(toString((dd + 101))), 1)) | |
147 | 128 | } | |
148 | 129 | let time = { | |
149 | 130 | let rd = (ce % (86400 * 1000)) | |
150 | 131 | let hh = (rd / (3600 * 1000)) | |
151 | 132 | let rh = (rd % (3600 * 1000)) | |
152 | 133 | let mm = (rh / (60 * 1000)) | |
153 | 134 | let rm = (rh % (60 * 1000)) | |
154 | 135 | let ss = (rm / 1000) | |
155 | 136 | let ms = (rm % 1000) | |
156 | 137 | ((((drop(toBytes(toString((hh + 100))), 1) + base58'21') + drop(toBytes(toString((mm + 100))), 1)) + base58'21') + drop(toBytes(toString((ss + 100))), 1)) | |
157 | 138 | } | |
158 | 139 | toUtf8String((((date + sp) + time) + zd)) | |
159 | 140 | } | |
160 | 141 | } | |
142 | + | ||
143 | + | ||
144 | + | func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey)) | |
145 | + | then nil | |
146 | + | else [IntegerEntry("timestamp", lastBlock.timestamp)] | |
147 | + | ||
148 | + | ||
149 | + | func excessAmount (assetId) = { | |
150 | + | let fmainFunds = assetBalance(fmain, assetId) | |
151 | + | let totalFunds = (fmainFunds + assetBalance(fcold, assetId)) | |
152 | + | valueOrMinimum((fraction(totalFunds, mainPercent, percent) - fmainFunds), 0) | |
153 | + | } | |
154 | + | ||
155 | + | ||
156 | + | func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId)) | |
157 | + | then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " ")) | |
158 | + | else if ((assetId == base58'')) | |
159 | + | then 0 | |
160 | + | else assetBalance(this, assetId) | |
161 | 161 | ||
162 | 162 | ||
163 | 163 | @Callable(i) | |
164 | 164 | func AutoFixProfit (newMult) = { | |
165 | 165 | let oldProfit = valueOrElse(getInteger(this, "fixedProfit"), 0) | |
166 | 166 | let riskPercent = valueOrElse(getInteger(this, "riskPercent"), (percent / 100)) | |
167 | 167 | let usdtFunds = fraction(fhfsFunds, fhfsPrice, decMult) | |
168 | 168 | let riskAmount = fraction(usdtFunds, riskPercent, (altMult * percent)) | |
169 | 169 | let minMult = ((oldProfit / riskAmount) + 1) | |
170 | 170 | let newProfit = (newMult * riskAmount) | |
171 | 171 | let usdtAmount = valueOrMinimum((newProfit - oldProfit), 0) | |
172 | 172 | let ratsAmount = fractionRound(usdtAmount, ratsFunds, usdxFunds) | |
173 | 173 | if ((minMult > newMult)) | |
174 | 174 | then throw(makeString([(("AutoFixProfit (" + toString(newMult)) + ") =>"), "Inavlid value! Min. multiplier:", toString(minMult)], " ")) | |
175 | 175 | else if ((size(i.payments) > 0)) | |
176 | 176 | then throw(makeString(["AutoFixProfit (...) =>", "Don't attach payment when calling this function ..."], " ")) | |
177 | 177 | else if (if ((i.callerPublicKey != adminPublicKey)) | |
178 | 178 | then (i.callerPublicKey != robotPublicKey) | |
179 | 179 | else false) | |
180 | 180 | then throw(makeString(["AutoFixProfit (...) =>", "This action can only be performed by an administrator!"], " ")) | |
181 | 181 | else ([IntegerEntry("fixedProfit", newProfit), ScriptTransfer(frats, usdtAmount, usdtAsset), ScriptTransfer(fmain, ratsAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey)) | |
182 | 182 | } | |
183 | 183 | ||
184 | 184 | ||
185 | 185 | ||
186 | 186 | @Callable(i) | |
187 | 187 | func AutoRebalance () = { | |
188 | 188 | let fhfsSupply = valueOrElse(getInteger(fmain, "fhfsSupply"), (100 * decMult)) | |
189 | 189 | let fhfsExcessAmount = valueOrMinimum((fhfsSupply - assetBalance(fmain, fhfsAsset)), 0) | |
190 | 190 | if ((size(i.payments) > 0)) | |
191 | 191 | then throw(makeString(["AutoRebalance () =>", "Don't attach payment when calling this function ..."], " ")) | |
192 | 192 | else if (if ((i.callerPublicKey != adminPublicKey)) | |
193 | 193 | then (i.callerPublicKey != robotPublicKey) | |
194 | 194 | else false) | |
195 | 195 | then throw(makeString(["AutoRebalance () =>", "This action can only be performed by an administrator!"], " ")) | |
196 | 196 | else ([ScriptTransfer(fmain, fhfsExcessAmount, fhfsAsset), ScriptTransfer(fmain, excessAmount(portfolio[0]), portfolio[0]), ScriptTransfer(fmain, excessAmount(portfolio[1]), portfolio[1]), ScriptTransfer(fmain, excessAmount(portfolio[2]), portfolio[2]), ScriptTransfer(fmain, excessAmount(portfolio[3]), portfolio[3]), ScriptTransfer(fmain, excessAmount(portfolio[4]), portfolio[4]), ScriptTransfer(fmain, excessAmount(portfolio[5]), portfolio[5]), ScriptTransfer(fmain, excessAmount(portfolio[6]), portfolio[6]), ScriptTransfer(fmain, excessAmount(portfolio[7]), portfolio[7])] ++ adminTimestamp(i.callerPublicKey)) | |
197 | 197 | } | |
198 | 198 | ||
199 | 199 | ||
200 | 200 | ||
201 | 201 | @Callable(i) | |
202 | 202 | func AirdropWasher (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((size(i.payments) > 0)) | |
203 | 203 | then throw(makeString(["AirdropWasher (...) =>", "Don't attach payment when calling this function ..."], " ")) | |
204 | 204 | else if ((i.callerPublicKey != adminPublicKey)) | |
205 | 205 | then throw(makeString(["AirdropWasher (...) =>", "This action can only be performed by an administrator!"], " ")) | |
206 | 206 | else ([ScriptTransfer(admin, airdropBalance(id0), id0), ScriptTransfer(admin, airdropBalance(id1), id1), ScriptTransfer(admin, airdropBalance(id2), id2), ScriptTransfer(admin, airdropBalance(id3), id3), ScriptTransfer(admin, airdropBalance(id4), id4), ScriptTransfer(admin, airdropBalance(id5), id5), ScriptTransfer(admin, airdropBalance(id6), id6), ScriptTransfer(admin, airdropBalance(id7), id7), ScriptTransfer(admin, airdropBalance(id8), id8), ScriptTransfer(admin, airdropBalance(id9), id9)] ++ adminTimestamp(i.callerPublicKey)) | |
207 | 207 | ||
208 | 208 | ||
209 | 209 | ||
210 | 210 | @Callable(i) | |
211 | 211 | func EmergencyExit () = { | |
212 | 212 | let minTimestamp = (max([valueOrElse(getInteger(fmain, "timestamp"), 0), valueOrElse(getInteger(fcold, "timestamp"), 0), valueOrElse(getInteger(frats, "timestamp"), 0)]) + oneWeek) | |
213 | 213 | let isAdmin = (i.callerPublicKey == adminPublicKey) | |
214 | 214 | let isEmergency = valueOrElse(getBoolean(this, "emergency"), false) | |
215 | 215 | if (if (!(isAdmin)) | |
216 | 216 | then isEmergency | |
217 | 217 | else false) | |
218 | 218 | then throw(makeString(["EmergencyExit () =>", "The emergency procedure has already started!"], " ")) | |
219 | 219 | else if (if (!(isEmergency)) | |
220 | 220 | then (minTimestamp > lastBlock.timestamp) | |
221 | 221 | else false) | |
222 | 222 | then throw(makeString(["EmergencyExit () =>", "Will be allowed after the date:", toDateTimeString(minTimestamp)], " ")) | |
223 | 223 | else if ((size(i.payments) > 0)) | |
224 | 224 | then throw(makeString(["EmergencyExit () =>", "Don't attach payment when calling this function ..."], " ")) | |
225 | 225 | else if (if (!(isAdmin)) | |
226 | 226 | then !(containsElement(guarantors, i.callerPublicKey)) | |
227 | 227 | else false) | |
228 | 228 | then throw(makeString(["EmergencyExit () =>", "This action can only be performed by one of the guarantors!"], " ")) | |
229 | 229 | else (((if (isAdmin) | |
230 | 230 | then nil | |
231 | 231 | else [ScriptTransfer(fmain, assetBalance(fcold, portfolio[0]), portfolio[0]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[1]), portfolio[1]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[2]), portfolio[2]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[3]), portfolio[3]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[4]), portfolio[4]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[5]), portfolio[5]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[6]), portfolio[6]), ScriptTransfer(fmain, assetBalance(fcold, portfolio[7]), portfolio[7])]) :+ BooleanEntry("emergency", !(isAdmin))) ++ adminTimestamp(i.callerPublicKey)) | |
232 | 232 | } | |
233 | 233 | ||
234 | 234 | ||
235 | 235 | @Verifier(tx) | |
236 | 236 | func verify () = { | |
237 | 237 | let isValidOwner = sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
238 | 238 | let isValidAdmin = if (isValidOwner) | |
239 | 239 | then true | |
240 | 240 | else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey) | |
241 | 241 | let isValidRobot = if (isValidOwner) | |
242 | 242 | then true | |
243 | 243 | else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], robotPublicKey) | |
244 | 244 | let isValidGuarantors = ((((if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[1], guarantors[0])) | |
245 | 245 | then 1 | |
246 | 246 | else 0) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[2], guarantors[1])) | |
247 | 247 | then 1 | |
248 | 248 | else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[3], guarantors[2])) | |
249 | 249 | then 1 | |
250 | 250 | else 0)) >= minSignatures) | |
251 | 251 | match tx { | |
252 | 252 | case _: LeaseCancelTransaction|LeaseTransaction => | |
253 | 253 | isValidOwner | |
254 | 254 | case b: BurnTransaction => | |
255 | 255 | if (if (isValidOwner) | |
256 | 256 | then !(containsElement(portfolio, b.assetId)) | |
257 | 257 | else false) | |
258 | 258 | then !(containsElement(ourAssets, b.assetId)) | |
259 | 259 | else false | |
260 | 260 | case o: Order => | |
261 | 261 | if (if (if (if (if (isValidRobot) | |
262 | 262 | then !(isDefined(o.matcherFeeAssetId)) | |
263 | 263 | else false) | |
264 | 264 | then (o.matcherPublicKey == wexchPublicKey) | |
265 | 265 | else false) | |
266 | 266 | then if (if (if ((o.orderType == Buy)) | |
267 | 267 | then !(containsElement(portfolio, o.assetPair.priceAsset)) | |
268 | 268 | else false) | |
269 | 269 | then true | |
270 | 270 | else if ((o.orderType == Sell)) | |
271 | 271 | then !(containsElement(portfolio, o.assetPair.amountAsset)) | |
272 | 272 | else false) | |
273 | 273 | then true | |
274 | 274 | else if (!(containsElement(portfolio, o.assetPair.priceAsset))) | |
275 | 275 | then !(containsElement(portfolio, o.assetPair.amountAsset)) | |
276 | 276 | else false | |
277 | 277 | else false) | |
278 | 278 | then !(containsElement(ourAssets, o.assetPair.priceAsset)) | |
279 | 279 | else false) | |
280 | 280 | then !(containsElement(ourAssets, o.assetPair.amountAsset)) | |
281 | 281 | else false | |
282 | 282 | case t: MassTransferTransaction|TransferTransaction => | |
283 | 283 | if (if (if (isValidAdmin) | |
284 | 284 | then isValidGuarantors | |
285 | 285 | else false) | |
286 | 286 | then !(containsElement(portfolio, t.assetId)) | |
287 | 287 | else false) | |
288 | 288 | then !(containsElement(portfolio, t.feeAssetId)) | |
289 | 289 | else false | |
290 | 290 | case _: SetScriptTransaction|DataTransaction => | |
291 | 291 | if (isValidAdmin) | |
292 | 292 | then isValidGuarantors | |
293 | 293 | else false | |
294 | 294 | case _ => | |
295 | 295 | false | |
296 | 296 | } | |
297 | 297 | } | |
298 | 298 |
github/deemru/w8io/3ef1775 59.57 ms ◑