tx · 6Rves9b77nNNdiPQadB7YZUBaVVqckYwnNSPXR6Sm3fs

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01400000 Waves

2021.12.13 14:18 [1832412] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "6Rves9b77nNNdiPQadB7YZUBaVVqckYwnNSPXR6Sm3fs", "fee": 1400000, "feeAssetId": null, "timestamp": 1639394318818, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2JCd8ezx3gWaeA39MU84kbzoD2r3LwPaYXPmEkicBbhhZ3ZrWmQKDyi9tfhtAj5JQ57t4NyoDk36QugjnGmMFkyQ" ], "script": "base64:AAIFAAAAAAAAAFQIAhIOCgwICAgICAgICAgICAgSDQoLCAgICAgICAgICAgSBgoECAgICBIECgIICBIHCgUIAQEIARIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAgAAABHAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAAHAAAAAAt1c2RuV2F2ZUN1dAAAAAAAAAAACgAAAAAOZGVmYXVsdExpY2VuY2UCAAAAR2JhZnliZWlmdXlvNHBxdTU0aXNtcWd0YjZlNGg2a2t2Z3g3emc0dTN6aWJoMnI3eTZtYjY0aTdienphL2xpY2VuY2UucGRmAAAAABJkZWZhdWx0SGFzaExpY2VuY2UCAAAAQGE4Nzc1OGMzNTRlMzBhOWU3OGZiODRmYTNhMDAxMGE1MDkwYWIyMGRmMGJlMTFhZDQ1YjU3MjBjYzE4N2U2MzkAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAlvcmFjbGVGZWUFAAAAA2tleQIAAAAfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAA5jaGVja1doaXRlbGlzdAAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAADXdoaXRlbGlzdERhcHAFAAAAA2tleQAAAAAAAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5BwAAAAAZY3Vy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YW1vdW50Rm9yQ3JlYXRvcgUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAADWFtb3VudEZvclNpZ24FAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAKcmVjZWl2ZU5GVAAAAAAAAAAAAQUAAAAFaWRORlQFAAAAA25pbAMFAAAABWlzQmlkCQAETAAAAAIFAAAACHNvbGREYXRhCQAETAAAAAIFAAAACWJpZFVwZGF0ZQkABEwAAAACBQAAAAliaWREZWxPbGQFAAAABmJ1eVJlcwkABEwAAAACBQAAAAhzb2xkRGF0YQUAAAAGYnV5UmVzAAAACQAAAAFpAQAAAAphZGRBcnR3b3JrAAAADAAAAApzaGEyNTZIYXNoAAAABnNpZ25JRAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlAAAAB2NyYXdsZXIEAAAADSR0MDE2Njc1MTY3MTYJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAVhcnRJZAgFAAAADSR0MDE2Njc1MTY3MTYAAAACXzEEAAAABmNhbGxlcggFAAAADSR0MDE2Njc1MTY3MTYAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxNjY3NTE2NzE2AAAAAl8zAwkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAkAAAIAAAABAgAAACRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EAAAADSR0MDE2ODE3MTY4ODYJAQAAAApzZXRMSWNlbmNlAAAAAgUAAAAKY2lkTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQQAAAAKbGljZW5jZUNJRAgFAAAADSR0MDE2ODE3MTY4ODYAAAACXzEEAAAAC2xpY2VuY2VIYXNoCAUAAAANJHQwMTY4MTcxNjg4NgAAAAJfMgQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lEBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoBQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAANJHQwMTcxMDUxNzE0NwkBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEFAAAAAWkEAAAABmFtb3VudAgFAAAADSR0MDE3MTA1MTcxNDcAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxNzEwNTE3MTQ3AAAAAl8yAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAAAAAloYXNoRXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gDCQEAAAACIT0AAAACBQAAAAloYXNoRXhpc3QCAAAAAAkAAAIAAAABAgAAABdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQAAAAPaXNTaWduQ2VydGlmaWVkCQEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADBQAAAAZzaWduSUQFAAAABmNhbGxlcgUAAAAKc2hhMjU2SGFzaAMJAQAAAAEhAAAAAQUAAAAPaXNTaWduQ2VydGlmaWVkCQAAAgAAAAECAAAALFNpZ24gQ2VydGlmaWNhdGUgbm90IGZv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AAAJY2lkRXhwb3J0AAAADXNoYTI1NkxpY2VuY2UAAAAKY2lkTGljZW5jZQAAAAdjcmF3bGVyAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADSR0MDE5ODc5MTk5NDgJAQAAAApzZXRMSWNlbmNlAAAAAgUAAAAKY2lkTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQQAAAAKbGljZW5jZUNJRAgFAAAADSR0MDE5ODc5MTk5NDgAAAACXzEEAAAAC2xpY2VuY2VIYXNoCAUAAAANJHQwMTk4NzkxOTk0OAAAAAJfMgQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lEBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoBQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAAA9FbnRyeSBub3QgZm91bmQEAAAABGZsYWcJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdrZXlGbGFnAAAAAgUAAAAGY2FsbGVyBQAAAAR0eGlkAwkAAAAAAAACBQAAAARmbGFnAgAAAAdJTExFR0FMCQAAAgAAAAECAAAAHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBAAAAASEAAAABCQEAAAALaXNBcnRNaW50ZWQAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQJAARMAAAAAgkBAAAAC1N0cmluZ0Vu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", "height": 1832412, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CH9pLBHaZidKNNdTU4VZrcyQAUWvuVehNE6NpoNArzfn Next: GNsKB5a6Aon6bv6eCFXUTNx8sNBzXEWes2DFMkRyRRKi Diff:
OldNewDifferences
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135-func ad (N,P) = ((("art_price_" + P) + "_") + N)
135+func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138-func ae (N,P) = ((("art_endsale_" + P) + "_") + N)
138+func ae (N,P) = ((("art_crawler_" + P) + "_") + N)
139139
140140
141-func af (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
141+func af (N,P) = ((("art_price_" + P) + "_") + N)
142142
143143
144-func ag (N,P) = ((("art_flag_" + P) + "_") + N)
144+func ag (N,P) = ((("art_endsale_" + P) + "_") + N)
145145
146146
147-func ah (N,ai) = ((("get_hashbytxidaddr_" + ai) + "_") + N)
147+func ah (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
148148
149149
150-func aj (F) = ("get_owner_by_hash_" + F)
150+func ai (N,P) = ((("art_flag_" + P) + "_") + N)
151151
152152
153-func ak (N,al) = ((("get_artidbysignid_" + al) + "_") + N)
153+func aj (N,ak) = ((("get_hashbytxidaddr_" + ak) + "_") + N)
154154
155155
156-func am (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
156+func al (F) = ("get_owner_by_hash_" + F)
157157
158158
159-func an (ao,ap,aq) = if (!(I(ao)))
159+func am (N,an) = ((("get_artidbysignid_" + an) + "_") + N)
160+
161+
162+func ao (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
163+
164+
165+func ap (aq,ar,as) = if (!(I(aq)))
160166 then throw("Wrong Display CID")
161- else if (!(I(ap)))
167+ else if (!(I(ar)))
162168 then throw("Wrong Export CID")
163- else if (if ((aq != ""))
164- then !(I(aq))
169+ else if (if ((as != ""))
170+ then !(I(as))
165171 else false)
166172 then throw("Wrong Licence CID")
167173 else true
168174
169175
170-func ar (as,at) = if (!(K(as)))
176+func at (au,av) = if (!(K(au)))
171177 then throw("Export Hash 64 char. max")
172- else if (!(K(at)))
178+ else if (!(K(av)))
173179 then throw("Licence Hash 64 char. max")
174180 else true
175181
176182
177-func au (av,aw) = if ((size(av) == 0))
183+func aw (ax,ay) = if ((size(ax) == 0))
178184 then throw("Field cannot be is empty")
179- else if ((size(av) > aw))
180- then throw((av + " is too long"))
185+ else if ((size(ax) > ay))
186+ then throw((ax + " is too long"))
181187 else true
182188
183189
184-func ax (N) = {
185- let ay = valueOrElse(getString(e, M(N)), t)
186- if (if ((ay == t))
190+func az (N) = {
191+ let aA = valueOrElse(getString(e, M(N)), t)
192+ if (if ((aA == t))
187193 then true
188- else (ay == u))
194+ else (aA == u))
189195 then "Register this account first with \"Account\" tab"
190- else if ((ay == r))
196+ else if ((aA == r))
191197 then "Account suspended"
192- else if ((ay == s))
198+ else if ((aA == s))
193199 then "Account removed"
194200 else ""
195201 }
196202
197203
198-func az (aq,at) = {
199- let J = if ((size(aq) == 0))
204+func aB (as,av) = {
205+ let J = if ((size(as) == 0))
200206 then n
201- else aq
202- let L = if ((size(at) == 0))
207+ else as
208+ let L = if ((size(av) == 0))
203209 then o
204- else at
210+ else av
205211 $Tuple2(J, L)
206212 }
207213
208214
209-func aA (N,ao,ap,aB,as,aC,aD,aE,aF) = {
210- let aG = ax(N)
211- if ((aG != ""))
212- then throw(aG)
213- else if ((size(ao) == 0))
215+func aC (N,aq,ar,aD,au,aE,aF,aG,aH) = {
216+ let aI = az(N)
217+ if ((aI != ""))
218+ then throw(aI)
219+ else if ((size(aq) == 0))
214220 then throw("Display CID cannot be empty")
215- else if (!(an(ao, ap, aB)))
221+ else if (!(ap(aq, ar, aD)))
216222 then throw("Problem with CID")
217- else if (!(ar(as, aC)))
223+ else if (!(at(au, aE)))
218224 then throw("Problem with Hashes")
219- else if (!(au(aD, 100)))
225+ else if (!(aw(aF, 100)))
220226 then throw("100 Char. max name")
221- else if (!(au(aE, 1000)))
227+ else if (!(aw(aG, 1000)))
222228 then throw("1000 Char. max description")
223- else if ((size(split(aF, ",")) > 5))
229+ else if ((size(split(aH, ",")) > 5))
224230 then throw("5 tags max.")
225231 else ""
226232 }
227233
228234
229-func aH (aI) = if ((size(aI.payments) == 0))
235+func aJ (aK) = if ((size(aK.payments) == 0))
230236 then throw("No payment attached")
231237 else {
232- let aJ = value(aI.payments[0])
233- let aK = value(aJ.amount)
234- $Tuple2(aJ, aK)
238+ let aL = value(aK.payments[0])
239+ let aM = value(aL.amount)
240+ $Tuple2(aL, aM)
235241 }
236242
237243
238-func aL (aI) = {
239- let aM = aH(aI)
240- let aJ = aM._1
241- let aK = aM._2
242- let aN = if (if (isDefined(aJ.assetId))
243- then (aJ.assetId == g)
244+func aN (aK) = {
245+ let aO = aJ(aK)
246+ let aL = aO._1
247+ let aM = aO._2
248+ let aP = if (if (isDefined(aL.assetId))
249+ then (aL.assetId == g)
244250 else false)
245- then aJ.assetId
251+ then aL.assetId
246252 else throw("Only SIGN token accepted as transaction fee")
247- if ((aK != B))
253+ if ((aM != B))
248254 then throw(("Payment amount should be " + toString(B)))
249- else $Tuple2(aK, aN)
255+ else $Tuple2(aM, aP)
250256 }
251257
252258
253-func aO (aP,P) = {
254- let G = getInteger(this, X(aP, P))
259+func aQ (aR,P) = {
260+ let G = getInteger(this, X(aR, P))
255261 if ($isInstanceOf(G, "Int"))
256262 then {
257- let aQ = G
258- if ((aQ != 0))
263+ let aS = G
264+ if ((aS != 0))
259265 then true
260266 else false
261267 }
263269 }
264270
265271
266-func aR (aI,aS,aT) = {
267- let aU = aH(aI)
268- let aJ = aU._1
269- let aK = aU._2
270- let aN = if (!(isDefined(aJ.assetId)))
272+func aT (aK,aU,aV) = {
273+ let aW = aJ(aK)
274+ let aL = aW._1
275+ let aM = aW._2
276+ let aP = if (!(isDefined(aL.assetId)))
271277 then unit
272- else if (if ((size(aS) > 0))
273- then (toBase58String(value(aJ.assetId)) == aS)
278+ else if (if ((size(aU) > 0))
279+ then (toBase58String(value(aL.assetId)) == aU)
274280 else false)
275- then aJ.assetId
281+ then aL.assetId
276282 else throw("Wrong asset id")
277- if (if ((aN == unit))
278- then (aS != "")
283+ if (if ((aP == unit))
284+ then (aU != "")
279285 else false)
280286 then throw("Wrong asset id")
281- else if ((aT != aK))
287+ else if ((aV != aM))
282288 then throw("Payment don't match")
283- else $Tuple2(aK, aN)
289+ else $Tuple2(aM, aP)
284290 }
285291
286292
287-func aV (aN) = if (if (if (if ((aN != toBase58String(g)))
288- then (aN != toBase58String(i))
293+func aX (aP) = if (if (if (if ((aP != toBase58String(g)))
294+ then (aP != toBase58String(i))
289295 else false)
290- then (aN != "WAVES")
296+ then (aP != "WAVES")
291297 else false)
292- then (aN != toBase58String(h))
298+ then (aP != toBase58String(h))
293299 else false)
294300 then throw("Only SIGN, USDN or WAVES accepted")
295301 else true
296302
297303
298-func aW (aN,aX) = {
299- let aY = if (a)
304+func aY (aP,aZ) = {
305+ let ba = if (a)
300306 then 10
301307 else x("waves_min_sell")
302- let aZ = 1000000
303- let ba = if (a)
308+ let bb = 1000000
309+ let bc = if (a)
304310 then 1
305311 else (B * 2)
306- if (if (if (if (if ((aN == toBase58String(h)))
307- then (aZ > aX)
312+ if (if (if (if (if ((aP == toBase58String(h)))
313+ then (bb > aZ)
308314 else false)
309- then (aX != 0)
315+ then (aZ != 0)
310316 else false)
311317 then true
312- else if (if ((aN == toBase58String(g)))
313- then (ba > aX)
318+ else if (if ((aP == toBase58String(g)))
319+ then (bc > aZ)
314320 else false)
315- then (aX != 0)
321+ then (aZ != 0)
316322 else false)
317323 then true
318- else if (if (if ((aN == toBase58String(i)))
324+ else if (if (if ((aP == toBase58String(i)))
319325 then true
320- else (aN == "WAVES"))
321- then (aY > aX)
326+ else (aP == "WAVES"))
327+ then (ba > aZ)
322328 else false)
323- then (aX != 0)
329+ then (aZ != 0)
324330 else false)
325331 then throw("Wrong minimum sell price")
326332 else true
327333 }
328334
329335
330-func bb (aN) = if ((aN == "WAVES"))
336+func bd (aP) = if ((aP == "WAVES"))
331337 then unit
332- else fromBase58String(aN)
338+ else fromBase58String(aP)
333339
334340
335-func bc (bd) = {
336- let be = v((bd + "_OPEN"))
337- if ((be == ""))
341+func be (bf) = {
342+ let bg = v((bf + "_OPEN"))
343+ if ((bg == ""))
338344 then throw("Bid not found")
339345 else {
340- let bf = split(be, "_")
341- let bg = parseIntValue(bf[1])
342- let bh = bb(bf[0])
343- if ((0 >= bg))
346+ let bh = split(bg, "_")
347+ let bi = parseIntValue(bh[1])
348+ let bj = bd(bh[0])
349+ if ((0 >= bi))
344350 then throw("Wrong amount")
345- else $Tuple2(bg, bh)
351+ else $Tuple2(bi, bj)
346352 }
347353 }
348354
349355
350-func bi (aI) = if (!(p))
356+func bk (aK) = if (!(p))
351357 then throw(q)
352- else $Tuple3(toBase58String(aI.transactionId), toBase58String(aI.caller.bytes), lastBlock.timestamp)
358+ else $Tuple3(toBase58String(aK.transactionId), toBase58String(aK.caller.bytes), lastBlock.timestamp)
353359
354360
355-func bj (aI,P,bk,bl,bm) = {
356- let bn = bi(aI)
357- let bo = bn._1
358- let N = bn._2
359- let bp = bn._3
360- let bq = if (if (if ((toBase58String(aI.caller.bytes) == bk))
361- then (bm != "")
361+func bl (aK,P,bm,bn,bo) = {
362+ let bp = bk(aK)
363+ let bq = bp._1
364+ let N = bp._2
365+ let br = bp._3
366+ let bs = if (if (if ((toBase58String(aK.caller.bytes) == bm))
367+ then (bo != "")
362368 else false)
363- then (bl != "")
369+ then (bn != "")
364370 else false)
365371 then true
366372 else false
367- let br = y(ae(N, P))
368- if (if (if ((br != 0))
369- then (height >= br)
373+ let bt = y(ag(N, P))
374+ if (if (if ((bt != 0))
375+ then (height >= bt)
370376 else false)
371- then !(bq)
377+ then !(bs)
372378 else false)
373379 then throw("Sale ended.")
374380 else {
375- let bs = (toBase58String(aI.caller.bytes) == bk)
376- let bt = y("total_nft_issued")
377- let D = v(W(bk, P))
378- let bu = v(Q(bk, P))
379- if ((bu == ""))
381+ let bu = (toBase58String(aK.caller.bytes) == bm)
382+ let bv = y("total_nft_issued")
383+ let D = v(W(bm, P))
384+ let bw = v(Q(bm, P))
385+ if ((bw == ""))
380386 then throw("Art doesn't exist")
381387 else {
382- let bv = A(Y(bk, P))
383- let bw = y(X(bk, P))
384- let aT = if (bs)
388+ let bx = A(Y(bm, P))
389+ let by = y(X(bm, P))
390+ let aV = if (bu)
385391 then (B * 2)
386- else y(ad(bk, P))
387- let aS = if (bs)
392+ else y(af(bm, P))
393+ let aU = if (bu)
388394 then toBase58String(g)
389- else v(af(bk, P))
390- let bx = y(V(bk, P))
391- if (if (if (!(bq))
392- then !(bs)
395+ else v(ah(bm, P))
396+ let bz = y(V(bm, P))
397+ if (if (if (!(bs))
398+ then !(bu)
393399 else false)
394- then if (if ((0 >= aT))
400+ then if (if ((0 >= aV))
395401 then true
396- else !(bv))
402+ else !(bx))
397403 then true
398- else (0 >= bx)
404+ else (0 >= bz)
399405 else false)
400406 then throw("Art not for sale")
401- else if (if (if (!(bq))
402- then bs
407+ else if (if (if (!(bs))
408+ then bu
403409 else false)
404- then (0 >= bx)
410+ then (0 >= bz)
405411 else false)
406412 then throw("Max issuable not set")
407413 else {
408- let aG = ax(bk)
409- if (if (bq)
410- then (aG != "")
414+ let aI = az(bm)
415+ if (if (bs)
416+ then (aI != "")
411417 else false)
412- then throw(aG)
418+ then throw(aI)
413419 else {
414- let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
415- let by = if (bq)
416- then bc(bd)
417- else aR(aI, aS, aT)
418- let aK = by._1
419- let aN = by._2
420- let bz = z(bk)
421- let bA = if ((bz > height))
420+ let bf = ((((((("bid_" + P) + "_") + bm) + "_") + bo) + "_") + bn)
421+ let bA = if (bs)
422+ then be(bf)
423+ else aT(aK, aU, aV)
424+ let aM = bA._1
425+ let aP = bA._2
426+ let bB = z(bm)
427+ let bC = if ((bB > height))
422428 then 0
423- else if ((aN == g))
429+ else if ((aP == g))
424430 then l
425431 else m
426- let bB = fraction(aK, bA, 100)
427- let bC = (aK - bB)
428- if ((bw == bx))
432+ let bD = fraction(aM, bC, 100)
433+ let bE = (aM - bD)
434+ if ((by == bz))
429435 then throw("Art sold out")
430436 else {
431- let bD = (bw + 1)
432- let bE = ((((((((((("Creator: " + bk) + ",
437+ let bF = (by + 1)
438+ let bG = ((((((((((("Creator: " + bm) + ",
433439 ArtID: ") + P) + ",
434440 SignID: ") + D) + ",
435- Artwork name: ") + bu) + ",
436- Issue: ") + toString(bD)) + "/") + toString(bx))
437- let bF = Issue(("SA_" + toString((bt + 1))), bE, 1, 0, false)
438- let bG = calculateAssetId(bF)
439- let bH = if (if ((bD == bx))
441+ Artwork name: ") + bw) + ",
442+ Issue: ") + toString(bF)) + "/") + toString(bz))
443+ let bH = Issue(("SA_" + toString((bv + 1))), bG, 1, 0, false)
444+ let bI = calculateAssetId(bH)
445+ let bJ = if (if ((bF == bz))
440446 then true
441- else !(bv))
447+ else !(bx))
442448 then false
443449 else true
444- let bI = if (if (if ((N == bk))
445- then (bm != "")
450+ let bK = if (if (if ((N == bm))
451+ then (bo != "")
446452 else false)
447- then (bl != "")
453+ then (bn != "")
448454 else false)
449- then addressFromStringValue(bm)
450- else aI.caller
451- let bJ = if (!(isDefined(aN)))
455+ then addressFromStringValue(bo)
456+ else aK.caller
457+ let bL = if (!(isDefined(aP)))
452458 then "WAVES"
453- else toBase58String(value(aN))
454- let be = v((bd + "_OPEN"))
455- let bK = DeleteEntry((bd + "_OPEN"))
456- let bL = StringEntry((bd + "_CLOSED"), ((be + "_") + toString(bp)))
457- let bM = ((((((("art_sold_" + toString(bD)) + "_of_") + toString(bx)) + "_") + P) + "_") + bk)
458- let bN = if (!(bq))
459- then ((((((((((N + "_") + toString(bp)) + "_") + bo) + "_") + toString(aT)) + "_") + aS) + "_") + toBase58String(bG))
460- else ((((((((((toString(bI) + "_") + toString(bp)) + "_") + bo) + "_") + toString(aK)) + "_") + bJ) + "_") + toBase58String(bG))
461- let bO = StringEntry(bM, bN)
462- let bP = [IntegerEntry(X(bk, P), bD), StringEntry(("nft_" + toBase58String(bG)), bM), IntegerEntry("total_nft_issued", (bt + 1)), IntegerEntry(ae(bk, P), 0), BooleanEntry(Y(bk, P), bH), bF, ScriptTransfer(Address(fromBase58String(bk)), bC, aN), ScriptTransfer(Address(fromBase58String(d)), bB, aN), ScriptTransfer(bI, 1, bG)]
463- if (bq)
464- then [bO, bL, bK] :: bP
465- else bO :: bP
459+ else toBase58String(value(aP))
460+ let bg = v((bf + "_OPEN"))
461+ let bM = DeleteEntry((bf + "_OPEN"))
462+ let bN = StringEntry((bf + "_CLOSED"), ((bg + "_") + toString(br)))
463+ let bO = ((((((("art_sold_" + toString(bF)) + "_of_") + toString(bz)) + "_") + P) + "_") + bm)
464+ let bP = if (!(bs))
465+ then ((((((((((N + "_") + toString(br)) + "_") + bq) + "_") + toString(aV)) + "_") + aU) + "_") + toBase58String(bI))
466+ else ((((((((((toString(bK) + "_") + toString(br)) + "_") + bq) + "_") + toString(aM)) + "_") + bL) + "_") + toBase58String(bI))
467+ let bQ = StringEntry(bO, bP)
468+ let bR = [IntegerEntry(X(bm, P), bF), StringEntry(("nft_" + toBase58String(bI)), bO), IntegerEntry("total_nft_issued", (bv + 1)), IntegerEntry(ag(bm, P), 0), BooleanEntry(Y(bm, P), bJ), bH, ScriptTransfer(Address(fromBase58String(bm)), bE, aP), ScriptTransfer(Address(fromBase58String(d)), bD, aP), ScriptTransfer(bK, 1, bI)]
469+ if (bs)
470+ then [bQ, bN, bM] :: bR
471+ else bQ :: bR
466472 }
467473 }
468474 }
471477 }
472478
473479
474-@Callable(aI)
475-func addArtwork (F,D,aD,aE,aF,bQ,ao,as,ap,at,aq) = {
476- let bR = bi(aI)
477- let P = bR._1
478- let N = bR._2
479- let bp = bR._3
480+@Callable(aK)
481+func addArtwork (F,D,aF,aG,aH,bS,aq,au,ar,av,as,bT) = {
482+ let bU = bk(aK)
483+ let P = bU._1
484+ let N = bU._2
485+ let br = bU._3
480486 if (!(K(F)))
481487 then throw("Hash should be 64 characters maximum")
482488 else {
483- let bS = az(aq, at)
484- let aB = bS._1
485- let aC = bS._2
486- let bT = aA(N, ao, ap, aB, as, aC, aD, aE, aF)
487- if ((bT != ""))
489+ let bV = aB(as, av)
490+ let aD = bV._1
491+ let aE = bV._2
492+ let bW = aC(N, aq, ar, aD, au, aE, aF, aG, aH)
493+ if ((bW != ""))
488494 then throw("Something went wrong!")
489495 else {
490- let bU = aL(aI)
491- let aK = bU._1
492- let aN = bU._2
493- if (!(isDefined(aK)))
496+ let bX = aN(aK)
497+ let aM = bX._1
498+ let aP = bX._2
499+ if (!(isDefined(aM)))
494500 then throw("Something went wrong")
495501 else {
496- let bV = v(am(F, N))
497- if ((bV != ""))
502+ let bY = v(ao(F, N))
503+ if ((bY != ""))
498504 then throw("You already added it")
499505 else {
500- let bW = v(aj(F))
501- if ((bW != ""))
506+ let bZ = v(al(F))
507+ if ((bZ != ""))
502508 then throw("Hash already registered")
503509 else {
504- let bX = C(D, N, F)
505- if (!(bX))
510+ let ca = C(D, N, F)
511+ if (!(ca))
506512 then throw("Sign Certificate not found for this address.")
507- else [StringEntry(aj(F), N), StringEntry(am(F, N), P), IntegerEntry(O(N, P), bp), StringEntry(Q(N, P), aD), StringEntry(R(N, P), aE), StringEntry(S(N, P), ao), StringEntry(U(N, P), ap), StringEntry(T(N, P), as), StringEntry(Z(N, P), aC), StringEntry(aa(N, P), aB), StringEntry(ac(N, P), bQ), StringEntry(ab(N, P), aF), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(ak(N, D), P), StringEntry(ah(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aN)]
513+ else [StringEntry(al(F), N), StringEntry(ao(F, N), P), IntegerEntry(O(N, P), br), StringEntry(Q(N, P), aF), StringEntry(R(N, P), aG), StringEntry(S(N, P), aq), StringEntry(U(N, P), ar), StringEntry(T(N, P), au), StringEntry(Z(N, P), aE), StringEntry(aa(N, P), aD), StringEntry(ac(N, P), bS), StringEntry(ab(N, P), aH), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(am(N, D), P), StringEntry(aj(N, P), F), StringEntry(ae(N, P), bT), ScriptTransfer(Address(fromBase58String(d)), aM, aP)]
508514 }
509515 }
510516 }
514520
515521
516522
517-@Callable(aI)
518-func updateArtwork (ai,aD,aE,aF,bQ,ao,as,ap,at,aq) = if (!(p))
523+@Callable(aK)
524+func updateArtwork (ak,aF,aG,aH,bS,aq,au,ar,av,as,bT) = if (!(p))
519525 then throw(q)
520526 else {
521- let N = toBase58String(aI.caller.bytes)
522- let bY = az(aq, at)
523- let aB = bY._1
524- let aC = bY._2
525- let bT = aA(N, ao, ap, aB, as, aC, aD, aE, aF)
526- if ((bT != ""))
527+ let N = toBase58String(aK.caller.bytes)
528+ let cb = aB(as, av)
529+ let aD = cb._1
530+ let aE = cb._2
531+ let bW = aC(N, aq, ar, aD, au, aE, aF, aG, aH)
532+ if ((bW != ""))
527533 then throw("Something went wrong!")
528534 else {
529- let bV = v(Q(N, ai))
530- if ((bV == ""))
535+ let bY = v(Q(N, ak))
536+ if ((bY == ""))
531537 then throw("Entry not found")
532538 else {
533- let bZ = v(ag(N, ai))
534- if ((bZ == "ILLEGAL"))
539+ let cc = v(ai(N, ak))
540+ if ((cc == "ILLEGAL"))
535541 then throw("Cannot update ILLEGAL artwork")
536- else if (!(aO(N, ai)))
537- then [StringEntry(Q(N, ai), aD), StringEntry(R(N, ai), aE), StringEntry(S(N, ai), ao), StringEntry(U(N, ai), ap), StringEntry(T(N, ai), as), StringEntry(aa(N, ai), aB), StringEntry(Z(N, ai), aC), StringEntry(ab(N, ai), aF), StringEntry(ac(N, ai), bQ)]
542+ else if (!(aQ(N, ak)))
543+ then [StringEntry(Q(N, ak), aF), StringEntry(R(N, ak), aG), StringEntry(S(N, ak), aq), StringEntry(U(N, ak), ar), StringEntry(T(N, ak), au), StringEntry(aa(N, ak), aD), StringEntry(Z(N, ak), aE), StringEntry(ab(N, ak), aH), StringEntry(ac(N, ak), bS), StringEntry(ae(N, ak), bT)]
538544 else throw("Already minted")
539545 }
540546 }
542548
543549
544550
545-@Callable(aI)
546-func flagArtwork (P,ca,bZ,cb) = {
547- let cc = bi(aI)
548- let bo = cc._1
549- let N = cc._2
551+@Callable(aK)
552+func flagArtwork (P,cd,cc,ce) = {
553+ let cf = bk(aK)
554+ let bq = cf._1
555+ let N = cf._2
550556 if (containsElement([j, toString(this)], N))
551- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], bZ))
552- then [StringEntry(ag(ca, P), bZ), StringEntry(((("art_note_" + P) + "_") + ca), cb)]
553- else throw(("Unknow status " + bZ))
557+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cc))
558+ then [StringEntry(ai(cd, P), cc), StringEntry(ad(cd, P), ce)]
559+ else throw(("Unknow status " + cc))
554560 else throw("You are not allowed")
555561 }
556562
557563
558564
559-@Callable(aI)
560-func deleteArtwork (P,ca) = {
561- let cd = bi(aI)
562- let bo = cd._1
563- let N = cd._2
564- let aP = if (containsElement([j, k, toString(this)], N))
565- then ca
565+@Callable(aK)
566+func deleteArtwork (P,cd) = {
567+ let cg = bk(aK)
568+ let bq = cg._1
569+ let N = cg._2
570+ let aR = if (containsElement([j, k, toString(this)], N))
571+ then cd
566572 else N
567- let bV = valueOrErrorMessage(v(Q(aP, P)), "No art matching for this address")
568- if ((bV == ""))
573+ let bY = valueOrErrorMessage(v(Q(aR, P)), "No art matching for this address")
574+ if ((bY == ""))
569575 then throw("No art matching for this address")
570576 else {
571- let F = v(ah(aP, P))
577+ let F = v(aj(aR, P))
572578 if ((F == ""))
573579 then throw("No art hash matching for this address")
574580 else {
575- let D = v(W(aP, P))
581+ let D = v(W(aR, P))
576582 if ((D == ""))
577583 then throw("No SIGN ID matching")
578584 else {
579- let ce = [DeleteEntry(O(aP, P)), DeleteEntry(Q(aP, P)), DeleteEntry(R(aP, P)), DeleteEntry(S(aP, P)), DeleteEntry(U(aP, P)), DeleteEntry(T(aP, P)), DeleteEntry(Z(aP, P)), DeleteEntry(aa(aP, P)), DeleteEntry(ac(aP, P)), DeleteEntry(ab(aP, P)), DeleteEntry(V(aP, P)), DeleteEntry(W(aP, P)), DeleteEntry(X(aP, P)), DeleteEntry(Y(aP, P)), DeleteEntry(ag(ca, P)), DeleteEntry(ad(ca, P)), DeleteEntry(af(ca, P)), DeleteEntry(aj(F)), DeleteEntry(ak(aP, D)), DeleteEntry(am(F, aP)), DeleteEntry(ae(aP, P))]
580- if (!(aO(aP, P)))
585+ let ch = [DeleteEntry(O(aR, P)), DeleteEntry(Q(aR, P)), DeleteEntry(R(aR, P)), DeleteEntry(S(aR, P)), DeleteEntry(U(aR, P)), DeleteEntry(T(aR, P)), DeleteEntry(Z(aR, P)), DeleteEntry(aa(aR, P)), DeleteEntry(ac(aR, P)), DeleteEntry(ab(aR, P)), DeleteEntry(V(aR, P)), DeleteEntry(W(aR, P)), DeleteEntry(X(aR, P)), DeleteEntry(Y(aR, P)), DeleteEntry(ai(aR, P)), DeleteEntry(af(aR, P)), DeleteEntry(ah(aR, P)), DeleteEntry(al(F)), DeleteEntry(am(aR, D)), DeleteEntry(ao(F, aR)), DeleteEntry(ag(aR, P)), DeleteEntry(ad(aR, P)), DeleteEntry(ae(aR, P))]
586+ if (!(aQ(aR, P)))
581587 then if (!(p))
582588 then throw(q)
583- else ce
589+ else ch
584590 else if (containsElement([j, toString(this)], N))
585- then ce
591+ then ch
586592 else throw("Art already minted, you cannot delete it")
587593 }
588594 }
591597
592598
593599
594-@Callable(aI)
595-func sellArtwork (P,aX,cf,aN,br) = {
596- let cg = bi(aI)
597- let bo = cg._1
598- let N = cg._2
599- let bu = v(Q(N, P))
600- if ((bu == ""))
600+@Callable(aK)
601+func sellArtwork (P,aZ,ci,aP,bt) = {
602+ let cj = bk(aK)
603+ let bq = cj._1
604+ let N = cj._2
605+ let bw = v(Q(N, P))
606+ if ((bw == ""))
601607 then throw("This art doesn't match your account")
602608 else {
603- let bZ = v(ag(N, P))
604- if (containsElement(["CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], bZ))
609+ let cc = v(ai(N, P))
610+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cc))
605611 then throw("Flagged artwork")
606612 else {
607- let ch = y(("current_bidamount_" + P))
608- if ((0 > br))
613+ let ck = y(("current_bidamount_" + P))
614+ if ((0 > bt))
609615 then throw("Negative end")
610- else if (if ((br > 0))
611- then if ((cf != 1))
616+ else if (if ((bt > 0))
617+ then if ((ci != 1))
612618 then true
613- else (aX != 0)
619+ else (aZ != 0)
614620 else false)
615621 then throw("Timed offer only allowed for unique edition and offer only")
616622 else {
617- let ci = if ((br == 0))
623+ let cl = if ((bt == 0))
618624 then 0
619625 else height
620- if (!(aV(aN)))
626+ if (!(aX(aP)))
621627 then throw("Something went wrong!")
622- else if (!(aW(aN, aX)))
628+ else if (!(aY(aP, aZ)))
623629 then throw("Something went wrong!")
624630 else {
625- let aG = ax(N)
626- if ((aG != ""))
627- then throw(aG)
631+ let aI = az(N)
632+ if ((aI != ""))
633+ then throw(aI)
628634 else {
629- let bw = y(X(N, P))
630- let bx = y(V(N, P))
631- if ((cf > 100))
635+ let by = y(X(N, P))
636+ let bz = y(V(N, P))
637+ if ((ci > 100))
632638 then throw("100 editions max per artwork")
633- else if (if ((bw != 0))
634- then (bw == bx)
639+ else if (if ((by != 0))
640+ then (by == bz)
635641 else false)
636642 then throw("Max edition reached.")
637- else if (if ((bw > 0))
638- then (bx != cf)
643+ else if (if ((by > 0))
644+ then (bz != ci)
639645 else false)
640646 then throw("Cannot change maximum issuable anymore")
641- else if (if ((ch > 0))
642- then (bx != cf)
647+ else if (if ((ck > 0))
648+ then (bz != ci)
643649 else false)
644650 then throw("Cannot change maximum issuable with active orders")
645651 else {
646- let bH = if (if ((aX > 0))
647- then (cf > 0)
652+ let bJ = if (if ((aZ > 0))
653+ then (ci > 0)
648654 else false)
649655 then true
650656 else false
651-[BooleanEntry(Y(N, P), bH), IntegerEntry(ad(N, P), aX), IntegerEntry(V(N, P), cf), StringEntry(af(N, P), aN), IntegerEntry(ae(N, P), (ci + br))]
657+[BooleanEntry(Y(N, P), bJ), IntegerEntry(af(N, P), aZ), IntegerEntry(V(N, P), ci), StringEntry(ah(N, P), aP), IntegerEntry(ag(N, P), (cl + bt))]
652658 }
653659 }
654660 }
659665
660666
661667
662-@Callable(aI)
663-func buyArtwork (P,bk) = bj(aI, P, bk, "", "")
668+@Callable(aK)
669+func buyArtwork (P,bm) = bl(aK, P, bm, "", "")
664670
665671
666672
667-@Callable(aI)
668-func setBid (P,bk) = {
669- let cj = bi(aI)
670- let bo = cj._1
671- let N = cj._2
672- let bp = cj._3
673- let ck = aH(aI)
674- let aJ = ck._1
675- let aK = ck._2
676- let aN = if (!(isDefined(aJ.assetId)))
673+@Callable(aK)
674+func setBid (P,bm) = {
675+ let cm = bk(aK)
676+ let bq = cm._1
677+ let N = cm._2
678+ let br = cm._3
679+ let cn = aJ(aK)
680+ let aL = cn._1
681+ let aM = cn._2
682+ let aP = if (!(isDefined(aL.assetId)))
677683 then "WAVES"
678- else toBase58String(value(aJ.assetId))
679- let br = y(ae(bk, P))
680- if (if ((br != 0))
681- then (height >= br)
684+ else toBase58String(value(aL.assetId))
685+ let bt = y(ag(bm, P))
686+ if (if ((bt != 0))
687+ then (height >= bt)
682688 else false)
683689 then throw("Sale ended.")
684690 else {
685- let ch = y(("current_bidamount_" + P))
686- if (!(aV(aN)))
691+ let ck = y(("current_bidamount_" + P))
692+ if (!(aX(aP)))
687693 then throw("asset not accepted")
688- else if (!(aW(aN, aK)))
694+ else if (!(aY(aP, aM)))
689695 then throw("Wrong min sell")
690696 else {
691- let bw = y(X(bk, P))
692- let bx = y(V(bk, P))
693- if ((0 >= bx))
697+ let by = y(X(bm, P))
698+ let bz = y(V(bm, P))
699+ if ((0 >= bz))
694700 then throw("No max edition set for this artwork")
695- else if ((bw >= bx))
701+ else if ((by >= bz))
696702 then throw("Sold out, you cannot bid")
697- else [StringEntry((((((((("bid_" + P) + "_") + bk) + "_") + N) + "_") + bo) + "_OPEN"), ((((aN + "_") + toString(aK)) + "_") + toString(bp))), IntegerEntry(("current_bidamount_" + P), (ch + 1))]
703+ else [StringEntry((((((((("bid_" + P) + "_") + bm) + "_") + N) + "_") + bq) + "_OPEN"), ((((aP + "_") + toString(aM)) + "_") + toString(br))), IntegerEntry(("current_bidamount_" + P), (ck + 1))]
698704 }
699705 }
700706 }
701707
702708
703709
704-@Callable(aI)
705-func acceptBid (P,bk,bl,bm) = {
706- let N = toBase58String(aI.caller.bytes)
707- if ((N != bk))
710+@Callable(aK)
711+func acceptBid (P,bm,bn,bo) = {
712+ let N = toBase58String(aK.caller.bytes)
713+ if ((N != bm))
708714 then throw("You cannot do this action")
709- else bj(aI, P, bk, bl, bm)
715+ else bl(aK, P, bm, bn, bo)
710716 }
711717
712718
713719
714-@Callable(aI)
715-func cancelBid (P,bk,bl,bm) = {
716- let cl = bi(aI)
717- let bo = cl._1
718- let N = cl._2
719- let bp = cl._3
720- if (if ((N != bm))
721- then (N != bk)
720+@Callable(aK)
721+func cancelBid (P,bm,bn,bo) = {
722+ let co = bk(aK)
723+ let bq = co._1
724+ let N = co._2
725+ let br = co._3
726+ if (if ((N != bo))
727+ then (N != bm)
722728 else false)
723729 then throw("You cannot do this action")
724730 else {
725- let cm = if ((N == bk))
726- then bm
731+ let cp = if ((N == bm))
732+ then bo
727733 else N
728- let ch = y(("current_bidamount_" + P))
729- let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
730- let be = v((bd + "_OPEN"))
731- if ((be == ""))
734+ let ck = y(("current_bidamount_" + P))
735+ let bf = ((((((("bid_" + P) + "_") + bm) + "_") + bo) + "_") + bn)
736+ let bg = v((bf + "_OPEN"))
737+ if ((bg == ""))
732738 then throw("Bid not found")
733739 else {
734- let bf = split(be, "_")
735- let aN = bb(bf[0])
736- let cn = "CANCELED"
737-[DeleteEntry((bd + "_OPEN")), StringEntry(((bd + "_") + cn), ((be + "_") + toString(bp))), IntegerEntry(("current_bidamount_" + P), (ch - 1)), ScriptTransfer(Address(fromBase58String(cm)), parseIntValue(bf[1]), aN)]
740+ let bh = split(bg, "_")
741+ let aP = bd(bh[0])
742+ let cq = "CANCELED"
743+[DeleteEntry((bf + "_OPEN")), StringEntry(((bf + "_") + cq), ((bg + "_") + toString(br))), IntegerEntry(("current_bidamount_" + P), (ck - 1)), ScriptTransfer(Address(fromBase58String(cp)), parseIntValue(bh[1]), aP)]
738744 }
739745 }
740746 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
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 = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let e = if (a)
1313 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1414 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1515
1616 let f = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1717
1818 let g = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1919
2020 let h = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2121
2222 let i = base58''
2323
2424 let j = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2525
2626 let k = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2727
2828 let l = 7
2929
3030 let m = 10
3131
3232 let n = "bafybeifuyo4pqu54ismqgtb6e4h6kkvgx7zg4u3zibh2r7y6mb64i7bzza/licence.pdf"
3333
3434 let o = "a87758c354e30a9e78fb84fa3a0010a5090ab20df0be11ad45b5720cc187e639"
3535
3636 let p = valueOrElse(getBoolean(e, "conf_dapp_is_running"), true)
3737
3838 let q = valueOrElse(getString(e, "conf_maintenance_msg"), "")
3939
4040 let r = "SUSPENDED"
4141
4242 let s = "REMOVED"
4343
4444 let t = "UNREGISTERED"
4545
4646 let u = "ALLOWED"
4747
4848 func v (w) = valueOrElse(getString(this, w), "")
4949
5050
5151 func x (w) = valueOrErrorMessage(getInteger(b, w), "Integer undefine or 0 in oracle")
5252
5353
5454 func y (w) = valueOrElse(getInteger(this, w), 0)
5555
5656
5757 func z (w) = valueOrElse(getInteger(f, w), 0)
5858
5959
6060 func A (w) = valueOrElse(getBoolean(this, w), false)
6161
6262
6363 let B = x(("certification_fee_" + toBase58String(g)))
6464
6565 func C (D,E,F) = {
6666 let G = getString(c, ((("data_fc_" + D) + "_") + E))
6767 if ($isInstanceOf(G, "String"))
6868 then {
6969 let H = G
7070 if (contains(H, F))
7171 then true
7272 else false
7373 }
7474 else false
7575 }
7676
7777
7878 func I (J) = if (contains(J, "/"))
7979 then if (if ((76 > size(J)))
8080 then (size(split(J, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(J, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func K (L) = (size(L) == 64)
8888
8989
9090 func M (N) = ("user_status_" + N)
9191
9292
9393 func O (N,P) = ((("art_date_" + P) + "_") + N)
9494
9595
9696 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9797
9898
9999 func R (N,P) = ((("art_desc_" + P) + "_") + N)
100100
101101
102102 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
103103
104104
105105 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
106106
107107
108108 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
109109
110110
111111 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
112112
113113
114114 func W (N,P) = ((("art_signid_" + P) + "_") + N)
115115
116116
117117 func X (N,P) = ((("art_issued_" + P) + "_") + N)
118118
119119
120120 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
121121
122122
123123 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
124124
125125
126126 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
127127
128128
129129 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
130130
131131
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135-func ad (N,P) = ((("art_price_" + P) + "_") + N)
135+func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138-func ae (N,P) = ((("art_endsale_" + P) + "_") + N)
138+func ae (N,P) = ((("art_crawler_" + P) + "_") + N)
139139
140140
141-func af (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
141+func af (N,P) = ((("art_price_" + P) + "_") + N)
142142
143143
144-func ag (N,P) = ((("art_flag_" + P) + "_") + N)
144+func ag (N,P) = ((("art_endsale_" + P) + "_") + N)
145145
146146
147-func ah (N,ai) = ((("get_hashbytxidaddr_" + ai) + "_") + N)
147+func ah (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
148148
149149
150-func aj (F) = ("get_owner_by_hash_" + F)
150+func ai (N,P) = ((("art_flag_" + P) + "_") + N)
151151
152152
153-func ak (N,al) = ((("get_artidbysignid_" + al) + "_") + N)
153+func aj (N,ak) = ((("get_hashbytxidaddr_" + ak) + "_") + N)
154154
155155
156-func am (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
156+func al (F) = ("get_owner_by_hash_" + F)
157157
158158
159-func an (ao,ap,aq) = if (!(I(ao)))
159+func am (N,an) = ((("get_artidbysignid_" + an) + "_") + N)
160+
161+
162+func ao (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
163+
164+
165+func ap (aq,ar,as) = if (!(I(aq)))
160166 then throw("Wrong Display CID")
161- else if (!(I(ap)))
167+ else if (!(I(ar)))
162168 then throw("Wrong Export CID")
163- else if (if ((aq != ""))
164- then !(I(aq))
169+ else if (if ((as != ""))
170+ then !(I(as))
165171 else false)
166172 then throw("Wrong Licence CID")
167173 else true
168174
169175
170-func ar (as,at) = if (!(K(as)))
176+func at (au,av) = if (!(K(au)))
171177 then throw("Export Hash 64 char. max")
172- else if (!(K(at)))
178+ else if (!(K(av)))
173179 then throw("Licence Hash 64 char. max")
174180 else true
175181
176182
177-func au (av,aw) = if ((size(av) == 0))
183+func aw (ax,ay) = if ((size(ax) == 0))
178184 then throw("Field cannot be is empty")
179- else if ((size(av) > aw))
180- then throw((av + " is too long"))
185+ else if ((size(ax) > ay))
186+ then throw((ax + " is too long"))
181187 else true
182188
183189
184-func ax (N) = {
185- let ay = valueOrElse(getString(e, M(N)), t)
186- if (if ((ay == t))
190+func az (N) = {
191+ let aA = valueOrElse(getString(e, M(N)), t)
192+ if (if ((aA == t))
187193 then true
188- else (ay == u))
194+ else (aA == u))
189195 then "Register this account first with \"Account\" tab"
190- else if ((ay == r))
196+ else if ((aA == r))
191197 then "Account suspended"
192- else if ((ay == s))
198+ else if ((aA == s))
193199 then "Account removed"
194200 else ""
195201 }
196202
197203
198-func az (aq,at) = {
199- let J = if ((size(aq) == 0))
204+func aB (as,av) = {
205+ let J = if ((size(as) == 0))
200206 then n
201- else aq
202- let L = if ((size(at) == 0))
207+ else as
208+ let L = if ((size(av) == 0))
203209 then o
204- else at
210+ else av
205211 $Tuple2(J, L)
206212 }
207213
208214
209-func aA (N,ao,ap,aB,as,aC,aD,aE,aF) = {
210- let aG = ax(N)
211- if ((aG != ""))
212- then throw(aG)
213- else if ((size(ao) == 0))
215+func aC (N,aq,ar,aD,au,aE,aF,aG,aH) = {
216+ let aI = az(N)
217+ if ((aI != ""))
218+ then throw(aI)
219+ else if ((size(aq) == 0))
214220 then throw("Display CID cannot be empty")
215- else if (!(an(ao, ap, aB)))
221+ else if (!(ap(aq, ar, aD)))
216222 then throw("Problem with CID")
217- else if (!(ar(as, aC)))
223+ else if (!(at(au, aE)))
218224 then throw("Problem with Hashes")
219- else if (!(au(aD, 100)))
225+ else if (!(aw(aF, 100)))
220226 then throw("100 Char. max name")
221- else if (!(au(aE, 1000)))
227+ else if (!(aw(aG, 1000)))
222228 then throw("1000 Char. max description")
223- else if ((size(split(aF, ",")) > 5))
229+ else if ((size(split(aH, ",")) > 5))
224230 then throw("5 tags max.")
225231 else ""
226232 }
227233
228234
229-func aH (aI) = if ((size(aI.payments) == 0))
235+func aJ (aK) = if ((size(aK.payments) == 0))
230236 then throw("No payment attached")
231237 else {
232- let aJ = value(aI.payments[0])
233- let aK = value(aJ.amount)
234- $Tuple2(aJ, aK)
238+ let aL = value(aK.payments[0])
239+ let aM = value(aL.amount)
240+ $Tuple2(aL, aM)
235241 }
236242
237243
238-func aL (aI) = {
239- let aM = aH(aI)
240- let aJ = aM._1
241- let aK = aM._2
242- let aN = if (if (isDefined(aJ.assetId))
243- then (aJ.assetId == g)
244+func aN (aK) = {
245+ let aO = aJ(aK)
246+ let aL = aO._1
247+ let aM = aO._2
248+ let aP = if (if (isDefined(aL.assetId))
249+ then (aL.assetId == g)
244250 else false)
245- then aJ.assetId
251+ then aL.assetId
246252 else throw("Only SIGN token accepted as transaction fee")
247- if ((aK != B))
253+ if ((aM != B))
248254 then throw(("Payment amount should be " + toString(B)))
249- else $Tuple2(aK, aN)
255+ else $Tuple2(aM, aP)
250256 }
251257
252258
253-func aO (aP,P) = {
254- let G = getInteger(this, X(aP, P))
259+func aQ (aR,P) = {
260+ let G = getInteger(this, X(aR, P))
255261 if ($isInstanceOf(G, "Int"))
256262 then {
257- let aQ = G
258- if ((aQ != 0))
263+ let aS = G
264+ if ((aS != 0))
259265 then true
260266 else false
261267 }
262268 else false
263269 }
264270
265271
266-func aR (aI,aS,aT) = {
267- let aU = aH(aI)
268- let aJ = aU._1
269- let aK = aU._2
270- let aN = if (!(isDefined(aJ.assetId)))
272+func aT (aK,aU,aV) = {
273+ let aW = aJ(aK)
274+ let aL = aW._1
275+ let aM = aW._2
276+ let aP = if (!(isDefined(aL.assetId)))
271277 then unit
272- else if (if ((size(aS) > 0))
273- then (toBase58String(value(aJ.assetId)) == aS)
278+ else if (if ((size(aU) > 0))
279+ then (toBase58String(value(aL.assetId)) == aU)
274280 else false)
275- then aJ.assetId
281+ then aL.assetId
276282 else throw("Wrong asset id")
277- if (if ((aN == unit))
278- then (aS != "")
283+ if (if ((aP == unit))
284+ then (aU != "")
279285 else false)
280286 then throw("Wrong asset id")
281- else if ((aT != aK))
287+ else if ((aV != aM))
282288 then throw("Payment don't match")
283- else $Tuple2(aK, aN)
289+ else $Tuple2(aM, aP)
284290 }
285291
286292
287-func aV (aN) = if (if (if (if ((aN != toBase58String(g)))
288- then (aN != toBase58String(i))
293+func aX (aP) = if (if (if (if ((aP != toBase58String(g)))
294+ then (aP != toBase58String(i))
289295 else false)
290- then (aN != "WAVES")
296+ then (aP != "WAVES")
291297 else false)
292- then (aN != toBase58String(h))
298+ then (aP != toBase58String(h))
293299 else false)
294300 then throw("Only SIGN, USDN or WAVES accepted")
295301 else true
296302
297303
298-func aW (aN,aX) = {
299- let aY = if (a)
304+func aY (aP,aZ) = {
305+ let ba = if (a)
300306 then 10
301307 else x("waves_min_sell")
302- let aZ = 1000000
303- let ba = if (a)
308+ let bb = 1000000
309+ let bc = if (a)
304310 then 1
305311 else (B * 2)
306- if (if (if (if (if ((aN == toBase58String(h)))
307- then (aZ > aX)
312+ if (if (if (if (if ((aP == toBase58String(h)))
313+ then (bb > aZ)
308314 else false)
309- then (aX != 0)
315+ then (aZ != 0)
310316 else false)
311317 then true
312- else if (if ((aN == toBase58String(g)))
313- then (ba > aX)
318+ else if (if ((aP == toBase58String(g)))
319+ then (bc > aZ)
314320 else false)
315- then (aX != 0)
321+ then (aZ != 0)
316322 else false)
317323 then true
318- else if (if (if ((aN == toBase58String(i)))
324+ else if (if (if ((aP == toBase58String(i)))
319325 then true
320- else (aN == "WAVES"))
321- then (aY > aX)
326+ else (aP == "WAVES"))
327+ then (ba > aZ)
322328 else false)
323- then (aX != 0)
329+ then (aZ != 0)
324330 else false)
325331 then throw("Wrong minimum sell price")
326332 else true
327333 }
328334
329335
330-func bb (aN) = if ((aN == "WAVES"))
336+func bd (aP) = if ((aP == "WAVES"))
331337 then unit
332- else fromBase58String(aN)
338+ else fromBase58String(aP)
333339
334340
335-func bc (bd) = {
336- let be = v((bd + "_OPEN"))
337- if ((be == ""))
341+func be (bf) = {
342+ let bg = v((bf + "_OPEN"))
343+ if ((bg == ""))
338344 then throw("Bid not found")
339345 else {
340- let bf = split(be, "_")
341- let bg = parseIntValue(bf[1])
342- let bh = bb(bf[0])
343- if ((0 >= bg))
346+ let bh = split(bg, "_")
347+ let bi = parseIntValue(bh[1])
348+ let bj = bd(bh[0])
349+ if ((0 >= bi))
344350 then throw("Wrong amount")
345- else $Tuple2(bg, bh)
351+ else $Tuple2(bi, bj)
346352 }
347353 }
348354
349355
350-func bi (aI) = if (!(p))
356+func bk (aK) = if (!(p))
351357 then throw(q)
352- else $Tuple3(toBase58String(aI.transactionId), toBase58String(aI.caller.bytes), lastBlock.timestamp)
358+ else $Tuple3(toBase58String(aK.transactionId), toBase58String(aK.caller.bytes), lastBlock.timestamp)
353359
354360
355-func bj (aI,P,bk,bl,bm) = {
356- let bn = bi(aI)
357- let bo = bn._1
358- let N = bn._2
359- let bp = bn._3
360- let bq = if (if (if ((toBase58String(aI.caller.bytes) == bk))
361- then (bm != "")
361+func bl (aK,P,bm,bn,bo) = {
362+ let bp = bk(aK)
363+ let bq = bp._1
364+ let N = bp._2
365+ let br = bp._3
366+ let bs = if (if (if ((toBase58String(aK.caller.bytes) == bm))
367+ then (bo != "")
362368 else false)
363- then (bl != "")
369+ then (bn != "")
364370 else false)
365371 then true
366372 else false
367- let br = y(ae(N, P))
368- if (if (if ((br != 0))
369- then (height >= br)
373+ let bt = y(ag(N, P))
374+ if (if (if ((bt != 0))
375+ then (height >= bt)
370376 else false)
371- then !(bq)
377+ then !(bs)
372378 else false)
373379 then throw("Sale ended.")
374380 else {
375- let bs = (toBase58String(aI.caller.bytes) == bk)
376- let bt = y("total_nft_issued")
377- let D = v(W(bk, P))
378- let bu = v(Q(bk, P))
379- if ((bu == ""))
381+ let bu = (toBase58String(aK.caller.bytes) == bm)
382+ let bv = y("total_nft_issued")
383+ let D = v(W(bm, P))
384+ let bw = v(Q(bm, P))
385+ if ((bw == ""))
380386 then throw("Art doesn't exist")
381387 else {
382- let bv = A(Y(bk, P))
383- let bw = y(X(bk, P))
384- let aT = if (bs)
388+ let bx = A(Y(bm, P))
389+ let by = y(X(bm, P))
390+ let aV = if (bu)
385391 then (B * 2)
386- else y(ad(bk, P))
387- let aS = if (bs)
392+ else y(af(bm, P))
393+ let aU = if (bu)
388394 then toBase58String(g)
389- else v(af(bk, P))
390- let bx = y(V(bk, P))
391- if (if (if (!(bq))
392- then !(bs)
395+ else v(ah(bm, P))
396+ let bz = y(V(bm, P))
397+ if (if (if (!(bs))
398+ then !(bu)
393399 else false)
394- then if (if ((0 >= aT))
400+ then if (if ((0 >= aV))
395401 then true
396- else !(bv))
402+ else !(bx))
397403 then true
398- else (0 >= bx)
404+ else (0 >= bz)
399405 else false)
400406 then throw("Art not for sale")
401- else if (if (if (!(bq))
402- then bs
407+ else if (if (if (!(bs))
408+ then bu
403409 else false)
404- then (0 >= bx)
410+ then (0 >= bz)
405411 else false)
406412 then throw("Max issuable not set")
407413 else {
408- let aG = ax(bk)
409- if (if (bq)
410- then (aG != "")
414+ let aI = az(bm)
415+ if (if (bs)
416+ then (aI != "")
411417 else false)
412- then throw(aG)
418+ then throw(aI)
413419 else {
414- let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
415- let by = if (bq)
416- then bc(bd)
417- else aR(aI, aS, aT)
418- let aK = by._1
419- let aN = by._2
420- let bz = z(bk)
421- let bA = if ((bz > height))
420+ let bf = ((((((("bid_" + P) + "_") + bm) + "_") + bo) + "_") + bn)
421+ let bA = if (bs)
422+ then be(bf)
423+ else aT(aK, aU, aV)
424+ let aM = bA._1
425+ let aP = bA._2
426+ let bB = z(bm)
427+ let bC = if ((bB > height))
422428 then 0
423- else if ((aN == g))
429+ else if ((aP == g))
424430 then l
425431 else m
426- let bB = fraction(aK, bA, 100)
427- let bC = (aK - bB)
428- if ((bw == bx))
432+ let bD = fraction(aM, bC, 100)
433+ let bE = (aM - bD)
434+ if ((by == bz))
429435 then throw("Art sold out")
430436 else {
431- let bD = (bw + 1)
432- let bE = ((((((((((("Creator: " + bk) + ",
437+ let bF = (by + 1)
438+ let bG = ((((((((((("Creator: " + bm) + ",
433439 ArtID: ") + P) + ",
434440 SignID: ") + D) + ",
435- Artwork name: ") + bu) + ",
436- Issue: ") + toString(bD)) + "/") + toString(bx))
437- let bF = Issue(("SA_" + toString((bt + 1))), bE, 1, 0, false)
438- let bG = calculateAssetId(bF)
439- let bH = if (if ((bD == bx))
441+ Artwork name: ") + bw) + ",
442+ Issue: ") + toString(bF)) + "/") + toString(bz))
443+ let bH = Issue(("SA_" + toString((bv + 1))), bG, 1, 0, false)
444+ let bI = calculateAssetId(bH)
445+ let bJ = if (if ((bF == bz))
440446 then true
441- else !(bv))
447+ else !(bx))
442448 then false
443449 else true
444- let bI = if (if (if ((N == bk))
445- then (bm != "")
450+ let bK = if (if (if ((N == bm))
451+ then (bo != "")
446452 else false)
447- then (bl != "")
453+ then (bn != "")
448454 else false)
449- then addressFromStringValue(bm)
450- else aI.caller
451- let bJ = if (!(isDefined(aN)))
455+ then addressFromStringValue(bo)
456+ else aK.caller
457+ let bL = if (!(isDefined(aP)))
452458 then "WAVES"
453- else toBase58String(value(aN))
454- let be = v((bd + "_OPEN"))
455- let bK = DeleteEntry((bd + "_OPEN"))
456- let bL = StringEntry((bd + "_CLOSED"), ((be + "_") + toString(bp)))
457- let bM = ((((((("art_sold_" + toString(bD)) + "_of_") + toString(bx)) + "_") + P) + "_") + bk)
458- let bN = if (!(bq))
459- then ((((((((((N + "_") + toString(bp)) + "_") + bo) + "_") + toString(aT)) + "_") + aS) + "_") + toBase58String(bG))
460- else ((((((((((toString(bI) + "_") + toString(bp)) + "_") + bo) + "_") + toString(aK)) + "_") + bJ) + "_") + toBase58String(bG))
461- let bO = StringEntry(bM, bN)
462- let bP = [IntegerEntry(X(bk, P), bD), StringEntry(("nft_" + toBase58String(bG)), bM), IntegerEntry("total_nft_issued", (bt + 1)), IntegerEntry(ae(bk, P), 0), BooleanEntry(Y(bk, P), bH), bF, ScriptTransfer(Address(fromBase58String(bk)), bC, aN), ScriptTransfer(Address(fromBase58String(d)), bB, aN), ScriptTransfer(bI, 1, bG)]
463- if (bq)
464- then [bO, bL, bK] :: bP
465- else bO :: bP
459+ else toBase58String(value(aP))
460+ let bg = v((bf + "_OPEN"))
461+ let bM = DeleteEntry((bf + "_OPEN"))
462+ let bN = StringEntry((bf + "_CLOSED"), ((bg + "_") + toString(br)))
463+ let bO = ((((((("art_sold_" + toString(bF)) + "_of_") + toString(bz)) + "_") + P) + "_") + bm)
464+ let bP = if (!(bs))
465+ then ((((((((((N + "_") + toString(br)) + "_") + bq) + "_") + toString(aV)) + "_") + aU) + "_") + toBase58String(bI))
466+ else ((((((((((toString(bK) + "_") + toString(br)) + "_") + bq) + "_") + toString(aM)) + "_") + bL) + "_") + toBase58String(bI))
467+ let bQ = StringEntry(bO, bP)
468+ let bR = [IntegerEntry(X(bm, P), bF), StringEntry(("nft_" + toBase58String(bI)), bO), IntegerEntry("total_nft_issued", (bv + 1)), IntegerEntry(ag(bm, P), 0), BooleanEntry(Y(bm, P), bJ), bH, ScriptTransfer(Address(fromBase58String(bm)), bE, aP), ScriptTransfer(Address(fromBase58String(d)), bD, aP), ScriptTransfer(bK, 1, bI)]
469+ if (bs)
470+ then [bQ, bN, bM] :: bR
471+ else bQ :: bR
466472 }
467473 }
468474 }
469475 }
470476 }
471477 }
472478
473479
474-@Callable(aI)
475-func addArtwork (F,D,aD,aE,aF,bQ,ao,as,ap,at,aq) = {
476- let bR = bi(aI)
477- let P = bR._1
478- let N = bR._2
479- let bp = bR._3
480+@Callable(aK)
481+func addArtwork (F,D,aF,aG,aH,bS,aq,au,ar,av,as,bT) = {
482+ let bU = bk(aK)
483+ let P = bU._1
484+ let N = bU._2
485+ let br = bU._3
480486 if (!(K(F)))
481487 then throw("Hash should be 64 characters maximum")
482488 else {
483- let bS = az(aq, at)
484- let aB = bS._1
485- let aC = bS._2
486- let bT = aA(N, ao, ap, aB, as, aC, aD, aE, aF)
487- if ((bT != ""))
489+ let bV = aB(as, av)
490+ let aD = bV._1
491+ let aE = bV._2
492+ let bW = aC(N, aq, ar, aD, au, aE, aF, aG, aH)
493+ if ((bW != ""))
488494 then throw("Something went wrong!")
489495 else {
490- let bU = aL(aI)
491- let aK = bU._1
492- let aN = bU._2
493- if (!(isDefined(aK)))
496+ let bX = aN(aK)
497+ let aM = bX._1
498+ let aP = bX._2
499+ if (!(isDefined(aM)))
494500 then throw("Something went wrong")
495501 else {
496- let bV = v(am(F, N))
497- if ((bV != ""))
502+ let bY = v(ao(F, N))
503+ if ((bY != ""))
498504 then throw("You already added it")
499505 else {
500- let bW = v(aj(F))
501- if ((bW != ""))
506+ let bZ = v(al(F))
507+ if ((bZ != ""))
502508 then throw("Hash already registered")
503509 else {
504- let bX = C(D, N, F)
505- if (!(bX))
510+ let ca = C(D, N, F)
511+ if (!(ca))
506512 then throw("Sign Certificate not found for this address.")
507- else [StringEntry(aj(F), N), StringEntry(am(F, N), P), IntegerEntry(O(N, P), bp), StringEntry(Q(N, P), aD), StringEntry(R(N, P), aE), StringEntry(S(N, P), ao), StringEntry(U(N, P), ap), StringEntry(T(N, P), as), StringEntry(Z(N, P), aC), StringEntry(aa(N, P), aB), StringEntry(ac(N, P), bQ), StringEntry(ab(N, P), aF), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(ak(N, D), P), StringEntry(ah(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aN)]
513+ else [StringEntry(al(F), N), StringEntry(ao(F, N), P), IntegerEntry(O(N, P), br), StringEntry(Q(N, P), aF), StringEntry(R(N, P), aG), StringEntry(S(N, P), aq), StringEntry(U(N, P), ar), StringEntry(T(N, P), au), StringEntry(Z(N, P), aE), StringEntry(aa(N, P), aD), StringEntry(ac(N, P), bS), StringEntry(ab(N, P), aH), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(am(N, D), P), StringEntry(aj(N, P), F), StringEntry(ae(N, P), bT), ScriptTransfer(Address(fromBase58String(d)), aM, aP)]
508514 }
509515 }
510516 }
511517 }
512518 }
513519 }
514520
515521
516522
517-@Callable(aI)
518-func updateArtwork (ai,aD,aE,aF,bQ,ao,as,ap,at,aq) = if (!(p))
523+@Callable(aK)
524+func updateArtwork (ak,aF,aG,aH,bS,aq,au,ar,av,as,bT) = if (!(p))
519525 then throw(q)
520526 else {
521- let N = toBase58String(aI.caller.bytes)
522- let bY = az(aq, at)
523- let aB = bY._1
524- let aC = bY._2
525- let bT = aA(N, ao, ap, aB, as, aC, aD, aE, aF)
526- if ((bT != ""))
527+ let N = toBase58String(aK.caller.bytes)
528+ let cb = aB(as, av)
529+ let aD = cb._1
530+ let aE = cb._2
531+ let bW = aC(N, aq, ar, aD, au, aE, aF, aG, aH)
532+ if ((bW != ""))
527533 then throw("Something went wrong!")
528534 else {
529- let bV = v(Q(N, ai))
530- if ((bV == ""))
535+ let bY = v(Q(N, ak))
536+ if ((bY == ""))
531537 then throw("Entry not found")
532538 else {
533- let bZ = v(ag(N, ai))
534- if ((bZ == "ILLEGAL"))
539+ let cc = v(ai(N, ak))
540+ if ((cc == "ILLEGAL"))
535541 then throw("Cannot update ILLEGAL artwork")
536- else if (!(aO(N, ai)))
537- then [StringEntry(Q(N, ai), aD), StringEntry(R(N, ai), aE), StringEntry(S(N, ai), ao), StringEntry(U(N, ai), ap), StringEntry(T(N, ai), as), StringEntry(aa(N, ai), aB), StringEntry(Z(N, ai), aC), StringEntry(ab(N, ai), aF), StringEntry(ac(N, ai), bQ)]
542+ else if (!(aQ(N, ak)))
543+ then [StringEntry(Q(N, ak), aF), StringEntry(R(N, ak), aG), StringEntry(S(N, ak), aq), StringEntry(U(N, ak), ar), StringEntry(T(N, ak), au), StringEntry(aa(N, ak), aD), StringEntry(Z(N, ak), aE), StringEntry(ab(N, ak), aH), StringEntry(ac(N, ak), bS), StringEntry(ae(N, ak), bT)]
538544 else throw("Already minted")
539545 }
540546 }
541547 }
542548
543549
544550
545-@Callable(aI)
546-func flagArtwork (P,ca,bZ,cb) = {
547- let cc = bi(aI)
548- let bo = cc._1
549- let N = cc._2
551+@Callable(aK)
552+func flagArtwork (P,cd,cc,ce) = {
553+ let cf = bk(aK)
554+ let bq = cf._1
555+ let N = cf._2
550556 if (containsElement([j, toString(this)], N))
551- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], bZ))
552- then [StringEntry(ag(ca, P), bZ), StringEntry(((("art_note_" + P) + "_") + ca), cb)]
553- else throw(("Unknow status " + bZ))
557+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cc))
558+ then [StringEntry(ai(cd, P), cc), StringEntry(ad(cd, P), ce)]
559+ else throw(("Unknow status " + cc))
554560 else throw("You are not allowed")
555561 }
556562
557563
558564
559-@Callable(aI)
560-func deleteArtwork (P,ca) = {
561- let cd = bi(aI)
562- let bo = cd._1
563- let N = cd._2
564- let aP = if (containsElement([j, k, toString(this)], N))
565- then ca
565+@Callable(aK)
566+func deleteArtwork (P,cd) = {
567+ let cg = bk(aK)
568+ let bq = cg._1
569+ let N = cg._2
570+ let aR = if (containsElement([j, k, toString(this)], N))
571+ then cd
566572 else N
567- let bV = valueOrErrorMessage(v(Q(aP, P)), "No art matching for this address")
568- if ((bV == ""))
573+ let bY = valueOrErrorMessage(v(Q(aR, P)), "No art matching for this address")
574+ if ((bY == ""))
569575 then throw("No art matching for this address")
570576 else {
571- let F = v(ah(aP, P))
577+ let F = v(aj(aR, P))
572578 if ((F == ""))
573579 then throw("No art hash matching for this address")
574580 else {
575- let D = v(W(aP, P))
581+ let D = v(W(aR, P))
576582 if ((D == ""))
577583 then throw("No SIGN ID matching")
578584 else {
579- let ce = [DeleteEntry(O(aP, P)), DeleteEntry(Q(aP, P)), DeleteEntry(R(aP, P)), DeleteEntry(S(aP, P)), DeleteEntry(U(aP, P)), DeleteEntry(T(aP, P)), DeleteEntry(Z(aP, P)), DeleteEntry(aa(aP, P)), DeleteEntry(ac(aP, P)), DeleteEntry(ab(aP, P)), DeleteEntry(V(aP, P)), DeleteEntry(W(aP, P)), DeleteEntry(X(aP, P)), DeleteEntry(Y(aP, P)), DeleteEntry(ag(ca, P)), DeleteEntry(ad(ca, P)), DeleteEntry(af(ca, P)), DeleteEntry(aj(F)), DeleteEntry(ak(aP, D)), DeleteEntry(am(F, aP)), DeleteEntry(ae(aP, P))]
580- if (!(aO(aP, P)))
585+ let ch = [DeleteEntry(O(aR, P)), DeleteEntry(Q(aR, P)), DeleteEntry(R(aR, P)), DeleteEntry(S(aR, P)), DeleteEntry(U(aR, P)), DeleteEntry(T(aR, P)), DeleteEntry(Z(aR, P)), DeleteEntry(aa(aR, P)), DeleteEntry(ac(aR, P)), DeleteEntry(ab(aR, P)), DeleteEntry(V(aR, P)), DeleteEntry(W(aR, P)), DeleteEntry(X(aR, P)), DeleteEntry(Y(aR, P)), DeleteEntry(ai(aR, P)), DeleteEntry(af(aR, P)), DeleteEntry(ah(aR, P)), DeleteEntry(al(F)), DeleteEntry(am(aR, D)), DeleteEntry(ao(F, aR)), DeleteEntry(ag(aR, P)), DeleteEntry(ad(aR, P)), DeleteEntry(ae(aR, P))]
586+ if (!(aQ(aR, P)))
581587 then if (!(p))
582588 then throw(q)
583- else ce
589+ else ch
584590 else if (containsElement([j, toString(this)], N))
585- then ce
591+ then ch
586592 else throw("Art already minted, you cannot delete it")
587593 }
588594 }
589595 }
590596 }
591597
592598
593599
594-@Callable(aI)
595-func sellArtwork (P,aX,cf,aN,br) = {
596- let cg = bi(aI)
597- let bo = cg._1
598- let N = cg._2
599- let bu = v(Q(N, P))
600- if ((bu == ""))
600+@Callable(aK)
601+func sellArtwork (P,aZ,ci,aP,bt) = {
602+ let cj = bk(aK)
603+ let bq = cj._1
604+ let N = cj._2
605+ let bw = v(Q(N, P))
606+ if ((bw == ""))
601607 then throw("This art doesn't match your account")
602608 else {
603- let bZ = v(ag(N, P))
604- if (containsElement(["CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], bZ))
609+ let cc = v(ai(N, P))
610+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cc))
605611 then throw("Flagged artwork")
606612 else {
607- let ch = y(("current_bidamount_" + P))
608- if ((0 > br))
613+ let ck = y(("current_bidamount_" + P))
614+ if ((0 > bt))
609615 then throw("Negative end")
610- else if (if ((br > 0))
611- then if ((cf != 1))
616+ else if (if ((bt > 0))
617+ then if ((ci != 1))
612618 then true
613- else (aX != 0)
619+ else (aZ != 0)
614620 else false)
615621 then throw("Timed offer only allowed for unique edition and offer only")
616622 else {
617- let ci = if ((br == 0))
623+ let cl = if ((bt == 0))
618624 then 0
619625 else height
620- if (!(aV(aN)))
626+ if (!(aX(aP)))
621627 then throw("Something went wrong!")
622- else if (!(aW(aN, aX)))
628+ else if (!(aY(aP, aZ)))
623629 then throw("Something went wrong!")
624630 else {
625- let aG = ax(N)
626- if ((aG != ""))
627- then throw(aG)
631+ let aI = az(N)
632+ if ((aI != ""))
633+ then throw(aI)
628634 else {
629- let bw = y(X(N, P))
630- let bx = y(V(N, P))
631- if ((cf > 100))
635+ let by = y(X(N, P))
636+ let bz = y(V(N, P))
637+ if ((ci > 100))
632638 then throw("100 editions max per artwork")
633- else if (if ((bw != 0))
634- then (bw == bx)
639+ else if (if ((by != 0))
640+ then (by == bz)
635641 else false)
636642 then throw("Max edition reached.")
637- else if (if ((bw > 0))
638- then (bx != cf)
643+ else if (if ((by > 0))
644+ then (bz != ci)
639645 else false)
640646 then throw("Cannot change maximum issuable anymore")
641- else if (if ((ch > 0))
642- then (bx != cf)
647+ else if (if ((ck > 0))
648+ then (bz != ci)
643649 else false)
644650 then throw("Cannot change maximum issuable with active orders")
645651 else {
646- let bH = if (if ((aX > 0))
647- then (cf > 0)
652+ let bJ = if (if ((aZ > 0))
653+ then (ci > 0)
648654 else false)
649655 then true
650656 else false
651-[BooleanEntry(Y(N, P), bH), IntegerEntry(ad(N, P), aX), IntegerEntry(V(N, P), cf), StringEntry(af(N, P), aN), IntegerEntry(ae(N, P), (ci + br))]
657+[BooleanEntry(Y(N, P), bJ), IntegerEntry(af(N, P), aZ), IntegerEntry(V(N, P), ci), StringEntry(ah(N, P), aP), IntegerEntry(ag(N, P), (cl + bt))]
652658 }
653659 }
654660 }
655661 }
656662 }
657663 }
658664 }
659665
660666
661667
662-@Callable(aI)
663-func buyArtwork (P,bk) = bj(aI, P, bk, "", "")
668+@Callable(aK)
669+func buyArtwork (P,bm) = bl(aK, P, bm, "", "")
664670
665671
666672
667-@Callable(aI)
668-func setBid (P,bk) = {
669- let cj = bi(aI)
670- let bo = cj._1
671- let N = cj._2
672- let bp = cj._3
673- let ck = aH(aI)
674- let aJ = ck._1
675- let aK = ck._2
676- let aN = if (!(isDefined(aJ.assetId)))
673+@Callable(aK)
674+func setBid (P,bm) = {
675+ let cm = bk(aK)
676+ let bq = cm._1
677+ let N = cm._2
678+ let br = cm._3
679+ let cn = aJ(aK)
680+ let aL = cn._1
681+ let aM = cn._2
682+ let aP = if (!(isDefined(aL.assetId)))
677683 then "WAVES"
678- else toBase58String(value(aJ.assetId))
679- let br = y(ae(bk, P))
680- if (if ((br != 0))
681- then (height >= br)
684+ else toBase58String(value(aL.assetId))
685+ let bt = y(ag(bm, P))
686+ if (if ((bt != 0))
687+ then (height >= bt)
682688 else false)
683689 then throw("Sale ended.")
684690 else {
685- let ch = y(("current_bidamount_" + P))
686- if (!(aV(aN)))
691+ let ck = y(("current_bidamount_" + P))
692+ if (!(aX(aP)))
687693 then throw("asset not accepted")
688- else if (!(aW(aN, aK)))
694+ else if (!(aY(aP, aM)))
689695 then throw("Wrong min sell")
690696 else {
691- let bw = y(X(bk, P))
692- let bx = y(V(bk, P))
693- if ((0 >= bx))
697+ let by = y(X(bm, P))
698+ let bz = y(V(bm, P))
699+ if ((0 >= bz))
694700 then throw("No max edition set for this artwork")
695- else if ((bw >= bx))
701+ else if ((by >= bz))
696702 then throw("Sold out, you cannot bid")
697- else [StringEntry((((((((("bid_" + P) + "_") + bk) + "_") + N) + "_") + bo) + "_OPEN"), ((((aN + "_") + toString(aK)) + "_") + toString(bp))), IntegerEntry(("current_bidamount_" + P), (ch + 1))]
703+ else [StringEntry((((((((("bid_" + P) + "_") + bm) + "_") + N) + "_") + bq) + "_OPEN"), ((((aP + "_") + toString(aM)) + "_") + toString(br))), IntegerEntry(("current_bidamount_" + P), (ck + 1))]
698704 }
699705 }
700706 }
701707
702708
703709
704-@Callable(aI)
705-func acceptBid (P,bk,bl,bm) = {
706- let N = toBase58String(aI.caller.bytes)
707- if ((N != bk))
710+@Callable(aK)
711+func acceptBid (P,bm,bn,bo) = {
712+ let N = toBase58String(aK.caller.bytes)
713+ if ((N != bm))
708714 then throw("You cannot do this action")
709- else bj(aI, P, bk, bl, bm)
715+ else bl(aK, P, bm, bn, bo)
710716 }
711717
712718
713719
714-@Callable(aI)
715-func cancelBid (P,bk,bl,bm) = {
716- let cl = bi(aI)
717- let bo = cl._1
718- let N = cl._2
719- let bp = cl._3
720- if (if ((N != bm))
721- then (N != bk)
720+@Callable(aK)
721+func cancelBid (P,bm,bn,bo) = {
722+ let co = bk(aK)
723+ let bq = co._1
724+ let N = co._2
725+ let br = co._3
726+ if (if ((N != bo))
727+ then (N != bm)
722728 else false)
723729 then throw("You cannot do this action")
724730 else {
725- let cm = if ((N == bk))
726- then bm
731+ let cp = if ((N == bm))
732+ then bo
727733 else N
728- let ch = y(("current_bidamount_" + P))
729- let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
730- let be = v((bd + "_OPEN"))
731- if ((be == ""))
734+ let ck = y(("current_bidamount_" + P))
735+ let bf = ((((((("bid_" + P) + "_") + bm) + "_") + bo) + "_") + bn)
736+ let bg = v((bf + "_OPEN"))
737+ if ((bg == ""))
732738 then throw("Bid not found")
733739 else {
734- let bf = split(be, "_")
735- let aN = bb(bf[0])
736- let cn = "CANCELED"
737-[DeleteEntry((bd + "_OPEN")), StringEntry(((bd + "_") + cn), ((be + "_") + toString(bp))), IntegerEntry(("current_bidamount_" + P), (ch - 1)), ScriptTransfer(Address(fromBase58String(cm)), parseIntValue(bf[1]), aN)]
740+ let bh = split(bg, "_")
741+ let aP = bd(bh[0])
742+ let cq = "CANCELED"
743+[DeleteEntry((bf + "_OPEN")), StringEntry(((bf + "_") + cq), ((bg + "_") + toString(br))), IntegerEntry(("current_bidamount_" + P), (ck - 1)), ScriptTransfer(Address(fromBase58String(cp)), parseIntValue(bh[1]), aP)]
738744 }
739745 }
740746 }
741747
742748

github/deemru/w8io/026f985 
268.99 ms