tx · E2qrdYSBhN36Av2k2dW9TPBMqzCzzNbsPWhnCnMgAj4s

3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU:  -0.02200000 Waves

2023.07.22 14:12 [3742630] smart account 3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU > SELF 0.00000000 Waves

{ "type": 13, "id": "E2qrdYSBhN36Av2k2dW9TPBMqzCzzNbsPWhnCnMgAj4s", "fee": 2200000, "feeAssetId": null, "timestamp": 1690024397389, "version": 2, "chainId": 87, "sender": "3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU", "senderPublicKey": "FQcGKT4w9tnuigudoGoUWmGxV6JqMaac6kwNKWaA61uJ", "proofs": [ "33Rc1tR6dD2MNnCkN5oaKjdDWaaYw7AD2xNecTFmi17hW54jpySdatbXKHZAmqJUUTFH1vUPJX1SqHZBpjzdMeFn" ], "script": "base64:AAIFAAAAAAAAACoIAhIDCgEIEgYKBAEBCAgSAwoBCBIDCgEIEgMKAQgSBAoCCAgSBAoCCAgAAAAYAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAVdHJ5R2V0SW50ZWdlckV4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAAB1zdGF0aWNfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAG3N0YXRpY190dXJ0bGVCcmVlZGVyQWRkcmVzcwEAAAAZZ2V0VHVydGxlSW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBAAAAF2dldFR1cnRsZUJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAAXZ2V0RmVlQWdncmVnYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABNnZXRNYXJrZXRQbGFjZVByb3h5AAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAAB5zdGF0aWNfbWFya2V0UGxhY2VQcm94eUFkZHJlc3MBAAAAEWdldEJ1eWJhY2tBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABVzdGF0aWNfYnV5YmFja0FkZHJlc3MAAAAADmtHbG9iYWxDb3VudGVyAgAAAA5HTE9CQUxfQ09VTlRFUgEAAAANZ2V0RmVlUGVyY2VudAAAAAAJAQAAABV0cnlHZXRJbnRlZ2VyRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX21hcmtldFBsYWNlRmVlAQAAABZnZXRBcnRlZmFjdHNGZWVQZXJjZW50AAAAAAkBAAAAFXRyeUdldEludGVnZXJFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAAB5zdGF0aWNfbWFya2V0UGxhY2VGZWVBcnRlZmFjdHMBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQkBAAAAFXRyeUdldEludGVnZXJFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAAEGdldEdsb2JhbENvdW50ZXIAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAADmtHbG9iYWxDb3VudGVyAQAAABBnZXRBc3NldEdlbm90eXBlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABmlzc3VlcgkBAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAACAAAAA0FSVAQAAAAGYXNzZXQxBAAAAAckbWF0Y2gwCQAEHQAAAAIJAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkAAlgAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWICAAAAAAMJAQAAAAIhPQAAAAIFAAAABmFzc2V0MQIAAAAABQAAAAZhc3NldDEEAAAABmFzc2V0MgQAAAAHJG1hdGNoMAkABB0AAAACCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQACWAAAAAEFAAAAB2Fzc2V0SWQDCQAA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", "height": 3742630, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AFjDgMpktQ7aFneTYQtuwdyrmqHP3DyKCHts6RGgyiB7 Next: ABSBacRTdjToK2GK9iNN3XXdXX2jevz4Enc99QPk7gyg Diff:
OldNewDifferences
3232 func j () = fromBase58String(a(i(), "static_eggAssetId"))
3333
3434
35-func k () = Address(fromBase58String(a(i(), "static_incubatorAddress")))
35+func k () = Address(fromBase58String(a(i(), "static_turtleIncubatorAddress")))
3636
3737
38-func l () = Address(fromBase58String(a(i(), "static_breederAddress")))
38+func l () = Address(fromBase58String(a(i(), "static_turtleBreederAddress")))
3939
4040
41-func m () = Address(fromBase58String(a(i(), "static_itemsAddress")))
41+func m () = Address(fromBase58String(a(i(), "static_incubatorAddress")))
4242
4343
44-func n () = Address(fromBase58String(a(i(), "static_feeAggregator")))
44+func n () = Address(fromBase58String(a(i(), "static_breederAddress")))
4545
4646
47-func o () = Address(fromBase58String(a(i(), "static_burnAddress")))
47+func o () = Address(fromBase58String(a(i(), "static_itemsAddress")))
4848
4949
50-func p () = Address(fromBase58String(a(i(), "static_marketPlaceProxyAddress")))
50+func p () = Address(fromBase58String(a(i(), "static_feeAggregator")))
5151
5252
53-func q () = Address(fromBase58String(a(i(), "static_buybackAddress")))
53+func q () = Address(fromBase58String(a(i(), "static_burnAddress")))
5454
5555
56-let r = "GLOBAL_COUNTER"
57-
58-func s () = f(i(), "static_marketPlaceFee")
56+func r () = Address(fromBase58String(a(i(), "static_marketPlaceProxyAddress")))
5957
6058
61-func t () = f(i(), "static_marketPlaceFeeArtefacts")
59+func s () = Address(fromBase58String(a(i(), "static_buybackAddress")))
6260
6361
64-func u (c) = f(this, c)
62+let t = "GLOBAL_COUNTER"
63+
64+func u () = f(i(), "static_marketPlaceFee")
6565
6666
67-func v (c) = {
67+func v () = f(i(), "static_marketPlaceFeeArtefacts")
68+
69+
70+func w (c) = f(this, c)
71+
72+
73+func x (c) = {
6874 let d = getBoolean(this, c)
6975 if ($isInstanceOf(d, "Boolean"))
7076 then {
7581 }
7682
7783
78-func w () = u(r)
84+func y () = w(t)
7985
8086
81-func x (y) = if ((value(assetInfo(y)).issuer == m()))
87+func z (A) = if ((value(assetInfo(A)).issuer == o()))
8288 then "ART"
8389 else {
84- let z = {
85- let d = getString(k(), toBase58String(y))
90+ let B = {
91+ let d = getString(k(), toBase58String(A))
8692 if ($isInstanceOf(d, "String"))
8793 then {
8894 let g = d
9096 }
9197 else ""
9298 }
93- if ((z != ""))
94- then z
99+ if ((B != ""))
100+ then B
95101 else {
96- let A = {
97- let d = getString(l(), toBase58String(y))
102+ let C = {
103+ let d = getString(l(), toBase58String(A))
98104 if ($isInstanceOf(d, "String"))
99105 then {
100- let B = d
101- B
106+ let D = d
107+ D
102108 }
103109 else ""
104110 }
105- if ((A != ""))
106- then A
107- else ""
111+ if ((C != ""))
112+ then C
113+ else {
114+ let E = {
115+ let d = getString(m(), toBase58String(A))
116+ if ($isInstanceOf(d, "String"))
117+ then {
118+ let g = d
119+ g
120+ }
121+ else ""
122+ }
123+ if ((E != ""))
124+ then B
125+ else {
126+ let F = {
127+ let d = getString(n(), toBase58String(A))
128+ if ($isInstanceOf(d, "String"))
129+ then {
130+ let D = d
131+ D
132+ }
133+ else ""
134+ }
135+ if ((F != ""))
136+ then F
137+ else ""
138+ }
139+ }
108140 }
109141 }
110142
111143
112-func C (D,E) = {
113- let F = v((("auction_" + D) + "_eggSell"))
114- let G = if ((F == true))
144+func G (H,I) = {
145+ let J = x((("auction_" + H) + "_eggSell"))
146+ let K = if ((J == true))
115147 then j()
116148 else unit
117- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
118- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
119- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
120-[StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + H) + "\", \"amount\": \"") + toString(I)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "cancelled"), DeleteEntry(((((("address_" + H) + "_auction_") + D) + "_bid_") + E)), ScriptTransfer(Address(fromBase58String(H)), I, G)]
149+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
150+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
151+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
152+[StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + L) + "\", \"amount\": \"") + toString(M)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "cancelled"), DeleteEntry(((((("address_" + L) + "_auction_") + H) + "_bid_") + I)), ScriptTransfer(Address(fromBase58String(L)), M, K)]
121153 }
122154
123155
124-func J (c) = {
156+func N (c) = {
125157 let d = getBoolean(this, c)
126158 if ($isInstanceOf(d, "Boolean"))
127159 then {
132164 }
133165
134166
135-func K () = J("TESTENV")
167+func O () = N("TESTENV")
136168
137169
138-@Callable(L)
139-func configureOracle (M) = if ((L.caller != this))
170+@Callable(P)
171+func configureOracle (Q) = if ((P.caller != this))
140172 then throw("MCO: admin only")
141- else [StringEntry("static_oracleAddress", M)]
173+ else [StringEntry("static_oracleAddress", Q)]
142174
143175
144176
145-@Callable(L)
146-func initAuction (N,O,P,Q) = {
147- let R = w()
148- let D = (toBase58String(L.transactionId) + toString(R))
149- let S = value(L.payments[0])
150- let y = value(S.assetId)
151- let T = x(y)
152- if ((S.amount != 1))
177+@Callable(P)
178+func initAuction (R,S,T,U) = {
179+ let V = y()
180+ let H = (toBase58String(P.transactionId) + toString(V))
181+ let W = value(P.payments[0])
182+ let A = value(W.assetId)
183+ let X = z(A)
184+ if ((W.amount != 1))
153185 then throw("MIA: NFT is not attached")
154- else if ((Q == "true"))
186+ else if ((U == "true"))
155187 then throw("MIA: Same rules for everyone!")
156- else if ((T == ""))
188+ else if ((X == ""))
157189 then throw("MIA: You can only sell an NFT-duck created in incubator or breeder")
158- else [StringEntry((("auction_" + D) + "_status"), "open"), BooleanEntry((("auction_" + D) + "_eggSell"), (Q == "true")), IntegerEntry(r, (R + 1)), StringEntry((("auction_" + toBase58String(y)) + "_last"), D), StringEntry((("auction_" + D) + "_assetGen"), T), StringEntry((("auction_" + D) + "_assetId"), toBase58String(y)), IntegerEntry((("auction_" + D) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + D) + "_owner"), toString(L.originCaller)), StringEntry((("auction_" + D) + "_description"), P), IntegerEntry((("auction_" + D) + "_startPrice"), N), BooleanEntry((("auction_" + D) + "_isArtefact"), (value(assetInfo(y)).issuer == m())), IntegerEntry((("auction_" + D) + "_instantPrice"), O), StringEntry((((("address_" + toString(L.originCaller)) + "_auction_") + D) + "_lockedNFT"), toBase58String(y))]
190+ else [StringEntry((("auction_" + H) + "_status"), "open"), BooleanEntry((("auction_" + H) + "_eggSell"), (U == "true")), IntegerEntry(t, (V + 1)), StringEntry((("auction_" + toBase58String(A)) + "_last"), H), StringEntry((("auction_" + H) + "_assetGen"), X), StringEntry((("auction_" + H) + "_assetId"), toBase58String(A)), IntegerEntry((("auction_" + H) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + H) + "_owner"), toString(P.originCaller)), StringEntry((("auction_" + H) + "_description"), T), IntegerEntry((("auction_" + H) + "_startPrice"), R), BooleanEntry((("auction_" + H) + "_isArtefact"), (value(assetInfo(A)).issuer == o())), BooleanEntry((("auction_" + H) + "_isTurtle"), if ((value(assetInfo(A)).issuer == n()))
191+ then true
192+ else (value(assetInfo(A)).issuer == m())), IntegerEntry((("auction_" + H) + "_instantPrice"), S), StringEntry((((("address_" + toString(P.originCaller)) + "_auction_") + H) + "_lockedNFT"), toBase58String(A))]
159193 }
160194
161195
162196
163-@Callable(L)
164-func cancelAuction (D) = {
165- let U = h((("auction_" + D) + "_owner"))
166- if ((toString(L.originCaller) != U))
197+@Callable(P)
198+func cancelAuction (H) = {
199+ let Y = h((("auction_" + H) + "_owner"))
200+ if ((toString(P.originCaller) != Y))
167201 then throw("MCA: Only allowed to auction owner")
168- else if ((h((("auction_" + D) + "_status")) != "open"))
202+ else if ((h((("auction_" + H) + "_status")) != "open"))
169203 then throw("MCA: auction is close")
170- else [StringEntry((("auction_" + D) + "_status"), "cancelled"), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(L.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId"))))]
204+ else [StringEntry((("auction_" + H) + "_status"), "cancelled"), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(P.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId"))))]
171205 }
172206
173207
174208
175-@Callable(L)
176-func instantBuy (D) = {
177- let F = v((("auction_" + D) + "_eggSell"))
178- let G = if ((F == true))
209+@Callable(P)
210+func instantBuy (H) = {
211+ let J = x((("auction_" + H) + "_eggSell"))
212+ let K = if ((J == true))
179213 then j()
180214 else unit
181- let V = if ((F == true))
215+ let Z = if ((J == true))
182216 then "EGG"
183217 else "WAVES"
184- let S = value(L.payments[0])
185- let W = S.amount
186- let y = h((("auction_" + D) + "_assetId"))
187- let E = toBase58String(L.transactionId)
188- let X = h((("auction_" + D) + "_status"))
189- let Y = if ((v((("auction_" + D) + "_isArtefact")) == true))
190- then t()
191- else s()
192- if ((S.assetId != G))
193- then throw((("MIB: Auction does only support " + V) + " payments."))
194- else if ((X != "open"))
218+ let W = value(P.payments[0])
219+ let aa = W.amount
220+ let A = h((("auction_" + H) + "_assetId"))
221+ let I = toBase58String(P.transactionId)
222+ let ab = h((("auction_" + H) + "_status"))
223+ let ac = if ((x((("auction_" + H) + "_isArtefact")) == true))
224+ then v()
225+ else u()
226+ if ((W.assetId != K))
227+ then throw((("MIB: Auction does only support " + Z) + " payments."))
228+ else if ((ab != "open"))
195229 then throw("MIB: Auction is closed. You cannot place a bid.")
196230 else {
197- let O = u((("auction_" + D) + "_instantPrice"))
198- if ((O > W))
199- then throw(("MIB: For instant purchase you need to pay at least " + toString(O)))
231+ let S = w((("auction_" + H) + "_instantPrice"))
232+ if ((S > aa))
233+ then throw(("MIB: For instant purchase you need to pay at least " + toString(S)))
200234 else {
201- let U = h((("auction_" + D) + "_owner"))
202- let Z = u((y + "_recordPrice"))
203- let aa = max([Z, W])
204- let ab = if (F)
235+ let Y = h((("auction_" + H) + "_owner"))
236+ let ad = w((A + "_recordPrice"))
237+ let ae = max([ad, aa])
238+ let af = if (J)
205239 then {
206- let ac = invoke(o(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(W, Y, 1000))])
207- if ((ac == ac))
240+ let ag = invoke(q(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(aa, ac, 1000))])
241+ if ((ag == ag))
208242 then nil
209243 else throw("Strict value is not equal to itself.")
210244 }
211- else [ScriptTransfer(n(), fraction(W, fraction(Y, 6, 10), 1000), unit), ScriptTransfer(q(), fraction(W, fraction(Y, 6, 10), 1000), unit)]
212- let ad = if ((p() == L.caller))
213- then L.originCaller
214- else L.caller
215- $Tuple2(([StringEntry((("auction_" + D) + "_status"), "finished"), IntegerEntry((("auction_" + D) + "_finalPrice"), W), IntegerEntry((y + "_recordPrice"), aa), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(ad)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(ad, 1, fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId")))), ScriptTransfer(addressFromStringValue(U), fraction(W, (1000 - Y), 1000), G)] ++ ab), fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId"))))
245+ else [ScriptTransfer(p(), fraction(aa, fraction(ac, 6, 10), 1000), unit), ScriptTransfer(s(), fraction(aa, fraction(ac, 6, 10), 1000), unit)]
246+ let ah = if ((r() == P.caller))
247+ then P.originCaller
248+ else P.caller
249+ $Tuple2(([StringEntry((("auction_" + H) + "_status"), "finished"), IntegerEntry((("auction_" + H) + "_finalPrice"), aa), IntegerEntry((A + "_recordPrice"), ae), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(ah)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(ah, 1, fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId")))), ScriptTransfer(addressFromStringValue(Y), fraction(aa, (1000 - ac), 1000), K)] ++ af), fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId"))))
216250 }
217251 }
218252 }
219253
220254
221255
222-@Callable(L)
223-func placeBid (D) = {
224- let F = v((("auction_" + D) + "_eggSell"))
225- let G = if ((F == true))
256+@Callable(P)
257+func placeBid (H) = {
258+ let J = x((("auction_" + H) + "_eggSell"))
259+ let K = if ((J == true))
226260 then j()
227261 else unit
228- let V = if ((F == true))
262+ let Z = if ((J == true))
229263 then "EGG"
230264 else "WAVES"
231- let S = value(L.payments[0])
232- let W = S.amount
233- let E = toBase58String(L.transactionId)
234- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
235- if ((S.assetId != G))
236- then throw((("MPB: Auction does only support " + V) + " payments."))
265+ let W = value(P.payments[0])
266+ let aa = W.amount
267+ let I = toBase58String(P.transactionId)
268+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
269+ if ((W.assetId != K))
270+ then throw((("MPB: Auction does only support " + Z) + " payments."))
237271 else {
238- let ae = u((("auction_" + D) + "_startPrice"))
239- if ((ae > W))
240- then throw(("MPB: The minimal initial price is set as " + toString(ae)))
241- else [StringEntry((((("auction_" + D) + "_bid_") + E) + "_author"), toString(L.originCaller)), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(L.originCaller)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + D) + "_bid_") + E) + "_amount"), W), StringEntry(((((("address_" + toString(L.originCaller)) + "_auction_") + D) + "_bid_") + E), y), StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "open")]
272+ let ai = w((("auction_" + H) + "_startPrice"))
273+ if ((ai > aa))
274+ then throw(("MPB: The minimal initial price is set as " + toString(ai)))
275+ else [StringEntry((((("auction_" + H) + "_bid_") + I) + "_author"), toString(P.originCaller)), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(P.originCaller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + H) + "_bid_") + I) + "_amount"), aa), StringEntry(((((("address_" + toString(P.originCaller)) + "_auction_") + H) + "_bid_") + I), A), StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "open")]
242276 }
243277 }
244278
245279
246280
247-@Callable(L)
248-func cancelBid (D,E) = {
249- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
250- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
251- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
252- if ((toString(L.originCaller) != H))
281+@Callable(P)
282+func cancelBid (H,I) = {
283+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
284+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
285+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
286+ if ((toString(P.originCaller) != L))
253287 then throw("MCB: Only allowed to the bid author")
254- else if ((h((((("auction_" + D) + "_bid_") + E) + "_status")) != "open"))
288+ else if ((h((((("auction_" + H) + "_bid_") + I) + "_status")) != "open"))
255289 then throw("MCB: bid is not open")
256- else C(D, E)
290+ else G(H, I)
257291 }
258292
259293
260294
261-@Callable(L)
262-func acceptBid (D,E) = {
263- let F = v((("auction_" + D) + "_eggSell"))
264- let G = if ((F == true))
295+@Callable(P)
296+func acceptBid (H,I) = {
297+ let J = x((("auction_" + H) + "_eggSell"))
298+ let K = if ((J == true))
265299 then j()
266300 else unit
267- let U = h((("auction_" + D) + "_owner"))
268- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
269- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
270- let af = h((((("auction_" + D) + "_bid_") + E) + "_status"))
271- let y = h((("auction_" + D) + "_assetId"))
272- let Y = if ((v((("auction_" + D) + "_isArtefact")) == true))
273- then t()
274- else s()
275- if ((toString(L.originCaller) != U))
301+ let Y = h((("auction_" + H) + "_owner"))
302+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
303+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
304+ let aj = h((((("auction_" + H) + "_bid_") + I) + "_status"))
305+ let A = h((("auction_" + H) + "_assetId"))
306+ let ac = if ((x((("auction_" + H) + "_isArtefact")) == true))
307+ then v()
308+ else u()
309+ if ((toString(P.originCaller) != Y))
276310 then throw("MAB: Only allowed to auction owner")
277- else if ((af != "open"))
311+ else if ((aj != "open"))
278312 then throw("MAB: Bid was cancelled and cannot be accepted")
279- else if ((h((("auction_" + D) + "_status")) != "open"))
313+ else if ((h((("auction_" + H) + "_status")) != "open"))
280314 then throw("MAB: Auction was closed")
281315 else {
282- let Z = u((y + "_recordPrice"))
283- let aa = max([Z, I])
284- let ab = if (F)
316+ let ad = w((A + "_recordPrice"))
317+ let ae = max([ad, M])
318+ let af = if (J)
285319 then {
286- let ac = invoke(o(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(I, Y, 1000))])
287- if ((ac == ac))
320+ let ag = invoke(q(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(M, ac, 1000))])
321+ if ((ag == ag))
288322 then nil
289323 else throw("Strict value is not equal to itself.")
290324 }
291- else [ScriptTransfer(n(), fraction(I, fraction(Y, 6, 10), 1000), unit), ScriptTransfer(q(), fraction(I, fraction(Y, 6, 10), 1000), unit)]
292- ([StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "finished"), StringEntry((("auction_" + D) + "_status"), "finished"), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(L.originCaller)) + "\", \"amount\": \"") + toString(I)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + D) + "_finalPrice"), I), IntegerEntry((y + "_recordPrice"), aa), DeleteEntry(((((("address_" + H) + "_auction_") + D) + "_bid_") + E)), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(L.originCaller, fraction(I, (1000 - Y), 1000), G), ScriptTransfer(addressFromStringValue(H), 1, fromBase58String(y))] ++ ab)
325+ else [ScriptTransfer(p(), fraction(M, fraction(ac, 6, 10), 1000), unit), ScriptTransfer(s(), fraction(M, fraction(ac, 6, 10), 1000), unit)]
326+ ([StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "finished"), StringEntry((("auction_" + H) + "_status"), "finished"), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(P.originCaller)) + "\", \"amount\": \"") + toString(M)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + H) + "_finalPrice"), M), IntegerEntry((A + "_recordPrice"), ae), DeleteEntry(((((("address_" + L) + "_auction_") + H) + "_bid_") + I)), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(P.originCaller, fraction(M, (1000 - ac), 1000), K), ScriptTransfer(addressFromStringValue(L), 1, fromBase58String(A))] ++ af)
293327 }
294328 }
295329
296330
297-@Verifier(ag)
298-func ah () = if (K())
299- then sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
331+@Verifier(ak)
332+func al () = if (O())
333+ then sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
300334 else {
301- let ai = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
302- let aj = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
303- let ak = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
304- let al = if (sigVerify(ag.bodyBytes, ag.proofs[0], ai))
335+ let am = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
336+ let an = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
337+ let ao = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
338+ let ap = if (sigVerify(ak.bodyBytes, ak.proofs[0], am))
305339 then 1
306- else if (sigVerify(ag.bodyBytes, ag.proofs[1], ai))
340+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], am))
307341 then 1
308- else if (sigVerify(ag.bodyBytes, ag.proofs[2], ai))
342+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], am))
309343 then 1
310344 else 0
311- let am = if (sigVerify(ag.bodyBytes, ag.proofs[0], aj))
345+ let aq = if (sigVerify(ak.bodyBytes, ak.proofs[0], an))
312346 then 1
313- else if (sigVerify(ag.bodyBytes, ag.proofs[1], aj))
347+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], an))
314348 then 1
315- else if (sigVerify(ag.bodyBytes, ag.proofs[2], aj))
349+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], an))
316350 then 1
317351 else 0
318- let an = if (sigVerify(ag.bodyBytes, ag.proofs[0], ak))
352+ let ar = if (sigVerify(ak.bodyBytes, ak.proofs[0], ao))
319353 then 1
320- else if (sigVerify(ag.bodyBytes, ag.proofs[1], ak))
354+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], ao))
321355 then 1
322- else if (sigVerify(ag.bodyBytes, ag.proofs[2], ak))
356+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], ao))
323357 then 1
324358 else 0
325- let ao = ((al + am) + an)
326- let d = ag
327- (ao >= 2)
359+ let as = ((ap + aq) + ar)
360+ let d = ak
361+ (as >= 2)
328362 }
329363
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = {
55 let d = getString(b, c)
66 if ($isInstanceOf(d, "String"))
77 then {
88 let e = d
99 e
1010 }
1111 else ""
1212 }
1313
1414
1515 func f (b,c) = {
1616 let d = getInteger(b, c)
1717 if ($isInstanceOf(d, "Int"))
1818 then {
1919 let g = d
2020 g
2121 }
2222 else 0
2323 }
2424
2525
2626 func h (c) = a(this, c)
2727
2828
2929 func i () = Address(fromBase58String(h("static_oracleAddress")))
3030
3131
3232 func j () = fromBase58String(a(i(), "static_eggAssetId"))
3333
3434
35-func k () = Address(fromBase58String(a(i(), "static_incubatorAddress")))
35+func k () = Address(fromBase58String(a(i(), "static_turtleIncubatorAddress")))
3636
3737
38-func l () = Address(fromBase58String(a(i(), "static_breederAddress")))
38+func l () = Address(fromBase58String(a(i(), "static_turtleBreederAddress")))
3939
4040
41-func m () = Address(fromBase58String(a(i(), "static_itemsAddress")))
41+func m () = Address(fromBase58String(a(i(), "static_incubatorAddress")))
4242
4343
44-func n () = Address(fromBase58String(a(i(), "static_feeAggregator")))
44+func n () = Address(fromBase58String(a(i(), "static_breederAddress")))
4545
4646
47-func o () = Address(fromBase58String(a(i(), "static_burnAddress")))
47+func o () = Address(fromBase58String(a(i(), "static_itemsAddress")))
4848
4949
50-func p () = Address(fromBase58String(a(i(), "static_marketPlaceProxyAddress")))
50+func p () = Address(fromBase58String(a(i(), "static_feeAggregator")))
5151
5252
53-func q () = Address(fromBase58String(a(i(), "static_buybackAddress")))
53+func q () = Address(fromBase58String(a(i(), "static_burnAddress")))
5454
5555
56-let r = "GLOBAL_COUNTER"
57-
58-func s () = f(i(), "static_marketPlaceFee")
56+func r () = Address(fromBase58String(a(i(), "static_marketPlaceProxyAddress")))
5957
6058
61-func t () = f(i(), "static_marketPlaceFeeArtefacts")
59+func s () = Address(fromBase58String(a(i(), "static_buybackAddress")))
6260
6361
64-func u (c) = f(this, c)
62+let t = "GLOBAL_COUNTER"
63+
64+func u () = f(i(), "static_marketPlaceFee")
6565
6666
67-func v (c) = {
67+func v () = f(i(), "static_marketPlaceFeeArtefacts")
68+
69+
70+func w (c) = f(this, c)
71+
72+
73+func x (c) = {
6874 let d = getBoolean(this, c)
6975 if ($isInstanceOf(d, "Boolean"))
7076 then {
7177 let g = d
7278 g
7379 }
7480 else false
7581 }
7682
7783
78-func w () = u(r)
84+func y () = w(t)
7985
8086
81-func x (y) = if ((value(assetInfo(y)).issuer == m()))
87+func z (A) = if ((value(assetInfo(A)).issuer == o()))
8288 then "ART"
8389 else {
84- let z = {
85- let d = getString(k(), toBase58String(y))
90+ let B = {
91+ let d = getString(k(), toBase58String(A))
8692 if ($isInstanceOf(d, "String"))
8793 then {
8894 let g = d
8995 g
9096 }
9197 else ""
9298 }
93- if ((z != ""))
94- then z
99+ if ((B != ""))
100+ then B
95101 else {
96- let A = {
97- let d = getString(l(), toBase58String(y))
102+ let C = {
103+ let d = getString(l(), toBase58String(A))
98104 if ($isInstanceOf(d, "String"))
99105 then {
100- let B = d
101- B
106+ let D = d
107+ D
102108 }
103109 else ""
104110 }
105- if ((A != ""))
106- then A
107- else ""
111+ if ((C != ""))
112+ then C
113+ else {
114+ let E = {
115+ let d = getString(m(), toBase58String(A))
116+ if ($isInstanceOf(d, "String"))
117+ then {
118+ let g = d
119+ g
120+ }
121+ else ""
122+ }
123+ if ((E != ""))
124+ then B
125+ else {
126+ let F = {
127+ let d = getString(n(), toBase58String(A))
128+ if ($isInstanceOf(d, "String"))
129+ then {
130+ let D = d
131+ D
132+ }
133+ else ""
134+ }
135+ if ((F != ""))
136+ then F
137+ else ""
138+ }
139+ }
108140 }
109141 }
110142
111143
112-func C (D,E) = {
113- let F = v((("auction_" + D) + "_eggSell"))
114- let G = if ((F == true))
144+func G (H,I) = {
145+ let J = x((("auction_" + H) + "_eggSell"))
146+ let K = if ((J == true))
115147 then j()
116148 else unit
117- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
118- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
119- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
120-[StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + H) + "\", \"amount\": \"") + toString(I)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "cancelled"), DeleteEntry(((((("address_" + H) + "_auction_") + D) + "_bid_") + E)), ScriptTransfer(Address(fromBase58String(H)), I, G)]
149+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
150+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
151+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
152+[StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + L) + "\", \"amount\": \"") + toString(M)) + "\", \"status\": \"cancelled\"}")), StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "cancelled"), DeleteEntry(((((("address_" + L) + "_auction_") + H) + "_bid_") + I)), ScriptTransfer(Address(fromBase58String(L)), M, K)]
121153 }
122154
123155
124-func J (c) = {
156+func N (c) = {
125157 let d = getBoolean(this, c)
126158 if ($isInstanceOf(d, "Boolean"))
127159 then {
128160 let g = d
129161 g
130162 }
131163 else false
132164 }
133165
134166
135-func K () = J("TESTENV")
167+func O () = N("TESTENV")
136168
137169
138-@Callable(L)
139-func configureOracle (M) = if ((L.caller != this))
170+@Callable(P)
171+func configureOracle (Q) = if ((P.caller != this))
140172 then throw("MCO: admin only")
141- else [StringEntry("static_oracleAddress", M)]
173+ else [StringEntry("static_oracleAddress", Q)]
142174
143175
144176
145-@Callable(L)
146-func initAuction (N,O,P,Q) = {
147- let R = w()
148- let D = (toBase58String(L.transactionId) + toString(R))
149- let S = value(L.payments[0])
150- let y = value(S.assetId)
151- let T = x(y)
152- if ((S.amount != 1))
177+@Callable(P)
178+func initAuction (R,S,T,U) = {
179+ let V = y()
180+ let H = (toBase58String(P.transactionId) + toString(V))
181+ let W = value(P.payments[0])
182+ let A = value(W.assetId)
183+ let X = z(A)
184+ if ((W.amount != 1))
153185 then throw("MIA: NFT is not attached")
154- else if ((Q == "true"))
186+ else if ((U == "true"))
155187 then throw("MIA: Same rules for everyone!")
156- else if ((T == ""))
188+ else if ((X == ""))
157189 then throw("MIA: You can only sell an NFT-duck created in incubator or breeder")
158- else [StringEntry((("auction_" + D) + "_status"), "open"), BooleanEntry((("auction_" + D) + "_eggSell"), (Q == "true")), IntegerEntry(r, (R + 1)), StringEntry((("auction_" + toBase58String(y)) + "_last"), D), StringEntry((("auction_" + D) + "_assetGen"), T), StringEntry((("auction_" + D) + "_assetId"), toBase58String(y)), IntegerEntry((("auction_" + D) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + D) + "_owner"), toString(L.originCaller)), StringEntry((("auction_" + D) + "_description"), P), IntegerEntry((("auction_" + D) + "_startPrice"), N), BooleanEntry((("auction_" + D) + "_isArtefact"), (value(assetInfo(y)).issuer == m())), IntegerEntry((("auction_" + D) + "_instantPrice"), O), StringEntry((((("address_" + toString(L.originCaller)) + "_auction_") + D) + "_lockedNFT"), toBase58String(y))]
190+ else [StringEntry((("auction_" + H) + "_status"), "open"), BooleanEntry((("auction_" + H) + "_eggSell"), (U == "true")), IntegerEntry(t, (V + 1)), StringEntry((("auction_" + toBase58String(A)) + "_last"), H), StringEntry((("auction_" + H) + "_assetGen"), X), StringEntry((("auction_" + H) + "_assetId"), toBase58String(A)), IntegerEntry((("auction_" + H) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + H) + "_owner"), toString(P.originCaller)), StringEntry((("auction_" + H) + "_description"), T), IntegerEntry((("auction_" + H) + "_startPrice"), R), BooleanEntry((("auction_" + H) + "_isArtefact"), (value(assetInfo(A)).issuer == o())), BooleanEntry((("auction_" + H) + "_isTurtle"), if ((value(assetInfo(A)).issuer == n()))
191+ then true
192+ else (value(assetInfo(A)).issuer == m())), IntegerEntry((("auction_" + H) + "_instantPrice"), S), StringEntry((((("address_" + toString(P.originCaller)) + "_auction_") + H) + "_lockedNFT"), toBase58String(A))]
159193 }
160194
161195
162196
163-@Callable(L)
164-func cancelAuction (D) = {
165- let U = h((("auction_" + D) + "_owner"))
166- if ((toString(L.originCaller) != U))
197+@Callable(P)
198+func cancelAuction (H) = {
199+ let Y = h((("auction_" + H) + "_owner"))
200+ if ((toString(P.originCaller) != Y))
167201 then throw("MCA: Only allowed to auction owner")
168- else if ((h((("auction_" + D) + "_status")) != "open"))
202+ else if ((h((("auction_" + H) + "_status")) != "open"))
169203 then throw("MCA: auction is close")
170- else [StringEntry((("auction_" + D) + "_status"), "cancelled"), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(L.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId"))))]
204+ else [StringEntry((("auction_" + H) + "_status"), "cancelled"), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(P.originCaller, 1, fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId"))))]
171205 }
172206
173207
174208
175-@Callable(L)
176-func instantBuy (D) = {
177- let F = v((("auction_" + D) + "_eggSell"))
178- let G = if ((F == true))
209+@Callable(P)
210+func instantBuy (H) = {
211+ let J = x((("auction_" + H) + "_eggSell"))
212+ let K = if ((J == true))
179213 then j()
180214 else unit
181- let V = if ((F == true))
215+ let Z = if ((J == true))
182216 then "EGG"
183217 else "WAVES"
184- let S = value(L.payments[0])
185- let W = S.amount
186- let y = h((("auction_" + D) + "_assetId"))
187- let E = toBase58String(L.transactionId)
188- let X = h((("auction_" + D) + "_status"))
189- let Y = if ((v((("auction_" + D) + "_isArtefact")) == true))
190- then t()
191- else s()
192- if ((S.assetId != G))
193- then throw((("MIB: Auction does only support " + V) + " payments."))
194- else if ((X != "open"))
218+ let W = value(P.payments[0])
219+ let aa = W.amount
220+ let A = h((("auction_" + H) + "_assetId"))
221+ let I = toBase58String(P.transactionId)
222+ let ab = h((("auction_" + H) + "_status"))
223+ let ac = if ((x((("auction_" + H) + "_isArtefact")) == true))
224+ then v()
225+ else u()
226+ if ((W.assetId != K))
227+ then throw((("MIB: Auction does only support " + Z) + " payments."))
228+ else if ((ab != "open"))
195229 then throw("MIB: Auction is closed. You cannot place a bid.")
196230 else {
197- let O = u((("auction_" + D) + "_instantPrice"))
198- if ((O > W))
199- then throw(("MIB: For instant purchase you need to pay at least " + toString(O)))
231+ let S = w((("auction_" + H) + "_instantPrice"))
232+ if ((S > aa))
233+ then throw(("MIB: For instant purchase you need to pay at least " + toString(S)))
200234 else {
201- let U = h((("auction_" + D) + "_owner"))
202- let Z = u((y + "_recordPrice"))
203- let aa = max([Z, W])
204- let ab = if (F)
235+ let Y = h((("auction_" + H) + "_owner"))
236+ let ad = w((A + "_recordPrice"))
237+ let ae = max([ad, aa])
238+ let af = if (J)
205239 then {
206- let ac = invoke(o(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(W, Y, 1000))])
207- if ((ac == ac))
240+ let ag = invoke(q(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(aa, ac, 1000))])
241+ if ((ag == ag))
208242 then nil
209243 else throw("Strict value is not equal to itself.")
210244 }
211- else [ScriptTransfer(n(), fraction(W, fraction(Y, 6, 10), 1000), unit), ScriptTransfer(q(), fraction(W, fraction(Y, 6, 10), 1000), unit)]
212- let ad = if ((p() == L.caller))
213- then L.originCaller
214- else L.caller
215- $Tuple2(([StringEntry((("auction_" + D) + "_status"), "finished"), IntegerEntry((("auction_" + D) + "_finalPrice"), W), IntegerEntry((y + "_recordPrice"), aa), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(ad)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(ad, 1, fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId")))), ScriptTransfer(addressFromStringValue(U), fraction(W, (1000 - Y), 1000), G)] ++ ab), fromBase58String(getStringValue(this, (("auction_" + D) + "_assetId"))))
245+ else [ScriptTransfer(p(), fraction(aa, fraction(ac, 6, 10), 1000), unit), ScriptTransfer(s(), fraction(aa, fraction(ac, 6, 10), 1000), unit)]
246+ let ah = if ((r() == P.caller))
247+ then P.originCaller
248+ else P.caller
249+ $Tuple2(([StringEntry((("auction_" + H) + "_status"), "finished"), IntegerEntry((("auction_" + H) + "_finalPrice"), aa), IntegerEntry((A + "_recordPrice"), ae), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(ah)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"finished\"}")), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(ah, 1, fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId")))), ScriptTransfer(addressFromStringValue(Y), fraction(aa, (1000 - ac), 1000), K)] ++ af), fromBase58String(getStringValue(this, (("auction_" + H) + "_assetId"))))
216250 }
217251 }
218252 }
219253
220254
221255
222-@Callable(L)
223-func placeBid (D) = {
224- let F = v((("auction_" + D) + "_eggSell"))
225- let G = if ((F == true))
256+@Callable(P)
257+func placeBid (H) = {
258+ let J = x((("auction_" + H) + "_eggSell"))
259+ let K = if ((J == true))
226260 then j()
227261 else unit
228- let V = if ((F == true))
262+ let Z = if ((J == true))
229263 then "EGG"
230264 else "WAVES"
231- let S = value(L.payments[0])
232- let W = S.amount
233- let E = toBase58String(L.transactionId)
234- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
235- if ((S.assetId != G))
236- then throw((("MPB: Auction does only support " + V) + " payments."))
265+ let W = value(P.payments[0])
266+ let aa = W.amount
267+ let I = toBase58String(P.transactionId)
268+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
269+ if ((W.assetId != K))
270+ then throw((("MPB: Auction does only support " + Z) + " payments."))
237271 else {
238- let ae = u((("auction_" + D) + "_startPrice"))
239- if ((ae > W))
240- then throw(("MPB: The minimal initial price is set as " + toString(ae)))
241- else [StringEntry((((("auction_" + D) + "_bid_") + E) + "_author"), toString(L.originCaller)), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(L.originCaller)) + "\", \"amount\": \"") + toString(W)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + D) + "_bid_") + E) + "_amount"), W), StringEntry(((((("address_" + toString(L.originCaller)) + "_auction_") + D) + "_bid_") + E), y), StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "open")]
272+ let ai = w((("auction_" + H) + "_startPrice"))
273+ if ((ai > aa))
274+ then throw(("MPB: The minimal initial price is set as " + toString(ai)))
275+ else [StringEntry((((("auction_" + H) + "_bid_") + I) + "_author"), toString(P.originCaller)), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(P.originCaller)) + "\", \"amount\": \"") + toString(aa)) + "\", \"status\": \"open\"}")), IntegerEntry((((("auction_" + H) + "_bid_") + I) + "_amount"), aa), StringEntry(((((("address_" + toString(P.originCaller)) + "_auction_") + H) + "_bid_") + I), A), StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "open")]
242276 }
243277 }
244278
245279
246280
247-@Callable(L)
248-func cancelBid (D,E) = {
249- let y = getStringValue(this, (("auction_" + D) + "_assetId"))
250- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
251- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
252- if ((toString(L.originCaller) != H))
281+@Callable(P)
282+func cancelBid (H,I) = {
283+ let A = getStringValue(this, (("auction_" + H) + "_assetId"))
284+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
285+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
286+ if ((toString(P.originCaller) != L))
253287 then throw("MCB: Only allowed to the bid author")
254- else if ((h((((("auction_" + D) + "_bid_") + E) + "_status")) != "open"))
288+ else if ((h((((("auction_" + H) + "_bid_") + I) + "_status")) != "open"))
255289 then throw("MCB: bid is not open")
256- else C(D, E)
290+ else G(H, I)
257291 }
258292
259293
260294
261-@Callable(L)
262-func acceptBid (D,E) = {
263- let F = v((("auction_" + D) + "_eggSell"))
264- let G = if ((F == true))
295+@Callable(P)
296+func acceptBid (H,I) = {
297+ let J = x((("auction_" + H) + "_eggSell"))
298+ let K = if ((J == true))
265299 then j()
266300 else unit
267- let U = h((("auction_" + D) + "_owner"))
268- let H = h((((("auction_" + D) + "_bid_") + E) + "_author"))
269- let I = u((((("auction_" + D) + "_bid_") + E) + "_amount"))
270- let af = h((((("auction_" + D) + "_bid_") + E) + "_status"))
271- let y = h((("auction_" + D) + "_assetId"))
272- let Y = if ((v((("auction_" + D) + "_isArtefact")) == true))
273- then t()
274- else s()
275- if ((toString(L.originCaller) != U))
301+ let Y = h((("auction_" + H) + "_owner"))
302+ let L = h((((("auction_" + H) + "_bid_") + I) + "_author"))
303+ let M = w((((("auction_" + H) + "_bid_") + I) + "_amount"))
304+ let aj = h((((("auction_" + H) + "_bid_") + I) + "_status"))
305+ let A = h((("auction_" + H) + "_assetId"))
306+ let ac = if ((x((("auction_" + H) + "_isArtefact")) == true))
307+ then v()
308+ else u()
309+ if ((toString(P.originCaller) != Y))
276310 then throw("MAB: Only allowed to auction owner")
277- else if ((af != "open"))
311+ else if ((aj != "open"))
278312 then throw("MAB: Bid was cancelled and cannot be accepted")
279- else if ((h((("auction_" + D) + "_status")) != "open"))
313+ else if ((h((("auction_" + H) + "_status")) != "open"))
280314 then throw("MAB: Auction was closed")
281315 else {
282- let Z = u((y + "_recordPrice"))
283- let aa = max([Z, I])
284- let ab = if (F)
316+ let ad = w((A + "_recordPrice"))
317+ let ae = max([ad, M])
318+ let af = if (J)
285319 then {
286- let ac = invoke(o(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(I, Y, 1000))])
287- if ((ac == ac))
320+ let ag = invoke(q(), "burnAttachedPayments", nil, [AttachedPayment(j(), fraction(M, ac, 1000))])
321+ if ((ag == ag))
288322 then nil
289323 else throw("Strict value is not equal to itself.")
290324 }
291- else [ScriptTransfer(n(), fraction(I, fraction(Y, 6, 10), 1000), unit), ScriptTransfer(q(), fraction(I, fraction(Y, 6, 10), 1000), unit)]
292- ([StringEntry((((("auction_" + D) + "_bid_") + E) + "_status"), "finished"), StringEntry((("auction_" + D) + "_status"), "finished"), StringEntry((((("assetId_" + y) + "_bid_") + E) + "_data"), (((((("{\"auctionId\": \"" + D) + "\", \"author\": \"") + toString(L.originCaller)) + "\", \"amount\": \"") + toString(I)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + D) + "_finalPrice"), I), IntegerEntry((y + "_recordPrice"), aa), DeleteEntry(((((("address_" + H) + "_auction_") + D) + "_bid_") + E)), DeleteEntry((((("address_" + U) + "_auction_") + D) + "_lockedNFT")), ScriptTransfer(L.originCaller, fraction(I, (1000 - Y), 1000), G), ScriptTransfer(addressFromStringValue(H), 1, fromBase58String(y))] ++ ab)
325+ else [ScriptTransfer(p(), fraction(M, fraction(ac, 6, 10), 1000), unit), ScriptTransfer(s(), fraction(M, fraction(ac, 6, 10), 1000), unit)]
326+ ([StringEntry((((("auction_" + H) + "_bid_") + I) + "_status"), "finished"), StringEntry((("auction_" + H) + "_status"), "finished"), StringEntry((((("assetId_" + A) + "_bid_") + I) + "_data"), (((((("{\"auctionId\": \"" + H) + "\", \"author\": \"") + toString(P.originCaller)) + "\", \"amount\": \"") + toString(M)) + "\", \"status\": \"finished\"}")), IntegerEntry((("auction_" + H) + "_finalPrice"), M), IntegerEntry((A + "_recordPrice"), ae), DeleteEntry(((((("address_" + L) + "_auction_") + H) + "_bid_") + I)), DeleteEntry((((("address_" + Y) + "_auction_") + H) + "_lockedNFT")), ScriptTransfer(P.originCaller, fraction(M, (1000 - ac), 1000), K), ScriptTransfer(addressFromStringValue(L), 1, fromBase58String(A))] ++ af)
293327 }
294328 }
295329
296330
297-@Verifier(ag)
298-func ah () = if (K())
299- then sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
331+@Verifier(ak)
332+func al () = if (O())
333+ then sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
300334 else {
301- let ai = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
302- let aj = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
303- let ak = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
304- let al = if (sigVerify(ag.bodyBytes, ag.proofs[0], ai))
335+ let am = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
336+ let an = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
337+ let ao = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
338+ let ap = if (sigVerify(ak.bodyBytes, ak.proofs[0], am))
305339 then 1
306- else if (sigVerify(ag.bodyBytes, ag.proofs[1], ai))
340+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], am))
307341 then 1
308- else if (sigVerify(ag.bodyBytes, ag.proofs[2], ai))
342+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], am))
309343 then 1
310344 else 0
311- let am = if (sigVerify(ag.bodyBytes, ag.proofs[0], aj))
345+ let aq = if (sigVerify(ak.bodyBytes, ak.proofs[0], an))
312346 then 1
313- else if (sigVerify(ag.bodyBytes, ag.proofs[1], aj))
347+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], an))
314348 then 1
315- else if (sigVerify(ag.bodyBytes, ag.proofs[2], aj))
349+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], an))
316350 then 1
317351 else 0
318- let an = if (sigVerify(ag.bodyBytes, ag.proofs[0], ak))
352+ let ar = if (sigVerify(ak.bodyBytes, ak.proofs[0], ao))
319353 then 1
320- else if (sigVerify(ag.bodyBytes, ag.proofs[1], ak))
354+ else if (sigVerify(ak.bodyBytes, ak.proofs[1], ao))
321355 then 1
322- else if (sigVerify(ag.bodyBytes, ag.proofs[2], ak))
356+ else if (sigVerify(ak.bodyBytes, ak.proofs[2], ao))
323357 then 1
324358 else 0
325- let ao = ((al + am) + an)
326- let d = ag
327- (ao >= 2)
359+ let as = ((ap + aq) + ar)
360+ let d = ak
361+ (as >= 2)
328362 }
329363

github/deemru/w8io/3ef1775 
268.68 ms