tx · AQER9Yvp3YHGEwfHLRkWpL9XVrDVEYANXcQUs7P7JhkU

3P96rN9M2g7E8WtgLC6XQgoJ2rz341tpkbG:  -0.01400000 Waves

2022.06.18 11:13 [3167181] smart account 3P96rN9M2g7E8WtgLC6XQgoJ2rz341tpkbG > SELF 0.00000000 Waves

{ "type": 13, "id": "AQER9Yvp3YHGEwfHLRkWpL9XVrDVEYANXcQUs7P7JhkU", "fee": 1400000, "feeAssetId": null, "timestamp": 1655540110620, "version": 2, "chainId": 87, "sender": "3P96rN9M2g7E8WtgLC6XQgoJ2rz341tpkbG", "senderPublicKey": "D627TuphR2x4Z5yLbJjyhoM9KBhfjUPSRgKAUiQthmoi", "proofs": [ "36Qmm51BYUbm2PAkQyDv8uvXiVhNETNmrVUDQ4p4t7prQy72rNT5ZFNKSu4ijPxVUrRwFQV4YKNpXCew7bNLSsN2" ], "script": "base64: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dE5GVE5hbWUAAAAACQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQIAAAAOc3RhdGljX25mdE5hbWUCAAAAIzNHTk46IFRoZXJlIGlzIG5vIG5mdCBuYW1lIGRlZmluZWQhAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABRnZXRBY2Nlc3NJdGVtQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAGHN0YXRpY19hY2Nlc3NJdGVtQXNzZXRJZAEAAAASZ2V0QWNjZXNzSXRlbVByaWNlAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABZzdGF0aWNfYWNjZXNzSXRlbVByaWNlAQAAABJnZXRNaW5Mb2NrRHVyYXRpb24AAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAFnN0YXRpY19taW5Mb2NrRHVyYXRpb24BAAAAE2dldEJvc3RlckJ1eUFzc2V0SWQAAAAACQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABhzdGF0aWNfYm9vc3RlckJ1eUFzc2V0SWQBAAAAFmdldEJvc3RlclByaWNlRm9yTGV2ZWwAAAABAAAABWxldmVsCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACAgAAABlzdGF0aWNfYm9vc3RlclByaWNlTGV2ZWxfCQABpAAAAAEFAAAABWxldmVsAgAAADkzR0JQRkw6IFRoZXJlIGlzIG5vIHByaWNlIHZhbHVlIGZvciB0aGlzIGxldmVsIG9mIGJvb3N0ZXIBAAAAFWdldEJvc3Rlck5hbWVGb3JMZXZlbAAAAAEAAAAFbGV2ZWwJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQABLAAAAAICAAAAE3N0YXRpY19ib29zdGVyTmFtZV8JAAGkAAAAAQUAAAAFbGV2ZWwCAAAAIDNHQk5GTDogVGhlcmUgaXMgbm8gc3VjaCBib29zdGVyAQAAABVidXlBY2Nlc3NJdGVtSW50ZXJuYWwAAAACAAAACmFkZHJlc3NTdHIAAAADcG10AwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkCQEAAAAUZ2V0QWNjZXNzSXRlbUFzc2V0SWQAAAAACQAAAgAAAAECAAAAGjNCQUk6IFdyb25nIGFzc2V0IGF0dGFjaGVkAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQJAQAAABJnZXRBY2Nlc3NJdGVtUHJpY2UAAAAACQAAAgAAAAECAAAAJTNCQUk6IFdyb25nIGFtb3VudCBvZiBhc3NldHMgYXR0YWNoZWQEAAAAD2lzc3VlQWNjZXNzSXRlbQkABEIAAAAFCQABLAAAAAICAAAAB0FDQ0VTUy0JAQAAAAtnZXRHYW1lTmFtZQAAAAAJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACVtBY2Nlc3NdIAkBAAAAD2dldExvbmdHYW1lTmFtZQAAAAACAAAAECBhY2Nlc3MgTkZUIGZvciAJAQAAAApnZXRORlROYW1lAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAEWFjY2Vzc1JhY2VBc3NldElkCQACWAAAAAEJAAQ4AAAAAQUAAAAPaXNzdWVBY2Nlc3NJdGVtBAAAAAxrU3BvdHNCb3VnaHQJAQAAAA5rZXlTcG90c0JvdWdodAAAAAEFAAAACmFkZHJlc3NTdHIJAARMAAAAAgUAAAAPaXNzdWVBY2Nlc3NJdGVtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthY2Nlc3NJdGVtXwUAAAARYWNjZXNzUmFjZUFzc2V0SWQCAAAABl9vd25lcgUAAAAKYWRkcmVzc1N0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAACmFkZHJlc3NTdHICAAAAB19vd25pbmcFAAAAEWFjY2Vzc1JhY2VBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrU3BvdHNCb3VnaHQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAxrU3BvdHNCb3VnaHQAAAAAAAAAAAEFAAAAA25pbAEAAAAQbG9ja0R1Y2tJbnRlcm5hbAAAAAIAAAAKYWRkcmVzc1N0cgAAAANwbXQEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAALYXNzZXRJc3N1ZXIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAGaXNzdWVyBAAAAAx0RHVja0RldGFpbHMJAQAAAA5nZXREdWNrRGV0YWlscwAAAAEFAAAAB2Fzc2V0SWQEAAAACmFzc2V0Q29sb3IIBQAAAAx0RHVja0RldGFpbHMAAAACXzEEAAAACWlzSmFja3BvdAgFAAAADHREdWNrRGV0YWlscwAAAAJfMgQAAAAKa1Nwb3RzQnVzeQkBAAAADGtleVNwb3RzQnVzeQAAAAEFAAAACmFkZHJlc3NTdHIEAAAACXNwb3RzQnVzeQkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAprU3BvdHNCdXN5BAAAAAxrU3BvdHNCb3VnaHQJAQAAAA5rZXlTcG90c0JvdWdodAAAAAEFAAAACmFkZHJlc3NTdHIEAAAAFWFkZHJlc3NTcG90c0F2YWlsYWJsZQkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdl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AAROAAAAAgUAAAAIbG9ja0RhdGEFAAAADmFjY2Vzc0l0ZW1EYXRhCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA1idXlBY2Nlc3NJdGVtAAAAAAQAAAAKYWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACmVnZ1BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAQAAABVidXlBY2Nlc3NJdGVtSW50ZXJuYWwAAAACBQAAAAphZGRyZXNzU3RyBQAAAAplZ2dQYXltZW50AAAAAWkBAAAACGxvY2tEdWNrAAAAAAQAAAAKYWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAC2R1Y2tQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQEAAAAQbG9ja0R1Y2tJbnRlcm5hbAAAAAIFAAAACmFkZHJlc3NTdHIFAAAAC2R1Y2tQYXltZW50AAAAAWkBAAAACnVubG9ja0R1Y2sAAAABAAAACmFzc2V0SWRTdHIEAAAACmFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFzc2V0SWRTdHIEAAAADHREdWNrRGV0YWlscwkBAAAADmdldER1Y2tEZXRhaWxzAAAAAQUAAAAHYXNzZXRJZAQAAAAKYXNzZXRDb2xvcggFAAAADHREdWNrRGV0YWlscwAAAAJfMQQAAAAJaXNKYWNrcG90CAUAAAAMdER1Y2tEZXRhaWxzAAAAAl8yBAAAAAprU3BvdHNCdXN5CQEAAAAMa2V5U3BvdHNCdXN5AAAAAQUAAAAKYWRkcmVzc1N0cgQAAAAKa0R1Y2tPd25lcgkBAAAADGtleUR1Y2tPd25lcgAAAAEFAAAAB2Fzc2V0SWQEAAAAEnJlbWFpbmluZ0ZvclVubG9jawkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABFrZXlEdWNrVW5sb2NrVGltZQAAAAEFAAAAB2Fzc2V0SWQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwkBAAAAAiE9AAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAACmtEdWNrT3duZXIFAAAACmFkZHJlc3NTdHIJAAACAAAAAQIAAAAaM1VMOiBUaGUgZHVjayBpcyBub3QgeW91cnMDCQAAZgAAAAIFAAAAEnJlbWFpbmluZ0ZvclVubG9jawAAAAAAAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAgM1VMOiBZb3UgbmVlZCB0byB3YWl0IHRvIHVubG9jayAJAAGkAAAAAQkAAGkAAAACBQAAABJyZW1haW5pbmdGb3JVbmxvY2sAAAAAAAAAA+gCAAAACCBzZWNvbmRzBAAAAA91bnN0YWtlRnVuY05hbWUDCQAAAAAAAAIFAAAACWlzSmFja3BvdAYCAAAADnVuc3Rha2VKYWNrcG90AgAAAAp1bnN0YWtlTkZUBAAAAARpbnYxCQAD/AAAAAQJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAFAAAAD3Vuc3Rha2VGdW5jTmFtZQkABEwAAAACBQAAAAphc3NldElkU3RyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAEaW52MQUAAAAEaW52MQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAE2tleUxvY2tlZER1Y2tTdGF0dXMAAAACBQAAAAphZGRyZXNzU3RyBQAAAAphc3NldElkU3RyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACmtEdWNrT3duZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtTcG90c0J1c3kJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAprU3BvdHNCdXN5AAAAAAAAAAABBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAANLPc2A=", "height": 3167181, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ekL5VmmQKXX5vvd6X6SHBrt5i695iDmniweqm1uQ1sH Next: 5t5D75ALNnpww2PuGcj8FL4c3WjHHcWQvagoZoKBS5Hh Diff:
OldNewDifferences
211211 let duckPayment = value(i.payments[1])
212212 let addressStr = toString(i.caller)
213213 let accessItemData = buyAccessItemInternal(addressStr, eggPayment)
214- let lockData = lockDuckInternal(addressStr, duckPayment)
215- (lockData ++ accessItemData)
214+ if ((accessItemData == accessItemData))
215+ then {
216+ let lockData = lockDuckInternal(addressStr, duckPayment)
217+ (lockData ++ accessItemData)
218+ }
219+ else throw("Strict value is not equal to itself.")
216220 }
217221
218222
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 keyBoughtBoosterLevel (addressStr) = (("address_" + addressStr) + "_boughtBoosterLevel")
1313
1414
1515 func keyDuckUnlockTime (assetId) = (("duck_" + toBase58String(assetId)) + "_unlockTime")
1616
1717
1818 func keyDuckOwner (assetId) = (("duck_" + toBase58String(assetId)) + "_owner")
1919
2020
2121 func keySpotsBought (addressStr) = (("address_" + addressStr) + "_spotsBought")
2222
2323
2424 func keySpotsBusy (addressStr) = (("address_" + addressStr) + "_spotsBusy")
2525
2626
2727 func keyLockedDuckStatus (addressStr,assetIdStr) = (((("address_" + addressStr) + "_lockedDuck_") + assetIdStr) + "_status")
2828
2929
3030 func getDuckDetails (assetId) = {
3131 let assetName = value(value(assetInfo(assetId)).name)
3232 let assetNameParts = split(assetName, "")
3333 let isJackpot = (assetNameParts[(size(assetNameParts) - 2)] == "J")
3434 let assetColor = if (isJackpot)
3535 then "B"
3636 else assetNameParts[(size(assetNameParts) - 1)]
3737 $Tuple2(assetColor, isJackpot)
3838 }
3939
4040
4141 func tryGetStringExternal (address,key) = match getString(address, key) {
4242 case a: String =>
4343 a
4444 case _ =>
4545 ""
4646 }
4747
4848
4949 func tryGetString (key) = tryGetStringExternal(this, key)
5050
5151
5252 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
5353
5454
5555 func getGameName () = valueOrErrorMessage(getString("static_shortGameName"), "3GGN: There is no game name defined!")
5656
5757
5858 func getLongGameName () = valueOrErrorMessage(getString("static_longGameName"), "3GLGN: There is no long game name defined!")
5959
6060
6161 func getNFTName () = valueOrErrorMessage(getString("static_nftName"), "3GNN: There is no nft name defined!")
6262
6363
6464 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
6565
6666
6767 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
6868
6969
7070 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
7171
7272
7373 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
7474
7575
7676 func getAccessItemAssetId () = fromBase58String(tryGetString("static_accessItemAssetId"))
7777
7878
7979 func getAccessItemPrice () = tryGetInteger("static_accessItemPrice")
8080
8181
8282 func getMinLockDuration () = tryGetInteger("static_minLockDuration")
8383
8484
8585 func getBosterBuyAssetId () = fromBase58String(tryGetString("static_boosterBuyAssetId"))
8686
8787
8888 func getBosterPriceForLevel (level) = valueOrErrorMessage(getInteger(("static_boosterPriceLevel_" + toString(level))), "3GBPFL: There is no price value for this level of booster")
8989
9090
9191 func getBosterNameForLevel (level) = valueOrErrorMessage(getString(("static_boosterName_" + toString(level))), "3GBNFL: There is no such booster")
9292
9393
9494 func buyAccessItemInternal (addressStr,pmt) = if ((pmt.assetId != getAccessItemAssetId()))
9595 then throw("3BAI: Wrong asset attached")
9696 else if ((pmt.amount != getAccessItemPrice()))
9797 then throw("3BAI: Wrong amount of assets attached")
9898 else {
9999 let issueAccessItem = Issue(("ACCESS-" + getGameName()), ((("[Access] " + getLongGameName()) + " access NFT for ") + getNFTName()), 1, 0, false)
100100 let accessRaceAssetId = toBase58String(calculateAssetId(issueAccessItem))
101101 let kSpotsBought = keySpotsBought(addressStr)
102102 [issueAccessItem, StringEntry((("accessItem_" + accessRaceAssetId) + "_owner"), addressStr), StringEntry((("address_" + addressStr) + "_owning"), accessRaceAssetId), IntegerEntry(kSpotsBought, (tryGetInteger(kSpotsBought) + 1))]
103103 }
104104
105105
106106 func lockDuckInternal (addressStr,pmt) = {
107107 let assetId = value(pmt.assetId)
108108 let assetIssuer = value(assetInfo(assetId)).issuer
109109 let tDuckDetails = getDuckDetails(assetId)
110110 let assetColor = tDuckDetails._1
111111 let isJackpot = tDuckDetails._2
112112 let kSpotsBusy = keySpotsBusy(addressStr)
113113 let spotsBusy = tryGetInteger(kSpotsBusy)
114114 let kSpotsBought = keySpotsBought(addressStr)
115115 let addressSpotsAvailable = (tryGetInteger(kSpotsBought) - spotsBusy)
116116 if ((pmt.amount != 1))
117117 then throw("NFT is not attached")
118118 else if (if ((assetIssuer != getIncubatorAddress()))
119119 then (assetIssuer != getBreederAddress())
120120 else false)
121121 then throw("ivalid NFT attached")
122122 else if ((0 >= addressSpotsAvailable))
123123 then throw("No spots available")
124124 else {
125125 let kPerchesAvailable = ((("address_" + toString(this)) + "_perchesAvailable_") + assetColor)
126126 let perchesAvailable = match getInteger(getFarmingAddress(), kPerchesAvailable) {
127127 case b: Int =>
128128 b
129129 case _ =>
130130 0
131131 }
132132 if ((perchesAvailable == perchesAvailable))
133133 then {
134134 let eggAssetId = getEggAssetId()
135135 let inv1 = if ((perchesAvailable > 0))
136136 then unit
137137 else invoke(getFarmingAddress(), "buyPerch", [assetColor, ""], [AttachedPayment(eggAssetId, 100000000)])
138138 if ((inv1 == inv1))
139139 then {
140140 let inv2 = if ((isJackpot == false))
141141 then invoke(getFarmingAddress(), "stakeNFT", nil, [AttachedPayment(assetId, 1)])
142142 else invoke(getFarmingAddress(), "stakeJackpot", [assetColor], [AttachedPayment(assetId, 1)])
143143 if ((inv2 == inv2))
144144 then [IntegerEntry(kSpotsBusy, (spotsBusy + 1)), StringEntry(keyDuckOwner(assetId), addressStr), BooleanEntry(keyLockedDuckStatus(addressStr, toBase58String(assetId)), true), IntegerEntry(keyDuckUnlockTime(assetId), (lastBlock.timestamp + getMinLockDuration()))]
145145 else throw("Strict value is not equal to itself.")
146146 }
147147 else throw("Strict value is not equal to itself.")
148148 }
149149 else throw("Strict value is not equal to itself.")
150150 }
151151 }
152152
153153
154154 @Callable(i)
155155 func configureOracle (oracle,shortname,longname,nftName) = if ((i.caller != this))
156156 then throw("3CO: admin only")
157157 else [StringEntry("static_oracleAddress", oracle), StringEntry("static_shortGameName", shortname), StringEntry("static_longGameName", longname), StringEntry("static_nftName", nftName)]
158158
159159
160160
161161 @Callable(i)
162162 func updateSetting (key,value) = if ((i.caller != this))
163163 then throw("Only administrator can call this method")
164164 else match value {
165165 case int: Int =>
166166 [IntegerEntry(key, int)]
167167 case s: String =>
168168 [StringEntry(key, s)]
169169 case b: Boolean =>
170170 [BooleanEntry(key, b)]
171171 case bv: ByteVector =>
172172 [BinaryEntry(key, bv)]
173173 case _ =>
174174 throw("Bad value type")
175175 }
176176
177177
178178
179179 @Callable(i)
180180 func deleteSetting (key) = if ((i.caller != this))
181181 then throw("3DS: Only administrator can call this method")
182182 else [DeleteEntry(key)]
183183
184184
185185
186186 @Callable(i)
187187 func buyBooster () = {
188188 let kBoughtLevel = keyBoughtBoosterLevel(toString(i.caller))
189189 let boughtBoosterLevel = tryGetInteger(kBoughtLevel)
190190 let newLevel = (boughtBoosterLevel + 1)
191191 let pmt = value(i.payments[0])
192192 let price = getBosterPriceForLevel(newLevel)
193193 let expectedAssetId = getBosterBuyAssetId()
194194 if ((pmt.amount != price))
195195 then throw(("3BB: Bad price, it should be: " + toString(price)))
196196 else if ((pmt.assetId != expectedAssetId))
197197 then throw(("3BB: Bad payment attached, it should be: " + toBase58String(expectedAssetId)))
198198 else {
199199 let name = getBosterNameForLevel(newLevel)
200200 let boosterItem = Issue(((getGameName() + "-") + name), ((("[Booster] " + getLongGameName()) + " booster for the game, level = ") + toString(newLevel)), 1, 0, false)
201201 let boosterItemAssetId = calculateAssetId(boosterItem)
202202 [boosterItem, IntegerEntry(kBoughtLevel, newLevel), ScriptTransfer(i.caller, 1, boosterItemAssetId)]
203203 }
204204 }
205205
206206
207207
208208 @Callable(i)
209209 func buyAccessItemAndLockDuck () = {
210210 let eggPayment = value(i.payments[0])
211211 let duckPayment = value(i.payments[1])
212212 let addressStr = toString(i.caller)
213213 let accessItemData = buyAccessItemInternal(addressStr, eggPayment)
214- let lockData = lockDuckInternal(addressStr, duckPayment)
215- (lockData ++ accessItemData)
214+ if ((accessItemData == accessItemData))
215+ then {
216+ let lockData = lockDuckInternal(addressStr, duckPayment)
217+ (lockData ++ accessItemData)
218+ }
219+ else throw("Strict value is not equal to itself.")
216220 }
217221
218222
219223
220224 @Callable(i)
221225 func buyAccessItem () = {
222226 let addressStr = toString(i.caller)
223227 let eggPayment = value(i.payments[0])
224228 buyAccessItemInternal(addressStr, eggPayment)
225229 }
226230
227231
228232
229233 @Callable(i)
230234 func lockDuck () = {
231235 let addressStr = toString(i.caller)
232236 let duckPayment = value(i.payments[0])
233237 lockDuckInternal(addressStr, duckPayment)
234238 }
235239
236240
237241
238242 @Callable(i)
239243 func unlockDuck (assetIdStr) = {
240244 let addressStr = toString(i.caller)
241245 let assetId = fromBase58String(assetIdStr)
242246 let tDuckDetails = getDuckDetails(assetId)
243247 let assetColor = tDuckDetails._1
244248 let isJackpot = tDuckDetails._2
245249 let kSpotsBusy = keySpotsBusy(addressStr)
246250 let kDuckOwner = keyDuckOwner(assetId)
247251 let remainingForUnlock = (tryGetInteger(keyDuckUnlockTime(assetId)) - lastBlock.timestamp)
248252 if ((tryGetString(kDuckOwner) != addressStr))
249253 then throw("3UL: The duck is not yours")
250254 else if ((remainingForUnlock > 0))
251255 then throw((("3UL: You need to wait to unlock " + toString((remainingForUnlock / 1000))) + " seconds"))
252256 else {
253257 let unstakeFuncName = if ((isJackpot == true))
254258 then "unstakeJackpot"
255259 else "unstakeNFT"
256260 let inv1 = invoke(getFarmingAddress(), unstakeFuncName, [assetIdStr], nil)
257261 if ((inv1 == inv1))
258262 then [ScriptTransfer(i.caller, 1, assetId), DeleteEntry(keyLockedDuckStatus(addressStr, assetIdStr)), DeleteEntry(kDuckOwner), IntegerEntry(kSpotsBusy, (tryGetInteger(kSpotsBusy) - 1))]
259263 else throw("Strict value is not equal to itself.")
260264 }
261265 }
262266
263267

github/deemru/w8io/3ef1775 
60.03 ms