tx · BH1pWCc5hg1NBDet9oVvecCVWT2NFmDc9w4BHnJf1N6C

3N1PPoNT4epUSgdGwx1eNePsZjeYp5RUAcj:  -0.01400000 Waves

2019.06.22 21:30 [553618] smart account 3N1PPoNT4epUSgdGwx1eNePsZjeYp5RUAcj > SELF 0.00000000 Waves

{ "type": 13, "id": "BH1pWCc5hg1NBDet9oVvecCVWT2NFmDc9w4BHnJf1N6C", "fee": 1400000, "feeAssetId": null, "timestamp": 1561228296383, "version": 1, "sender": "3N1PPoNT4epUSgdGwx1eNePsZjeYp5RUAcj", "senderPublicKey": "AomFdZHmK72gCbitdy7X2sUvNueScd3LhY9g2m7DJdo4", "proofs": [ "291rb8H1NnoxGFwT1BDL7spvRAt3snv1MXqwmENFCh5YTYg3NfC7JxGMf6ZWFXm1JoM9j2ufit4bmmBFdeRqKtZC" ], "script": "base64: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Y3Rpb25Mb3RBc3NldElkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAAMX2xvdF9hc3NldElkBAAAABBhdWN0aW9uTG90QW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAALX2xvdF9hbW91bnQEAAAAE2F1Y3Rpb25QcmljZUFzc2V0SWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAA1fcHJpY2VBc3NldElkBAAAABBhdWN0aW9uV2luQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAAKX3dpbkFtb3VudAQAAAAPYXVjdGlvbkxvdEFzc2V0AwkAAAAAAAACBQAAABFhdWN0aW9uTG90QXNzZXRJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAARYXVjdGlvbkxvdEFzc2V0SWQEAAAAEWF1Y3Rpb25QcmljZUFzc2V0AwMJAAAAAAAAAgUAAAATYXVjdGlvblByaWNlQXNzZXRJZAIAAAAFV0FWRVMGCQAAAAAAAAIFAAAAE2F1Y3Rpb25QcmljZUFzc2V0SWQCAAAAAAUAAAAEdW5pdAkAAlkAAAABBQAAABNhdWN0aW9uUHJpY2VBc3NldElkBAAAABFhdWN0aW9uV2lubmVyQWRkcgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAAFdmFsdWUAAAABBQAAAA1hdWN0aW9uV2lubmVyBAAAABRhdWN0aW9uT3JnYW5pemVyQWRkcgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQEAAAAFdmFsdWUAAAABBQAAABBhdWN0aW9uT3JnYW5pemVyBAAAAAliZXRBbW91bnQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAAIX2JpZGRlcl8FAAAAEGNhbGxl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", "chainId": 84, "height": 553618, "spentComplexity": 0 } View: original | compacted Prev: A3Q56WArTCQ5ySw86X9oFBwetu6TzVFrg8su9vrhHFzR Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let maxAuctionDuration = (1440 * 30)
55
66 @Callable(i)
77 func startAuction (duration,startPrice,priceAssetId) = {
88 let auctionId = toBase58String(i.transactionId)
99 let auctionEndHeight = (lastBlock.height + duration)
1010 let pmt = extract(i.payment)
1111 if ((duration > maxAuctionDuration))
1212 then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
1313 else WriteSet([DataEntry(auctionId, auctionEndHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
1414 then toBase58String(value(pmt.assetId))
1515 else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
1616 }
1717
1818
1919
2020 @Callable(i)
2121 func bid (auctionId) = {
2222 let pmt = extract(i.payment)
2323 let pmtAssetIdStr = if (isDefined(pmt.assetId))
2424 then toBase58String(value(pmt.assetId))
2525 else "WAVES"
2626 let callerAddressStr = toBase58String(i.caller.bytes)
2727 let auctionEndHeight = getIntegerValue(this, auctionId)
2828 let auctionPriceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
2929 let auctionWinAmount = getInteger(this, (auctionId + "_winAmount"))
3030 if ((lastBlock.height >= auctionEndHeight))
3131 then throw("Auction already finished")
3232 else if ((auctionPriceAssetId != pmtAssetIdStr))
3333 then throw((("Bid must be in asset '" + auctionPriceAssetId) + "'"))
3434 else if (if (isDefined(auctionWinAmount))
3535 then (value(auctionWinAmount) >= pmt.amount)
3636 else false)
3737 then throw(("Bid must be more then " + toString(pmt.amount)))
3838 else WriteSet([DataEntry(((auctionId + "_bidder_") + callerAddressStr), pmt.amount), DataEntry((auctionId + "_winner"), callerAddressStr), DataEntry((auctionId + "_winAmount"), pmt.amount)])
3939 }
4040
4141
4242
4343 @Callable(i)
4444 func withdraw (auctionId) = {
4545 let pmt = extract(i.payment)
4646 let pmtAssetIdStr = if (isDefined(pmt.assetId))
4747 then toBase58String(value(pmt.assetId))
4848 else "WAVES"
4949 let callerAddressStr = toBase58String(i.caller.bytes)
5050 let auctionEndHeight = getIntegerValue(this, auctionId)
5151 let auctionOrganizer = getStringValue(this, (auctionId + "_organizer"))
5252 let auctionWinner = getString(this, (auctionId + "_winner"))
5353 let auctionLotAssetId = getStringValue(this, (auctionId + "_lot_assetId"))
5454 let auctionLotAmount = getIntegerValue(this, (auctionId + "_lot_amount"))
5555 let auctionPriceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
5656 let auctionWinAmount = getIntegerValue(this, (auctionId + "_winAmount"))
5757 let auctionLotAsset = if ((auctionLotAssetId == "WAVES"))
5858 then unit
5959 else fromBase58String(auctionLotAssetId)
6060 let auctionPriceAsset = if (if ((auctionPriceAssetId == "WAVES"))
6161 then true
6262 else (auctionPriceAssetId == ""))
6363 then unit
6464 else fromBase58String(auctionPriceAssetId)
6565 let auctionWinnerAddr = addressFromStringValue(value(auctionWinner))
6666 let auctionOrganizerAddr = addressFromStringValue(value(auctionOrganizer))
6767 let betAmount = getInteger(this, ((auctionId + "_bidder_") + callerAddressStr))
6868 if ((auctionEndHeight > lastBlock.height))
6969 then throw("Auction is not finished yet")
7070 else if (!(isDefined(auctionWinner)))
7171 then if ((callerAddressStr == auctionOrganizer))
7272 then if (!(isDefined(getBoolean(this, (auctionId + "_lot_passed")))))
7373 then throw("You have already got your lot back")
7474 else ScriptResult(WriteSet([DataEntry((auctionId + "_lot_passed"), true)]), TransferSet([ScriptTransfer(i.caller, auctionLotAmount, auctionLotAsset)]))
7575 else throw("You haven't participate in this auction")
7676 else if (if ((callerAddressStr == auctionOrganizer))
7777 then true
7878 else (callerAddressStr == auctionWinner))
7979 then if (isDefined(getBoolean(this, (auctionId + "_lot_passed"))))
8080 then throw("Lot is already passed to the winner, and organizer got his reward")
8181 else ScriptResult(WriteSet([DataEntry((auctionId + "_lot_passed"), true)]), TransferSet([ScriptTransfer(auctionWinnerAddr, auctionLotAmount, auctionLotAsset), ScriptTransfer(auctionOrganizerAddr, auctionWinAmount, auctionPriceAsset)]))
8282 else if (!(isDefined(betAmount)))
8383 then throw("You didn't bid anything")
8484 else if (isDefined(getBoolean(this, (((auctionId + "_bidder_") + callerAddressStr) + "_return"))))
8585 then throw("You have already got your bid back")
8686 else ScriptResult(WriteSet([DataEntry((((auctionId + "_bidder_") + callerAddressStr) + "_return"), true)]), TransferSet([ScriptTransfer(i.caller, value(betAmount), auctionPriceAsset)]))
8787 }
8888
8989

github/deemru/w8io/873ac7e 
21.48 ms