tx · 7VTqmvd7HpRFhJu437wtwKaidkuSyZr2ZPBrq9ELPEHz

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2022.01.04 16:11 [1864197] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "7VTqmvd7HpRFhJu437wtwKaidkuSyZr2ZPBrq9ELPEHz", "fee": 1000000, "feeAssetId": null, "timestamp": 1641301947147, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "3d9QjumpBqweQjZidXtVFq6FWZ7q5BBUqMcYHRpy2TKzsKTS9JMsgHyp4U6QfXVe6hjkaAHjHFGaLhLGTN5vftyd" ], "script": "base64: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SWQEAAAADHQwMTM1MTkxMzY0OAMFAAAABWlzQmlkCQEAAAAWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAAAAAEFAAAACmJpZERhdGFLZXkJAQAAABR2YWxpZGF0ZVByaWNlQXNzZXRJZAAAAAMFAAAAAWkFAAAADHByaWNlQXNzZXRJZAUAAAAMYXJ0d29ya1ByaWNlBAAAAAZhbW91bnQIBQAAAAx0MDEzNTE5MTM2NDgAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAAx0MDEzNTE5MTM2NDgAAAACXzIJAAUVAAAAAwUAAAAKYmlkRGF0YUtleQUAAAAGYW1vdW50BQAAAAdhc3NldElkAQAAABFnZXRDb21taXNzaW9uRGF0YQAAAAUAAAAGaXNzdWVyAAAAB2Fzc2V0SWQAAAAGYW1vdW50AAAACmFtb3VudFNvbGQAAAAKbWF4Q2FuU2VsbAQAAAANaXNXaGl0ZWxpc3RlZAkBAAAADmNoZWNrV2hpdGVsaXN0AAAAAQUAAAAGaXNzdWVyBAAAAANjdXQDCQAAZgAAAAIFAAAADWlzV2hpdGVsaXN0ZWQFAAAABmhlaWdodAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAALVVNETkFzc2V0SWQFAAAAEFVTRE5GaXJzdFNlbGxDdXQJAAACAAAAAQIAAAAWT25seSBVU0ROIGlzIGFjY2VwdGVkIQQAAAAPYW1vdW50Rm9yU2NvbmV4CQAAawAAAAMFAAAABmFtb3VudAUAAAADY3V0AAAAAAAAAAPoBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAZQAAAAIFAAAABmFtb3VudAUAAAAPYW1vdW50Rm9yU2NvbmV4AwkAAAAAAAACBQAAAAphbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsCQAAAgAAAAECAAAADEFydCBzb2xkIG91dAQAAAANbmV3QW1vdW50U29sZAkAAGQAAAACBQAAAAphbW91bnRTb2xkAAAAAAAAAAABCQAFFQAAAAMFAAAAD2Ftb3VudEZvclNjb25leAUAAAAQYW1vdW50Rm9yQ3JlYXRvcgUAAAANbmV3QW1vdW50U29sZAEAAAAMZ2V0SXNzdWVEYXRhAAAACwAAAAZpc3N1ZXIAAAAFYXJ0SWQAAAALYXJ0d29ya05h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YXJ0SWQFAAAACGJpZE93bmVyBQAAAAViaWRJZAUAAAAMcHJpY2VBc3NldElkBQAAAAxhcnR3b3JrUHJpY2UFAAAABWlzQmlkBAAAAApiaWREYXRhS2V5CAUAAAAHYmlkRGF0YQAAAAJfMQQAAAAGYW1vdW50CAUAAAAHYmlkRGF0YQAAAAJfMgQAAAAHYXNzZXRJZAgFAAAAB2JpZERhdGEAAAACXzMEAAAADWNvbW1pc2lvbkRhdGEJAQAAABFnZXRDb21taXNzaW9uRGF0YQAAAAUFAAAABmlzc3VlcgkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAUAAAAGYW1vdW50BQAAAAphbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsBAAAAA9hbW91bnRGb3JTY29uZXgIBQAAAA1jb21taXNpb25EYXRhAAAAAl8xBAAAABBhbW91bnRGb3JDcmVhdG9yCAUAAAANY29tbWlzaW9uRGF0YQAAAAJfMgQAAAANbmV3QW1vdW50U29sZAgFAAAADWNvbW1pc2lvbkRhdGEAAAACXzMEAAAACmlzc3VlckRhdGEJAQAAAAxnZXRJc3N1ZURhdGEAAAALBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAAthcnR3b3JrTmFtZQUAAAANbmV3QW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAUAAAAIdG90YWxORlQFAAAABmNhbGxlcgUAAAAIYmlkT3duZXIFAAAABWJpZElkBQAAAAFpBQAAAAhpc09uU2FsZQQAAAAKc2VsbFN0YXR1cwgFAAAACmlzc3VlckRhdGEAAAACXzEEAAAACnJlY2VpdmVORlQIBQAAAAppc3N1ZXJEYXRhAAAAAl8yBAAAAAlpc3N1ZU1ldGEIBQAAAAppc3N1ZXJEYXRhAAAAAl8zBAAAAAtpZE5GVEludm9rZQkAA/wAAAAEBQAAAAR0aGlzAgAAAAdtaW50TmZ0CQAETAAAAAIFAAAACHRvdGFsTkZUCQAETAAAAAIFAAAACWlzc3VlTWV0YQkABEwAAAACCQAEJQAAAAEFAAAACnJlY2VpdmVORlQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAtpZE5GVEludm9rZQUAAAALaWRORlRJbnZva2UEAAAABWlkTkZUBAAAAAck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ZXIFAAAABWFydElkBAAAAAhkdXJhdGlvbgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAtrZXlEdXJhdGlvbgAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACWVuZEhlaWdodAkAAGQAAAACBQAAAAhkdXJhdGlvbgUAAAAGaGVpZ2h0AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADG9sZEVuZEhlaWdodAMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAACZDYW4ndCByZXN0YXJ0IGF1Y3Rpb24sIG1heCBhbW91bnQgc29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAACWVuZEhlaWdodAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAASa2V5SGlnaGVzdEJpZEJpZElkAAAAAQUAAAAFYXJ0SWQFAAAAA25pbAkAAAIAAAABAgAAACRQcmV2aW91cyBhdWN0aW9uIGlzbid0IGNvbXBsZXRlZCB5ZXQBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQAAAAFpAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAAJZW5kSGVpZ2h0CQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGhpZ2hlc3RCaWRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUhpZ2hlc3RCaWRCaWRJZAAAAAEFAAAABWFydElkAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACWVuZEhlaWdodAMJAAAAAAAAAgUAAAAFYmlkSWQFAAAADGhpZ2hlc3RCaWRJZAQAAAALYnV5TWludERhdGEJAQAAAAdidXlNaW50AAAABgUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyBgQAAAAScmVzdGFydEF1Y3Rpb25EYXRhCQEAAAAOcmVzdGFy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T25TYWxlAAAAAgUAAAAFYXJ0SWQFAAAABmNhbGxlcgMJAQAAABFAZXh0ck5hdGl2ZSgxMDU2KQAAAAEFAAAAB3NhbGVLZXkJAAACAAAAAQIAAAAvQ2FuIG5vdCB1cGRhdGUgY29sbGVjdGlvbiBmcm9tIGFydHdvcmsgZm9yIHNhbGUJAQAAABFjb2xsZWN0aW9uUHJvY2VzcwAAAAQFAAAACmNvbGxlY3Rpb24FAAAADXN1YmNvbGxlY3Rpb24FAAAABmNhbGxlcgUAAAAFYXJ0SWQAAAABaQEAAAAKYWRkQXJ0d29yawAAAAoAAAAKc2hhMjU2SGFzaAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAApjaWREaXNwbGF5AAAAC2VudGl0bGVtZW50AAAAB3ByZXZpZXcAAAAKY29sbGVjdGlvbgAAAA1zdWJjb2xsZWN0aW9uBAAAAAx0MDE3NzQwMTc3ODEJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAVhcnRJZAgFAAAADHQwMTc3NDAxNzc4MQAAAAJfMQQAAAAGY2FsbGVyCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8yBAAAAARkYXRlCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8zAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABXR5cGVzBQAAAAR0eXBlBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAABQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAMdDAxODE3MDE4MjEyCQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAAMdDAxODE3MDE4MjEyAAAAAl8xBAAAAAdhc3NldElkCAUAAAAMdDAxODE3MDE4MjEyAAAAAl8yAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAtwcmV2aWV3RGF0YQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAxQcmV2aWV3dHlwZXMFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVByZXZpZXdDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdwcmV2aWV3BQAAAANuaWwFAAAAA25pbAQAAAAOY29sbGVjdGlvbkRhdGEJAQAAABFjb2xsZWN0aW9uUHJvY2VzcwAAAAQFAAAACmNvbGxlY3Rpb24FAAAADXN1YmNvbGxlY3Rpb24FAAAABmNhbGxlcgUAAAAFYXJ0SWQEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAH1RoaXMgaGFzaCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQJAAROAAAAAgkABE4AAAACBQAAAAtwcmV2aWV3RGF0YQUAAAAOY29sbGVjdGlvbkRhdGEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIFAAAABWFydElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5RGF0ZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQF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aWQAAAACAAAABWFydElkAAAABmlzc3VlcgQAAAALYXVjdGlvblR5cGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTEJAQAAABRzZXRCaWROb25UcmFkaXRpb25hbAAAAAMFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTIJAQAAABFzZXRCaWRUcmFkaXRpb25hbAAAAAMFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFlVua25vd24gYXVjdGlvbiB0eXBlIDoFAAAAC2F1Y3Rpb25UeXBlAgAAABssIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbnMAAAABaQEAAAAJYWNjZXB0QmlkAAAABAAAAAVhcnRJZAAAAAZpc3N1ZXIAAAAFYmlkSWQAAAAIYmlkT3duZXIEAAAAC2F1Y3Rpb25UeXBlCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5QXVjdGlvblR5cGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUxCQEAAAAXYWNjZXB0QmlkTm9uVHJhZGl0aW9uYWwAAAAFBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAUAAAAIYmlkT3duZXIDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTIJAQAAABRhY2NlcHRCaWRUcmFkaXRpb25hbAAAAAUFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkBQAAAAhiaWRPd25lcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAWVW5rbm93biBhdWN0aW9uIHR5cGUgOgUAAAALYXVjdGlvblR5cGUCAAAAGywgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucwAAAAFpAQAAAAljYW5jZWxCaWQAAAADAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAQAAAALYXVjdGlvblR5cGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTEJAQAAAA1jYW5jZWxCaWRJbXBsAAAABAUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQJAQAAABhjYW5jZWxCaWRJbXBsVHJhZGl0aW9uYWwAAAAEBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAAAAACQPap+", "height": 1864197, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2AVyLviyoJmoCX11fz2pjTEXRdoKyAa12ZiLLPBzrwP3 Next: 6gnEFamkkBzerb6Jp4PBV9vzzEmveowrmhZDsdswpyLV Diff:
OldNewDifferences
111111 func X (F,H) = ((("art_royalty_" + H) + "_") + F)
112112
113113
114-func Y (F,H) = ((("art_onsale_" + H) + "_") + F)
114+func Y (F,H) = ((("collection_" + H) + "_") + F)
115115
116116
117-func Z (F,H) = ((("art_entitlement_" + H) + "_") + F)
117+func Z (F,H) = ((("subcollection_" + H) + "_") + F)
118118
119119
120-func aa (F,H) = ((("art_tags_" + H) + "_") + F)
120+func aa (F,H) = ((("art_onsale_" + H) + "_") + F)
121121
122122
123-func ab (F,H) = ((("art_type_" + H) + "_") + F)
123+func ab (F,H) = ((("art_entitlement_" + H) + "_") + F)
124124
125125
126-func ac (F,H) = ((("art_price_" + H) + "_") + F)
126+func ac (F,H) = ((("art_tags_" + H) + "_") + F)
127127
128128
129-func ad (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
129+func ad (F,H) = ((("art_type_" + H) + "_") + F)
130130
131131
132-func ae (F,af) = ((("get_hashbytxidaddr_" + af) + "_") + F)
132+func ae (F,H) = ((("art_price_" + H) + "_") + F)
133133
134134
135-func ag (ah) = ("get_owner_by_hash_" + ah)
135+func af (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
136136
137137
138-func ai (ah,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((ah + F)))))
138+func ag (F,ah) = ((("get_hashbytxidaddr_" + ah) + "_") + F)
139139
140140
141-let aj = y(("certification_fee_" + toBase58String(g)))
142-
143-func ak (P) = valueOrElse(z(O(P)), 0)
141+func ai (aj) = ("get_owner_by_hash_" + aj)
144142
145143
146-func al (H) = {
144+func ak (aj,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((aj + F)))))
145+
146+
147+let al = y(("certification_fee_" + toBase58String(g)))
148+
149+func am (P) = valueOrElse(z(O(P)), 0)
150+
151+
152+func an (H) = {
147153 let P = v(N(H))
148154 if ((P == ""))
149155 then 0
150- else ak(P)
156+ else am(P)
151157 }
152158
153159
154-func am (an,ao) = if ((size(an) == 0))
160+func ao (ap,aq) = if ((size(ap) == 0))
155161 then throw("Field cannot be is empty")
156- else if ((size(an) > ao))
157- then throw((an + " is too long"))
162+ else if ((size(ap) > aq))
163+ then throw((ap + " is too long"))
158164 else true
159165
160166
161-func ap (F) = {
162- let aq = valueOrElse(getString(e, E(F)), p)
163- if ((aq == p))
167+func ar (F) = {
168+ let as = valueOrElse(getString(e, E(F)), p)
169+ if ((as == p))
164170 then "Register this account first with 'Account' tab"
165- else if ((aq == n))
171+ else if ((as == n))
166172 then "Account suspended"
167- else if ((aq == o))
173+ else if ((as == o))
168174 then "Account removed"
169175 else ""
170176 }
171177
172178
173-func ar (F,as,at,au,av) = {
174- let aw = ap(F)
175- if ((aw != ""))
176- then throw(aw)
177- else if ((size(as) == 0))
179+func at (F,au,av,aw,ax) = {
180+ let ay = ar(F)
181+ if ((ay != ""))
182+ then throw(ay)
183+ else if ((size(au) == 0))
178184 then throw("Display CID cannot be empty")
179- else if ((size(as) != 46))
185+ else if ((size(au) != 46))
180186 then throw("This doesn't seem a valid CID!")
181- else if (!(am(at, 100)))
187+ else if (!(ao(av, 100)))
182188 then throw("100 Char. max name")
183- else if (!(am(au, 1000)))
189+ else if (!(ao(aw, 1000)))
184190 then throw("1000 Char. max description")
185- else if ((size(split(av, ",")) > 5))
191+ else if ((size(split(ax, ",")) > 5))
186192 then throw("5 tags max.")
187193 else ""
188194 }
189195
190196
191-func ax (ay) = if ((size(ay.payments) == 0))
197+func az (aA) = if ((size(aA.payments) == 0))
192198 then throw("No payment attached")
193199 else {
194- let az = value(ay.payments[0])
195- let aA = value(az.amount)
196- $Tuple2(az, aA)
200+ let aB = value(aA.payments[0])
201+ let aC = value(aB.amount)
202+ $Tuple2(aB, aC)
197203 }
198204
199205
200-func aB (ay) = {
201- let aC = ax(ay)
202- let az = aC._1
203- let aA = aC._2
204- let aD = if (if (isDefined(az.assetId))
205- then (az.assetId == g)
206+func aD (aA) = {
207+ let aE = az(aA)
208+ let aB = aE._1
209+ let aC = aE._2
210+ let aF = if (if (isDefined(aB.assetId))
211+ then (aB.assetId == g)
206212 else false)
207- then az.assetId
213+ then aB.assetId
208214 else throw("Only USDN token accepted as transaction fee")
209- if ((aA != aj))
210- then throw(((("Payment amount should be " + toString(aj)) + " but is: ") + toString(aA)))
211- else $Tuple2(aA, aD)
215+ if ((aC != al))
216+ then throw(((("Payment amount should be " + toString(al)) + " but is: ") + toString(aC)))
217+ else $Tuple2(aC, aF)
212218 }
213219
214220
215-func aE (aF,H) = {
216- let aG = getInteger(this, T(aF, H))
217- if ($isInstanceOf(aG, "Int"))
221+func aG (aH,H) = {
222+ let aI = getInteger(this, T(aH, H))
223+ if ($isInstanceOf(aI, "Int"))
218224 then {
219- let aH = aG
220- if ((aH != 0))
225+ let aJ = aI
226+ if ((aJ != 0))
221227 then true
222228 else false
223229 }
225231 }
226232
227233
228-func aI (ay,aJ,aK) = {
229- let aL = ax(ay)
230- let az = aL._1
231- let aA = aL._2
232- let aD = if (!(isDefined(az.assetId)))
234+func aK (aA,aL,aM) = {
235+ let aN = az(aA)
236+ let aB = aN._1
237+ let aC = aN._2
238+ let aF = if (!(isDefined(aB.assetId)))
233239 then throw("Wrong asset id")
234- else if (if ((size(aJ) > 0))
235- then (toBase58String(value(az.assetId)) == aJ)
240+ else if (if ((size(aL) > 0))
241+ then (toBase58String(value(aB.assetId)) == aL)
236242 else false)
237- then az.assetId
243+ then aB.assetId
238244 else throw("Wrong asset id")
239- if (if ((aD == unit))
240- then (aJ != "")
245+ if (if ((aF == unit))
246+ then (aL != "")
241247 else false)
242248 then throw("Wrong asset id")
243- else if ((aK != aA))
244- then throw(((("Payment don't match " + toString(aK)) + " ") + toString(aA)))
245- else $Tuple2(aA, aD)
249+ else if ((aM != aC))
250+ then throw(((("Payment don't match " + toString(aM)) + " ") + toString(aC)))
251+ else $Tuple2(aC, aF)
246252 }
247253
248254
249-func aM (aD) = if ((aD != toBase58String(g)))
255+func aO (aF) = if ((aF != toBase58String(g)))
250256 then throw("Only USDN accepted")
251257 else true
252258
253259
254-func aN (aD,aO) = {
255- let aP = if (a)
260+func aP (aF,aQ) = {
261+ let aR = if (a)
256262 then 1
257- else (aj * 2)
258- if (if (if ((aD == toBase58String(g)))
259- then (aP > aO)
263+ else (al * 2)
264+ if (if (if ((aF == toBase58String(g)))
265+ then (aR > aQ)
260266 else false)
261- then (aO != 0)
267+ then (aQ != 0)
262268 else false)
263- then throw(("Wrong minimum sell price " + toString(aP)))
269+ then throw(("Wrong minimum sell price " + toString(aR)))
264270 else true
265271 }
266272
267273
268-func aQ (aD) = if ((aD == "WAVES"))
274+func aS (aF) = if ((aF == "WAVES"))
269275 then throw("Only USDN is accepted!")
270- else fromBase58String(aD)
276+ else fromBase58String(aF)
271277
272278
273-func aR (aS) = {
274- let aT = v((aS + "_OPEN"))
275- if ((aT == ""))
279+func aT (aU) = {
280+ let aV = v((aU + "_OPEN"))
281+ if ((aV == ""))
276282 then throw("Bid not found")
277283 else {
278- let aU = split(aT, "_")
279- let aV = parseIntValue(aU[1])
280- let aW = aQ(aU[0])
281- if ((0 >= aV))
284+ let aW = split(aV, "_")
285+ let aX = parseIntValue(aW[1])
286+ let aY = aS(aW[0])
287+ if ((0 >= aX))
282288 then throw("Wrong amount")
283- else $Tuple2(aV, aW)
289+ else $Tuple2(aX, aY)
284290 }
285291 }
286292
287293
288-func aX (ay) = if (!(l))
294+func aZ (aA) = if (!(l))
289295 then throw(m)
290- else $Tuple3(toBase58String(ay.transactionId), toBase58String(ay.caller.bytes), lastBlock.timestamp)
296+ else $Tuple3(toBase58String(aA.transactionId), toBase58String(aA.caller.bytes), lastBlock.timestamp)
291297
292298
293-func aY (ay,aZ,ba,P) = if (if (if ((toBase58String(ay.caller.bytes) == aZ))
294- then (ba != "")
299+func ba (aA,bb,bc,P) = if (if (if ((toBase58String(aA.caller.bytes) == bb))
300+ then (bc != "")
295301 else false)
296302 then (P != "")
297303 else false)
299305 else false
300306
301307
302-func bb (ay,aZ,H,bc) = {
303- let bd = (toBase58String(ay.caller.bytes) == aZ)
304- let be = z("total_nft_issued")
305- let bf = v(I(aZ, H))
306- if ((bf == ""))
308+func bd (aA,bb,H,be) = {
309+ let bf = (toBase58String(aA.caller.bytes) == bb)
310+ let bg = z("total_nft_issued")
311+ let bh = v(I(bb, H))
312+ if ((bh == ""))
307313 then throw("Art doesn't exist")
308314 else {
309- let bg = B(Y(aZ, H))
310- let bh = z(T(aZ, H))
311- let aK = valueOrElse(z(ac(aZ, H)), (aj * 2))
312- let aJ = if (bd)
315+ let bi = B(aa(bb, H))
316+ let bj = z(T(bb, H))
317+ let aM = valueOrElse(z(ae(bb, H)), (al * 2))
318+ let aL = if (bf)
313319 then toBase58String(g)
314- else v(ad(aZ, H))
315- let bi = z(M(aZ, H))
316- if (if (if (!(bc))
317- then !(bd)
320+ else v(af(bb, H))
321+ let bk = z(M(bb, H))
322+ if (if (if (!(be))
323+ then !(bf)
318324 else false)
319- then if (if ((0 >= aK))
325+ then if (if ((0 >= aM))
320326 then true
321- else !(bg))
327+ else !(bi))
322328 then true
323- else (0 >= bi)
329+ else (0 >= bk)
324330 else false)
325331 then throw("Art not for sale")
326- else if (if (if (!(bc))
327- then bd
332+ else if (if (if (!(be))
333+ then bf
328334 else false)
329- then (0 >= bi)
335+ then (0 >= bk)
330336 else false)
331337 then throw("Max issuable not set")
332- else $Tuple7(be, bf, bh, aK, aJ, bi, bg)
338+ else $Tuple7(bg, bh, bj, aM, aL, bk, bi)
333339 }
334340 }
335341
336342
337-func bj (ay,F,aZ,H,ba,P,aJ,aK,bc) = {
338- let aw = ap(aZ)
339- if (if (bc)
340- then (aw != "")
343+func bl (aA,F,bb,H,bc,P,aL,aM,be) = {
344+ let ay = ar(bb)
345+ if (if (be)
346+ then (ay != "")
341347 else false)
342- then throw(aw)
348+ then throw(ay)
343349 else {
344- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + ba) + "_") + P)
345- let bk = if (bc)
346- then aR(aS)
347- else aI(ay, aJ, aK)
348- let aA = bk._1
349- let aD = bk._2
350- $Tuple3(aS, aA, aD)
350+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + bc) + "_") + P)
351+ let bm = if (be)
352+ then aT(aU)
353+ else aK(aA, aL, aM)
354+ let aC = bm._1
355+ let aF = bm._2
356+ $Tuple3(aU, aC, aF)
351357 }
352358 }
353359
354360
355-func bl (aZ,aD,aA,bh,bi) = {
356- let bm = A(aZ)
357- let bn = if ((bm > height))
361+func bn (bb,aF,aC,bj,bk) = {
362+ let bo = A(bb)
363+ let bp = if ((bo > height))
358364 then 0
359- else if ((aD == g))
365+ else if ((aF == g))
360366 then k
361367 else throw("Only USDN is accepted!")
362- let bo = fraction(aA, bn, 1000)
363- let bp = (aA - bo)
364- if ((bh == bi))
368+ let bq = fraction(aC, bp, 1000)
369+ let br = (aC - bq)
370+ if ((bj == bk))
365371 then throw("Art sold out")
366372 else {
367- let bq = (bh + 1)
368- $Tuple3(bo, bp, bq)
373+ let bs = (bj + 1)
374+ $Tuple3(bq, br, bs)
369375 }
370376 }
371377
372378
373-func br (aZ,H,bf,bq,bi,be,F,ba,P,ay,bg) = {
374- let bs = ((((((((("Creator: " + aZ) + ",ArtID: ") + H) + ",Artwork name: ") + bf) + ",Issue: ") + toString(bq)) + "/") + toString(bi))
375- let bt = if (if ((bq == bi))
379+func bt (bb,H,bh,bs,bk,bg,F,bc,P,aA,bi) = {
380+ let bu = ((((((((("Creator: " + bb) + ",ArtID: ") + H) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bs)) + "/") + toString(bk))
381+ let bv = if (if ((bs == bk))
376382 then true
377- else !(bg))
383+ else !(bi))
378384 then false
379385 else true
380- let bu = if ((ba != ""))
381- then addressFromStringValue(ba)
382- else ay.caller
383- $Tuple3(bt, bu, bs)
386+ let bw = if ((bc != ""))
387+ then addressFromStringValue(bc)
388+ else aA.caller
389+ $Tuple3(bv, bw, bu)
384390 }
385391
386392
387-func bv (bw) = if ((4 > bw))
393+func bx (by) = if ((4 > by))
388394 then "SSR"
389- else if ((11 > bw))
395+ else if ((11 > by))
390396 then "SR"
391- else if ((101 > bw))
397+ else if ((101 > by))
392398 then "R"
393399 else "N"
394400
395401
396-func bx (aD,aS,by) = {
397- let bz = if (!(isDefined(aD)))
402+func bz (aF,aU,bA) = {
403+ let bB = if (!(isDefined(aF)))
398404 then throw("Only USDN is accepted")
399- else toBase58String(value(aD))
400- let aT = v((aS + "_OPEN"))
401- let bA = DeleteEntry((aS + "_OPEN"))
402- let bB = StringEntry((aS + "_CLOSED"), ((aT + "_") + toString(by)))
403- $Tuple3(bz, bA, bB)
405+ else toBase58String(value(aF))
406+ let aV = v((aU + "_OPEN"))
407+ let bC = DeleteEntry((aU + "_OPEN"))
408+ let bD = StringEntry((aU + "_CLOSED"), ((aV + "_") + toString(bA)))
409+ $Tuple3(bB, bC, bD)
404410 }
405411
406412
407-func bC (ay,H,aZ,P,ba,bc) = {
408- let bD = aX(ay)
409- let bE = bD._1
410- let F = bD._2
411- let by = bD._3
412- let bF = bb(ay, aZ, H, bc)
413- let be = bF._1
414- let bf = bF._2
415- let bh = bF._3
416- let aK = bF._4
417- let aJ = bF._5
418- let bi = bF._6
419- let bg = bF._7
420- let aT = bj(ay, F, aZ, H, ba, P, aJ, aK, bc)
421- let aS = aT._1
422- let aA = aT._2
423- let aD = aT._3
424- let bG = bl(aZ, value(aD), aA, bh, bi)
425- let bo = bG._1
426- let bp = bG._2
427- let bq = bG._3
428- let bH = br(aZ, H, bf, bq, bi, be, F, ba, P, ay, bg)
429- let bt = bH._1
430- let bu = bH._2
431- let bs = bH._3
432- let bI = invoke(this, "mintNft", [be, bs, toString(bu)], nil)
433- if ((bI == bI))
413+func bE (aA,H,bb,P,bc,be) = {
414+ let bF = aZ(aA)
415+ let bG = bF._1
416+ let F = bF._2
417+ let bA = bF._3
418+ let bH = bd(aA, bb, H, be)
419+ let bg = bH._1
420+ let bh = bH._2
421+ let bj = bH._3
422+ let aM = bH._4
423+ let aL = bH._5
424+ let bk = bH._6
425+ let bi = bH._7
426+ let aV = bl(aA, F, bb, H, bc, P, aL, aM, be)
427+ let aU = aV._1
428+ let aC = aV._2
429+ let aF = aV._3
430+ let bI = bn(bb, value(aF), aC, bj, bk)
431+ let bq = bI._1
432+ let br = bI._2
433+ let bs = bI._3
434+ let bJ = bt(bb, H, bh, bs, bk, bg, F, bc, P, aA, bi)
435+ let bv = bJ._1
436+ let bw = bJ._2
437+ let bu = bJ._3
438+ let bK = invoke(this, "mintNft", [bg, bu, toString(bw)], nil)
439+ if ((bK == bK))
434440 then {
435- let bJ = {
436- let aG = bI
437- if ($isInstanceOf(aG, "String"))
441+ let bL = {
442+ let aI = bK
443+ if ($isInstanceOf(aI, "String"))
438444 then {
439- let bK = aG
440- bK
445+ let bM = aI
446+ bM
441447 }
442448 else throw("Incorrect invoke result")
443449 }
444- let bL = bx(aD, aS, by)
445- let bz = bL._1
446- let bA = bL._2
447- let bB = bL._3
448- let bM = ((((((("art_sold_" + toString(bq)) + "_of_") + toString(bi)) + "_") + H) + "_") + aZ)
449- let bN = bv(bq)
450- let bO = if (!(bc))
451- then ((((((((((F + "_") + toString(by)) + "_") + bE) + "_") + toString(aK)) + "_") + aJ) + "_") + bJ)
452- else ((((((((((toString(bu) + "_") + toString(by)) + "_") + bE) + "_") + toString(aA)) + "_") + bz) + "_") + bJ)
453- let bP = StringEntry(bM, bO)
454- let bQ = [IntegerEntry(T(aZ, H), bq), StringEntry(("nft_" + bJ), bM), StringEntry(("nft_rarity_" + bJ), bN), IntegerEntry("total_nft_issued", (be + 1)), BooleanEntry(Y(aZ, H), bt), ScriptTransfer(Address(fromBase58String(aZ)), bp, aD), ScriptTransfer(Address(fromBase58String(c)), bo, aD), StringEntry(U(bJ), aZ), StringEntry(W(bJ), H)]
455- let bR = invoke(addressFromStringValue(d), "createCert", [toString(bu), bJ, aZ], nil)
456- if ((bR == bR))
457- then if (bc)
458- then (((bQ :+ bP) :+ bB) :+ bA)
459- else bP :: bQ
450+ let bN = bz(aF, aU, bA)
451+ let bB = bN._1
452+ let bC = bN._2
453+ let bD = bN._3
454+ let bO = ((((((("art_sold_" + toString(bs)) + "_of_") + toString(bk)) + "_") + H) + "_") + bb)
455+ let bP = bx(bs)
456+ let bQ = if (!(be))
457+ then ((((((((((F + "_") + toString(bA)) + "_") + bG) + "_") + toString(aM)) + "_") + aL) + "_") + bL)
458+ else ((((((((((toString(bw) + "_") + toString(bA)) + "_") + bG) + "_") + toString(aC)) + "_") + bB) + "_") + bL)
459+ let bR = StringEntry(bO, bQ)
460+ let bS = [IntegerEntry(T(bb, H), bs), StringEntry(("nft_" + bL), bO), StringEntry(("nft_rarity_" + bL), bP), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(aa(bb, H), bv), ScriptTransfer(Address(fromBase58String(bb)), br, aF), ScriptTransfer(Address(fromBase58String(c)), bq, aF), StringEntry(U(bL), bb), StringEntry(W(bL), H)]
461+ let bT = invoke(addressFromStringValue(d), "createCert", [toString(bw), bL, bb], nil)
462+ if ((bT == bT))
463+ then if (be)
464+ then (((bS :+ bR) :+ bD) :+ bC)
465+ else bR :: bS
460466 else throw("Strict value is not equal to itself.")
461467 }
462468 else throw("Strict value is not equal to itself.")
463469 }
464470
465471
466-func bS (ay,H,aZ) = {
467- let bT = aX(ay)
468- let bE = bT._1
469- let F = bT._2
470- let by = bT._3
471- let bU = ax(ay)
472- let az = bU._1
473- let aA = bU._2
474- let aD = if (!(isDefined(az.assetId)))
472+func bU (aA,H,bb) = {
473+ let bV = aZ(aA)
474+ let bG = bV._1
475+ let F = bV._2
476+ let bA = bV._3
477+ let bW = az(aA)
478+ let aB = bW._1
479+ let aC = bW._2
480+ let aF = if (!(isDefined(aB.assetId)))
475481 then throw("Only USDN is accepted!")
476- else toBase58String(value(az.assetId))
477- let bV = z(("current_bidamount_" + H))
478- let bW = valueOrElse(z(ac(aZ, H)), (aj * 2))
479- if (!(aM(aD)))
482+ else toBase58String(value(aB.assetId))
483+ let bX = z(("current_bidamount_" + H))
484+ let bY = valueOrElse(z(ae(bb, H)), (al * 2))
485+ if (!(aO(aF)))
480486 then throw("asset not accepted")
481- else if ((bW > aA))
487+ else if ((bY > aC))
482488 then throw("Bid is below min price!")
483489 else {
484- let bh = z(T(aZ, H))
485- let bi = z(M(aZ, H))
486- if ((0 >= bi))
490+ let bj = z(T(bb, H))
491+ let bk = z(M(bb, H))
492+ if ((0 >= bk))
487493 then throw("No max edition set for this artwork")
488- else if ((bh >= bi))
494+ else if ((bj >= bk))
489495 then throw("Sold out, you cannot bid")
490- else [StringEntry((((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + bE) + "_OPEN"), ((((aD + "_") + toString(aA)) + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV + 1))]
496+ else [StringEntry((((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + bG) + "_OPEN"), ((((aF + "_") + toString(aC)) + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX + 1))]
491497 }
492498 }
493499
494500
495-func bX (ay,H,aZ) = {
496- let bY = z(R(aZ, H))
497- let bZ = al(H)
498- if ((height > bY))
501+func bZ (aA,H,bb) = {
502+ let ca = z(R(bb, H))
503+ let cb = an(H)
504+ if ((height > ca))
499505 then throw("This auction is finished already!")
500506 else {
501- let ca = aX(ay)
502- let bE = ca._1
503- let F = ca._2
504- let by = ca._3
505- let cb = ax(ay)
506- let az = cb._1
507- let aA = cb._2
508- if ((bZ >= aA))
509- then throw(("Please place a bid higher than: " + toString(bZ)))
507+ let cc = aZ(aA)
508+ let bG = cc._1
509+ let F = cc._2
510+ let bA = cc._3
511+ let cd = az(aA)
512+ let aB = cd._1
513+ let aC = cd._2
514+ if ((cb >= aC))
515+ then throw(("Please place a bid higher than: " + toString(cb)))
510516 else {
511- let aD = if (!(isDefined(az.assetId)))
517+ let aF = if (!(isDefined(aB.assetId)))
512518 then throw("Only USDN is accepted!")
513- else toBase58String(value(az.assetId))
514- let bV = z(("current_bidamount_" + H))
515- let bW = valueOrElse(z(ac(aZ, H)), (aj * 2))
516- if (!(aM(aD)))
519+ else toBase58String(value(aB.assetId))
520+ let bX = z(("current_bidamount_" + H))
521+ let bY = valueOrElse(z(ae(bb, H)), (al * 2))
522+ if (!(aO(aF)))
517523 then throw("asset not accepted")
518- else if ((bW > aA))
524+ else if ((bY > aC))
519525 then throw("Bid is below min price!")
520526 else {
521- let bh = z(T(aZ, H))
522- let bi = z(M(aZ, H))
523- if ((0 >= bi))
527+ let bj = z(T(bb, H))
528+ let bk = z(M(bb, H))
529+ if ((0 >= bk))
524530 then throw("No max edition set for this artwork")
525- else if ((bh >= bi))
531+ else if ((bj >= bk))
526532 then throw("Sold out, you cannot bid")
527- else [StringEntry((((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + bE) + "_OPEN"), ((((aD + "_") + toString(aA)) + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV + 1)), StringEntry(N(H), toBase58String(ay.transactionId)), IntegerEntry(O(toBase58String(ay.transactionId)), aA)]
533+ else [StringEntry((((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + bG) + "_OPEN"), ((((aF + "_") + toString(aC)) + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX + 1)), StringEntry(N(H), toBase58String(aA.transactionId)), IntegerEntry(O(toBase58String(aA.transactionId)), aC)]
528534 }
529535 }
530536 }
531537 }
532538
533539
534-func cc (ay,H,aZ,P,ba) = {
535- let F = toBase58String(ay.caller.bytes)
536- if ((F != aZ))
540+func ce (aA,H,bb,P,bc) = {
541+ let F = toBase58String(aA.caller.bytes)
542+ if ((F != bb))
537543 then throw("You cannot do this action")
538- else bC(ay, H, aZ, P, ba, true)
544+ else bE(aA, H, bb, P, bc, true)
539545 }
540546
541547
542-func cd (H,aZ) = {
543- let bh = z(T(aZ, H))
544- let bi = z(M(aZ, H))
545- let ce = z(R(aZ, H))
546- let cf = z(Q(aZ, H))
547- let bY = (cf + height)
548- if ((height > ce))
549- then if ((bh == bi))
548+func cf (H,bb) = {
549+ let bj = z(T(bb, H))
550+ let bk = z(M(bb, H))
551+ let cg = z(R(bb, H))
552+ let ch = z(Q(bb, H))
553+ let ca = (ch + height)
554+ if ((height > cg))
555+ then if ((bj == bk))
550556 then throw("Can't restart auction, max amount sold")
551- else [IntegerEntry(R(aZ, H), bY), DeleteEntry(N(H))]
557+ else [IntegerEntry(R(bb, H), ca), DeleteEntry(N(H))]
552558 else throw("Previous auction isn't completed yet")
553559 }
554560
555561
556-func cg (ay,H,aZ,P,ba) = {
557- let bY = z(R(aZ, H))
558- let ch = v(N(H))
559- if ((height > bY))
560- then if ((P == ch))
562+func ci (aA,H,bb,P,bc) = {
563+ let ca = z(R(bb, H))
564+ let cj = v(N(H))
565+ if ((height > ca))
566+ then if ((P == cj))
561567 then {
562- let ci = bC(ay, H, aZ, P, ba, true)
563- let cj = cd(H, aZ)
564- (cj ++ ci)
568+ let ck = bE(aA, H, bb, P, bc, true)
569+ let cl = cf(H, bb)
570+ (cl ++ ck)
565571 }
566572 else throw("This is not the winning bid!")
567573 else throw("This auction is not yet finished!")
568574 }
569575
570576
571-func ck (ay,H,aZ,P) = {
572- let cl = aX(ay)
573- let bE = cl._1
574- let F = cl._2
575- let by = cl._3
576- let bV = z(("current_bidamount_" + H))
577- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + P)
578- let aT = w((aS + "_OPEN"), "Bid not found")
579- let aU = split(aT, "_")
580- let aD = aQ(aU[0])
581- let cm = "CANCELED"
582-[DeleteEntry((aS + "_OPEN")), StringEntry(((aS + "_") + cm), ((aT + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aU[1]), aD)]
577+func cm (aA,H,bb,P) = {
578+ let cn = aZ(aA)
579+ let bG = cn._1
580+ let F = cn._2
581+ let bA = cn._3
582+ let bX = z(("current_bidamount_" + H))
583+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + P)
584+ let aV = w((aU + "_OPEN"), "Bid not found")
585+ let aW = split(aV, "_")
586+ let aF = aS(aW[0])
587+ let co = "CANCELED"
588+[DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + co), ((aV + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aW[1]), aF)]
583589 }
584590
585591
586-func cn (ay,H,aZ,P) = {
587- let cl = aX(ay)
588- let bE = cl._1
589- let F = cl._2
590- let by = cl._3
591- let bV = z(("current_bidamount_" + H))
592- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + P)
593- let aT = w((aS + "_OPEN"), "Bid not found")
594- let aU = split(aT, "_")
595- let aD = aQ(aU[0])
596- let cm = "CANCELED"
597- let aV = parseIntValue(aU[1])
598- let ch = v(N(H))
599- if ((P == ch))
592+func cp (cq,cr,F,H) = if ((cq != ""))
593+ then throw("Collections can not be empty!")
594+ else if ((cr == ""))
595+ then [StringEntry(Y(F, H), cq)]
596+ else [StringEntry(Y(F, H), cq), StringEntry(Z(F, H), cr)]
597+
598+
599+func cs (aA,H,bb,P) = {
600+ let cn = aZ(aA)
601+ let bG = cn._1
602+ let F = cn._2
603+ let bA = cn._3
604+ let bX = z(("current_bidamount_" + H))
605+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + P)
606+ let aV = w((aU + "_OPEN"), "Bid not found")
607+ let aW = split(aV, "_")
608+ let aF = aS(aW[0])
609+ let co = "CANCELED"
610+ let aX = parseIntValue(aW[1])
611+ let cj = v(N(H))
612+ if ((P == cj))
600613 then throw("You can't cancel the highest bid!")
601- else [DeleteEntry((aS + "_OPEN")), StringEntry(((aS + "_") + cm), ((aT + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV - 1)), ScriptTransfer(Address(fromBase58String(F)), aV, aD)]
614+ else [DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + co), ((aV + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX - 1)), ScriptTransfer(Address(fromBase58String(F)), aX, aF)]
602615 }
603616
604617
605-@Callable(ay)
606-func mintNft (be,bs,bu) = if ((ay.caller == this))
618+@Callable(aA)
619+func mintNft (bg,bu,bw) = if ((aA.caller == this))
607620 then {
608- let co = Address(fromBase58String(bu))
609- let cp = Issue(("SCONEX_" + toString((be + 1))), bs, 1, 0, false)
610- let bJ = calculateAssetId(cp)
611- $Tuple2([cp, ScriptTransfer(co, 1, bJ)], toBase58String(bJ))
621+ let ct = Address(fromBase58String(bw))
622+ let cu = Issue(("SCONEX_" + toString((bg + 1))), bu, 1, 0, false)
623+ let bL = calculateAssetId(cu)
624+ $Tuple2([cu, ScriptTransfer(ct, 1, bL)], toBase58String(bL))
612625 }
613626 else throw("Only the dApp can mint NFT's")
614627
615628
616629
617-@Callable(ay)
618-func addArtwork (ah,at,au,av,cq,as,cr,cs,ct,cu) = {
619- let cv = aX(ay)
620- let H = cv._1
621- let F = cv._2
622- let by = cv._3
623- if (containsElement(i, cq))
630+@Callable(aA)
631+func updateCollection (H,cq,cr) = {
632+ let F = toBase58String(aA.caller.bytes)
633+ let cv = aa(H, F)
634+ if (getBooleanValue(cv))
635+ then throw("Can not update collection from artwork for sale")
636+ else cp(cq, cr, F, H)
637+ }
638+
639+
640+
641+@Callable(aA)
642+func addArtwork (aj,av,aw,ax,cw,au,cx,cy,cq,cr) = {
643+ let cz = aZ(aA)
644+ let H = cz._1
645+ let F = cz._2
646+ let bA = cz._3
647+ if (containsElement(i, cw))
624648 then {
625- let cw = ar(F, as, at, au, av)
626- if ((cw != ""))
649+ let cA = at(F, au, av, aw, ax)
650+ if ((cA != ""))
627651 then throw("Something went wrong!")
628652 else {
629- let cx = aB(ay)
630- let aA = cx._1
631- let aD = cx._2
632- if (!(isDefined(aA)))
653+ let cB = aD(aA)
654+ let aC = cB._1
655+ let aF = cB._2
656+ if (!(isDefined(aC)))
633657 then throw("Something went wrong")
634658 else {
635- let cy = if (containsElement(j, cq))
636- then [StringEntry(L(F, H), cs)]
659+ let cC = if (containsElement(j, cw))
660+ then [StringEntry(L(F, H), cy)]
637661 else nil
638- let cz = v(ai(ah, F))
639- if ((cz != ""))
662+ let cD = cp(cq, cr, F, H)
663+ let cE = v(ak(aj, F))
664+ if ((cE != ""))
640665 then throw("You already added it")
641666 else {
642- let cA = v(ag(ah))
643- if ((cA != ""))
667+ let cF = v(ai(aj))
668+ if ((cF != ""))
644669 then throw("This hash is already registered")
645- else (cy ++ [StringEntry(ag(ah), F), StringEntry(ai(ah, F), H), IntegerEntry(G(F, H), by), StringEntry(I(F, H), at), StringEntry(J(F, H), au), StringEntry(K(F, H), as), StringEntry(ab(F, H), cq), StringEntry(aa(F, H), av), IntegerEntry(M(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(Y(F, H), false), StringEntry(ae(F, H), ah), StringEntry(Z(F, H), cr), ScriptTransfer(Address(fromBase58String(c)), aA, aD)])
670+ else ((cC ++ cD) ++ [StringEntry(ai(aj), F), StringEntry(ak(aj, F), H), IntegerEntry(G(F, H), bA), StringEntry(I(F, H), av), StringEntry(J(F, H), aw), StringEntry(K(F, H), au), StringEntry(ad(F, H), cw), StringEntry(ac(F, H), ax), IntegerEntry(M(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(aa(F, H), false), StringEntry(ag(F, H), aj), StringEntry(ab(F, H), cx), ScriptTransfer(Address(fromBase58String(c)), aC, aF)])
646671 }
647672 }
648673 }
652677
653678
654679
655-@Callable(ay)
656-func sellArtwork (H,aO,cB,aD,cC,cf,cD) = {
657- let cE = aX(ay)
658- let bE = cE._1
659- let F = cE._2
660- let bf = v(I(F, H))
661- if ((0 > cD))
680+@Callable(aA)
681+func sellArtwork (H,aQ,cG,aF,cH,ch,cI) = {
682+ let cJ = aZ(aA)
683+ let bG = cJ._1
684+ let F = cJ._2
685+ let bh = v(I(F, H))
686+ if ((0 > cI))
662687 then throw("Royalty percentage should be above 0")
663- else if ((cD > 85))
688+ else if ((cI > 85))
664689 then throw("Royalty percentage should be below 85")
665- else if (!(containsElement([q, r, s], cC)))
690+ else if (!(containsElement([q, r, s], cH)))
666691 then throw("We don't know this auction type")
667- else if ((bf == ""))
692+ else if ((bh == ""))
668693 then throw("This art doesn't match your account")
669694 else {
670- let bV = z(("current_bidamount_" + H))
671- if (!(aM(aD)))
695+ let bX = z(("current_bidamount_" + H))
696+ if (!(aO(aF)))
672697 then throw("Something went wrong!")
673- else if (!(aN(aD, aO)))
698+ else if (!(aP(aF, aQ)))
674699 then throw("Something went wrong!")
675700 else {
676- let aw = ap(F)
677- if ((aw != ""))
678- then throw(aw)
701+ let ay = ar(F)
702+ if ((ay != ""))
703+ then throw(ay)
679704 else {
680- let bh = z(T(F, H))
681- let bi = z(M(F, H))
682- if ((cB > 10000))
705+ let bj = z(T(F, H))
706+ let bk = z(M(F, H))
707+ if ((cG > 10000))
683708 then throw("10000 editions max per artwork")
684- else if (if ((bh != 0))
685- then (bh == bi)
709+ else if (if ((bj != 0))
710+ then (bj == bk)
686711 else false)
687712 then throw("Max edition reached.")
688- else if (if ((bh > 0))
689- then (bi != cB)
713+ else if (if ((bj > 0))
714+ then (bk != cG)
690715 else false)
691716 then throw("Cannot change maximum issuable anymore")
692- else if (if ((bV > 0))
693- then (bi != cB)
717+ else if (if ((bX > 0))
718+ then (bk != cG)
694719 else false)
695720 then throw("Cannot change maximum issuable with active orders")
696721 else {
697- let bt = if (if ((aO > 0))
698- then (cB > 0)
722+ let bv = if (if ((aQ > 0))
723+ then (cG > 0)
699724 else false)
700725 then true
701726 else false
702- let bY = (cf + height)
703-[BooleanEntry(Y(F, H), bt), IntegerEntry(ac(F, H), aO), IntegerEntry(M(F, H), cB), IntegerEntry(Q(F, H), cf), IntegerEntry(R(F, H), bY), StringEntry(ad(F, H), aD), StringEntry(S(F, H), cC), IntegerEntry(X(F, H), cD)]
727+ let ca = (ch + height)
728+[BooleanEntry(aa(F, H), bv), IntegerEntry(ae(F, H), aQ), IntegerEntry(M(F, H), cG), IntegerEntry(Q(F, H), ch), IntegerEntry(R(F, H), ca), StringEntry(af(F, H), aF), StringEntry(S(F, H), cH), IntegerEntry(X(F, H), cI)]
704729 }
705730 }
706731 }
709734
710735
711736
712-@Callable(ay)
713-func buyArtwork (H,aZ) = {
714- let cC = v(S(aZ, H))
715- if ((cC == s))
716- then bC(ay, H, aZ, "", "", false)
737+@Callable(aA)
738+func buyArtwork (H,bb) = {
739+ let cH = v(S(bb, H))
740+ if ((cH == s))
741+ then bE(aA, H, bb, "", "", false)
717742 else throw("Direct buy only allowed when no auction type is set!")
718743 }
719744
720745
721746
722-@Callable(ay)
723-func updateTags (cF,H,av) = {
724- let F = toString(addressFromPublicKey(ay.callerPublicKey))
747+@Callable(aA)
748+func updateTags (cK,H,ax) = {
749+ let F = toString(addressFromPublicKey(aA.callerPublicKey))
725750 if (containsElement(h, F))
726- then if ((size(split(av, ",")) > 5))
751+ then if ((size(split(ax, ",")) > 5))
727752 then throw("5 tags max.")
728753 else {
729- let cG = w(aa(cF, H), "No tags created with this key, so can't update!")
730- if ((av == cG))
754+ let cL = w(ac(cK, H), "No tags created with this key, so can't update!")
755+ if ((ax == cL))
731756 then throw("Tags are the same as old tags!")
732- else [StringEntry(aa(cF, H), av)]
757+ else [StringEntry(ac(cK, H), ax)]
733758 }
734759 else throw("no")
735760 }
736761
737762
738763
739-@Callable(ay)
740-func deleteEntry (cH) = {
741- let F = toString(addressFromPublicKey(ay.callerPublicKey))
764+@Callable(aA)
765+func deleteEntry (cM) = {
766+ let F = toString(addressFromPublicKey(aA.callerPublicKey))
742767 if (containsElement(h, F))
743- then [DeleteEntry(cH)]
768+ then [DeleteEntry(cM)]
744769 else throw("no")
745770 }
746771
747772
748773
749-@Callable(ay)
750-func setBid (H,aZ) = {
751- let cC = v(S(aZ, H))
752- if ((cC == q))
753- then bS(ay, H, aZ)
754- else if ((cC == r))
755- then bX(ay, H, aZ)
756- else throw((("Unknown auction type :" + cC) + ", please contact the admins"))
774+@Callable(aA)
775+func setBid (H,bb) = {
776+ let cH = v(S(bb, H))
777+ if ((cH == q))
778+ then bU(aA, H, bb)
779+ else if ((cH == r))
780+ then bZ(aA, H, bb)
781+ else throw((("Unknown auction type :" + cH) + ", please contact the admins"))
757782 }
758783
759784
760785
761-@Callable(ay)
762-func acceptBid (H,aZ,P,ba) = {
763- let cC = v(S(aZ, H))
764- if ((cC == q))
765- then cc(ay, H, aZ, P, ba)
766- else if ((cC == r))
767- then cg(ay, H, aZ, P, ba)
768- else throw((("Unknown auction type :" + cC) + ", please contact the admins"))
786+@Callable(aA)
787+func acceptBid (H,bb,P,bc) = {
788+ let cH = v(S(bb, H))
789+ if ((cH == q))
790+ then ce(aA, H, bb, P, bc)
791+ else if ((cH == r))
792+ then ci(aA, H, bb, P, bc)
793+ else throw((("Unknown auction type :" + cH) + ", please contact the admins"))
769794 }
770795
771796
772797
773-@Callable(ay)
774-func cancelBid (H,aZ,P) = {
775- let cC = v(S(aZ, H))
776- if ((cC == q))
777- then ck(ay, H, aZ, P)
778- else cn(ay, H, aZ, P)
798+@Callable(aA)
799+func cancelBid (H,bb,P) = {
800+ let cH = v(S(bb, H))
801+ if ((cH == q))
802+ then cm(aA, H, bb, P)
803+ else cs(aA, H, bb, P)
779804 }
780805
781806
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
77
88 let c = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
99
1010 let d = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
1111
1212 let e = value(addressFromString("3Mzv4UHGRCC5KknZb8x5wfFUQzzpY9G4Gn4"))
1313
1414 let f = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1515
1616 let g = base58'132maRL3uF35tc2bpRih9D6MYq5DR6H28zkop786dKyu'
1717
1818 let h = [getString(b, "owner1"), getString(b, "owner2")]
1919
2020 let i = ["IMAGE", "PDF", "VIDEO"]
2121
2222 let j = ["PDF"]
2323
2424 let k = 150
2525
2626 let l = valueOrElse(getBoolean(e, "conf_dapp_is_running"), true)
2727
2828 let m = valueOrElse(getString(e, "conf_maintenance_msg"), "")
2929
3030 let n = "SUSPENDED"
3131
3232 let o = "REMOVED"
3333
3434 let p = "UNREGISTERED"
3535
3636 let q = "BIDTYPE"
3737
3838 let r = "TRADITIONAL"
3939
4040 let s = "DIRECT"
4141
4242 func t (u) = valueOrElse(getString(e, u), "")
4343
4444
4545 func v (u) = valueOrElse(getString(this, u), "")
4646
4747
4848 func w (u,x) = valueOrErrorMessage(getString(this, u), x)
4949
5050
5151 func y (u) = valueOrErrorMessage(getInteger(b, u), "Integer undefine or 0 in oracle")
5252
5353
5454 func z (u) = valueOrElse(getInteger(this, u), 0)
5555
5656
5757 func A (u) = valueOrElse(getInteger(f, u), 0)
5858
5959
6060 func B (u) = valueOrElse(getBoolean(this, u), false)
6161
6262
6363 func C (D) = (size(D) == 64)
6464
6565
6666 func E (F) = ("user_status_" + F)
6767
6868
6969 func G (F,H) = ((("art_date_" + H) + "_") + F)
7070
7171
7272 func I (F,H) = ((("art_name_" + H) + "_") + F)
7373
7474
7575 func J (F,H) = ((("art_desc_" + H) + "_") + F)
7676
7777
7878 func K (F,H) = ((("art_display_cid_" + H) + "_") + F)
7979
8080
8181 func L (F,H) = ((("art_preview_cid_" + H) + "_") + F)
8282
8383
8484 func M (F,H) = ((("art_maxmint_" + H) + "_") + F)
8585
8686
8787 func N (H) = ("art_highestBidBidId_" + H)
8888
8989
9090 func O (P) = ("bid_" + P)
9191
9292
9393 func Q (F,H) = ((("art_duration_" + H) + "_") + F)
9494
9595
9696 func R (F,H) = ((("art_endheight_" + H) + "_") + F)
9797
9898
9999 func S (F,H) = ((("art_auctiontype_" + H) + "_") + F)
100100
101101
102102 func T (F,H) = ((("art_issued_" + H) + "_") + F)
103103
104104
105105 func U (V) = ("nft_issued_" + V)
106106
107107
108108 func W (V) = ("nft_artId_" + V)
109109
110110
111111 func X (F,H) = ((("art_royalty_" + H) + "_") + F)
112112
113113
114-func Y (F,H) = ((("art_onsale_" + H) + "_") + F)
114+func Y (F,H) = ((("collection_" + H) + "_") + F)
115115
116116
117-func Z (F,H) = ((("art_entitlement_" + H) + "_") + F)
117+func Z (F,H) = ((("subcollection_" + H) + "_") + F)
118118
119119
120-func aa (F,H) = ((("art_tags_" + H) + "_") + F)
120+func aa (F,H) = ((("art_onsale_" + H) + "_") + F)
121121
122122
123-func ab (F,H) = ((("art_type_" + H) + "_") + F)
123+func ab (F,H) = ((("art_entitlement_" + H) + "_") + F)
124124
125125
126-func ac (F,H) = ((("art_price_" + H) + "_") + F)
126+func ac (F,H) = ((("art_tags_" + H) + "_") + F)
127127
128128
129-func ad (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
129+func ad (F,H) = ((("art_type_" + H) + "_") + F)
130130
131131
132-func ae (F,af) = ((("get_hashbytxidaddr_" + af) + "_") + F)
132+func ae (F,H) = ((("art_price_" + H) + "_") + F)
133133
134134
135-func ag (ah) = ("get_owner_by_hash_" + ah)
135+func af (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
136136
137137
138-func ai (ah,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((ah + F)))))
138+func ag (F,ah) = ((("get_hashbytxidaddr_" + ah) + "_") + F)
139139
140140
141-let aj = y(("certification_fee_" + toBase58String(g)))
142-
143-func ak (P) = valueOrElse(z(O(P)), 0)
141+func ai (aj) = ("get_owner_by_hash_" + aj)
144142
145143
146-func al (H) = {
144+func ak (aj,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((aj + F)))))
145+
146+
147+let al = y(("certification_fee_" + toBase58String(g)))
148+
149+func am (P) = valueOrElse(z(O(P)), 0)
150+
151+
152+func an (H) = {
147153 let P = v(N(H))
148154 if ((P == ""))
149155 then 0
150- else ak(P)
156+ else am(P)
151157 }
152158
153159
154-func am (an,ao) = if ((size(an) == 0))
160+func ao (ap,aq) = if ((size(ap) == 0))
155161 then throw("Field cannot be is empty")
156- else if ((size(an) > ao))
157- then throw((an + " is too long"))
162+ else if ((size(ap) > aq))
163+ then throw((ap + " is too long"))
158164 else true
159165
160166
161-func ap (F) = {
162- let aq = valueOrElse(getString(e, E(F)), p)
163- if ((aq == p))
167+func ar (F) = {
168+ let as = valueOrElse(getString(e, E(F)), p)
169+ if ((as == p))
164170 then "Register this account first with 'Account' tab"
165- else if ((aq == n))
171+ else if ((as == n))
166172 then "Account suspended"
167- else if ((aq == o))
173+ else if ((as == o))
168174 then "Account removed"
169175 else ""
170176 }
171177
172178
173-func ar (F,as,at,au,av) = {
174- let aw = ap(F)
175- if ((aw != ""))
176- then throw(aw)
177- else if ((size(as) == 0))
179+func at (F,au,av,aw,ax) = {
180+ let ay = ar(F)
181+ if ((ay != ""))
182+ then throw(ay)
183+ else if ((size(au) == 0))
178184 then throw("Display CID cannot be empty")
179- else if ((size(as) != 46))
185+ else if ((size(au) != 46))
180186 then throw("This doesn't seem a valid CID!")
181- else if (!(am(at, 100)))
187+ else if (!(ao(av, 100)))
182188 then throw("100 Char. max name")
183- else if (!(am(au, 1000)))
189+ else if (!(ao(aw, 1000)))
184190 then throw("1000 Char. max description")
185- else if ((size(split(av, ",")) > 5))
191+ else if ((size(split(ax, ",")) > 5))
186192 then throw("5 tags max.")
187193 else ""
188194 }
189195
190196
191-func ax (ay) = if ((size(ay.payments) == 0))
197+func az (aA) = if ((size(aA.payments) == 0))
192198 then throw("No payment attached")
193199 else {
194- let az = value(ay.payments[0])
195- let aA = value(az.amount)
196- $Tuple2(az, aA)
200+ let aB = value(aA.payments[0])
201+ let aC = value(aB.amount)
202+ $Tuple2(aB, aC)
197203 }
198204
199205
200-func aB (ay) = {
201- let aC = ax(ay)
202- let az = aC._1
203- let aA = aC._2
204- let aD = if (if (isDefined(az.assetId))
205- then (az.assetId == g)
206+func aD (aA) = {
207+ let aE = az(aA)
208+ let aB = aE._1
209+ let aC = aE._2
210+ let aF = if (if (isDefined(aB.assetId))
211+ then (aB.assetId == g)
206212 else false)
207- then az.assetId
213+ then aB.assetId
208214 else throw("Only USDN token accepted as transaction fee")
209- if ((aA != aj))
210- then throw(((("Payment amount should be " + toString(aj)) + " but is: ") + toString(aA)))
211- else $Tuple2(aA, aD)
215+ if ((aC != al))
216+ then throw(((("Payment amount should be " + toString(al)) + " but is: ") + toString(aC)))
217+ else $Tuple2(aC, aF)
212218 }
213219
214220
215-func aE (aF,H) = {
216- let aG = getInteger(this, T(aF, H))
217- if ($isInstanceOf(aG, "Int"))
221+func aG (aH,H) = {
222+ let aI = getInteger(this, T(aH, H))
223+ if ($isInstanceOf(aI, "Int"))
218224 then {
219- let aH = aG
220- if ((aH != 0))
225+ let aJ = aI
226+ if ((aJ != 0))
221227 then true
222228 else false
223229 }
224230 else false
225231 }
226232
227233
228-func aI (ay,aJ,aK) = {
229- let aL = ax(ay)
230- let az = aL._1
231- let aA = aL._2
232- let aD = if (!(isDefined(az.assetId)))
234+func aK (aA,aL,aM) = {
235+ let aN = az(aA)
236+ let aB = aN._1
237+ let aC = aN._2
238+ let aF = if (!(isDefined(aB.assetId)))
233239 then throw("Wrong asset id")
234- else if (if ((size(aJ) > 0))
235- then (toBase58String(value(az.assetId)) == aJ)
240+ else if (if ((size(aL) > 0))
241+ then (toBase58String(value(aB.assetId)) == aL)
236242 else false)
237- then az.assetId
243+ then aB.assetId
238244 else throw("Wrong asset id")
239- if (if ((aD == unit))
240- then (aJ != "")
245+ if (if ((aF == unit))
246+ then (aL != "")
241247 else false)
242248 then throw("Wrong asset id")
243- else if ((aK != aA))
244- then throw(((("Payment don't match " + toString(aK)) + " ") + toString(aA)))
245- else $Tuple2(aA, aD)
249+ else if ((aM != aC))
250+ then throw(((("Payment don't match " + toString(aM)) + " ") + toString(aC)))
251+ else $Tuple2(aC, aF)
246252 }
247253
248254
249-func aM (aD) = if ((aD != toBase58String(g)))
255+func aO (aF) = if ((aF != toBase58String(g)))
250256 then throw("Only USDN accepted")
251257 else true
252258
253259
254-func aN (aD,aO) = {
255- let aP = if (a)
260+func aP (aF,aQ) = {
261+ let aR = if (a)
256262 then 1
257- else (aj * 2)
258- if (if (if ((aD == toBase58String(g)))
259- then (aP > aO)
263+ else (al * 2)
264+ if (if (if ((aF == toBase58String(g)))
265+ then (aR > aQ)
260266 else false)
261- then (aO != 0)
267+ then (aQ != 0)
262268 else false)
263- then throw(("Wrong minimum sell price " + toString(aP)))
269+ then throw(("Wrong minimum sell price " + toString(aR)))
264270 else true
265271 }
266272
267273
268-func aQ (aD) = if ((aD == "WAVES"))
274+func aS (aF) = if ((aF == "WAVES"))
269275 then throw("Only USDN is accepted!")
270- else fromBase58String(aD)
276+ else fromBase58String(aF)
271277
272278
273-func aR (aS) = {
274- let aT = v((aS + "_OPEN"))
275- if ((aT == ""))
279+func aT (aU) = {
280+ let aV = v((aU + "_OPEN"))
281+ if ((aV == ""))
276282 then throw("Bid not found")
277283 else {
278- let aU = split(aT, "_")
279- let aV = parseIntValue(aU[1])
280- let aW = aQ(aU[0])
281- if ((0 >= aV))
284+ let aW = split(aV, "_")
285+ let aX = parseIntValue(aW[1])
286+ let aY = aS(aW[0])
287+ if ((0 >= aX))
282288 then throw("Wrong amount")
283- else $Tuple2(aV, aW)
289+ else $Tuple2(aX, aY)
284290 }
285291 }
286292
287293
288-func aX (ay) = if (!(l))
294+func aZ (aA) = if (!(l))
289295 then throw(m)
290- else $Tuple3(toBase58String(ay.transactionId), toBase58String(ay.caller.bytes), lastBlock.timestamp)
296+ else $Tuple3(toBase58String(aA.transactionId), toBase58String(aA.caller.bytes), lastBlock.timestamp)
291297
292298
293-func aY (ay,aZ,ba,P) = if (if (if ((toBase58String(ay.caller.bytes) == aZ))
294- then (ba != "")
299+func ba (aA,bb,bc,P) = if (if (if ((toBase58String(aA.caller.bytes) == bb))
300+ then (bc != "")
295301 else false)
296302 then (P != "")
297303 else false)
298304 then true
299305 else false
300306
301307
302-func bb (ay,aZ,H,bc) = {
303- let bd = (toBase58String(ay.caller.bytes) == aZ)
304- let be = z("total_nft_issued")
305- let bf = v(I(aZ, H))
306- if ((bf == ""))
308+func bd (aA,bb,H,be) = {
309+ let bf = (toBase58String(aA.caller.bytes) == bb)
310+ let bg = z("total_nft_issued")
311+ let bh = v(I(bb, H))
312+ if ((bh == ""))
307313 then throw("Art doesn't exist")
308314 else {
309- let bg = B(Y(aZ, H))
310- let bh = z(T(aZ, H))
311- let aK = valueOrElse(z(ac(aZ, H)), (aj * 2))
312- let aJ = if (bd)
315+ let bi = B(aa(bb, H))
316+ let bj = z(T(bb, H))
317+ let aM = valueOrElse(z(ae(bb, H)), (al * 2))
318+ let aL = if (bf)
313319 then toBase58String(g)
314- else v(ad(aZ, H))
315- let bi = z(M(aZ, H))
316- if (if (if (!(bc))
317- then !(bd)
320+ else v(af(bb, H))
321+ let bk = z(M(bb, H))
322+ if (if (if (!(be))
323+ then !(bf)
318324 else false)
319- then if (if ((0 >= aK))
325+ then if (if ((0 >= aM))
320326 then true
321- else !(bg))
327+ else !(bi))
322328 then true
323- else (0 >= bi)
329+ else (0 >= bk)
324330 else false)
325331 then throw("Art not for sale")
326- else if (if (if (!(bc))
327- then bd
332+ else if (if (if (!(be))
333+ then bf
328334 else false)
329- then (0 >= bi)
335+ then (0 >= bk)
330336 else false)
331337 then throw("Max issuable not set")
332- else $Tuple7(be, bf, bh, aK, aJ, bi, bg)
338+ else $Tuple7(bg, bh, bj, aM, aL, bk, bi)
333339 }
334340 }
335341
336342
337-func bj (ay,F,aZ,H,ba,P,aJ,aK,bc) = {
338- let aw = ap(aZ)
339- if (if (bc)
340- then (aw != "")
343+func bl (aA,F,bb,H,bc,P,aL,aM,be) = {
344+ let ay = ar(bb)
345+ if (if (be)
346+ then (ay != "")
341347 else false)
342- then throw(aw)
348+ then throw(ay)
343349 else {
344- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + ba) + "_") + P)
345- let bk = if (bc)
346- then aR(aS)
347- else aI(ay, aJ, aK)
348- let aA = bk._1
349- let aD = bk._2
350- $Tuple3(aS, aA, aD)
350+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + bc) + "_") + P)
351+ let bm = if (be)
352+ then aT(aU)
353+ else aK(aA, aL, aM)
354+ let aC = bm._1
355+ let aF = bm._2
356+ $Tuple3(aU, aC, aF)
351357 }
352358 }
353359
354360
355-func bl (aZ,aD,aA,bh,bi) = {
356- let bm = A(aZ)
357- let bn = if ((bm > height))
361+func bn (bb,aF,aC,bj,bk) = {
362+ let bo = A(bb)
363+ let bp = if ((bo > height))
358364 then 0
359- else if ((aD == g))
365+ else if ((aF == g))
360366 then k
361367 else throw("Only USDN is accepted!")
362- let bo = fraction(aA, bn, 1000)
363- let bp = (aA - bo)
364- if ((bh == bi))
368+ let bq = fraction(aC, bp, 1000)
369+ let br = (aC - bq)
370+ if ((bj == bk))
365371 then throw("Art sold out")
366372 else {
367- let bq = (bh + 1)
368- $Tuple3(bo, bp, bq)
373+ let bs = (bj + 1)
374+ $Tuple3(bq, br, bs)
369375 }
370376 }
371377
372378
373-func br (aZ,H,bf,bq,bi,be,F,ba,P,ay,bg) = {
374- let bs = ((((((((("Creator: " + aZ) + ",ArtID: ") + H) + ",Artwork name: ") + bf) + ",Issue: ") + toString(bq)) + "/") + toString(bi))
375- let bt = if (if ((bq == bi))
379+func bt (bb,H,bh,bs,bk,bg,F,bc,P,aA,bi) = {
380+ let bu = ((((((((("Creator: " + bb) + ",ArtID: ") + H) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bs)) + "/") + toString(bk))
381+ let bv = if (if ((bs == bk))
376382 then true
377- else !(bg))
383+ else !(bi))
378384 then false
379385 else true
380- let bu = if ((ba != ""))
381- then addressFromStringValue(ba)
382- else ay.caller
383- $Tuple3(bt, bu, bs)
386+ let bw = if ((bc != ""))
387+ then addressFromStringValue(bc)
388+ else aA.caller
389+ $Tuple3(bv, bw, bu)
384390 }
385391
386392
387-func bv (bw) = if ((4 > bw))
393+func bx (by) = if ((4 > by))
388394 then "SSR"
389- else if ((11 > bw))
395+ else if ((11 > by))
390396 then "SR"
391- else if ((101 > bw))
397+ else if ((101 > by))
392398 then "R"
393399 else "N"
394400
395401
396-func bx (aD,aS,by) = {
397- let bz = if (!(isDefined(aD)))
402+func bz (aF,aU,bA) = {
403+ let bB = if (!(isDefined(aF)))
398404 then throw("Only USDN is accepted")
399- else toBase58String(value(aD))
400- let aT = v((aS + "_OPEN"))
401- let bA = DeleteEntry((aS + "_OPEN"))
402- let bB = StringEntry((aS + "_CLOSED"), ((aT + "_") + toString(by)))
403- $Tuple3(bz, bA, bB)
405+ else toBase58String(value(aF))
406+ let aV = v((aU + "_OPEN"))
407+ let bC = DeleteEntry((aU + "_OPEN"))
408+ let bD = StringEntry((aU + "_CLOSED"), ((aV + "_") + toString(bA)))
409+ $Tuple3(bB, bC, bD)
404410 }
405411
406412
407-func bC (ay,H,aZ,P,ba,bc) = {
408- let bD = aX(ay)
409- let bE = bD._1
410- let F = bD._2
411- let by = bD._3
412- let bF = bb(ay, aZ, H, bc)
413- let be = bF._1
414- let bf = bF._2
415- let bh = bF._3
416- let aK = bF._4
417- let aJ = bF._5
418- let bi = bF._6
419- let bg = bF._7
420- let aT = bj(ay, F, aZ, H, ba, P, aJ, aK, bc)
421- let aS = aT._1
422- let aA = aT._2
423- let aD = aT._3
424- let bG = bl(aZ, value(aD), aA, bh, bi)
425- let bo = bG._1
426- let bp = bG._2
427- let bq = bG._3
428- let bH = br(aZ, H, bf, bq, bi, be, F, ba, P, ay, bg)
429- let bt = bH._1
430- let bu = bH._2
431- let bs = bH._3
432- let bI = invoke(this, "mintNft", [be, bs, toString(bu)], nil)
433- if ((bI == bI))
413+func bE (aA,H,bb,P,bc,be) = {
414+ let bF = aZ(aA)
415+ let bG = bF._1
416+ let F = bF._2
417+ let bA = bF._3
418+ let bH = bd(aA, bb, H, be)
419+ let bg = bH._1
420+ let bh = bH._2
421+ let bj = bH._3
422+ let aM = bH._4
423+ let aL = bH._5
424+ let bk = bH._6
425+ let bi = bH._7
426+ let aV = bl(aA, F, bb, H, bc, P, aL, aM, be)
427+ let aU = aV._1
428+ let aC = aV._2
429+ let aF = aV._3
430+ let bI = bn(bb, value(aF), aC, bj, bk)
431+ let bq = bI._1
432+ let br = bI._2
433+ let bs = bI._3
434+ let bJ = bt(bb, H, bh, bs, bk, bg, F, bc, P, aA, bi)
435+ let bv = bJ._1
436+ let bw = bJ._2
437+ let bu = bJ._3
438+ let bK = invoke(this, "mintNft", [bg, bu, toString(bw)], nil)
439+ if ((bK == bK))
434440 then {
435- let bJ = {
436- let aG = bI
437- if ($isInstanceOf(aG, "String"))
441+ let bL = {
442+ let aI = bK
443+ if ($isInstanceOf(aI, "String"))
438444 then {
439- let bK = aG
440- bK
445+ let bM = aI
446+ bM
441447 }
442448 else throw("Incorrect invoke result")
443449 }
444- let bL = bx(aD, aS, by)
445- let bz = bL._1
446- let bA = bL._2
447- let bB = bL._3
448- let bM = ((((((("art_sold_" + toString(bq)) + "_of_") + toString(bi)) + "_") + H) + "_") + aZ)
449- let bN = bv(bq)
450- let bO = if (!(bc))
451- then ((((((((((F + "_") + toString(by)) + "_") + bE) + "_") + toString(aK)) + "_") + aJ) + "_") + bJ)
452- else ((((((((((toString(bu) + "_") + toString(by)) + "_") + bE) + "_") + toString(aA)) + "_") + bz) + "_") + bJ)
453- let bP = StringEntry(bM, bO)
454- let bQ = [IntegerEntry(T(aZ, H), bq), StringEntry(("nft_" + bJ), bM), StringEntry(("nft_rarity_" + bJ), bN), IntegerEntry("total_nft_issued", (be + 1)), BooleanEntry(Y(aZ, H), bt), ScriptTransfer(Address(fromBase58String(aZ)), bp, aD), ScriptTransfer(Address(fromBase58String(c)), bo, aD), StringEntry(U(bJ), aZ), StringEntry(W(bJ), H)]
455- let bR = invoke(addressFromStringValue(d), "createCert", [toString(bu), bJ, aZ], nil)
456- if ((bR == bR))
457- then if (bc)
458- then (((bQ :+ bP) :+ bB) :+ bA)
459- else bP :: bQ
450+ let bN = bz(aF, aU, bA)
451+ let bB = bN._1
452+ let bC = bN._2
453+ let bD = bN._3
454+ let bO = ((((((("art_sold_" + toString(bs)) + "_of_") + toString(bk)) + "_") + H) + "_") + bb)
455+ let bP = bx(bs)
456+ let bQ = if (!(be))
457+ then ((((((((((F + "_") + toString(bA)) + "_") + bG) + "_") + toString(aM)) + "_") + aL) + "_") + bL)
458+ else ((((((((((toString(bw) + "_") + toString(bA)) + "_") + bG) + "_") + toString(aC)) + "_") + bB) + "_") + bL)
459+ let bR = StringEntry(bO, bQ)
460+ let bS = [IntegerEntry(T(bb, H), bs), StringEntry(("nft_" + bL), bO), StringEntry(("nft_rarity_" + bL), bP), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(aa(bb, H), bv), ScriptTransfer(Address(fromBase58String(bb)), br, aF), ScriptTransfer(Address(fromBase58String(c)), bq, aF), StringEntry(U(bL), bb), StringEntry(W(bL), H)]
461+ let bT = invoke(addressFromStringValue(d), "createCert", [toString(bw), bL, bb], nil)
462+ if ((bT == bT))
463+ then if (be)
464+ then (((bS :+ bR) :+ bD) :+ bC)
465+ else bR :: bS
460466 else throw("Strict value is not equal to itself.")
461467 }
462468 else throw("Strict value is not equal to itself.")
463469 }
464470
465471
466-func bS (ay,H,aZ) = {
467- let bT = aX(ay)
468- let bE = bT._1
469- let F = bT._2
470- let by = bT._3
471- let bU = ax(ay)
472- let az = bU._1
473- let aA = bU._2
474- let aD = if (!(isDefined(az.assetId)))
472+func bU (aA,H,bb) = {
473+ let bV = aZ(aA)
474+ let bG = bV._1
475+ let F = bV._2
476+ let bA = bV._3
477+ let bW = az(aA)
478+ let aB = bW._1
479+ let aC = bW._2
480+ let aF = if (!(isDefined(aB.assetId)))
475481 then throw("Only USDN is accepted!")
476- else toBase58String(value(az.assetId))
477- let bV = z(("current_bidamount_" + H))
478- let bW = valueOrElse(z(ac(aZ, H)), (aj * 2))
479- if (!(aM(aD)))
482+ else toBase58String(value(aB.assetId))
483+ let bX = z(("current_bidamount_" + H))
484+ let bY = valueOrElse(z(ae(bb, H)), (al * 2))
485+ if (!(aO(aF)))
480486 then throw("asset not accepted")
481- else if ((bW > aA))
487+ else if ((bY > aC))
482488 then throw("Bid is below min price!")
483489 else {
484- let bh = z(T(aZ, H))
485- let bi = z(M(aZ, H))
486- if ((0 >= bi))
490+ let bj = z(T(bb, H))
491+ let bk = z(M(bb, H))
492+ if ((0 >= bk))
487493 then throw("No max edition set for this artwork")
488- else if ((bh >= bi))
494+ else if ((bj >= bk))
489495 then throw("Sold out, you cannot bid")
490- else [StringEntry((((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + bE) + "_OPEN"), ((((aD + "_") + toString(aA)) + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV + 1))]
496+ else [StringEntry((((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + bG) + "_OPEN"), ((((aF + "_") + toString(aC)) + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX + 1))]
491497 }
492498 }
493499
494500
495-func bX (ay,H,aZ) = {
496- let bY = z(R(aZ, H))
497- let bZ = al(H)
498- if ((height > bY))
501+func bZ (aA,H,bb) = {
502+ let ca = z(R(bb, H))
503+ let cb = an(H)
504+ if ((height > ca))
499505 then throw("This auction is finished already!")
500506 else {
501- let ca = aX(ay)
502- let bE = ca._1
503- let F = ca._2
504- let by = ca._3
505- let cb = ax(ay)
506- let az = cb._1
507- let aA = cb._2
508- if ((bZ >= aA))
509- then throw(("Please place a bid higher than: " + toString(bZ)))
507+ let cc = aZ(aA)
508+ let bG = cc._1
509+ let F = cc._2
510+ let bA = cc._3
511+ let cd = az(aA)
512+ let aB = cd._1
513+ let aC = cd._2
514+ if ((cb >= aC))
515+ then throw(("Please place a bid higher than: " + toString(cb)))
510516 else {
511- let aD = if (!(isDefined(az.assetId)))
517+ let aF = if (!(isDefined(aB.assetId)))
512518 then throw("Only USDN is accepted!")
513- else toBase58String(value(az.assetId))
514- let bV = z(("current_bidamount_" + H))
515- let bW = valueOrElse(z(ac(aZ, H)), (aj * 2))
516- if (!(aM(aD)))
519+ else toBase58String(value(aB.assetId))
520+ let bX = z(("current_bidamount_" + H))
521+ let bY = valueOrElse(z(ae(bb, H)), (al * 2))
522+ if (!(aO(aF)))
517523 then throw("asset not accepted")
518- else if ((bW > aA))
524+ else if ((bY > aC))
519525 then throw("Bid is below min price!")
520526 else {
521- let bh = z(T(aZ, H))
522- let bi = z(M(aZ, H))
523- if ((0 >= bi))
527+ let bj = z(T(bb, H))
528+ let bk = z(M(bb, H))
529+ if ((0 >= bk))
524530 then throw("No max edition set for this artwork")
525- else if ((bh >= bi))
531+ else if ((bj >= bk))
526532 then throw("Sold out, you cannot bid")
527- else [StringEntry((((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + bE) + "_OPEN"), ((((aD + "_") + toString(aA)) + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV + 1)), StringEntry(N(H), toBase58String(ay.transactionId)), IntegerEntry(O(toBase58String(ay.transactionId)), aA)]
533+ else [StringEntry((((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + bG) + "_OPEN"), ((((aF + "_") + toString(aC)) + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX + 1)), StringEntry(N(H), toBase58String(aA.transactionId)), IntegerEntry(O(toBase58String(aA.transactionId)), aC)]
528534 }
529535 }
530536 }
531537 }
532538
533539
534-func cc (ay,H,aZ,P,ba) = {
535- let F = toBase58String(ay.caller.bytes)
536- if ((F != aZ))
540+func ce (aA,H,bb,P,bc) = {
541+ let F = toBase58String(aA.caller.bytes)
542+ if ((F != bb))
537543 then throw("You cannot do this action")
538- else bC(ay, H, aZ, P, ba, true)
544+ else bE(aA, H, bb, P, bc, true)
539545 }
540546
541547
542-func cd (H,aZ) = {
543- let bh = z(T(aZ, H))
544- let bi = z(M(aZ, H))
545- let ce = z(R(aZ, H))
546- let cf = z(Q(aZ, H))
547- let bY = (cf + height)
548- if ((height > ce))
549- then if ((bh == bi))
548+func cf (H,bb) = {
549+ let bj = z(T(bb, H))
550+ let bk = z(M(bb, H))
551+ let cg = z(R(bb, H))
552+ let ch = z(Q(bb, H))
553+ let ca = (ch + height)
554+ if ((height > cg))
555+ then if ((bj == bk))
550556 then throw("Can't restart auction, max amount sold")
551- else [IntegerEntry(R(aZ, H), bY), DeleteEntry(N(H))]
557+ else [IntegerEntry(R(bb, H), ca), DeleteEntry(N(H))]
552558 else throw("Previous auction isn't completed yet")
553559 }
554560
555561
556-func cg (ay,H,aZ,P,ba) = {
557- let bY = z(R(aZ, H))
558- let ch = v(N(H))
559- if ((height > bY))
560- then if ((P == ch))
562+func ci (aA,H,bb,P,bc) = {
563+ let ca = z(R(bb, H))
564+ let cj = v(N(H))
565+ if ((height > ca))
566+ then if ((P == cj))
561567 then {
562- let ci = bC(ay, H, aZ, P, ba, true)
563- let cj = cd(H, aZ)
564- (cj ++ ci)
568+ let ck = bE(aA, H, bb, P, bc, true)
569+ let cl = cf(H, bb)
570+ (cl ++ ck)
565571 }
566572 else throw("This is not the winning bid!")
567573 else throw("This auction is not yet finished!")
568574 }
569575
570576
571-func ck (ay,H,aZ,P) = {
572- let cl = aX(ay)
573- let bE = cl._1
574- let F = cl._2
575- let by = cl._3
576- let bV = z(("current_bidamount_" + H))
577- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + P)
578- let aT = w((aS + "_OPEN"), "Bid not found")
579- let aU = split(aT, "_")
580- let aD = aQ(aU[0])
581- let cm = "CANCELED"
582-[DeleteEntry((aS + "_OPEN")), StringEntry(((aS + "_") + cm), ((aT + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aU[1]), aD)]
577+func cm (aA,H,bb,P) = {
578+ let cn = aZ(aA)
579+ let bG = cn._1
580+ let F = cn._2
581+ let bA = cn._3
582+ let bX = z(("current_bidamount_" + H))
583+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + P)
584+ let aV = w((aU + "_OPEN"), "Bid not found")
585+ let aW = split(aV, "_")
586+ let aF = aS(aW[0])
587+ let co = "CANCELED"
588+[DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + co), ((aV + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aW[1]), aF)]
583589 }
584590
585591
586-func cn (ay,H,aZ,P) = {
587- let cl = aX(ay)
588- let bE = cl._1
589- let F = cl._2
590- let by = cl._3
591- let bV = z(("current_bidamount_" + H))
592- let aS = ((((((("bid_" + H) + "_") + aZ) + "_") + F) + "_") + P)
593- let aT = w((aS + "_OPEN"), "Bid not found")
594- let aU = split(aT, "_")
595- let aD = aQ(aU[0])
596- let cm = "CANCELED"
597- let aV = parseIntValue(aU[1])
598- let ch = v(N(H))
599- if ((P == ch))
592+func cp (cq,cr,F,H) = if ((cq != ""))
593+ then throw("Collections can not be empty!")
594+ else if ((cr == ""))
595+ then [StringEntry(Y(F, H), cq)]
596+ else [StringEntry(Y(F, H), cq), StringEntry(Z(F, H), cr)]
597+
598+
599+func cs (aA,H,bb,P) = {
600+ let cn = aZ(aA)
601+ let bG = cn._1
602+ let F = cn._2
603+ let bA = cn._3
604+ let bX = z(("current_bidamount_" + H))
605+ let aU = ((((((("bid_" + H) + "_") + bb) + "_") + F) + "_") + P)
606+ let aV = w((aU + "_OPEN"), "Bid not found")
607+ let aW = split(aV, "_")
608+ let aF = aS(aW[0])
609+ let co = "CANCELED"
610+ let aX = parseIntValue(aW[1])
611+ let cj = v(N(H))
612+ if ((P == cj))
600613 then throw("You can't cancel the highest bid!")
601- else [DeleteEntry((aS + "_OPEN")), StringEntry(((aS + "_") + cm), ((aT + "_") + toString(by))), IntegerEntry(("current_bidamount_" + H), (bV - 1)), ScriptTransfer(Address(fromBase58String(F)), aV, aD)]
614+ else [DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + co), ((aV + "_") + toString(bA))), IntegerEntry(("current_bidamount_" + H), (bX - 1)), ScriptTransfer(Address(fromBase58String(F)), aX, aF)]
602615 }
603616
604617
605-@Callable(ay)
606-func mintNft (be,bs,bu) = if ((ay.caller == this))
618+@Callable(aA)
619+func mintNft (bg,bu,bw) = if ((aA.caller == this))
607620 then {
608- let co = Address(fromBase58String(bu))
609- let cp = Issue(("SCONEX_" + toString((be + 1))), bs, 1, 0, false)
610- let bJ = calculateAssetId(cp)
611- $Tuple2([cp, ScriptTransfer(co, 1, bJ)], toBase58String(bJ))
621+ let ct = Address(fromBase58String(bw))
622+ let cu = Issue(("SCONEX_" + toString((bg + 1))), bu, 1, 0, false)
623+ let bL = calculateAssetId(cu)
624+ $Tuple2([cu, ScriptTransfer(ct, 1, bL)], toBase58String(bL))
612625 }
613626 else throw("Only the dApp can mint NFT's")
614627
615628
616629
617-@Callable(ay)
618-func addArtwork (ah,at,au,av,cq,as,cr,cs,ct,cu) = {
619- let cv = aX(ay)
620- let H = cv._1
621- let F = cv._2
622- let by = cv._3
623- if (containsElement(i, cq))
630+@Callable(aA)
631+func updateCollection (H,cq,cr) = {
632+ let F = toBase58String(aA.caller.bytes)
633+ let cv = aa(H, F)
634+ if (getBooleanValue(cv))
635+ then throw("Can not update collection from artwork for sale")
636+ else cp(cq, cr, F, H)
637+ }
638+
639+
640+
641+@Callable(aA)
642+func addArtwork (aj,av,aw,ax,cw,au,cx,cy,cq,cr) = {
643+ let cz = aZ(aA)
644+ let H = cz._1
645+ let F = cz._2
646+ let bA = cz._3
647+ if (containsElement(i, cw))
624648 then {
625- let cw = ar(F, as, at, au, av)
626- if ((cw != ""))
649+ let cA = at(F, au, av, aw, ax)
650+ if ((cA != ""))
627651 then throw("Something went wrong!")
628652 else {
629- let cx = aB(ay)
630- let aA = cx._1
631- let aD = cx._2
632- if (!(isDefined(aA)))
653+ let cB = aD(aA)
654+ let aC = cB._1
655+ let aF = cB._2
656+ if (!(isDefined(aC)))
633657 then throw("Something went wrong")
634658 else {
635- let cy = if (containsElement(j, cq))
636- then [StringEntry(L(F, H), cs)]
659+ let cC = if (containsElement(j, cw))
660+ then [StringEntry(L(F, H), cy)]
637661 else nil
638- let cz = v(ai(ah, F))
639- if ((cz != ""))
662+ let cD = cp(cq, cr, F, H)
663+ let cE = v(ak(aj, F))
664+ if ((cE != ""))
640665 then throw("You already added it")
641666 else {
642- let cA = v(ag(ah))
643- if ((cA != ""))
667+ let cF = v(ai(aj))
668+ if ((cF != ""))
644669 then throw("This hash is already registered")
645- else (cy ++ [StringEntry(ag(ah), F), StringEntry(ai(ah, F), H), IntegerEntry(G(F, H), by), StringEntry(I(F, H), at), StringEntry(J(F, H), au), StringEntry(K(F, H), as), StringEntry(ab(F, H), cq), StringEntry(aa(F, H), av), IntegerEntry(M(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(Y(F, H), false), StringEntry(ae(F, H), ah), StringEntry(Z(F, H), cr), ScriptTransfer(Address(fromBase58String(c)), aA, aD)])
670+ else ((cC ++ cD) ++ [StringEntry(ai(aj), F), StringEntry(ak(aj, F), H), IntegerEntry(G(F, H), bA), StringEntry(I(F, H), av), StringEntry(J(F, H), aw), StringEntry(K(F, H), au), StringEntry(ad(F, H), cw), StringEntry(ac(F, H), ax), IntegerEntry(M(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(aa(F, H), false), StringEntry(ag(F, H), aj), StringEntry(ab(F, H), cx), ScriptTransfer(Address(fromBase58String(c)), aC, aF)])
646671 }
647672 }
648673 }
649674 }
650675 else throw("Unknown type")
651676 }
652677
653678
654679
655-@Callable(ay)
656-func sellArtwork (H,aO,cB,aD,cC,cf,cD) = {
657- let cE = aX(ay)
658- let bE = cE._1
659- let F = cE._2
660- let bf = v(I(F, H))
661- if ((0 > cD))
680+@Callable(aA)
681+func sellArtwork (H,aQ,cG,aF,cH,ch,cI) = {
682+ let cJ = aZ(aA)
683+ let bG = cJ._1
684+ let F = cJ._2
685+ let bh = v(I(F, H))
686+ if ((0 > cI))
662687 then throw("Royalty percentage should be above 0")
663- else if ((cD > 85))
688+ else if ((cI > 85))
664689 then throw("Royalty percentage should be below 85")
665- else if (!(containsElement([q, r, s], cC)))
690+ else if (!(containsElement([q, r, s], cH)))
666691 then throw("We don't know this auction type")
667- else if ((bf == ""))
692+ else if ((bh == ""))
668693 then throw("This art doesn't match your account")
669694 else {
670- let bV = z(("current_bidamount_" + H))
671- if (!(aM(aD)))
695+ let bX = z(("current_bidamount_" + H))
696+ if (!(aO(aF)))
672697 then throw("Something went wrong!")
673- else if (!(aN(aD, aO)))
698+ else if (!(aP(aF, aQ)))
674699 then throw("Something went wrong!")
675700 else {
676- let aw = ap(F)
677- if ((aw != ""))
678- then throw(aw)
701+ let ay = ar(F)
702+ if ((ay != ""))
703+ then throw(ay)
679704 else {
680- let bh = z(T(F, H))
681- let bi = z(M(F, H))
682- if ((cB > 10000))
705+ let bj = z(T(F, H))
706+ let bk = z(M(F, H))
707+ if ((cG > 10000))
683708 then throw("10000 editions max per artwork")
684- else if (if ((bh != 0))
685- then (bh == bi)
709+ else if (if ((bj != 0))
710+ then (bj == bk)
686711 else false)
687712 then throw("Max edition reached.")
688- else if (if ((bh > 0))
689- then (bi != cB)
713+ else if (if ((bj > 0))
714+ then (bk != cG)
690715 else false)
691716 then throw("Cannot change maximum issuable anymore")
692- else if (if ((bV > 0))
693- then (bi != cB)
717+ else if (if ((bX > 0))
718+ then (bk != cG)
694719 else false)
695720 then throw("Cannot change maximum issuable with active orders")
696721 else {
697- let bt = if (if ((aO > 0))
698- then (cB > 0)
722+ let bv = if (if ((aQ > 0))
723+ then (cG > 0)
699724 else false)
700725 then true
701726 else false
702- let bY = (cf + height)
703-[BooleanEntry(Y(F, H), bt), IntegerEntry(ac(F, H), aO), IntegerEntry(M(F, H), cB), IntegerEntry(Q(F, H), cf), IntegerEntry(R(F, H), bY), StringEntry(ad(F, H), aD), StringEntry(S(F, H), cC), IntegerEntry(X(F, H), cD)]
727+ let ca = (ch + height)
728+[BooleanEntry(aa(F, H), bv), IntegerEntry(ae(F, H), aQ), IntegerEntry(M(F, H), cG), IntegerEntry(Q(F, H), ch), IntegerEntry(R(F, H), ca), StringEntry(af(F, H), aF), StringEntry(S(F, H), cH), IntegerEntry(X(F, H), cI)]
704729 }
705730 }
706731 }
707732 }
708733 }
709734
710735
711736
712-@Callable(ay)
713-func buyArtwork (H,aZ) = {
714- let cC = v(S(aZ, H))
715- if ((cC == s))
716- then bC(ay, H, aZ, "", "", false)
737+@Callable(aA)
738+func buyArtwork (H,bb) = {
739+ let cH = v(S(bb, H))
740+ if ((cH == s))
741+ then bE(aA, H, bb, "", "", false)
717742 else throw("Direct buy only allowed when no auction type is set!")
718743 }
719744
720745
721746
722-@Callable(ay)
723-func updateTags (cF,H,av) = {
724- let F = toString(addressFromPublicKey(ay.callerPublicKey))
747+@Callable(aA)
748+func updateTags (cK,H,ax) = {
749+ let F = toString(addressFromPublicKey(aA.callerPublicKey))
725750 if (containsElement(h, F))
726- then if ((size(split(av, ",")) > 5))
751+ then if ((size(split(ax, ",")) > 5))
727752 then throw("5 tags max.")
728753 else {
729- let cG = w(aa(cF, H), "No tags created with this key, so can't update!")
730- if ((av == cG))
754+ let cL = w(ac(cK, H), "No tags created with this key, so can't update!")
755+ if ((ax == cL))
731756 then throw("Tags are the same as old tags!")
732- else [StringEntry(aa(cF, H), av)]
757+ else [StringEntry(ac(cK, H), ax)]
733758 }
734759 else throw("no")
735760 }
736761
737762
738763
739-@Callable(ay)
740-func deleteEntry (cH) = {
741- let F = toString(addressFromPublicKey(ay.callerPublicKey))
764+@Callable(aA)
765+func deleteEntry (cM) = {
766+ let F = toString(addressFromPublicKey(aA.callerPublicKey))
742767 if (containsElement(h, F))
743- then [DeleteEntry(cH)]
768+ then [DeleteEntry(cM)]
744769 else throw("no")
745770 }
746771
747772
748773
749-@Callable(ay)
750-func setBid (H,aZ) = {
751- let cC = v(S(aZ, H))
752- if ((cC == q))
753- then bS(ay, H, aZ)
754- else if ((cC == r))
755- then bX(ay, H, aZ)
756- else throw((("Unknown auction type :" + cC) + ", please contact the admins"))
774+@Callable(aA)
775+func setBid (H,bb) = {
776+ let cH = v(S(bb, H))
777+ if ((cH == q))
778+ then bU(aA, H, bb)
779+ else if ((cH == r))
780+ then bZ(aA, H, bb)
781+ else throw((("Unknown auction type :" + cH) + ", please contact the admins"))
757782 }
758783
759784
760785
761-@Callable(ay)
762-func acceptBid (H,aZ,P,ba) = {
763- let cC = v(S(aZ, H))
764- if ((cC == q))
765- then cc(ay, H, aZ, P, ba)
766- else if ((cC == r))
767- then cg(ay, H, aZ, P, ba)
768- else throw((("Unknown auction type :" + cC) + ", please contact the admins"))
786+@Callable(aA)
787+func acceptBid (H,bb,P,bc) = {
788+ let cH = v(S(bb, H))
789+ if ((cH == q))
790+ then ce(aA, H, bb, P, bc)
791+ else if ((cH == r))
792+ then ci(aA, H, bb, P, bc)
793+ else throw((("Unknown auction type :" + cH) + ", please contact the admins"))
769794 }
770795
771796
772797
773-@Callable(ay)
774-func cancelBid (H,aZ,P) = {
775- let cC = v(S(aZ, H))
776- if ((cC == q))
777- then ck(ay, H, aZ, P)
778- else cn(ay, H, aZ, P)
798+@Callable(aA)
799+func cancelBid (H,bb,P) = {
800+ let cH = v(S(bb, H))
801+ if ((cH == q))
802+ then cm(aA, H, bb, P)
803+ else cs(aA, H, bb, P)
779804 }
780805
781806

github/deemru/w8io/026f985 
237.16 ms