tx · 3kPjwHSdoq3L1w8q1y1ayWfjiH9StXL3KmK3qo5T21uJ

3MpBKNSG25gK9fufNK3tjRAnpD83mXYZog6:  -0.01400000 Waves

2019.10.05 11:56 [706226] smart account 3MpBKNSG25gK9fufNK3tjRAnpD83mXYZog6 > SELF 0.00000000 Waves

{ "type": 13, "id": "3kPjwHSdoq3L1w8q1y1ayWfjiH9StXL3KmK3qo5T21uJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1570265725388, "version": 1, "sender": "3MpBKNSG25gK9fufNK3tjRAnpD83mXYZog6", "senderPublicKey": "qqthrzfmAnD7FmWuFzzm3FbACout7pi6sYqHmXc2Hyc", "proofs": [ "5nKH9WfQfBATRnhZeX5rV7PapWhH9DrN5upu68uYr8kL3tMtAZKyzEge2AoSBRQ9brrUGeUFMQ7AmMTfcFRGuZ39" ], "script": "base64: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cmVmQW1vdW50BQAAAAhjYXNoQmFjawAAAAAAAAAD6AkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAMFAAAADXdpbm5lckFkZHJlc3MFAAAAEGJldEFzc2V0TW5lbW9uaWMFAAAAC2luY0Nhc2hCYWNrCQAETAAAAAIJAQAAABZyZWNvcmRCYWxhbmNlSW5jcmVtZW50AAAABwUAAAANd2lubmVyQWRkcmVzcwUAAAAQYmV0QXNzZXRNbmVtb25pYwUAAAANd2lubmVyQWRkcmVzcwUAAAALaW5jQ2FzaEJhY2sCAAAACGNhc2hiYWNrBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAEGJhbGFuY2VJbmNyZW1lbnQAAAADBQAAAARyZWYxBQAAABBiZXRBc3NldE1uZW1vbmljBQAAAAlpbmNMZXZlbDEJAARMAAAAAgkBAAAAFnJlY29yZEJhbGFuY2VJbmNyZW1lbnQAAAAHBQAAAARyZWYxBQAAABBiZXRBc3NldE1uZW1vbmljBQAAAA13aW5uZXJBZGRyZXNzBQAAAAlpbmNMZXZlbDECAAAAAmwxBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAEAAAAByRtYXRjaDEJAQAAAApnZXRSZWZlcmVyAAAAAQUAAAAEcmVmMQMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAAGU3RyaW5nBAAAAARyZWYyBQAAAAckbWF0Y2gxBAAAAAlpbmNMZXZlbDIJAABpAAAAAgkAAGgAAAACBQAAAAlyZWZBbW91bnQFAAAABmxldmVsMgAAAAAAAAAD6AkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAMFAAAABHJlZjIFAAAAEGJldEFzc2V0TW5lbW9uaWMFAAAACWluY0xldmVsMgkABEwAAAACCQEAAAAWcmVjb3JkQmFsYW5jZUluY3JlbWVudAAAAAcFAAAABHJlZjIFAAAAEGJldEFzc2V0TW5lbW9uaWMFAAAADXdpbm5lckFkZHJlc3MFAAAACWluY0xldmVsMgIAAAACbDIFAAAABHR4aWQFAAAACXRpbWVzdGFtcAQAAAAHJG1hdGNoMgkBAAAACmdldFJlZmVyZXIAAAABBQAAAARyZWYyCQAETAAAAAIJAQAAABBiYWxhbmNlSW5jcmVtZW50AAAAAwUAAAANY2hhbmdlQWRkcmVzcwUAAAAQYmV0QXNzZXRNbmVtb25pYwkAAGUAAAACCQAAZQAAAAIFAAAACXJlZkFtb3VudAUAAAAJaW5jTGV2ZWwxBQAAAAlpbmNMZXZlbDIJAARMAAAAAgkBAAAAFnJlY29yZEJhbGFuY2VJbmNyZW1lbnQAAAAHBQAAAA1jaGFuZ2VBZGRyZXNzBQAAABBiZXRBc3NldE1uZW1vbmljBQAAAA13aW5uZXJBZGRyZXNzCQAAZQAAAAIJAABlAAAAAgUAAAAJcmVmQW1vdW50BQAAAAlpbmNMZXZlbDEFAAAACWluY0xldmVsMgIAAAAGY2hhbmdlBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAFAAAAA25pbAkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAMFAAAADWNoYW5nZUFkZHJlc3MFAAAAEGJldEFzc2V0TW5lbW9uaWMJAABlAAAAAgUAAAAJcmVmQW1vdW50BQAAAAlpbmNMZXZlbDEJAARMAAAAAgkBAAAAFnJlY29yZEJhbGFuY2VJbmNyZW1lbnQAAAAHBQAAAA1jaGFuZ2VBZGRyZXNzBQAAABBiZXRBc3NldE1uZW1vbmljBQAAAA13aW5uZXJBZGRyZXNzCQAAZQAAAAIFAAAACXJlZkFtb3VudAUAAAAJaW5jTGV2ZWwxAgAAAAZjaGFuZ2UFAAAABHR4aWQFAAAACXRpbWVzdGFtcAUAAAADbmlsCQAETAAAAAIJAQAAABBiYWxhbmNlSW5jcmVtZW50AAAAAwUAAAANY2hhbmdlQWRkcmVzcwUAAAAQYmV0QXNzZXRNbmVtb25pYwUAAAAJcmVmQW1vdW50CQAETAAAAAIJAQAAABZyZWNvcmRCYWxhbmNlSW5jcmVtZW50AAAABwUAAAANY2hhbmdlQWRkcmVzcwUAAAAQYmV0QXNzZXRNbmVtb25pYwUAAAANd2lubmVyQWRkcmVzcwUAAAAJcmVmQW1vdW50AgAAAAZjaGFuZ2UFAAAABHR4aWQFAAAACXRpbWVzdGFtcAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFp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", "chainId": 84, "height": 706226, "spentComplexity": 0 } View: original | compacted Prev: ASMBngEuo9NLAjqWth2yJHqAqDq3Tmv6i9uCt6FEA6a7 Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = [DataEntry("sportr", "AcTzTgW1QbJK4Qu6hCsUCLjpxUyD3dofv8xq2CAPbzKJ"), DataEntry("dex", "WAVES")]
4+let a = [DataEntry("sportr", "Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck"), DataEntry("dex", "WAVES")]
55
6-let b = addressFromStringValue("3NCN79gCSaKTFV6fDoEzELoxDMrAUTCekd5")
6+let b = [DataEntry("sportr", "USD"), DataEntry("dex", "WAVES")]
77
8-let c = 5000000
8+let c = [DataEntry("USD", 2), DataEntry("WAVES", 8), DataEntry("BTC", 8), DataEntry("VST", 8)]
99
10-let d = 5000000
10+let d = addressFromStringValue("3P69jzek6S2q7kGWScEEZaNxKL5TiSF7wGm")
1111
12-let e = 30000000
12+let e = "3PQexcLjbv9CsYbt6zKF7nfEppf2gKHCEkz"
1313
1414 let f = 5000000
1515
16-let g = ((1000 * 60) * 5)
16+let g = 30000000
1717
18-let h = 250
18+let h = ((1000 * 60) * 5)
1919
20-let i = 150
20+let i = 250
2121
22-let j = 100
22+let j = 150
2323
24-let k = 500
24+let k = 100
2525
26-let l = 10
26+let l = 500
2727
28-let m = "3NAxsbHxS63azdAicVvLGsxjAQ9DsK6L4NL"
28+let m = 10
2929
3030 let n = 1000000
3131
32-func o (p,q) = {
33- let r = toBase58String(p.caller.bytes)
34- let s = ("delegate_" + r)
35- if ((getBoolean(this, ((s + "_") + q)) == true))
36- then {
37- let t = getString(this, (s + "_address"))
38- if ($isInstanceOf(t, "String"))
39- then {
40- let u = t
41- u
42- }
43- else r
44- }
45- else r
32+func o (p) = {
33+ let q = [DataEntry("USD", base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck'), DataEntry("BTC", base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'), DataEntry("VST", base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8')]
34+ if ((p == "WAVES"))
35+ then unit
36+ else getBinaryValue(q, p)
4637 }
4738
4839
49-func v (p) = if ((p.fee > c))
40+func r (s,t) = {
41+ let u = toBase58String(s.caller.bytes)
42+ let v = ("delegate_" + u)
43+ if ((getBoolean(this, ((v + "_") + t)) == true))
44+ then {
45+ let w = getString(this, (v + "_address"))
46+ if ($isInstanceOf(w, "String"))
47+ then {
48+ let x = w
49+ x
50+ }
51+ else u
52+ }
53+ else u
54+ }
55+
56+
57+func y (s) = if ((s.fee > f))
5058 then throw("unreasonable large fee")
51- else if ((p.feeAssetId != unit))
59+ else if ((s.feeAssetId != unit))
5260 then throw("fee must be in WAVES")
5361 else true
5462
5563
56-func w (p,x,y,z,A) = if (v(p))
57- then if (if ((y > 0))
58- then isDefined(z)
64+func z (s,A,B,C,D) = if (y(s))
65+ then if (if ((B > 0))
66+ then isDefined(C)
5967 else false)
60- then ScriptResult(x, TransferSet([ScriptTransfer(p.caller, p.fee, unit), ScriptTransfer(extract(z), y, A)]))
61- else ScriptResult(x, TransferSet([ScriptTransfer(p.caller, p.fee, unit)]))
68+ then ScriptResult(A, TransferSet([ScriptTransfer(s.caller, s.fee, unit), ScriptTransfer(extract(C), B, D)]))
69+ else ScriptResult(A, TransferSet([ScriptTransfer(s.caller, s.fee, unit)]))
6270 else throw("error")
6371
6472
65-func B (p,C) = (getString(this, (C + "_owner")) == toBase58String(p.caller.bytes))
73+func E (s,F) = (getString(this, (F + "_owner")) == toBase58String(s.caller.bytes))
6674
6775
68-func D (C) = (extract(getInteger(this, (C + "_amount"))) - extract(getInteger(this, (C + "_spent"))))
76+func G (F) = (extract(getInteger(this, (F + "_amount"))) - extract(getInteger(this, (F + "_spent"))))
6977
7078
71-func E (C) = {
72- let F = getInteger(this, (C + "_defeat"))
73- if ((F == 1))
79+func H (F) = {
80+ let I = getInteger(this, (F + "_defeat"))
81+ if ((I == 1))
7482 then true
75- else (F == 3)
83+ else (I == 3)
7684 }
7785
7886
79-func G (H) = getString(this, (H + "_referer"))
87+func J (K) = getString(this, (K + "_referer"))
8088
8189
82-func I (J,K) = {
83- let L = (J + "_balance")
84- DataEntry(L, (K + {
85- let t = getInteger(this, L)
86- if ($isInstanceOf(t, "Int"))
90+func L (M,N,O) = {
91+ let P = (((M + "_") + N) + "_balance")
92+ DataEntry(P, (O + {
93+ let w = getInteger(this, P)
94+ if ($isInstanceOf(w, "Int"))
8795 then {
88- let M = t
89- M
96+ let Q = w
97+ Q
9098 }
9199 else 0
92100 }))
93101 }
94102
95103
96-func N (J,O,K,P,Q,R) = DataEntry(((("fund_" + J) + "_") + Q), ((((((O + ":") + toString(K)) + ":") + P) + ":") + R))
104+func R (M,N,S,O,T,U,V) = DataEntry(((((((("fund_" + M) + "_") + N) + "_") + T) + "_") + U), ((((S + ":") + toString(O)) + ":") + V))
97105
98106
99-func S (T) = {
100- let U = getStringValue(a, T)
101- if ((U == "WAVES"))
107+func W (X) = {
108+ let Y = getStringValue(a, X)
109+ if ((Y == "WAVES"))
102110 then unit
103- else fromBase58String(U)
111+ else fromBase58String(Y)
104112 }
105113
106114
107-func V (W) = if ((W == unit))
108- then "WAVES"
109- else toBase58String(extract(W))
115+func Z (X) = getIntegerValue([DataEntry("dex", 5000000), DataEntry("sportr", 100)], X)
110116
111117
112-@Callable(p)
113-func bet (X,Y,Z,aa,T) = {
114- let ab = ("market_" + X)
115- let A = S(T)
116- let O = toBase58String(p.caller.bytes)
117- let ac = extract(p.payment)
118- if ((ac.assetId != A))
119- then throw(((("bet must be in asset " + V(A)) + " for adapter ") + T))
120- else if ((d > ac.amount))
121- then throw(("minimum allowed bet is " + toString(d)))
122- else if (if (if ((T == "dex"))
123- then (e > ac.amount)
124- else false)
125- then (getBoolean(this, ab) == unit)
126- else false)
127- then throw(("min amount to create first bet is " + toString(e)))
128- else if (if ((Z != "for"))
129- then (Z != "against")
118+func aa (X) = getIntegerValue([DataEntry("dex", 1000000), DataEntry("sportr", 1)], X)
119+
120+
121+func ab (N) = if ((N == unit))
122+ then "WAVES"
123+ else toBase58String(extract(N))
124+
125+
126+@Callable(s)
127+func bet (ac,ad,ae,af,X) = {
128+ let ag = ("market_" + ac)
129+ let D = W(X)
130+ let ah = getStringValue(a, X)
131+ let S = toBase58String(s.caller.bytes)
132+ let ai = extract(s.payment)
133+ if ((ai.assetId != D))
134+ then throw(((("bet must be in asset " + ah) + " for adapter ") + X))
135+ else {
136+ let aj = Z(X)
137+ if ((aj > ai.amount))
138+ then throw(("minimum allowed bet is " + toString(aj)))
139+ else if (if (if ((X == "dex"))
140+ then (g > ai.amount)
130141 else false)
131- then throw("unexpected side")
132- else {
133- let C = (((((("bet_" + X) + "_") + toBase58String(p.caller.bytes)) + "_") + take(toBase58String(p.transactionId), 5)) + "_")
134- let ad = ((("seq_" + X) + "_") + Y)
135- let ae = {
136- let t = getInteger(this, ad)
137- if ($isInstanceOf(t, "Int"))
138- then {
139- let af = t
140- (af + 1)
141- }
142- else 1
142+ then (getBoolean(this, ag) == unit)
143+ else false)
144+ then throw(("min amount to create first bet is " + toString(g)))
145+ else if (if ((ae != "for"))
146+ then (ae != "against")
147+ else false)
148+ then throw("unexpected side")
149+ else {
150+ let F = (((((("bet_" + ac) + "_") + S) + "_") + take(toBase58String(s.transactionId), 5)) + "_")
151+ let ak = ((("seq_" + ac) + "_") + ad)
152+ let al = {
153+ let w = getInteger(this, ak)
154+ if ($isInstanceOf(w, "Int"))
155+ then {
156+ let am = w
157+ (am + 1)
158+ }
159+ else 1
160+ }
161+ let an = [DataEntry((F + "owner"), S), DataEntry((F + "event"), ac), DataEntry((F + "subevent"), ad), DataEntry((F + "side"), ae), DataEntry((F + "odds"), af), DataEntry((F + "amount"), ai.amount), DataEntry((F + "spent"), 0), DataEntry((F + "adapter"), X), DataEntry((F + "timestamp"), lastBlock.timestamp), DataEntry((F + "sequence"), al), DataEntry(ak, al)]
162+ let ao = if ((X == "dex"))
163+ then DataEntry(ag, true) :: an
164+ else an
165+ z(s, WriteSet(ao), 0, unit, unit)
143166 }
144- w(p, WriteSet([DataEntry((C + "owner"), O), DataEntry((C + "event"), X), DataEntry((C + "subevent"), Y), DataEntry((C + "side"), Z), DataEntry((C + "odds"), aa), DataEntry((C + "amount"), ac.amount), DataEntry((C + "spent"), 0), DataEntry((C + "adapter"), T), DataEntry((C + "timestamp"), lastBlock.timestamp), DataEntry((C + "sequence"), ae), DataEntry(ab, true), DataEntry(ad, ae)]), 0, unit, unit)
145- }
167+ }
146168 }
147169
148170
149171
150-@Callable(p)
151-func cancel (C) = if ((getString(this, (C + "_owner")) != o(p, "autocancel")))
172+@Callable(s)
173+func cancel (F) = if ((getString(this, (F + "_owner")) != r(s, "autocancel")))
152174 then throw("must be owner or its delegate to cancel")
153175 else {
154- let T = getStringValue(this, (C + "_adapter"))
155- let y = getIntegerValue(this, (C + "_amount"))
156- let ag = getIntegerValue(this, (C + "_spent"))
157- let ah = (y - ag)
158- w(p, WriteSet([DataEntry((C + "_spent"), y), DataEntry((C + "_cancel_amount"), ah), DataEntry((C + "_cancel_tx"), toBase58String(p.transactionId))]), ah, p.caller, S(T))
176+ let X = getStringValue(this, (F + "_adapter"))
177+ let B = getIntegerValue(this, (F + "_amount"))
178+ let ap = getIntegerValue(this, (F + "_spent"))
179+ let aq = (B - ap)
180+ z(s, WriteSet([DataEntry((F + "_spent"), B), DataEntry((F + "_cancel_amount"), aq), DataEntry((F + "_cancel_tx"), toBase58String(s.transactionId))]), aq, s.caller, W(X))
159181 }
160182
161183
162184
163-@Callable(p)
164-func betMatch (ai,aj) = if ((getString(this, (ai + "_event")) != getString(this, (aj + "_event"))))
185+@Callable(s)
186+func betMatch (ar,as) = if ((getString(this, (ar + "_event")) != getString(this, (as + "_event"))))
165187 then throw("event id must match")
166- else if ((getString(this, (ai + "_subevent")) != getString(this, (aj + "_subevent"))))
188+ else if ((getString(this, (ar + "_subevent")) != getString(this, (as + "_subevent"))))
167189 then throw("subevent id must match")
168- else if ((getString(this, (ai + "_side")) != "for"))
190+ else if ((getString(this, (ar + "_side")) != "for"))
169191 then throw("invalid *for* bet")
170- else if ((getString(this, (aj + "_side")) != "against"))
192+ else if ((getString(this, (as + "_side")) != "against"))
171193 then throw("invalid *against* bet")
172194 else {
173- let T = getStringValue(this, (ai + "_adapter"))
174- if ((T != getStringValue(this, (aj + "_adapter"))))
195+ let X = getStringValue(this, (ar + "_adapter"))
196+ if ((X != getStringValue(this, (as + "_adapter"))))
175197 then throw("bets has different adapters")
176198 else {
177- let ak = getStringValue(this, (ai + "_owner"))
178- let al = getStringValue(this, (aj + "_owner"))
179- let am = extract(getString(this, (ai + "_event")))
180- let an = (((((((("match_" + am) + "_") + takeRight(ak, 10)) + "_") + takeRight(al, 10)) + "_") + takeRight(toBase58String(p.transactionId), 10)) + "_")
181- let aa = extract(getInteger(this, (ai + "_odds")))
182- let ao = D(ai)
183- let ap = D(aj)
184- let aq = ao
185- let ar = ((ap * 100) / (aa - 100))
186- let as = if ((aq > ar))
187- then ar
188- else aq
189- if ((f > as))
199+ let at = aa(X)
200+ let au = getStringValue(this, (ar + "_owner"))
201+ let av = getStringValue(this, (as + "_owner"))
202+ let aw = extract(getString(this, (ar + "_event")))
203+ let ax = (((((((("match_" + aw) + "_") + takeRight(au, 10)) + "_") + takeRight(av, 10)) + "_") + takeRight(toBase58String(s.transactionId), 10)) + "_")
204+ let af = extract(getInteger(this, (ar + "_odds")))
205+ let ay = G(ar)
206+ let az = G(as)
207+ let aA = ay
208+ let aB = ((az * 100) / (af - 100))
209+ let aC = if ((aA > aB))
210+ then aB
211+ else aA
212+ if ((at > aC))
190213 then throw("match nominal too low")
191214 else {
192- let at = as
193- let au = ((as * (aa - 100)) / 100)
194- let av = (at + extract(getInteger(this, (ai + "_spent"))))
195- let aw = (au + extract(getInteger(this, (aj + "_spent"))))
196- if ((av > extract(getInteger(this, (ai + "_amount")))))
215+ let aD = aC
216+ let aE = ((aC * (af - 100)) / 100)
217+ let aF = (aD + extract(getInteger(this, (ar + "_spent"))))
218+ let aG = (aE + extract(getInteger(this, (as + "_spent"))))
219+ if ((aF > extract(getInteger(this, (ar + "_amount")))))
197220 then throw("invalid match")
198- else if ((aw > extract(getInteger(this, (aj + "_amount")))))
221+ else if ((aG > extract(getInteger(this, (as + "_amount")))))
199222 then throw("invalid match")
200- else w(p, WriteSet([DataEntry((an + "amount"), (at + au)), DataEntry((an + "adapter"), T), DataEntry((an + "for"), ai), DataEntry((an + "against"), aj), DataEntry((ai + "_spent"), av), DataEntry((aj + "_spent"), aw)]), 0, unit, unit)
223+ else z(s, WriteSet([DataEntry((ax + "amount"), (aD + aE)), DataEntry((ax + "adapter"), X), DataEntry((ax + "for"), ar), DataEntry((ax + "against"), as), DataEntry((ar + "_spent"), aF), DataEntry((as + "_spent"), aG)]), 0, unit, unit)
201224 }
202225 }
203226 }
204227
205228
206229
207-@Callable(p)
208-func approveDefeat (ax,ay) = if (if (isDefined(getInteger(this, (ax + "_defeat"))))
209- then (ay == 2)
210- else false)
211- then throw("can't dispute after approve")
212- else if ((getString(this, (ax + "_owner")) != o(p, "autoapprove")))
213- then throw("must be owner or its delegate to approve")
214- else w(p, WriteSet([DataEntry((ax + "_defeat"), ay)]), 0, unit, unit)
230+@Callable(s)
231+func approveDefeat (aH,aI) = {
232+ let aJ = extract(assetInfo(base58''))
233+ if (if (isDefined(getInteger(this, (aH + "_defeat"))))
234+ then (aI == 2)
235+ else false)
236+ then throw("can't dispute after approve")
237+ else if ((getString(this, (aH + "_owner")) != r(s, "autoapprove")))
238+ then throw("must be owner or its delegate to approve")
239+ else z(s, WriteSet([DataEntry((aH + "_defeat"), aI)]), 0, unit, unit)
240+ }
215241
216242
217243
218-@Callable(p)
219-func judgeDexMatch (az) = if ((getStringValue(this, (az + "_adapter")) != "dex"))
244+@Callable(s)
245+func judgeDexMatch (aK) = if ((getStringValue(this, (aK + "_adapter")) != "dex"))
220246 then throw("method is only for dex matches")
221- else if ((getBoolean(this, (az + "_judged")) == true))
247+ else if ((getBoolean(this, (aK + "_judged")) == true))
222248 then throw("already judged")
223249 else {
224- let ai = getStringValue(this, (az + "_for"))
225- let aj = getStringValue(this, (az + "_against"))
226- let X = getStringValue(this, (ai + "_event"))
227- let aA = split(X, ":")
228- let aB = aA[1]
229- let aC = parseIntValue(aA[2])
230- let aD = parseIntValue(aA[3])
231- let aE = ((aD * 1000) + g)
232- if ((aE > lastBlock.timestamp))
233- then throw(("please wait for timestamp " + toString(aE)))
250+ let ar = getStringValue(this, (aK + "_for"))
251+ let as = getStringValue(this, (aK + "_against"))
252+ let ac = getStringValue(this, (ar + "_event"))
253+ let aL = split(ac, ":")
254+ let aM = aL[1]
255+ let aN = parseIntValue(aL[2])
256+ let aO = parseIntValue(aL[3])
257+ let aP = split(aM, "/")
258+ let aQ = getIntegerValue(c, aP[0])
259+ let aR = getIntegerValue(c, aP[1])
260+ let aS = (aQ - aR)
261+ let aT = if ((aS == 0))
262+ then 1
263+ else if ((aS == 1))
264+ then 10
265+ else if ((aS == 2))
266+ then 100
267+ else if ((aS == 3))
268+ then 1000
269+ else if ((aS == 4))
270+ then 10000
271+ else if ((aS == 5))
272+ then 100000
273+ else if ((aS == 6))
274+ then 1000000
275+ else if ((aS == 7))
276+ then 10000000
277+ else if ((aS == 8))
278+ then 100000000
279+ else throw("unsupported")
280+ let aU = ((aO * 1000) + h)
281+ if ((aU > lastBlock.timestamp))
282+ then throw(("please wait for timestamp " + toString(aU)))
234283 else {
235- let aF = getInteger(b, (X + "_rate"))
236- if (!(isDefined(aF)))
284+ let aV = getInteger(d, (ac + "_rate"))
285+ if (!(isDefined(aV)))
237286 then throw("rate from agent not ready yet")
238287 else {
239- let aG = if ((extract(aF) >= aC))
240- then aj
241- else ai
242- w(p, WriteSet([DataEntry((aG + "_defeat"), 1), DataEntry((az + "_judged"), true)]), 0, unit, unit)
288+ let aW = if (((extract(aV) * aT) > aN))
289+ then as
290+ else ar
291+ z(s, WriteSet([DataEntry((aW + "_defeat"), 1), DataEntry((aK + "_judged"), true)]), 0, unit, unit)
243292 }
244293 }
245294 }
246295
247296
248297
249-@Callable(p)
250-func payWinner (az) = if (!(v(p)))
298+@Callable(s)
299+func payWinner (aK) = if (!(y(s)))
251300 then throw("error")
252- else if (isDefined(getInteger(this, (az + "_paid"))))
301+ else if (isDefined(getString(this, (aK + "_paid"))))
253302 then throw("already paid")
254303 else {
255- let T = getStringValue(this, (az + "_adapter"))
256- let A = S(T)
257- let aH = extract(getString(this, (az + "_for")))
258- let aI = extract(getString(this, (az + "_against")))
259- let aJ = E(aH)
260- let aK = E(aI)
261- if (if (!(aJ))
262- then !(aK)
304+ let X = getStringValue(this, (aK + "_adapter"))
305+ let D = W(X)
306+ let ah = getStringValue(b, X)
307+ let aX = extract(getString(this, (aK + "_for")))
308+ let aY = extract(getString(this, (aK + "_against")))
309+ let aZ = H(aX)
310+ let ba = H(aY)
311+ if (if (!(aZ))
312+ then !(ba)
263313 else false)
264314 then throw("no side approved defeat")
265315 else {
266- let aL = if (aJ)
267- then aI
268- else aH
269- let aM = getStringValue(this, (aL + "_owner"))
270- let y = extract(getInteger(this, (az + "_amount")))
271- let aN = toBase58String(p.transactionId)
272- let R = toString(lastBlock.timestamp)
273- let aO = ((y * l) / 1000)
274- ScriptResult(WriteSet([DataEntry((az + "_paid"), toBase58String(p.transactionId)), {
275- let t = G(aM)
276- if ($isInstanceOf(t, "String"))
316+ let bb = if (aZ)
317+ then aY
318+ else aX
319+ let bc = getStringValue(this, (bb + "_owner"))
320+ let B = extract(getInteger(this, (aK + "_amount")))
321+ let bd = toBase58String(s.transactionId)
322+ let V = toString(lastBlock.timestamp)
323+ let be = ((B * m) / 1000)
324+ ScriptResult(WriteSet([DataEntry((aK + "_paid"), toBase58String(s.transactionId)), {
325+ let w = J(bc)
326+ if ($isInstanceOf(w, "String"))
277327 then {
278- let aP = t
279- let aQ = ((aO * h) / 1000)
280- let aR = ((aO * k) / 1000)
281-[I(aM, aR), N(aM, aM, aR, "cashback", aN, R), I(aP, aQ), N(aP, aM, aQ, "l1", aN, R), {
282- let aS = G(aP)
283- if ($isInstanceOf(aS, "String"))
328+ let bf = w
329+ let bg = ((be * i) / 1000)
330+ let bh = ((be * l) / 1000)
331+[L(bc, ah, bh), R(bc, ah, bc, bh, "cashback", bd, V), L(bf, ah, bg), R(bf, ah, bc, bg, "l1", bd, V), {
332+ let bi = J(bf)
333+ if ($isInstanceOf(bi, "String"))
284334 then {
285- let aT = aS
286- let aU = ((aO * i) / 1000)
287-[I(aT, aU), N(aT, aM, aU, "l2", aN, R), {
288- let aV = G(aT)
289- if ($isInstanceOf(aV, "String"))
290- then {
291- let aW = aV
292- let aX = ((aO * j) / 1000)
293-[I(aW, aX), N(aW, aM, aX, "l3", aN, R), I(m, (((aO - aQ) - aU) - aX)), N(m, aM, (((aO - aQ) - aU) - aX), "change", aN, R)]
294- }
295- else [I(m, ((aO - aQ) - aU)), N(m, aM, ((aO - aQ) - aU), "change", aN, R)]
335+ let bj = bi
336+ let bk = ((be * j) / 1000)
337+[L(bj, ah, bk), R(bj, ah, bc, bk, "l2", bd, V), {
338+ let bl = J(bj)
339+[L(e, ah, ((be - bg) - bk)), R(e, ah, bc, ((be - bg) - bk), "change", bd, V)]
296340 }]
297341 }
298- else [I(m, (aO - aQ)), N(m, aM, (aO - aQ), "change", aN, R)]
342+ else [L(e, ah, (be - bg)), R(e, ah, bc, (be - bg), "change", bd, V)]
299343 }]
300344 }
301- else [I(m, aO), N(m, aM, aO, "change", aN, R)]
302- }]), TransferSet([ScriptTransfer(p.caller, p.fee, unit), ScriptTransfer(addressFromStringValue(aM), (y - aO), A)]))
345+ else [L(e, ah, be), R(e, ah, bc, be, "change", bd, V)]
346+ }]), TransferSet([ScriptTransfer(s.caller, s.fee, unit), ScriptTransfer(addressFromStringValue(bc), (B - be), D)]))
303347 }
304348 }
305349
306350
307351
308-@Callable(p)
309-func delegate (aY,aZ,ba) = w(p, WriteSet([DataEntry((("delegate_" + aY) + "_address"), toBase58String(p.caller.bytes)), DataEntry((("delegate_" + aY) + "_autoapprove"), aZ), DataEntry((("delegate_" + aY) + "_autocancel"), ba)]), 0, unit, unit)
352+@Callable(s)
353+func delegate (bm,bn,bo) = z(s, WriteSet([DataEntry((("delegate_" + bm) + "_address"), toBase58String(s.caller.bytes)), DataEntry((("delegate_" + bm) + "_autoapprove"), bn), DataEntry((("delegate_" + bm) + "_autocancel"), bo)]), 0, unit, unit)
310354
311355
312356
313-@Callable(p)
314-func withdraw () = if (!(v(p)))
357+@Callable(s)
358+func withdraw (bp) = if (!(y(s)))
315359 then throw("error")
316360 else {
317- let O = toBase58String(p.caller.bytes)
318- let aN = toBase58String(p.transactionId)
319- let L = (O + "_balance")
320- let y = {
321- let t = getInteger(this, L)
322- if ($isInstanceOf(t, "Int"))
361+ let S = toBase58String(s.caller.bytes)
362+ let bd = toBase58String(s.transactionId)
363+ let P = (((S + "_") + bp) + "_balance")
364+ let bq = o(bp)
365+ let B = {
366+ let w = getInteger(this, P)
367+ if ($isInstanceOf(w, "Int"))
323368 then {
324- let M = t
325- M
369+ let Q = w
370+ Q
326371 }
327372 else 0
328373 }
329- if ((n > y))
374+ if ((n > B))
330375 then throw(("Min withdraw amount is" + toString(n)))
331- else ScriptResult(WriteSet([DataEntry(L, 0), DataEntry(((("withdraw_" + O) + "_") + aN), ((toString(y) + ":") + toString(lastBlock.timestamp)))]), TransferSet([ScriptTransfer(p.caller, (y + p.fee), unit)]))
376+ else ScriptResult(WriteSet([DataEntry(P, 0), DataEntry(((("withdraw_" + S) + "_") + bd), ((((toString(B) + ":") + toString(lastBlock.timestamp)) + ":") + bp))]), TransferSet([ScriptTransfer(s.caller, s.fee, unit), ScriptTransfer(s.caller, B, bq)]))
332377 }
333378
334379
335380
336-@Callable(p)
337-func register (bb,bc) = if (!(v(p)))
381+@Callable(s)
382+func register (br,bs) = if (!(y(s)))
338383 then throw("error")
339- else if ((take(toBase58String(p.transactionId), 3) != "123"))
384+ else if ((take(toBase58String(s.transactionId), 3) != "123"))
340385 then throw("proof of work failed")
341386 else {
342- let O = toBase58String(p.caller.bytes)
343- if (isDefined(G(O)))
387+ let S = toBase58String(s.caller.bytes)
388+ if (isDefined(J(S)))
344389 then throw("Already registered")
345- else ScriptResult(WriteSet([DataEntry((O + "_referer"), bb), DataEntry(((bb + "_referral_") + O), O)]), TransferSet([ScriptTransfer(p.caller, p.fee, unit)]))
390+ else ScriptResult(WriteSet([DataEntry((S + "_referer"), br), DataEntry(((br + "_referral_") + S), S)]), TransferSet([ScriptTransfer(s.caller, s.fee, unit)]))
346391 }
347392
348393

github/deemru/w8io/873ac7e 
159.35 ms