tx · AukX1ALS9qG9MWq36y3Ys6cYQGtE1TYtRvgGdtwytqMB

3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc:  -0.01000000 Waves

2021.10.21 22:17 [1756462] smart account 3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc > SELF 0.00000000 Waves

{ "type": 13, "id": "AukX1ALS9qG9MWq36y3Ys6cYQGtE1TYtRvgGdtwytqMB", "fee": 1000000, "feeAssetId": null, "timestamp": 1634843847013, "version": 2, "chainId": 84, "sender": "3N7a7sTSKaE621QewSqQcL1mUbknJjnLkZc", "senderPublicKey": "6LrPmGtwuADhwHYcxBouLzwfSTGgucbwYG5Pja7LUrcd", "proofs": [ "28M6o8zaKWFxk4XFkX1FtdkMdhezL7iqUXo9SK19CJvCmUYi5sT3rs2JpM3iuJ5aMgGxFGU7GbVJzKEzjBGYJDsC" ], "script": "base64:AAIFAAAAAAAAAAgIAhIECgIIGAAAAAAAAAABAAAAAWkBAAAAC2NyZWF0ZU9mZmVyAAAAAgAAAAl0b0FkZHJlc3MAAAAFYXNzZXQEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACXRvQWRkcmVzcwIAAAAFYXNzZXQJAAEsAAAAAgkAASwAAAACBQAAAAl0b0FkZHJlc3MJAAGRAAAAAgUAAAAFYXNzZXQAAAAAAAAAAAAJAAGRAAAAAgUAAAAFYXNzZXQAAAAAAAAAAAEFAAAAA25pbAAAAAAJBY/O", "height": 1756462, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FfRPkqTX516SnHptKsFASDTMvzn7nqomQqfbEY8QJmV4 Next: EUefa87Rb7Vh4C1VyTc9aZxkknapHdrq3vdAE975CNgX Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let gameNumberKey = "$GAME_NUMBER"
5-
6-let testKey = "$TEST"
7-
8-let delayForGame = 2
9-
10-let GameStarted = 1
11-
12-let GameFinished = 2
13-
14-func getGameStatusKey (address,gameId) = (((address + "_") + toString(gameId)) + "_status")
15-
16-
17-func getGameTxIdKey (address,gameId) = (((address + "_") + toString(gameId)) + "_txid")
18-
19-
20-func getGameingFinishHeightKey (address,gameId) = (((address + "_") + toString(gameId)) + "_fh")
21-
22-
23-func getAssetIdKey (address,gameId) = (((address + "_") + toString(gameId)) + "_di")
24-
25-
26-func tryGetInteger (key) = {
27- let val = match getInteger(this, key) {
28- case b: Int =>
29- b
30- case _ =>
31- 0
32- }
33- val
34- }
35-
36-
37-func getRandomNumber (variants,txId,gameingFinishHeight,offset) = {
38- let randomSeedBlock = value(blockInfoByHeight((gameingFinishHeight - 1)))
39- let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
40- (toInt(randomHash, (offset * 8)) % variants)
41- }
42-
43-
44-func getRandomName (txId,gameingFinishHeight) = {
45- let rand = getRandomNumber(2, txId, gameingFinishHeight, 0)
46- if ((rand == 0))
47- then "type1"
48- else "type2"
49- }
504
515
526 @Callable(i)
53-func startAssetGaming () = {
7+func createOffer (toAddress,asset) = {
548 let firstPayment = value(i.payments[0])
55- let gameId = tryGetInteger(gameNumberKey)
56-[IntegerEntry(getGameStatusKey(toString(i.caller), gameId), GameStarted), StringEntry(getGameTxIdKey(toString(i.caller), gameId), toBase58String(i.transactionId)), IntegerEntry(getGameingFinishHeightKey(toString(i.caller), gameId), (height + delayForGame)), IntegerEntry(gameNumberKey, (gameId + 1))]
57- }
58-
59-
60-
61-@Callable(i)
62-func finishAssetGaming (gameId) = {
63- let gameingStatusKey = getGameStatusKey(toString(i.caller), gameId)
64- let finishHeightKey = getGameingFinishHeightKey(toString(i.caller), gameId)
65- let assetIdKey = getAssetIdKey(toString(i.caller), gameId)
66- let gameTxIdKey = getGameTxIdKey(toString(i.caller), gameId)
67- let gameingTxStatus = tryGetInteger(gameingStatusKey)
68- let gameingFinishHeight = getIntegerValue(this, finishHeightKey)
69- let gameTxId = fromBase58String(getStringValue(this, gameTxIdKey))
70- if ((gameingTxStatus == GameFinished))
71- then {
72- let assetId = getStringValue(this, getAssetIdKey(toString(i.caller), gameId))
73- throw(("The asset was gamed and claimed already, here is the folowing: " + assetId))
74- }
75- else if ((gameingFinishHeight > height))
76- then throw((((("Gaming is not finished yet " + toString((gameingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((gameingFinishHeight - height))) + " minutes"))
77- else {
78- let randonName = getRandomName(gameTxId, gameingFinishHeight)
79- let asset = Issue(randonName, randonName, 1, 0, false, unit, gameingFinishHeight)
80- let assetId = calculateAssetId(asset)
81-[IntegerEntry(gameingStatusKey, GameFinished), StringEntry(assetIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), assetIdKey), asset, ScriptTransfer(i.caller, 1, assetId)]
82- }
9+[StringEntry((toAddress + "asset"), ((toAddress + asset[0]) + asset[1]))]
8310 }
8411
8512

github/deemru/w8io/026f985 
21.79 ms