tx · 3JGWQHMYk3F2ekK7V6119jM7CPgbUiwy2iV9LjMqWobx

3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba:  -0.02000000 Waves

2023.09.08 23:45 [3812631] smart account 3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba > SELF 0.00000000 Waves

{ "type": 13, "id": "3JGWQHMYk3F2ekK7V6119jM7CPgbUiwy2iV9LjMqWobx", "fee": 2000000, "feeAssetId": null, "timestamp": 1694205962918, "version": 2, "chainId": 87, "sender": "3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba", "senderPublicKey": "8yG34okaNeKtYZriaoqUQTinJjpk3pYKFTeGptmiWvTV", "proofs": [ "5W3d5aFhRDdd9dcyCaN1envzWXunRYUhJarFqPhrUuFJahz5dTwJp9uyF7k4pbFnXNZ59p2BDgXC2z263NiV7gGN" ], "script": "base64:AAIFAAAAAAAAABEIAhIDCgEIEgMKAQgSAwoBCAAAAC4BAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABF0cnlHZXRJbnRFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAAZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwAAAAACAAAAFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBAAAAGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAAAAAgAAABZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAIAAAAVc3RhdGljX2NvdXBvbnNBZGRyZXNzAQAAABVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAAAAAgAAABJzdGF0aWNfaHVudEFkZHJlc3MBAAAAFXN0YXRpY0tleV9idXJuQWRkcmVzcwAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAEAAAATZ2V0SW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAAAAAEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAABAAAAEmdldEJhYnlEdWNrQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGXN0YXRpY0tleV9iYWJ5RHVja0FkZHJlc3MAAAAAAQAAABJnZXRHYW1lRGFwcEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABlzdGF0aWNLZXlfZ2FtZURhcHBBZGRyZXNzAAAAAAEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAEAAAAOZ2V0SHVudEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAAAAAQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFXN0YXRpY0tleV9idXJuQWRkcmVzcwAAAAABAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAAJ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", "height": 3812631, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E22HfoebxCQopCfB7Sd9RXPWXbaUmPxc8gf7ngbxxXhz Next: 2NvGs56wLCM5cTbds5DGXijbfFPUVa96eq95dsmNPzra Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetIntExternal (address,key) = match getInteger(address, key) {
1313 case a: Int =>
1414 a
1515 case _ =>
1616 throw("RTGIE: Something went wrong")
1717 }
1818
1919
2020 func tryGetString (key) = tryGetStringExternal(this, key)
2121
2222
2323 let delayForHatching = 2
2424
2525 func staticKey_oracleAddress () = "static_oracleAddress"
2626
2727
2828 func staticKey_eggAssetId () = "static_eggAssetId"
2929
3030
3131 func staticKey_incubatorAddress () = "static_incubatorAddress"
3232
3333
3434 func staticKey_breederAddress () = "static_breederAddress"
3535
3636
3737 func staticKey_farmingAddress () = "static_farmingAddress"
3838
3939
4040 func staticKey_babyDuckAddress () = "static_babyDuckAddress"
4141
4242
4343 func staticKey_gameDappAddress () = "static_gameDappAddress"
4444
4545
4646 func staticKey_itemsAddress () = "static_itemsAddress"
4747
4848
4949 func staticKey_couponsAddress () = "static_couponsAddress"
5050
5151
5252 func staticKey_huntAddress () = "static_huntAddress"
5353
5454
5555 func staticKey_burnAddress () = "static_burnAddress"
5656
5757
5858 func staticKey_refContractAddress () = "static_refContractAddress"
5959
6060
6161 func staticKey_extraFee () = "static_extraFee"
6262
6363
6464 func staticKey_feeAggregator () = "static_feeAggregator"
6565
6666
6767 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
6868
6969
7070 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
7171
7272
7373 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_incubatorAddress())))
7474
7575
7676 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
7777
7878
7979 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
8080
8181
8282 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
8383
8484
8585 func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_gameDappAddress())))
8686
8787
8888 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
8989
9090
9191 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
9292
9393
9494 func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
9595
9696
9797 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
9898
9999
100100 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
101101
102102
103103 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
104104
105105
106106 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
107107 then throw("RCAP: Please attach waves")
108108 else {
109109 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
110110 if ((payment.amount != feeAmount))
111111 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
112112 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
113113 }
114114
115115
116116 let PHOENIXBASEOPTIONS = 1000
117117
118118 func tryGetInteger (key) = match getInteger(this, key) {
119119 case b: Int =>
120120 b
121121 case _ =>
122122 0
123123 }
124124
125125
126126 func asString (value) = match value {
127127 case s: String =>
128128 s
129129 case s: Int =>
130130 throw("wrong type, expected: String, got: Int")
131131 case s: Unit =>
132132 throw("wrong type, expected: String, got: Unit")
133133 case _ =>
134134 throw("wrong type, expected: String")
135135 }
136136
137137
138138 let feeAmount = tryGetInteger("currentPrice")
139139
140140 func getAmountOrClear (amount) = if (contains(amount, "0"))
141141 then ""
142142 else amount
143143
144144
145145 func getAssetOrigin (generation) = if ((generation == "G"))
146146 then getIncubatorAddress()
147147 else getBreederAddress()
148148
149149
150150 func getAssetRarity (genotype,generation) = {
151151 let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
152152 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
153153 if ((power > 0))
154154 then power
155155 else 2
156156 }
157157
158158
159159 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
160160 then true
161161 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
162162 then {
163163 let assetName = value(assetInfo(assetId)).name
164164 let generation = take(takeRight(assetName, 2), 1)
165165 let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
166166 if ((farmGen == farmGen))
167167 then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
168168 else throw("Strict value is not equal to itself.")
169169 }
170170 else throw("not valid NFT")
171171
172172
173173 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
174174 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
175175 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
176176 (toInt(randomHash, (offset * 8)) % options)
177177 }
178178
179179
180180 func getRandomWin (tx,finishHeight,assetRarity) = {
181181 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
182182 let jackpotRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
183183 let itemRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 2)
184184 if ((jackpotRandom == 1))
185185 then "phoenix"
186186 else if ((itemRandom == 1))
187187 then "item_ART-FREEGENE"
188188 else {
189189 let n = getRandomNumber(1000, tx, finishHeight, 0)
190190 if ((170 > n))
191191 then "duckling_2"
192192 else if ((240 > n))
193193 then "duckling_10"
194194 else if ((260 > n))
195195 then "duckling_20"
196196 else if ((300 > n))
197197 then "incubator"
198198 else if ((330 > n))
199199 then "item!ART-SNAKE"
200200 else if ((460 > n))
201201 then "item!ART-KATANA"
202202 else if ((510 > n))
203203 then "item!ART-ROBODUCK"
204204 else if ((540 > n))
205205 then "item!ART-CROWN"
206206 else if ((660 > n))
207207 then "item!ART-SCEPTER"
208208 else if ((790 > n))
209209 then "item!ART-BUILTBODY"
210210 else if ((810 > n))
211211 then "item!ART-FEED10"
212212 else if ((820 > n))
213213 then "item!ART-FEED50"
214214 else if ((824 > n))
215215 then "item!ART-FEED100"
216216 else if ((884 > n))
217217 then "item!ART-FIRE_ARMOUR"
218218 else "ar"
219219 }
220220 }
221221
222222
223223 func getOrigin (assetId) = {
224224 let assetName = value(assetInfo(assetId)).name
225225 let generation = take(takeRight(assetName, 2), 1)
226226 if (if ((generation == "G"))
227227 then true
228228 else (generation == "J"))
229229 then getIncubatorAddress()
230230 else getBreederAddress()
231231 }
232232
233233
234234 func asInt (value) = match value {
235235 case int: Int =>
236236 int
237237 case string: String =>
238238 throw(("RAI: wrong type, expected: Int, but got: " + string))
239239 case _ =>
240240 throw("RAI: wrong type, expected: Int")
241241 }
242242
243243
244244 func getBool (key) = match getBoolean(this, key) {
245245 case b: Boolean =>
246246 b
247247 case _ =>
248248 false
249249 }
250250
251251
252252 func isTestEnv () = getBool("TESTENV")
253253
254254
255255 @Callable(i)
256256 func configureOracle (oracle) = if ((i.caller != this))
257257 then throw("RCU: admin only")
258258 else [StringEntry("static_oracleAddress", oracle)]
259259
260260
261261
262262 @Callable(i)
263263 func initRebirth (refererAddress) = {
264264 let pmt = i.payments[0]
265265 let assetId = value(pmt.assetId)
266266 let initTx = toBase58String(i.transactionId)
267267 let address = toString(i.caller)
268268 if ((pmt.amount != 1))
269269 then throw("NFT is not attached")
270270 else {
271271 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
272272 if ((amountPaidByCoupons == amountPaidByCoupons))
273273 then {
274274 let leftToPay = (feeAmount - amountPaidByCoupons)
275275 let validPayment = checkAdditionalPayment(i.payments[1])
276276 if ((validPayment == validPayment))
277277 then {
278278 let payment = if ((leftToPay != 0))
279279 then {
280280 let feePayment = value(i.payments[2])
281281 if ((feePayment.assetId != getEggAssetId()))
282282 then throw("You need to attach EGG tokens as fee")
283283 else if ((leftToPay > feePayment.amount))
284284 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
285285 else {
286286 let refererRewardForPerch = fraction(leftToPay, 5, 100)
287287 let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
288288 if ((refCall == refCall))
289289 then {
290290 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
291291 if ((burnCall == burnCall))
292292 then leftToPay
293293 else throw("Strict value is not equal to itself.")
294294 }
295295 else throw("Strict value is not equal to itself.")
296296 }
297297 }
298298 else 0
299299 if ((payment == payment))
300300 then {
301301 let $t084478496 = getAssetFarmingPower(assetId)
302302 let gen = $t084478496._1
303303 let rarity = $t084478496._2
304304 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
305305 if ((call == call))
306306 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 else throw("Strict value is not equal to itself.")
310310 }
311311 else throw("Strict value is not equal to itself.")
312312 }
313313 else throw("Strict value is not equal to itself.")
314314 }
315315 }
316316
317317
318318
319319 @Callable(i)
320320 func finishRebirth (initTx) = {
321321 let address = toString(i.caller)
322322 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
323323 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
324324 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
325325 let validPayment = checkAdditionalPayment(i.payments[0])
326326 if ((validPayment == validPayment))
327327 then {
328328 func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
329329
330330 func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
331331
332332 if ((status != "open"))
333333 then throw("rebirth is finished or not open")
334334 else if ((finishBlock > height))
335335 then throw("you cannot finish rebirth, yet")
336336 else {
337337 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
338338 let txId = initTx
339339 let result = if ((indexOf(win, "perch") != unit))
340340 then {
341341 let color = takeRight(win, 1)
342342 let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
343343 if ((call == call))
344344 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
345345 else throw("Strict value is not equal to itself.")
346346 }
347347 else if ((win == "incubator"))
348348 then {
349349 let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
350350 if ((call == call))
351351 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
352352 else throw("Strict value is not equal to itself.")
353353 }
354354 else if ((win == "ar"))
355355 then {
356356 let assetId = getAccessItemAssetId(getHuntAddress())
357357 let price = getAccessItemPrice(getHuntAddress())
358358 let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
359359 if ((call == call))
360360 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else if ((win == "phoenix"))
364364 then {
365365 let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
366366 if ((call == call))
367367 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
368368 else throw("Strict value is not equal to itself.")
369369 }
370370 else if ((indexOf(win, "duckling") != unit))
371371 then {
372372 let level = parseIntValue(split(win, "_")[1])
373373 let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
374374 if ((call == call))
375375 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
376376 else throw("Strict value is not equal to itself.")
377377 }
378378 else if ((indexOf(win, "item") != unit))
379379 then {
380380 let itemName = split(win, "!")[1]
381381 let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
382382 if ((call == call))
383383 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
384384 else throw("Strict value is not equal to itself.")
385385 }
386386 else throw("RFB: Some error occured, please contact the admins!")
387387 ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
388388 }
389389 }
390390 else throw("Strict value is not equal to itself.")
391391 }
392392
393393
394394 @Verifier(tx)
395395 func verify () = if (isTestEnv())
396396 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
397397 else {
398398 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
399399 let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
400400 let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
401401 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
402402 then 1
403403 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
404404 then 1
405405 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
406406 then 1
407407 else 0
408408 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
409409 then 1
410410 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
411411 then 1
412412 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
413413 then 1
414414 else 0
415415 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
416416 then 1
417417 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
418418 then 1
419419 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
420420 then 1
421421 else 0
422422 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
423423 match tx {
424424 case _ =>
425425 (signaturesCount >= 2)
426426 }
427427 }
428428

github/deemru/w8io/3ef1775 
47.31 ms