tx · DxnMfjvnroe6WCyLmeEwXi3LxxsJdTAgcoUW9vay7pWu

3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk:  -0.00300000 Waves

2022.07.11 23:53 [2135582] smart account 3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk > SELF 0.00000000 Waves

{ "type": 13, "id": "DxnMfjvnroe6WCyLmeEwXi3LxxsJdTAgcoUW9vay7pWu", "fee": 300000, "feeAssetId": null, "timestamp": 1657572803354, "version": 2, "chainId": 84, "sender": "3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk", "senderPublicKey": "AR4BeE6hYADMvKxgRQs4ADN3krEqb2j8WE3WfJxzL3zE", "proofs": [ "5q4uFDzJE3rxkQmSEzNWWXw5zbe1J1GeuDYjQHmbBwcS5vYxPZVckuDrbCynR99Rsgt4G522Jy4E64z1JhEHkpPS" ], "script": "base64:BgINCAISBQoDCAgIEgASAAsABXdhdmVzAIDC1y8ADnRpY2tldFByaWNlSW50AMCEPQALdGlja2V0UHJpY2UFDnRpY2tldFByaWNlSW50AAZpbnZGZWUA0IYDABJ3aXRoZHJhd0ZlZVBlcmNlbnQABQENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAESZ2V0VGlja2V0c0NvdW50S2V5AQ1hZGRyZXNzU3RyaW5nCQCsAgIFDWFkZHJlc3NTdHJpbmcCDV90aWNrZXRzQ291bnQBDWdhbWVXaW5uZXJLZXkBBmdhbWVJZAkArAICBQZnYW1lSWQCB193aW5uZXIBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV9hdmFpbGFibGVSZXdhcmRzAQ9nZXRUaWNrZXRzQ291bnQBDWFkZHJlc3NTdHJpbmcJAQ10cnlHZXRJbnRlZ2VyAQkBEmdldFRpY2tldHNDb3VudEtleQEFDWFkZHJlc3NTdHJpbmcBDWNvbnN1bWVUaWNrZXQBCnBsYXllckFkZHIEEmN1cnJlbnRUaWNrZXRDb3VudAkBD2dldFRpY2tldHNDb3VudAEFCnBsYXllckFkZHIEFW5ld0N1cnJlbnRUaWNrZXRDb3VudAkAZQIFEmN1cnJlbnRUaWNrZXRDb3VudAABAwkAZgIAAAUVbmV3Q3VycmVudFRpY2tldENvdW50AAAFFW5ld0N1cnJlbnRUaWNrZXRDb3VudAMBaQEQc2V0V2lubmVySGVhZHNVcAMGZ2FtZUlkDXdpbm5lckFkZHJTdHIPb3RoZXJQbGF5ZXJBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQQTYXZhaWxhYmxlUmV3YXJkc0tleQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNd2lubmVyQWRkclN0cgQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQUTYXZhaWxhYmxlUmV3YXJkc0tleQQUbmV3VGlja2V0Q291bnRXaW5uZXIJAQ1jb25zdW1lVGlja2V0AQUNd2lubmVyQWRkclN0cgQZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgkBDWNvbnN1bWVUaWNrZXQBBQ9vdGhlclBsYXllckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdhbWVXaW5uZXJLZXkBBQZnYW1lSWQFDXdpbm5lckFkZHJTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2F2YWlsYWJsZVJld2FyZHNLZXkJAGQCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkAaAIFC3RpY2tldFByaWNlAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ13aW5uZXJBZGRyU3RyBRRuZXdUaWNrZXRDb3VudFdpbm5lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEFD290aGVyUGxheWVyQWRkcgUZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgUDbmlsAWkBD3dpdGhkcmF3UmV3YXJkcwAEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgQWYWN0dWFsQXZhaWxhYmxlUmV3YXJkcwkAZQIJAGUCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwUGaW52RmVlCQBrAwUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFEndpdGhkcmF3RmVlUGVyY2VudABkAwkAZwIAAAUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAAIBAiBObyBhdmFpbGFibGUgcmV3YXJkcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUWYWN0dWFsQXZhaWxhYmxlUmV3YXJkcwUEdW5pdAUDbmlsAWkBCmJ1eVRpY2tldHMABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFQbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQInVGlja2V0cyBjYW4gb25seSBpYmUgcHVyY2hhc2VkIGluIFdhdmVzAwkBAiE9AggFA3BtdAZhbW91bnQFC3RpY2tldFByaWNlCQACAQkArAICCQCsAgICH1RoZSBwYXltZW50IG11c3QgYmUgb2YgZXhhY3RseSAJAKQDAQUOdGlja2V0UHJpY2VJbnQCBiB3YXZlcwQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNjdXJyZW50VGlja2V0c0NvdW50CQENdHJ5R2V0SW50ZWdlcgEJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQBkAgUTY3VycmVudFRpY2tldHNDb3VudAABBQNuaWwAAQECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlhFQ9x", "height": 2135582, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H2gj8zVDn1KJSbgJtZTJivuHsRany5dwvfSFyZSjEg8a Next: BDrp6kfmtDErqeTgAwUZMtJFEuxuThcewtCmA1qkfTaR Diff:
OldNewDifferences
99
1010 let invFee = 50000
1111
12-let withdrawFeePercent = 10
12+let withdrawFeePercent = 5
1313
1414 func tryGetInteger (key) = match getInteger(this, key) {
1515 case b: Int =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let waves = 100000000
55
66 let ticketPriceInt = 1000000
77
88 let ticketPrice = ticketPriceInt
99
1010 let invFee = 50000
1111
12-let withdrawFeePercent = 10
12+let withdrawFeePercent = 5
1313
1414 func tryGetInteger (key) = match getInteger(this, key) {
1515 case b: Int =>
1616 b
1717 case _ =>
1818 0
1919 }
2020
2121
2222 func getTicketsCountKey (addressString) = (addressString + "_ticketsCount")
2323
2424
2525 func gameWinnerKey (gameId) = (gameId + "_winner")
2626
2727
2828 func addressAvailableRewardsKey (address) = (address + "_availableRewards")
2929
3030
3131 func getTicketsCount (addressString) = tryGetInteger(getTicketsCountKey(addressString))
3232
3333
3434 func consumeTicket (playerAddr) = {
3535 let currentTicketCount = getTicketsCount(playerAddr)
3636 let newCurrentTicketCount = (currentTicketCount - 1)
3737 if ((0 > newCurrentTicketCount))
3838 then 0
3939 else newCurrentTicketCount
4040 }
4141
4242
4343 @Callable(i)
4444 func setWinnerHeadsUp (gameId,winnerAddrStr,otherPlayerAddr) = if ((i.caller != this))
4545 then throw("Admin Only")
4646 else {
4747 let availableRewardsKey = addressAvailableRewardsKey(winnerAddrStr)
4848 let currentAvailableRewards = tryGetInteger(availableRewardsKey)
4949 let newTicketCountWinner = consumeTicket(winnerAddrStr)
5050 let newTicketCountOtherPlayer = consumeTicket(otherPlayerAddr)
5151 [StringEntry(gameWinnerKey(gameId), winnerAddrStr), IntegerEntry(availableRewardsKey, (currentAvailableRewards + (ticketPrice * 2))), IntegerEntry(getTicketsCountKey(winnerAddrStr), newTicketCountWinner), IntegerEntry(getTicketsCountKey(otherPlayerAddr), newTicketCountOtherPlayer)]
5252 }
5353
5454
5555
5656 @Callable(i)
5757 func withdrawRewards () = {
5858 let callerAddrStr = toBase58String(i.caller.bytes)
5959 let currentAvailableRewards = tryGetInteger(addressAvailableRewardsKey(callerAddrStr))
6060 let actualAvailableRewards = ((currentAvailableRewards - invFee) - fraction(currentAvailableRewards, withdrawFeePercent, 100))
6161 if ((0 >= currentAvailableRewards))
6262 then throw("No available rewards to withdraw")
6363 else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, actualAvailableRewards, unit)]
6464 }
6565
6666
6767
6868 @Callable(i)
6969 func buyTickets () = {
7070 let pmt = if ((size(i.payments) == 1))
7171 then i.payments[0]
7272 else throw("Please attach exactly one payment")
7373 if (isDefined(pmt.assetId))
7474 then throw("Tickets can only ibe purchased in Waves")
7575 else if ((pmt.amount != ticketPrice))
7676 then throw((("The payment must be of exactly " + toString(ticketPriceInt)) + " waves"))
7777 else {
7878 let callerAddrStr = toBase58String(i.caller.bytes)
7979 let currentTicketsCount = tryGetInteger(getTicketsCountKey(callerAddrStr))
8080 $Tuple2([IntegerEntry(getTicketsCountKey(callerAddrStr), (currentTicketsCount + 1))], 1)
8181 }
8282 }
8383
8484
8585 @Verifier(tx)
8686 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8787

github/deemru/w8io/3ef1775 
50.30 ms