tx · DkKY6DeRDq5gBNS5gbUauEVEbVvhYx6cW5XCeVDQnic8

3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk:  -0.00300000 Waves

2022.07.08 21:59 [2131119] smart account 3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk > SELF 0.00000000 Waves

{ "type": 13, "id": "DkKY6DeRDq5gBNS5gbUauEVEbVvhYx6cW5XCeVDQnic8", "fee": 300000, "feeAssetId": null, "timestamp": 1657306728740, "version": 2, "chainId": 84, "sender": "3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk", "senderPublicKey": "AR4BeE6hYADMvKxgRQs4ADN3krEqb2j8WE3WfJxzL3zE", "proofs": [ "3AaQWdtAR6XvCp1HC63Ubb4s2R31t8d5UgadRaVBJE13JDa6LieRMeeG9fdikosJ61wt59s2xJEsiTo2bAEbjGbe" ], "script": "base64:BgINCAISBQoDCAgIEgASAAkABXdhdmVzAIDC1y8ADnRpY2tldFByaWNlSW50AMCEPQALdGlja2V0UHJpY2UFDnRpY2tldFByaWNlSW50AQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAARJnZXRUaWNrZXRzQ291bnRLZXkBDWFkZHJlc3NTdHJpbmcJAKwCAgUNYWRkcmVzc1N0cmluZwINX3RpY2tldHNDb3VudAENZ2FtZVdpbm5lcktleQEGZ2FtZUlkCQCsAgIFBmdhbWVJZAIHX3dpbm5lcgEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIRX2F2YWlsYWJsZVJld2FyZHMBD2dldFRpY2tldHNDb3VudAENYWRkcmVzc1N0cmluZwkBDXRyeUdldEludGVnZXIBCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNYWRkcmVzc1N0cmluZwENY29uc3VtZVRpY2tldAEKcGxheWVyQWRkcgQSY3VycmVudFRpY2tldENvdW50CQEPZ2V0VGlja2V0c0NvdW50AQUKcGxheWVyQWRkcgQVbmV3Q3VycmVudFRpY2tldENvdW50CQBlAgUSY3VycmVudFRpY2tldENvdW50AAEDCQBmAgAABRVuZXdDdXJyZW50VGlja2V0Q291bnQAAAUVbmV3Q3VycmVudFRpY2tldENvdW50AwFpARBzZXRXaW5uZXJIZWFkc1VwAwZnYW1lSWQNd2lubmVyQWRkclN0cg9vdGhlclBsYXllckFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgpBZG1pbiBPbmx5BBNhdmFpbGFibGVSZXdhcmRzS2V5CQEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBBQ13aW5uZXJBZGRyU3RyBBdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkBDXRyeUdldEludGVnZXIBBRNhdmFpbGFibGVSZXdhcmRzS2V5BBRuZXdUaWNrZXRDb3VudFdpbm5lcgkBDWNvbnN1bWVUaWNrZXQBBQ13aW5uZXJBZGRyU3RyBBluZXdUaWNrZXRDb3VudE90aGVyUGxheWVyCQENY29uc3VtZVRpY2tldAEFD290aGVyUGxheWVyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQENZ2FtZVdpbm5lcktleQEFBmdhbWVJZAUNd2lubmVyQWRkclN0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTYXZhaWxhYmxlUmV3YXJkc0tleQkAZAIFF2N1cnJlbnRBdmFpbGFibGVSZXdhcmRzCQBoAgULdGlja2V0UHJpY2UAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEFDXdpbm5lckFkZHJTdHIFFG5ld1RpY2tldENvdW50V2lubmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VGlja2V0c0NvdW50S2V5AQUPb3RoZXJQbGF5ZXJBZGRyBRluZXdUaWNrZXRDb3VudE90aGVyUGxheWVyBQNuaWwBaQEPd2l0aGRyYXdSZXdhcmRzAAQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkBDXRyeUdldEludGVnZXIBCQEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBBQ1jYWxsZXJBZGRyU3RyAwkAZwIAAAUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAAIBAiBObyBhdmFpbGFibGUgcmV3YXJkcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFBHVuaXQFA25pbAFpAQpidXlUaWNrZXRzAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50AwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECJ1RpY2tldHMgY2FuIG9ubHkgaWJlIHB1cmNoYXNlZCBpbiBXYXZlcwMJAQIhPQIIBQNwbXQGYW1vdW50BQt0aWNrZXRQcmljZQkAAgEJAKwCAgkArAICAh9UaGUgcGF5bWVudCBtdXN0IGJlIG9mIGV4YWN0bHkgCQCkAwEFDnRpY2tldFByaWNlSW50AgYgd2F2ZXMEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQTY3VycmVudFRpY2tldHNDb3VudAkBDXRyeUdldEludGVnZXIBCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNY2FsbGVyQWRkclN0cgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNY2FsbGVyQWRkclN0cgkAZAIFE2N1cnJlbnRUaWNrZXRzQ291bnQAAQUDbmlsAAEBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CyRiMg==", "height": 2131119, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: H2gj8zVDn1KJSbgJtZTJivuHsRany5dwvfSFyZSjEg8a Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let waves = 100000000
5+
6+let ticketPriceInt = 1000000
7+
8+let ticketPrice = ticketPriceInt
9+
10+func tryGetInteger (key) = match getInteger(this, key) {
11+ case b: Int =>
12+ b
13+ case _ =>
14+ 0
15+}
16+
17+
18+func getTicketsCountKey (addressString) = (addressString + "_ticketsCount")
19+
20+
21+func gameWinnerKey (gameId) = (gameId + "_winner")
22+
23+
24+func addressAvailableRewardsKey (address) = (address + "_availableRewards")
25+
26+
27+func getTicketsCount (addressString) = tryGetInteger(getTicketsCountKey(addressString))
28+
29+
30+func consumeTicket (playerAddr) = {
31+ let currentTicketCount = getTicketsCount(playerAddr)
32+ let newCurrentTicketCount = (currentTicketCount - 1)
33+ if ((0 > newCurrentTicketCount))
34+ then 0
35+ else newCurrentTicketCount
36+ }
37+
38+
39+@Callable(i)
40+func setWinnerHeadsUp (gameId,winnerAddrStr,otherPlayerAddr) = if ((i.caller != this))
41+ then throw("Admin Only")
42+ else {
43+ let availableRewardsKey = addressAvailableRewardsKey(winnerAddrStr)
44+ let currentAvailableRewards = tryGetInteger(availableRewardsKey)
45+ let newTicketCountWinner = consumeTicket(winnerAddrStr)
46+ let newTicketCountOtherPlayer = consumeTicket(otherPlayerAddr)
47+[StringEntry(gameWinnerKey(gameId), winnerAddrStr), IntegerEntry(availableRewardsKey, (currentAvailableRewards + (ticketPrice * 2))), IntegerEntry(getTicketsCountKey(winnerAddrStr), newTicketCountWinner), IntegerEntry(getTicketsCountKey(otherPlayerAddr), newTicketCountOtherPlayer)]
48+ }
49+
50+
51+
52+@Callable(i)
53+func withdrawRewards () = {
54+ let callerAddrStr = toBase58String(i.caller.bytes)
55+ let currentAvailableRewards = tryGetInteger(addressAvailableRewardsKey(callerAddrStr))
56+ if ((0 >= currentAvailableRewards))
57+ then throw("No available rewards to withdraw")
58+ else [IntegerEntry(addressAvailableRewardsKey(callerAddrStr), 0), ScriptTransfer(i.caller, currentAvailableRewards, unit)]
59+ }
60+
61+
62+
63+@Callable(i)
64+func buyTickets () = {
65+ let pmt = if ((size(i.payments) == 1))
66+ then i.payments[0]
67+ else throw("Please attach exactly one payment")
68+ if (isDefined(pmt.assetId))
69+ then throw("Tickets can only ibe purchased in Waves")
70+ else if ((pmt.amount != ticketPrice))
71+ then throw((("The payment must be of exactly " + toString(ticketPriceInt)) + " waves"))
72+ else {
73+ let callerAddrStr = toBase58String(i.caller.bytes)
74+ let currentTicketsCount = tryGetInteger(getTicketsCountKey(callerAddrStr))
75+ $Tuple2([IntegerEntry(getTicketsCountKey(callerAddrStr), (currentTicketsCount + 1))], 1)
76+ }
77+ }
78+
79+
80+@Verifier(tx)
81+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
82+

github/deemru/w8io/873ac7e 
25.38 ms