tx · 2XVfmL34mYNqBwgeyQKXSvZiUaVAJpR9AusW4kr9N8t9

3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ:  -0.01000000 Waves

2023.08.21 17:56 [3786212] smart account 3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ > SELF 0.00000000 Waves

{ "type": 13, "id": "2XVfmL34mYNqBwgeyQKXSvZiUaVAJpR9AusW4kr9N8t9", "fee": 1000000, "feeAssetId": null, "timestamp": 1692629807358, "version": 2, "chainId": 87, "sender": "3P2Tj3KgTYhSVe23XXeAmkwYB43YnZ5dENJ", "senderPublicKey": "ECg19w7L36EZDu4zprurC23FPVeaKGnobnwzbZH2Dgyd", "proofs": [ "4uAQiCaoBgA8FKbxaMcfrFVC3Q9cVsfHsvp8MhyT1srJNtj29u3RfBKaqF7PmH4nEZAjy56dxw2zvR3HU6HSmHPS" ], "script": "base64:BgILCAISABIAEgMKAQgLAARVU0ROASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QAEUEVURQEg4W4pTkHcHIXuYikIATFxVuov8OITyH3BrthKEwuN9tYACXNlcGFyYXRvcgIBXwAKQkVUX0FNT1VOVACAyrXuAQAEVzc3NwCAwtcvAAtzdXBwbGllZEtleQIKcGV0ZV90b3RhbAANcGV0ZUluTG9ja0tleQIMcGV0ZV9pbl9sb2NrAAhuQWRkcmVzcwAAAAduUmVzdWx0AAEBBnJldmVhbAIEdHhpZAt0YXJnZXRCbG9jawQLcmV2ZWFsQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7QcBBQt0YXJnZXRCbG9jawIRdW5leGNwZWN0ZWQgZXJyb3IEA3ZyZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAULcmV2ZWFsQmxvY2sDdnJmAhF1bmV4Y3BlY3RlZCBlcnJvcgQGcmV2ZWFsCQD3AwEJAMsBAgUDdnJmCQCbAwEFBHR4aWQJAGQCCQBqAgkAsQkBBQZyZXZlYWwABwABARFjaGVja1dpbm5lckFtb3VudAEGcmVzdWx0AwkAAAIFBnJlc3VsdAIDNzc3BQRXNzc3AAADAWkBBnN1cHBseQADAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEUEVURQcEBXRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC3N1cHBsaWVkS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFC3N1cHBsaWVkS2V5CQBkAgUFdG90YWwICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNuaWwJAAIBAgtiYWQgcGF5bWVudAFpAQRzcGluAAMDAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEVVNETgcJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUKQkVUX0FNT1VOVAcEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUHYWRkcmVzcwkAAgECDW9ubHkgb25lIGdhbWUEBHR4aWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGbG9ja2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDXBldGVJbkxvY2tLZXkAAAQFdG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULc3VwcGxpZWRLZXkAAAMJAGYCBQRXNzc3CQBlAgUFdG90YWwFBmxvY2tlZAkAAgECDW5vIHBldGUgaW4gc2MEA3N0cgkAuQkCCQDMCAIFB2FkZHJlc3MJAMwIAgIDeHh4BQNuaWwFCXNlcGFyYXRvcgkAzAgCCQELU3RyaW5nRW50cnkCBQdhZGRyZXNzBQR0eGlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBHR4aWQFA3N0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGV0ZUluTG9ja0tleQkAZAIFBmxvY2tlZAUEVzc3NwUDbmlsCQACAQILYmFkIHBheW1lbnQBaQEGcmVzdWx0AQR0eGlkBAxjb21taXRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA6QcBCQDZBAEFBHR4aWQJAKwCAgUEdHhpZAIKIG5vdCBmb3VuZAMJAGYCCQBkAgUMY29tbWl0SGVpZ2h0AAMFBmhlaWdodAkAAgEJAKwCAgkArAICAgV3YWl0IAkApAMBCQBlAgkAZAIFDGNvbW1pdEhlaWdodAADBQZoZWlnaHQCGyBibG9ja3MgdG8gcmV2ZWFsIHRoaXMgdHhpZAQCcjEJAQZyZXZlYWwCBQR0eGlkCQBkAgUMY29tbWl0SGVpZ2h0AAEEAnIyCQEGcmV2ZWFsAgUEdHhpZAkAZAIFDGNvbW1pdEhlaWdodAACBAJyMwkBBnJldmVhbAIFBHR4aWQJAGQCBQxjb21taXRIZWlnaHQAAwQGcmVzdWx0CQCsAgIJAKwCAgkApAMBBQJyMQkApAMBBQJyMgkApAMBBQJyMwQMd2lubmVyQW1vdW50CQERY2hlY2tXaW5uZXJBbW91bnQBBQZyZXN1bHQEBGRhdGEJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFBHR4aWQJAKwCAgIXdW5hYmxlIHRvIHJlYWQgZGF0YSBmb3IFBHR4aWQFCXNlcGFyYXRvcgQHYWRkcmVzcwkAkQMCBQRkYXRhBQhuQWRkcmVzcwQDc3RyCQC5CQIJAMwIAgUHYWRkcmVzcwkAzAgCBQZyZXN1bHQFA25pbAUJc2VwYXJhdG9yBAZsb2NrZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQ1wZXRlSW5Mb2NrS2V5AhV1bmFibGUgdG8gcmVhZCBsb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBldGVJbkxvY2tLZXkJAGUCBQZsb2NrZWQFBFc3NzcJAMwIAgkBC1N0cmluZ0VudHJ5AgUEdHhpZAUDc3RyCQDMCAIJAQtEZWxldGVFbnRyeQEFB2FkZHJlc3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUMd2lubmVyQW1vdW50BQRQRVRFBQNuaWwAyBBIDg==", "height": 3786212, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: Fsy3MjMTMPqLR4Ve1oKmehNVVcBpG4fxRgiqvFzUGhUL Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let USDN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
5+
6+let PETE = base58'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq'
7+
8+let separator = "_"
9+
10+let BET_AMOUNT = 500000000
11+
12+let W777 = 100000000
13+
14+let suppliedKey = "pete_total"
15+
16+let peteInLockKey = "pete_in_lock"
17+
18+let nAddress = 0
19+
20+let nResult = 1
21+
22+func reveal (txid,targetBlock) = {
23+ let revealBlock = valueOrErrorMessage(blockInfoByHeight(targetBlock), "unexcpected error")
24+ let vrf = valueOrErrorMessage(revealBlock.vrf, "unexcpected error")
25+ let reveal = sha256((vrf + toBytes(txid)))
26+ ((toInt(reveal) % 7) + 1)
27+ }
28+
29+
30+func checkWinnerAmount (result) = if ((result == "777"))
31+ then W777
32+ else 0
33+
34+
35+@Callable(i)
36+func supply () = if (if ((size(i.payments) == 1))
37+ then (i.payments[0].assetId == PETE)
38+ else false)
39+ then {
40+ let total = valueOrElse(getInteger(this, suppliedKey), 0)
41+[IntegerEntry(suppliedKey, (total + i.payments[0].amount))]
42+ }
43+ else throw("bad payment")
44+
45+
46+
47+@Callable(i)
48+func spin () = if (if (if ((size(i.payments) == 1))
49+ then (i.payments[0].assetId == USDN)
50+ else false)
51+ then (i.payments[0].amount == BET_AMOUNT)
52+ else false)
53+ then {
54+ let address = toString(i.caller)
55+ if (isDefined(getString(this, address)))
56+ then throw("only one game")
57+ else {
58+ let txid = toBase58String(i.transactionId)
59+ let locked = valueOrElse(getInteger(this, peteInLockKey), 0)
60+ let total = valueOrElse(getInteger(this, suppliedKey), 0)
61+ if ((W777 > (total - locked)))
62+ then throw("no pete in sc")
63+ else {
64+ let str = makeString([address, "xxx"], separator)
65+[StringEntry(address, txid), StringEntry(txid, str), IntegerEntry(peteInLockKey, (locked + W777))]
66+ }
67+ }
68+ }
69+ else throw("bad payment")
70+
71+
72+
73+@Callable(i)
74+func result (txid) = {
75+ let commitHeight = valueOrErrorMessage(transactionHeightById(fromBase58String(txid)), (txid + " not found"))
76+ if (((commitHeight + 3) > height))
77+ then throw((("wait " + toString(((commitHeight + 3) - height))) + " blocks to reveal this txid"))
78+ else {
79+ let r1 = reveal(txid, (commitHeight + 1))
80+ let r2 = reveal(txid, (commitHeight + 2))
81+ let r3 = reveal(txid, (commitHeight + 3))
82+ let result = ((toString(r1) + toString(r2)) + toString(r3))
83+ let winnerAmount = checkWinnerAmount(result)
84+ let data = split(valueOrErrorMessage(getString(this, txid), ("unable to read data for" + txid)), separator)
85+ let address = data[nAddress]
86+ let str = makeString([address, result], separator)
87+ let locked = valueOrErrorMessage(getInteger(this, peteInLockKey), "unable to read locked")
88+[IntegerEntry(peteInLockKey, (locked - W777)), StringEntry(txid, str), DeleteEntry(address), ScriptTransfer(addressFromStringValue(address), winnerAmount, PETE)]
89+ }
90+ }
91+
92+

github/deemru/w8io/3ef1775 
23.06 ms