tx · 7yTcDBLfPYvyzFuLGZbQMRNTwKcFvbNTrBUvQvxhEVAY

3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue:  -0.01400000 Waves

2021.12.02 10:51 [1816381] smart account 3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue > SELF 0.00000000 Waves

{ "type": 13, "id": "7yTcDBLfPYvyzFuLGZbQMRNTwKcFvbNTrBUvQvxhEVAY", "fee": 1400000, "feeAssetId": null, "timestamp": 1638431526487, "version": 2, "chainId": 84, "sender": "3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue", "senderPublicKey": "9tHFZ3PMkyXBYPkjU77RdMPEGBzfm7BWxfuHvGjgdrv5", "proofs": [ "38n2nKVRLTU9QrAdLXiR3DtWQVzJgFW9hrHjXfstExfdDoQjffhwNejrTX5Tz6ueCyD8WTEiAhNqhmXX6raPbVLy" ], "script": "base64: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", "height": 1816381, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dq3yM1iJ9TYCWftAZCCw7yhh38B1iNB6DBK5smJiTXWs Next: 68vEkzF76dyop3nTFC7sVep9KXsXBrKaZsiCfpvWZXKu Diff:
OldNewDifferences
77 func c (b) = (b + "_owner")
88
99
10-func d (e) = {
11- let f = {
12- let g = getInteger(this, e)
13- if ($isInstanceOf(g, "Int"))
10+func d (b) = (b + "_issuer")
11+
12+
13+func e (f) = {
14+ let g = {
15+ let h = getInteger(this, f)
16+ if ($isInstanceOf(h, "Int"))
1417 then {
15- let h = g
16- h
18+ let i = h
19+ i
1720 }
1821 else 0
1922 }
20- f
23+ g
2124 }
2225
2326
24-func i (e) = {
25- let f = {
26- let g = getString(this, e)
27- if ($isInstanceOf(g, "String"))
27+func j (f) = {
28+ let g = {
29+ let h = getString(this, f)
30+ if ($isInstanceOf(h, "String"))
2831 then {
29- let h = g
30- h
32+ let i = h
33+ i
3134 }
3235 else ""
3336 }
34- f
37+ g
3538 }
3639
3740
38-@Callable(j)
39-func offerForSale (k) = {
40- let l = value(j.payments[0])
41- let m = {
42- let g = l.assetId
43- if ($isInstanceOf(g, "ByteVector"))
41+@Callable(k)
42+func offerForSale (l) = {
43+ let m = value(k.payments[0])
44+ let n = {
45+ let h = m.assetId
46+ if ($isInstanceOf(h, "ByteVector"))
4447 then {
45- let n = g
46- n
48+ let o = h
49+ o
4750 }
48- else if ($isInstanceOf(g, "Unit"))
51+ else if ($isInstanceOf(h, "Unit"))
4952 then {
50- let o = g
53+ let p = h
5154 throw("Asset is not NFT")
5255 }
5356 else throw("Match error")
5457 }
55- let p = toBase58String(m)
58+ let q = toBase58String(n)
5659 let b = {
57- let g = assetInfo(m)
58- if ($isInstanceOf(g, "Asset"))
60+ let h = assetInfo(n)
61+ if ($isInstanceOf(h, "Asset"))
5962 then {
60- let q = g
61- q
63+ let r = h
64+ r
6265 }
6366 else throw("Error getting information about asset")
6467 }
6871 then b.reissuable
6972 else false)
7073 then throw("Asset is not NFT")
71- else [IntegerEntry(a(p), k), StringEntry(c(p), toBase58String(j.caller.bytes))]
74+ else [IntegerEntry(a(q), l), StringEntry(c(q), toBase58String(k.caller.bytes)), StringEntry(d(q), toBase58String(b.issuer.bytes))]
7275 }
7376
7477
7578
76-@Callable(j)
77-func buy (r) = {
78- let k = d(a(r))
79- let s = i(c(r))
80- let t = {
81- let g = addressFromString(s)
82- if ($isInstanceOf(g, "Address"))
79+@Callable(k)
80+func buy (s) = {
81+ let l = e(a(s))
82+ let t = j(c(s))
83+ let u = {
84+ let h = addressFromString(t)
85+ if ($isInstanceOf(h, "Address"))
8386 then {
84- let q = g
85- q
87+ let r = h
88+ r
8689 }
8790 else throw("Address parsing error")
8891 }
89- let l = value(j.payments[0])
90- let u = {
91- let g = l.assetId
92- if ($isInstanceOf(g, "ByteVector"))
92+ let m = value(k.payments[0])
93+ let v = {
94+ let h = m.assetId
95+ if ($isInstanceOf(h, "ByteVector"))
9396 then {
94- let v = g
97+ let w = h
9598 true
9699 }
97- else if ($isInstanceOf(g, "Unit"))
100+ else if ($isInstanceOf(h, "Unit"))
98101 then {
99- let o = g
102+ let p = h
100103 false
101104 }
102105 else throw("Match error")
103106 }
104- if ((k == 0))
107+ if ((l == 0))
105108 then throw("This NFT is not for sale")
106- else if (u)
109+ else if (v)
107110 then throw("Payment must be in Waves tokens only")
108- else if ((k > l.amount))
111+ else if ((l > m.amount))
109112 then throw("Insufficient funds")
110- else [ScriptTransfer(j.caller, 1, fromBase58String(r)), ScriptTransfer(t, k, unit), DeleteEntry(a(r)), DeleteEntry(c(r))]
113+ else {
114+ let x = ((l / 100) * 5)
115+[ScriptTransfer(k.caller, 1, fromBase58String(s)), ScriptTransfer(u, (l - x), unit), DeleteEntry(a(s)), DeleteEntry(c(s)), DeleteEntry(d(s))]
116+ }
111117 }
112118
113119
114120
115-@Callable(j)
116-func cancelSelling (r) = {
117- let s = i(c(r))
118- let t = {
119- let g = addressFromString(s)
120- if ($isInstanceOf(g, "Address"))
121+@Callable(k)
122+func cancelSelling (s) = {
123+ let t = j(c(s))
124+ let u = {
125+ let h = addressFromString(t)
126+ if ($isInstanceOf(h, "Address"))
121127 then {
122- let q = g
123- q
128+ let r = h
129+ r
124130 }
125131 else throw("Address parsing error")
126132 }
127- if ((s != toBase58String(j.caller.bytes)))
133+ if ((t != toBase58String(k.caller.bytes)))
128134 then throw("The calling address is not the owner of the NFT token")
129- else [ScriptTransfer(j.caller, 1, fromBase58String(r)), DeleteEntry(a(r)), DeleteEntry(c(r))]
135+ else [ScriptTransfer(k.caller, 1, fromBase58String(s)), DeleteEntry(a(s)), DeleteEntry(c(s)), DeleteEntry(d(s))]
130136 }
131137
132138
133-@Verifier(w)
134-func x () = sigVerify(w.bodyBytes, w.proofs[0], w.senderPublicKey)
139+@Verifier(y)
140+func z () = sigVerify(y.bodyBytes, y.proofs[0], y.senderPublicKey)
135141
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = (b + "_price")
55
66
77 func c (b) = (b + "_owner")
88
99
10-func d (e) = {
11- let f = {
12- let g = getInteger(this, e)
13- if ($isInstanceOf(g, "Int"))
10+func d (b) = (b + "_issuer")
11+
12+
13+func e (f) = {
14+ let g = {
15+ let h = getInteger(this, f)
16+ if ($isInstanceOf(h, "Int"))
1417 then {
15- let h = g
16- h
18+ let i = h
19+ i
1720 }
1821 else 0
1922 }
20- f
23+ g
2124 }
2225
2326
24-func i (e) = {
25- let f = {
26- let g = getString(this, e)
27- if ($isInstanceOf(g, "String"))
27+func j (f) = {
28+ let g = {
29+ let h = getString(this, f)
30+ if ($isInstanceOf(h, "String"))
2831 then {
29- let h = g
30- h
32+ let i = h
33+ i
3134 }
3235 else ""
3336 }
34- f
37+ g
3538 }
3639
3740
38-@Callable(j)
39-func offerForSale (k) = {
40- let l = value(j.payments[0])
41- let m = {
42- let g = l.assetId
43- if ($isInstanceOf(g, "ByteVector"))
41+@Callable(k)
42+func offerForSale (l) = {
43+ let m = value(k.payments[0])
44+ let n = {
45+ let h = m.assetId
46+ if ($isInstanceOf(h, "ByteVector"))
4447 then {
45- let n = g
46- n
48+ let o = h
49+ o
4750 }
48- else if ($isInstanceOf(g, "Unit"))
51+ else if ($isInstanceOf(h, "Unit"))
4952 then {
50- let o = g
53+ let p = h
5154 throw("Asset is not NFT")
5255 }
5356 else throw("Match error")
5457 }
55- let p = toBase58String(m)
58+ let q = toBase58String(n)
5659 let b = {
57- let g = assetInfo(m)
58- if ($isInstanceOf(g, "Asset"))
60+ let h = assetInfo(n)
61+ if ($isInstanceOf(h, "Asset"))
5962 then {
60- let q = g
61- q
63+ let r = h
64+ r
6265 }
6366 else throw("Error getting information about asset")
6467 }
6568 if (if (if ((b.quantity != 1))
6669 then (b.decimals != 0)
6770 else false)
6871 then b.reissuable
6972 else false)
7073 then throw("Asset is not NFT")
71- else [IntegerEntry(a(p), k), StringEntry(c(p), toBase58String(j.caller.bytes))]
74+ else [IntegerEntry(a(q), l), StringEntry(c(q), toBase58String(k.caller.bytes)), StringEntry(d(q), toBase58String(b.issuer.bytes))]
7275 }
7376
7477
7578
76-@Callable(j)
77-func buy (r) = {
78- let k = d(a(r))
79- let s = i(c(r))
80- let t = {
81- let g = addressFromString(s)
82- if ($isInstanceOf(g, "Address"))
79+@Callable(k)
80+func buy (s) = {
81+ let l = e(a(s))
82+ let t = j(c(s))
83+ let u = {
84+ let h = addressFromString(t)
85+ if ($isInstanceOf(h, "Address"))
8386 then {
84- let q = g
85- q
87+ let r = h
88+ r
8689 }
8790 else throw("Address parsing error")
8891 }
89- let l = value(j.payments[0])
90- let u = {
91- let g = l.assetId
92- if ($isInstanceOf(g, "ByteVector"))
92+ let m = value(k.payments[0])
93+ let v = {
94+ let h = m.assetId
95+ if ($isInstanceOf(h, "ByteVector"))
9396 then {
94- let v = g
97+ let w = h
9598 true
9699 }
97- else if ($isInstanceOf(g, "Unit"))
100+ else if ($isInstanceOf(h, "Unit"))
98101 then {
99- let o = g
102+ let p = h
100103 false
101104 }
102105 else throw("Match error")
103106 }
104- if ((k == 0))
107+ if ((l == 0))
105108 then throw("This NFT is not for sale")
106- else if (u)
109+ else if (v)
107110 then throw("Payment must be in Waves tokens only")
108- else if ((k > l.amount))
111+ else if ((l > m.amount))
109112 then throw("Insufficient funds")
110- else [ScriptTransfer(j.caller, 1, fromBase58String(r)), ScriptTransfer(t, k, unit), DeleteEntry(a(r)), DeleteEntry(c(r))]
113+ else {
114+ let x = ((l / 100) * 5)
115+[ScriptTransfer(k.caller, 1, fromBase58String(s)), ScriptTransfer(u, (l - x), unit), DeleteEntry(a(s)), DeleteEntry(c(s)), DeleteEntry(d(s))]
116+ }
111117 }
112118
113119
114120
115-@Callable(j)
116-func cancelSelling (r) = {
117- let s = i(c(r))
118- let t = {
119- let g = addressFromString(s)
120- if ($isInstanceOf(g, "Address"))
121+@Callable(k)
122+func cancelSelling (s) = {
123+ let t = j(c(s))
124+ let u = {
125+ let h = addressFromString(t)
126+ if ($isInstanceOf(h, "Address"))
121127 then {
122- let q = g
123- q
128+ let r = h
129+ r
124130 }
125131 else throw("Address parsing error")
126132 }
127- if ((s != toBase58String(j.caller.bytes)))
133+ if ((t != toBase58String(k.caller.bytes)))
128134 then throw("The calling address is not the owner of the NFT token")
129- else [ScriptTransfer(j.caller, 1, fromBase58String(r)), DeleteEntry(a(r)), DeleteEntry(c(r))]
135+ else [ScriptTransfer(k.caller, 1, fromBase58String(s)), DeleteEntry(a(s)), DeleteEntry(c(s)), DeleteEntry(d(s))]
130136 }
131137
132138
133-@Verifier(w)
134-func x () = sigVerify(w.bodyBytes, w.proofs[0], w.senderPublicKey)
139+@Verifier(y)
140+func z () = sigVerify(y.bodyBytes, y.proofs[0], y.senderPublicKey)
135141

github/deemru/w8io/169f3d6 
56.37 ms