tx · Eh8Ym5XHkV4nUmudSuXA8424VSn3aRWVbMGnP6RNzfQx

3MyJLBd4WWTxpvMiist7PboYgjipbCBR8T3:  -0.05000000 Waves

2022.03.01 04:24 [1944234] smart account 3MyJLBd4WWTxpvMiist7PboYgjipbCBR8T3 > SELF 0.00000000 Waves

{ "type": 13, "id": "Eh8Ym5XHkV4nUmudSuXA8424VSn3aRWVbMGnP6RNzfQx", "fee": 5000000, "feeAssetId": null, "timestamp": 1646097865650, "version": 2, "chainId": 84, "sender": "3MyJLBd4WWTxpvMiist7PboYgjipbCBR8T3", "senderPublicKey": "JbbExtWSdo3zyMwPZhGn1hPkfJaL2hoP1C7RxB3wt4H", "proofs": [ "3A7TMMJm5DBosv6hWPSaKZWmr9av1Me2JSY1JNNfxTZNjUMZQpidrc6g5d4xVP9Lwf5i6bfTqpgHdovov3gs4Ry2" ], "script": "base64:AAIFAAAAAAAAAC4IAhIDCgEIEgQKAggIEgQKAgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgQKAggIAAAAGwAAAAATTkZUSXNzdWVyZmVlUGVyY2VudAAAAAAAAAAAAwAAAAANc2NvbmV4RGFwcEtleQIAAAAKc2NvbmV4RGFwcAAAAAAJb3JhY2xlS2V5AgAAAAlvcmFjbGVLZXkBAAAABmdldFN0cgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAAAAAAABm9yYWNsZQkBAAAABmdldFN0cgAAAAEFAAAACW9yYWNsZUtleQAAAAAJb3JhY2xlRmVlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAGb3JhY2xlAgAAACtDb2xsZWN0aW9ucyBkYXBwIGRvZXNudCBoYXZlIG9yYWNsZSBkZWZpbmVkAAAAAApzY29uZXhEYXBwCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAlvcmFjbGVGZWUFAAAADXNjb25leERhcHBLZXkAAAAAD2NvbGxlY3Rpb25zRGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAPY29sbGVjdGlvbnNEYXBwAgAAABhjb2xsZWN0aW9uRGFwcCBub3QgZm91bmQAAAAAC2ZlZVJlY2VpdmVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAJb3JhY2xlRmVlAgAAAAtmZWVSZWNlaXZlcgIAAAAVZmVlUmVjZWl2ZXIgbm90IGZvdW5kAAAAAAhjZXJ0RGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAIY2VydERhcHACAAAAEmNlcnREYXBwIG5vdCBmb3VuZAAAAAAIdXNlckRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAA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", "height": 1944234, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: YRkdjzXh6nyceJz1JsuXfnoMbEnAzwhSm4fYDoQ1aGj Next: none Diff:
OldNewDifferences
160160
161161
162162 @Callable(N)
163-func initAuction (P,Q) = {
163+func transferNft (P,Q) = if ((N.caller == this))
164+ then [ScriptTransfer(addressFromStringValue(Q), 1, fromBase58String(P))]
165+ else throw("Only the dApp can transfer NFT's")
166+
167+
168+
169+@Callable(N)
170+func initAuction (R,S) = {
164171 let u = toBase58String(N.transactionId)
165172 if ((size(N.payments) == 0))
166173 then throw("No payment attached")
167174 else if ((size(N.payments) >= 2))
168175 then throw("Too many payments attached")
169176 else {
170- let R = value(N.payments[0])
171- let E = value(R.assetId)
172- let S = D(E)
173- if ((S == ""))
177+ let T = value(N.payments[0])
178+ let E = value(T.assetId)
179+ let U = D(E)
180+ if ((U == ""))
174181 then throw("You can only sell an NFT created on SCONE Marketplace")
175- else if (!(containsElement([p, r], Q)))
182+ else if (!(containsElement([p, r], S)))
176183 then throw("We don't know this auction type")
177- else [StringEntry((("auction_" + u) + "_status"), "open"), StringEntry((("auction_" + toBase58String(E)) + "_last"), u), StringEntry((("auction_" + u) + "_assetName"), S), StringEntry((("auction_" + u) + "_assetId"), toBase58String(E)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(N.caller)), IntegerEntry((("auction_" + u) + "_startPrice"), P), StringEntry(t(u), Q), StringEntry((((("address_" + toString(N.caller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(E))]
184+ else [StringEntry((("auction_" + u) + "_status"), "open"), StringEntry((("auction_" + toBase58String(E)) + "_last"), u), StringEntry((("auction_" + u) + "_assetName"), U), StringEntry((("auction_" + u) + "_assetId"), toBase58String(E)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(N.caller)), IntegerEntry((("auction_" + u) + "_startPrice"), R), StringEntry(t(u), S), StringEntry((((("address_" + toString(N.caller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(E))]
178185 }
179186 }
180187
182189
183190 @Callable(N)
184191 func cancelAuction (u) = {
185- let T = C((("auction_" + u) + "_owner"))
186- if ((toString(N.caller) != T))
192+ let V = C((("auction_" + u) + "_owner"))
193+ if ((toString(N.caller) != V))
187194 then throw("Only allowed to auction owner")
188195 else if ((C((("auction_" + u) + "_status")) != "open"))
189196 then throw("auction is close")
190- else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))]
197+ else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))]
191198 }
192199
193200
194201
195202 @Callable(N)
196203 func placeBid (u) = {
197- let R = value(N.payments[0])
198- let U = R.amount
199- let V = toBase58String(N.transactionId)
204+ let T = value(N.payments[0])
205+ let W = T.amount
206+ let X = toBase58String(N.transactionId)
200207 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
201- let W = if (!(isDefined(R.assetId)))
208+ let Y = if (!(isDefined(T.assetId)))
202209 then throw("Only USDN is accepted!")
203- else toBase58String(value(R.assetId))
204- if (!(M(W)))
210+ else toBase58String(value(T.assetId))
211+ if (!(M(Y)))
205212 then throw("Auction does only support USDN payments")
206213 else {
207- let X = A((("auction_" + u) + "_startPrice"))
208- if ((X > U))
209- then throw(("The minimal initial price is set as " + toString(X)))
214+ let Z = A((("auction_" + u) + "_startPrice"))
215+ if ((Z > W))
216+ then throw(("The minimal initial price is set as " + toString(Z)))
210217 else {
211- let Q = s(t(u))
212- if ((Q == p))
213- then [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(U)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + V) + "_amount"), U), StringEntry(((((("address_" + toString(N.caller)) + "_auction_") + u) + "_bid_") + V), E), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "open")]
218+ let S = s(t(u))
219+ if ((S == p))
220+ then [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + X) + "_amount"), W), StringEntry(((((("address_" + toString(N.caller)) + "_auction_") + u) + "_bid_") + X), E), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "open")]
214221 else throw("Not a BidType auction!")
215222 }
216223 }
220227
221228 @Callable(N)
222229 func directBuy (u) = {
223- let R = value(N.payments[0])
224- let U = R.amount
225- let V = toBase58String(N.transactionId)
230+ let T = value(N.payments[0])
231+ let W = T.amount
232+ let X = toBase58String(N.transactionId)
226233 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
227- let T = C((("auction_" + u) + "_owner"))
228- let Y = U
229- let Z = toString(N.caller)
230- let W = if (!(isDefined(R.assetId)))
234+ let V = C((("auction_" + u) + "_owner"))
235+ let aa = W
236+ let ab = toString(N.caller)
237+ let Y = if (!(isDefined(T.assetId)))
231238 then throw("Only USDN is accepted!")
232- else toBase58String(value(R.assetId))
233- if (!(M(W)))
239+ else toBase58String(value(T.assetId))
240+ if (!(M(Y)))
234241 then throw("Auction does only support USDN payments")
235242 else {
236- let X = A((("auction_" + u) + "_startPrice"))
237- if ((X != U))
238- then throw(("The exact price is set as " + toString(X)))
243+ let Z = A((("auction_" + u) + "_startPrice"))
244+ if ((Z != W))
245+ then throw(("The exact price is set as " + toString(Z)))
239246 else {
240- let Q = s(t(u))
241- if ((Q == r))
247+ let S = s(t(u))
248+ if ((S == r))
242249 then {
243- let aa = A((E + "_recordPrice"))
244- let ab = max([aa, Y])
250+ let ac = A((E + "_recordPrice"))
251+ let ad = max([ac, aa])
245252 let H = G(E)
246253 let x = I(E)
247- let ac = J(H, x)
254+ let ae = J(H, x)
248255 if ((H == ""))
249256 then {
250- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(T), fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
251- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, l], nil)
252- if ((ae == ae))
253- then ad
257+ let af = invoke(this, "transferNft", [E, ab], nil)
258+ if ((af == af))
259+ then {
260+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(V), fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o)]
261+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, l], nil)
262+ if ((ah == ah))
263+ then ag
264+ else throw("Strict value is not equal to itself.")
265+ }
254266 else throw("Strict value is not equal to itself.")
255267 }
256268 else {
257- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(T), fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
258- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, H], nil)
259- if ((ae == ae))
260- then ad
269+ let af = invoke(this, "transferNft", [E, ab], nil)
270+ if ((af == af))
271+ then {
272+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(V), fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o)]
273+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, H], nil)
274+ if ((ah == ah))
275+ then ag
276+ else throw("Strict value is not equal to itself.")
277+ }
261278 else throw("Strict value is not equal to itself.")
262279 }
263280 }
269286
270287
271288 @Callable(N)
272-func cancelBid (u,V) = {
289+func cancelBid (u,X) = {
273290 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
274- let Z = C((((("auction_" + u) + "_bid_") + V) + "_author"))
275- let Y = A((((("auction_" + u) + "_bid_") + V) + "_amount"))
276- if (if ((toString(N.caller) != Z))
291+ let ab = C((((("auction_" + u) + "_bid_") + X) + "_author"))
292+ let aa = A((((("auction_" + u) + "_bid_") + X) + "_amount"))
293+ if (if ((toString(N.caller) != ab))
277294 then (N.caller != this)
278295 else false)
279296 then throw("Only allowed to the bid author or admin")
280- else if ((C((((("auction_" + u) + "_bid_") + V) + "_status")) != "open"))
297+ else if ((C((((("auction_" + u) + "_bid_") + X) + "_status")) != "open"))
281298 then throw("bid is not open")
282- else [StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "cancelled"), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), ScriptTransfer(Address(fromBase58String(Z)), Y, o)]
299+ else [StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "cancelled"), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), ScriptTransfer(Address(fromBase58String(ab)), aa, o)]
283300 }
284301
285302
286303
287304 @Callable(N)
288-func acceptBid (u,V) = {
289- let T = C((("auction_" + u) + "_owner"))
290- let Z = C((((("auction_" + u) + "_bid_") + V) + "_author"))
291- let Y = A((((("auction_" + u) + "_bid_") + V) + "_amount"))
292- let af = C((((("auction_" + u) + "_bid_") + V) + "_status"))
305+func acceptBid (u,X) = {
306+ let V = C((("auction_" + u) + "_owner"))
307+ let ab = C((((("auction_" + u) + "_bid_") + X) + "_author"))
308+ let aa = A((((("auction_" + u) + "_bid_") + X) + "_amount"))
309+ let ai = C((((("auction_" + u) + "_bid_") + X) + "_status"))
293310 let E = C((("auction_" + u) + "_assetId"))
294- if ((toString(N.caller) != T))
311+ if ((toString(N.caller) != V))
295312 then throw("Only allowed to auction owner")
296- else if ((af != "open"))
313+ else if ((ai != "open"))
297314 then throw("Bid was cancelled and cannot be accepted")
298315 else {
299- let aa = A((E + "_recordPrice"))
300- let ab = max([aa, Y])
316+ let ac = A((E + "_recordPrice"))
317+ let ad = max([ac, aa])
301318 let H = G(E)
302319 let x = I(E)
303- let ac = J(H, x)
320+ let ae = J(H, x)
304321 if ((H == ""))
305322 then {
306- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
307- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, l], nil)
308- if ((ae == ae))
309- then ad
323+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o), ScriptTransfer(addressFromStringValue(ab), 1, fromBase58String(E))]
324+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, l], nil)
325+ if ((ah == ah))
326+ then ag
310327 else throw("Strict value is not equal to itself.")
311328 }
312329 else {
313- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
314- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, H], nil)
315- if ((ae == ae))
316- then ad
330+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o), ScriptTransfer(addressFromStringValue(ab), 1, fromBase58String(E))]
331+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, H], nil)
332+ if ((ah == ah))
333+ then ag
317334 else throw("Strict value is not equal to itself.")
318335 }
319336 }
320337 }
321338
322339
323-@Verifier(ag)
324-func ah () = sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
340+@Verifier(aj)
341+func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey)
325342
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 3
55
66 let b = "sconexDapp"
77
88 let c = "oracleKey"
99
1010 func d (e) = {
1111 let f = getString(this, e)
1212 if ($isInstanceOf(f, "String"))
1313 then {
1414 let g = f
1515 g
1616 }
1717 else ""
1818 }
1919
2020
2121 let h = d(c)
2222
2323 let i = valueOrErrorMessage(addressFromString(h), "Collections dapp doesnt have oracle defined")
2424
2525 let j = getStringValue(i, b)
2626
2727 let k = valueOrErrorMessage(getString(i, "collectionsDapp"), "collectionDapp not found")
2828
2929 let l = valueOrErrorMessage(getString(i, "feeReceiver"), "feeReceiver not found")
3030
3131 let m = valueOrErrorMessage(getString(i, "certDapp"), "certDapp not found")
3232
3333 let n = value(addressFromString(valueOrErrorMessage(getString(i, "userDapp"), "userdapp not found")))
3434
3535 let o = fromBase58String(getStringValue(i, "USDNAssetId"))
3636
3737 let p = "BIDTYPE"
3838
3939 let q = "TRADITIONAL"
4040
4141 let r = "DIRECT"
4242
4343 func s (e) = valueOrElse(getString(this, e), "")
4444
4545
4646 func t (u) = (("auction_" + u) + "_actionType")
4747
4848
4949 func v (w,x) = ((("art_royalty_" + x) + "_") + w)
5050
5151
5252 func y (e) = {
5353 let f = getString(addressFromStringValue(j), e)
5454 if ($isInstanceOf(f, "String"))
5555 then {
5656 let g = f
5757 g
5858 }
5959 else ""
6060 }
6161
6262
6363 func z (e) = {
6464 let f = getInteger(addressFromStringValue(j), e)
6565 if ($isInstanceOf(f, "Int"))
6666 then {
6767 let g = f
6868 g
6969 }
7070 else 0
7171 }
7272
7373
7474 func A (e) = {
7575 let B = {
7676 let f = getInteger(this, e)
7777 if ($isInstanceOf(f, "Int"))
7878 then {
7979 let g = f
8080 g
8181 }
8282 else 0
8383 }
8484 B
8585 }
8686
8787
8888 func C (e) = {
8989 let B = {
9090 let f = getString(this, e)
9191 if ($isInstanceOf(f, "String"))
9292 then {
9393 let g = f
9494 g
9595 }
9696 else ""
9797 }
9898 B
9999 }
100100
101101
102102 func D (E) = {
103103 let F = value(assetInfo(E))
104104 if ((F.issuer == addressFromStringValue(j)))
105105 then "true"
106106 else ""
107107 }
108108
109109
110110 func G (E) = {
111111 let H = {
112112 let f = getString(addressFromStringValue(j), ("nft_issued_" + E))
113113 if ($isInstanceOf(f, "String"))
114114 then {
115115 let g = f
116116 g
117117 }
118118 else ""
119119 }
120120 H
121121 }
122122
123123
124124 func I (E) = {
125125 let H = {
126126 let f = getString(addressFromStringValue(j), ("nft_artId_" + E))
127127 if ($isInstanceOf(f, "String"))
128128 then {
129129 let g = f
130130 g
131131 }
132132 else ""
133133 }
134134 H
135135 }
136136
137137
138138 func J (K,x) = {
139139 let L = z(v(K, x))
140140 if (if ((L > 0))
141141 then (85 >= L)
142142 else false)
143143 then throw("Artist royalty incorrect")
144144 else L
145145 }
146146
147147
148148 func M (E) = if ((E != toBase58String(o)))
149149 then throw("Only USDN accepted")
150150 else true
151151
152152
153153 @Callable(N)
154154 func initDapp (O) = if ((N.caller != this))
155155 then throw("You cannot do this action")
156156 else if ((h != ""))
157157 then throw("oracle already set, you can't override!")
158158 else [StringEntry(c, O)]
159159
160160
161161
162162 @Callable(N)
163-func initAuction (P,Q) = {
163+func transferNft (P,Q) = if ((N.caller == this))
164+ then [ScriptTransfer(addressFromStringValue(Q), 1, fromBase58String(P))]
165+ else throw("Only the dApp can transfer NFT's")
166+
167+
168+
169+@Callable(N)
170+func initAuction (R,S) = {
164171 let u = toBase58String(N.transactionId)
165172 if ((size(N.payments) == 0))
166173 then throw("No payment attached")
167174 else if ((size(N.payments) >= 2))
168175 then throw("Too many payments attached")
169176 else {
170- let R = value(N.payments[0])
171- let E = value(R.assetId)
172- let S = D(E)
173- if ((S == ""))
177+ let T = value(N.payments[0])
178+ let E = value(T.assetId)
179+ let U = D(E)
180+ if ((U == ""))
174181 then throw("You can only sell an NFT created on SCONE Marketplace")
175- else if (!(containsElement([p, r], Q)))
182+ else if (!(containsElement([p, r], S)))
176183 then throw("We don't know this auction type")
177- else [StringEntry((("auction_" + u) + "_status"), "open"), StringEntry((("auction_" + toBase58String(E)) + "_last"), u), StringEntry((("auction_" + u) + "_assetName"), S), StringEntry((("auction_" + u) + "_assetId"), toBase58String(E)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(N.caller)), IntegerEntry((("auction_" + u) + "_startPrice"), P), StringEntry(t(u), Q), StringEntry((((("address_" + toString(N.caller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(E))]
184+ else [StringEntry((("auction_" + u) + "_status"), "open"), StringEntry((("auction_" + toBase58String(E)) + "_last"), u), StringEntry((("auction_" + u) + "_assetName"), U), StringEntry((("auction_" + u) + "_assetId"), toBase58String(E)), IntegerEntry((("auction_" + u) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + u) + "_owner"), toString(N.caller)), IntegerEntry((("auction_" + u) + "_startPrice"), R), StringEntry(t(u), S), StringEntry((((("address_" + toString(N.caller)) + "_auction_") + u) + "_lockedNFT"), toBase58String(E))]
178185 }
179186 }
180187
181188
182189
183190 @Callable(N)
184191 func cancelAuction (u) = {
185- let T = C((("auction_" + u) + "_owner"))
186- if ((toString(N.caller) != T))
192+ let V = C((("auction_" + u) + "_owner"))
193+ if ((toString(N.caller) != V))
187194 then throw("Only allowed to auction owner")
188195 else if ((C((("auction_" + u) + "_status")) != "open"))
189196 then throw("auction is close")
190- else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))]
197+ else [StringEntry((("auction_" + u) + "_status"), "cancelled"), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, 1, fromBase58String(getStringValue(this, (("auction_" + u) + "_assetId"))))]
191198 }
192199
193200
194201
195202 @Callable(N)
196203 func placeBid (u) = {
197- let R = value(N.payments[0])
198- let U = R.amount
199- let V = toBase58String(N.transactionId)
204+ let T = value(N.payments[0])
205+ let W = T.amount
206+ let X = toBase58String(N.transactionId)
200207 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
201- let W = if (!(isDefined(R.assetId)))
208+ let Y = if (!(isDefined(T.assetId)))
202209 then throw("Only USDN is accepted!")
203- else toBase58String(value(R.assetId))
204- if (!(M(W)))
210+ else toBase58String(value(T.assetId))
211+ if (!(M(Y)))
205212 then throw("Auction does only support USDN payments")
206213 else {
207- let X = A((("auction_" + u) + "_startPrice"))
208- if ((X > U))
209- then throw(("The minimal initial price is set as " + toString(X)))
214+ let Z = A((("auction_" + u) + "_startPrice"))
215+ if ((Z > W))
216+ then throw(("The minimal initial price is set as " + toString(Z)))
210217 else {
211- let Q = s(t(u))
212- if ((Q == p))
213- then [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(U)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + V) + "_amount"), U), StringEntry(((((("address_" + toString(N.caller)) + "_auction_") + u) + "_bid_") + V), E), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "open")]
218+ let S = s(t(u))
219+ if ((S == p))
220+ then [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + u) + "_bid_") + X) + "_amount"), W), StringEntry(((((("address_" + toString(N.caller)) + "_auction_") + u) + "_bid_") + X), E), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "open")]
214221 else throw("Not a BidType auction!")
215222 }
216223 }
217224 }
218225
219226
220227
221228 @Callable(N)
222229 func directBuy (u) = {
223- let R = value(N.payments[0])
224- let U = R.amount
225- let V = toBase58String(N.transactionId)
230+ let T = value(N.payments[0])
231+ let W = T.amount
232+ let X = toBase58String(N.transactionId)
226233 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
227- let T = C((("auction_" + u) + "_owner"))
228- let Y = U
229- let Z = toString(N.caller)
230- let W = if (!(isDefined(R.assetId)))
234+ let V = C((("auction_" + u) + "_owner"))
235+ let aa = W
236+ let ab = toString(N.caller)
237+ let Y = if (!(isDefined(T.assetId)))
231238 then throw("Only USDN is accepted!")
232- else toBase58String(value(R.assetId))
233- if (!(M(W)))
239+ else toBase58String(value(T.assetId))
240+ if (!(M(Y)))
234241 then throw("Auction does only support USDN payments")
235242 else {
236- let X = A((("auction_" + u) + "_startPrice"))
237- if ((X != U))
238- then throw(("The exact price is set as " + toString(X)))
243+ let Z = A((("auction_" + u) + "_startPrice"))
244+ if ((Z != W))
245+ then throw(("The exact price is set as " + toString(Z)))
239246 else {
240- let Q = s(t(u))
241- if ((Q == r))
247+ let S = s(t(u))
248+ if ((S == r))
242249 then {
243- let aa = A((E + "_recordPrice"))
244- let ab = max([aa, Y])
250+ let ac = A((E + "_recordPrice"))
251+ let ad = max([ac, aa])
245252 let H = G(E)
246253 let x = I(E)
247- let ac = J(H, x)
254+ let ae = J(H, x)
248255 if ((H == ""))
249256 then {
250- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(T), fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
251- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, l], nil)
252- if ((ae == ae))
253- then ad
257+ let af = invoke(this, "transferNft", [E, ab], nil)
258+ if ((af == af))
259+ then {
260+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(V), fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o)]
261+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, l], nil)
262+ if ((ah == ah))
263+ then ag
264+ else throw("Strict value is not equal to itself.")
265+ }
254266 else throw("Strict value is not equal to itself.")
255267 }
256268 else {
257- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(T), fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
258- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, H], nil)
259- if ((ae == ae))
260- then ad
269+ let af = invoke(this, "transferNft", [E, ab], nil)
270+ if ((af == af))
271+ then {
272+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_author"), toString(N.caller)), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(addressFromStringValue(V), fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o)]
273+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, H], nil)
274+ if ((ah == ah))
275+ then ag
276+ else throw("Strict value is not equal to itself.")
277+ }
261278 else throw("Strict value is not equal to itself.")
262279 }
263280 }
264281 else throw("Not a directBuy auction!")
265282 }
266283 }
267284 }
268285
269286
270287
271288 @Callable(N)
272-func cancelBid (u,V) = {
289+func cancelBid (u,X) = {
273290 let E = getStringValue(this, (("auction_" + u) + "_assetId"))
274- let Z = C((((("auction_" + u) + "_bid_") + V) + "_author"))
275- let Y = A((((("auction_" + u) + "_bid_") + V) + "_amount"))
276- if (if ((toString(N.caller) != Z))
291+ let ab = C((((("auction_" + u) + "_bid_") + X) + "_author"))
292+ let aa = A((((("auction_" + u) + "_bid_") + X) + "_amount"))
293+ if (if ((toString(N.caller) != ab))
277294 then (N.caller != this)
278295 else false)
279296 then throw("Only allowed to the bid author or admin")
280- else if ((C((((("auction_" + u) + "_bid_") + V) + "_status")) != "open"))
297+ else if ((C((((("auction_" + u) + "_bid_") + X) + "_status")) != "open"))
281298 then throw("bid is not open")
282- else [StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "cancelled"), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), ScriptTransfer(Address(fromBase58String(Z)), Y, o)]
299+ else [StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "cancelled"), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), ScriptTransfer(Address(fromBase58String(ab)), aa, o)]
283300 }
284301
285302
286303
287304 @Callable(N)
288-func acceptBid (u,V) = {
289- let T = C((("auction_" + u) + "_owner"))
290- let Z = C((((("auction_" + u) + "_bid_") + V) + "_author"))
291- let Y = A((((("auction_" + u) + "_bid_") + V) + "_amount"))
292- let af = C((((("auction_" + u) + "_bid_") + V) + "_status"))
305+func acceptBid (u,X) = {
306+ let V = C((("auction_" + u) + "_owner"))
307+ let ab = C((((("auction_" + u) + "_bid_") + X) + "_author"))
308+ let aa = A((((("auction_" + u) + "_bid_") + X) + "_amount"))
309+ let ai = C((((("auction_" + u) + "_bid_") + X) + "_status"))
293310 let E = C((("auction_" + u) + "_assetId"))
294- if ((toString(N.caller) != T))
311+ if ((toString(N.caller) != V))
295312 then throw("Only allowed to auction owner")
296- else if ((af != "open"))
313+ else if ((ai != "open"))
297314 then throw("Bid was cancelled and cannot be accepted")
298315 else {
299- let aa = A((E + "_recordPrice"))
300- let ab = max([aa, Y])
316+ let ac = A((E + "_recordPrice"))
317+ let ad = max([ac, aa])
301318 let H = G(E)
302319 let x = I(E)
303- let ac = J(H, x)
320+ let ae = J(H, x)
304321 if ((H == ""))
305322 then {
306- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
307- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, l], nil)
308- if ((ae == ae))
309- then ad
323+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o), ScriptTransfer(addressFromStringValue(ab), 1, fromBase58String(E))]
324+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, l], nil)
325+ if ((ah == ah))
326+ then ag
310327 else throw("Strict value is not equal to itself.")
311328 }
312329 else {
313- let ad = [StringEntry((((("auction_" + u) + "_bid_") + V) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + V) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(Y)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), Y), IntegerEntry((E + "_recordPrice"), ab), DeleteEntry(((((("address_" + Z) + "_auction_") + u) + "_bid_") + V)), DeleteEntry((((("address_" + T) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(Y, ((100 - a) - ac), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(Y, ac, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(Y, a, 100), o), ScriptTransfer(addressFromStringValue(Z), 1, fromBase58String(E))]
314- let ae = invoke(addressFromStringValue(m), "createCert", [Z, E, H], nil)
315- if ((ae == ae))
316- then ad
330+ let ag = [StringEntry((((("auction_" + u) + "_bid_") + X) + "_status"), "finished"), StringEntry((("auction_" + u) + "_status"), "finished"), StringEntry((((("assetId_" + E) + "_bid_") + X) + "_data"), (((((("{\"auctionId\": \"" + u) + "\", \"author\": \"") + toString(N.caller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + u) + "_finalPrice"), aa), IntegerEntry((E + "_recordPrice"), ad), DeleteEntry(((((("address_" + ab) + "_auction_") + u) + "_bid_") + X)), DeleteEntry((((("address_" + V) + "_auction_") + u) + "_lockedNFT")), ScriptTransfer(N.caller, fraction(aa, ((100 - a) - ae), 100), o), ScriptTransfer(Address(fromBase58String(H)), fraction(aa, ae, 100), o), ScriptTransfer(addressFromStringValue(l), fraction(aa, a, 100), o), ScriptTransfer(addressFromStringValue(ab), 1, fromBase58String(E))]
331+ let ah = invoke(addressFromStringValue(m), "createCert", [ab, E, H], nil)
332+ if ((ah == ah))
333+ then ag
317334 else throw("Strict value is not equal to itself.")
318335 }
319336 }
320337 }
321338
322339
323-@Verifier(ag)
324-func ah () = sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
340+@Verifier(aj)
341+func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey)
325342

github/deemru/w8io/169f3d6 
144.22 ms