tx · Fd714RnzxLBWTHZk22sCHQ3p8D4gZonkSYkEA6REvofV

3Mt7Y1rkd1x2JCvC8ErXbkGHrfSa1P53D3f:  -0.01000000 Waves

2022.07.07 23:29 [2129765] smart account 3Mt7Y1rkd1x2JCvC8ErXbkGHrfSa1P53D3f > SELF 0.00000000 Waves

{ "type": 13, "id": "Fd714RnzxLBWTHZk22sCHQ3p8D4gZonkSYkEA6REvofV", "fee": 1000000, "feeAssetId": null, "timestamp": 1657225877081, "version": 2, "chainId": 84, "sender": "3Mt7Y1rkd1x2JCvC8ErXbkGHrfSa1P53D3f", "senderPublicKey": "EDGu1zTck3Jr7rsuwUVpBJ79NoAZAL92nZFfeLbustac", "proofs": [ "3sTStonao8eJ67gS6ZyymdBNx817S5mRoCjRaqSRUbGdHeaizPBESyprvWPwAmSkGE4fYaW5NePx9EcY7953hbnk" ], "script": "base64:BgINCAISBQoDCAgYEgASAAkABXdhdmVzAIDC1y8ADnRpY2tldFByaWNlSW50AMCEPQALdGlja2V0UHJpY2UFDnRpY2tldFByaWNlSW50AQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAARJnZXRUaWNrZXRzQ291bnRLZXkBDWFkZHJlc3NTdHJpbmcJAKwCAgUNYWRkcmVzc1N0cmluZwINX3RpY2tldHNDb3VudAENZ2FtZVdpbm5lcktleQEGZ2FtZUlkCQCsAgIFBmdhbWVJZAIHX3dpbm5lcgEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIRX2F2YWlsYWJsZVJld2FyZHMBD2dldFRpY2tldHNDb3VudAENYWRkcmVzc1N0cmluZwkBDXRyeUdldEludGVnZXIBCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNYWRkcmVzc1N0cmluZwENY29uc3VtZVRpY2tldAEKcGxheWVyQWRkcgQSY3VycmVudFRpY2tldENvdW50CQEPZ2V0VGlja2V0c0NvdW50AQUKcGxheWVyQWRkcgQVbmV3Q3VycmVudFRpY2tldENvdW50CQBlAgUSY3VycmVudFRpY2tldENvdW50AAEDCQBmAgAABRVuZXdDdXJyZW50VGlja2V0Q291bnQAAAUVbmV3Q3VycmVudFRpY2tldENvdW50AwFpARBzZXRXaW5uZXJIZWFkc1VwAwZnYW1lSWQNd2lubmVyQWRkclN0cgtwbGF5ZXJzQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCkFkbWluIE9ubHkEE2F2YWlsYWJsZVJld2FyZHNLZXkJARphZGRyZXNzQXZhaWxhYmxlUmV3YXJkc0tleQEFDXdpbm5lckFkZHJTdHIEF2N1cnJlbnRBdmFpbGFibGVSZXdhcmRzCQENdHJ5R2V0SW50ZWdlcgEFE2F2YWlsYWJsZVJld2FyZHNLZXkEFW5ld1RpY2tldENvdW50UGxheWVyMAkBDWNvbnN1bWVUaWNrZXQBCQCRAwIFC3BsYXllcnNBZGRyAAAEFW5ld1RpY2tldENvdW50UGxheWVyMQkBDWNvbnN1bWVUaWNrZXQBCQCRAwIFC3BsYXllcnNBZGRyAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdhbWVXaW5uZXJLZXkBBQZnYW1lSWQFDXdpbm5lckFkZHJTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2F2YWlsYWJsZVJld2FyZHNLZXkJAGQCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkAaAIFC3RpY2tldFByaWNlAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBCQCRAwIFC3BsYXllcnNBZGRyAAAFFW5ld1RpY2tldENvdW50UGxheWVyMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEJAJEDAgULcGxheWVyc0FkZHIAAQUVbmV3VGlja2V0Q291bnRQbGF5ZXIxBQNuaWwBaQEPd2l0aGRyYXdSZXdhcmRzAAQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkBDXRyeUdldEludGVnZXIBCQEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBBQ1jYWxsZXJBZGRyU3RyAwkAZwIAAAUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAAIBAiBObyBhdmFpbGFibGUgcmV3YXJkcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFBHVuaXQFA25pbAFpAQpidXlUaWNrZXRzAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50AwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECJ1RpY2tldHMgY2FuIG9ubHkgaWJlIHB1cmNoYXNlZCBpbiBXYXZlcwMJAQIhPQIIBQNwbXQGYW1vdW50BQt0aWNrZXRQcmljZQkAAgEJAKwCAgkArAICAh9UaGUgcGF5bWVudCBtdXN0IGJlIG9mIGV4YWN0bHkgCQCkAwEFDnRpY2tldFByaWNlSW50AgYgd2F2ZXMEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQTY3VycmVudFRpY2tldHNDb3VudAkBDXRyeUdldEludGVnZXIBCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNY2FsbGVyQWRkclN0cgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNY2FsbGVyQWRkclN0cgkAZAIFE2N1cnJlbnRUaWNrZXRzQ291bnQAAQUDbmlsAAEBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5YX6iOQ==", "height": 2129765, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none 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,playersAddr) = if ((i.caller != this))
41+ then throw("Admin Only")
42+ else {
43+ let availableRewardsKey = addressAvailableRewardsKey(winnerAddrStr)
44+ let currentAvailableRewards = tryGetInteger(availableRewardsKey)
45+ let newTicketCountPlayer0 = consumeTicket(playersAddr[0])
46+ let newTicketCountPlayer1 = consumeTicket(playersAddr[1])
47+[StringEntry(gameWinnerKey(gameId), winnerAddrStr), IntegerEntry(availableRewardsKey, (currentAvailableRewards + (ticketPrice * 2))), IntegerEntry(getTicketsCountKey(playersAddr[0]), newTicketCountPlayer0), IntegerEntry(getTicketsCountKey(playersAddr[1]), newTicketCountPlayer1)]
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/169f3d6 
19.70 ms