tx · 94tS4VyfPyyERfzWecGPW1QypcWYsYhgUQKLjA3PCg9b

3MuS4r8pmPgWtPUELVf5KQSbFEDm4onekhm:  -0.01400000 Waves

2019.07.07 10:30 [574877] smart account 3MuS4r8pmPgWtPUELVf5KQSbFEDm4onekhm > SELF 0.00000000 Waves

{ "type": 13, "id": "94tS4VyfPyyERfzWecGPW1QypcWYsYhgUQKLjA3PCg9b", "fee": 1400000, "feeAssetId": null, "timestamp": 1562484637757, "version": 1, "sender": "3MuS4r8pmPgWtPUELVf5KQSbFEDm4onekhm", "senderPublicKey": "HXDy5uRoGt1XsnKXugQ2NRyeuzEtu8Br1K2J358Qh7GJ", "proofs": [ "4aRoZYJbtB5fBvEepChHPpLdZfV9Ufa5gsAdRcAV7jXrn9rf7e8P8jfqE5WQ3k4aNvHLzP5DcQecDXEvEWRVwzex" ], "script": "base64:AAIDAAAAAAAAAAAAAAAWAAAAAA1jdXN0b21Bc3NldElkAQAAACCh61lCfU5WhBDP9acQPgEwLdkUHVmC8d9CNSjqrqkuqAAAAAAOb3duZXJQdWJsaWNLZXkBAAAAIC/o0cJKIlrFIsxIvY9ia6uhtZwkiJ+SbGrYjHqsisVdAAAAAAxvd25lckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAADm93bmVyUHVibGljS2V5AAAAABJvd25lckFkZHJlc3NTdHJpbmcCAAAAIzNNdnFER21YOXhOMnFZMjFLeWNOM2lzWmJudUtvY20yc21iAAAAABFhY2NvdW50VGhhdEFsbG93cwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVMYbTDAWhUaVMk5pP6sw+hs730/Z1xCPOwAAAAALYXNzZXREaWdpdHMAAAAAAAAPQkAAAAAAEHN1bUFjY291bnRBc3NldHMAAAAAAlQL5AAAAAAADGlzc3VlckFzc2V0cwAAAAAAAAAAAAAAAAAKc3RhcnRCbG9jawAAAAAAAAjFmAAAAAASaW5jcmVhc2VQcmljZUJsb2NrAAAAAAAACRihAAAAAAhlbmRCbG9jawAAAAAAAAkYoQAAAAAFcHJpY2UAAAAAAACYloAAAAAAC3ByaWNlU2Vjb25kAAAAAAAAmJaAAAAAAA1zb2Z0Q2FwQW1vdW50AAAAAAJUC+QAAAAAAA1oYXJkQ2FwQW1vdW50AAAAABdIdugAAAAAABJrZXlTdW1BbW91bnRQcmVmaXgCAAAACnN1bUFtb3VudCAAAAAAFmtleVN1bVBhaWRBbW91bnRQcmVmaXgCAAAAC3BhaWRBbW91bnQgAAAAABJrZXlTdW1Bc3NldHNQcmVmaXgCAAAACnN1bUFzc2V0cyAAAAAAFWtleUFsbG93QWNjb3VudFByZWZpeAIAAAAGYWxsb3cgAAAAABNrZXlTdW1BY2NvdW50QXNzZXRzAgAAAAZhc3NldHMAAAAAC2tleVN1bVdhdmVzAgAAAAV3YXZlcwAAAAAJa2V5SXNzdWVyAgAAAAZpc3N1ZXIAAAACAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAxjdXJyZW50UHJpY2UDCQAAZgAAAAIFAAAAEmluY3JlYXNlUHJpY2VCbG9jawUA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cmVudEFtb3VudAUAAAAHcGF5bWVudAQAAAANY3VycmVudEFzc2V0cwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAEmtleVN1bUFzc2V0c1ByZWZpeAUAAAAKY3VycmVudEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAluZXdBc3NldHMJAABkAAAAAgUAAAANY3VycmVudEFzc2V0cwkAAGkAAAACCQAAaAAAAAIFAAAAB3BheW1lbnQFAAAAC2Fzc2V0RGlnaXRzBQAAAAxjdXJyZW50UHJpY2UEAAAAEG5ld0FjY291bnRBc3NldHMJAABlAAAAAgUAAAANYWNjb3VudEFzc2V0cwkAAGkAAAACCQAAaAAAAAIFAAAAB3BheW1lbnQFAAAAC2Fzc2V0RGlnaXRzBQAAAAxjdXJyZW50UHJpY2UEAAAAEG5ld0FjY291bnRBbW91bnQJAABkAAAAAgUAAAANYWNjb3VudEFtb3VudAUAAAAHcGF5bWVudAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAABJrZXlTdW1BbW91bnRQcmVmaXgFAAAACmN1cnJlbnRLZXkFAAAACW5ld0Ftb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAABJrZXlTdW1Bc3NldHNQcmVmaXgFAAAACmN1cnJlbnRLZXkFAAAACW5ld0Fzc2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAATa2V5U3VtQWNjb3VudEFzc2V0cwUAAAAQbmV3QWNjb3VudEFzc2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAALa2V5U3VtV2F2ZXMFAAAAEG5ld0FjY291bnRBbW91bnQFAAAAA25pbAAAAAFpAQAAAAp3aXRoZHJhd2FsAAAAAAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1jdXJyZW50QXNzZXRzBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRo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", "chainId": 84, "height": 574877, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = base58'Bu4nQfckv32T8pmX3Ny1WQxqgxVMjpu7T3wKUFCsrhsD'
5+
6+let b = base58'4E24yBrgFveBn1WuAxE2Rhwy8454G1jCUkE3to4cYEWG'
7+
8+let c = addressFromPublicKey(b)
9+
10+let d = "3MvqDGmX9xN2qY21KycN3isZbnuKocm2smb"
11+
12+let e = Address(base58'3N7yaGaFS8BvgRrc9trhNy7v5H4qCcxW3Fp')
13+
14+let f = 1000000
15+
16+let g = 10000000000
17+
18+let h = 0
19+
20+let i = 574872
21+
22+let j = 596129
23+
24+let k = 596129
25+
26+let l = 10000000
27+
28+let m = 10000000
29+
30+let n = 10000000000
31+
32+let o = 100000000000
33+
34+let p = "sumAmount "
35+
36+let q = "paidAmount "
37+
38+let r = "sumAssets "
39+
40+let s = "allow "
41+
42+let t = "assets"
43+
44+let u = "waves"
45+
46+let v = "issuer"
47+
48+@Callable(w)
49+func deposit () = {
50+ let x = if ((j > height))
51+ then l
52+ else m
53+ let y = {
54+ let z = getInteger(this, u)
55+ if ($isInstanceOf(z, "Int"))
56+ then {
57+ let A = z
58+ A
59+ }
60+ else 0
61+ }
62+ if ((i > height))
63+ then throw(((("The Tokensale works between " + toString(i)) + " and ") + toString(k)))
64+ else if (if ((height > k))
65+ then true
66+ else (y >= o))
67+ then throw("The required amount has already been accumulated. If you are an investor, you can withdraw your funds.")
68+ else {
69+ let B = {
70+ let z = w.payment
71+ if ($isInstanceOf(z, "AttachedPayment"))
72+ then {
73+ let C = z
74+ let D = C.assetId
75+ if ($isInstanceOf(D, "ByteVector"))
76+ then {
77+ let E = D
78+ throw("Waves only")
79+ }
80+ else C.amount
81+ }
82+ else throw("Payment must be attached")
83+ }
84+ if ((x > B))
85+ then throw((("Minimum payment is " + toString(x)) + " wavelet"))
86+ else {
87+ let F = toBase58String(w.caller.bytes)
88+ let G = {
89+ let z = getBoolean(e, (s + F))
90+ if ($isInstanceOf(z, "Boolean"))
91+ then {
92+ let A = z
93+ A
94+ }
95+ else false
96+ }
97+ if ((G == false))
98+ then throw("Your account has no right to send funds.")
99+ else {
100+ let H = {
101+ let z = getInteger(this, t)
102+ if ($isInstanceOf(z, "Int"))
103+ then {
104+ let A = z
105+ A
106+ }
107+ else g
108+ }
109+ if ((0 > (H - ((B * f) / x))))
110+ then throw((("Payment is too big. Maximum possible payment is " + toString(((H * x) / f))) + " wavelet"))
111+ else {
112+ let I = {
113+ let z = getInteger(this, (p + F))
114+ if ($isInstanceOf(z, "Int"))
115+ then {
116+ let A = z
117+ A
118+ }
119+ else 0
120+ }
121+ let J = (I + B)
122+ let K = {
123+ let z = getInteger(this, (r + F))
124+ if ($isInstanceOf(z, "Int"))
125+ then {
126+ let A = z
127+ A
128+ }
129+ else 0
130+ }
131+ let L = (K + ((B * f) / x))
132+ let M = (H - ((B * f) / x))
133+ let N = (y + B)
134+ WriteSet([DataEntry((p + F), J), DataEntry((r + F), L), DataEntry(t, M), DataEntry(u, N)])
135+ }
136+ }
137+ }
138+ }
139+ }
140+
141+
142+
143+@Callable(w)
144+func withdrawal () = {
145+ let F = toBase58String(w.caller.bytes)
146+ let K = {
147+ let z = getInteger(this, (r + F))
148+ if ($isInstanceOf(z, "Int"))
149+ then {
150+ let A = z
151+ A
152+ }
153+ else 0
154+ }
155+ let I = {
156+ let z = getInteger(this, (p + F))
157+ if ($isInstanceOf(z, "Int"))
158+ then {
159+ let A = z
160+ A
161+ }
162+ else 0
163+ }
164+ let y = {
165+ let z = getInteger(this, u)
166+ if ($isInstanceOf(z, "Int"))
167+ then {
168+ let A = z
169+ A
170+ }
171+ else 0
172+ }
173+ let H = {
174+ let z = getInteger(this, t)
175+ if ($isInstanceOf(z, "Int"))
176+ then {
177+ let A = z
178+ A
179+ }
180+ else 0
181+ }
182+ if (!(if ((height > k))
183+ then true
184+ else (y >= o)))
185+ then throw(("The Tokensale end on block " + toString(k)))
186+ else if (if ((F == d))
187+ then (y >= n)
188+ else false)
189+ then {
190+ let O = {
191+ let z = getInteger(this, v)
192+ if ($isInstanceOf(z, "Int"))
193+ then {
194+ let A = z
195+ A
196+ }
197+ else 0
198+ }
199+ if ((O == 0))
200+ then ScriptResult(WriteSet([DataEntry(v, (H + h))]), TransferSet([ScriptTransfer(c, (H + h), a), ScriptTransfer(c, y, unit)]))
201+ else throw("The issuer has already taken its share!")
202+ }
203+ else if ((I == 0))
204+ then throw("Don't have money")
205+ else if ((y >= n))
206+ then ScriptResult(WriteSet([DataEntry((p + F), 0), DataEntry((r + F), 0)]), TransferSet([ScriptTransfer(w.caller, K, a)]))
207+ else ScriptResult(WriteSet([DataEntry((p + F), 0), DataEntry((r + F), 0)]), TransferSet([ScriptTransfer(w.caller, I, unit)]))
208+ }
209+
210+
211+@Verifier(P)
212+func Q () = {
213+ let z = P
214+ false
215+ }
216+

github/deemru/w8io/026f985 
17.09 ms