tx · G7J4DkXx9icEk37yfyyipA5KJraU2FGkSvicgoMTvYQF 3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar: -0.01000000 Waves 2021.09.30 16:32 [2790765] smart account 3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar > SELF 0.00000000 Waves
{ "type": 13, "id": "G7J4DkXx9icEk37yfyyipA5KJraU2FGkSvicgoMTvYQF", "fee": 1000000, "feeAssetId": null, "timestamp": 1633008830811, "version": 2, "chainId": 87, "sender": "3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar", "senderPublicKey": "2RFPMtHxVSEG1LnET2FGshyhRepA7zJmx6tPwdHeNpJi", "proofs": [ "5Kk65QsJNjxLnaiDbtFur171FHaYJuk1a26NouPWdgw831ACY7oiPJx4YNNKei5WEr9tGSRQxH7wxHH3NwutYXZ5" ], "script": "base64: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", "height": 2790765, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: E7SxXoAvM62i3VZ1RrqpMaZSokgNLx2BgXnrTRwaxDQn Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let breederContract = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y' | |
5 | + | ||
6 | + | let incubatorContract = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM' | |
7 | + | ||
8 | + | func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status") | |
9 | + | ||
10 | + | ||
11 | + | @Callable(i) | |
12 | + | func lockNftForWars () = { | |
13 | + | func handlePayment (accum,payment) = { | |
14 | + | let assetId = value(payment.assetId) | |
15 | + | let nft = valueOrErrorMessage(assetInfo(assetId), ("There is not asset with such an id " + toBase58String(assetId))) | |
16 | + | if (if ((nft.issuer != Address(breederContract))) | |
17 | + | then (nft.issuer != Address(incubatorContract)) | |
18 | + | else false) | |
19 | + | then throw("NFT was NOT issued by WavesDucks contracts") | |
20 | + | else { | |
21 | + | let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(assetId)) | |
22 | + | (accum ++ [BooleanEntry(kDuckLock, true)]) | |
23 | + | } | |
24 | + | } | |
25 | + | ||
26 | + | let $l = i.payments | |
27 | + | let $s = size($l) | |
28 | + | let $acc0 = nil | |
29 | + | func 1 ($a,$i) = if (($i >= $s)) | |
30 | + | then $a | |
31 | + | else handlePayment($a, $l[$i]) | |
32 | + | ||
33 | + | func 2 ($a,$i) = if (($i >= $s)) | |
34 | + | then $a | |
35 | + | else throw("List size exceeds 10") | |
36 | + | ||
37 | + | 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
38 | + | } | |
39 | + | ||
40 | + | ||
41 | + | ||
42 | + | @Callable(i) | |
43 | + | func unlockNftForWars (duckIds) = { | |
44 | + | let duckIdsList = split(duckIds, ";") | |
45 | + | if ((size(duckIdsList) > 10)) | |
46 | + | then throw("You cannot unlock more than 10 ducks in one transaction") | |
47 | + | else { | |
48 | + | func handleUnlockOneDuck (accum,duckId) = { | |
49 | + | let kDuckLock = keyDuckLock(toString(i.originCaller), duckId) | |
50 | + | let duckLockedValue = getBoolean(this, kDuckLock) | |
51 | + | let duckIsLocked = match duckLockedValue { | |
52 | + | case t: Boolean => | |
53 | + | t | |
54 | + | case _ => | |
55 | + | false | |
56 | + | } | |
57 | + | if ((duckIsLocked == false)) | |
58 | + | then throw(("Whhhhat, the duck is not locked by you: " + duckId)) | |
59 | + | else (accum ++ [DeleteEntry(kDuckLock), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))]) | |
60 | + | } | |
61 | + | ||
62 | + | let $l = duckIdsList | |
63 | + | let $s = size($l) | |
64 | + | let $acc0 = nil | |
65 | + | func 1 ($a,$i) = if (($i >= $s)) | |
66 | + | then $a | |
67 | + | else handleUnlockOneDuck($a, $l[$i]) | |
68 | + | ||
69 | + | func 2 ($a,$i) = if (($i >= $s)) | |
70 | + | then $a | |
71 | + | else throw("List size exceeds 10") | |
72 | + | ||
73 | + | 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
74 | + | } | |
75 | + | } | |
76 | + | ||
77 | + | ||
78 | + | @Verifier(tx) | |
79 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
80 | + |
github/deemru/w8io/873ac7e 62.69 ms ◑