tx · 5Sbdp8bsXZFhQCmKyuLBP53Ta1HfHB9sm4JbqXAWv9iD

3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe:  -0.01400000 Waves

2020.11.10 18:39 [1259442] smart account 3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe > SELF 0.00000000 Waves

{ "type": 13, "id": "5Sbdp8bsXZFhQCmKyuLBP53Ta1HfHB9sm4JbqXAWv9iD", "fee": 1400000, "feeAssetId": null, "timestamp": 1605022785541, "version": 2, "chainId": 84, "sender": "3MpKvUfNxrgF7QotPjFwi8thMagSveNScKe", "senderPublicKey": "9GE2xN4fms9YNDxR1hGg52RynqDd8125TA42g4X29ZV7", "proofs": [ "44YAtPm4WiVEFp3cXpeFSbmErtpJZ1E1HM36x7XFz4HqtbTvhghL97qdfgJ3KcxHDR3anxoLSPtGVqCYXiXtLqct" ], "script": "base64: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", "height": 1259442, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A3zUQAMN52oDDVDcmChLRTMxfVz8ir2ZJU65egy6Mwed Next: AGUmHk5ndUsGSLdTyz5KcRdDWrPqxu2e7je2xaxuGH83 Diff:
OldNewDifferences
1919 }
2020
2121
22-func h (i,j) = (keccak256(blake2b256(toBytes(i))) == fromBase58String(j))
22+func h (i,j) = {
23+ let k = toBytes(toBase58String(keccak256(blake2b256(toBytes(i)))))
24+ sigVerify(k, fromBase58String(j), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS')
25+ }
2326
2427
25-@Callable(k)
26-func opbrBuy (d,l,m,n) = {
27- let o = toBase58String(k.caller.bytes)
28- let p = k.payments
29- let q = c(d)
30- if ((size(p) == 0))
28+@Callable(l)
29+func opbrBuy (d,m,n,o) = {
30+ let p = toBase58String(l.caller.bytes)
31+ let q = l.payments
32+ let r = c(d)
33+ if ((size(q) == 0))
3134 then throw("Payment for exchange is mandatory")
32- else if ((size(p) == 2))
35+ else if ((size(q) == 2))
3336 then throw("Only one payment per transaction is allowed")
34- else if (!(h((d + toString(((l + m) + p[0].amount))), n)))
35- then throw("Purchase information is incompatible")
36- else if (if (isDefined(p[0].assetId))
37- then (q == false)
37+ else if (!(h((d + toString((m + q[0].amount))), o)))
38+ then throw("Stop hacking me!")
39+ else if (if (isDefined(q[0].assetId))
40+ then (r == false)
3841 else false)
3942 then throw("The used token is not accepted")
40- else if (if (isDefined(p[0].assetId))
41- then (fromBase58String(d) != p[0].assetId)
43+ else if (if (isDefined(q[0].assetId))
44+ then (fromBase58String(d) != q[0].assetId)
4245 else false)
4346 then throw("declared token is different from submitted token")
4447 else {
45- let i = fraction(1, p[0].amount, 100)
46-[ScriptTransfer(k.caller, l, b), ScriptTransfer(a, i, p[0].assetId)]
48+ let s = fraction(1, q[0].amount, 100)
49+[ScriptTransfer(l.caller, m, b), ScriptTransfer(a, s, q[0].assetId)]
4750 }
4851 }
4952
5053
5154
52-@Callable(k)
53-func tokenList (d,r) = {
54- let s = toBase58String(k.caller.bytes)
55- if (if ((s != toString(this)))
56- then (s != toString(a))
55+@Callable(l)
56+func tokenList (d,t) = {
57+ let u = toBase58String(l.caller.bytes)
58+ if (if ((u != toString(this)))
59+ then (u != toString(a))
5760 else false)
5861 then throw("The address is not authorized to list tokens")
59- else [StringEntry(d, r), ScriptTransfer(a, 1000000, unit)]
62+ else [StringEntry(d, t), ScriptTransfer(a, 1000000, unit)]
6063 }
6164
6265
6366
64-@Callable(k)
67+@Callable(l)
6568 func tokenDelist (d) = {
66- let s = toBase58String(k.caller.bytes)
67- if (if ((s != toString(this)))
68- then (s != toString(a))
69+ let u = toBase58String(l.caller.bytes)
70+ if (if ((u != toString(this)))
71+ then (u != toString(a))
6972 else false)
7073 then throw("The address is not authorized to delist tokens")
7174 else [DeleteEntry(d), ScriptTransfer(a, 10000000, unit)]
7275 }
7376
7477
75-@Verifier(t)
76-func u () = sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey)
78+@Verifier(v)
79+func w () = sigVerify(v.bodyBytes, v.proofs[0], v.senderPublicKey)
7780
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = addressFromPublicKey(fromBase58String("J7vyoUA8Gd5QMq4YVtedpv19dwCYroZEYrN8bKgLzqV8"))
55
66 let b = base58'HMov2457acf5MEJr85fvXYL3vrTEevFpsEQkHh1yfdUT'
77
88 func c (d) = {
99 let e = {
1010 let f = getString(this, d)
1111 if ($isInstanceOf(f, "String"))
1212 then {
1313 let g = f
1414 g
1515 }
1616 else false
1717 }
1818 e
1919 }
2020
2121
22-func h (i,j) = (keccak256(blake2b256(toBytes(i))) == fromBase58String(j))
22+func h (i,j) = {
23+ let k = toBytes(toBase58String(keccak256(blake2b256(toBytes(i)))))
24+ sigVerify(k, fromBase58String(j), base58'C8jRoXECFheT6JPcAkcyWPadYbxBA6tSyAqXqjq5dicS')
25+ }
2326
2427
25-@Callable(k)
26-func opbrBuy (d,l,m,n) = {
27- let o = toBase58String(k.caller.bytes)
28- let p = k.payments
29- let q = c(d)
30- if ((size(p) == 0))
28+@Callable(l)
29+func opbrBuy (d,m,n,o) = {
30+ let p = toBase58String(l.caller.bytes)
31+ let q = l.payments
32+ let r = c(d)
33+ if ((size(q) == 0))
3134 then throw("Payment for exchange is mandatory")
32- else if ((size(p) == 2))
35+ else if ((size(q) == 2))
3336 then throw("Only one payment per transaction is allowed")
34- else if (!(h((d + toString(((l + m) + p[0].amount))), n)))
35- then throw("Purchase information is incompatible")
36- else if (if (isDefined(p[0].assetId))
37- then (q == false)
37+ else if (!(h((d + toString((m + q[0].amount))), o)))
38+ then throw("Stop hacking me!")
39+ else if (if (isDefined(q[0].assetId))
40+ then (r == false)
3841 else false)
3942 then throw("The used token is not accepted")
40- else if (if (isDefined(p[0].assetId))
41- then (fromBase58String(d) != p[0].assetId)
43+ else if (if (isDefined(q[0].assetId))
44+ then (fromBase58String(d) != q[0].assetId)
4245 else false)
4346 then throw("declared token is different from submitted token")
4447 else {
45- let i = fraction(1, p[0].amount, 100)
46-[ScriptTransfer(k.caller, l, b), ScriptTransfer(a, i, p[0].assetId)]
48+ let s = fraction(1, q[0].amount, 100)
49+[ScriptTransfer(l.caller, m, b), ScriptTransfer(a, s, q[0].assetId)]
4750 }
4851 }
4952
5053
5154
52-@Callable(k)
53-func tokenList (d,r) = {
54- let s = toBase58String(k.caller.bytes)
55- if (if ((s != toString(this)))
56- then (s != toString(a))
55+@Callable(l)
56+func tokenList (d,t) = {
57+ let u = toBase58String(l.caller.bytes)
58+ if (if ((u != toString(this)))
59+ then (u != toString(a))
5760 else false)
5861 then throw("The address is not authorized to list tokens")
59- else [StringEntry(d, r), ScriptTransfer(a, 1000000, unit)]
62+ else [StringEntry(d, t), ScriptTransfer(a, 1000000, unit)]
6063 }
6164
6265
6366
64-@Callable(k)
67+@Callable(l)
6568 func tokenDelist (d) = {
66- let s = toBase58String(k.caller.bytes)
67- if (if ((s != toString(this)))
68- then (s != toString(a))
69+ let u = toBase58String(l.caller.bytes)
70+ if (if ((u != toString(this)))
71+ then (u != toString(a))
6972 else false)
7073 then throw("The address is not authorized to delist tokens")
7174 else [DeleteEntry(d), ScriptTransfer(a, 10000000, unit)]
7275 }
7376
7477
75-@Verifier(t)
76-func u () = sigVerify(t.bodyBytes, t.proofs[0], t.senderPublicKey)
78+@Verifier(v)
79+func w () = sigVerify(v.bodyBytes, v.proofs[0], v.senderPublicKey)
7780

github/deemru/w8io/3ef1775 
60.70 ms