tx · 2MDRLv41AwXBD583Pg1Xy5xWnWbcxWnrzDXJvRpSkE8v

3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12:  -0.01400000 Waves

2020.01.22 07:21 [1895480] smart account 3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12 > SELF 0.00000000 Waves

{ "type": 13, "id": "2MDRLv41AwXBD583Pg1Xy5xWnWbcxWnrzDXJvRpSkE8v", "fee": 1400000, "feeAssetId": null, "timestamp": 1579666410076, "version": 1, "sender": "3PA2w9i9GnbKR3HB7XTmwf3DnaFBFcDiP12", "senderPublicKey": "5G9pgymdyBYGnWF3oahQXQNPnVaWEthMkeFRUzHjZ7mX", "proofs": [ "4vYJuua2p6fWdt3bhxF1GBSRe87sfQDvk6886WnXy2BRZmz8JGquiKaNLAP2GSDkYH5JajowX9rnuE9K2KJbxE2g", "4co323vfmt4ckbWah4sv1NbGf2oqsrJDScwactCd8dhjGQrtyJTF7WrDqvqrgDRg7D6YYnC7LtZnTxJntpVnWaBA", "266LrZy8ezQ18XPhbdpaeMNyWcNXX2HUCVche15y9v8K9gfRpBUSogWkD6AgXTgwogbKAgaRLxR8aEpHPXL1F2kF" ], "script": "base64:AAIDAAAAAAAAAA4IARIAEgMKAQESAwoBAQAAAAwAAAAACWFzc2V0TmFtZQIAAAAHUnVzQ29pbgAAAAAHZGVjTXVsdAAAAAAAAAGGoAAAAAAKbG9ja1BlcmlvZAkAAGgAAAACAAAAAAAAKCCoAAAAAAAAAAPoAAAAAAptaW5CYWxhbmNlCQAAaAAAAAIAAAAAAAAAAAEFAAAAB2RlY011bHQAAAAACm1heEJhbGFuY2UJAABoAAAAAgAAAAAAAA9CQAUAAAAHZGVjTXVsdAAAAAAHcHJvdGVjdAUAAAAKbWluQmFsYW5jZQAAAAAJbXlBc3NldElkAQAAACDGcQ47hv7axTPQZZhvofTVQAGfvbf87qkFU76nO/l3FwAAAAALb3duZXJQdWJLZXkBAAAAIBmPdYtQSU3rSuq9j0PlAHRzCaduj+Mn0QqEe7bsOoR3AAAAAA1tYW5hZ2VyUHViS2V5AQAAACDJsM1B9/RlDuG4HIiBzCbhMPVvrk50MxJ3Ud0JPJuMcgAAAAANbGFzdEJsb2NrVGltZQkBAAAAB2V4dHJhY3QAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAAOZnJhbWVTdGFydFRpbWUJAABoAAAAAgkAAGkAAAACBQAAAA1sYXN0QmxvY2tUaW1lBQAAAApsb2NrUGVyaW9kBQAAAApsb2NrUGVyaW9kAQAAAA10b0Zsb2F0U3RyaW5nAAAAAgAAAANudW0AAAAEbXVsdAoBAAAACHNlcGFyYXRlAAAAAgAAAANhY2MAAAADdmFsAwMJAAAAAAAAAgUAAAADYWNjAgAAAAAJAAAAAAAAAgUAAAADdmFsAAAAAAAAAAAABwIAAAAAAwkAAAAAAAACBQAAAANhY2MCAAAAAAkAAaQAAAABBQAAAAN2YWwJAAEsAAAAAgkAASwAAAACBQAAAANhY2MCAAAAASwJAQAAAAl0YWtlUmlnaHQAAAACCQABpAAAAAEJAABkAAAAAgUAAAADdmFsAAAAAAAAAAPoAAAAAAAAAAADBAAAAAJpcAkAAGkAAAACBQAAAANudW0FAAAABG11bHQEAAAAAmZwCQAAagAAAAIFAAAAA251bQUAAAAEbXVsdAQAAAACcTAJAABpAAAAAgUAAAACaXAJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJyMAkAAGoAAAACBQAAAAJpcAkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnExCQAAaQAAAAIFAAAAAnIwCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnIxCQAAagAAAAIFAAAAAnIwCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnEyCQAAaQAAAAIFAAAAAnIxCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJyMgkAAGoAAAACBQAAAAJyMQkAAGgAAAACCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AAAAAAAAAAD6AQAAAACcTMJAABpAAAAAgUAAAACcjIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAJyMwkAAGoAAAACBQAAAAJyMgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnE0CQAAaQAAAAIFAAAAAnIzCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnI0CQAAagAAAAIFAAAAAnIzCQAAaAAAAAIAAAAAAAAAA+gAAAAAAAAAA+gEAAAAAnE1CQAAaQAAAAIFAAAAAnI0AAAAAAAAAAPoBAAAAAJyNQkAAGoAAAACBQAAAAJyNAAAAAAAAAAD6AQAAAACaXMEAAAADSRsaXN0MzIwNDMyNTUJAARMAAAAAgUAAAACcTAJAARMAAAAAgUAAAACcTEJAARMAAAAAgUA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", "chainId": 87, "height": 1895480, "spentComplexity": 0 } View: original | compacted Prev: Rd2dxg6GJ5gxw9PpWmn53Gr3VMcKuxP1juPx3jGZHJh Next: 7EMQgHAewkeKGdMCzQuPcv8z1dYpRxZXh6FZFVzM6WFt Diff:
OldNewDifferences
4646 let r4 = (r3 % (1000 * 1000))
4747 let q5 = (r4 / 1000)
4848 let r5 = (r4 % 1000)
49- ({
50- let $list31963247 = [q0, q1, q2, q3, q4, q5, r5]
51- let $size31963247 = size($list31963247)
52- let $acc031963247 = ""
53- if (($size31963247 == 0))
54- then $acc031963247
49+ 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
5555 else {
56- let $acc131963247 = separate($acc031963247, $list31963247[0])
57- if (($size31963247 == 1))
58- then $acc131963247
56+ let $acc132043255 = separate($acc032043255, $list32043255[0])
57+ if (($size32043255 == 1))
58+ then $acc132043255
5959 else {
60- let $acc231963247 = separate($acc131963247, $list31963247[1])
61- if (($size31963247 == 2))
62- then $acc231963247
60+ let $acc232043255 = separate($acc132043255, $list32043255[1])
61+ if (($size32043255 == 2))
62+ then $acc232043255
6363 else {
64- let $acc331963247 = separate($acc231963247, $list31963247[2])
65- if (($size31963247 == 3))
66- then $acc331963247
64+ let $acc332043255 = separate($acc232043255, $list32043255[2])
65+ if (($size32043255 == 3))
66+ then $acc332043255
6767 else {
68- let $acc431963247 = separate($acc331963247, $list31963247[3])
69- if (($size31963247 == 4))
70- then $acc431963247
68+ let $acc432043255 = separate($acc332043255, $list32043255[3])
69+ if (($size32043255 == 4))
70+ then $acc432043255
7171 else {
72- let $acc531963247 = separate($acc431963247, $list31963247[4])
73- if (($size31963247 == 5))
74- then $acc531963247
72+ let $acc532043255 = separate($acc432043255, $list32043255[4])
73+ if (($size32043255 == 5))
74+ then $acc532043255
7575 else {
76- let $acc631963247 = separate($acc531963247, $list31963247[5])
77- if (($size31963247 == 6))
78- then $acc631963247
76+ let $acc632043255 = separate($acc532043255, $list32043255[5])
77+ if (($size32043255 == 6))
78+ then $acc632043255
7979 else {
80- let $acc731963247 = separate($acc631963247, $list31963247[6])
81- if (($size31963247 == 7))
82- then $acc731963247
80+ let $acc732043255 = separate($acc632043255, $list32043255[6])
81+ if (($size32043255 == 7))
82+ then $acc732043255
8383 else {
84- let $acc831963247 = separate($acc731963247, $list31963247[7])
84+ let $acc832043255 = separate($acc732043255, $list32043255[7])
8585 throw("List size exceed 7")
8686 }
8787 }
9191 }
9292 }
9393 }
94- } + {
94+ }
95+ ((if ((is == ""))
96+ then "0"
97+ else is) + {
9598 let fs = take(drop((toString((fp + mult)) + "00000000"), 1), 8)
9699 let f0 = if ((takeRight(fs, 1) == "0"))
97100 then dropRight(fs, 1)
126129
127130 @Callable(inv)
128131 func deposit () = {
129- let attPayment = extract(inv.payment)
130- if (!(isDefined(attPayment)))
131- then throw((("There is no attached payment " + assetName) + "."))
132- else if ((attPayment.assetId != myAssetId))
133- then throw((("Only " + assetName) + " is allowed to deposit."))
134- else {
135- let dapp = toBase58String(this.bytes)
136- let sumTotal = getIntegerValue(this, (dapp + "_balance"))
137- let client = toBase58String(inv.caller.bytes)
138- let isActive = match getBoolean(this, (client + "_status")) {
139- case x: Boolean =>
140- x
141- case _ =>
142- false
143- }
144- let updateTime = match getInteger(this, (client + "_updatetime")) {
132+ let attPayment = if (isDefined(inv.payment))
133+ then extract(inv.payment)
134+ else throw((("There is no attached payment " + assetName) + "."))
135+ if ((attPayment.assetId != myAssetId))
136+ then throw((("Only " + assetName) + " is allowed to deposit."))
137+ else {
138+ let dapp = toBase58String(this.bytes)
139+ let sumTotal = getIntegerValue(this, (dapp + "_balance"))
140+ let client = toBase58String(inv.caller.bytes)
141+ let isActive = match getBoolean(this, (client + "_status")) {
142+ case x: Boolean =>
143+ x
144+ case _ =>
145+ false
146+ }
147+ let updateTime = match getInteger(this, (client + "_updatetime")) {
148+ case x: Int =>
149+ x
150+ case _ =>
151+ 0
152+ }
153+ let isOlder = (frameStartTime >= updateTime)
154+ let balance = if (if (!(isActive))
155+ then isOlder
156+ else false)
157+ then 0
158+ else match getInteger(this, (client + "_balance")) {
145159 case x: Int =>
146160 x
147161 case _ =>
148162 0
149163 }
150- let isOlder = (frameStartTime >= updateTime)
151- let balance = if (if (!(isActive))
152- then isOlder
153- else false)
154- then 0
155- else match getInteger(this, (client + "_balance")) {
156- case x: Int =>
157- x
158- case _ =>
159- 0
160- }
161- let amount = extract(attPayment.amount)
162- let newBalance = if (!(isActive))
163- then amount
164- else (balance + amount)
165- if (if ((minBalance > newBalance))
166- then true
167- else (newBalance > maxBalance))
168- then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
169- else {
170- let newStartTime = {
171- let startTime = if (if (!(isActive))
164+ let amount = extract(attPayment.amount)
165+ let newBalance = if (!(isActive))
166+ then amount
167+ else (balance + amount)
168+ if (if ((minBalance > newBalance))
169+ then true
170+ else (newBalance > maxBalance))
171+ then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
172+ else {
173+ let newStartTime = {
174+ let startTime = if (if (!(isActive))
175+ then isOlder
176+ else false)
177+ then lastBlockTime
178+ else if (if (isActive)
172179 then isOlder
173180 else false)
174- then lastBlockTime
175- else if (if (isActive)
176- then isOlder
177- else false)
178- then frameStartTime
179- else match getInteger(this, (client + "_starttime")) {
180- case x: Int =>
181- if (isActive)
182- then x
183- else (x + (lastBlockTime - updateTime))
184- case _ =>
185- 0
186- }
187- let sumBalance = (newBalance / protect)
188- (fraction(startTime, (balance / protect), sumBalance) + fraction(lastBlockTime, ((newBalance - balance) / protect), sumBalance))
189- }
190- if (isActive)
191- then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
192- else if (isDefined(getString(this, (client + "_address"))))
193- then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
194- 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)])
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))
195192 }
196- }
193+ if (isActive)
194+ then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
195+ else if (isDefined(getString(this, (client + "_address"))))
196+ then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
197+ 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)])
198+ }
199+ }
197200 }
198201
199202
274277 then throw("Please don't attach payment when setting up minStake.")
275278 else {
276279 let dapp = toBase58String(this.bytes)
277- let adrBalance = assetBalance(this, myAssetId)
278280 if (isDefined(getString(this, (dapp + "_address"))))
279281 then WriteSet([DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_updatetime"), lastBlockTime)])
280- else WriteSet([DataEntry((dapp + "_address"), dapp), DataEntry((dapp + "_balance"), adrBalance), DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_status"), false), DataEntry((dapp + "_updatetime"), lastBlockTime)])
282+ else WriteSet([DataEntry((dapp + "_address"), dapp), DataEntry((dapp + "_balance"), 0), DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_status"), false), DataEntry((dapp + "_updatetime"), lastBlockTime)])
281283 }
282284
283285
284286 @Verifier(tx)
285287 func verify () = match tx {
286- case a: CreateAliasTransaction =>
287- sigVerify(a.bodyBytes, a.proofs[0], a.senderPublicKey)
288288 case t: TransferTransaction =>
289289 if (if (if ((t.assetId != myAssetId))
290290 then (t.feeAssetId != 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
1414 let protect = 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)
49- ({
50- let $list31963247 = [q0, q1, q2, q3, q4, q5, r5]
51- let $size31963247 = size($list31963247)
52- let $acc031963247 = ""
53- if (($size31963247 == 0))
54- then $acc031963247
49+ 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
5555 else {
56- let $acc131963247 = separate($acc031963247, $list31963247[0])
57- if (($size31963247 == 1))
58- then $acc131963247
56+ let $acc132043255 = separate($acc032043255, $list32043255[0])
57+ if (($size32043255 == 1))
58+ then $acc132043255
5959 else {
60- let $acc231963247 = separate($acc131963247, $list31963247[1])
61- if (($size31963247 == 2))
62- then $acc231963247
60+ let $acc232043255 = separate($acc132043255, $list32043255[1])
61+ if (($size32043255 == 2))
62+ then $acc232043255
6363 else {
64- let $acc331963247 = separate($acc231963247, $list31963247[2])
65- if (($size31963247 == 3))
66- then $acc331963247
64+ let $acc332043255 = separate($acc232043255, $list32043255[2])
65+ if (($size32043255 == 3))
66+ then $acc332043255
6767 else {
68- let $acc431963247 = separate($acc331963247, $list31963247[3])
69- if (($size31963247 == 4))
70- then $acc431963247
68+ let $acc432043255 = separate($acc332043255, $list32043255[3])
69+ if (($size32043255 == 4))
70+ then $acc432043255
7171 else {
72- let $acc531963247 = separate($acc431963247, $list31963247[4])
73- if (($size31963247 == 5))
74- then $acc531963247
72+ let $acc532043255 = separate($acc432043255, $list32043255[4])
73+ if (($size32043255 == 5))
74+ then $acc532043255
7575 else {
76- let $acc631963247 = separate($acc531963247, $list31963247[5])
77- if (($size31963247 == 6))
78- then $acc631963247
76+ let $acc632043255 = separate($acc532043255, $list32043255[5])
77+ if (($size32043255 == 6))
78+ then $acc632043255
7979 else {
80- let $acc731963247 = separate($acc631963247, $list31963247[6])
81- if (($size31963247 == 7))
82- then $acc731963247
80+ let $acc732043255 = separate($acc632043255, $list32043255[6])
81+ if (($size32043255 == 7))
82+ then $acc732043255
8383 else {
84- let $acc831963247 = separate($acc731963247, $list31963247[7])
84+ let $acc832043255 = separate($acc732043255, $list32043255[7])
8585 throw("List size exceed 7")
8686 }
8787 }
8888 }
8989 }
9090 }
9191 }
9292 }
9393 }
94- } + {
94+ }
95+ ((if ((is == ""))
96+ then "0"
97+ else is) + {
9598 let fs = take(drop((toString((fp + mult)) + "00000000"), 1), 8)
9699 let f0 = if ((takeRight(fs, 1) == "0"))
97100 then dropRight(fs, 1)
98101 else fs
99102 let f1 = if ((takeRight(f0, 1) == "0"))
100103 then dropRight(f0, 1)
101104 else f0
102105 let f2 = if ((takeRight(f1, 1) == "0"))
103106 then dropRight(f1, 1)
104107 else f1
105108 let f3 = if ((takeRight(f2, 1) == "0"))
106109 then dropRight(f2, 1)
107110 else f2
108111 let f4 = if ((takeRight(f3, 1) == "0"))
109112 then dropRight(f3, 1)
110113 else f3
111114 let f5 = if ((takeRight(f4, 1) == "0"))
112115 then dropRight(f4, 1)
113116 else f4
114117 let f6 = if ((takeRight(f5, 1) == "0"))
115118 then dropRight(f5, 1)
116119 else f5
117120 let f7 = if ((takeRight(f6, 1) == "0"))
118121 then dropRight(f6, 1)
119122 else f6
120123 if ((f7 == ""))
121124 then ""
122125 else ("." + f7)
123126 })
124127 }
125128
126129
127130 @Callable(inv)
128131 func deposit () = {
129- let attPayment = extract(inv.payment)
130- if (!(isDefined(attPayment)))
131- then throw((("There is no attached payment " + assetName) + "."))
132- else if ((attPayment.assetId != myAssetId))
133- then throw((("Only " + assetName) + " is allowed to deposit."))
134- else {
135- let dapp = toBase58String(this.bytes)
136- let sumTotal = getIntegerValue(this, (dapp + "_balance"))
137- let client = toBase58String(inv.caller.bytes)
138- let isActive = match getBoolean(this, (client + "_status")) {
139- case x: Boolean =>
140- x
141- case _ =>
142- false
143- }
144- let updateTime = match getInteger(this, (client + "_updatetime")) {
132+ let attPayment = if (isDefined(inv.payment))
133+ then extract(inv.payment)
134+ else throw((("There is no attached payment " + assetName) + "."))
135+ if ((attPayment.assetId != myAssetId))
136+ then throw((("Only " + assetName) + " is allowed to deposit."))
137+ else {
138+ let dapp = toBase58String(this.bytes)
139+ let sumTotal = getIntegerValue(this, (dapp + "_balance"))
140+ let client = toBase58String(inv.caller.bytes)
141+ let isActive = match getBoolean(this, (client + "_status")) {
142+ case x: Boolean =>
143+ x
144+ case _ =>
145+ false
146+ }
147+ let updateTime = match getInteger(this, (client + "_updatetime")) {
148+ case x: Int =>
149+ x
150+ case _ =>
151+ 0
152+ }
153+ let isOlder = (frameStartTime >= updateTime)
154+ let balance = if (if (!(isActive))
155+ then isOlder
156+ else false)
157+ then 0
158+ else match getInteger(this, (client + "_balance")) {
145159 case x: Int =>
146160 x
147161 case _ =>
148162 0
149163 }
150- let isOlder = (frameStartTime >= updateTime)
151- let balance = if (if (!(isActive))
152- then isOlder
153- else false)
154- then 0
155- else match getInteger(this, (client + "_balance")) {
156- case x: Int =>
157- x
158- case _ =>
159- 0
160- }
161- let amount = extract(attPayment.amount)
162- let newBalance = if (!(isActive))
163- then amount
164- else (balance + amount)
165- if (if ((minBalance > newBalance))
166- then true
167- else (newBalance > maxBalance))
168- then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
169- else {
170- let newStartTime = {
171- let startTime = if (if (!(isActive))
164+ let amount = extract(attPayment.amount)
165+ let newBalance = if (!(isActive))
166+ then amount
167+ else (balance + amount)
168+ if (if ((minBalance > newBalance))
169+ then true
170+ else (newBalance > maxBalance))
171+ then throw((((((((("The minimum allowable balance is " + toFloatString(minBalance, decMult)) + " ") + assetName) + ", and the maximum is ") + toFloatString(maxBalance, decMult)) + " ") + assetName) + "."))
172+ else {
173+ let newStartTime = {
174+ let startTime = if (if (!(isActive))
175+ then isOlder
176+ else false)
177+ then lastBlockTime
178+ else if (if (isActive)
172179 then isOlder
173180 else false)
174- then lastBlockTime
175- else if (if (isActive)
176- then isOlder
177- else false)
178- then frameStartTime
179- else match getInteger(this, (client + "_starttime")) {
180- case x: Int =>
181- if (isActive)
182- then x
183- else (x + (lastBlockTime - updateTime))
184- case _ =>
185- 0
186- }
187- let sumBalance = (newBalance / protect)
188- (fraction(startTime, (balance / protect), sumBalance) + fraction(lastBlockTime, ((newBalance - balance) / protect), sumBalance))
189- }
190- if (isActive)
191- then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
192- else if (isDefined(getString(this, (client + "_address"))))
193- then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
194- 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)])
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))
195192 }
196- }
193+ if (isActive)
194+ then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_updatetime"), lastBlockTime)])
195+ else if (isDefined(getString(this, (client + "_address"))))
196+ then WriteSet([DataEntry((dapp + "_balance"), (sumTotal + amount)), DataEntry((client + "_balance"), newBalance), DataEntry((client + "_starttime"), newStartTime), DataEntry((client + "_status"), true), DataEntry((client + "_updatetime"), lastBlockTime)])
197+ 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)])
198+ }
199+ }
197200 }
198201
199202
200203
201204 @Callable(inv)
202205 func withdraw (RSCx100000) = if (isDefined(inv.payment))
203206 then throw("Please don't attach payment when withdrawing funds.")
204207 else {
205208 let dapp = toBase58String(this.bytes)
206209 let sumTotal = getIntegerValue(this, (dapp + "_balance"))
207210 let minStake = getIntegerValue(this, (dapp + "_starttime"))
208211 let client = toBase58String(inv.caller.bytes)
209212 let isActive = match getBoolean(this, (client + "_status")) {
210213 case x: Boolean =>
211214 x
212215 case _ =>
213216 false
214217 }
215218 let updateTime = match getInteger(this, (client + "_updatetime")) {
216219 case x: Int =>
217220 x
218221 case _ =>
219222 0
220223 }
221224 let isOlder = (frameStartTime >= updateTime)
222225 let balance = if (!(isActive))
223226 then 0
224227 else match getInteger(this, (client + "_balance")) {
225228 case x: Int =>
226229 x
227230 case _ =>
228231 0
229232 }
230233 let expiration = (updateTime + lockPeriod)
231234 let amount = if ((RSCx100000 != 0))
232235 then RSCx100000
233236 else balance
234237 if (if (if ((minStake >= 0))
235238 then (balance >= minStake)
236239 else false)
237240 then (expiration >= lastBlockTime)
238241 else false)
239242 then throw((("Unable to withdraw coins! The account is locked for up to " + toString((expiration / 1000))) + " Unix timestamp..."))
240243 else if ((0 >= amount))
241244 then throw("It's impossible to withdraw a negative amount or no balance.")
242245 else if ((amount > balance))
243246 then throw((((((("It's impossible to withdraw more than the remainder: " + toString(balance)) + " (") + toFloatString(balance, decMult)) + " ") + assetName) + ")."))
244247 else {
245248 let newBalance = (balance - amount)
246249 let newStartTime = {
247250 let startTime = if (isOlder)
248251 then frameStartTime
249252 else match getInteger(this, (client + "_starttime")) {
250253 case x: Int =>
251254 x
252255 case _ =>
253256 0
254257 }
255258 let sumBalance = (newBalance / protect)
256259 if ((minBalance > newBalance))
257260 then startTime
258261 else (fraction(startTime, (balance / protect), sumBalance) - fraction(lastBlockTime, (amount / protect), sumBalance))
259262 }
260263 if ((newBalance >= minBalance))
261264 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)]))
262265 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)]))
263266 }
264267 }
265268
266269
267270
268271 @Callable(inv)
269272 func setMinStake (RSCx100000) = if (if ((inv.callerPublicKey != ownerPubKey))
270273 then (inv.callerPublicKey != managerPubKey)
271274 else false)
272275 then throw("Only an administrator can set or modify minStake!")
273276 else if (isDefined(inv.payment))
274277 then throw("Please don't attach payment when setting up minStake.")
275278 else {
276279 let dapp = toBase58String(this.bytes)
277- let adrBalance = assetBalance(this, myAssetId)
278280 if (isDefined(getString(this, (dapp + "_address"))))
279281 then WriteSet([DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_updatetime"), lastBlockTime)])
280- else WriteSet([DataEntry((dapp + "_address"), dapp), DataEntry((dapp + "_balance"), adrBalance), DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_status"), false), DataEntry((dapp + "_updatetime"), lastBlockTime)])
282+ else WriteSet([DataEntry((dapp + "_address"), dapp), DataEntry((dapp + "_balance"), 0), DataEntry((dapp + "_starttime"), RSCx100000), DataEntry((dapp + "_status"), false), DataEntry((dapp + "_updatetime"), lastBlockTime)])
281283 }
282284
283285
284286 @Verifier(tx)
285287 func verify () = match tx {
286- case a: CreateAliasTransaction =>
287- sigVerify(a.bodyBytes, a.proofs[0], a.senderPublicKey)
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 
91.10 ms