tx · H5J3SdK7ZxBFoNhQrnWXSDkDQnjdJjv2DSLxTzgDCck

3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ:  -0.01000000 Waves

2022.05.17 11:24 [2055424] smart account 3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ > SELF 0.00000000 Waves

{ "type": 13, "id": "H5J3SdK7ZxBFoNhQrnWXSDkDQnjdJjv2DSLxTzgDCck", "fee": 1000000, "feeAssetId": null, "timestamp": 1652775864576, "version": 2, "chainId": 84, "sender": "3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ", "senderPublicKey": "ApEZSyUFWsckB3mZSWm3spfm6UPyDhMdrpxNhydohYs1", "proofs": [ "58GLJfDbLEMgyLLC1eae6mYg2g41pztkS7fKM3tNGGyBhynxV5vzrPUiChmmBwdopx86vdxvK3gEdN4EoPc6dqqX" ], "script": "base64:AAIFAAAAAAAAAAQIAhIAAAAAGAAAAAAJc2VwYXJhdG9yAgAAAAFfAAAAAA1rZXlDaGFyc0NvdW50AgAAAAtjaGFyc19jb3VudAAAAAAHa2V5Q2hhcgIAAAAEY2hhcgAAAAAIa2V5T3duZXICAAAABW93bmVyAAAAAA1rZXlBcHBlYXJhbmNlAgAAAAphcHBlYXJhbmNlAAAAAAxrZXlQeXJvQm9udXMCAAAACnB5cm9fYm9udXMAAAAADGtleUFxdWFCb251cwIAAAAKYXF1YV9ib251cwAAAAANa2V5VGVycmFCb251cwIAAAALdGVycmFfYm9udXMAAAAADGtleUFlcm9Cb251cwIAAAAKYWVyb19ib251cwAAAAANa2V5TG9vdHNCb251cwIAAAALbG9vdHNfYm9udXMAAAAAEmtleUdlbmVyYXRpbmdCb251cwIAAAAQZ2VuZXJhdGluZ19ib251cwAAAAAHZ292QWRkcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAAAAAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMCAAAAE2Vjb3N5c3RlbV9hZGRyZXNzZXMAAAAAFGtleUNoYXJzQm9kaWVzQW1vdW50AgAAABNjaGFyc19ib2RpZXNfYW1vdW50AAAAABJrZXlDaGFyc0V5ZXNBbW91bnQCAAAAEWNoYXJzX2V5ZXNfYW1vdW50AAAAABRrZXlDaGFyc01vdXRoc0Ftb3VudAIAAAATY2hhcnNfbW91dGhzX2Ftb3VudAAAAAAYa2V5Q2hhcnNTdGF0c1RpZXJzUmFuZ2VzAgAAABhjaGFyc19zdGF0c190aWVyc19yYW5nZXMAAAAAHmtleUNoYXJzTmF0dXJhbEVsZW1Cb251c1JhbmdlcwIAAAAfY2hhcnNfbmF0dXJhbF9lbGVtX2JvbnVzX3JhbmdlcwAAAAAfa2V5Q2hhcnNOYXR1cmFsTG9vdHNCb251c1JhbmdlcwIAAAAgY2hhcnNfbmF0dXJhbF9sb290c19ib251c19yYW5nZXMAAAAAJGtleUNoYXJzTmF0dXJhbEdlbmVyYXRpbmdCb251c1JhbmdlcwIAAAAlY2hhcnNfbmF0dXJhbF9nZW5lcmF0aW5nX2JvbnVzX3JhbmdlcwEAAAALaW52b2tDaGVja3MAAAAB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AA10cmFuc2FjdGlvbklkBAAAAApjYWxsZXJBZGRyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABmNoYXJJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlDaGFyc0NvdW50AAAAAAAAAAABBAAAAAxib2RpZXNBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAB2dvdkFkZHIFAAAAFGtleUNoYXJzQm9kaWVzQW1vdW50BAAAAApleWVzQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdnb3ZBZGRyBQAAABJrZXlDaGFyc0V5ZXNBbW91bnQEAAAADG1vdXRoc0Ftb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAHZ292QWRkcgUAAAAUa2V5Q2hhcnNNb3V0aHNBbW91bnQEAAAAEHN0YXRzVGllcnNSYW5nZXMJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAHZ292QWRkcgUAAAAYa2V5Q2hhcnNTdGF0c1RpZXJzUmFuZ2VzBQAAAAlzZXBhcmF0b3IEAAAAD2VsZW1Cb251c1JhbmdlcwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAdnb3ZBZGRyBQAAAB5rZXlDaGFyc05hdHVyYWxFbGVtQm9udXNSYW5nZXMFAAAACXNlcGFyYXRvcgQAAAAQbG9vdHNCb251c1JhbmdlcwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAdnb3ZBZGRyBQAAAB9rZXlDaGFyc05hdHVyYWxMb290c0JvbnVzUmFuZ2VzBQAAAAlzZXBhcmF0b3IEAAAAFWdlbmVyYXRpbmdCb251c1JhbmdlcwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAdnb3ZBZGRyBQAAACRrZXlDaGFyc05hdHVyYWxHZW5lcmF0aW5nQm9udXNSYW5nZXMFAAAACXNlcGFyYXRvcgQAAAAKYXBwZWFyYW5jZQkABLkAAAACCQAETAAAAAIJAAGkAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAAAxib2RpZXNBbW91bnQFAAAABHR4SWQAAAAAAAAAAAAJAARMAAAAAgkAAaQAAAABCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEFAAAACmV5ZXNBbW91bnQFAAAABHR4SWQAAAAAAAAAAAEJAARMAAAAAgkAAaQAAAABCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEFAAAADG1vdXRoc0Ftb3VudAUAAAAEdHhJZAAAAAAAAAAAAgUAAAADbmlsBQAAAAlzZXBhcmF0b3IEAAAACXB5cm9Cb251cwkBAAAADmdldFJhbmRvbUJvbnVzAAAABAUAAAAQc3RhdHNUaWVyc1JhbmdlcwUAAAAPZWxlbUJvbnVzUmFuZ2VzAAAAAAAAAAADBQAAAAR0eElkBAAAAAlhcXVhQm9udXMJAQAAAA5nZXRSYW5kb21Cb251cwAAAAQFAAAAEHN0YXRzVGllcnNSYW5nZXMFAAAAD2VsZW1Cb251c1JhbmdlcwAAAAAAAAAACgUAAAAEdHhJZAQAAAAKdGVycmFCb251cwkBAAAADmdldFJhbmRvbUJvbnVzAAAABAUAAAAQc3RhdHNUaWVyc1JhbmdlcwUAAAAPZWxlbUJvbnVzUmFuZ2VzAAAAAAAAAAARBQAAAAR0eElkBAAAAAlhZXJvQm9udXMJAQAAAA5nZXRSYW5kb21Cb251cwAAAAQFAAAAEHN0YXRzVGllcnNSYW5nZXMFAAAAD2VsZW1Cb251c1JhbmdlcwAAAAAAAAAAGAUAAAAEdHhJZAQAAAAPZ2VuZXJhdGluZ0JvbnVzCQEAAAAOZ2V0UmFuZG9tQm9udXMAAAAEBQAAABBzdGF0c1RpZXJzUmFuZ2VzBQAAABVnZW5lcmF0aW5nQm9udXNSYW5nZXMAAAAAAAAAAB8FAAAABHR4SWQEAAAACmxvb3RzQm9udXMJAQAAAA5nZXRSYW5kb21Cb251cwAAAAQFAAAAEHN0YXRzVGllcnNSYW5nZXMFAAAAEGxvb3RzQm9udXNSYW5nZXMAAAAAAAAAACYFAAAABHR4SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAABWNXaXRoAAAAAgUAAAAIa2V5T3duZXIFAAAABmNoYXJJZAUAAAAKY2FsbGVyQWRkcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAFY1dpdGgAAAACBQAAAA1rZXlBcHBlYXJhbmNlBQAAAAZjaGFySWQFAAAACmFwcGVhcmFuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAVjV2l0aAAAAAIFAAAADGtleVB5cm9Cb251cwUAAAAGY2hhcklkBQAAAAlweXJvQm9udXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAVjV2l0aAAAAAIFAAAADGtleUFxdWFCb251cwUAAAAGY2hhcklkBQAAAAlhcXVhQm9udXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAVjV2l0aAAAAAIFAAAADWtleVRlcnJhQm9udXMFAAAABmNoYXJJZAUAAAAKdGVycmFCb251cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABWNXaXRoAAAAAgUAAAAMa2V5QWVyb0JvbnVzBQAAAAZjaGFySWQFAAAACWFlcm9Cb251cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABWNXaXRoAAAAAgUAAAANa2V5TG9vdHNCb251cwUAAAAGY2hhcklkBQAAAApsb290c0JvbnVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAFY1dpdGgAAAACBQAAABJrZXlHZW5lcmF0aW5nQm9udXMFAAAABmNoYXJJZAUAAAAPZ2VuZXJhdGluZ0JvbnVzBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleaWcG+A=", "height": 2055424, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 8MZGp22nUjvx6n714hBk1cWVWQGa4VUcrC4EzUSo1Mf5 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let separator = "_"
5+
6+let keyCharsCount = "chars_count"
7+
8+let keyChar = "char"
9+
10+let keyOwner = "owner"
11+
12+let keyAppearance = "appearance"
13+
14+let keyPyroBonus = "pyro_bonus"
15+
16+let keyAquaBonus = "aqua_bonus"
17+
18+let keyTerraBonus = "terra_bonus"
19+
20+let keyAeroBonus = "aero_bonus"
21+
22+let keyLootsBonus = "loots_bonus"
23+
24+let keyGeneratingBonus = "generating_bonus"
25+
26+let govAddr = addressFromStringValue("")
27+
28+let keyEcosystemAddresses = "ecosystem_addresses"
29+
30+let keyCharsBodiesAmount = "chars_bodies_amount"
31+
32+let keyCharsEyesAmount = "chars_eyes_amount"
33+
34+let keyCharsMouthsAmount = "chars_mouths_amount"
35+
36+let keyCharsStatsTiersRanges = "chars_stats_tiers_ranges"
37+
38+let keyCharsNaturalElemBonusRanges = "chars_natural_elem_bonus_ranges"
39+
40+let keyCharsNaturalLootsBonusRanges = "chars_natural_loots_bonus_ranges"
41+
42+let keyCharsNaturalGeneratingBonusRanges = "chars_natural_generating_bonus_ranges"
43+
44+func invokChecks (callerAddr) = if ((isDataStorageUntouched(govAddr) != false))
45+ then throw("Governing app not ready")
46+ else {
47+ let ecosystemAddresses = getStringValue(govAddr, keyEcosystemAddresses)
48+ if ((contains(ecosystemAddresses, toString(callerAddr)) != false))
49+ then throw("Access denied")
50+ else unit
51+ }
52+
53+
54+func randInt (min,max,txId,nonce) = {
55+ let hash = value(sha256_16Kb((value(value(blockInfoByHeight(height)).vrf) + txId)))
56+ value(((value(toInt(hash, nonce)) % ((max - min) + 1)) + min))
57+ }
58+
59+
60+func cWith (a,b) = ((((keyChar + separator) + toString(b)) + separator) + a)
61+
62+
63+func getRandomBonus (statsTierRanges,bonusRanges,startingNonce,txId) = {
64+ let sT1 = parseIntValue(statsTierRanges[0])
65+ let sT2 = parseIntValue(statsTierRanges[1])
66+ let sT3 = parseIntValue(statsTierRanges[2])
67+ let sT4 = parseIntValue(statsTierRanges[3])
68+ let sT5 = parseIntValue(statsTierRanges[4])
69+ let sT6 = parseIntValue(statsTierRanges[5])
70+ let bT1 = parseIntValue(bonusRanges[0])
71+ let bT2 = parseIntValue(bonusRanges[1])
72+ let bT3 = parseIntValue(bonusRanges[2])
73+ let bT4 = parseIntValue(bonusRanges[3])
74+ let bT5 = parseIntValue(bonusRanges[4])
75+ let bT6 = parseIntValue(bonusRanges[5])
76+ let tierResult = randInt(0, 10000, txId, startingNonce)
77+ if (if ((tierResult >= 0))
78+ then (sT1 >= tierResult)
79+ else false)
80+ then randInt(0, bT1, txId, (startingNonce + 1))
81+ else if (if ((tierResult > sT1))
82+ then (sT2 >= tierResult)
83+ else false)
84+ then randInt((bT1 + 1), bT2, txId, (startingNonce + 2))
85+ else if (if ((tierResult > sT2))
86+ then (sT3 >= tierResult)
87+ else false)
88+ then randInt((bT2 + 1), bT3, txId, (startingNonce + 3))
89+ else if (if ((tierResult > sT3))
90+ then (sT4 >= tierResult)
91+ else false)
92+ then randInt((bT3 + 1), bT4, txId, (startingNonce + 4))
93+ else if (if ((tierResult > sT4))
94+ then (sT5 >= tierResult)
95+ else false)
96+ then randInt((bT4 + 1), bT5, txId, (startingNonce + 5))
97+ else if (if ((tierResult > sT5))
98+ then (sT6 >= tierResult)
99+ else false)
100+ then randInt((bT5 + 1), bT6, txId, (startingNonce + 6))
101+ else throw("Unexpected error")
102+ }
103+
104+
105+@Callable(i)
106+func createChar () = valueOrElse(invokChecks(i.caller), {
107+ let txId = i.transactionId
108+ let callerAddr = toBase58String(i.caller.bytes)
109+ let charId = valueOrElse(getInteger(this, keyCharsCount), 1)
110+ let bodiesAmount = getIntegerValue(govAddr, keyCharsBodiesAmount)
111+ let eyesAmount = getIntegerValue(govAddr, keyCharsEyesAmount)
112+ let mouthsAmount = getIntegerValue(govAddr, keyCharsMouthsAmount)
113+ let statsTiersRanges = split(getStringValue(govAddr, keyCharsStatsTiersRanges), separator)
114+ let elemBonusRanges = split(getStringValue(govAddr, keyCharsNaturalElemBonusRanges), separator)
115+ let lootsBonusRanges = split(getStringValue(govAddr, keyCharsNaturalLootsBonusRanges), separator)
116+ let generatingBonusRanges = split(getStringValue(govAddr, keyCharsNaturalGeneratingBonusRanges), separator)
117+ let appearance = makeString([toString(randInt(1, bodiesAmount, txId, 0)), toString(randInt(1, eyesAmount, txId, 1)), toString(randInt(1, mouthsAmount, txId, 2))], separator)
118+ let pyroBonus = getRandomBonus(statsTiersRanges, elemBonusRanges, 3, txId)
119+ let aquaBonus = getRandomBonus(statsTiersRanges, elemBonusRanges, 10, txId)
120+ let terraBonus = getRandomBonus(statsTiersRanges, elemBonusRanges, 17, txId)
121+ let aeroBonus = getRandomBonus(statsTiersRanges, elemBonusRanges, 24, txId)
122+ let generatingBonus = getRandomBonus(statsTiersRanges, generatingBonusRanges, 31, txId)
123+ let lootsBonus = getRandomBonus(statsTiersRanges, lootsBonusRanges, 38, txId)
124+[StringEntry(cWith(keyOwner, charId), callerAddr), StringEntry(cWith(keyAppearance, charId), appearance), IntegerEntry(cWith(keyPyroBonus, charId), pyroBonus), IntegerEntry(cWith(keyAquaBonus, charId), aquaBonus), IntegerEntry(cWith(keyTerraBonus, charId), terraBonus), IntegerEntry(cWith(keyAeroBonus, charId), aeroBonus), IntegerEntry(cWith(keyLootsBonus, charId), lootsBonus), IntegerEntry(cWith(keyGeneratingBonus, charId), generatingBonus)]
125+ })
126+
127+
128+@Verifier(tx)
129+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
130+

github/deemru/w8io/169f3d6 
26.44 ms