tx · H2gj8zVDn1KJSbgJtZTJivuHsRany5dwvfSFyZSjEg8a

3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk:  -0.00300000 Waves

2022.07.11 23:51 [2135580] smart account 3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk > SELF 0.00000000 Waves

{ "type": 13, "id": "H2gj8zVDn1KJSbgJtZTJivuHsRany5dwvfSFyZSjEg8a", "fee": 300000, "feeAssetId": null, "timestamp": 1657572720822, "version": 2, "chainId": 84, "sender": "3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk", "senderPublicKey": "AR4BeE6hYADMvKxgRQs4ADN3krEqb2j8WE3WfJxzL3zE", "proofs": [ "4o69wfq9vjdTXHrnAA3Nvp2PJH3XKxkYXoRiZRwGs3sJhTT8MKiiecUipyr9qda7ubdVTsY4tuj8ZZGPgg7afmHr" ], "script": "base64:BgINCAISBQoDCAgIEgASAAsABXdhdmVzAIDC1y8ADnRpY2tldFByaWNlSW50AMCEPQALdGlja2V0UHJpY2UFDnRpY2tldFByaWNlSW50AAZpbnZGZWUA0IYDABJ3aXRoZHJhd0ZlZVBlcmNlbnQACgENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAESZ2V0VGlja2V0c0NvdW50S2V5AQ1hZGRyZXNzU3RyaW5nCQCsAgIFDWFkZHJlc3NTdHJpbmcCDV90aWNrZXRzQ291bnQBDWdhbWVXaW5uZXJLZXkBBmdhbWVJZAkArAICBQZnYW1lSWQCB193aW5uZXIBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV9hdmFpbGFibGVSZXdhcmRzAQ9nZXRUaWNrZXRzQ291bnQBDWFkZHJlc3NTdHJpbmcJAQ10cnlHZXRJbnRlZ2VyAQkBEmdldFRpY2tldHNDb3VudEtleQEFDWFkZHJlc3NTdHJpbmcBDWNvbnN1bWVUaWNrZXQBCnBsYXllckFkZHIEEmN1cnJlbnRUaWNrZXRDb3VudAkBD2dldFRpY2tldHNDb3VudAEFCnBsYXllckFkZHIEFW5ld0N1cnJlbnRUaWNrZXRDb3VudAkAZQIFEmN1cnJlbnRUaWNrZXRDb3VudAABAwkAZgIAAAUVbmV3Q3VycmVudFRpY2tldENvdW50AAAFFW5ld0N1cnJlbnRUaWNrZXRDb3VudAMBaQEQc2V0V2lubmVySGVhZHNVcAMGZ2FtZUlkDXdpbm5lckFkZHJTdHIPb3RoZXJQbGF5ZXJBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQQTYXZhaWxhYmxlUmV3YXJkc0tleQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNd2lubmVyQWRkclN0cgQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQUTYXZhaWxhYmxlUmV3YXJkc0tleQQUbmV3VGlja2V0Q291bnRXaW5uZXIJAQ1jb25zdW1lVGlja2V0AQUNd2lubmVyQWRkclN0cgQZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgkBDWNvbnN1bWVUaWNrZXQBBQ9vdGhlclBsYXllckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdhbWVXaW5uZXJLZXkBBQZnYW1lSWQFDXdpbm5lckFkZHJTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2F2YWlsYWJsZVJld2FyZHNLZXkJAGQCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkAaAIFC3RpY2tldFByaWNlAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ13aW5uZXJBZGRyU3RyBRRuZXdUaWNrZXRDb3VudFdpbm5lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEFD290aGVyUGxheWVyQWRkcgUZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgUDbmlsAWkBD3dpdGhkcmF3UmV3YXJkcwAEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgQWYWN0dWFsQXZhaWxhYmxlUmV3YXJkcwkAZQIJAGUCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwUGaW52RmVlCQBrAwUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFEndpdGhkcmF3RmVlUGVyY2VudABkAwkAZwIAAAUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAAIBAiBObyBhdmFpbGFibGUgcmV3YXJkcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUWYWN0dWFsQXZhaWxhYmxlUmV3YXJkcwUEdW5pdAUDbmlsAWkBCmJ1eVRpY2tldHMABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFQbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQInVGlja2V0cyBjYW4gb25seSBpYmUgcHVyY2hhc2VkIGluIFdhdmVzAwkBAiE9AggFA3BtdAZhbW91bnQFC3RpY2tldFByaWNlCQACAQkArAICCQCsAgICH1RoZSBwYXltZW50IG11c3QgYmUgb2YgZXhhY3RseSAJAKQDAQUOdGlja2V0UHJpY2VJbnQCBiB3YXZlcwQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNjdXJyZW50VGlja2V0c0NvdW50CQENdHJ5R2V0SW50ZWdlcgEJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQBkAgUTY3VycmVudFRpY2tldHNDb3VudAABBQNuaWwAAQECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlS9NXI", "height": 2135580, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DkKY6DeRDq5gBNS5gbUauEVEbVvhYx6cW5XCeVDQnic8 Next: DxnMfjvnroe6WCyLmeEwXi3LxxsJdTAgcoUW9vay7pWu Diff:
OldNewDifferences
66 let ticketPriceInt = 1000000
77
88 let ticketPrice = ticketPriceInt
9+
10+let invFee = 50000
11+
12+let withdrawFeePercent = 10
913
1014 func tryGetInteger (key) = match getInteger(this, key) {
1115 case b: Int =>
5357 func withdrawRewards () = {
5458 let callerAddrStr = toBase58String(i.caller.bytes)
5559 let currentAvailableRewards = tryGetInteger(addressAvailableRewardsKey(callerAddrStr))
60+ let actualAvailableRewards = ((currentAvailableRewards - invFee) - fraction(currentAvailableRewards, withdrawFeePercent, 100))
5661 if ((0 >= currentAvailableRewards))
5762 then throw("No available rewards to withdraw")
58- else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, currentAvailableRewards, unit)]
63+ else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, actualAvailableRewards, unit)]
5964 }
6065
6166
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
9+
10+let invFee = 50000
11+
12+let withdrawFeePercent = 10
913
1014 func tryGetInteger (key) = match getInteger(this, key) {
1115 case b: Int =>
1216 b
1317 case _ =>
1418 0
1519 }
1620
1721
1822 func getTicketsCountKey (addressString) = (addressString + "_ticketsCount")
1923
2024
2125 func gameWinnerKey (gameId) = (gameId + "_winner")
2226
2327
2428 func addressAvailableRewardsKey (address) = (address + "_availableRewards")
2529
2630
2731 func getTicketsCount (addressString) = tryGetInteger(getTicketsCountKey(addressString))
2832
2933
3034 func consumeTicket (playerAddr) = {
3135 let currentTicketCount = getTicketsCount(playerAddr)
3236 let newCurrentTicketCount = (currentTicketCount - 1)
3337 if ((0 > newCurrentTicketCount))
3438 then 0
3539 else newCurrentTicketCount
3640 }
3741
3842
3943 @Callable(i)
4044 func setWinnerHeadsUp (gameId,winnerAddrStr,otherPlayerAddr) = if ((i.caller != this))
4145 then throw("Admin Only")
4246 else {
4347 let availableRewardsKey = addressAvailableRewardsKey(winnerAddrStr)
4448 let currentAvailableRewards = tryGetInteger(availableRewardsKey)
4549 let newTicketCountWinner = consumeTicket(winnerAddrStr)
4650 let newTicketCountOtherPlayer = consumeTicket(otherPlayerAddr)
4751 [StringEntry(gameWinnerKey(gameId), winnerAddrStr), IntegerEntry(availableRewardsKey, (currentAvailableRewards + (ticketPrice * 2))), IntegerEntry(getTicketsCountKey(winnerAddrStr), newTicketCountWinner), IntegerEntry(getTicketsCountKey(otherPlayerAddr), newTicketCountOtherPlayer)]
4852 }
4953
5054
5155
5256 @Callable(i)
5357 func withdrawRewards () = {
5458 let callerAddrStr = toBase58String(i.caller.bytes)
5559 let currentAvailableRewards = tryGetInteger(addressAvailableRewardsKey(callerAddrStr))
60+ let actualAvailableRewards = ((currentAvailableRewards - invFee) - fraction(currentAvailableRewards, withdrawFeePercent, 100))
5661 if ((0 >= currentAvailableRewards))
5762 then throw("No available rewards to withdraw")
58- else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, currentAvailableRewards, unit)]
63+ else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, actualAvailableRewards, unit)]
5964 }
6065
6166
6267
6368 @Callable(i)
6469 func buyTickets () = {
6570 let pmt = if ((size(i.payments) == 1))
6671 then i.payments[0]
6772 else throw("Please attach exactly one payment")
6873 if (isDefined(pmt.assetId))
6974 then throw("Tickets can only ibe purchased in Waves")
7075 else if ((pmt.amount != ticketPrice))
7176 then throw((("The payment must be of exactly " + toString(ticketPriceInt)) + " waves"))
7277 else {
7378 let callerAddrStr = toBase58String(i.caller.bytes)
7479 let currentTicketsCount = tryGetInteger(getTicketsCountKey(callerAddrStr))
7580 $Tuple2([IntegerEntry(getTicketsCountKey(callerAddrStr), (currentTicketsCount + 1))], 1)
7681 }
7782 }
7883
7984
8085 @Verifier(tx)
8186 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8287

github/deemru/w8io/873ac7e 
46.28 ms