tx · Gq8Fh7JoB6c99n9EeonXBhPTK6VjSvEJ4tXNdunqpZJR

3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU:  -0.01000000 Waves

2021.05.06 21:44 [2578843] smart account 3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU > SELF 0.00000000 Waves

{ "type": 13, "id": "Gq8Fh7JoB6c99n9EeonXBhPTK6VjSvEJ4tXNdunqpZJR", "fee": 1000000, "feeAssetId": null, "timestamp": 1620326692648, "version": 2, "chainId": 87, "sender": "3P8gsxa1xt1xSjDP4HR728y7o9QQginK2eU", "senderPublicKey": "FQcGKT4w9tnuigudoGoUWmGxV6JqMaac6kwNKWaA61uJ", "proofs": [ "65FJ3Cn5NDs3rEKbTP4eVdWEM7posLVojVmoBzechNitFuq9AwKFJnjmboPAwcoL99mt8VWT8ikrtQbFv4oBvmnz" ], "script": "base64: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", "height": 2578843, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: McVhBmKfPng5BoCjJbdqeJpMXZ2qenquppnGTH9GyfC Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let incubatorAddress = base58'3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh'
5+
6+func tryGetInteger (key) = {
7+ let val = match getInteger(this, key) {
8+ case b: Int =>
9+ b
10+ case _ =>
11+ 0
12+ }
13+ val
14+ }
15+
16+
17+func tryGetString (key) = {
18+ let val = match getString(this, key) {
19+ case b: String =>
20+ b
21+ case _ =>
22+ ""
23+ }
24+ val
25+ }
26+
27+
28+func getAssetGenotype (assetId) = {
29+ let asset = match getString(this, toBase58String(assetId)) {
30+ case b: String =>
31+ b
32+ case _ =>
33+ ""
34+ }
35+ asset
36+ }
37+
38+
39+@Callable(i)
40+func initAuction (startPrice,instantPrice) = {
41+ let auctionId = toBase58String(i.transactionId)
42+ let pmt = value(i.payments[0])
43+ let assetId = value(pmt.assetId)
44+ let asset = getAssetGenotype(assetId)
45+ if ((asset == ""))
46+ then throw("You can only sell an NFT-duck created in incubator")
47+ else [StringEntry((("auction_" + auctionId) + "_status"), "open"), StringEntry((("auction_" + auctionId) + "_assetGen"), asset), BinaryEntry((("auction_" + auctionId) + "_assetId"), assetId), IntegerEntry((("auction_" + auctionId) + "_startedAt"), lastBlock.timestamp), StringEntry((("auction_" + auctionId) + "_owner"), toString(i.caller)), IntegerEntry((("auction_" + auctionId) + "_startPrice"), startPrice), IntegerEntry((("auction_" + auctionId) + "_instantPrice"), instantPrice)]
48+ }
49+
50+
51+
52+@Callable(i)
53+func cancelAuction (auctionId) = {
54+ let auctionOwner = tryGetString((("auction_" + auctionId) + "_owner"))
55+ if ((toString(i.caller) != auctionOwner))
56+ then throw("Only allowed to auction owner")
57+ else [StringEntry((("auction_" + auctionId) + "_status"), "cancelled"), ScriptTransfer(i.caller, 1, getBinary(this, (("auction_" + auctionId) + "_assetId")))]
58+ }
59+
60+
61+
62+@Callable(i)
63+func instantBuy (auctionId) = {
64+ let pmt = value(i.payments[0])
65+ let amount = pmt.amount
66+ let auctionStatus = tryGetString((("auction_" + auctionId) + "_status"))
67+ if ((pmt.assetId != unit))
68+ then throw("Auction does only support WAVES payments.")
69+ else if ((auctionStatus != "open"))
70+ then throw("Auction is close. You can place a bid.")
71+ else {
72+ let instantPrice = tryGetInteger((("auction_" + auctionId) + "_instantPrice"))
73+ if ((amount > instantPrice))
74+ then throw(("For instant purchase you need to pay at least " + toString(instantPrice)))
75+ else {
76+ let auctionOwner = tryGetString((("auction_" + auctionId) + "_owner"))
77+[StringEntry((("auction_" + auctionId) + "_status"), "finished"), ScriptTransfer(Address(toBytes(auctionOwner)), amount, unit), ScriptTransfer(i.caller, 1, getBinary(this, (("auction_" + auctionId) + "_assetId")))]
78+ }
79+ }
80+ }
81+
82+
83+
84+@Callable(i)
85+func placeBid (auctionId) = {
86+ let pmt = value(i.payments[0])
87+ let amount = pmt.amount
88+ let bidId = toBase58String(i.transactionId)
89+ if ((pmt.assetId != unit))
90+ then throw("Auction does only support WAVES payments")
91+ else [StringEntry((((("auction_" + auctionId) + "_bid_") + bidId) + "_author"), toString(i.caller)), IntegerEntry((((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"), amount), StringEntry((((("auction_" + auctionId) + "_bid_") + bidId) + "_status"), "open")]
92+ }
93+
94+
95+
96+@Callable(i)
97+func cancelBid (auctionId,bidId) = {
98+ let pmt = value(i.payments[0])
99+ let amount = pmt.amount
100+ let bidAuthor = tryGetString((((("auction_" + auctionId) + "_bid_") + bidId) + "_author"))
101+ let bidAmount = tryGetInteger((((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
102+ if ((toString(i.caller) != bidAuthor))
103+ then throw("Only allowed to the bid author")
104+ else [StringEntry((((("auction_" + auctionId) + "_bid_") + bidId) + "_status"), "cancelled"), ScriptTransfer(i.caller, bidAmount, unit)]
105+ }
106+
107+
108+
109+@Callable(i)
110+func acceptBid (auctionId,bidId) = {
111+ let auctionOwner = tryGetString((("auction_" + auctionId) + "_owner"))
112+ let bidAuthor = tryGetString((((("auction_" + auctionId) + "_bid_") + bidId) + "_author"))
113+ let bidAmount = tryGetInteger((((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
114+ let bidStatus = tryGetString((((("auction_" + auctionId) + "_bid_") + bidId) + "_status"))
115+ let assetId = toBytes(tryGetString((("auction_" + auctionId) + "_assetId")))
116+ if ((toString(i.caller) != auctionOwner))
117+ then throw("Only allowed to auction owner")
118+ else if ((bidStatus != "open"))
119+ then throw("Bid was cancelled and cannot be accepted")
120+ else [StringEntry((("auction_" + auctionId) + "_status"), "finished"), ScriptTransfer(i.caller, bidAmount, unit), ScriptTransfer(Address(toBytes(bidAuthor)), 1, assetId)]
121+ }
122+
123+
124+@Verifier(tx)
125+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
126+

github/deemru/w8io/3ef1775 
35.07 ms