tx · GsjCA1cpQw944yMhzZxRmy29yvartR8GkxG8yZxxXdmX

3MvU8vDCk4NkA1Ag4vE3mETA4U9ioFh6VEM:  -0.01500000 Waves

2019.12.14 10:08 [808212] smart account 3MvU8vDCk4NkA1Ag4vE3mETA4U9ioFh6VEM > SELF 0.00000000 Waves

{ "type": 13, "id": "GsjCA1cpQw944yMhzZxRmy29yvartR8GkxG8yZxxXdmX", "fee": 1500000, "feeAssetId": null, "timestamp": 1576307278565, "version": 1, "sender": "3MvU8vDCk4NkA1Ag4vE3mETA4U9ioFh6VEM", "senderPublicKey": "LknnJnwRo6xRdriHmjgVbRDgpexijZFTYBU3Lw4HBS1", "proofs": [ "43wGcsKhvSx8n6MimCDiGkKyg3VmiFkP2jTthUREeW5wNkVPkaQNVVpzPgPYBtk7JBofjQ4pXPfQG7kchCtXxQmv" ], "script": "base64:AAIDAAAAAAAAAAcIARIDCgEIAAAAAAAAAAEAAAABaQEAAAADYmlkAAAAAQAAAAlhdWN0aW9uSWQEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2VuZFRpbWUJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAhfZW5kVGltZQQAAAAIbWluUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAlfbWluUHJpY2UEAAAADWhpZ2hlc3RCaWRBbXQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAlhdWN0aW9uSWQCAAAADl9oaWdoZXN0QmlkQW10BAAAAA1oaWdoZXN0QmlkZGVyCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAA5faGlnaGVzdEJpZGRlcgQAAAASYmlkRnJvbVRoZVNhbWVVc2VyAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAADWhpZ2hlc3RCaWRkZXIJAAAAAAAAAgkBAAAABXZhbHVlAAAAAQUAAAANaGlnaGVzdEJpZGRlcgUAAAANY2FsbGVyQWRkcmVzcwcEAAAADnRvdGFsQmlkQW1vdW50CQAAZAAAAAIIBQAAAANwbXQAAAAGYW1vdW50AwUAAAASYmlkRnJvbVRoZVNhbWVVc2VyCQEAAAAFdmFsdWUAAAABBQAAAA1oaWdoZXN0QmlkQW10AAAAAAAAAAAAAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAJYXVjdGlvbklkCQAAAgAAAAECAAAAFEF1Y3Rpb24gSWQgbm90IGZvdW5kAwkAAGcAAAACCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAUAAAAHZW5kVGltZQkAAAIAAAABAgAAABFBdWN0aW9uIENvbXBsZXRlZAMDAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAANaGlnaGVzdEJpZEFtdAkAAGcAAAACBQAAAAhtaW5QcmljZQUAAAAOdG90YWxCaWRBbW91bnQHBgMJAQAAAAlpc0RlZmluZWQAAAABBQAAAA1oaWdoZXN0QmlkQW10CQAAZwAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAADWhpZ2hlc3RCaWRBbXQFAAAADnRvdGFsQmlkQW1vdW50BwkAAAIAAAABCQABLAAAAAICAAAAFkJpZCBtdXN0IGJlIG1vcmUgdGhlbiADCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAA1oaWdoZXN0QmlkQW10CQABpAAAAAEFAAAACG1pblByaWNlCQABpAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAADWhpZ2hlc3RCaWRBbXQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAA1oaWdoZXN0QmlkZGVyCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAAOX2hpZ2hlc3RCaWRkZXIFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAA5faGlnaGVzdEJpZEFtdAUAAAAOdG90YWxCaWRBbW91bnQFAAAAA25pbAMFAAAAEmJpZEZyb21UaGVTYW1lVXNlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhdWN0aW9uSWQCAAAADl9oaWdoZXN0QmlkQW10BQAAAA50b3RhbEJpZEFtb3VudAUAAAADbmlsBAAAAA5wcmV2aW91c0JpZGRlcgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAAFdmFsdWUAAAABBQAAAA1oaWdoZXN0QmlkZGVyCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAlhdWN0aW9uSWQCAAAADl9oaWdoZXN0QmlkZGVyBQAAAA1jYWxsZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAAOX2hpZ2hlc3RCaWRBbXQFAAAADnRvdGFsQmlkQW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAOcHJldmlvdXNCaWRkZXIJAQAAAAV2YWx1ZQAAAAEFAAAADWhpZ2hlc3RCaWRBbXQFAAAABHVuaXQFAAAAA25pbAAAAADWLpcD", "chainId": 84, "height": 808212, "spentComplexity": 0 } View: original | compacted Prev: AqFJwQ4A2QWNVrAbZj1wHZD4bKAabRoj5ntvV6V97FmP Next: 5Yryt7zhTg8nYLeEbhC3HFGMzMWoqu1eqQiqMMQ3ZKxw Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let auctionDuration = (1440 * 1)
5-
6-@Callable(i)
7-func beginAuction (minPrice,duration) = if ((duration > auctionDuration))
8- then throw((((("Specified duration(" + toString(duration)) + ") exceeds the maximum duration(") + toString(auctionDuration)) + ")"))
9- else {
10- let auctionId = toBase58String(i.transactionId)
11- let endTime = (lastBlock.height + duration)
12- let pmt = extract(i.payment)
13- WriteSet([DataEntry(auctionId, auctionId), DataEntry((auctionId + "_endTime"), endTime), DataEntry((auctionId + "_owner"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_itemId"), if (isDefined(pmt.assetId))
14- then toBase58String(value(pmt.assetId))
15- else throw("Item not atached")), DataEntry((auctionId + "_minPrice"), minPrice)])
16- }
17-
184
195
206 @Callable(i)
5642 }
5743
5844
59-
60-@Callable(i)
61-func withdraw (auctionId) = {
62- let pmt = extract(i.payment)
63- let callerAddress = toBase58String(i.caller.bytes)
64- let endTime = getIntegerValue(this, (auctionId + "_endTime"))
65- let owner = getStringValue(this, (auctionId + "_owner"))
66- let highestBidder = getString(this, (auctionId + "_highestBidder"))
67- let itemId = getStringValue(this, (auctionId + "_itemId"))
68- let highestBidAmt = getIntegerValue(this, (auctionId + "_highestBidAmt"))
69- let highestBidderAddr = addressFromStringValue(value(highestBidder))
70- let ownerAddr = addressFromStringValue(value(owner))
71- let itemAddr = addressFromStringValue(value(itemId))
72- if ((endTime > lastBlock.height))
73- then throw("Auction is not finished yet")
74- else if (!(isDefined(highestBidder)))
75- then if (!(isDefined(getBoolean(this, (auctionId + "_status")))))
76- then throw("Owner already withdrawn the item")
77- else ScriptResult(WriteSet([DataEntry((auctionId + "_status"), true)]), TransferSet([ScriptTransfer(ownerAddr, 1, base58'itemAddr')]))
78- else if (isDefined(getBoolean(this, (auctionId + "_status"))))
79- then throw("The item is transfered to the highest bidder and the bid amount is transfered to the owner")
80- else ScriptResult(WriteSet([DataEntry((auctionId + "_status"), true)]), TransferSet([ScriptTransfer(highestBidderAddr, 1, base58'itemAddr'), ScriptTransfer(ownerAddr, highestBidAmt, unit)]))
81- }
82-
83-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let auctionDuration = (1440 * 1)
5-
6-@Callable(i)
7-func beginAuction (minPrice,duration) = if ((duration > auctionDuration))
8- then throw((((("Specified duration(" + toString(duration)) + ") exceeds the maximum duration(") + toString(auctionDuration)) + ")"))
9- else {
10- let auctionId = toBase58String(i.transactionId)
11- let endTime = (lastBlock.height + duration)
12- let pmt = extract(i.payment)
13- WriteSet([DataEntry(auctionId, auctionId), DataEntry((auctionId + "_endTime"), endTime), DataEntry((auctionId + "_owner"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_itemId"), if (isDefined(pmt.assetId))
14- then toBase58String(value(pmt.assetId))
15- else throw("Item not atached")), DataEntry((auctionId + "_minPrice"), minPrice)])
16- }
17-
184
195
206 @Callable(i)
217 func bid (auctionId) = {
228 let pmt = extract(i.payment)
239 let callerAddress = toBase58String(i.caller.bytes)
2410 let endTime = getIntegerValue(this, (auctionId + "_endTime"))
2511 let minPrice = getIntegerValue(this, (auctionId + "_minPrice"))
2612 let highestBidAmt = getInteger(this, (auctionId + "_highestBidAmt"))
2713 let highestBidder = getString(this, (auctionId + "_highestBidder"))
2814 let bidFromTheSameUser = if (isDefined(highestBidder))
2915 then (value(highestBidder) == callerAddress)
3016 else false
3117 let totalBidAmount = (pmt.amount + (if (bidFromTheSameUser)
3218 then value(highestBidAmt)
3319 else 0))
3420 if (!(isDefined(getIntegerValue(this, auctionId))))
3521 then throw("Auction Id not found")
3622 else if ((lastBlock.height >= endTime))
3723 then throw("Auction Completed")
3824 else if (if (if (!(isDefined(highestBidAmt)))
3925 then (minPrice >= totalBidAmount)
4026 else false)
4127 then true
4228 else if (isDefined(highestBidAmt))
4329 then (value(highestBidAmt) >= totalBidAmount)
4430 else false)
4531 then throw(("Bid must be more then " + (if (!(isDefined(highestBidAmt)))
4632 then toString(minPrice)
4733 else toString(value(highestBidAmt)))))
4834 else if (!(isDefined(highestBidder)))
4935 then WriteSet([DataEntry((auctionId + "_highestBidder"), callerAddress), DataEntry((auctionId + "_highestBidAmt"), totalBidAmount)])
5036 else if (bidFromTheSameUser)
5137 then WriteSet([DataEntry((auctionId + "_highestBidAmt"), totalBidAmount)])
5238 else {
5339 let previousBidder = addressFromStringValue(value(highestBidder))
5440 ScriptResult(WriteSet([DataEntry((auctionId + "_highestBidder"), callerAddress), DataEntry((auctionId + "_highestBidAmt"), totalBidAmount)]), TransferSet([ScriptTransfer(previousBidder, value(highestBidAmt), unit)]))
5541 }
5642 }
5743
5844
59-
60-@Callable(i)
61-func withdraw (auctionId) = {
62- let pmt = extract(i.payment)
63- let callerAddress = toBase58String(i.caller.bytes)
64- let endTime = getIntegerValue(this, (auctionId + "_endTime"))
65- let owner = getStringValue(this, (auctionId + "_owner"))
66- let highestBidder = getString(this, (auctionId + "_highestBidder"))
67- let itemId = getStringValue(this, (auctionId + "_itemId"))
68- let highestBidAmt = getIntegerValue(this, (auctionId + "_highestBidAmt"))
69- let highestBidderAddr = addressFromStringValue(value(highestBidder))
70- let ownerAddr = addressFromStringValue(value(owner))
71- let itemAddr = addressFromStringValue(value(itemId))
72- if ((endTime > lastBlock.height))
73- then throw("Auction is not finished yet")
74- else if (!(isDefined(highestBidder)))
75- then if (!(isDefined(getBoolean(this, (auctionId + "_status")))))
76- then throw("Owner already withdrawn the item")
77- else ScriptResult(WriteSet([DataEntry((auctionId + "_status"), true)]), TransferSet([ScriptTransfer(ownerAddr, 1, base58'itemAddr')]))
78- else if (isDefined(getBoolean(this, (auctionId + "_status"))))
79- then throw("The item is transfered to the highest bidder and the bid amount is transfered to the owner")
80- else ScriptResult(WriteSet([DataEntry((auctionId + "_status"), true)]), TransferSet([ScriptTransfer(highestBidderAddr, 1, base58'itemAddr'), ScriptTransfer(ownerAddr, highestBidAmt, unit)]))
81- }
82-
83-

github/deemru/w8io/3ef1775 
51.46 ms