tx · 8WA1MiJXMynFBqDU1w8xa4LJEhmJjXX8q1C51rv35tfu

3P4QfR6fewW85epUg68fjgeFt3XBVpgLxmd:  -0.01000000 Waves

2022.04.29 13:43 [3095071] smart account 3P4QfR6fewW85epUg68fjgeFt3XBVpgLxmd > SELF 0.00000000 Waves

{ "type": 13, "id": "8WA1MiJXMynFBqDU1w8xa4LJEhmJjXX8q1C51rv35tfu", "fee": 1000000, "feeAssetId": null, "timestamp": 1651229057372, "version": 2, "chainId": 87, "sender": "3P4QfR6fewW85epUg68fjgeFt3XBVpgLxmd", "senderPublicKey": "26Yopt2jwHSycwVY98xW7w7XkQN8xoijxgsLeEmcEX34", "proofs": [ "3NRzSbdkDsREwFWpaYpNQrQx4dYk4hMBRqohWHYevqHuroThe2tQpyz6gncNko44WXFzih7QQotAWtv1CxzWgNSY" ], "script": "base64:AAIFAAAAAAAAAB0IAhIECgIIDxIDCgEIEgMKAQgSABIAEgASAwoBCAAAABMBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAVa2V5Qm91Z2h0Qm9vc3RlckxldmVsAAAAAQAAAAphZGRyZXNzU3RyCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAACmFkZHJlc3NTdHICAAAAE19ib3VnaHRCb29zdGVyTGV2ZWwBAAAAEWtleUR1Y2tVbmxvY2tUaW1lAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAFZHVja18JAAJYAAAAAQUAAAAHYXNzZXRJZAIAAAALX3VubG9ja1RpbWUBAAAADGtleUR1Y2tPd25lcgAAAAEAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABWR1Y2tfCQACWAAAAAEFAAAAB2Fzc2V0SWQCAAAABl9vd25lcgEAAAAOa2V5U3BvdHNCb3VnaHQAAAABAAAACmFkZHJlc3NTdHIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAKYWRkcmVzc1N0cgIAAAAMX3Nwb3RzQm91Z2h0AQAAAAxrZXlTcG90c0J1c3kAAAABAAAACmFkZHJlc3NTdHIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAKYWRkcmVzc1N0cgIAAAAKX3Nwb3RzQnVzeQEAAAATa2V5TG9ja2VkRHVja1N0YXR1cwAAAAIAAAAKYWRkcmVzc1N0cgAAAAphc3NldElkU3RyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAphZGRyZXNzU3RyAgAAAAxfbG9ja2VkRHVja18FAAAACmFzc2V0SWRTdHICAAAAB19zdGF0dXMBAAAADmdldER1Y2tEZXRhaWxzAAAAAQAAAAdhc3NldElkBAAAAAlhc3NldE5hbWUJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQQAAAAOYXNzZXROYW1lUGFydHMJAAS1AAAAAgUAAAAJYXNzZXROYW1lAgAAAAAEAAAACWlzSmFja3BvdAkAAAAAAAACCQABkQAAAAIFAAAADmFzc2V0TmFtZVBhcnRzCQAAZQAAAAIJAAGQAAAAAQUAAAAOYXNzZXROYW1lUGFydHMAAAAAAAAAAAICAAAAAUoEAAAACmFzc2V0Q29sb3IDBQAAAAlpc0phY2twb3QCAAAAAUIJAAGRAAAAAgUAAAAOYXNzZXROYW1lUGFydHMJAABlAAAAAgkAAZAAAAABBQAAAA5hc3NldE5hbWVQYXJ0cwAAAAAAAAAAAQkABRQAAAACBQAAAAphc3NldENvbG9yBQAAAAlpc0phY2twb3QBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAFGdldEFjY2Vzc0l0ZW1Bc3NldElkAAAAAAkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAAYc3RhdGljX2FjY2Vzc0l0ZW1Bc3NldElkAQAAABJnZXRBY2Nlc3NJdGVtUHJpY2UAAAAACQEAAAANdHJ5R2V0SW50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cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACnVubG9ja0R1Y2sAAAABAAAACmFzc2V0SWRTdHIEAAAACmFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFzc2V0SWRTdHIEAAAADHREdWNrRGV0YWlscwkBAAAADmdldER1Y2tEZXRhaWxzAAAAAQUAAAAHYXNzZXRJZAQAAAAKYXNzZXRDb2xvcggFAAAADHREdWNrRGV0YWlscwAAAAJfMQQAAAAJaXNKYWNrcG90CAUAAAAMdER1Y2tEZXRhaWxzAAAAAl8yBAAAAAprU3BvdHNCdXN5CQEAAAAMa2V5U3BvdHNCdXN5AAAAAQUAAAAKYWRkcmVzc1N0cgQAAAAKa0R1Y2tPd25lcgkBAAAADGtleUR1Y2tPd25lcgAAAAEFAAAAB2Fzc2V0SWQEAAAAEnJlbWFpbmluZ0ZvclVubG9jawkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABFrZXlEdWNrVW5sb2NrVGltZQAAAAEFAAAAB2Fzc2V0SWQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwkBAAAAAiE9AAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAACmtEdWNrT3duZXIFAAAACmFkZHJlc3NTdHIJAAACAAAAAQIAAAAVVGhlIGR1Y2sgaXMgbm90IHlvdXJzAwkAAGYAAAACBQAAABJyZW1haW5pbmdGb3JVbmxvY2sAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAG3lvdSBuZWVkIHRvIHdhaXQgdG8gdW5sb2NrIAkAAaQAAAABCQAAaQAAAAIFAAAAEnJlbWFpbmluZ0ZvclVubG9jawAAAAAAAAAD6AIAAAAIIHNlY29uZHMEAAAAD3Vuc3Rha2VGdW5jTmFtZQMJAAAAAAAAAgUAAAAJaXNKYWNrcG90BgIAAAAOdW5zdGFrZUphY2twb3QCAAAACnVuc3Rha2VORlQEAAAABGludjEJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABCQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAABQAAAA91bnN0YWtlRnVuY05hbWUJAARMAAAAAgUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGludjEFAAAABGludjEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABNrZXlMb2NrZWREdWNrU3RhdHVzAAAAAgUAAAAKYWRkcmVzc1N0cgUAAAAKYXNzZXRJZFN0cgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAprRHVja093bmVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprU3BvdHNCdXN5CQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAKa1Nwb3RzQnVzeQAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAAv3qx0", "height": 3095071, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GR7oceUixioQQE52RELUj3k2aQP7UfPTueFiTDaVvHpv Next: 62CQmhZrrqd4x3yZbTLaqaQMVPhwQ7WscY6YTa8Q3vA7 Diff:
OldNewDifferences
9898 func deleteSetting (key) = if ((i.caller != this))
9999 then throw("Only administrator can call this method")
100100 else [DeleteEntry(key)]
101+
102+
103+
104+@Callable(i)
105+func issueFreeAccessItem (recipientAddress) = if ((i.caller != this))
106+ then throw("Can't be called by this user")
107+ else {
108+ let issueAccessItem = Issue("ACCESS-RACE", "[Access] Metarace access NFT for Duckracer", 1, 0, false)
109+ let accessRaceAssetId = toBase58String(calculateAssetId(issueAccessItem))
110+ let kSpotsBought = keySpotsBought(recipientAddress)
111+[StringEntry((("accessItem_" + accessRaceAssetId) + "_owner"), recipientAddress), issueAccessItem, StringEntry((("address_" + recipientAddress) + "_owning"), accessRaceAssetId), IntegerEntry(kSpotsBought, (tryGetInteger(kSpotsBought) + 1))]
112+ }
101113
102114
103115
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (key) = match getInteger(this, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 func tryGetString (key) = match getString(this, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func keyBoughtBoosterLevel (addressStr) = (("address_" + addressStr) + "_boughtBoosterLevel")
2121
2222
2323 func keyDuckUnlockTime (assetId) = (("duck_" + toBase58String(assetId)) + "_unlockTime")
2424
2525
2626 func keyDuckOwner (assetId) = (("duck_" + toBase58String(assetId)) + "_owner")
2727
2828
2929 func keySpotsBought (addressStr) = (("address_" + addressStr) + "_spotsBought")
3030
3131
3232 func keySpotsBusy (addressStr) = (("address_" + addressStr) + "_spotsBusy")
3333
3434
3535 func keyLockedDuckStatus (addressStr,assetIdStr) = (((("address_" + addressStr) + "_lockedDuck_") + assetIdStr) + "_status")
3636
3737
3838 func getDuckDetails (assetId) = {
3939 let assetName = value(value(assetInfo(assetId)).name)
4040 let assetNameParts = split(assetName, "")
4141 let isJackpot = (assetNameParts[(size(assetNameParts) - 2)] == "J")
4242 let assetColor = if (isJackpot)
4343 then "B"
4444 else assetNameParts[(size(assetNameParts) - 1)]
4545 $Tuple2(assetColor, isJackpot)
4646 }
4747
4848
4949 func getIncubatorAddress () = fromBase58String(tryGetString("static_incubatorAddress"))
5050
5151
5252 func getBreederAddress () = fromBase58String(tryGetString("static_breederAddress"))
5353
5454
5555 func getFarmingAddress () = fromBase58String(tryGetString("static_farmingAddress"))
5656
5757
5858 func getEggAssetId () = fromBase58String(tryGetString("static_eggAssetId"))
5959
6060
6161 func getAccessItemAssetId () = fromBase58String(tryGetString("static_accessItemAssetId"))
6262
6363
6464 func getAccessItemPrice () = tryGetInteger("static_accessItemPrice")
6565
6666
6767 func getMinLockDuration () = tryGetInteger("static_minLockDuration")
6868
6969
7070 func getBosterBuyAssetId () = fromBase58String(tryGetString("static_boosterBuyAssetId"))
7171
7272
7373 func getBosterPriceForLevel (level) = valueOrErrorMessage(getInteger(("static_boosterPriceLevel_" + toString(level))), "There is no price value for this level of booster")
7474
7575
7676 func getBosterNameForLevel (level) = valueOrErrorMessage(getString(("static_boosterName_" + toString(level))), "There is no suck booster")
7777
7878
7979 @Callable(i)
8080 func updateSetting (key,value) = if ((i.caller != this))
8181 then throw("Only administrator can call this method")
8282 else match value {
8383 case int: Int =>
8484 [IntegerEntry(key, int)]
8585 case s: String =>
8686 [StringEntry(key, s)]
8787 case b: Boolean =>
8888 [BooleanEntry(key, b)]
8989 case bv: ByteVector =>
9090 [BinaryEntry(key, bv)]
9191 case _ =>
9292 throw("Bad value type")
9393 }
9494
9595
9696
9797 @Callable(i)
9898 func deleteSetting (key) = if ((i.caller != this))
9999 then throw("Only administrator can call this method")
100100 else [DeleteEntry(key)]
101+
102+
103+
104+@Callable(i)
105+func issueFreeAccessItem (recipientAddress) = if ((i.caller != this))
106+ then throw("Can't be called by this user")
107+ else {
108+ let issueAccessItem = Issue("ACCESS-RACE", "[Access] Metarace access NFT for Duckracer", 1, 0, false)
109+ let accessRaceAssetId = toBase58String(calculateAssetId(issueAccessItem))
110+ let kSpotsBought = keySpotsBought(recipientAddress)
111+[StringEntry((("accessItem_" + accessRaceAssetId) + "_owner"), recipientAddress), issueAccessItem, StringEntry((("address_" + recipientAddress) + "_owning"), accessRaceAssetId), IntegerEntry(kSpotsBought, (tryGetInteger(kSpotsBought) + 1))]
112+ }
101113
102114
103115
104116 @Callable(i)
105117 func buyBooster () = {
106118 let kBoughtLevel = keyBoughtBoosterLevel(toString(i.caller))
107119 let boughtBoosterLevel = tryGetInteger(kBoughtLevel)
108120 let newLevel = (boughtBoosterLevel + 1)
109121 let pmt = value(i.payments[0])
110122 let price = getBosterPriceForLevel(newLevel)
111123 let expectedAssetId = getBosterBuyAssetId()
112124 if ((pmt.amount != price))
113125 then throw(("Bad price, it should be: " + toString(price)))
114126 else if ((pmt.assetId != expectedAssetId))
115127 then throw(("Bad payment attached, it shoule be: " + toBase58String(expectedAssetId)))
116128 else {
117129 let name = getBosterNameForLevel(newLevel)
118130 let boosterItem = Issue(("RACE-" + name), ("[Booster] Metarace booster for the game, level = " + toString(newLevel)), 1, 0, false)
119131 let boosterItemAssetId = calculateAssetId(boosterItem)
120132 [boosterItem, IntegerEntry(kBoughtLevel, newLevel), ScriptTransfer(i.caller, 1, boosterItemAssetId)]
121133 }
122134 }
123135
124136
125137
126138 @Callable(i)
127139 func buyAccessItem () = {
128140 let pmt = value(i.payments[0])
129141 let addressStr = toString(i.caller)
130142 if ((pmt.assetId != getAccessItemAssetId()))
131143 then throw("Wrong asset attached")
132144 else if ((pmt.amount != getAccessItemPrice()))
133145 then throw("Wrong amount of assets attached")
134146 else {
135147 let issueAccessItem = Issue("ACCESS-RACE", "[Access] Metarace access NFT for Duckracer", 1, 0, false)
136148 let accessRaceAssetId = toBase58String(calculateAssetId(issueAccessItem))
137149 let kSpotsBought = keySpotsBought(addressStr)
138150 [issueAccessItem, StringEntry((("accessItem_" + accessRaceAssetId) + "_owner"), addressStr), StringEntry((("address_" + addressStr) + "_owning"), accessRaceAssetId), IntegerEntry(kSpotsBought, (tryGetInteger(kSpotsBought) + 1))]
139151 }
140152 }
141153
142154
143155
144156 @Callable(i)
145157 func lockDuck () = {
146158 let addressStr = toString(i.caller)
147159 let pmt = value(i.payments[0])
148160 let assetId = value(pmt.assetId)
149161 let assetIssuer = value(assetInfo(assetId)).issuer.bytes
150162 let tDuckDetails = getDuckDetails(assetId)
151163 let assetColor = tDuckDetails._1
152164 let isJackpot = tDuckDetails._2
153165 let kSpotsBusy = keySpotsBusy(addressStr)
154166 let spotsBusy = tryGetInteger(kSpotsBusy)
155167 let kSpotsBought = keySpotsBought(addressStr)
156168 let addressSpotsAvailable = (tryGetInteger(kSpotsBought) - spotsBusy)
157169 if ((pmt.amount != 1))
158170 then throw("NFT is not attached")
159171 else if (if ((assetIssuer != getIncubatorAddress()))
160172 then (assetIssuer != getBreederAddress())
161173 else false)
162174 then throw("ivalid NFT attached")
163175 else if ((0 >= addressSpotsAvailable))
164176 then throw("No spots available")
165177 else {
166178 let kPerchesAvailable = ((("address_" + toString(this)) + "_perchesAvailable_") + assetColor)
167179 let perchesAvailable = match getInteger(Address(getFarmingAddress()), kPerchesAvailable) {
168180 case b: Int =>
169181 b
170182 case _ =>
171183 0
172184 }
173185 if ((perchesAvailable == perchesAvailable))
174186 then {
175187 let eggAssetId = getEggAssetId()
176188 let inv1 = if ((perchesAvailable > 0))
177189 then unit
178190 else invoke(Address(getFarmingAddress()), "buyPerch", [assetColor, ""], [AttachedPayment(eggAssetId, 100000000)])
179191 if ((inv1 == inv1))
180192 then {
181193 let inv2 = if ((isJackpot == false))
182194 then invoke(Address(getFarmingAddress()), "stakeNFT", nil, [AttachedPayment(assetId, 1)])
183195 else invoke(Address(getFarmingAddress()), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1)])
184196 if ((inv2 == inv2))
185197 then [IntegerEntry(kSpotsBusy, (spotsBusy + 1)), StringEntry(keyDuckOwner(assetId), addressStr), BooleanEntry(keyLockedDuckStatus(addressStr, toBase58String(assetId)), true), IntegerEntry(keyDuckUnlockTime(assetId), (lastBlock.timestamp + getMinLockDuration()))]
186198 else throw("Strict value is not equal to itself.")
187199 }
188200 else throw("Strict value is not equal to itself.")
189201 }
190202 else throw("Strict value is not equal to itself.")
191203 }
192204 }
193205
194206
195207
196208 @Callable(i)
197209 func unlockDuck (assetIdStr) = {
198210 let addressStr = toString(i.caller)
199211 let assetId = fromBase58String(assetIdStr)
200212 let tDuckDetails = getDuckDetails(assetId)
201213 let assetColor = tDuckDetails._1
202214 let isJackpot = tDuckDetails._2
203215 let kSpotsBusy = keySpotsBusy(addressStr)
204216 let kDuckOwner = keyDuckOwner(assetId)
205217 let remainingForUnlock = (tryGetInteger(keyDuckUnlockTime(assetId)) - lastBlock.timestamp)
206218 if ((tryGetString(kDuckOwner) != addressStr))
207219 then throw("The duck is not yours")
208220 else if ((remainingForUnlock > 0))
209221 then throw((("you need to wait to unlock " + toString((remainingForUnlock / 1000))) + " seconds"))
210222 else {
211223 let unstakeFuncName = if ((isJackpot == true))
212224 then "unstakeJackpot"
213225 else "unstakeNFT"
214226 let inv1 = invoke(Address(getFarmingAddress()), unstakeFuncName, [assetIdStr], nil)
215227 if ((inv1 == inv1))
216228 then [ScriptTransfer(i.caller, 1, assetId), DeleteEntry(keyLockedDuckStatus(addressStr, assetIdStr)), DeleteEntry(kDuckOwner), IntegerEntry(kSpotsBusy, (tryGetInteger(kSpotsBusy) - 1))]
217229 else throw("Strict value is not equal to itself.")
218230 }
219231 }
220232
221233

github/deemru/w8io/6500d08 
42.30 ms