tx · 8EQnoDFmpy47Lmq9Abn9RTpkBwKmcFnGpJpUk71F4V5c

3Mtd2DAziCjgAQ65xHo9VmoY2wKnDPkBrxR:  -0.01000000 Waves

2019.06.21 23:17 [552247] smart account 3Mtd2DAziCjgAQ65xHo9VmoY2wKnDPkBrxR > SELF 0.00000000 Waves

{ "type": 13, "id": "8EQnoDFmpy47Lmq9Abn9RTpkBwKmcFnGpJpUk71F4V5c", "fee": 1000000, "feeAssetId": null, "timestamp": 1561148271972, "version": 1, "sender": "3Mtd2DAziCjgAQ65xHo9VmoY2wKnDPkBrxR", "senderPublicKey": "4L3SLRwgFSh99zt8vLraVsPGnU5U2o2MBUs2uKUCP7N4", "proofs": [ "3VdRJaixe4YG4cyrsFzGKSEd3Wq9RdRN5wMqhSQ1zkr4nAyt4hhrJ56d6vSSiocykehGxx9CpCCP5jrgbhyREE8T" ], "script": "base64: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SWR4VHJhZGVQYWlyCQAAAgAAAAECAAAAM1RyeWluZyB0byBtYXRjaCBvcmRlcnMgZnJvbSBkaWZmZXJlbnQgdHJhZGluZyBwYWlycwMJAAAAAAAAAgkAAZEAAAACBQAAAAZvcmRlcjEFAAAADElkeE9yZGVyVHlwZQkAAZEAAAACBQAAAAZvcmRlcjIFAAAADElkeE9yZGVyVHlwZQkAAAIAAAABAgAAACdUcnlpbmcgdG8gbWF0Y2ggb3JkZXJzIG9mIHRoZSBzYW1lIHR5cGUEAAAADG9yZGVyMWlzU2VsbAkAAAAAAAACCQABkQAAAAIFAAAABm9yZGVyMQUAAAAMSWR4T3JkZXJUeXBlBQAAAARTRUxMBAAAAAlzZWxsT3JkZXIDBQAAAAxvcmRlcjFpc1NlbGwFAAAABm9yZGVyMQUAAAAGb3JkZXIyBAAAAAhidXlPcmRlcgMJAQAAAAEhAAAAAQUAAAAMb3JkZXIxaXNTZWxsBQAAAAZvcmRlcjEFAAAABm9yZGVyMgQAAAAJc2VsbFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAAhJZHhQcmljZQQAAAAIYnV5UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhidXlPcmRlcgUAAAAISWR4UHJpY2UEAAAAD3NlbGxPcmRlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACXNlbGxPcmRlcgUAAAAJSWR4QW1vdW50BAAAAA5idXlPcmRlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGJ1eU9yZGVyBQAAAAlJZHhBbW91bnQDCQAAZgAAAAIFAAAACXNlbGxQcmljZQUAAAAIYnV5UHJpY2UJAAACAAAAAQIAAAAdT3JkZXJzIGFyZSBub3QgbWF0Y2ggYnkgcHJpY2UEAAAADWV4Y2hhbmdlUHJpY2UFAAAACXNlbGxQcmljZQQAAAATYW1vdW50QXNzZXREZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkBAAAABXZhbHVlAAAAAQkBAAAAEWFzc2V0SWRGcm9tU3RyaW5nAAAAAQkAAZEAAAACBQAAAAhidXlPcmRlcgUAAAAKSWR4QXNzZXRJZAAAAAhkZWNpbWFscwQAAAAJYnV5QW1vdW50CQAAaQAAAAIJAABoAAAAAgUAAAAOYnV5T3JkZXJBbW91bnQFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMFAAAADWV4Y2hhbmdlUHJpY2UEAAAACnNlbGxBbW91bnQFAAAAD3NlbGxPcmRlckFtb3VudAQAAAARYW1vdW50QXNzZXRBbW91bnQDCQAAZwAAAAIFAAAACWJ1eUFtb3VudAUAAAAKc2VsbEFtb3VudAUAAAAKc2VsbEFtb3VudAUAAAAJYnV5QW1vdW50BAAAABBwcmljZUFzc2V0QW1vdW50CQAAaAAAAAIFAAAAEWFtb3VudEFzc2V0QW1vdW50BQAAAA1leGNoYW5nZVByaWNlBAAAAA11cGRhdGVkQnV5U3RyCQEAAAASRm9ybWF0T3JkZXJEYXRhU3RyAAAABgkAAZEAAAACBQAAAAhidXlPcmRlcgUAAAAMSWR4VHJhZGVQYWlyCQABkQAAAAIFAAAACGJ1eU9yZGVyBQAAAAlJZHhTZW5kZXIJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAADElkeE9yZGVyVHlwZQUAAAAIYnV5UHJpY2UJAABlAAAAAgUAAAAOYnV5T3JkZXJBbW91bnQFAAAAEHByaWNlQXNzZXRBbW91bnQJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAACklkeEFzc2V0SWQEAAAADnVwZGF0ZWRTZWxsU3RyCQEAAAASRm9ybWF0T3JkZXJEYXRhU3RyAAAABgkAAZEAAAACBQAAAAlzZWxsT3JkZXIFAAAADElkeFRyYWRlUGFpcgkAAZEAAAACBQAAAAlzZWxsT3JkZXIFAAAACUlkeFNlbmRlcgkAAZEAAAACBQAAAAlzZWxsT3JkZXIFAAAADElkeE9yZGVyVHlwZQUAAAAJc2VsbFByaWNlCQAAZQAAAAIFAAAAD3NlbGxPcmRlckFtb3VudAUAAAARYW1vdW50QXNzZXRBbW91bnQJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAApJZHhBc3NldElkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgMJAQAAAAEhAAAAAQUAAAAMb3JkZXIxaXNTZWxsBQAAAAhvcmRlcjFJZAUAAAAIb3JkZXIySWQFAAAADXVwZGF0ZWRCdXlTdHIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIDBQAAAAxvcmRlcjFpc1NlbGwFAAAACG9yZGVyMUlkBQAAAAhvcmRlcjJJZAUAAAAOdXBkYXRlZFNlbGxTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAACUlkeFNlbmRlcgUAAAARYW1vdW50QXNzZXRBbW91bnQJAQAAABFhc3NldElkRnJvbVN0cmluZwAAAAEJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAACklkeEFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAACXNlbGxPcmRlcgUAAAAJSWR4U2VuZGVyBQAAABBwcmljZUFzc2V0QW1vdW50CQEAAAARYXNzZXRJZEZyb21TdHJpbmcAAAABCQABkQAAAAIFAAAACXNlbGxPcmRlcgUAAAAKSWR4QXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAEXJlZ2lzdGVyVHJhaWRQYWlyAAAAAwAAAAZhc3NldDEAAAAKcHJpY2VBc3NldAAAAAl0cmFpZFBhaXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZhc3NldDECAAAAAS8FAAAACnByaWNlQXNzZXQFAAAACXRyYWlkUGFpcgUAAAADbmlsAAAAAGVt++M=", "chainId": 84, "height": 552247, "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 = 0
5+
6+let b = 1
7+
8+let c = 2
9+
10+let d = 3
11+
12+let e = 4
13+
14+let f = 5
15+
16+let g = "BUY"
17+
18+let h = "SELL"
19+
20+func i (j) = if ((size(j) > 0))
21+ then drop(j, 1)
22+ else j
23+
24+
25+func k (l) = {
26+ let m = size(l)
27+ if ((m == 0))
28+ then throw("Parameter size must be greater then 0")
29+ else if ((m > 99))
30+ then throw("Parameter size must be less then 100")
31+ else if ((10 > m))
32+ then (("0" + toString(m)) + l)
33+ else (toString(m) + l)
34+ }
35+
36+
37+func n (j) = {
38+ let m = size(j)
39+ if ((m > 0))
40+ then {
41+ let o = parseIntValue(take(j, 2))
42+ let p = take(drop(j, 2), o)
43+ let q = drop(j, (o + 2))
44+ let r = i(q)
45+[p, r]
46+ }
47+ else throw("Empty string was passed into parseNextAttribute func")
48+ }
49+
50+
51+func s (t,u,v,w,x,y) = {
52+ let z = ((((((((((k(t) + "_") + k(u)) + "_") + k(v)) + "_") + k(toString(w))) + "_") + k(toString(x))) + "_") + k(y))
53+ z
54+ }
55+
56+
57+func A (B) = {
58+ let C = n(B)
59+ let u = n(C[1])
60+ let v = n(u[1])
61+ let w = n(v[1])
62+ let x = n(w[1])
63+ let y = n(x[1])
64+[w[0], x[0], C[0], v[0], u[0], y[0]]
65+ }
66+
67+
68+func D (y) = if (if ((y == "WAVES"))
69+ then true
70+ else (y == ""))
71+ then unit
72+ else fromBase58String(y)
73+
74+
75+@Callable(E)
76+func order (y,w) = {
77+ let F = extract(E.payment)
78+ let G = if (isDefined(F.assetId))
79+ then toBase58String(value(F.assetId))
80+ else "WAVES"
81+ let H = getString(this, ((y + "/") + G))
82+ let I = getString(this, ((G + "/") + y))
83+ let t = if (isDefined(H))
84+ then value(H)
85+ else if (isDefined(I))
86+ then value(I)
87+ else throw("Traiding for that assets is not supported")
88+ let v = if (isDefined(H))
89+ then g
90+ else h
91+ let J = s(t, toBase58String(E.caller.bytes), v, w, F.amount, y)
92+ WriteSet([DataEntry(toBase58String(E.transactionId), J)])
93+ }
94+
95+
96+
97+@Callable(E)
98+func matchOrders (K,L) = {
99+ let M = getStringValue(this, K)
100+ let N = getStringValue(this, L)
101+ let O = A(M)
102+ let P = A(N)
103+ if ((O[c] != P[c]))
104+ then throw("Trying to match orders from different trading pairs")
105+ else if ((O[d] == P[d]))
106+ then throw("Trying to match orders of the same type")
107+ else {
108+ let Q = (O[d] == h)
109+ let R = if (Q)
110+ then O
111+ else P
112+ let S = if (!(Q))
113+ then O
114+ else P
115+ let T = parseIntValue(R[a])
116+ let U = parseIntValue(S[a])
117+ let V = parseIntValue(R[b])
118+ let W = parseIntValue(S[b])
119+ if ((T > U))
120+ then throw("Orders are not match by price")
121+ else {
122+ let X = T
123+ let Y = value(assetInfo(value(D(S[f])))).decimals
124+ let Z = ((W * Y) / X)
125+ let aa = V
126+ let ab = if ((Z >= aa))
127+ then aa
128+ else Z
129+ let ac = (ab * X)
130+ let ad = s(S[c], S[e], S[d], U, (W - ac), S[f])
131+ let ae = s(R[c], R[e], R[d], T, (V - ab), R[f])
132+ ScriptResult(WriteSet([DataEntry(if (!(Q))
133+ then K
134+ else L, ad), DataEntry(if (Q)
135+ then K
136+ else L, ae)]), TransferSet([ScriptTransfer(addressFromStringValue(S[e]), ab, D(S[f])), ScriptTransfer(addressFromStringValue(R[e]), ac, D(R[f]))]))
137+ }
138+ }
139+ }
140+
141+
142+
143+@Callable(E)
144+func registerTraidPair (af,ag,t) = WriteSet([DataEntry(((af + "/") + ag), t)])
145+
146+

github/deemru/w8io/03bedc9 
23.20 ms