tx · 7EMQgHAewkeKGdMCzQuPcv8z1dYpRxZXh6FZFVzM6WFt

3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12:  -0.01400000 Waves

2020.01.22 16:44 [1896051] smart account 3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12 > SELF 0.00000000 Waves

{ "type": 13, "id": "7EMQgHAewkeKGdMCzQuPcv8z1dYpRxZXh6FZFVzM6WFt", "fee": 1400000, "feeAssetId": null, "timestamp": 1579700201593, "version": 1, "sender": "3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12", "senderPublicKey": "5G9pgymdyBYGnWF3oahQXQNPnVaWEthMkeFRUzHjZ7mX", "proofs": [ "3GTEWe4e6vdjkWZPHpmNGtxemrB633Ut3txnRK8YPHzKQYw8hYmFBcdTaLReURZciatY3sn2ieCU1MFgcjvehHMB", "3vMcsiuXMn4Kf5wZGwQNGP7YMbWWEzEVbSwuPUWA1J6WuyoJenQaPNp8KiipF3kAvAcqSLMuj7zsToDUjyi3E5xy", "2a4Aoe7F1guMV1CyPdGCneoS9mQw7sATruRAhk7xZLvqi8rfb4LJTbbeCu6Mj4aMvTVMgnzFTLgcughHwVEDUpNP" ], "script": "base64:AAIDAAAAAAAAAA4IARIAEgMKAQESAwoBAQAAAAwAAAAACWFzc2V0TmFtZQIAAAAHUnVzQ29pbgAAAAAHZGVjTXVsdAAAAAAAAAGGoAAAAAAKbG9ja1BlcmlvZAkAAGgAAAACAAAAAAAAKCCoAAAAAAAAAAPoAAAAAAptaW5CYWxhbmNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAB2RlY011bHQAAAAACm1heEJhbGFuY2UJAABoAAAAAgAAAAAAAA9CQAUAAAAHZGVjTXVsdAAAAAAFZGVub20FAAAACm1pbkJhbGFuY2UAAAAACW15QXNzZXRJZAEAAAAgxnEOO4b+2sUz0GWYb6H01UABn723/O6pBVO+pzv5dxcAAAAAC293bmVyUHViS2V5AQAAACAZj3WLUElN60rqvY9D5QB0cwmnbo/jJ9EKhHu27DqEdwAAAAANbWFuYWdlclB1YktleQEAAAAgybDNQff0ZQ7huByIgcwm4TD1b65OdDMSd1HdCTybjHIAAAAADWxhc3RCbG9ja1RpbWUJAQAAAAdleHRyYWN0AAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAADmZyYW1lU3RhcnRUaW1lCQAAaAAAAAIJAABpAAAAAgUAAAANbGFzdEJsb2NrVGltZQUAAAAKbG9ja1BlcmlvZAUAAAAKbG9ja1BlcmlvZAEAAAANdG9GbG9hdFN0cmluZwAAAAIAAAADbnVtAAAABG11bHQKAQAAAAhzZXBhcmF0ZQAAAAIAAAADYWNjAAAAA3ZhbAMDCQAAAAAAAAIFAAAAA2FjYwIAAAAACQAAAAAAAAIFAAAAA3ZhbAAAAAAAAAAAAAcCAAAAAAMJAAAAAAAAAgUAAAADYWNjAgAAAAAJAAGkAAAAAQUAAAADdmFsCQABLAAAAAIJAAEsAAAAAgUAAAADYWNjAgAAAAEsCQEAAAAJdGFrZVJpZ2h0AAAAAgkAAaQAAAABCQAAZAAAAAIFAAAAA3ZhbAAAAAAAAAAD6AAAAAAAAAAAAwQAAAACaXAJAABpAAAAAgUAAAADbnVtBQAAAARtdWx0BAAAAAJmcAkAAGoAAAACBQAAAANudW0FAAAABG11bHQEAAAAAnEwCQAAaQAAAAIFAAAAAmlwCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AQAAAACcjAJAABqAAAAAgUAAAACaXAJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJxMQkAAGkAAAACBQAAAAJyMAkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJyMQkAAGoAAAACBQAAAAJyMAkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJxMgkAAGkAAAACBQAAAAJyMQkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AQAAAACcjIJAABqAAAAAgUAAAACcjEJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnEzCQAAaQAAAAIFAAAAAnIyCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AQAAAACcjMJAABqAAAAAgUAAAACcjIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJxNAkAAGkAAAACBQAAAAJyMwkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJyNAkAAGoAAAACBQAAAAJyMwkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJxNQkAAGkAAAACBQAAAAJyNAAAAAAAAAAD6AQAAAACcjUJAABqAAAAAgUAAAACcjQAAAAAAAAAA+gEAAAAAmlzBAAAAA0kbGlzdDMxODczMjM4CQAETAAAAAIFAAAAAnEwCQAETAAAAAIFAAAAAnExCQAETAAAAAIFAAAA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", "chainId": 87, "height": 1896051, "spentComplexity": 0 } View: original | compacted Prev: 2MDRLv41AwXBD583Pg1Xy5xWnWbcxWnrzDXJvRpSkE8v Next: Ar1MZfocGruKVy2Yz7kMawjSFXRGK5E74qsPyKTvnmTu Diff:
OldNewDifferences
1111
1212 let maxBalance = (1000000 * decMult)
1313
14-let protect = minBalance
14+let denom = minBalance
1515
1616 let myAssetId = base58'EMdiF8uaySswfCdMxc114rSfzUsAKCtK9d8eSx6ruKP4'
1717
4747 let q5 = (r4 / 1000)
4848 let r5 = (r4 % 1000)
4949 let is = {
50- let $list32043255 = [q0, q1, q2, q3, q4, q5, r5]
51- let $size32043255 = size($list32043255)
52- let $acc032043255 = ""
53- if (($size32043255 == 0))
54- then $acc032043255
50+ let $list31873238 = [q0, q1, q2, q3, q4, q5, r5]
51+ let $size31873238 = size($list31873238)
52+ let $acc031873238 = ""
53+ if (($size31873238 == 0))
54+ then $acc031873238
5555 else {
56- let $acc132043255 = separate($acc032043255, $list32043255[0])
57- if (($size32043255 == 1))
58- then $acc132043255
56+ let $acc131873238 = separate($acc031873238, $list31873238[0])
57+ if (($size31873238 == 1))
58+ then $acc131873238
5959 else {
60- let $acc232043255 = separate($acc132043255, $list32043255[1])
61- if (($size32043255 == 2))
62- then $acc232043255
60+ let $acc231873238 = separate($acc131873238, $list31873238[1])
61+ if (($size31873238 == 2))
62+ then $acc231873238
6363 else {
64- let $acc332043255 = separate($acc232043255, $list32043255[2])
65- if (($size32043255 == 3))
66- then $acc332043255
64+ let $acc331873238 = separate($acc231873238, $list31873238[2])
65+ if (($size31873238 == 3))
66+ then $acc331873238
6767 else {
68- let $acc432043255 = separate($acc332043255, $list32043255[3])
69- if (($size32043255 == 4))
70- then $acc432043255
68+ let $acc431873238 = separate($acc331873238, $list31873238[3])
69+ if (($size31873238 == 4))
70+ then $acc431873238
7171 else {
72- let $acc532043255 = separate($acc432043255, $list32043255[4])
73- if (($size32043255 == 5))
74- then $acc532043255
72+ let $acc531873238 = separate($acc431873238, $list31873238[4])
73+ if (($size31873238 == 5))
74+ then $acc531873238
7575 else {
76- let $acc632043255 = separate($acc532043255, $list32043255[5])
77- if (($size32043255 == 6))
78- then $acc632043255
76+ let $acc631873238 = separate($acc531873238, $list31873238[5])
77+ if (($size31873238 == 6))
78+ then $acc631873238
7979 else {
80- let $acc732043255 = separate($acc632043255, $list32043255[6])
81- if (($size32043255 == 7))
82- then $acc732043255
80+ let $acc731873238 = separate($acc631873238, $list31873238[6])
81+ if (($size31873238 == 7))
82+ then $acc731873238
8383 else {
84- let $acc832043255 = separate($acc732043255, $list32043255[7])
84+ let $acc831873238 = separate($acc731873238, $list31873238[7])
8585 throw("List size exceed 7")
8686 }
8787 }
138138 let dapp = toBase58String(this.bytes)
139139 let sumTotal = getIntegerValue(this, (dapp + "_balance"))
140140 let client = toBase58String(inv.caller.bytes)
141+ let updateTime = match getInteger(this, (client + "_updatetime")) {
142+ case x: Int =>
143+ x
144+ case _ =>
145+ 0
146+ }
141147 let isActive = match getBoolean(this, (client + "_status")) {
142148 case x: Boolean =>
143149 x
144150 case _ =>
145151 false
146152 }
147- let updateTime = match getInteger(this, (client + "_updatetime")) {
148- case x: Int =>
149- x
150- case _ =>
151- 0
152- }
153153 let isOlder = (frameStartTime >= updateTime)
154- let balance = if (if (!(isActive))
155- then isOlder
154+ let balance = if (if (isOlder)
155+ then !(isActive)
156156 else false)
157157 then 0
158158 else match getInteger(this, (client + "_balance")) {
162162 0
163163 }
164164 let amount = extract(attPayment.amount)
165- let newBalance = if (!(isActive))
166- then amount
167- else (balance + amount)
165+ let newBalance = if (isActive)
166+ then (balance + amount)
167+ else amount
168168 if (if ((minBalance > newBalance))
169169 then true
170170 else (newBalance > maxBalance))
171171 then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
172172 else {
173- let newStartTime = {
174- let startTime = if (if (!(isActive))
175- then isOlder
173+ let startTime = if (if (isOlder)
174+ then isActive
175+ else false)
176+ then frameStartTime
177+ else if (if (isOlder)
178+ then !(isActive)
176179 else false)
177180 then lastBlockTime
178- else if (if (isActive)
179- then isOlder
180- else false)
181- then frameStartTime
182- else match getInteger(this, (client + "_starttime")) {
183- case x: Int =>
184- if (isActive)
185- then x
186- else (x + (lastBlockTime - updateTime))
187- case _ =>
188- 0
189- }
190- let sumBalance = (newBalance / protect)
191- (fraction(startTime, (balance / protect), sumBalance) + fraction(lastBlockTime, ((newBalance - balance) / protect), sumBalance))
181+ else match getInteger(this, (client + "_starttime")) {
182+ case x: Int =>
183+ if (isActive)
184+ then x
185+ else (x + (lastBlockTime - updateTime))
186+ case _ =>
187+ 0
188+ }
189+ let newStartTime = {
190+ let divBalance = (newBalance / denom)
191+ (fraction(startTime, (balance / denom), divBalance) + fraction(lastBlockTime, (divBalance - (balance / denom)), divBalance))
192192 }
193193 if (isActive)
194194 then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
209209 let sumTotal = getIntegerValue(this, (dapp + "_balance"))
210210 let minStake = getIntegerValue(this, (dapp + "_starttime"))
211211 let client = toBase58String(inv.caller.bytes)
212+ let updateTime = match getInteger(this, (client + "_updatetime")) {
213+ case x: Int =>
214+ x
215+ case _ =>
216+ 0
217+ }
212218 let isActive = match getBoolean(this, (client + "_status")) {
213219 case x: Boolean =>
214220 x
215221 case _ =>
216222 false
217- }
218- let updateTime = match getInteger(this, (client + "_updatetime")) {
219- case x: Int =>
220- x
221- case _ =>
222- 0
223223 }
224224 let isOlder = (frameStartTime >= updateTime)
225225 let balance = if (!(isActive))
234234 let amount = if ((RSCx100000 != 0))
235235 then RSCx100000
236236 else balance
237+ let newBalance = (balance - amount)
237238 if (if (if ((minStake >= 0))
238239 then (balance >= minStake)
239240 else false)
245246 else if ((amount > balance))
246247 then throw((((((("It's impossible to withdraw more than the remainder: " + toString(balance)) + " (") + toFloatString(balance, decMult)) + " ") + assetName) + ")."))
247248 else {
248- let newBalance = (balance - amount)
249- let newStartTime = {
250- let startTime = if (isOlder)
251- then frameStartTime
252- else match getInteger(this, (client + "_starttime")) {
253- case x: Int =>
254- x
255- case _ =>
256- 0
249+ let startTime = if (isOlder)
250+ then frameStartTime
251+ else match getInteger(this, (client + "_starttime")) {
252+ case x: Int =>
253+ x
254+ case _ =>
255+ 0
256+ }
257+ let newStartTime = if ((minBalance > newBalance))
258+ then startTime
259+ else {
260+ let divBalance = (newBalance / denom)
261+ (fraction(startTime, (balance / denom), divBalance) - fraction(lastBlockTime, (amount / denom), divBalance))
257262 }
258- let sumBalance = (newBalance / protect)
259- if ((minBalance > newBalance))
260- then startTime
261- else (fraction(startTime, (balance / protect), sumBalance) - fraction(lastBlockTime, (amount / protect), sumBalance))
262- }
263263 if ((newBalance >= minBalance))
264264 then ScriptResult(WriteSet([DataEntry((dapp + "_balance"), (sumTotal - amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)]), TransferSet([ScriptTransfer(inv.caller, amount, myAssetId)]))
265265 else ScriptResult(WriteSet([DataEntry((dapp + "_balance"), (sumTotal - balance)), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), false), DataEntry((client + "_updatetime"), lastBlockTime)]), TransferSet([ScriptTransfer(inv.caller, balance, myAssetId)]))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let assetName = "RusCoin"
55
66 let decMult = 100000
77
88 let lockPeriod = (2629800 * 1000)
99
1010 let minBalance = (1 * decMult)
1111
1212 let maxBalance = (1000000 * decMult)
1313
14-let protect = minBalance
14+let denom = minBalance
1515
1616 let myAssetId = base58'EMdiF8uaySswfCdMxc114rSfzUsAKCtK9d8eSx6ruKP4'
1717
1818 let ownerPubKey = base58'2in4yGNBKfitQbXbsHmL2unWrUnRo7GWyqcZXsmAzhQi'
1919
2020 let managerPubKey = base58'EaKK5PAFUkgtnF7xcyABUzi8YBQADmUDnPzQBHjCTAKT'
2121
2222 let lastBlockTime = extract(lastBlock.timestamp)
2323
2424 let frameStartTime = ((lastBlockTime / lockPeriod) * lockPeriod)
2525
2626 func toFloatString (num,mult) = {
2727 func separate (acc,val) = if (if ((acc == ""))
2828 then (val == 0)
2929 else false)
3030 then ""
3131 else if ((acc == ""))
3232 then toString(val)
3333 else ((acc + ",") + takeRight(toString((val + 1000)), 3))
3434
3535 let ip = (num / mult)
3636 let fp = (num % mult)
3737 let q0 = (ip / (((((1000 * 1000) * 1000) * 1000) * 1000) * 1000))
3838 let r0 = (ip % (((((1000 * 1000) * 1000) * 1000) * 1000) * 1000))
3939 let q1 = (r0 / ((((1000 * 1000) * 1000) * 1000) * 1000))
4040 let r1 = (r0 % ((((1000 * 1000) * 1000) * 1000) * 1000))
4141 let q2 = (r1 / (((1000 * 1000) * 1000) * 1000))
4242 let r2 = (r1 % (((1000 * 1000) * 1000) * 1000))
4343 let q3 = (r2 / ((1000 * 1000) * 1000))
4444 let r3 = (r2 % ((1000 * 1000) * 1000))
4545 let q4 = (r3 / (1000 * 1000))
4646 let r4 = (r3 % (1000 * 1000))
4747 let q5 = (r4 / 1000)
4848 let r5 = (r4 % 1000)
4949 let is = {
50- let $list32043255 = [q0, q1, q2, q3, q4, q5, r5]
51- let $size32043255 = size($list32043255)
52- let $acc032043255 = ""
53- if (($size32043255 == 0))
54- then $acc032043255
50+ let $list31873238 = [q0, q1, q2, q3, q4, q5, r5]
51+ let $size31873238 = size($list31873238)
52+ let $acc031873238 = ""
53+ if (($size31873238 == 0))
54+ then $acc031873238
5555 else {
56- let $acc132043255 = separate($acc032043255, $list32043255[0])
57- if (($size32043255 == 1))
58- then $acc132043255
56+ let $acc131873238 = separate($acc031873238, $list31873238[0])
57+ if (($size31873238 == 1))
58+ then $acc131873238
5959 else {
60- let $acc232043255 = separate($acc132043255, $list32043255[1])
61- if (($size32043255 == 2))
62- then $acc232043255
60+ let $acc231873238 = separate($acc131873238, $list31873238[1])
61+ if (($size31873238 == 2))
62+ then $acc231873238
6363 else {
64- let $acc332043255 = separate($acc232043255, $list32043255[2])
65- if (($size32043255 == 3))
66- then $acc332043255
64+ let $acc331873238 = separate($acc231873238, $list31873238[2])
65+ if (($size31873238 == 3))
66+ then $acc331873238
6767 else {
68- let $acc432043255 = separate($acc332043255, $list32043255[3])
69- if (($size32043255 == 4))
70- then $acc432043255
68+ let $acc431873238 = separate($acc331873238, $list31873238[3])
69+ if (($size31873238 == 4))
70+ then $acc431873238
7171 else {
72- let $acc532043255 = separate($acc432043255, $list32043255[4])
73- if (($size32043255 == 5))
74- then $acc532043255
72+ let $acc531873238 = separate($acc431873238, $list31873238[4])
73+ if (($size31873238 == 5))
74+ then $acc531873238
7575 else {
76- let $acc632043255 = separate($acc532043255, $list32043255[5])
77- if (($size32043255 == 6))
78- then $acc632043255
76+ let $acc631873238 = separate($acc531873238, $list31873238[5])
77+ if (($size31873238 == 6))
78+ then $acc631873238
7979 else {
80- let $acc732043255 = separate($acc632043255, $list32043255[6])
81- if (($size32043255 == 7))
82- then $acc732043255
80+ let $acc731873238 = separate($acc631873238, $list31873238[6])
81+ if (($size31873238 == 7))
82+ then $acc731873238
8383 else {
84- let $acc832043255 = separate($acc732043255, $list32043255[7])
84+ let $acc831873238 = separate($acc731873238, $list31873238[7])
8585 throw("List size exceed 7")
8686 }
8787 }
8888 }
8989 }
9090 }
9191 }
9292 }
9393 }
9494 }
9595 ((if ((is == ""))
9696 then "0"
9797 else is) + {
9898 let fs = take(drop((toString((fp + mult)) + "00000000"), 1), 8)
9999 let f0 = if ((takeRight(fs, 1) == "0"))
100100 then dropRight(fs, 1)
101101 else fs
102102 let f1 = if ((takeRight(f0, 1) == "0"))
103103 then dropRight(f0, 1)
104104 else f0
105105 let f2 = if ((takeRight(f1, 1) == "0"))
106106 then dropRight(f1, 1)
107107 else f1
108108 let f3 = if ((takeRight(f2, 1) == "0"))
109109 then dropRight(f2, 1)
110110 else f2
111111 let f4 = if ((takeRight(f3, 1) == "0"))
112112 then dropRight(f3, 1)
113113 else f3
114114 let f5 = if ((takeRight(f4, 1) == "0"))
115115 then dropRight(f4, 1)
116116 else f4
117117 let f6 = if ((takeRight(f5, 1) == "0"))
118118 then dropRight(f5, 1)
119119 else f5
120120 let f7 = if ((takeRight(f6, 1) == "0"))
121121 then dropRight(f6, 1)
122122 else f6
123123 if ((f7 == ""))
124124 then ""
125125 else ("." + f7)
126126 })
127127 }
128128
129129
130130 @Callable(inv)
131131 func deposit () = {
132132 let attPayment = if (isDefined(inv.payment))
133133 then extract(inv.payment)
134134 else throw((("There is no attached payment " + assetName) + "."))
135135 if ((attPayment.assetId != myAssetId))
136136 then throw((("Only " + assetName) + " is allowed to deposit."))
137137 else {
138138 let dapp = toBase58String(this.bytes)
139139 let sumTotal = getIntegerValue(this, (dapp + "_balance"))
140140 let client = toBase58String(inv.caller.bytes)
141+ let updateTime = match getInteger(this, (client + "_updatetime")) {
142+ case x: Int =>
143+ x
144+ case _ =>
145+ 0
146+ }
141147 let isActive = match getBoolean(this, (client + "_status")) {
142148 case x: Boolean =>
143149 x
144150 case _ =>
145151 false
146152 }
147- let updateTime = match getInteger(this, (client + "_updatetime")) {
148- case x: Int =>
149- x
150- case _ =>
151- 0
152- }
153153 let isOlder = (frameStartTime >= updateTime)
154- let balance = if (if (!(isActive))
155- then isOlder
154+ let balance = if (if (isOlder)
155+ then !(isActive)
156156 else false)
157157 then 0
158158 else match getInteger(this, (client + "_balance")) {
159159 case x: Int =>
160160 x
161161 case _ =>
162162 0
163163 }
164164 let amount = extract(attPayment.amount)
165- let newBalance = if (!(isActive))
166- then amount
167- else (balance + amount)
165+ let newBalance = if (isActive)
166+ then (balance + amount)
167+ else amount
168168 if (if ((minBalance > newBalance))
169169 then true
170170 else (newBalance > maxBalance))
171171 then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
172172 else {
173- let newStartTime = {
174- let startTime = if (if (!(isActive))
175- then isOlder
173+ let startTime = if (if (isOlder)
174+ then isActive
175+ else false)
176+ then frameStartTime
177+ else if (if (isOlder)
178+ then !(isActive)
176179 else false)
177180 then lastBlockTime
178- else if (if (isActive)
179- then isOlder
180- else false)
181- then frameStartTime
182- else match getInteger(this, (client + "_starttime")) {
183- case x: Int =>
184- if (isActive)
185- then x
186- else (x + (lastBlockTime - updateTime))
187- case _ =>
188- 0
189- }
190- let sumBalance = (newBalance / protect)
191- (fraction(startTime, (balance / protect), sumBalance) + fraction(lastBlockTime, ((newBalance - balance) / protect), sumBalance))
181+ else match getInteger(this, (client + "_starttime")) {
182+ case x: Int =>
183+ if (isActive)
184+ then x
185+ else (x + (lastBlockTime - updateTime))
186+ case _ =>
187+ 0
188+ }
189+ let newStartTime = {
190+ let divBalance = (newBalance / denom)
191+ (fraction(startTime, (balance / denom), divBalance) + fraction(lastBlockTime, (divBalance - (balance / denom)), divBalance))
192192 }
193193 if (isActive)
194194 then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
195195 else if (isDefined(getString(this, (client + "_address"))))
196196 then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
197197 else WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_address"), client), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
198198 }
199199 }
200200 }
201201
202202
203203
204204 @Callable(inv)
205205 func withdraw (RSCx100000) = if (isDefined(inv.payment))
206206 then throw("Please don't attach payment when withdrawing funds.")
207207 else {
208208 let dapp = toBase58String(this.bytes)
209209 let sumTotal = getIntegerValue(this, (dapp + "_balance"))
210210 let minStake = getIntegerValue(this, (dapp + "_starttime"))
211211 let client = toBase58String(inv.caller.bytes)
212+ let updateTime = match getInteger(this, (client + "_updatetime")) {
213+ case x: Int =>
214+ x
215+ case _ =>
216+ 0
217+ }
212218 let isActive = match getBoolean(this, (client + "_status")) {
213219 case x: Boolean =>
214220 x
215221 case _ =>
216222 false
217- }
218- let updateTime = match getInteger(this, (client + "_updatetime")) {
219- case x: Int =>
220- x
221- case _ =>
222- 0
223223 }
224224 let isOlder = (frameStartTime >= updateTime)
225225 let balance = if (!(isActive))
226226 then 0
227227 else match getInteger(this, (client + "_balance")) {
228228 case x: Int =>
229229 x
230230 case _ =>
231231 0
232232 }
233233 let expiration = (updateTime + lockPeriod)
234234 let amount = if ((RSCx100000 != 0))
235235 then RSCx100000
236236 else balance
237+ let newBalance = (balance - amount)
237238 if (if (if ((minStake >= 0))
238239 then (balance >= minStake)
239240 else false)
240241 then (expiration >= lastBlockTime)
241242 else false)
242243 then throw((("Unable to withdraw coins! The account is locked for up to " + toString((expiration / 1000))) + " Unix timestamp..."))
243244 else if ((0 >= amount))
244245 then throw("It's impossible to withdraw a negative amount or no balance.")
245246 else if ((amount > balance))
246247 then throw((((((("It's impossible to withdraw more than the remainder: " + toString(balance)) + " (") + toFloatString(balance, decMult)) + " ") + assetName) + ")."))
247248 else {
248- let newBalance = (balance - amount)
249- let newStartTime = {
250- let startTime = if (isOlder)
251- then frameStartTime
252- else match getInteger(this, (client + "_starttime")) {
253- case x: Int =>
254- x
255- case _ =>
256- 0
249+ let startTime = if (isOlder)
250+ then frameStartTime
251+ else match getInteger(this, (client + "_starttime")) {
252+ case x: Int =>
253+ x
254+ case _ =>
255+ 0
256+ }
257+ let newStartTime = if ((minBalance > newBalance))
258+ then startTime
259+ else {
260+ let divBalance = (newBalance / denom)
261+ (fraction(startTime, (balance / denom), divBalance) - fraction(lastBlockTime, (amount / denom), divBalance))
257262 }
258- let sumBalance = (newBalance / protect)
259- if ((minBalance > newBalance))
260- then startTime
261- else (fraction(startTime, (balance / protect), sumBalance) - fraction(lastBlockTime, (amount / protect), sumBalance))
262- }
263263 if ((newBalance >= minBalance))
264264 then ScriptResult(WriteSet([DataEntry((dapp + "_balance"), (sumTotal - amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)]), TransferSet([ScriptTransfer(inv.caller, amount, myAssetId)]))
265265 else ScriptResult(WriteSet([DataEntry((dapp + "_balance"), (sumTotal - balance)), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), false), DataEntry((client + "_updatetime"), lastBlockTime)]), TransferSet([ScriptTransfer(inv.caller, balance, myAssetId)]))
266266 }
267267 }
268268
269269
270270
271271 @Callable(inv)
272272 func setMinStake (RSCx100000) = if (if ((inv.callerPublicKey != ownerPubKey))
273273 then (inv.callerPublicKey != managerPubKey)
274274 else false)
275275 then throw("Only an administrator can set or modify minStake!")
276276 else if (isDefined(inv.payment))
277277 then throw("Please don't attach payment when setting up minStake.")
278278 else {
279279 let dapp = toBase58String(this.bytes)
280280 if (isDefined(getString(this, (dapp + "_address"))))
281281 then WriteSet([DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_updatetime"), lastBlockTime)])
282282 else WriteSet([DataEntry((dapp + "_address"), dapp), DataEntry((dapp + "_balance"), 0), DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_status"), false), DataEntry((dapp + "_updatetime"), lastBlockTime)])
283283 }
284284
285285
286286 @Verifier(tx)
287287 func verify () = match tx {
288288 case t: TransferTransaction =>
289289 if (if (if ((t.assetId != myAssetId))
290290 then (t.feeAssetId != myAssetId)
291291 else false)
292292 then sigVerify(t.bodyBytes, t.proofs[2], ownerPubKey)
293293 else false)
294294 then sigVerify(t.bodyBytes, t.proofs[1], managerPubKey)
295295 else false
296296 case s: SetScriptTransaction =>
297297 if (sigVerify(s.bodyBytes, s.proofs[2], ownerPubKey))
298298 then sigVerify(s.bodyBytes, s.proofs[1], managerPubKey)
299299 else false
300300 case _ =>
301301 false
302302 }
303303

github/deemru/w8io/3ef1775 
116.84 ms