tx · 5dnMr6dnEGiF7GWbUZC5KEp8W6P8gBUicyYfHjbWWShP

3NCMVbH9EWZogGDLtS8sf1N4ShcoDUqxrn7:  -0.01000000 Waves

2020.01.21 15:25 [864015] smart account 3NCMVbH9EWZogGDLtS8sf1N4ShcoDUqxrn7 > SELF 0.00000000 Waves

{ "type": 13, "id": "5dnMr6dnEGiF7GWbUZC5KEp8W6P8gBUicyYfHjbWWShP", "fee": 1000000, "feeAssetId": null, "timestamp": 1579609196733, "version": 1, "sender": "3NCMVbH9EWZogGDLtS8sf1N4ShcoDUqxrn7", "senderPublicKey": "JAAzQjxgzdgjCEdwXpfgpoMVcDpJRs4WgA9eTKxJYitU", "proofs": [ "3zwRLUKH9PNS6hKfMgVyJGqf9CfszopPZHzoRz4Z59EoQFzxHbMQraez9W6TQLpc6rWep3VKoXjevcPcSJMagGRJ" ], "script": "base64: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AAAAAAAAAAEEAAAAB2lzVmFsaWQJAAH4AAAABAkBAAAABlNoYTI1NgAAAAAFAAAABnJhbmRvbQUAAAAMc2lnbmVkUmFuZG9tBQAAAA9wbGF5ZXJQdWJsaWNLZXkDCQEAAAABIQAAAAEJAQAAAAhpc1BsYXllcgAAAAIFAAAAAWkFAAAAD3BsYXllclB1YmxpY0tleQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAFT25seSAJAAJYAAAAAQUAAAAPcGxheWVyUHVibGljS2V5AgAAABQgcGxheWVyIGNhbiBkbyB0aGlzLgMJAQAAAAEhAAAAAQUAAAAHaXNWYWxpZAkAAAIAAAABAgAAABdTaWduYXR1cmUgaXMgbm90IHZhbGlkLgMFAAAABmlzVXNlZAkAAAIAAAABAgAAAA1BbHJlYWR5IHVzZWQuAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACWVuZEhlaWdodAkAAAIAAAABAgAAAAlUb28gbGF0ZS4DCQAAZgAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQIAAAAKVG9vIGVhcmx5LgQAAAABcgkAAGkAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAagAAAAIJAASxAAAAAQkAAMkAAAACBQAAAAxzaWduZWRSYW5kb20AAAAAAAAAAAgAAAAAAAAAAGQJAABqAAAAAgkABLEAAAABCQAAyQAAAAIJAADKAAAAAgUAAAAMc2lnbmVkUmFuZG9tAAAAAAAAAAAIAAAAAAAAAAAIAAAAAAAAAABkCQAAagAAAAIJAASxAAAAAQkAAMkAAAACCQAAygAAAAIFAAAADHNpZ25lZFJhbmRvbQAAAAAAAAAAEAAAAAAAAAAACAAAAAAAAAAAZAkAAGoAAAACCQAEsQAAAAEJAADJAAAAAgkAAMoAAAACBQAAAAxzaWduZWRSYW5kb20AAAAAAAAAABgAAAAAAAAAAAgAAAAAAAAAAGQAAAAAAAAAAAQEAAAABml0ZW1JZAMJAABmAAAAAgUAAAABcgAAAAAAAAAAWgIAAAALdW5pcUFzc2V0SWQDCQAAZgAAAAIFAAAAAXIAAAAAAAAAAEYCAAAAC3JhcmVBc3NldElkAwkAAGYAAAACBQAAAAFyAAAAAAAAAAAeAgAAAA91bmNvbW1vbkFzc2V0SWQCAAAADWNvbW1vbkFzc2V0SWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAA51c2VyRGFpbHlRdWVzdAAAAAUFAAAAD3BsYXllclB1YmxpY0tleQUAAAAGcmFuZG9tBQAAAAtzdGFydEhlaWdodAUAAAAJZW5kSGVpZ2h0AAAAAAAAAAABBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAPcGxheWVyUHVibGljS2V5AAAAAAAAAAABCQACWQAAAAEFAAAABml0ZW1JZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAA9wbGF5ZXJQdWJsaWNLZXkAAAAAAAAHoSAFAAAABHVuaXQFAAAAA25pbAAAAABoGfws", "chainId": 84, "height": 864015, "spentComplexity": 0 } View: original | compacted Prev: none Next: EqmpxiqvWvaEQ5Bd3axkseZ16HZCxk9HXGzEw7LSZum2 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let rootAccountPublicKey = base58''
5+
6+func getPlayerPublicKey (data) = take(data, 32)
7+
8+
9+func getRandom (data) = take(drop(data, 32), 32)
10+
11+
12+func getStartHeight (data) = toInt(take(drop(data, (32 + 32)), 8))
13+
14+
15+func getEndHeight (data) = toInt(take(drop(data, ((32 + 32) + 8)), 8))
16+
17+
18+func getIsUsed (data) = toInt(take(drop(data, (((32 + 32) + 8) + 8)), 8))
19+
20+
21+func userDailyQuestKey (key,startHeight,endHeight) = ((((("QUESTS_" + toBase58String(key)) + "_") + toString(startHeight)) + "_") + toString(endHeight))
22+
23+
24+func userDailyQuest (key,random,startHeight,endHeight,isUsed) = DataEntry(userDailyQuestKey(key, startHeight, endHeight), ((((key + random) + toBytes(startHeight)) + toBytes(endHeight)) + toBytes(isUsed)))
25+
26+
27+func isPlayer (i,pubKey) = (i.callerPublicKey == pubKey)
28+
29+
30+func isRoot (i) = (i.callerPublicKey == rootAccountPublicKey)
31+
32+
33+@Callable(i)
34+func setPlayerDailyQuest (playerPublicKey,random) = if (!(isRoot(i)))
35+ then throw("Only root can call this.")
36+ else WriteSet([userDailyQuest(playerPublicKey, random, height, (height + (24 * 60)), 0)])
37+
38+
39+
40+@Callable(i)
41+func playerInvoke (dailyQuestKey,signedRandom) = {
42+ let data = extract(getBinary(this, dailyQuestKey))
43+ let playerPublicKey = getPlayerPublicKey(data)
44+ let random = getRandom(data)
45+ let startHeight = getStartHeight(data)
46+ let endHeight = getEndHeight(data)
47+ let isUsed = (getIsUsed(data) == 1)
48+ let isValid = rsaVerify(Sha256(), random, signedRandom, playerPublicKey)
49+ if (!(isPlayer(i, playerPublicKey)))
50+ then throw((("Only " + toBase58String(playerPublicKey)) + " player can do this."))
51+ else if (!(isValid))
52+ then throw("Signature is not valid.")
53+ else if (isUsed)
54+ then throw("Already used.")
55+ else if ((height > endHeight))
56+ then throw("Too late.")
57+ else if ((startHeight > height))
58+ then throw("Too early.")
59+ else {
60+ let r = (((((toInt(take(signedRandom, 8)) % 100) + (toInt(take(drop(signedRandom, 8), 8)) % 100)) + (toInt(take(drop(signedRandom, 16), 8)) % 100)) + (toInt(take(drop(signedRandom, 24), 8)) % 100)) / 4)
61+ let itemId = if ((r > 90))
62+ then "uniqAssetId"
63+ else if ((r > 70))
64+ then "rareAssetId"
65+ else if ((r > 30))
66+ then "uncommonAssetId"
67+ else "commonAssetId"
68+ ScriptResult(WriteSet([userDailyQuest(playerPublicKey, random, startHeight, endHeight, 1)]), TransferSet([ScriptTransfer(addressFromPublicKey(playerPublicKey), 1, fromBase58String(itemId)), ScriptTransfer(addressFromPublicKey(playerPublicKey), 500000, unit)]))
69+ }
70+ }
71+
72+

github/deemru/w8io/3ef1775 
106.40 ms