tx · DL6LMqPNMUaQfLgAbqgmVaujgn12VQMftz6QJN6ZZDst

3N2D6tJAXzcTDgUiTWmcdCHd6ctYwNENuBn:  -0.01000000 Waves

2022.11.01 12:36 [2297871] smart account 3N2D6tJAXzcTDgUiTWmcdCHd6ctYwNENuBn > SELF 0.00000000 Waves

{ "type": 13, "id": "DL6LMqPNMUaQfLgAbqgmVaujgn12VQMftz6QJN6ZZDst", "fee": 1000000, "feeAssetId": null, "timestamp": 1667295441165, "version": 2, "chainId": 84, "sender": "3N2D6tJAXzcTDgUiTWmcdCHd6ctYwNENuBn", "senderPublicKey": "Cq4RbcVcQJpCWyHiACDqUf2PbU8PaX949Dun9wRSeDzE", "proofs": [ "3C8CeuPv37LueAMiS9X3fdMNskw7NKD3Gm5ykKigct5oV2pjUqM1tBrNv6zFk6NGhk9DBE2iFCiv7HY3aeuTNRqS" ], "script": "base64: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", "height": 2297871, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: rjTk5qTuenUvWM71RPRYtopgoruHzxKU1zwb3aA9Rkm Next: 6FtvMC2dQoa5NeVc1WMVD7tvD2Fo48QvkVXXJjtBDjFw Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let maxAuctionDuration = (1440 * 30)
4+let kEggIssued = "wasInited"
5+
6+let kAssetId = "newEgg_assetId"
7+
8+let kTotalSwapped = "totalSwapped"
9+
10+let oldEggAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
511
612 @Callable(i)
7-func startAuction (duration,startPrice,priceAssetId) = {
8- let auctionId = toBase58String(i.transactionId)
9- let endHeight = (lastBlock.height + duration)
10- let pmt = extract(i.payment)
11- if ((duration > maxAuctionDuration))
12- then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
13- else WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
14- then toBase58String(value(pmt.assetId))
15- else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
16- }
13+func issueNewEgg () = if ((getBoolean(kEggIssued) != unit))
14+ then throw(("New EGG is already issued and its asset id is: " + getStringValue(kAssetId)))
15+ else {
16+ let newEgg = Issue("Duck Egg", "Utility and Reward token @ WavesDucks.com game. The duckiest token in the world.", 1, 8, true, unit, 0)
17+ let newEggId = calculateAssetId(newEgg)
18+[newEgg, BooleanEntry(kEggIssued, true), StringEntry(kAssetId, toBase58String(newEggId))]
19+ }
1720
1821
1922
2023 @Callable(i)
21-func bid (auctionId) = {
22- let pmt = extract(i.payment)
23- let pmtAssetIdStr = if (isDefined(pmt.assetId))
24- then toBase58String(value(pmt.assetId))
25- else "WAVES"
26- let callerAddressStr = toBase58String(i.caller.bytes)
27- let endHeight = getIntegerValue(this, auctionId)
28- let startPrice = getIntegerValue(this, (auctionId + "_startPrice"))
29- let priceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
30- let winAmount = getInteger(this, (auctionId + "_winAmount"))
31- let winner = getString(this, (auctionId + "_winner"))
32- let bidFromTheSameUser = if (isDefined(winner))
33- then (value(winner) == callerAddressStr)
34- else false
35- let totalBidAmount = (pmt.amount + (if (bidFromTheSameUser)
36- then value(winAmount)
37- else 0))
38- if ((lastBlock.height >= endHeight))
39- then throw("Auction already finished")
40- else if ((priceAssetId != pmtAssetIdStr))
41- then throw((("Bid must be in asset '" + priceAssetId) + "'"))
42- else if (if (if (isDefined(winAmount))
43- then (value(winAmount) >= totalBidAmount)
44- else false)
45- then true
46- else if (!(isDefined(winAmount)))
47- then (startPrice >= totalBidAmount)
48- else false)
49- then throw(("Bid must be more then " + toString(if (isDefined(winAmount))
50- then value(winAmount)
51- else startPrice)))
52- else if (if (bidFromTheSameUser)
53- then true
54- else !(isDefined(winner)))
55- then WriteSet([DataEntry((auctionId + "_winner"), callerAddressStr), DataEntry((auctionId + "_winAmount"), totalBidAmount)])
56- else {
57- let previousBidderAddr = addressFromStringValue(value(winner))
58- let priceAsset = if (if ((priceAssetId == "WAVES"))
59- then true
60- else (priceAssetId == ""))
61- then unit
62- else fromBase58String(priceAssetId)
63- ScriptResult(WriteSet([DataEntry((auctionId + "_winner"), callerAddressStr), DataEntry((auctionId + "_winAmount"), totalBidAmount)]), TransferSet([ScriptTransfer(previousBidderAddr, value(winAmount), priceAsset)]))
64- }
65- }
24+func swapEgg () = if ((size(i.payments) != 1))
25+ then throw("You can attach only EGG tokens")
26+ else if ((value(i.payments[0]).assetId != oldEggAssetId))
27+ then throw("You can attach only EGG tokens")
28+ else {
29+ let totalSwappedVal = match getInteger(kTotalSwapped) {
30+ case int: Int =>
31+ int
32+ case _ =>
33+ 0
34+ }
35+ let newEggAssetId = fromBase58String(getStringValue(kAssetId))
36+ let toSwapAmount = value(i.payments[0]).amount
37+ let swappedAmount = (toSwapAmount * 1000000)
38+ let reissue = Reissue(newEggAssetId, swappedAmount, true)
39+[reissue, IntegerEntry((("swap_" + toBase58String(i.transactionId)) + "_amount"), toSwapAmount), IntegerEntry(kTotalSwapped, (totalSwappedVal + toSwapAmount)), ScriptTransfer(i.caller, swappedAmount, newEggAssetId)]
40+ }
6641
6742
68-
69-@Callable(i)
70-func withdraw (auctionId) = {
71- let pmt = extract(i.payment)
72- let pmtAssetIdStr = if (isDefined(pmt.assetId))
73- then toBase58String(value(pmt.assetId))
74- else "WAVES"
75- let callerAddressStr = toBase58String(i.caller.bytes)
76- let endHeight = getIntegerValue(this, auctionId)
77- let organizer = getStringValue(this, (auctionId + "_organizer"))
78- let winner = getString(this, (auctionId + "_winner"))
79- let lotAssetId = getStringValue(this, (auctionId + "_lot_assetId"))
80- let lotAmount = getIntegerValue(this, (auctionId + "_lot_amount"))
81- let priceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
82- let winAmount = getIntegerValue(this, (auctionId + "_winAmount"))
83- let lotAsset = if ((lotAssetId == "WAVES"))
84- then unit
85- else fromBase58String(lotAssetId)
86- let priceAsset = if (if ((priceAssetId == "WAVES"))
87- then true
88- else (priceAssetId == ""))
89- then unit
90- else fromBase58String(priceAssetId)
91- let winnerAddr = addressFromStringValue(value(winner))
92- let organizerAddr = addressFromStringValue(value(organizer))
93- let betAmount = getInteger(this, ((auctionId + "_bidder_") + callerAddressStr))
94- if ((endHeight > lastBlock.height))
95- then throw("Auction is not finished yet")
96- else if (!(isDefined(winner)))
97- then if (isDefined(getString(this, (auctionId + "_lot_passed"))))
98- then throw("Organizer has already got his lot back")
99- else ScriptResult(WriteSet([DataEntry((auctionId + "_lot_passed"), organizer)]), TransferSet([ScriptTransfer(organizerAddr, lotAmount, lotAsset)]))
100- else if (isDefined(getString(this, (auctionId + "_lot_passed"))))
101- then throw("Lot is already passed to the winner, and organizer got his reward")
102- else ScriptResult(WriteSet([DataEntry((auctionId + "_lot_passed"), toBase58String(winnerAddr.bytes))]), TransferSet([ScriptTransfer(winnerAddr, lotAmount, lotAsset), ScriptTransfer(organizerAddr, winAmount, priceAsset)]))
103- }
104-
43+@Verifier(tx)
44+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
10545

github/deemru/w8io/169f3d6 
56.26 ms