tx · BRLmy5CUMkSRtCQW25pyCnbfpq9QYjqJGCzTabBt9rHn

3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG:  -0.01400000 Waves

2020.10.24 12:06 [1234463] smart account 3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG > SELF 0.00000000 Waves

{ "type": 13, "id": "BRLmy5CUMkSRtCQW25pyCnbfpq9QYjqJGCzTabBt9rHn", "fee": 1400000, "feeAssetId": null, "timestamp": 1603530416077, "version": 2, "chainId": 84, "sender": "3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG", "senderPublicKey": "9SULUbW7L2jV2nv8v48Kdzox4cZ8jEfg778yJHJpgVwM", "proofs": [ "23WNRtzsfVSDPE93Dw2GQjfLbk99wL54ZLU84W22jzUpxbEVeSKNTEzGiTwxqRhBcP1RYB9uvAzukJtgyU7KupMZ" ], "script": "base64:AAIEAAAAAAAAAGEIAhIGCgQICAgIEgMKAQgSBgoECAgICBIECgIICBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIFCgMICAgSBAoCCAgSBgoECAEBCBIECgIICBIDCgEIAAAAOgAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAAB3NpZ25DdXQAAAAAAAAAAAgAAAAAB3VzZG5DdXQAAAAAAAAAAAoAAAAACHdhdmVzQ3V0AAAAAAAAAAAKAAAAAAVhZG1pbgIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABmFkbWluMgIAAAAjM016bTRWTHdzTjl1WndiVE16UGozWHV4VjZrRWZBUjhVRE4AAAAAD1dISVRFTElTVEVET05MWQYAAAAAC2RhcHBSdW5uaW5nBgAAAAAObWFpbnRlbmFuY2VNU0cCAAAAHVNJR04gQXJ0IGlzIHVuZGVyIG1haW50ZW5hbmNlAAAAAAt1c2VyQWxsb3dlZAIAAAAHQUxMT1dFRAAAAAAOdXNlclJlZ2lzdGVyZWQCAAAAClJFR0lTVEVSRUQAAAAADHVzZXJWZXJpZmllZAIAAAAIVkVSSUZJRUQAAAAADXVzZXJTdXNwZW5kZWQCAAAACVNVU1BFTkRFRAAAAAALdXNlclJlbW92ZWQCAAAAB1JFTU9WRUQAAAAAEHVzZXJVbnJlZ2lzdGVyZWQCAAAADFVOUkVHSVNURVJFRAAAAAAJ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TAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlVc2VyVGh1bWIAAAABBQAAAAZjYWxsZXIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAUAAAADbmlsAAAAAWkBAAAAEGNoYW5nZVVzZXJTdGF0dXMAAAACAAAAB2FkZHJlc3MAAAAGc3RhdHVzAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwQAAAAGY2FsbGVyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANY3VycmVudFN0YXR1cwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBAAAAAtzdGF0dXNUb1NldAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAx1c2VyVmVyaWZpZWQFAAAADHVzZXJWZXJpZmllZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA51c2VyUmVnaXN0ZXJlZAUAAAAOdXNlclJlZ2lzdGVyZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAUAAAANdXNlclN1c3BlbmRlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAUAAAALdXNlclJlbW92ZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQFAAAAC3VzZXJBbGxvd2VkAwMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAl1c2VyUmVzZXQJAAAAAAAAAgUAAAANY3VycmVudFN0YXR1cwUAAAALdXNlckFsbG93ZWQHAgAAAAAJAAACAAAAAQIAAAAOVW5rbm93biBzdGF0dXMDAwkAAAAAAAACBQAAAA1jdXJyZW50U3RhdHVzBQAAAAt1c2VyQWxsb3dlZAkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJB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ZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC3NpZ25Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAQAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAlvcmFjbGVGZWUJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABXByaWNlBQAAAAckbWF0Y2gwBQAAAAVwcmljZQkAAAIAAAABAgAAABlQcmljZSB1bmRlZmluZWQgaW4gb3JhY2xlAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgIAAAAZUGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIAkAAaQAAAABBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAAAAAloYXNoRXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gDCQEAAAACIT0AAAACBQAAAAloYXNoRXhpc3QCAAAAAAkAAAIAAAABAgAAABdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQAAAAPaXNTaWduQ2VydGlmaWVkCQEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADBQAAAAZzaWduSUQFAAAABmNhbGxlcgUAAAAK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cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAANc2hhMjU2TGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACmNpZExpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEdGFncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdtYXhtaW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAZzaWduSUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleUFydEFydGlkQnlTaWduaWQAAAACBQAAAAZjYWxsZXIFAAAABnNpZ25JRAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRrZXlBcnRIYXNoQnlUeGlkQWRkcgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACnNoYTI1Nkhhc2gJAARM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ZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0VHlwZQAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydFRhZ3MAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0SXNzdWVkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0RmxhZwAAAAIFAAAABGFkZHIFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJ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bE5GVAkBAAAAD2dldEludGVnZXJCeUtleQAAAAECAAAAEHRvdGFsX25mdF9pc3N1ZWQEAAAABnNpZ25JRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAAC2FydHdvcmtOYW1lBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAAAprZXlBcnROYW1lAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAApkaXNwbGF5Q0lECQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACWV4cG9ydENJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmV4cG9ydEhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKbGljZW5jZUNJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAtsaWNlbmNlSGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALZGVzY3JpcHRpb24JAAEvAAAAAgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAAAAAAAAAAAyBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAABmlzc3Vl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", "height": 1234463, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FwqeuaudiWjppx3uKigojQzRugjMnvgMmU91WW2Rh7yY Next: 8faDfwMMUSR3zyHbJqtZNBJP9HPjF465RmGzMfWc7dhs Diff:
OldNewDifferences
246246
247247
248248 @Callable(A)
249+func deleteEntry (aH) = {
250+ let L = toString(addressFromPublicKey(A.callerPublicKey))
251+ if ((L == j))
252+ then [DeleteEntry(aH)]
253+ else throw("no")
254+ }
255+
256+
257+
258+@Callable(A)
249259 func updateUser (aA,aB,aC,aD) = if (!(m))
250260 then throw(n)
251261 else {
252262 let aF = toBase58String(A.transactionId)
253263 let L = toString(addressFromPublicKey(A.callerPublicKey))
254- let aH = v(Q(L))
255- if (if ((aH == r))
264+ let aI = v(Q(L))
265+ if (if ((aI == r))
256266 then true
257- else (aH == s))
267+ else (aI == s))
258268 then throw("Account suspended/ removed.")
259- else if (if ((aH == ""))
269+ else if (if ((aI == ""))
260270 then true
261- else (aH == o))
271+ else (aI == o))
262272 then throw("Register first")
263273 else if (if ((aA == ""))
264274 then true
272282
273283
274284 @Callable(A)
275-func changeUserStatus (aI,aJ) = if (!(m))
285+func changeUserStatus (aJ,aK) = if (!(m))
276286 then throw(n)
277287 else {
278288 let L = toString(addressFromPublicKey(A.callerPublicKey))
279289 let aF = toBase58String(A.transactionId)
280- let aK = v(Q(aI))
281- let aL = if ((aJ == q))
290+ let aL = v(Q(aJ))
291+ let aM = if ((aK == q))
282292 then q
283- else if ((aJ == p))
293+ else if ((aK == p))
284294 then p
285- else if ((aJ == r))
295+ else if ((aK == r))
286296 then r
287- else if ((aJ == s))
297+ else if ((aK == s))
288298 then s
289- else if ((aJ == o))
299+ else if ((aK == o))
290300 then o
291- else if (if ((aJ == u))
292- then (aK == o)
301+ else if (if ((aK == u))
302+ then (aL == o)
293303 else false)
294304 then ""
295305 else throw("Unknown status")
296- if (if ((aK == o))
297- then (aJ == o)
306+ if (if ((aL == o))
307+ then (aK == o)
298308 else false)
299309 then throw("User already allowed")
300- else if (if ((aK == p))
301- then (aJ == o)
310+ else if (if ((aL == p))
311+ then (aK == o)
302312 else false)
303313 then throw("User already allowed & registered")
304- else if (if ((aK == q))
305- then (aJ == o)
314+ else if (if ((aL == q))
315+ then (aK == o)
306316 else false)
307317 then throw("User already allowed & verified")
308318 else if (if ((L == j))
309319 then true
310320 else (L == k))
311- then [StringEntry(Q(aI), aL), StringEntry("last_invoke_id", aF)]
321+ then [StringEntry(Q(aJ), aM), StringEntry("last_invoke_id", aF)]
312322 else throw(((("Not allowed to change user status " + L) + " / ") + j))
313323 }
314324
315325
316326
317327 @Callable(A)
318-func creditUser (aI) = {
328+func creditUser (aJ) = {
319329 let L = toString(addressFromPublicKey(A.callerPublicKey))
320330 let aF = toBase58String(A.transactionId)
321331 if (if ((L == j))
322332 then true
323333 else (L == k))
324- then [ScriptTransfer(Address(fromBase58String(aI)), 150000000000, d)]
334+ then [ScriptTransfer(Address(fromBase58String(aJ)), 150000000000, d)]
325335 else throw("Not allowed")
326336 }
327337
328338
329339
330-@Callable(aM)
331-func addArtwork (F,D,aA,aB,aN,aO,aP,ar,av,as,aw,at) = if (!(m))
340+@Callable(aN)
341+func addArtwork (F,D,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
332342 then throw(n)
333343 else {
334- let T = toBase58String(aM.transactionId)
335- let L = toBase58String(aM.caller.bytes)
344+ let T = toBase58String(aN.transactionId)
345+ let L = toBase58String(aN.caller.bytes)
336346 if (!(aq(ar, as, at)))
337347 then throw("Problem with CID")
338348 else if (!(I(F)))
339349 then throw("Hash should be 64 characters maximum")
340350 else if (!(au(av, aw)))
341351 then throw("Problem with Hashes")
342- else if ((size(aM.payments) == 0))
352+ else if ((size(aN.payments) == 0))
343353 then throw("No payment attached")
344354 else {
345- let aQ = value(aM.payments[0])
346- let aR = value(aQ.amount)
347- let aS = if (if (isDefined(aQ.assetId))
348- then (aQ.assetId == d)
355+ let aR = value(aN.payments[0])
356+ let aS = value(aR.amount)
357+ let aT = if (if (isDefined(aR.assetId))
358+ then (aR.assetId == d)
349359 else false)
350- then aQ.assetId
360+ then aR.assetId
351361 else throw("Only SIGN token accepted at the moment")
352- let aT = {
362+ let aU = {
353363 let x = getInteger(a, ("certification_fee_" + toBase58String(d)))
354364 if ($isInstanceOf(x, "Int"))
355365 then {
356- let aU = x
357- aU
366+ let aV = x
367+ aV
358368 }
359369 else throw("Price undefined in oracle")
360370 }
361- if ((aR != aT))
362- then throw(("Payment amount should be " + toString(aT)))
371+ if ((aS != aU))
372+ then throw(("Payment amount should be " + toString(aU)))
363373 else {
364- let aV = v(ap(F, L))
365- if ((aV != ""))
374+ let aW = v(ap(F, L))
375+ if ((aW != ""))
366376 then throw("You already added it")
367377 else {
368- let aW = v(am(F))
369- if ((aW != ""))
378+ let aX = v(am(F))
379+ if ((aX != ""))
370380 then throw("Hash already registered")
371381 else {
372- let aX = C(D, L, F)
373- if (!(aX))
382+ let aY = C(D, L, F)
383+ if (!(aY))
374384 then throw("Sign Certificate not found for this address.")
375385 else if ((size(ar) == 0))
376386 then throw("Display CID cannot be empty")
378388 then throw("100 Char. max name")
379389 else if (!(ax(aB, 1000)))
380390 then throw("1000 Char. max description")
381- else if ((size(split(aN, ",")) > 5))
391+ else if ((size(split(aO, ",")) > 5))
382392 then throw("5 tags max.")
383393 else {
384- let aY = {
394+ let aZ = {
385395 let x = getString(this, ("user_status_" + L))
386396 if ($isInstanceOf(x, "String"))
387397 then {
388- let aZ = x
389- aZ
398+ let ba = x
399+ ba
390400 }
391401 else t
392402 }
393403 let aG = lastBlock.timestamp
394- if (if (isDefined(aY))
395- then (aY == t)
404+ if (if (isDefined(aZ))
405+ then (aZ == t)
396406 else false)
397407 then throw("Register this account first with \"User infos\" tab")
398- else if ((aY == r))
408+ else if ((aZ == r))
399409 then throw("Account suspended")
400- else if ((aY == s))
410+ else if ((aZ == s))
401411 then throw("Account removed")
402- else if ((aP > 10))
412+ else if ((aQ > 10))
403413 then throw("10 editions max")
404414 else if ((size(F) != 64))
405415 then throw("Hash 64 char. max")
406- else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aO), StringEntry(af(L, T), aN), IntegerEntry(Z(L, T), aP), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aR, aS)]
416+ else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aP), StringEntry(af(L, T), aO), IntegerEntry(Z(L, T), aQ), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
407417 }
408418 }
409419 }
413423
414424
415425
416-@Callable(aM)
417-func updateArtwork (al,aA,aB,aN,aO,aP,ar,av,as,aw,at) = if (!(m))
426+@Callable(aN)
427+func updateArtwork (al,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
418428 then throw(n)
419429 else {
420- let ba = toBase58String(aM.transactionId)
421- let L = toBase58String(aM.caller.bytes)
430+ let bb = toBase58String(aN.transactionId)
431+ let L = toBase58String(aN.caller.bytes)
422432 if (!(aq(ar, as, at)))
423433 then throw("Problem with CID")
424434 else if (!(au(av, aw)))
425435 then throw("Problem with Hashes")
426436 else {
427- let aV = v(U(L, al))
428- if ((aV == ""))
437+ let aW = v(U(L, al))
438+ if ((aW == ""))
429439 then throw("Entry not found")
430440 else if (!(ax(aA, 100)))
431441 then throw("100 Char. max name")
432442 else if (!(ax(aB, 1000)))
433443 then throw("1000 Char. max description")
434444 else {
435- let bb = {
445+ let bc = {
436446 let x = getInteger(this, ab(L, al))
437447 if ($isInstanceOf(x, "Int"))
438448 then {
439- let bc = x
440- if ((bc == 0))
449+ let bd = x
450+ if ((bd == 0))
441451 then false
442452 else true
443453 }
444454 else false
445455 }
446- if ((size(split(aN, ",")) > 5))
456+ if ((size(split(aO, ",")) > 5))
447457 then throw("5 tags max.")
448458 else {
449- let aY = {
459+ let aZ = {
450460 let x = getString(this, ("user_status_" + L))
451461 if ($isInstanceOf(x, "String"))
452462 then {
453- let aZ = x
454- aZ
463+ let ba = x
464+ ba
455465 }
456466 else t
457467 }
458- if (if (isDefined(aY))
459- then (aY == t)
468+ if (if (isDefined(aZ))
469+ then (aZ == t)
460470 else false)
461471 then throw("Register first with \"User infos\"")
462- else if ((aY == r))
472+ else if ((aZ == r))
463473 then throw("Account suspended")
464- else if ((aY == s))
474+ else if ((aZ == s))
465475 then throw("Account removed")
466- else if ((aP > 10))
476+ else if ((aQ > 10))
467477 then throw("10 editions max per artwork")
468- else if (!(bb))
469- then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aP), StringEntry(af(L, al), aN), StringEntry(ag(L, al), aO), StringEntry("last_invoke_id", ba)]
478+ else if (!(bc))
479+ then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aQ), StringEntry(af(L, al), aO), StringEntry(ag(L, al), aP), StringEntry("last_invoke_id", bb)]
470480 else throw("Already minted")
471481 }
472482 }
476486
477487
478488 @Callable(A)
479-func flagArtwork (T,bd,be) = {
489+func flagArtwork (T,be,bf) = {
480490 let L = toString(addressFromPublicKey(A.callerPublicKey))
481491 let aF = toBase58String(A.transactionId)
482492 if (if ((L == j))
483493 then true
484494 else (L == k))
485- then if ((be == "CONSENT"))
486- then [StringEntry(aj(bd, T), be), StringEntry("last_invoke_id", aF)]
487- else if ((be == ""))
488- then [StringEntry(aj(bd, T), be), StringEntry("last_invoke_id", aF)]
489- else if ((be == "ILLEGAL"))
490- then [StringEntry(aj(bd, T), be), StringEntry(U(bd, T), "ILLEGAL CONTENT"), StringEntry(V(bd, T), "ILLEGAL CONTENT"), StringEntry(W(bd, T), ""), StringEntry(Y(bd, T), ""), StringEntry(ae(bd, T), ""), StringEntry("last_invoke_id", aF)]
491- else throw(("Unknow status" + be))
495+ then if ((bf == "CONSENT"))
496+ then [StringEntry(aj(be, T), bf), StringEntry("last_invoke_id", aF)]
497+ else if ((bf == ""))
498+ then [StringEntry(aj(be, T), bf), StringEntry("last_invoke_id", aF)]
499+ else if ((bf == "ILLEGAL"))
500+ then [StringEntry(aj(be, T), bf), StringEntry(U(be, T), "ILLEGAL CONTENT"), StringEntry(V(be, T), "ILLEGAL CONTENT"), StringEntry(W(be, T), ""), StringEntry(Y(be, T), ""), StringEntry(ae(be, T), ""), StringEntry("last_invoke_id", aF)]
501+ else throw(("Unknow status" + bf))
492502 else throw("no")
493503 }
494504
495505
496506
497507 @Callable(A)
498-func deleteArtwork (T,bd) = {
508+func deleteArtwork (T,be) = {
499509 let L = toString(addressFromPublicKey(A.callerPublicKey))
500510 let aF = toBase58String(A.transactionId)
501- let bf = if (if ((L == j))
511+ let bg = if (if ((L == j))
502512 then true
503513 else (L == k))
504- then bd
514+ then be
505515 else L
506- let aV = {
507- let x = getString(this, U(bf, T))
516+ let aW = {
517+ let x = getString(this, U(bg, T))
508518 if ($isInstanceOf(x, "String"))
509519 then {
510- let aZ = x
511- aZ
520+ let ba = x
521+ ba
512522 }
513523 else throw("No art matching")
514524 }
515- let bb = {
516- let x = getInteger(this, ab(bf, T))
525+ let bc = {
526+ let x = getInteger(this, ab(bg, T))
517527 if ($isInstanceOf(x, "Int"))
518528 then {
519- let bc = x
520- if ((bc != 0))
529+ let bd = x
530+ if ((bd != 0))
521531 then true
522532 else false
523533 }
524534 else false
525535 }
526- let bg = z(Z(bf, T))
536+ let bh = z(Z(bg, T))
527537 let F = {
528- let x = getString(this, ak(bf, T))
538+ let x = getString(this, ak(bg, T))
529539 if ($isInstanceOf(x, "String"))
530540 then {
531- let aZ = x
532- aZ
541+ let ba = x
542+ ba
533543 }
534544 else throw("No art hash matching")
535545 }
536546 let D = {
537- let x = getString(this, aa(bf, T))
547+ let x = getString(this, aa(bg, T))
538548 if ($isInstanceOf(x, "String"))
539549 then {
540- let aZ = x
541- aZ
550+ let ba = x
551+ ba
542552 }
543553 else throw("No SIGN ID matching")
544554 }
545- let bh = [DeleteEntry(S(bf, T)), DeleteEntry(U(bf, T)), DeleteEntry(V(bf, T)), DeleteEntry(W(bf, T)), DeleteEntry(Y(bf, T)), DeleteEntry(X(bf, T)), DeleteEntry(ad(bf, T)), DeleteEntry(ae(bf, T)), DeleteEntry(ag(bf, T)), DeleteEntry(af(bf, T)), DeleteEntry(Z(bf, T)), DeleteEntry(aa(bf, T)), DeleteEntry(ab(bf, T)), DeleteEntry(ac(bf, T)), DeleteEntry(aj(bd, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bf, D)), DeleteEntry(ap(F, bf))]
546- if (!(bb))
555+ let bi = [DeleteEntry(S(bg, T)), DeleteEntry(U(bg, T)), DeleteEntry(V(bg, T)), DeleteEntry(W(bg, T)), DeleteEntry(Y(bg, T)), DeleteEntry(X(bg, T)), DeleteEntry(ad(bg, T)), DeleteEntry(ae(bg, T)), DeleteEntry(ag(bg, T)), DeleteEntry(af(bg, T)), DeleteEntry(Z(bg, T)), DeleteEntry(aa(bg, T)), DeleteEntry(ab(bg, T)), DeleteEntry(ac(bg, T)), DeleteEntry(aj(be, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bg, D)), DeleteEntry(ap(F, bg))]
556+ if (!(bc))
547557 then if (!(m))
548558 then throw(n)
549- else bh
559+ else bi
550560 else throw("Art already minted, cannot delete")
551561 }
552562
553563
554564
555565 @Callable(A)
556-func sellArtwork (T,aU,bg,aS) = if (!(m))
566+func sellArtwork (T,aV,bh,aT) = if (!(m))
557567 then throw(n)
558568 else {
559569 let aF = toBase58String(A.transactionId)
560570 let L = toBase58String(A.caller.bytes)
561- let bi = lastBlock.timestamp
562- let bj = v(Y(L, T))
563- if ((size(split(bj, "/")[0]) != 59))
571+ let bj = lastBlock.timestamp
572+ let bk = v(Y(L, T))
573+ if ((size(split(bk, "/")[0]) != 59))
564574 then throw("You cannot sell art with no export file")
565575 else {
566- let bk = v(X(L, T))
567- if ((size(bk) != 64))
576+ let bl = v(X(L, T))
577+ if ((size(bl) != 64))
568578 then throw("You cannot sell art with no export hash")
569- else if (if (if ((aS != toBase58String(d)))
570- then (aS != toBase58String(f))
579+ else if (if (if ((aT != toBase58String(d)))
580+ then (aT != toBase58String(f))
571581 else false)
572- then (aS != toBase58String(e))
582+ then (aT != toBase58String(e))
573583 else false)
574584 then throw("Only SIGN, USDN or WAVES accepted")
575585 else {
576- let bl = {
586+ let bm = {
577587 let x = getString(this, U(L, T))
578588 if ($isInstanceOf(x, "String"))
579589 then {
580- let aZ = x
581- aZ
590+ let ba = x
591+ ba
582592 }
583593 else throw("This art doesn't match")
584594 }
585- let aY = {
595+ let aZ = {
586596 let x = getString(this, Q(L))
587597 if ($isInstanceOf(x, "String"))
588598 then {
589- let aZ = x
590- aZ
599+ let ba = x
600+ ba
591601 }
592602 else throw("Register this account first")
593603 }
594- let bm = z(ab(L, T))
595- let bn = z(Z(L, T))
596- if (if ((bm != 0))
597- then (bm == bn)
604+ let bn = z(ab(L, T))
605+ let bo = z(Z(L, T))
606+ if (if ((bn != 0))
607+ then (bn == bo)
598608 else false)
599609 then throw("Max edition reached.")
600- else if (if ((bm > 0))
601- then (bn != bg)
610+ else if (if ((bn > 0))
611+ then (bo != bh)
602612 else false)
603613 then throw("Cannot change maximum issuable anymore")
604- else if ((aY == r))
614+ else if ((aZ == r))
605615 then throw("Account suspended")
606- else if ((aY == s))
616+ else if ((aZ == s))
607617 then throw("Account deleted")
608618 else {
609- let bo = if ((aU > 0))
619+ let bp = if ((aV > 0))
610620 then true
611621 else false
612-[BooleanEntry(ac(L, T), bo), IntegerEntry(ah(L, T), aU), IntegerEntry(Z(L, T), bg), StringEntry(ai(L, T), aS), StringEntry("last_invoke_id", aF)]
622+[BooleanEntry(ac(L, T), bp), IntegerEntry(ah(L, T), aV), IntegerEntry(Z(L, T), bh), StringEntry(ai(L, T), aT), StringEntry("last_invoke_id", aF)]
613623 }
614624 }
615625 }
618628
619629
620630 @Callable(A)
621-func buyArtwork (T,bp) = if (!(m))
631+func buyArtwork (T,bq) = if (!(m))
622632 then throw(n)
623633 else {
624634 let aF = toBase58String(A.transactionId)
625635 let L = toBase58String(A.caller.bytes)
626- let bq = z("total_nft_issued")
627- let D = v(aa(bp, T))
628- let bl = {
629- let x = getString(this, U(bp, T))
636+ let br = z("total_nft_issued")
637+ let D = v(aa(bq, T))
638+ let bm = {
639+ let x = getString(this, U(bq, T))
630640 if ($isInstanceOf(x, "String"))
631641 then {
632- let aZ = x
633- aZ
642+ let ba = x
643+ ba
634644 }
635645 else throw("Art doesn't exist")
636646 }
637- let br = v(W(bp, T))
638- let bj = v(Y(bp, T))
639- let bk = v(X(bp, T))
640- let bs = v(ae(bp, T))
641- let bt = v(ad(bp, T))
642- let aB = take(v(V(bp, T)), 50)
643- let bm = z(ab(bp, T))
644- let bu = z(ah(bp, T))
645- let bv = B(ac(bp, T))
646- let bw = v(ai(bp, T))
647- let bx = v(ak(bp, T))
648- if ((bu == 0))
647+ let bs = v(W(bq, T))
648+ let bk = v(Y(bq, T))
649+ let bl = v(X(bq, T))
650+ let bt = v(ae(bq, T))
651+ let bu = v(ad(bq, T))
652+ let aB = take(v(V(bq, T)), 50)
653+ let bn = z(ab(bq, T))
654+ let bv = z(ah(bq, T))
655+ let bw = B(ac(bq, T))
656+ let bx = v(ai(bq, T))
657+ let by = v(ak(bq, T))
658+ if ((bv == 0))
649659 then throw("Art not for sell")
650- else if (!(bv))
660+ else if (!(bw))
651661 then throw("Art not for sale")
652662 else {
653- let bn = z(Z(bp, T))
654- let aQ = value(A.payments[0])
655- let aR = value(aQ.amount)
656- let aS = if (if (if (isDefined(aQ.assetId))
657- then (size(fromBase58String(bw)) > 0)
663+ let bo = z(Z(bq, T))
664+ let aR = value(A.payments[0])
665+ let aS = value(aR.amount)
666+ let aT = if (if (if (isDefined(aR.assetId))
667+ then (size(fromBase58String(bx)) > 0)
658668 else false)
659- then (aQ.assetId == fromBase58String(bw))
669+ then (aR.assetId == fromBase58String(bx))
660670 else false)
661- then aQ.assetId
671+ then aR.assetId
662672 else unit
663- let by = if ((bw == toBase58String(d)))
673+ let bz = if ((bx == toBase58String(d)))
664674 then 8
665675 else 10
666- let bz = ((aR / 100) * by)
667- let bA = (aR - bz)
668- if ((bm == bn))
676+ let bA = ((aS / 100) * bz)
677+ let bB = (aS - bA)
678+ if ((bn == bo))
669679 then throw("Art sold out")
670- else if ((bu != aR))
680+ else if ((bv != aS))
671681 then throw("Payment don't match")
672682 else {
673- let bB = (bm + 1)
674- let bC = lastBlock.timestamp
675- let bD = (((((((((((((((((((((((((((("{\"version\": 1,
676- \"creator\": \"" + bp) + "\",
683+ let bC = (bn + 1)
684+ let bD = lastBlock.timestamp
685+ let bE = (((((((((((((((((((((((((((("{\"version\": 1,
686+ \"creator\": \"" + bq) + "\",
677687 \"artID\": \"") + T) + "\",
678688 \"signID\": \"") + D) + "\",
679- \"artwork_name\": \"") + bl) + "\",
689+ \"artwork_name\": \"") + bm) + "\",
680690 \"artwork_desc\": \"") + aB) + "\",
681- \"issue\": \"") + toString(bB)) + "/") + toString(bn)) + "\",
682- \"maxIssuable\": \"") + toString(bn)) + "\",
683- \"source_hash\": \"") + bx) + "\",
684- \"display_cid\": \"") + br) + "\",
685- \"export_cid\": \"") + bj) + "\",
686- \"export_hash\": \"") + bk) + "\",
687- \"licence_cid\": \"") + bs) + "\",
688- \"licence_hash\": \"") + bt) + "\"}")
689- let bE = Issue(("SA_" + toString((bq + 1))), bD, 1, 0, false)
690- let bF = calculateAssetId(bE)
691- let bo = if ((bB == bn))
691+ \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
692+ \"maxIssuable\": \"") + toString(bo)) + "\",
693+ \"source_hash\": \"") + by) + "\",
694+ \"display_cid\": \"") + bs) + "\",
695+ \"export_cid\": \"") + bk) + "\",
696+ \"export_hash\": \"") + bl) + "\",
697+ \"licence_cid\": \"") + bt) + "\",
698+ \"licence_hash\": \"") + bu) + "\"}")
699+ let bF = Issue(("SA_" + toString((br + 1))), bE, 1, 0, false)
700+ let bG = calculateAssetId(bF)
701+ let bp = if ((bC == bo))
692702 then false
693703 else true
694-[IntegerEntry(ab(bp, T), bB), StringEntry(((((((("art_sold_" + toString(bB)) + "_of_") + toString(bn)) + "_") + T) + "_") + bp), ((((((((L + "_") + toString(bC)) + "_") + aF) + "_") + toString(bu)) + "_") + bw)), IntegerEntry("total_nft_issued", (bq + 1)), BooleanEntry(ac(bp, T), bo), StringEntry("last_invoke_id", aF), bE, ScriptTransfer(Address(fromBase58String(bp)), bA, aS), ScriptTransfer(Address(fromBase58String(c)), bz, aS), ScriptTransfer(A.caller, 1, bF)]
704+[IntegerEntry(ab(bq, T), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + T) + "_") + bq), ((((((((L + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ac(bq, T), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(A.caller, 1, bG)]
695705 }
696706 }
697707 }
699709
700710
701711 @Callable(A)
702-func deleteUser (aI) = {
712+func deleteUser (aJ) = {
703713 let L = toString(addressFromPublicKey(A.callerPublicKey))
704714 let aF = toBase58String(A.transactionId)
705715 if (if ((L == j))
706716 then true
707717 else (L == k))
708- then [DeleteEntry(R(aI)), DeleteEntry(K(aI)), DeleteEntry(M(aI)), DeleteEntry(N(aI)), DeleteEntry(O(aI)), DeleteEntry(P(aI)), StringEntry(Q(aI), s), StringEntry("last_invoke_id", aF)]
718+ then [DeleteEntry(R(aJ)), DeleteEntry(K(aJ)), DeleteEntry(M(aJ)), DeleteEntry(N(aJ)), DeleteEntry(O(aJ)), DeleteEntry(P(aJ)), StringEntry(Q(aJ), s), StringEntry("last_invoke_id", aF)]
709719 else throw("Not allowed")
710720 }
711721
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
77
88 let c = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
99
1010 let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1111
1212 let e = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
1313
1414 let f = base58''
1515
1616 let g = 8
1717
1818 let h = 10
1919
2020 let i = 10
2121
2222 let j = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2323
2424 let k = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2525
2626 let l = true
2727
2828 let m = true
2929
3030 let n = "SIGN Art is under maintenance"
3131
3232 let o = "ALLOWED"
3333
3434 let p = "REGISTERED"
3535
3636 let q = "VERIFIED"
3737
3838 let r = "SUSPENDED"
3939
4040 let s = "REMOVED"
4141
4242 let t = "UNREGISTERED"
4343
4444 let u = "RESET"
4545
4646 func v (w) = {
4747 let x = getString(this, w)
4848 if ($isInstanceOf(x, "String"))
4949 then {
5050 let y = x
5151 y
5252 }
5353 else ""
5454 }
5555
5656
5757 func z (w) = {
5858 let x = getInteger(this, w)
5959 if ($isInstanceOf(x, "Int"))
6060 then {
6161 let A = x
6262 A
6363 }
6464 else 0
6565 }
6666
6767
6868 func B (w) = {
6969 let x = getBoolean(this, w)
7070 if ($isInstanceOf(x, "Boolean"))
7171 then {
7272 let A = x
7373 A
7474 }
7575 else false
7676 }
7777
7878
7979 func C (D,E,F) = {
8080 let x = getString(b, ((("data_fc_" + D) + "_") + E))
8181 if ($isInstanceOf(x, "String"))
8282 then {
8383 let y = x
8484 if (contains(y, F))
8585 then true
8686 else false
8787 }
8888 else false
8989 }
9090
9191
9292 func G (H) = if (if ((75 > size(H)))
9393 then (60 > size(split(H, "/")[0]))
9494 else false)
9595 then (16 > size(split(H, "/")[1]))
9696 else false
9797
9898
9999 func I (J) = (65 > size(J))
100100
101101
102102 func K (L) = ("user_" + L)
103103
104104
105105 func M (L) = ("user_name_" + L)
106106
107107
108108 func N (L) = ("user_desc_" + L)
109109
110110
111111 func O (L) = ("user_social_" + L)
112112
113113
114114 func P (L) = ("user_thumb_" + L)
115115
116116
117117 func Q (L) = ("user_status_" + L)
118118
119119
120120 func R (L) = ("user_date_" + L)
121121
122122
123123 func S (L,T) = ((("art_date_" + T) + "_") + L)
124124
125125
126126 func U (L,T) = ((("art_name_" + T) + "_") + L)
127127
128128
129129 func V (L,T) = ((("art_desc_" + T) + "_") + L)
130130
131131
132132 func W (L,T) = ((("art_display_cid_" + T) + "_") + L)
133133
134134
135135 func X (L,T) = ((("art_export_hash_" + T) + "_") + L)
136136
137137
138138 func Y (L,T) = ((("art_export_cid_" + T) + "_") + L)
139139
140140
141141 func Z (L,T) = ((("art_maxmint_" + T) + "_") + L)
142142
143143
144144 func aa (L,T) = ((("art_signid_" + T) + "_") + L)
145145
146146
147147 func ab (L,T) = ((("art_issued_" + T) + "_") + L)
148148
149149
150150 func ac (L,T) = ((("art_onsale_" + T) + "_") + L)
151151
152152
153153 func ad (L,T) = ((("art_licence_hash_" + T) + "_") + L)
154154
155155
156156 func ae (L,T) = ((("art_licence_cid_" + T) + "_") + L)
157157
158158
159159 func af (L,T) = ((("art_tags_" + T) + "_") + L)
160160
161161
162162 func ag (L,T) = ((("art_type_" + T) + "_") + L)
163163
164164
165165 func ah (L,T) = ((("art_price_" + T) + "_") + L)
166166
167167
168168 func ai (L,T) = ((("art_assetAccepted_" + T) + "_") + L)
169169
170170
171171 func aj (L,T) = ((("art_flag_" + T) + "_") + L)
172172
173173
174174 func ak (L,al) = ((("get_hashbytxidaddr_" + al) + "_") + L)
175175
176176
177177 func am (F) = ("get_owner_by_hash_" + F)
178178
179179
180180 func an (L,ao) = ((("get_artidbysignid_" + ao) + "_") + L)
181181
182182
183183 func ap (F,L) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + L)))))
184184
185185
186186 func aq (ar,as,at) = if (if ((ar != ""))
187187 then !(G(ar))
188188 else false)
189189 then throw("Wrong Display CID")
190190 else if (if ((as != ""))
191191 then !(G(as))
192192 else false)
193193 then throw("Wrong Export CID")
194194 else if (if ((at != ""))
195195 then !(G(at))
196196 else false)
197197 then throw("Wrong Licence CID")
198198 else true
199199
200200
201201 func au (av,aw) = if (if ((av != ""))
202202 then !(I(av))
203203 else false)
204204 then throw("Export Hash 64 char. max")
205205 else if (if ((aw != ""))
206206 then !(I(aw))
207207 else false)
208208 then throw("Licence Hash 64 char. max")
209209 else true
210210
211211
212212 func ax (ay,az) = if ((size(ay) == 0))
213213 then throw("Field cannot be is empty")
214214 else if ((size(ay) > az))
215215 then throw((ay + " is too long"))
216216 else true
217217
218218
219219 @Callable(A)
220220 func registerUser (aA,aB,aC,aD) = if (!(m))
221221 then throw(n)
222222 else {
223223 let L = toString(addressFromPublicKey(A.callerPublicKey))
224224 let aE = v(Q(L))
225225 let aF = toBase58String(A.transactionId)
226226 let aG = lastBlock.timestamp
227227 if (if ((aE == r))
228228 then true
229229 else (aE == s))
230230 then throw("Account suspended/ removed.")
231231 else if ((aE == p))
232232 then throw("Already registered")
233233 else if (if ((aE == ""))
234234 then l
235235 else false)
236236 then throw("Can't register, get approved first.")
237237 else if (if ((aA == ""))
238238 then true
239239 else (aB == ""))
240240 then throw("Name and description cannot be empty")
241241 else if ((size(aB) > 600))
242242 then throw("600 Char. max description")
243243 else [IntegerEntry(R(L), aG), StringEntry(K(L), ((aF + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry(Q(L), p), StringEntry("last_invoke_id", aF)]
244244 }
245245
246246
247247
248248 @Callable(A)
249+func deleteEntry (aH) = {
250+ let L = toString(addressFromPublicKey(A.callerPublicKey))
251+ if ((L == j))
252+ then [DeleteEntry(aH)]
253+ else throw("no")
254+ }
255+
256+
257+
258+@Callable(A)
249259 func updateUser (aA,aB,aC,aD) = if (!(m))
250260 then throw(n)
251261 else {
252262 let aF = toBase58String(A.transactionId)
253263 let L = toString(addressFromPublicKey(A.callerPublicKey))
254- let aH = v(Q(L))
255- if (if ((aH == r))
264+ let aI = v(Q(L))
265+ if (if ((aI == r))
256266 then true
257- else (aH == s))
267+ else (aI == s))
258268 then throw("Account suspended/ removed.")
259- else if (if ((aH == ""))
269+ else if (if ((aI == ""))
260270 then true
261- else (aH == o))
271+ else (aI == o))
262272 then throw("Register first")
263273 else if (if ((aA == ""))
264274 then true
265275 else (aB == ""))
266276 then throw("Name & description cannot be empty")
267277 else if ((size(aB) > 600))
268278 then throw("600 Char. max for description")
269279 else [StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry("last_invoke_id", aF)]
270280 }
271281
272282
273283
274284 @Callable(A)
275-func changeUserStatus (aI,aJ) = if (!(m))
285+func changeUserStatus (aJ,aK) = if (!(m))
276286 then throw(n)
277287 else {
278288 let L = toString(addressFromPublicKey(A.callerPublicKey))
279289 let aF = toBase58String(A.transactionId)
280- let aK = v(Q(aI))
281- let aL = if ((aJ == q))
290+ let aL = v(Q(aJ))
291+ let aM = if ((aK == q))
282292 then q
283- else if ((aJ == p))
293+ else if ((aK == p))
284294 then p
285- else if ((aJ == r))
295+ else if ((aK == r))
286296 then r
287- else if ((aJ == s))
297+ else if ((aK == s))
288298 then s
289- else if ((aJ == o))
299+ else if ((aK == o))
290300 then o
291- else if (if ((aJ == u))
292- then (aK == o)
301+ else if (if ((aK == u))
302+ then (aL == o)
293303 else false)
294304 then ""
295305 else throw("Unknown status")
296- if (if ((aK == o))
297- then (aJ == o)
306+ if (if ((aL == o))
307+ then (aK == o)
298308 else false)
299309 then throw("User already allowed")
300- else if (if ((aK == p))
301- then (aJ == o)
310+ else if (if ((aL == p))
311+ then (aK == o)
302312 else false)
303313 then throw("User already allowed & registered")
304- else if (if ((aK == q))
305- then (aJ == o)
314+ else if (if ((aL == q))
315+ then (aK == o)
306316 else false)
307317 then throw("User already allowed & verified")
308318 else if (if ((L == j))
309319 then true
310320 else (L == k))
311- then [StringEntry(Q(aI), aL), StringEntry("last_invoke_id", aF)]
321+ then [StringEntry(Q(aJ), aM), StringEntry("last_invoke_id", aF)]
312322 else throw(((("Not allowed to change user status " + L) + " / ") + j))
313323 }
314324
315325
316326
317327 @Callable(A)
318-func creditUser (aI) = {
328+func creditUser (aJ) = {
319329 let L = toString(addressFromPublicKey(A.callerPublicKey))
320330 let aF = toBase58String(A.transactionId)
321331 if (if ((L == j))
322332 then true
323333 else (L == k))
324- then [ScriptTransfer(Address(fromBase58String(aI)), 150000000000, d)]
334+ then [ScriptTransfer(Address(fromBase58String(aJ)), 150000000000, d)]
325335 else throw("Not allowed")
326336 }
327337
328338
329339
330-@Callable(aM)
331-func addArtwork (F,D,aA,aB,aN,aO,aP,ar,av,as,aw,at) = if (!(m))
340+@Callable(aN)
341+func addArtwork (F,D,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
332342 then throw(n)
333343 else {
334- let T = toBase58String(aM.transactionId)
335- let L = toBase58String(aM.caller.bytes)
344+ let T = toBase58String(aN.transactionId)
345+ let L = toBase58String(aN.caller.bytes)
336346 if (!(aq(ar, as, at)))
337347 then throw("Problem with CID")
338348 else if (!(I(F)))
339349 then throw("Hash should be 64 characters maximum")
340350 else if (!(au(av, aw)))
341351 then throw("Problem with Hashes")
342- else if ((size(aM.payments) == 0))
352+ else if ((size(aN.payments) == 0))
343353 then throw("No payment attached")
344354 else {
345- let aQ = value(aM.payments[0])
346- let aR = value(aQ.amount)
347- let aS = if (if (isDefined(aQ.assetId))
348- then (aQ.assetId == d)
355+ let aR = value(aN.payments[0])
356+ let aS = value(aR.amount)
357+ let aT = if (if (isDefined(aR.assetId))
358+ then (aR.assetId == d)
349359 else false)
350- then aQ.assetId
360+ then aR.assetId
351361 else throw("Only SIGN token accepted at the moment")
352- let aT = {
362+ let aU = {
353363 let x = getInteger(a, ("certification_fee_" + toBase58String(d)))
354364 if ($isInstanceOf(x, "Int"))
355365 then {
356- let aU = x
357- aU
366+ let aV = x
367+ aV
358368 }
359369 else throw("Price undefined in oracle")
360370 }
361- if ((aR != aT))
362- then throw(("Payment amount should be " + toString(aT)))
371+ if ((aS != aU))
372+ then throw(("Payment amount should be " + toString(aU)))
363373 else {
364- let aV = v(ap(F, L))
365- if ((aV != ""))
374+ let aW = v(ap(F, L))
375+ if ((aW != ""))
366376 then throw("You already added it")
367377 else {
368- let aW = v(am(F))
369- if ((aW != ""))
378+ let aX = v(am(F))
379+ if ((aX != ""))
370380 then throw("Hash already registered")
371381 else {
372- let aX = C(D, L, F)
373- if (!(aX))
382+ let aY = C(D, L, F)
383+ if (!(aY))
374384 then throw("Sign Certificate not found for this address.")
375385 else if ((size(ar) == 0))
376386 then throw("Display CID cannot be empty")
377387 else if (!(ax(aA, 100)))
378388 then throw("100 Char. max name")
379389 else if (!(ax(aB, 1000)))
380390 then throw("1000 Char. max description")
381- else if ((size(split(aN, ",")) > 5))
391+ else if ((size(split(aO, ",")) > 5))
382392 then throw("5 tags max.")
383393 else {
384- let aY = {
394+ let aZ = {
385395 let x = getString(this, ("user_status_" + L))
386396 if ($isInstanceOf(x, "String"))
387397 then {
388- let aZ = x
389- aZ
398+ let ba = x
399+ ba
390400 }
391401 else t
392402 }
393403 let aG = lastBlock.timestamp
394- if (if (isDefined(aY))
395- then (aY == t)
404+ if (if (isDefined(aZ))
405+ then (aZ == t)
396406 else false)
397407 then throw("Register this account first with \"User infos\" tab")
398- else if ((aY == r))
408+ else if ((aZ == r))
399409 then throw("Account suspended")
400- else if ((aY == s))
410+ else if ((aZ == s))
401411 then throw("Account removed")
402- else if ((aP > 10))
412+ else if ((aQ > 10))
403413 then throw("10 editions max")
404414 else if ((size(F) != 64))
405415 then throw("Hash 64 char. max")
406- else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aO), StringEntry(af(L, T), aN), IntegerEntry(Z(L, T), aP), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aR, aS)]
416+ else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aP), StringEntry(af(L, T), aO), IntegerEntry(Z(L, T), aQ), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
407417 }
408418 }
409419 }
410420 }
411421 }
412422 }
413423
414424
415425
416-@Callable(aM)
417-func updateArtwork (al,aA,aB,aN,aO,aP,ar,av,as,aw,at) = if (!(m))
426+@Callable(aN)
427+func updateArtwork (al,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
418428 then throw(n)
419429 else {
420- let ba = toBase58String(aM.transactionId)
421- let L = toBase58String(aM.caller.bytes)
430+ let bb = toBase58String(aN.transactionId)
431+ let L = toBase58String(aN.caller.bytes)
422432 if (!(aq(ar, as, at)))
423433 then throw("Problem with CID")
424434 else if (!(au(av, aw)))
425435 then throw("Problem with Hashes")
426436 else {
427- let aV = v(U(L, al))
428- if ((aV == ""))
437+ let aW = v(U(L, al))
438+ if ((aW == ""))
429439 then throw("Entry not found")
430440 else if (!(ax(aA, 100)))
431441 then throw("100 Char. max name")
432442 else if (!(ax(aB, 1000)))
433443 then throw("1000 Char. max description")
434444 else {
435- let bb = {
445+ let bc = {
436446 let x = getInteger(this, ab(L, al))
437447 if ($isInstanceOf(x, "Int"))
438448 then {
439- let bc = x
440- if ((bc == 0))
449+ let bd = x
450+ if ((bd == 0))
441451 then false
442452 else true
443453 }
444454 else false
445455 }
446- if ((size(split(aN, ",")) > 5))
456+ if ((size(split(aO, ",")) > 5))
447457 then throw("5 tags max.")
448458 else {
449- let aY = {
459+ let aZ = {
450460 let x = getString(this, ("user_status_" + L))
451461 if ($isInstanceOf(x, "String"))
452462 then {
453- let aZ = x
454- aZ
463+ let ba = x
464+ ba
455465 }
456466 else t
457467 }
458- if (if (isDefined(aY))
459- then (aY == t)
468+ if (if (isDefined(aZ))
469+ then (aZ == t)
460470 else false)
461471 then throw("Register first with \"User infos\"")
462- else if ((aY == r))
472+ else if ((aZ == r))
463473 then throw("Account suspended")
464- else if ((aY == s))
474+ else if ((aZ == s))
465475 then throw("Account removed")
466- else if ((aP > 10))
476+ else if ((aQ > 10))
467477 then throw("10 editions max per artwork")
468- else if (!(bb))
469- then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aP), StringEntry(af(L, al), aN), StringEntry(ag(L, al), aO), StringEntry("last_invoke_id", ba)]
478+ else if (!(bc))
479+ then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aQ), StringEntry(af(L, al), aO), StringEntry(ag(L, al), aP), StringEntry("last_invoke_id", bb)]
470480 else throw("Already minted")
471481 }
472482 }
473483 }
474484 }
475485
476486
477487
478488 @Callable(A)
479-func flagArtwork (T,bd,be) = {
489+func flagArtwork (T,be,bf) = {
480490 let L = toString(addressFromPublicKey(A.callerPublicKey))
481491 let aF = toBase58String(A.transactionId)
482492 if (if ((L == j))
483493 then true
484494 else (L == k))
485- then if ((be == "CONSENT"))
486- then [StringEntry(aj(bd, T), be), StringEntry("last_invoke_id", aF)]
487- else if ((be == ""))
488- then [StringEntry(aj(bd, T), be), StringEntry("last_invoke_id", aF)]
489- else if ((be == "ILLEGAL"))
490- then [StringEntry(aj(bd, T), be), StringEntry(U(bd, T), "ILLEGAL CONTENT"), StringEntry(V(bd, T), "ILLEGAL CONTENT"), StringEntry(W(bd, T), ""), StringEntry(Y(bd, T), ""), StringEntry(ae(bd, T), ""), StringEntry("last_invoke_id", aF)]
491- else throw(("Unknow status" + be))
495+ then if ((bf == "CONSENT"))
496+ then [StringEntry(aj(be, T), bf), StringEntry("last_invoke_id", aF)]
497+ else if ((bf == ""))
498+ then [StringEntry(aj(be, T), bf), StringEntry("last_invoke_id", aF)]
499+ else if ((bf == "ILLEGAL"))
500+ then [StringEntry(aj(be, T), bf), StringEntry(U(be, T), "ILLEGAL CONTENT"), StringEntry(V(be, T), "ILLEGAL CONTENT"), StringEntry(W(be, T), ""), StringEntry(Y(be, T), ""), StringEntry(ae(be, T), ""), StringEntry("last_invoke_id", aF)]
501+ else throw(("Unknow status" + bf))
492502 else throw("no")
493503 }
494504
495505
496506
497507 @Callable(A)
498-func deleteArtwork (T,bd) = {
508+func deleteArtwork (T,be) = {
499509 let L = toString(addressFromPublicKey(A.callerPublicKey))
500510 let aF = toBase58String(A.transactionId)
501- let bf = if (if ((L == j))
511+ let bg = if (if ((L == j))
502512 then true
503513 else (L == k))
504- then bd
514+ then be
505515 else L
506- let aV = {
507- let x = getString(this, U(bf, T))
516+ let aW = {
517+ let x = getString(this, U(bg, T))
508518 if ($isInstanceOf(x, "String"))
509519 then {
510- let aZ = x
511- aZ
520+ let ba = x
521+ ba
512522 }
513523 else throw("No art matching")
514524 }
515- let bb = {
516- let x = getInteger(this, ab(bf, T))
525+ let bc = {
526+ let x = getInteger(this, ab(bg, T))
517527 if ($isInstanceOf(x, "Int"))
518528 then {
519- let bc = x
520- if ((bc != 0))
529+ let bd = x
530+ if ((bd != 0))
521531 then true
522532 else false
523533 }
524534 else false
525535 }
526- let bg = z(Z(bf, T))
536+ let bh = z(Z(bg, T))
527537 let F = {
528- let x = getString(this, ak(bf, T))
538+ let x = getString(this, ak(bg, T))
529539 if ($isInstanceOf(x, "String"))
530540 then {
531- let aZ = x
532- aZ
541+ let ba = x
542+ ba
533543 }
534544 else throw("No art hash matching")
535545 }
536546 let D = {
537- let x = getString(this, aa(bf, T))
547+ let x = getString(this, aa(bg, T))
538548 if ($isInstanceOf(x, "String"))
539549 then {
540- let aZ = x
541- aZ
550+ let ba = x
551+ ba
542552 }
543553 else throw("No SIGN ID matching")
544554 }
545- let bh = [DeleteEntry(S(bf, T)), DeleteEntry(U(bf, T)), DeleteEntry(V(bf, T)), DeleteEntry(W(bf, T)), DeleteEntry(Y(bf, T)), DeleteEntry(X(bf, T)), DeleteEntry(ad(bf, T)), DeleteEntry(ae(bf, T)), DeleteEntry(ag(bf, T)), DeleteEntry(af(bf, T)), DeleteEntry(Z(bf, T)), DeleteEntry(aa(bf, T)), DeleteEntry(ab(bf, T)), DeleteEntry(ac(bf, T)), DeleteEntry(aj(bd, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bf, D)), DeleteEntry(ap(F, bf))]
546- if (!(bb))
555+ let bi = [DeleteEntry(S(bg, T)), DeleteEntry(U(bg, T)), DeleteEntry(V(bg, T)), DeleteEntry(W(bg, T)), DeleteEntry(Y(bg, T)), DeleteEntry(X(bg, T)), DeleteEntry(ad(bg, T)), DeleteEntry(ae(bg, T)), DeleteEntry(ag(bg, T)), DeleteEntry(af(bg, T)), DeleteEntry(Z(bg, T)), DeleteEntry(aa(bg, T)), DeleteEntry(ab(bg, T)), DeleteEntry(ac(bg, T)), DeleteEntry(aj(be, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bg, D)), DeleteEntry(ap(F, bg))]
556+ if (!(bc))
547557 then if (!(m))
548558 then throw(n)
549- else bh
559+ else bi
550560 else throw("Art already minted, cannot delete")
551561 }
552562
553563
554564
555565 @Callable(A)
556-func sellArtwork (T,aU,bg,aS) = if (!(m))
566+func sellArtwork (T,aV,bh,aT) = if (!(m))
557567 then throw(n)
558568 else {
559569 let aF = toBase58String(A.transactionId)
560570 let L = toBase58String(A.caller.bytes)
561- let bi = lastBlock.timestamp
562- let bj = v(Y(L, T))
563- if ((size(split(bj, "/")[0]) != 59))
571+ let bj = lastBlock.timestamp
572+ let bk = v(Y(L, T))
573+ if ((size(split(bk, "/")[0]) != 59))
564574 then throw("You cannot sell art with no export file")
565575 else {
566- let bk = v(X(L, T))
567- if ((size(bk) != 64))
576+ let bl = v(X(L, T))
577+ if ((size(bl) != 64))
568578 then throw("You cannot sell art with no export hash")
569- else if (if (if ((aS != toBase58String(d)))
570- then (aS != toBase58String(f))
579+ else if (if (if ((aT != toBase58String(d)))
580+ then (aT != toBase58String(f))
571581 else false)
572- then (aS != toBase58String(e))
582+ then (aT != toBase58String(e))
573583 else false)
574584 then throw("Only SIGN, USDN or WAVES accepted")
575585 else {
576- let bl = {
586+ let bm = {
577587 let x = getString(this, U(L, T))
578588 if ($isInstanceOf(x, "String"))
579589 then {
580- let aZ = x
581- aZ
590+ let ba = x
591+ ba
582592 }
583593 else throw("This art doesn't match")
584594 }
585- let aY = {
595+ let aZ = {
586596 let x = getString(this, Q(L))
587597 if ($isInstanceOf(x, "String"))
588598 then {
589- let aZ = x
590- aZ
599+ let ba = x
600+ ba
591601 }
592602 else throw("Register this account first")
593603 }
594- let bm = z(ab(L, T))
595- let bn = z(Z(L, T))
596- if (if ((bm != 0))
597- then (bm == bn)
604+ let bn = z(ab(L, T))
605+ let bo = z(Z(L, T))
606+ if (if ((bn != 0))
607+ then (bn == bo)
598608 else false)
599609 then throw("Max edition reached.")
600- else if (if ((bm > 0))
601- then (bn != bg)
610+ else if (if ((bn > 0))
611+ then (bo != bh)
602612 else false)
603613 then throw("Cannot change maximum issuable anymore")
604- else if ((aY == r))
614+ else if ((aZ == r))
605615 then throw("Account suspended")
606- else if ((aY == s))
616+ else if ((aZ == s))
607617 then throw("Account deleted")
608618 else {
609- let bo = if ((aU > 0))
619+ let bp = if ((aV > 0))
610620 then true
611621 else false
612-[BooleanEntry(ac(L, T), bo), IntegerEntry(ah(L, T), aU), IntegerEntry(Z(L, T), bg), StringEntry(ai(L, T), aS), StringEntry("last_invoke_id", aF)]
622+[BooleanEntry(ac(L, T), bp), IntegerEntry(ah(L, T), aV), IntegerEntry(Z(L, T), bh), StringEntry(ai(L, T), aT), StringEntry("last_invoke_id", aF)]
613623 }
614624 }
615625 }
616626 }
617627
618628
619629
620630 @Callable(A)
621-func buyArtwork (T,bp) = if (!(m))
631+func buyArtwork (T,bq) = if (!(m))
622632 then throw(n)
623633 else {
624634 let aF = toBase58String(A.transactionId)
625635 let L = toBase58String(A.caller.bytes)
626- let bq = z("total_nft_issued")
627- let D = v(aa(bp, T))
628- let bl = {
629- let x = getString(this, U(bp, T))
636+ let br = z("total_nft_issued")
637+ let D = v(aa(bq, T))
638+ let bm = {
639+ let x = getString(this, U(bq, T))
630640 if ($isInstanceOf(x, "String"))
631641 then {
632- let aZ = x
633- aZ
642+ let ba = x
643+ ba
634644 }
635645 else throw("Art doesn't exist")
636646 }
637- let br = v(W(bp, T))
638- let bj = v(Y(bp, T))
639- let bk = v(X(bp, T))
640- let bs = v(ae(bp, T))
641- let bt = v(ad(bp, T))
642- let aB = take(v(V(bp, T)), 50)
643- let bm = z(ab(bp, T))
644- let bu = z(ah(bp, T))
645- let bv = B(ac(bp, T))
646- let bw = v(ai(bp, T))
647- let bx = v(ak(bp, T))
648- if ((bu == 0))
647+ let bs = v(W(bq, T))
648+ let bk = v(Y(bq, T))
649+ let bl = v(X(bq, T))
650+ let bt = v(ae(bq, T))
651+ let bu = v(ad(bq, T))
652+ let aB = take(v(V(bq, T)), 50)
653+ let bn = z(ab(bq, T))
654+ let bv = z(ah(bq, T))
655+ let bw = B(ac(bq, T))
656+ let bx = v(ai(bq, T))
657+ let by = v(ak(bq, T))
658+ if ((bv == 0))
649659 then throw("Art not for sell")
650- else if (!(bv))
660+ else if (!(bw))
651661 then throw("Art not for sale")
652662 else {
653- let bn = z(Z(bp, T))
654- let aQ = value(A.payments[0])
655- let aR = value(aQ.amount)
656- let aS = if (if (if (isDefined(aQ.assetId))
657- then (size(fromBase58String(bw)) > 0)
663+ let bo = z(Z(bq, T))
664+ let aR = value(A.payments[0])
665+ let aS = value(aR.amount)
666+ let aT = if (if (if (isDefined(aR.assetId))
667+ then (size(fromBase58String(bx)) > 0)
658668 else false)
659- then (aQ.assetId == fromBase58String(bw))
669+ then (aR.assetId == fromBase58String(bx))
660670 else false)
661- then aQ.assetId
671+ then aR.assetId
662672 else unit
663- let by = if ((bw == toBase58String(d)))
673+ let bz = if ((bx == toBase58String(d)))
664674 then 8
665675 else 10
666- let bz = ((aR / 100) * by)
667- let bA = (aR - bz)
668- if ((bm == bn))
676+ let bA = ((aS / 100) * bz)
677+ let bB = (aS - bA)
678+ if ((bn == bo))
669679 then throw("Art sold out")
670- else if ((bu != aR))
680+ else if ((bv != aS))
671681 then throw("Payment don't match")
672682 else {
673- let bB = (bm + 1)
674- let bC = lastBlock.timestamp
675- let bD = (((((((((((((((((((((((((((("{\"version\": 1,
676- \"creator\": \"" + bp) + "\",
683+ let bC = (bn + 1)
684+ let bD = lastBlock.timestamp
685+ let bE = (((((((((((((((((((((((((((("{\"version\": 1,
686+ \"creator\": \"" + bq) + "\",
677687 \"artID\": \"") + T) + "\",
678688 \"signID\": \"") + D) + "\",
679- \"artwork_name\": \"") + bl) + "\",
689+ \"artwork_name\": \"") + bm) + "\",
680690 \"artwork_desc\": \"") + aB) + "\",
681- \"issue\": \"") + toString(bB)) + "/") + toString(bn)) + "\",
682- \"maxIssuable\": \"") + toString(bn)) + "\",
683- \"source_hash\": \"") + bx) + "\",
684- \"display_cid\": \"") + br) + "\",
685- \"export_cid\": \"") + bj) + "\",
686- \"export_hash\": \"") + bk) + "\",
687- \"licence_cid\": \"") + bs) + "\",
688- \"licence_hash\": \"") + bt) + "\"}")
689- let bE = Issue(("SA_" + toString((bq + 1))), bD, 1, 0, false)
690- let bF = calculateAssetId(bE)
691- let bo = if ((bB == bn))
691+ \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
692+ \"maxIssuable\": \"") + toString(bo)) + "\",
693+ \"source_hash\": \"") + by) + "\",
694+ \"display_cid\": \"") + bs) + "\",
695+ \"export_cid\": \"") + bk) + "\",
696+ \"export_hash\": \"") + bl) + "\",
697+ \"licence_cid\": \"") + bt) + "\",
698+ \"licence_hash\": \"") + bu) + "\"}")
699+ let bF = Issue(("SA_" + toString((br + 1))), bE, 1, 0, false)
700+ let bG = calculateAssetId(bF)
701+ let bp = if ((bC == bo))
692702 then false
693703 else true
694-[IntegerEntry(ab(bp, T), bB), StringEntry(((((((("art_sold_" + toString(bB)) + "_of_") + toString(bn)) + "_") + T) + "_") + bp), ((((((((L + "_") + toString(bC)) + "_") + aF) + "_") + toString(bu)) + "_") + bw)), IntegerEntry("total_nft_issued", (bq + 1)), BooleanEntry(ac(bp, T), bo), StringEntry("last_invoke_id", aF), bE, ScriptTransfer(Address(fromBase58String(bp)), bA, aS), ScriptTransfer(Address(fromBase58String(c)), bz, aS), ScriptTransfer(A.caller, 1, bF)]
704+[IntegerEntry(ab(bq, T), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + T) + "_") + bq), ((((((((L + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ac(bq, T), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(A.caller, 1, bG)]
695705 }
696706 }
697707 }
698708
699709
700710
701711 @Callable(A)
702-func deleteUser (aI) = {
712+func deleteUser (aJ) = {
703713 let L = toString(addressFromPublicKey(A.callerPublicKey))
704714 let aF = toBase58String(A.transactionId)
705715 if (if ((L == j))
706716 then true
707717 else (L == k))
708- then [DeleteEntry(R(aI)), DeleteEntry(K(aI)), DeleteEntry(M(aI)), DeleteEntry(N(aI)), DeleteEntry(O(aI)), DeleteEntry(P(aI)), StringEntry(Q(aI), s), StringEntry("last_invoke_id", aF)]
718+ then [DeleteEntry(R(aJ)), DeleteEntry(K(aJ)), DeleteEntry(M(aJ)), DeleteEntry(N(aJ)), DeleteEntry(O(aJ)), DeleteEntry(P(aJ)), StringEntry(Q(aJ), s), StringEntry("last_invoke_id", aF)]
709719 else throw("Not allowed")
710720 }
711721
712722

github/deemru/w8io/3ef1775 
329.86 ms