tx · GKQCk2SbJJ7mYdw3VHswNq2GY4csuy7bf3Um1PxZbYWV

3N2c38oS2z4k4t4VKEwqoKLQTsbQoM4Ke9H:  -0.01400000 Waves

2021.06.07 14:14 [1559868] smart account 3N2c38oS2z4k4t4VKEwqoKLQTsbQoM4Ke9H > SELF 0.00000000 Waves

{ "type": 13, "id": "GKQCk2SbJJ7mYdw3VHswNq2GY4csuy7bf3Um1PxZbYWV", "fee": 1400000, "feeAssetId": null, "timestamp": 1623064484724, "version": 2, "chainId": 84, "sender": "3N2c38oS2z4k4t4VKEwqoKLQTsbQoM4Ke9H", "senderPublicKey": "BzfS7SAnfHHWF9MwvLE52diURPKozXxTitzcz3FEkduL", "proofs": [ "25VNHx1TNmpYVRSf181wL136WUnVTJzTVz45ER53g6X3vfu3PqBX9m58h8MHAPaZoYbW3YFrduNZha4eyPGqHE2K" ], "script": "base64:AAIEAAAAAAAAAEAIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIAAAAKwAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05CeW5mYlhDMkthc3RVeGh1a2NNVWFFNThLOWNCZEI5VVkAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAADAAAAAApjcmVhdG9yQ3V0AAAAAAAAAAAKAAAAAAtkYXBwUnVu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AAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgQAAAAHc2lnbkZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkBAAAAApjcmVhdG9yRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQEAAAACG93bmVyRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAJc2FsZU93bmVyBQAAAA5hbW91bnRGb3JPd25lcgUAAAAHYXNzZXRJZAQAAAAMY29sbGVjdG9yRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkCQAFFgAAAAQFAAAAB3NpZ25GZWUFAAAACmNyZWF0b3JGZWUFAAAACG93bmVyRmVlBQAAAAxjb2xsZWN0b3JGZWUBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIAAAAHYXNzZXRJZAAAAAVwcmljZQQAAAAMbWluU2VsbFdhdmVzAwUAAAAIdW5pdFRlc3QAAAAAAAAAAAoJAQAAABNnZXRJbnRCeUtGcm9tT3JhY2xlAAAAAQIAAAAOd2F2ZXNfbWluX3NlbGwEAAAAC21pblNlbGxVc2RuAAAAAAAAD0JABAAAAAttaW5TZWxsU2lnbgMFAAAACHVuaXRUZXN0AAAAAAAAAAABCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIDAwMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAA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", "height": 1559868, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2gjCPSR1DtqvMAPR9Vvnr1Xw92hgMfDZrrkU57wo8v35 Next: 8LCx3QT1h7jbbrzBRosW6TYmgkwJUVinkAvRicikAKcz Diff:
OldNewDifferences
6767 func F (G) = ("nft_" + G)
6868
6969
70-func H (I) = if (!(o))
71- then throw(p)
72- else $Tuple3(toBase58String(I.transactionId), toBase58String(I.caller.bytes), lastBlock.timestamp)
70+func H (v) = valueOrErrorMessage(getInteger(b, v), "Integer undefine or 0 in oracle")
7371
7472
75-func J (I) = if ((size(I.payments) == 0))
73+let I = H(("certification_fee_" + toBase58String(h)))
74+
75+func J (K) = if (!(o))
76+ then throw(p)
77+ else $Tuple3(toBase58String(K.transactionId), toBase58String(K.caller.bytes), lastBlock.timestamp)
78+
79+
80+func L (K) = if ((size(K.payments) == 0))
7681 then throw("No payment attached")
7782 else {
78- let K = value(I.payments[0])
79- let L = value(K.amount)
80- $Tuple2(K, L)
83+ let M = value(K.payments[0])
84+ let N = value(M.amount)
85+ $Tuple2(M, N)
8186 }
8287
8388
84-func M (G) = {
85- let N = value(assetInfo(G))
86- if (if (if (if ((N.quantity != 1))
89+func O (G) = {
90+ let P = value(assetInfo(G))
91+ if (if (if (if ((P.quantity != 1))
8792 then true
88- else (N.decimals != 0))
93+ else (P.decimals != 0))
8994 then true
90- else (N.reissuable != false))
95+ else (P.reissuable != false))
9196 then true
92- else (N.issuer != d))
97+ else (P.issuer != d))
9398 then false
9499 else true
95100 }
96101
97102
98-func O (P) = if (if (if (if ((P != toBase58String(h)))
99- then (P != toBase58String(j))
103+func Q (R) = if (if (if (if ((R != toBase58String(h)))
104+ then (R != toBase58String(j))
100105 else false)
101- then (P != "WAVES")
106+ then (R != "WAVES")
102107 else false)
103- then (P != toBase58String(i))
108+ then (R != toBase58String(i))
104109 else false)
105110 then false
106111 else true
107112
108113
109-func Q (P) = if ((P == "WAVES"))
114+func S (R) = if ((R == "WAVES"))
110115 then unit
111- else fromBase58String(P)
116+ else fromBase58String(R)
112117
113118
114-func R (S) = {
115- let T = x(("current_owner_on_dapp_" + S))
116- if ((size(T) == 0))
119+func T (U) = {
120+ let V = x(("current_owner_on_dapp_" + U))
121+ if ((size(V) == 0))
117122 then throw("NFT not found")
118123 else {
119- let U = x(((("sale2nd_status_" + T) + "_") + S))
120- if ((U != "OPEN"))
124+ let W = x(((("sale2nd_status_" + V) + "_") + U))
125+ if ((W != "OPEN"))
121126 then throw("NFT not for sale")
122- else T
127+ else V
123128 }
124129 }
125130
126131
127-func V (v) = {
128- let W = x((v + "_OPEN"))
129- if ((W == ""))
132+func X (v) = {
133+ let Y = x((v + "_OPEN"))
134+ if ((Y == ""))
130135 then throw("Offer not found")
131136 else {
132- let X = split(W, "_")
133- let P = Q(X[2])
134- $Tuple3(X, P, W)
137+ let Z = split(Y, "_")
138+ let R = S(Z[2])
139+ $Tuple3(Z, R, Y)
135140 }
136141 }
137142
138143
139-func Y (A,G) = {
140- let Z = w(E(A, G))
141- if (if ((Z == s))
144+func aa (A,G) = {
145+ let ab = w(E(A, G))
146+ if (if ((ab == s))
142147 then true
143- else (Z == t))
144- then throw(("Original Artwork flagged as " + Z))
148+ else (ab == t))
149+ then throw(("Original Artwork flagged as " + ab))
145150 else true
146151 }
147152
148153
149-func aa (A) = {
150- let ab = u(z(A))
151- if (containsElement([q, r], ab))
152- then throw(("Original Artist " + ab))
154+func ac (A) = {
155+ let ad = u(z(A))
156+ if (containsElement([q, r], ad))
157+ then throw(("Original Artist " + ad))
153158 else true
154159 }
155160
156161
157-func ac (P) = {
158- let ad = split(w(F(P)), "_")
159- let ae = w(B(ad[6], ad[5]))
160- if ((size(ae) == 0))
162+func ae (R) = {
163+ let af = split(w(F(R)), "_")
164+ let ag = w(B(af[6], af[5]))
165+ if ((size(ag) == 0))
161166 then throw("Artwork not found on SIGN Art")
162- else if (if (!(Y(ad[6], ad[5])))
163- then !(aa(ad[6]))
167+ else if (if (!(aa(af[6], af[5])))
168+ then !(ac(af[6]))
164169 else false)
165- then $Tuple3(false, ad[5], ad[6])
166- else $Tuple3(true, ad[5], ad[6])
170+ then $Tuple3(false, af[5], af[6])
171+ else $Tuple3(true, af[5], af[6])
167172 }
168173
169174
170-func af (D,ag) = {
171- let ae = w(B(ag, D))
172- if ((size(ae) == 0))
175+func ah (D,ai) = {
176+ let ag = w(B(ai, D))
177+ if ((size(ag) == 0))
173178 then throw("Artwork not found on SIGN Art")
174- else if (if (!(Y(ag, D)))
175- then !(aa(ag))
179+ else if (if (!(aa(ai, D)))
180+ then !(ac(ai))
176181 else false)
177182 then false
178183 else true
179184 }
180185
181186
182-func ah (L,P,S,ag,T,ai) = {
183- let aj = fraction(L, m, 100)
184- let ak = fraction(L, n, 100)
185- let al = (L - (aj + ak))
186- let am = ScriptTransfer(Address(fromBase58String(e)), aj, P)
187- let an = ScriptTransfer(Address(fromBase58String(ag)), ak, P)
188- let ao = ScriptTransfer(Address(fromBase58String(T)), al, P)
189- let ap = ScriptTransfer(Address(fromBase58String(ai)), 1, fromBase58String(S))
190- $Tuple4(am, an, ao, ap)
187+func aj (N,R,U,ai,V,ak) = {
188+ let al = fraction(N, m, 100)
189+ let am = fraction(N, n, 100)
190+ let an = (N - (al + am))
191+ let ao = ScriptTransfer(Address(fromBase58String(e)), al, R)
192+ let ap = ScriptTransfer(Address(fromBase58String(ai)), am, R)
193+ let aq = ScriptTransfer(Address(fromBase58String(V)), an, R)
194+ let ar = ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(U))
195+ $Tuple4(ao, ap, aq, ar)
191196 }
192197
193198
194-@Callable(I)
195-func sellNFT (aq,ar) = {
196- let as = H(I)
197- let G = as._1
198- let ai = as._2
199- let at = as._3
200- let au = J(I)
201- let K = au._1
202- let L = au._2
203- let av = if (if (isDefined(K.assetId))
204- then M(value(K.assetId))
199+func as (R,at) = {
200+ let au = if (a)
201+ then 10
202+ else H("waves_min_sell")
203+ let av = 1000000
204+ let aw = if (a)
205+ then 1
206+ else (I * 2)
207+ if (if (if (if (if ((R == toBase58String(i)))
208+ then (av > at)
205209 else false)
206- then toBase58String(value(K.assetId))
210+ then (at != 0)
211+ else false)
212+ then true
213+ else if (if ((R == toBase58String(h)))
214+ then (aw > at)
215+ else false)
216+ then (at != 0)
217+ else false)
218+ then true
219+ else if (if (if ((R == toBase58String(j)))
220+ then true
221+ else (R == "WAVES"))
222+ then (au > at)
223+ else false)
224+ then (at != 0)
225+ else false)
226+ then throw("Wrong minimum sell price")
227+ else true
228+ }
229+
230+
231+@Callable(K)
232+func sellNFT (at,ax) = {
233+ let ay = J(K)
234+ let G = ay._1
235+ let ak = ay._2
236+ let az = ay._3
237+ let aA = L(K)
238+ let M = aA._1
239+ let N = aA._2
240+ let aB = if (if (isDefined(M.assetId))
241+ then O(value(M.assetId))
242+ else false)
243+ then toBase58String(value(M.assetId))
207244 else throw("Only SIGN Art NFT accepted.")
208- if (!(O(ar)))
245+ if (!(Q(ax)))
209246 then throw("Only SIGN, USDN or WAVES accepted")
247+ else if (!(as(ax, at)))
248+ then throw("Something went wrong")
249+ else {
250+ let aC = ae(aB)
251+ let aD = aC._1
252+ let D = aC._2
253+ let ai = aC._3
254+ if (!(aD))
255+ then throw("Something went wrong")
256+ else [StringEntry((((((("sale2nd_info_" + ak) + "_") + aB) + "_") + ai) + "_OPEN"), ((((((((((((toString(az) + "_") + toString(at)) + "_") + ax) + "_") + aB) + "_") + D) + "_") + ai) + "_") + G)), StringEntry(((("sale2nd_status_" + ak) + "_") + aB), "OPEN"), StringEntry(("current_owner_on_dapp_" + aB), ak)]
257+ }
258+ }
259+
260+
261+
262+@Callable(K)
263+func updateSalePrice (U,at,ax) = {
264+ let aE = J(K)
265+ let G = aE._1
266+ let ak = aE._2
267+ let az = aE._3
268+ let V = x(("current_owner_on_dapp_" + U))
269+ if ((V != ak))
270+ then throw("You don't own this NFT")
210271 else {
211- let aw = ac(av)
212- let ax = aw._1
213- let D = aw._2
214- let ag = aw._3
215- if (!(ax))
216- then throw("Something went wrong")
217- else [StringEntry((((((("sale2nd_info_" + ai) + "_") + av) + "_") + ag) + "_OPEN"), ((((((((((((toString(at) + "_") + toString(aq)) + "_") + ar) + "_") + av) + "_") + D) + "_") + ag) + "_") + G)), StringEntry(((("sale2nd_status_" + ai) + "_") + av), "OPEN"), StringEntry(("current_owner_on_dapp_" + av), ai)]
272+ let W = x(((("sale2nd_status_" + ak) + "_") + U))
273+ if ((W != "OPEN"))
274+ then throw("Sale not active")
275+ else if (!(Q(ax)))
276+ then throw("Only SIGN, USDN or WAVES accepted")
277+ else {
278+ let ai = split(w(F(U)), "_")[6]
279+ let aF = split(x(((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + W)), "_")
280+[StringEntry((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_OPEN"), ((((((((((((aF[0] + "_") + toString(at)) + "_") + ax) + "_") + aF[3]) + "_") + aF[4]) + "_") + aF[5]) + "_") + aF[6]))]
281+ }
218282 }
219283 }
220284
221285
222286
223-@Callable(I)
224-func updateSalePrice (S,aq,ar) = {
225- let ay = H(I)
226- let G = ay._1
227- let ai = ay._2
228- let at = ay._3
229- let T = x(("current_owner_on_dapp_" + S))
230- if ((T != ai))
287+@Callable(K)
288+func cancelSale (U) = {
289+ let aG = J(K)
290+ let G = aG._1
291+ let ak = aG._2
292+ let az = aG._3
293+ let V = x(("current_owner_on_dapp_" + U))
294+ if ((V != ak))
231295 then throw("You don't own this NFT")
232296 else {
233- let U = x(((("sale2nd_status_" + ai) + "_") + S))
234- if ((U != "OPEN"))
297+ let W = x(((("sale2nd_status_" + ak) + "_") + U))
298+ if ((W != "OPEN"))
235299 then throw("Sale not active")
236300 else {
237- let ag = split(w(F(S)), "_")[6]
238- let az = split(x(((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + U)), "_")
239-[StringEntry((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_OPEN"), ((((((((((((az[0] + "_") + toString(aq)) + "_") + ar) + "_") + az[3]) + "_") + az[4]) + "_") + az[5]) + "_") + az[6]))]
301+ let ai = split(w(F(U)), "_")[6]
302+ let aF = x(((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + W))
303+[DeleteEntry((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ak) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + G) + "_CANCELLED"), ((((aF + "_CANCELLED_") + toString(az)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(U))]
240304 }
241305 }
242306 }
243307
244308
245309
246-@Callable(I)
247-func cancelSale (S) = {
248- let aA = H(I)
249- let G = aA._1
250- let ai = aA._2
251- let at = aA._3
252- let T = x(("current_owner_on_dapp_" + S))
253- if ((T != ai))
254- then throw("You don't own this NFT")
255- else {
256- let U = x(((("sale2nd_status_" + ai) + "_") + S))
257- if ((U != "OPEN"))
258- then throw("Sale not active")
259- else {
260- let ag = split(w(F(S)), "_")[6]
261- let az = x(((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + U))
262-[DeleteEntry((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ai) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + G) + "_CANCELLED"), ((((az + "_CANCELLED_") + toString(at)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ai)), 1, fromBase58String(S))]
263- }
264- }
265- }
266-
267-
268-
269-@Callable(I)
270-func buyNFT (S) = {
271- let aB = H(I)
272- let G = aB._1
273- let ai = aB._2
274- let at = aB._3
275- let T = R(S)
276- let aC = ac(S)
277- let ax = aC._1
278- let D = aC._2
279- let ag = aC._3
280- if (!(ax))
310+@Callable(K)
311+func buyNFT (U) = {
312+ let aH = J(K)
313+ let G = aH._1
314+ let ak = aH._2
315+ let az = aH._3
316+ let V = T(U)
317+ let aI = ae(U)
318+ let aD = aI._1
319+ let D = aI._2
320+ let ai = aI._3
321+ if (!(aD))
281322 then throw("Something went wrong")
282323 else {
283- let az = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
284- if ((size(az) == 0))
324+ let aF = x((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_OPEN"))
325+ if ((size(aF) == 0))
285326 then throw("Sale Not found!")
286327 else {
287- let aD = split(az, "_")
288- if ((parseInt(aD[1]) == 0))
328+ let aJ = split(aF, "_")
329+ if ((parseInt(aJ[1]) == 0))
289330 then throw("Offer only")
290331 else {
291- let aE = J(I)
292- let K = aE._1
293- let L = aE._2
294- let aF = if (isDefined(K.assetId))
295- then toBase58String(value(K.assetId))
332+ let aK = L(K)
333+ let M = aK._1
334+ let N = aK._2
335+ let aL = if (isDefined(M.assetId))
336+ then toBase58String(value(M.assetId))
296337 else ""
297- if (if ((aD[1] != toString(L)))
338+ if (if ((aJ[1] != toString(N)))
298339 then true
299- else (aD[2] != aF))
340+ else (aJ[2] != aL))
300341 then throw("Payment infos don't match.")
301342 else {
302- let aj = fraction(L, m, 100)
303- let ak = fraction(L, n, 100)
304- let al = (L - (aj + ak))
305- let aG = ah(L, K.assetId, S, ag, T, ai)
306- let am = aG._1
307- let an = aG._2
308- let ao = aG._3
309- let ap = aG._4
310-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + G) + "_CLOSED"), ((((((makeString(aD, "_") + "_CLOSED_") + toString(at)) + "_") + G) + "_") + ai)), am, an, ao, ap]
343+ let al = fraction(N, m, 100)
344+ let am = fraction(N, n, 100)
345+ let an = (N - (al + am))
346+ let aM = aj(N, M.assetId, U, ai, V, ak)
347+ let ao = aM._1
348+ let ap = aM._2
349+ let aq = aM._3
350+ let ar = aM._4
351+[DeleteEntry((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_") + G) + "_CLOSED"), ((((((makeString(aJ, "_") + "_CLOSED_") + toString(az)) + "_") + G) + "_") + ak)), ao, ap, aq, ar]
311352 }
312353 }
313354 }
316357
317358
318359
319-@Callable(I)
320-func setOffer (S) = {
321- let aH = H(I)
322- let G = aH._1
323- let aI = aH._2
324- let at = aH._3
325- let aJ = J(I)
326- let K = aJ._1
327- let L = aJ._2
328- let P = if (!(isDefined(K.assetId)))
360+@Callable(K)
361+func setOffer (U) = {
362+ let aN = J(K)
363+ let G = aN._1
364+ let aO = aN._2
365+ let az = aN._3
366+ let aP = L(K)
367+ let M = aP._1
368+ let N = aP._2
369+ let R = if (!(isDefined(M.assetId)))
329370 then "WAVES"
330- else toBase58String(value(K.assetId))
331- if (!(O(P)))
371+ else toBase58String(value(M.assetId))
372+ if (!(Q(R)))
332373 then throw("asset not accepted")
333374 else {
334- let aK = ac(S)
335- let ax = aK._1
336- let D = aK._2
337- let ag = aK._3
338- if (!(ax))
375+ let aQ = ae(U)
376+ let aD = aQ._1
377+ let D = aQ._2
378+ let ai = aQ._3
379+ if (!(aD))
339380 then throw("Something went wrong")
340381 else {
341- let T = R(S)
342-[StringEntry((((((((("offer2nd_" + aI) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((((((((toString(at) + "_") + toString(L)) + "_") + P) + "_") + S) + "_") + D) + "_") + ag) + "_") + aI) + "_") + G))]
382+ let V = T(U)
383+[StringEntry((((((((("offer2nd_" + aO) + "_") + U) + "_") + V) + "_") + G) + "_OPEN"), ((((((((((((((toString(az) + "_") + toString(N)) + "_") + R) + "_") + U) + "_") + D) + "_") + ai) + "_") + aO) + "_") + G))]
343384 }
344385 }
345386 }
346387
347388
348389
349-@Callable(I)
350-func acceptOffer (S,aL,aI) = {
351- let aM = H(I)
352- let G = aM._1
353- let ai = aM._2
354- let at = aM._3
355- let T = R(S)
356- if ((ai != T))
390+@Callable(K)
391+func acceptOffer (U,aR,aO) = {
392+ let aS = J(K)
393+ let G = aS._1
394+ let ak = aS._2
395+ let az = aS._3
396+ let V = T(U)
397+ if ((ak != V))
357398 then throw("You cannot do this action")
358399 else {
359- let aN = ((((((("offer2nd_" + aI) + "_") + S) + "_") + T) + "_") + aL)
360- let aO = x((aN + "_OPEN"))
361- if ((aO == ""))
400+ let aT = ((((((("offer2nd_" + aO) + "_") + U) + "_") + V) + "_") + aR)
401+ let aU = x((aT + "_OPEN"))
402+ if ((aU == ""))
362403 then throw("Offer not found or not for sale")
363404 else {
364- let aP = ac(S)
365- let ax = aP._1
366- let D = aP._2
367- let ag = aP._3
368- if (!(ax))
405+ let aV = ae(U)
406+ let aD = aV._1
407+ let D = aV._2
408+ let ai = aV._3
409+ if (!(aD))
369410 then throw("Something went wrong")
370411 else {
371- let aQ = ((((("sale2nd_info_" + T) + "_") + S) + "_") + ag)
372- let aR = x((aQ + "_OPEN"))
373- if ((size(aR) == 0))
412+ let aW = ((((("sale2nd_info_" + V) + "_") + U) + "_") + ai)
413+ let aX = x((aW + "_OPEN"))
414+ if ((size(aX) == 0))
374415 then throw("Sale Not found!")
375416 else {
376- let aS = split(aR, "_")
377- let aT = V(aN)
378- let X = aT._1
379- let P = aT._2
380- let W = aT._3
381- let L = value(parseInt(X[1]))
382- let aU = ah(L, P, S, ag, T, X[6])
383- let am = aU._1
384- let an = aU._2
385- let ao = aU._3
386- let ap = aU._4
387-[DeleteEntry((aQ + "_OPEN")), DeleteEntry((aN + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((aN + "_CLOSED"), ((((aO + "_CLOSED_") + toString(at)) + "_") + G)), StringEntry((((aQ + "_") + G) + "_CLOSED"), ((((((((((makeString(aS, "_") + "_CLOSED-OFFER_") + toString(at)) + "_") + G) + "_") + aI) + "_") + toString(L)) + "_") + toBase58String(value(P)))), am, an, ao, ap]
417+ let aY = split(aX, "_")
418+ let aZ = X(aT)
419+ let Z = aZ._1
420+ let R = aZ._2
421+ let Y = aZ._3
422+ let N = value(parseInt(Z[1]))
423+ let ba = aj(N, R, U, ai, V, Z[6])
424+ let ao = ba._1
425+ let ap = ba._2
426+ let aq = ba._3
427+ let ar = ba._4
428+[DeleteEntry((aW + "_OPEN")), DeleteEntry((aT + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((aT + "_CLOSED"), ((((aU + "_CLOSED_") + toString(az)) + "_") + G)), StringEntry((((aW + "_") + G) + "_CLOSED"), ((((((((((makeString(aY, "_") + "_CLOSED-OFFER_") + toString(az)) + "_") + G) + "_") + aO) + "_") + toString(N)) + "_") + toBase58String(value(R)))), ao, ap, aq, ar]
388429 }
389430 }
390431 }
393434
394435
395436
396-@Callable(I)
397-func cancelOffer (S,aL,T) = {
398- let aV = H(I)
399- let G = aV._1
400- let ai = aV._2
401- let at = aV._3
402- let aN = ((((((("offer2nd_" + ai) + "_") + S) + "_") + T) + "_") + aL)
403- let aW = V(aN)
404- let X = aW._1
405- let P = aW._2
406- let W = aW._3
407-[DeleteEntry((aN + "_OPEN")), StringEntry((aN + "_CANCELLED"), ((((W + "_CANCELLED_") + toString(at)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ai)), parseIntValue(X[1]), P)]
437+@Callable(K)
438+func cancelOffer (U,aR,V) = {
439+ let bb = J(K)
440+ let G = bb._1
441+ let ak = bb._2
442+ let az = bb._3
443+ let aT = ((((((("offer2nd_" + ak) + "_") + U) + "_") + V) + "_") + aR)
444+ let bc = X(aT)
445+ let Z = bc._1
446+ let R = bc._2
447+ let Y = bc._3
448+[DeleteEntry((aT + "_OPEN")), StringEntry((aT + "_CANCELLED"), ((((Y + "_CANCELLED_") + toString(az)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ak)), parseIntValue(Z[1]), R)]
408449 }
409450
410451
411452
412-@Callable(I)
413-func makeRequest (D,ag) = {
414- let aX = H(I)
415- let G = aX._1
416- let aY = aX._2
417- let at = aX._3
418- let aZ = J(I)
419- let K = aZ._1
420- let L = aZ._2
421- let P = if (!(isDefined(K.assetId)))
453+@Callable(K)
454+func makeRequest (D,ai) = {
455+ let bd = J(K)
456+ let G = bd._1
457+ let be = bd._2
458+ let az = bd._3
459+ let bf = L(K)
460+ let M = bf._1
461+ let N = bf._2
462+ let R = if (!(isDefined(M.assetId)))
422463 then "WAVES"
423- else toBase58String(value(K.assetId))
424- if (!(O(P)))
464+ else toBase58String(value(M.assetId))
465+ if (!(Q(R)))
425466 then throw("asset not accepted")
426467 else {
427- let ba = af(D, ag)
428- if (!(ba))
468+ let bg = ah(D, ai)
469+ if (!(bg))
429470 then throw("Something went wrong")
430- else [StringEntry((((((((("request2nd_" + aY) + "_") + ag) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(at) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_") + D) + "_") + aY) + "_") + G))]
471+ else [StringEntry((((((((("request2nd_" + be) + "_") + ai) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(az) + "_") + toString(N)) + "_") + toBase58String(value(M.assetId))) + "_") + D) + "_") + be) + "_") + G))]
431472 }
432473 }
433474
434475
435476
436-@Callable(I)
437-func fillRequest (D,aY,aL) = {
438- let bb = H(I)
439- let G = bb._1
440- let T = bb._2
441- let at = bb._3
442- let bc = J(I)
443- let K = bc._1
444- let bd = bc._2
445- let be = if (if (isDefined(K.assetId))
446- then M(value(K.assetId))
477+@Callable(K)
478+func fillRequest (D,be,aR) = {
479+ let bh = J(K)
480+ let G = bh._1
481+ let V = bh._2
482+ let az = bh._3
483+ let bi = L(K)
484+ let M = bi._1
485+ let bj = bi._2
486+ let bk = if (if (isDefined(M.assetId))
487+ then O(value(M.assetId))
447488 else false)
448- then K.assetId
489+ then M.assetId
449490 else throw("No NFT found")
450- let bf = split(w(("nft_" + toBase58String(value(be)))), "_")
451- if ((size(bf) == 0))
491+ let bl = split(w(("nft_" + toBase58String(value(bk)))), "_")
492+ if ((size(bl) == 0))
452493 then throw("No NFT found")
453494 else {
454- let bg = split(x((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_OPEN")), "_")
455- if ((size(bg) == 1))
495+ let bm = split(x((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_OPEN")), "_")
496+ if ((size(bm) == 1))
456497 then throw("No request found")
457- else if ((bg[3] != bf[5]))
498+ else if ((bm[3] != bl[5]))
458499 then throw("This NFT don't match the requested artwork")
459500 else {
460- let L = value(parseInt(bg[1]))
461- let bh = ah(L, fromBase58String(bg[2]), toBase58String(value(be)), bf[6], T, bg[4])
462- let am = bh._1
463- let an = bh._2
464- let ao = bh._3
465- let ap = bh._4
466-[DeleteEntry((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_OPEN")), StringEntry((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_CLOSED"), ((((((((((((toString(at) + "_") + toString(L)) + "_") + bg[2]) + "_") + D) + "_") + aY) + "_") + T) + "_") + G)), am, an, ao, ap]
501+ let N = value(parseInt(bm[1]))
502+ let bn = aj(N, fromBase58String(bm[2]), toBase58String(value(bk)), bl[6], V, bm[4])
503+ let ao = bn._1
504+ let ap = bn._2
505+ let aq = bn._3
506+ let ar = bn._4
507+[DeleteEntry((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_OPEN")), StringEntry((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_CLOSED"), ((((((((((((toString(az) + "_") + toString(N)) + "_") + bm[2]) + "_") + D) + "_") + be) + "_") + V) + "_") + G)), ao, ap, aq, ar]
467508 }
468509 }
469510 }
470511
471512
472513
473-@Callable(I)
474-func cancelRequest (D,ag,bi) = {
475- let bj = H(I)
476- let G = bj._1
477- let aY = bj._2
478- let at = bj._3
479- let bk = ((((((("request2nd_" + aY) + "_") + ag) + "_") + D) + "_") + bi)
480- let bg = x((bk + "_OPEN"))
481- if ((size(bg) == 0))
514+@Callable(K)
515+func cancelRequest (D,ai,bo) = {
516+ let bp = J(K)
517+ let G = bp._1
518+ let be = bp._2
519+ let az = bp._3
520+ let bq = ((((((("request2nd_" + be) + "_") + ai) + "_") + D) + "_") + bo)
521+ let bm = x((bq + "_OPEN"))
522+ if ((size(bm) == 0))
482523 then throw("Request not found")
483524 else {
484- let bl = split(bg, "_")
485-[DeleteEntry((bk + "_OPEN")), StringEntry((((((bk + "_") + toString(at)) + "_") + G) + "_CANCELLED"), ((bg + "_") + toString(at))), ScriptTransfer(Address(fromBase58String(aY)), parseIntValue(bl[1]), fromBase58String(bl[2]))]
525+ let br = split(bm, "_")
526+[DeleteEntry((bq + "_OPEN")), StringEntry((((((bq + "_") + toString(az)) + "_") + G) + "_CANCELLED"), ((bm + "_") + toString(az))), ScriptTransfer(Address(fromBase58String(be)), parseIntValue(br[1]), fromBase58String(br[2]))]
486527 }
487- }
488-
489-
490-
491-@Callable(I)
492-func deleteEntry (bm) = {
493- let ai = toString(addressFromPublicKey(I.callerPublicKey))
494- if ((ai == k))
495- then [DeleteEntry(bm)]
496- else throw("no")
497528 }
498529
499530
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let d = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
1111
1212 let e = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1313
1414 let f = if (a)
1515 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1616 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1717
1818 let g = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1919
2020 let h = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
2121
2222 let i = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2323
2424 let j = base58''
2525
2626 let k = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2727
2828 let l = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2929
3030 let m = 3
3131
3232 let n = 10
3333
3434 let o = valueOrElse(getBoolean(f, "conf_dapp_is_running"), true)
3535
3636 let p = valueOrElse(getString(f, "conf_maintenance_msg"), "")
3737
3838 let q = "SUSPENDED"
3939
4040 let r = "REMOVED"
4141
4242 let s = "ILLEGAL"
4343
4444 let t = "SUSPENDED"
4545
4646 func u (v) = valueOrElse(getString(f, v), "Error")
4747
4848
4949 func w (v) = valueOrElse(getString(d, v), "")
5050
5151
5252 func x (v) = valueOrElse(getString(this, v), "")
5353
5454
5555 func y (v) = valueOrElse(getInteger(this, v), 0)
5656
5757
5858 func z (A) = ("user_status_" + A)
5959
6060
6161 func B (C,D) = ((("art_signid_" + D) + "_") + C)
6262
6363
6464 func E (C,D) = ((("art_flag_" + D) + "_") + C)
6565
6666
6767 func F (G) = ("nft_" + G)
6868
6969
70-func H (I) = if (!(o))
71- then throw(p)
72- else $Tuple3(toBase58String(I.transactionId), toBase58String(I.caller.bytes), lastBlock.timestamp)
70+func H (v) = valueOrErrorMessage(getInteger(b, v), "Integer undefine or 0 in oracle")
7371
7472
75-func J (I) = if ((size(I.payments) == 0))
73+let I = H(("certification_fee_" + toBase58String(h)))
74+
75+func J (K) = if (!(o))
76+ then throw(p)
77+ else $Tuple3(toBase58String(K.transactionId), toBase58String(K.caller.bytes), lastBlock.timestamp)
78+
79+
80+func L (K) = if ((size(K.payments) == 0))
7681 then throw("No payment attached")
7782 else {
78- let K = value(I.payments[0])
79- let L = value(K.amount)
80- $Tuple2(K, L)
83+ let M = value(K.payments[0])
84+ let N = value(M.amount)
85+ $Tuple2(M, N)
8186 }
8287
8388
84-func M (G) = {
85- let N = value(assetInfo(G))
86- if (if (if (if ((N.quantity != 1))
89+func O (G) = {
90+ let P = value(assetInfo(G))
91+ if (if (if (if ((P.quantity != 1))
8792 then true
88- else (N.decimals != 0))
93+ else (P.decimals != 0))
8994 then true
90- else (N.reissuable != false))
95+ else (P.reissuable != false))
9196 then true
92- else (N.issuer != d))
97+ else (P.issuer != d))
9398 then false
9499 else true
95100 }
96101
97102
98-func O (P) = if (if (if (if ((P != toBase58String(h)))
99- then (P != toBase58String(j))
103+func Q (R) = if (if (if (if ((R != toBase58String(h)))
104+ then (R != toBase58String(j))
100105 else false)
101- then (P != "WAVES")
106+ then (R != "WAVES")
102107 else false)
103- then (P != toBase58String(i))
108+ then (R != toBase58String(i))
104109 else false)
105110 then false
106111 else true
107112
108113
109-func Q (P) = if ((P == "WAVES"))
114+func S (R) = if ((R == "WAVES"))
110115 then unit
111- else fromBase58String(P)
116+ else fromBase58String(R)
112117
113118
114-func R (S) = {
115- let T = x(("current_owner_on_dapp_" + S))
116- if ((size(T) == 0))
119+func T (U) = {
120+ let V = x(("current_owner_on_dapp_" + U))
121+ if ((size(V) == 0))
117122 then throw("NFT not found")
118123 else {
119- let U = x(((("sale2nd_status_" + T) + "_") + S))
120- if ((U != "OPEN"))
124+ let W = x(((("sale2nd_status_" + V) + "_") + U))
125+ if ((W != "OPEN"))
121126 then throw("NFT not for sale")
122- else T
127+ else V
123128 }
124129 }
125130
126131
127-func V (v) = {
128- let W = x((v + "_OPEN"))
129- if ((W == ""))
132+func X (v) = {
133+ let Y = x((v + "_OPEN"))
134+ if ((Y == ""))
130135 then throw("Offer not found")
131136 else {
132- let X = split(W, "_")
133- let P = Q(X[2])
134- $Tuple3(X, P, W)
137+ let Z = split(Y, "_")
138+ let R = S(Z[2])
139+ $Tuple3(Z, R, Y)
135140 }
136141 }
137142
138143
139-func Y (A,G) = {
140- let Z = w(E(A, G))
141- if (if ((Z == s))
144+func aa (A,G) = {
145+ let ab = w(E(A, G))
146+ if (if ((ab == s))
142147 then true
143- else (Z == t))
144- then throw(("Original Artwork flagged as " + Z))
148+ else (ab == t))
149+ then throw(("Original Artwork flagged as " + ab))
145150 else true
146151 }
147152
148153
149-func aa (A) = {
150- let ab = u(z(A))
151- if (containsElement([q, r], ab))
152- then throw(("Original Artist " + ab))
154+func ac (A) = {
155+ let ad = u(z(A))
156+ if (containsElement([q, r], ad))
157+ then throw(("Original Artist " + ad))
153158 else true
154159 }
155160
156161
157-func ac (P) = {
158- let ad = split(w(F(P)), "_")
159- let ae = w(B(ad[6], ad[5]))
160- if ((size(ae) == 0))
162+func ae (R) = {
163+ let af = split(w(F(R)), "_")
164+ let ag = w(B(af[6], af[5]))
165+ if ((size(ag) == 0))
161166 then throw("Artwork not found on SIGN Art")
162- else if (if (!(Y(ad[6], ad[5])))
163- then !(aa(ad[6]))
167+ else if (if (!(aa(af[6], af[5])))
168+ then !(ac(af[6]))
164169 else false)
165- then $Tuple3(false, ad[5], ad[6])
166- else $Tuple3(true, ad[5], ad[6])
170+ then $Tuple3(false, af[5], af[6])
171+ else $Tuple3(true, af[5], af[6])
167172 }
168173
169174
170-func af (D,ag) = {
171- let ae = w(B(ag, D))
172- if ((size(ae) == 0))
175+func ah (D,ai) = {
176+ let ag = w(B(ai, D))
177+ if ((size(ag) == 0))
173178 then throw("Artwork not found on SIGN Art")
174- else if (if (!(Y(ag, D)))
175- then !(aa(ag))
179+ else if (if (!(aa(ai, D)))
180+ then !(ac(ai))
176181 else false)
177182 then false
178183 else true
179184 }
180185
181186
182-func ah (L,P,S,ag,T,ai) = {
183- let aj = fraction(L, m, 100)
184- let ak = fraction(L, n, 100)
185- let al = (L - (aj + ak))
186- let am = ScriptTransfer(Address(fromBase58String(e)), aj, P)
187- let an = ScriptTransfer(Address(fromBase58String(ag)), ak, P)
188- let ao = ScriptTransfer(Address(fromBase58String(T)), al, P)
189- let ap = ScriptTransfer(Address(fromBase58String(ai)), 1, fromBase58String(S))
190- $Tuple4(am, an, ao, ap)
187+func aj (N,R,U,ai,V,ak) = {
188+ let al = fraction(N, m, 100)
189+ let am = fraction(N, n, 100)
190+ let an = (N - (al + am))
191+ let ao = ScriptTransfer(Address(fromBase58String(e)), al, R)
192+ let ap = ScriptTransfer(Address(fromBase58String(ai)), am, R)
193+ let aq = ScriptTransfer(Address(fromBase58String(V)), an, R)
194+ let ar = ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(U))
195+ $Tuple4(ao, ap, aq, ar)
191196 }
192197
193198
194-@Callable(I)
195-func sellNFT (aq,ar) = {
196- let as = H(I)
197- let G = as._1
198- let ai = as._2
199- let at = as._3
200- let au = J(I)
201- let K = au._1
202- let L = au._2
203- let av = if (if (isDefined(K.assetId))
204- then M(value(K.assetId))
199+func as (R,at) = {
200+ let au = if (a)
201+ then 10
202+ else H("waves_min_sell")
203+ let av = 1000000
204+ let aw = if (a)
205+ then 1
206+ else (I * 2)
207+ if (if (if (if (if ((R == toBase58String(i)))
208+ then (av > at)
205209 else false)
206- then toBase58String(value(K.assetId))
210+ then (at != 0)
211+ else false)
212+ then true
213+ else if (if ((R == toBase58String(h)))
214+ then (aw > at)
215+ else false)
216+ then (at != 0)
217+ else false)
218+ then true
219+ else if (if (if ((R == toBase58String(j)))
220+ then true
221+ else (R == "WAVES"))
222+ then (au > at)
223+ else false)
224+ then (at != 0)
225+ else false)
226+ then throw("Wrong minimum sell price")
227+ else true
228+ }
229+
230+
231+@Callable(K)
232+func sellNFT (at,ax) = {
233+ let ay = J(K)
234+ let G = ay._1
235+ let ak = ay._2
236+ let az = ay._3
237+ let aA = L(K)
238+ let M = aA._1
239+ let N = aA._2
240+ let aB = if (if (isDefined(M.assetId))
241+ then O(value(M.assetId))
242+ else false)
243+ then toBase58String(value(M.assetId))
207244 else throw("Only SIGN Art NFT accepted.")
208- if (!(O(ar)))
245+ if (!(Q(ax)))
209246 then throw("Only SIGN, USDN or WAVES accepted")
247+ else if (!(as(ax, at)))
248+ then throw("Something went wrong")
249+ else {
250+ let aC = ae(aB)
251+ let aD = aC._1
252+ let D = aC._2
253+ let ai = aC._3
254+ if (!(aD))
255+ then throw("Something went wrong")
256+ else [StringEntry((((((("sale2nd_info_" + ak) + "_") + aB) + "_") + ai) + "_OPEN"), ((((((((((((toString(az) + "_") + toString(at)) + "_") + ax) + "_") + aB) + "_") + D) + "_") + ai) + "_") + G)), StringEntry(((("sale2nd_status_" + ak) + "_") + aB), "OPEN"), StringEntry(("current_owner_on_dapp_" + aB), ak)]
257+ }
258+ }
259+
260+
261+
262+@Callable(K)
263+func updateSalePrice (U,at,ax) = {
264+ let aE = J(K)
265+ let G = aE._1
266+ let ak = aE._2
267+ let az = aE._3
268+ let V = x(("current_owner_on_dapp_" + U))
269+ if ((V != ak))
270+ then throw("You don't own this NFT")
210271 else {
211- let aw = ac(av)
212- let ax = aw._1
213- let D = aw._2
214- let ag = aw._3
215- if (!(ax))
216- then throw("Something went wrong")
217- else [StringEntry((((((("sale2nd_info_" + ai) + "_") + av) + "_") + ag) + "_OPEN"), ((((((((((((toString(at) + "_") + toString(aq)) + "_") + ar) + "_") + av) + "_") + D) + "_") + ag) + "_") + G)), StringEntry(((("sale2nd_status_" + ai) + "_") + av), "OPEN"), StringEntry(("current_owner_on_dapp_" + av), ai)]
272+ let W = x(((("sale2nd_status_" + ak) + "_") + U))
273+ if ((W != "OPEN"))
274+ then throw("Sale not active")
275+ else if (!(Q(ax)))
276+ then throw("Only SIGN, USDN or WAVES accepted")
277+ else {
278+ let ai = split(w(F(U)), "_")[6]
279+ let aF = split(x(((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + W)), "_")
280+[StringEntry((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_OPEN"), ((((((((((((aF[0] + "_") + toString(at)) + "_") + ax) + "_") + aF[3]) + "_") + aF[4]) + "_") + aF[5]) + "_") + aF[6]))]
281+ }
218282 }
219283 }
220284
221285
222286
223-@Callable(I)
224-func updateSalePrice (S,aq,ar) = {
225- let ay = H(I)
226- let G = ay._1
227- let ai = ay._2
228- let at = ay._3
229- let T = x(("current_owner_on_dapp_" + S))
230- if ((T != ai))
287+@Callable(K)
288+func cancelSale (U) = {
289+ let aG = J(K)
290+ let G = aG._1
291+ let ak = aG._2
292+ let az = aG._3
293+ let V = x(("current_owner_on_dapp_" + U))
294+ if ((V != ak))
231295 then throw("You don't own this NFT")
232296 else {
233- let U = x(((("sale2nd_status_" + ai) + "_") + S))
234- if ((U != "OPEN"))
297+ let W = x(((("sale2nd_status_" + ak) + "_") + U))
298+ if ((W != "OPEN"))
235299 then throw("Sale not active")
236300 else {
237- let ag = split(w(F(S)), "_")[6]
238- let az = split(x(((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + U)), "_")
239-[StringEntry((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_OPEN"), ((((((((((((az[0] + "_") + toString(aq)) + "_") + ar) + "_") + az[3]) + "_") + az[4]) + "_") + az[5]) + "_") + az[6]))]
301+ let ai = split(w(F(U)), "_")[6]
302+ let aF = x(((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + W))
303+[DeleteEntry((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ak) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((((((((("sale2nd_info_" + ak) + "_") + U) + "_") + ai) + "_") + G) + "_CANCELLED"), ((((aF + "_CANCELLED_") + toString(az)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(U))]
240304 }
241305 }
242306 }
243307
244308
245309
246-@Callable(I)
247-func cancelSale (S) = {
248- let aA = H(I)
249- let G = aA._1
250- let ai = aA._2
251- let at = aA._3
252- let T = x(("current_owner_on_dapp_" + S))
253- if ((T != ai))
254- then throw("You don't own this NFT")
255- else {
256- let U = x(((("sale2nd_status_" + ai) + "_") + S))
257- if ((U != "OPEN"))
258- then throw("Sale not active")
259- else {
260- let ag = split(w(F(S)), "_")[6]
261- let az = x(((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + U))
262-[DeleteEntry((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ai) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((("sale2nd_info_" + ai) + "_") + S) + "_") + ag) + "_") + G) + "_CANCELLED"), ((((az + "_CANCELLED_") + toString(at)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ai)), 1, fromBase58String(S))]
263- }
264- }
265- }
266-
267-
268-
269-@Callable(I)
270-func buyNFT (S) = {
271- let aB = H(I)
272- let G = aB._1
273- let ai = aB._2
274- let at = aB._3
275- let T = R(S)
276- let aC = ac(S)
277- let ax = aC._1
278- let D = aC._2
279- let ag = aC._3
280- if (!(ax))
310+@Callable(K)
311+func buyNFT (U) = {
312+ let aH = J(K)
313+ let G = aH._1
314+ let ak = aH._2
315+ let az = aH._3
316+ let V = T(U)
317+ let aI = ae(U)
318+ let aD = aI._1
319+ let D = aI._2
320+ let ai = aI._3
321+ if (!(aD))
281322 then throw("Something went wrong")
282323 else {
283- let az = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
284- if ((size(az) == 0))
324+ let aF = x((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_OPEN"))
325+ if ((size(aF) == 0))
285326 then throw("Sale Not found!")
286327 else {
287- let aD = split(az, "_")
288- if ((parseInt(aD[1]) == 0))
328+ let aJ = split(aF, "_")
329+ if ((parseInt(aJ[1]) == 0))
289330 then throw("Offer only")
290331 else {
291- let aE = J(I)
292- let K = aE._1
293- let L = aE._2
294- let aF = if (isDefined(K.assetId))
295- then toBase58String(value(K.assetId))
332+ let aK = L(K)
333+ let M = aK._1
334+ let N = aK._2
335+ let aL = if (isDefined(M.assetId))
336+ then toBase58String(value(M.assetId))
296337 else ""
297- if (if ((aD[1] != toString(L)))
338+ if (if ((aJ[1] != toString(N)))
298339 then true
299- else (aD[2] != aF))
340+ else (aJ[2] != aL))
300341 then throw("Payment infos don't match.")
301342 else {
302- let aj = fraction(L, m, 100)
303- let ak = fraction(L, n, 100)
304- let al = (L - (aj + ak))
305- let aG = ah(L, K.assetId, S, ag, T, ai)
306- let am = aG._1
307- let an = aG._2
308- let ao = aG._3
309- let ap = aG._4
310-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + G) + "_CLOSED"), ((((((makeString(aD, "_") + "_CLOSED_") + toString(at)) + "_") + G) + "_") + ai)), am, an, ao, ap]
343+ let al = fraction(N, m, 100)
344+ let am = fraction(N, n, 100)
345+ let an = (N - (al + am))
346+ let aM = aj(N, M.assetId, U, ai, V, ak)
347+ let ao = aM._1
348+ let ap = aM._2
349+ let aq = aM._3
350+ let ar = aM._4
351+[DeleteEntry((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((((((((("sale2nd_info_" + V) + "_") + U) + "_") + ai) + "_") + G) + "_CLOSED"), ((((((makeString(aJ, "_") + "_CLOSED_") + toString(az)) + "_") + G) + "_") + ak)), ao, ap, aq, ar]
311352 }
312353 }
313354 }
314355 }
315356 }
316357
317358
318359
319-@Callable(I)
320-func setOffer (S) = {
321- let aH = H(I)
322- let G = aH._1
323- let aI = aH._2
324- let at = aH._3
325- let aJ = J(I)
326- let K = aJ._1
327- let L = aJ._2
328- let P = if (!(isDefined(K.assetId)))
360+@Callable(K)
361+func setOffer (U) = {
362+ let aN = J(K)
363+ let G = aN._1
364+ let aO = aN._2
365+ let az = aN._3
366+ let aP = L(K)
367+ let M = aP._1
368+ let N = aP._2
369+ let R = if (!(isDefined(M.assetId)))
329370 then "WAVES"
330- else toBase58String(value(K.assetId))
331- if (!(O(P)))
371+ else toBase58String(value(M.assetId))
372+ if (!(Q(R)))
332373 then throw("asset not accepted")
333374 else {
334- let aK = ac(S)
335- let ax = aK._1
336- let D = aK._2
337- let ag = aK._3
338- if (!(ax))
375+ let aQ = ae(U)
376+ let aD = aQ._1
377+ let D = aQ._2
378+ let ai = aQ._3
379+ if (!(aD))
339380 then throw("Something went wrong")
340381 else {
341- let T = R(S)
342-[StringEntry((((((((("offer2nd_" + aI) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((((((((toString(at) + "_") + toString(L)) + "_") + P) + "_") + S) + "_") + D) + "_") + ag) + "_") + aI) + "_") + G))]
382+ let V = T(U)
383+[StringEntry((((((((("offer2nd_" + aO) + "_") + U) + "_") + V) + "_") + G) + "_OPEN"), ((((((((((((((toString(az) + "_") + toString(N)) + "_") + R) + "_") + U) + "_") + D) + "_") + ai) + "_") + aO) + "_") + G))]
343384 }
344385 }
345386 }
346387
347388
348389
349-@Callable(I)
350-func acceptOffer (S,aL,aI) = {
351- let aM = H(I)
352- let G = aM._1
353- let ai = aM._2
354- let at = aM._3
355- let T = R(S)
356- if ((ai != T))
390+@Callable(K)
391+func acceptOffer (U,aR,aO) = {
392+ let aS = J(K)
393+ let G = aS._1
394+ let ak = aS._2
395+ let az = aS._3
396+ let V = T(U)
397+ if ((ak != V))
357398 then throw("You cannot do this action")
358399 else {
359- let aN = ((((((("offer2nd_" + aI) + "_") + S) + "_") + T) + "_") + aL)
360- let aO = x((aN + "_OPEN"))
361- if ((aO == ""))
400+ let aT = ((((((("offer2nd_" + aO) + "_") + U) + "_") + V) + "_") + aR)
401+ let aU = x((aT + "_OPEN"))
402+ if ((aU == ""))
362403 then throw("Offer not found or not for sale")
363404 else {
364- let aP = ac(S)
365- let ax = aP._1
366- let D = aP._2
367- let ag = aP._3
368- if (!(ax))
405+ let aV = ae(U)
406+ let aD = aV._1
407+ let D = aV._2
408+ let ai = aV._3
409+ if (!(aD))
369410 then throw("Something went wrong")
370411 else {
371- let aQ = ((((("sale2nd_info_" + T) + "_") + S) + "_") + ag)
372- let aR = x((aQ + "_OPEN"))
373- if ((size(aR) == 0))
412+ let aW = ((((("sale2nd_info_" + V) + "_") + U) + "_") + ai)
413+ let aX = x((aW + "_OPEN"))
414+ if ((size(aX) == 0))
374415 then throw("Sale Not found!")
375416 else {
376- let aS = split(aR, "_")
377- let aT = V(aN)
378- let X = aT._1
379- let P = aT._2
380- let W = aT._3
381- let L = value(parseInt(X[1]))
382- let aU = ah(L, P, S, ag, T, X[6])
383- let am = aU._1
384- let an = aU._2
385- let ao = aU._3
386- let ap = aU._4
387-[DeleteEntry((aQ + "_OPEN")), DeleteEntry((aN + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((aN + "_CLOSED"), ((((aO + "_CLOSED_") + toString(at)) + "_") + G)), StringEntry((((aQ + "_") + G) + "_CLOSED"), ((((((((((makeString(aS, "_") + "_CLOSED-OFFER_") + toString(at)) + "_") + G) + "_") + aI) + "_") + toString(L)) + "_") + toBase58String(value(P)))), am, an, ao, ap]
417+ let aY = split(aX, "_")
418+ let aZ = X(aT)
419+ let Z = aZ._1
420+ let R = aZ._2
421+ let Y = aZ._3
422+ let N = value(parseInt(Z[1]))
423+ let ba = aj(N, R, U, ai, V, Z[6])
424+ let ao = ba._1
425+ let ap = ba._2
426+ let aq = ba._3
427+ let ar = ba._4
428+[DeleteEntry((aW + "_OPEN")), DeleteEntry((aT + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((aT + "_CLOSED"), ((((aU + "_CLOSED_") + toString(az)) + "_") + G)), StringEntry((((aW + "_") + G) + "_CLOSED"), ((((((((((makeString(aY, "_") + "_CLOSED-OFFER_") + toString(az)) + "_") + G) + "_") + aO) + "_") + toString(N)) + "_") + toBase58String(value(R)))), ao, ap, aq, ar]
388429 }
389430 }
390431 }
391432 }
392433 }
393434
394435
395436
396-@Callable(I)
397-func cancelOffer (S,aL,T) = {
398- let aV = H(I)
399- let G = aV._1
400- let ai = aV._2
401- let at = aV._3
402- let aN = ((((((("offer2nd_" + ai) + "_") + S) + "_") + T) + "_") + aL)
403- let aW = V(aN)
404- let X = aW._1
405- let P = aW._2
406- let W = aW._3
407-[DeleteEntry((aN + "_OPEN")), StringEntry((aN + "_CANCELLED"), ((((W + "_CANCELLED_") + toString(at)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ai)), parseIntValue(X[1]), P)]
437+@Callable(K)
438+func cancelOffer (U,aR,V) = {
439+ let bb = J(K)
440+ let G = bb._1
441+ let ak = bb._2
442+ let az = bb._3
443+ let aT = ((((((("offer2nd_" + ak) + "_") + U) + "_") + V) + "_") + aR)
444+ let bc = X(aT)
445+ let Z = bc._1
446+ let R = bc._2
447+ let Y = bc._3
448+[DeleteEntry((aT + "_OPEN")), StringEntry((aT + "_CANCELLED"), ((((Y + "_CANCELLED_") + toString(az)) + "_") + G)), ScriptTransfer(Address(fromBase58String(ak)), parseIntValue(Z[1]), R)]
408449 }
409450
410451
411452
412-@Callable(I)
413-func makeRequest (D,ag) = {
414- let aX = H(I)
415- let G = aX._1
416- let aY = aX._2
417- let at = aX._3
418- let aZ = J(I)
419- let K = aZ._1
420- let L = aZ._2
421- let P = if (!(isDefined(K.assetId)))
453+@Callable(K)
454+func makeRequest (D,ai) = {
455+ let bd = J(K)
456+ let G = bd._1
457+ let be = bd._2
458+ let az = bd._3
459+ let bf = L(K)
460+ let M = bf._1
461+ let N = bf._2
462+ let R = if (!(isDefined(M.assetId)))
422463 then "WAVES"
423- else toBase58String(value(K.assetId))
424- if (!(O(P)))
464+ else toBase58String(value(M.assetId))
465+ if (!(Q(R)))
425466 then throw("asset not accepted")
426467 else {
427- let ba = af(D, ag)
428- if (!(ba))
468+ let bg = ah(D, ai)
469+ if (!(bg))
429470 then throw("Something went wrong")
430- else [StringEntry((((((((("request2nd_" + aY) + "_") + ag) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(at) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_") + D) + "_") + aY) + "_") + G))]
471+ else [StringEntry((((((((("request2nd_" + be) + "_") + ai) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(az) + "_") + toString(N)) + "_") + toBase58String(value(M.assetId))) + "_") + D) + "_") + be) + "_") + G))]
431472 }
432473 }
433474
434475
435476
436-@Callable(I)
437-func fillRequest (D,aY,aL) = {
438- let bb = H(I)
439- let G = bb._1
440- let T = bb._2
441- let at = bb._3
442- let bc = J(I)
443- let K = bc._1
444- let bd = bc._2
445- let be = if (if (isDefined(K.assetId))
446- then M(value(K.assetId))
477+@Callable(K)
478+func fillRequest (D,be,aR) = {
479+ let bh = J(K)
480+ let G = bh._1
481+ let V = bh._2
482+ let az = bh._3
483+ let bi = L(K)
484+ let M = bi._1
485+ let bj = bi._2
486+ let bk = if (if (isDefined(M.assetId))
487+ then O(value(M.assetId))
447488 else false)
448- then K.assetId
489+ then M.assetId
449490 else throw("No NFT found")
450- let bf = split(w(("nft_" + toBase58String(value(be)))), "_")
451- if ((size(bf) == 0))
491+ let bl = split(w(("nft_" + toBase58String(value(bk)))), "_")
492+ if ((size(bl) == 0))
452493 then throw("No NFT found")
453494 else {
454- let bg = split(x((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_OPEN")), "_")
455- if ((size(bg) == 1))
495+ let bm = split(x((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_OPEN")), "_")
496+ if ((size(bm) == 1))
456497 then throw("No request found")
457- else if ((bg[3] != bf[5]))
498+ else if ((bm[3] != bl[5]))
458499 then throw("This NFT don't match the requested artwork")
459500 else {
460- let L = value(parseInt(bg[1]))
461- let bh = ah(L, fromBase58String(bg[2]), toBase58String(value(be)), bf[6], T, bg[4])
462- let am = bh._1
463- let an = bh._2
464- let ao = bh._3
465- let ap = bh._4
466-[DeleteEntry((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_OPEN")), StringEntry((((((((("request2nd_" + aY) + "_") + bf[6]) + "_") + D) + "_") + aL) + "_CLOSED"), ((((((((((((toString(at) + "_") + toString(L)) + "_") + bg[2]) + "_") + D) + "_") + aY) + "_") + T) + "_") + G)), am, an, ao, ap]
501+ let N = value(parseInt(bm[1]))
502+ let bn = aj(N, fromBase58String(bm[2]), toBase58String(value(bk)), bl[6], V, bm[4])
503+ let ao = bn._1
504+ let ap = bn._2
505+ let aq = bn._3
506+ let ar = bn._4
507+[DeleteEntry((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_OPEN")), StringEntry((((((((("request2nd_" + be) + "_") + bl[6]) + "_") + D) + "_") + aR) + "_CLOSED"), ((((((((((((toString(az) + "_") + toString(N)) + "_") + bm[2]) + "_") + D) + "_") + be) + "_") + V) + "_") + G)), ao, ap, aq, ar]
467508 }
468509 }
469510 }
470511
471512
472513
473-@Callable(I)
474-func cancelRequest (D,ag,bi) = {
475- let bj = H(I)
476- let G = bj._1
477- let aY = bj._2
478- let at = bj._3
479- let bk = ((((((("request2nd_" + aY) + "_") + ag) + "_") + D) + "_") + bi)
480- let bg = x((bk + "_OPEN"))
481- if ((size(bg) == 0))
514+@Callable(K)
515+func cancelRequest (D,ai,bo) = {
516+ let bp = J(K)
517+ let G = bp._1
518+ let be = bp._2
519+ let az = bp._3
520+ let bq = ((((((("request2nd_" + be) + "_") + ai) + "_") + D) + "_") + bo)
521+ let bm = x((bq + "_OPEN"))
522+ if ((size(bm) == 0))
482523 then throw("Request not found")
483524 else {
484- let bl = split(bg, "_")
485-[DeleteEntry((bk + "_OPEN")), StringEntry((((((bk + "_") + toString(at)) + "_") + G) + "_CANCELLED"), ((bg + "_") + toString(at))), ScriptTransfer(Address(fromBase58String(aY)), parseIntValue(bl[1]), fromBase58String(bl[2]))]
525+ let br = split(bm, "_")
526+[DeleteEntry((bq + "_OPEN")), StringEntry((((((bq + "_") + toString(az)) + "_") + G) + "_CANCELLED"), ((bm + "_") + toString(az))), ScriptTransfer(Address(fromBase58String(be)), parseIntValue(br[1]), fromBase58String(br[2]))]
486527 }
487- }
488-
489-
490-
491-@Callable(I)
492-func deleteEntry (bm) = {
493- let ai = toString(addressFromPublicKey(I.callerPublicKey))
494- if ((ai == k))
495- then [DeleteEntry(bm)]
496- else throw("no")
497528 }
498529
499530

github/deemru/w8io/026f985 
205.44 ms