tx · BpujDnGS7CTNiSLNgfjRaEkfGKkgqxD7fVYH9mHc5L1S

3NAxsbHxS63azdAicVvLGsxjAQ9DsK6L4NL:  -0.01400000 Waves

2019.08.22 15:46 [642339] smart account 3NAxsbHxS63azdAicVvLGsxjAQ9DsK6L4NL > SELF 0.00000000 Waves

{ "type": 13, "id": "BpujDnGS7CTNiSLNgfjRaEkfGKkgqxD7fVYH9mHc5L1S", "fee": 1400000, "feeAssetId": null, "timestamp": 1566477953686, "version": 1, "sender": "3NAxsbHxS63azdAicVvLGsxjAQ9DsK6L4NL", "senderPublicKey": "FbEMepLNcZb6VBpsH5JJg4j43UEV27dMRqv1Pq6JFLgy", "proofs": [ "3NJLuUnqWiFACC1RVB3cHwoAUWmFEpxykar32qyD1JooFmykGhUJSaZ8pJ5UNFpu2pRghhx8oVqqG6JgJ9cNzuPY" ], "script": "base64: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", "chainId": 84, "height": 642339, "spentComplexity": 0 } View: original | compacted Prev: 6a5mjKo5AA4TMiX6bg7A79bnNtbextx5aZirrfwPEYAE Next: EypVfG5a4fkj65ahrhJeJV9nzyj5DePoGtqwgi8pTVgy Diff:
OldNewDifferences
99
1010 let d = 5000000
1111
12-func e (f) = if ((f.fee > b))
12+func e (f) = {
13+ let g = toBase58String(f.caller.bytes)
14+ let h = getString(this, ("delegate_" + g))
15+ if ($isInstanceOf(h, "String"))
16+ then {
17+ let i = h
18+ i
19+ }
20+ else g
21+ }
22+
23+
24+func j (f) = if ((f.fee > b))
1325 then throw("unreasonable large fee")
1426 else if ((f.feeAssetId != unit))
1527 then throw("fee must be in WAVES")
1628 else true
1729
1830
19-func g (f,h,i,j) = if (e(f))
20- then if (if ((i > 0))
21- then isDefined(j)
31+func k (f,l,m,n) = if (j(f))
32+ then if (if ((m > 0))
33+ then isDefined(n)
2234 else false)
23- then ScriptResult(h, TransferSet([ScriptTransfer(f.caller, f.fee, unit), ScriptTransfer(extract(j), i, a)]))
24- else ScriptResult(h, TransferSet([ScriptTransfer(f.caller, f.fee, unit)]))
35+ then ScriptResult(l, TransferSet([ScriptTransfer(f.caller, f.fee, unit), ScriptTransfer(extract(n), m, a)]))
36+ else ScriptResult(l, TransferSet([ScriptTransfer(f.caller, f.fee, unit)]))
2537 else throw("error")
2638
2739
28-func k (f,l) = (getString(this, (l + "_owner")) == toBase58String(f.caller.bytes))
40+func o (f,p) = (getString(this, (p + "_owner")) == toBase58String(f.caller.bytes))
2941
3042
31-func m (l) = (extract(getInteger(this, (l + "_amount"))) - extract(getInteger(this, (l + "_spent"))))
43+func q (p) = (extract(getInteger(this, (p + "_amount"))) - extract(getInteger(this, (p + "_spent"))))
3244
3345
34-func n (l) = {
35- let o = getInteger(this, (l + "_defeat"))
36- if ((o == 1))
46+func r (p) = {
47+ let s = getInteger(this, (p + "_defeat"))
48+ if ((s == 1))
3749 then true
38- else (o == 3)
50+ else (s == 3)
3951 }
4052
4153
4254 @Callable(f)
43-func bet (p,q,r,s) = {
44- let t = toBase58String(f.caller.bytes)
45- let u = extract(f.payment)
46- if ((u.assetId != a))
55+func bet (t,u,v,w) = {
56+ let x = toBase58String(f.caller.bytes)
57+ let y = extract(f.payment)
58+ if ((y.assetId != a))
4759 then throw(("bet must be in asset " + toBase58String(a)))
48- else if ((c > u.amount))
60+ else if ((c > y.amount))
4961 then throw(("minimum allowed bet is " + toString(c)))
50- else if (if ((r != "for"))
51- then (r != "against")
62+ else if (if ((v != "for"))
63+ then (v != "against")
5264 else false)
5365 then throw("unexpected side")
5466 else {
55- let l = (((((("bet_" + p) + "_") + toBase58String(f.caller.bytes)) + "_") + take(toBase58String(f.transactionId), 15)) + "_")
56- let v = ((("seq_" + p) + "_") + q)
57- let w = {
58- let x = getInteger(this, v)
59- if ($isInstanceOf(x, "Int"))
67+ let p = (((((("bet_" + t) + "_") + toBase58String(f.caller.bytes)) + "_") + take(toBase58String(f.transactionId), 15)) + "_")
68+ let z = ((("seq_" + t) + "_") + u)
69+ let A = {
70+ let h = getInteger(this, z)
71+ if ($isInstanceOf(h, "Int"))
6072 then {
61- let y = x
62- (y + 1)
73+ let B = h
74+ (B + 1)
6375 }
6476 else 1
6577 }
66- g(f, WriteSet([DataEntry((l + "owner"), t), DataEntry((l + "event"), p), DataEntry((l + "subevent"), q), DataEntry((l + "side"), r), DataEntry((l + "odds"), s), DataEntry((l + "amount"), u.amount), DataEntry((l + "spent"), 0), DataEntry((l + "timestamp"), lastBlock.timestamp), DataEntry((l + "sequence"), w), DataEntry(v, w)]), 0, unit)
78+ k(f, WriteSet([DataEntry((p + "owner"), x), DataEntry((p + "event"), t), DataEntry((p + "subevent"), u), DataEntry((p + "side"), v), DataEntry((p + "odds"), w), DataEntry((p + "amount"), y.amount), DataEntry((p + "spent"), 0), DataEntry((p + "timestamp"), lastBlock.timestamp), DataEntry((p + "sequence"), A), DataEntry(z, A)]), 0, unit)
6779 }
6880 }
6981
7082
7183
7284 @Callable(f)
73-func cancel (l) = if (!(k(f, l)))
85+func cancel (p) = if (!(o(f, p)))
7486 then throw("permission denied")
7587 else {
76- let i = extract(getInteger(this, (l + "_amount")))
77- let z = extract(getInteger(this, (l + "_spent")))
78- let A = (i - z)
79- g(f, WriteSet([DataEntry((l + "_spent"), i), DataEntry((l + "_cancel_amount"), A), DataEntry((l + "_cancel_tx"), toBase58String(f.transactionId))]), A, f.caller)
88+ let m = extract(getInteger(this, (p + "_amount")))
89+ let C = extract(getInteger(this, (p + "_spent")))
90+ let D = (m - C)
91+ k(f, WriteSet([DataEntry((p + "_spent"), m), DataEntry((p + "_cancel_amount"), D), DataEntry((p + "_cancel_tx"), toBase58String(f.transactionId))]), D, f.caller)
8092 }
8193
8294
8395
8496 @Callable(f)
85-func betMatch (B,C) = if ((getString(this, (B + "_event")) != getString(this, (C + "_event"))))
97+func betMatch (E,F) = if ((getString(this, (E + "_event")) != getString(this, (F + "_event"))))
8698 then throw("event id must match")
87- else if ((getString(this, (B + "_subevent")) != getString(this, (C + "_subevent"))))
99+ else if ((getString(this, (E + "_subevent")) != getString(this, (F + "_subevent"))))
88100 then throw("subevent id must match")
89- else if ((getString(this, (B + "_side")) != "for"))
101+ else if ((getString(this, (E + "_side")) != "for"))
90102 then throw("invalid *for* bet")
91- else if ((getString(this, (C + "_side")) != "against"))
103+ else if ((getString(this, (F + "_side")) != "against"))
92104 then throw("invalid *against* bet")
93105 else {
94- let D = getStringValue(this, (B + "_owner"))
95- let E = getStringValue(this, (C + "_owner"))
96- let F = extract(getString(this, (B + "_event")))
97- let G = (((((((("match_" + F) + "_") + takeRight(D, 10)) + "_") + takeRight(E, 10)) + "_") + toBase58String(f.transactionId)) + "_")
98- let s = extract(getInteger(this, (B + "_odds")))
99- let H = m(B)
100- let I = m(C)
101- let J = H
102- let K = ((I * 100) / (s - 100))
103- let L = if ((J > K))
104- then K
105- else J
106- if ((d > L))
106+ let G = getStringValue(this, (E + "_owner"))
107+ let H = getStringValue(this, (F + "_owner"))
108+ let I = extract(getString(this, (E + "_event")))
109+ let J = (((((((("match_" + I) + "_") + takeRight(G, 10)) + "_") + takeRight(H, 10)) + "_") + toBase58String(f.transactionId)) + "_")
110+ let w = extract(getInteger(this, (E + "_odds")))
111+ let K = q(E)
112+ let L = q(F)
113+ let M = K
114+ let N = ((L * 100) / (w - 100))
115+ let O = if ((M > N))
116+ then N
117+ else M
118+ if ((d > O))
107119 then throw("match nominal too low")
108120 else {
109- let M = L
110- let N = ((L * (s - 100)) / 100)
111- let O = (M + extract(getInteger(this, (B + "_spent"))))
112- let P = (N + extract(getInteger(this, (C + "_spent"))))
113- if ((O > extract(getInteger(this, (B + "_amount")))))
121+ let P = O
122+ let Q = ((O * (w - 100)) / 100)
123+ let R = (P + extract(getInteger(this, (E + "_spent"))))
124+ let S = (Q + extract(getInteger(this, (F + "_spent"))))
125+ if ((R > extract(getInteger(this, (E + "_amount")))))
114126 then throw("invalid match")
115- else if ((P > extract(getInteger(this, (C + "_amount")))))
127+ else if ((S > extract(getInteger(this, (F + "_amount")))))
116128 then throw("invalid match")
117- else g(f, WriteSet([DataEntry((G + "amount"), (M + N)), DataEntry((G + "for"), B), DataEntry((G + "against"), C), DataEntry((B + "_spent"), O), DataEntry((C + "_spent"), P)]), 0, unit)
129+ else k(f, WriteSet([DataEntry((J + "amount"), (P + Q)), DataEntry((J + "for"), E), DataEntry((J + "against"), F), DataEntry((E + "_spent"), R), DataEntry((F + "_spent"), S)]), 0, unit)
118130 }
119131 }
120132
121133
122134
123135 @Callable(f)
124-func approveDefeat (Q,R) = if (if (isDefined(getInteger(this, (Q + "_defeat"))))
125- then (R == 2)
136+func approveDefeat (T,U) = if (if (isDefined(getInteger(this, (T + "_defeat"))))
137+ then (U == 2)
126138 else false)
127139 then throw("can't dispute after approve")
128- else g(f, WriteSet([DataEntry((Q + "_defeat"), R)]), 0, unit)
140+ else if ((getString(this, (T + "_owner")) != e(f)))
141+ then throw("must be owner or its delegate to approve")
142+ else k(f, WriteSet([DataEntry((T + "_defeat"), U)]), 0, unit)
129143
130144
131145
132146 @Callable(f)
133-func payWinner (S) = if (isDefined(getInteger(this, (S + "_paid"))))
147+func payWinner (V) = if (isDefined(getInteger(this, (V + "_paid"))))
134148 then throw("already paid")
135149 else {
136- let T = extract(getString(this, (S + "_for")))
137- let U = extract(getString(this, (S + "_against")))
138- let V = n(T)
139- let W = n(U)
140- if (if (!(V))
141- then !(W)
150+ let W = extract(getString(this, (V + "_for")))
151+ let X = extract(getString(this, (V + "_against")))
152+ let Y = r(W)
153+ let Z = r(X)
154+ if (if (!(Y))
155+ then !(Z)
142156 else false)
143157 then throw("no side approved defeat")
144158 else {
145- let X = if (V)
146- then U
147- else T
148- let Y = getStringValue(this, (X + "_owner"))
149- let i = extract(getInteger(this, (S + "_amount")))
150- g(f, WriteSet([DataEntry((S + "_paid"), toBase58String(f.transactionId))]), i, addressFromString(Y))
159+ let aa = if (Y)
160+ then X
161+ else W
162+ let ab = getStringValue(this, (aa + "_owner"))
163+ let m = extract(getInteger(this, (V + "_amount")))
164+ k(f, WriteSet([DataEntry((V + "_paid"), toBase58String(f.transactionId))]), m, addressFromString(ab))
151165 }
152166 }
167+
168+
169+
170+@Callable(f)
171+func delegate (ac) = k(f, WriteSet([DataEntry(("delegate_" + toBase58String(f.caller.bytes)), ac)]), 0, unit)
153172
154173
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'33kV5hRVtgEGpYqhp9wQn2g9hP1fNWSYGCzzYk1T9Hyg'
55
66 let b = 5000000
77
88 let c = 5000000
99
1010 let d = 5000000
1111
12-func e (f) = if ((f.fee > b))
12+func e (f) = {
13+ let g = toBase58String(f.caller.bytes)
14+ let h = getString(this, ("delegate_" + g))
15+ if ($isInstanceOf(h, "String"))
16+ then {
17+ let i = h
18+ i
19+ }
20+ else g
21+ }
22+
23+
24+func j (f) = if ((f.fee > b))
1325 then throw("unreasonable large fee")
1426 else if ((f.feeAssetId != unit))
1527 then throw("fee must be in WAVES")
1628 else true
1729
1830
19-func g (f,h,i,j) = if (e(f))
20- then if (if ((i > 0))
21- then isDefined(j)
31+func k (f,l,m,n) = if (j(f))
32+ then if (if ((m > 0))
33+ then isDefined(n)
2234 else false)
23- then ScriptResult(h, TransferSet([ScriptTransfer(f.caller, f.fee, unit), ScriptTransfer(extract(j), i, a)]))
24- else ScriptResult(h, TransferSet([ScriptTransfer(f.caller, f.fee, unit)]))
35+ then ScriptResult(l, TransferSet([ScriptTransfer(f.caller, f.fee, unit), ScriptTransfer(extract(n), m, a)]))
36+ else ScriptResult(l, TransferSet([ScriptTransfer(f.caller, f.fee, unit)]))
2537 else throw("error")
2638
2739
28-func k (f,l) = (getString(this, (l + "_owner")) == toBase58String(f.caller.bytes))
40+func o (f,p) = (getString(this, (p + "_owner")) == toBase58String(f.caller.bytes))
2941
3042
31-func m (l) = (extract(getInteger(this, (l + "_amount"))) - extract(getInteger(this, (l + "_spent"))))
43+func q (p) = (extract(getInteger(this, (p + "_amount"))) - extract(getInteger(this, (p + "_spent"))))
3244
3345
34-func n (l) = {
35- let o = getInteger(this, (l + "_defeat"))
36- if ((o == 1))
46+func r (p) = {
47+ let s = getInteger(this, (p + "_defeat"))
48+ if ((s == 1))
3749 then true
38- else (o == 3)
50+ else (s == 3)
3951 }
4052
4153
4254 @Callable(f)
43-func bet (p,q,r,s) = {
44- let t = toBase58String(f.caller.bytes)
45- let u = extract(f.payment)
46- if ((u.assetId != a))
55+func bet (t,u,v,w) = {
56+ let x = toBase58String(f.caller.bytes)
57+ let y = extract(f.payment)
58+ if ((y.assetId != a))
4759 then throw(("bet must be in asset " + toBase58String(a)))
48- else if ((c > u.amount))
60+ else if ((c > y.amount))
4961 then throw(("minimum allowed bet is " + toString(c)))
50- else if (if ((r != "for"))
51- then (r != "against")
62+ else if (if ((v != "for"))
63+ then (v != "against")
5264 else false)
5365 then throw("unexpected side")
5466 else {
55- let l = (((((("bet_" + p) + "_") + toBase58String(f.caller.bytes)) + "_") + take(toBase58String(f.transactionId), 15)) + "_")
56- let v = ((("seq_" + p) + "_") + q)
57- let w = {
58- let x = getInteger(this, v)
59- if ($isInstanceOf(x, "Int"))
67+ let p = (((((("bet_" + t) + "_") + toBase58String(f.caller.bytes)) + "_") + take(toBase58String(f.transactionId), 15)) + "_")
68+ let z = ((("seq_" + t) + "_") + u)
69+ let A = {
70+ let h = getInteger(this, z)
71+ if ($isInstanceOf(h, "Int"))
6072 then {
61- let y = x
62- (y + 1)
73+ let B = h
74+ (B + 1)
6375 }
6476 else 1
6577 }
66- g(f, WriteSet([DataEntry((l + "owner"), t), DataEntry((l + "event"), p), DataEntry((l + "subevent"), q), DataEntry((l + "side"), r), DataEntry((l + "odds"), s), DataEntry((l + "amount"), u.amount), DataEntry((l + "spent"), 0), DataEntry((l + "timestamp"), lastBlock.timestamp), DataEntry((l + "sequence"), w), DataEntry(v, w)]), 0, unit)
78+ k(f, WriteSet([DataEntry((p + "owner"), x), DataEntry((p + "event"), t), DataEntry((p + "subevent"), u), DataEntry((p + "side"), v), DataEntry((p + "odds"), w), DataEntry((p + "amount"), y.amount), DataEntry((p + "spent"), 0), DataEntry((p + "timestamp"), lastBlock.timestamp), DataEntry((p + "sequence"), A), DataEntry(z, A)]), 0, unit)
6779 }
6880 }
6981
7082
7183
7284 @Callable(f)
73-func cancel (l) = if (!(k(f, l)))
85+func cancel (p) = if (!(o(f, p)))
7486 then throw("permission denied")
7587 else {
76- let i = extract(getInteger(this, (l + "_amount")))
77- let z = extract(getInteger(this, (l + "_spent")))
78- let A = (i - z)
79- g(f, WriteSet([DataEntry((l + "_spent"), i), DataEntry((l + "_cancel_amount"), A), DataEntry((l + "_cancel_tx"), toBase58String(f.transactionId))]), A, f.caller)
88+ let m = extract(getInteger(this, (p + "_amount")))
89+ let C = extract(getInteger(this, (p + "_spent")))
90+ let D = (m - C)
91+ k(f, WriteSet([DataEntry((p + "_spent"), m), DataEntry((p + "_cancel_amount"), D), DataEntry((p + "_cancel_tx"), toBase58String(f.transactionId))]), D, f.caller)
8092 }
8193
8294
8395
8496 @Callable(f)
85-func betMatch (B,C) = if ((getString(this, (B + "_event")) != getString(this, (C + "_event"))))
97+func betMatch (E,F) = if ((getString(this, (E + "_event")) != getString(this, (F + "_event"))))
8698 then throw("event id must match")
87- else if ((getString(this, (B + "_subevent")) != getString(this, (C + "_subevent"))))
99+ else if ((getString(this, (E + "_subevent")) != getString(this, (F + "_subevent"))))
88100 then throw("subevent id must match")
89- else if ((getString(this, (B + "_side")) != "for"))
101+ else if ((getString(this, (E + "_side")) != "for"))
90102 then throw("invalid *for* bet")
91- else if ((getString(this, (C + "_side")) != "against"))
103+ else if ((getString(this, (F + "_side")) != "against"))
92104 then throw("invalid *against* bet")
93105 else {
94- let D = getStringValue(this, (B + "_owner"))
95- let E = getStringValue(this, (C + "_owner"))
96- let F = extract(getString(this, (B + "_event")))
97- let G = (((((((("match_" + F) + "_") + takeRight(D, 10)) + "_") + takeRight(E, 10)) + "_") + toBase58String(f.transactionId)) + "_")
98- let s = extract(getInteger(this, (B + "_odds")))
99- let H = m(B)
100- let I = m(C)
101- let J = H
102- let K = ((I * 100) / (s - 100))
103- let L = if ((J > K))
104- then K
105- else J
106- if ((d > L))
106+ let G = getStringValue(this, (E + "_owner"))
107+ let H = getStringValue(this, (F + "_owner"))
108+ let I = extract(getString(this, (E + "_event")))
109+ let J = (((((((("match_" + I) + "_") + takeRight(G, 10)) + "_") + takeRight(H, 10)) + "_") + toBase58String(f.transactionId)) + "_")
110+ let w = extract(getInteger(this, (E + "_odds")))
111+ let K = q(E)
112+ let L = q(F)
113+ let M = K
114+ let N = ((L * 100) / (w - 100))
115+ let O = if ((M > N))
116+ then N
117+ else M
118+ if ((d > O))
107119 then throw("match nominal too low")
108120 else {
109- let M = L
110- let N = ((L * (s - 100)) / 100)
111- let O = (M + extract(getInteger(this, (B + "_spent"))))
112- let P = (N + extract(getInteger(this, (C + "_spent"))))
113- if ((O > extract(getInteger(this, (B + "_amount")))))
121+ let P = O
122+ let Q = ((O * (w - 100)) / 100)
123+ let R = (P + extract(getInteger(this, (E + "_spent"))))
124+ let S = (Q + extract(getInteger(this, (F + "_spent"))))
125+ if ((R > extract(getInteger(this, (E + "_amount")))))
114126 then throw("invalid match")
115- else if ((P > extract(getInteger(this, (C + "_amount")))))
127+ else if ((S > extract(getInteger(this, (F + "_amount")))))
116128 then throw("invalid match")
117- else g(f, WriteSet([DataEntry((G + "amount"), (M + N)), DataEntry((G + "for"), B), DataEntry((G + "against"), C), DataEntry((B + "_spent"), O), DataEntry((C + "_spent"), P)]), 0, unit)
129+ else k(f, WriteSet([DataEntry((J + "amount"), (P + Q)), DataEntry((J + "for"), E), DataEntry((J + "against"), F), DataEntry((E + "_spent"), R), DataEntry((F + "_spent"), S)]), 0, unit)
118130 }
119131 }
120132
121133
122134
123135 @Callable(f)
124-func approveDefeat (Q,R) = if (if (isDefined(getInteger(this, (Q + "_defeat"))))
125- then (R == 2)
136+func approveDefeat (T,U) = if (if (isDefined(getInteger(this, (T + "_defeat"))))
137+ then (U == 2)
126138 else false)
127139 then throw("can't dispute after approve")
128- else g(f, WriteSet([DataEntry((Q + "_defeat"), R)]), 0, unit)
140+ else if ((getString(this, (T + "_owner")) != e(f)))
141+ then throw("must be owner or its delegate to approve")
142+ else k(f, WriteSet([DataEntry((T + "_defeat"), U)]), 0, unit)
129143
130144
131145
132146 @Callable(f)
133-func payWinner (S) = if (isDefined(getInteger(this, (S + "_paid"))))
147+func payWinner (V) = if (isDefined(getInteger(this, (V + "_paid"))))
134148 then throw("already paid")
135149 else {
136- let T = extract(getString(this, (S + "_for")))
137- let U = extract(getString(this, (S + "_against")))
138- let V = n(T)
139- let W = n(U)
140- if (if (!(V))
141- then !(W)
150+ let W = extract(getString(this, (V + "_for")))
151+ let X = extract(getString(this, (V + "_against")))
152+ let Y = r(W)
153+ let Z = r(X)
154+ if (if (!(Y))
155+ then !(Z)
142156 else false)
143157 then throw("no side approved defeat")
144158 else {
145- let X = if (V)
146- then U
147- else T
148- let Y = getStringValue(this, (X + "_owner"))
149- let i = extract(getInteger(this, (S + "_amount")))
150- g(f, WriteSet([DataEntry((S + "_paid"), toBase58String(f.transactionId))]), i, addressFromString(Y))
159+ let aa = if (Y)
160+ then X
161+ else W
162+ let ab = getStringValue(this, (aa + "_owner"))
163+ let m = extract(getInteger(this, (V + "_amount")))
164+ k(f, WriteSet([DataEntry((V + "_paid"), toBase58String(f.transactionId))]), m, addressFromString(ab))
151165 }
152166 }
167+
168+
169+
170+@Callable(f)
171+func delegate (ac) = k(f, WriteSet([DataEntry(("delegate_" + toBase58String(f.caller.bytes)), ac)]), 0, unit)
153172
154173

github/deemru/w8io/026f985 
77.26 ms