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:
Old | New | Differences | |
---|---|---|---|
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 ◑![]()