tx · 84D41qbBENBSPDqhHaLyHpM4x43pTidvbitRrovfyF9V

3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx:  -0.00300000 Waves

2023.08.04 16:33 [2695901] smart account 3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx > SELF 0.00000000 Waves

{ "type": 13, "id": "84D41qbBENBSPDqhHaLyHpM4x43pTidvbitRrovfyF9V", "fee": 300000, "feeAssetId": null, "timestamp": 1691155856159, "version": 2, "chainId": 84, "sender": "3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx", "senderPublicKey": "UGqkWsCpv7xRVXkQRXyLd6pWPDtYGXmPip7FxSd1pAu", "proofs": [ "2jQ3p6q3N4JUkcpPSjt3Q4qybS7p4uL7NyZrthyceeSNUr5yNbEd6ZVP8MJbfpvbUsXpMTdC7vU8UsfyFFy3iR86" ], "script": "base64:BgIKCAISBgoEAQEBAQoABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAANTRVACAl9fABNNQVhUT1VSTkFNRU5UTEVOR1RIAICY/80BAAphZG1pbnNMaXN0CQDMCAIJAKUIAQUEdGhpcwkAzAgCBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUEVlMlJFTFVIQ0ZDQnNtU0NOY0JKOE4zVVJMVlFlbmRlNwMJAAACAQFUBQckbWF0Y2gwAiMzTXRCZ0pUYUx4UEIzQzdVSkQxVUU4cWprSHRoZkt2RlFZWQkAAgECDVVua25vd24gY2hhaW4FA25pbAAOdER5bmFtaWNTdGF0dXMAAQANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkAQpzdGF0aWNEYXRhBgR0eElkDHJlZ2lzdGVyQ29zdAthdHRlbXB0Q29zdAxjcmVhdGlvblRpbWUJc3RhcnRUaW1lB2VuZFRpbWUJALkJAgkAzAgCAgwlcyVkJWQlZCVkJWQJAMwIAgUEdHhJZAkAzAgCCQCkAwEFDHJlZ2lzdGVyQ29zdAkAzAgCCQCkAwEFC2F0dGVtcHRDb3N0CQDMCAIJAKQDAQUMY3JlYXRpb25UaW1lCQDMCAIJAKQDAQUJc3RhcnRUaW1lCQDMCAIJAKQDAQUHZW5kVGltZQUDbmlsBQNTRVABC2R5bmFtaWNEYXRhBQZzdGF0dXMHd2luRHVjawl3aW5SZXN1bHQJdG90YWxSZWdzDXRvdGFsQXR0ZW1wdHMJALkJAgkAzAgCAgolcyVzJWQlZCVkCQDMCAIFBnN0YXR1cwkAzAgCBQd3aW5EdWNrCQDMCAIJAKQDAQUJd2luUmVzdWx0CQDMCAIJAKQDAQUJdG90YWxSZWdzCQDMCAIJAKQDAQUNdG90YWxBdHRlbXB0cwUDbmlsBQNTRVABAWkBEGNyZWF0ZVRvdXJuYW1lbnQECXN0YXJ0VGltZQdlbmRUaW1lDHJlZ2lzdGVyQ29zdAthdHRlbXB0Q29zdAQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFCmFkbWluc0xpc3QFBmNhbGxlcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAZsYXN0SWQJAJ8IAQUNbGFzdFRvdXJJZEtleQQDdElkAwkBCWlzRGVmaW5lZAEFBmxhc3RJZAQKbGFzdFRvdXJJZAkBBXZhbHVlAQUGbGFzdElkBAdkeW5hbWljCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQpsYXN0VG91cklkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQpsYXN0VG91cklkAgcgc3RhdHVzBAZzdGF0dXMJAJEDAgkAtQkCBQdkeW5hbWljBQNTRVAFDnREeW5hbWljU3RhdHVzAwkBAiE9AgUGc3RhdHVzAghBUkNISVZFRAkAAgEJAKwCAgIsQ3VycmVudCB0b3VybmVtZW50IGlzIG5vdCBjb21wbGV0ZWQsIHN0YXR1cz0FBnN0YXR1cwkAZAIFCmxhc3RUb3VySWQAAQABBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFA25vdwUJc3RhcnRUaW1lCQACAQkArAICCQCsAgIJAKwCAgIKc3RhcnRUaW1lPQkApAMBBQlzdGFydFRpbWUCECA8IGNyZWF0aW9uVGltZT0JAKQDAQUDbm93AwkAZgIFCXN0YXJ0VGltZQUHZW5kVGltZQkAAgEJAKwCAgkArAICCQCsAgICCGVuZFRpbWU9CQCkAwEFB2VuZFRpbWUCDSA8IHN0YXJ0VGltZT0JAKQDAQUJc3RhcnRUaW1lAwkAZgIJAGUCBQdlbmRUaW1lBQlzdGFydFRpbWUFE01BWFRPVVJOQU1FTlRMRU5HVEgJAAIBCQCsAgIJAKwCAgkArAICAh9Ub3VybmFtZW50IHBlcmlvZCBleGNlZWRzIG1heDogCQCkAwEJAGUCBQdlbmRUaW1lBQlzdGFydFRpbWUCAyA+IAkApAMBBRNNQVhUT1VSTkFNRU5UTEVOR1RIAwMJAGcCAAAFDHJlZ2lzdGVyQ29zdAYJAGcCAAAFC2F0dGVtcHRDb3N0CQACAQkArAICCQCsAgIJAKwCAgIkQ29zdCBzaG91bGQgYmUgcG9zaXRpdmUsIGJ1dCBwYXNzZWQgCQCkAwEFDHJlZ2lzdGVyQ29zdAIFIGFuZCAJAKQDAQULYXR0ZW1wdENvc3QJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNbGFzdFRvdXJJZEtleQUDdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAQpzdGF0aWNEYXRhBgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQxyZWdpc3RlckNvc3QFC2F0dGVtcHRDb3N0BQNub3cFCXN0YXJ0VGltZQUHZW5kVGltZQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkBC2R5bmFtaWNEYXRhBQIHQ1JFQVRFRAIAAAAAAAAABQNuaWwAAACTMtxF", "height": 2695901, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 7w79SMLQzy6sU9UA4mqF75bPHBW8LhiMLn3htTSkKVLp Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let chain = take(drop(this.bytes, 1), 1)
5+
6+let SEP = "__"
7+
8+let MAXTOURNAMENTLENGTH = 432000000
9+
10+let adminsList = [toString(this), match chain {
11+ case _ =>
12+ if ((base58'2W' == $match0))
13+ then "3PEe2RELUHCFCBsmSCNcBJ8N3URLVQende7"
14+ else if ((base58'2T' == $match0))
15+ then "3MtBgJTaLxPB3C7UJD1UE8qjkHthfKvFQYY"
16+ else throw("Unknown chain")
17+}]
18+
19+let tDynamicStatus = 1
20+
21+let lastTourIdKey = "%s__lastTourId"
22+
23+func keyTourStaticDataById (tId) = ("%s%d__tourStaticData__" + toString(tId))
24+
25+
26+func keyTourDynamicDataById (tId) = ("%s%d__tourDynamicData__" + toString(tId))
27+
28+
29+func staticData (txId,registerCost,attemptCost,creationTime,startTime,endTime) = makeString(["%s%d%d%d%d%d", txId, toString(registerCost), toString(attemptCost), toString(creationTime), toString(startTime), toString(endTime)], SEP)
30+
31+
32+func dynamicData (status,winDuck,winResult,totalRegs,totalAttempts) = makeString(["%s%s%d%d%d", status, winDuck, toString(winResult), toString(totalRegs), toString(totalAttempts)], SEP)
33+
34+
35+@Callable(i)
36+func createTournament (startTime,endTime,registerCost,attemptCost) = {
37+ let caller = toString(i.caller)
38+ if (!(containsElement(adminsList, caller)))
39+ then throw("Permission denied")
40+ else {
41+ let lastId = getInteger(lastTourIdKey)
42+ let tId = if (isDefined(lastId))
43+ then {
44+ let lastTourId = value(lastId)
45+ let dynamic = valueOrErrorMessage(getString(keyTourDynamicDataById(lastTourId)), (("Error reading tournament " + toString(lastTourId)) + " status"))
46+ let status = split(dynamic, SEP)[tDynamicStatus]
47+ if ((status != "ARCHIVED"))
48+ then throw(("Current tournement is not completed, status=" + status))
49+ else (lastTourId + 1)
50+ }
51+ else 1
52+ let now = lastBlock.timestamp
53+ if ((now > startTime))
54+ then throw(((("startTime=" + toString(startTime)) + " < creationTime=") + toString(now)))
55+ else if ((startTime > endTime))
56+ then throw(((("endTime=" + toString(endTime)) + " < startTime=") + toString(startTime)))
57+ else if (((endTime - startTime) > MAXTOURNAMENTLENGTH))
58+ then throw(((("Tournament period exceeds max: " + toString((endTime - startTime))) + " > ") + toString(MAXTOURNAMENTLENGTH)))
59+ else if (if ((0 >= registerCost))
60+ then true
61+ else (0 >= attemptCost))
62+ then throw(((("Cost should be positive, but passed " + toString(registerCost)) + " and ") + toString(attemptCost)))
63+ else $Tuple2([IntegerEntry(lastTourIdKey, tId), StringEntry(keyTourStaticDataById(tId), staticData(toBase58String(i.transactionId), registerCost, attemptCost, now, startTime, endTime)), StringEntry(keyTourDynamicDataById(tId), dynamicData("CREATED", "", 0, 0, 0))], 0)
64+ }
65+ }
66+
67+

github/deemru/w8io/169f3d6 
41.29 ms