tx · 7ohKXebnkfQmkjsD3Ew5tRcDoF7Zx4yMajt2HTSgaXxn 3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM: -0.01400000 Waves 2022.04.09 17:58 [3066512] smart account 3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM > SELF 0.00000000 Waves
{ "type": 13, "id": "7ohKXebnkfQmkjsD3Ew5tRcDoF7Zx4yMajt2HTSgaXxn", "fee": 1400000, "feeAssetId": null, "timestamp": 1649516409643, "version": 2, "chainId": 87, "sender": "3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM", "senderPublicKey": "2u37SmDDZX3Ry9sDnA1umgjYSVQ51faPMAXtooDpx6yw", "proofs": [ "4NydvDEtLHYtYuYoBGbu5ZpaKNQEK2tgeCJEPev3JkKfAk9BiMRkMC53j77TJA8oFQPRdWf28U2Ho6yezXgXKebA" ], "script": "base64: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AAAAB3JlZkNhbGwFAAAAB3JlZkNhbGwJAAROAAAAAgUAAAAHcmVzdWx0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABlAAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQFAAAACmVnZ3NOZWVkZWQFAAAAC2VnZ3NBc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAG3N0YXJ0RHVja0hhdGNoaW5nRm9yQWRkcmVzcwAAAAEAAAAHYWRkcmVzcwMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAAHQWRkcmVzcwAAAAEFAAAAEHN3b3BQcm9tb0FkZHJlc3MJAAACAAAAAQIAAAARUGVybmlzc2lvbiBkZW5pZWQEAAAAEHRvdGFsRHVja3NBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAMZHVja3NfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAAQdG90YWxEdWNrc0Ftb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAA9IYXRjaGluZ1N0YXJ0ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAABkAAAAAgUAAAAGaGVpZ2h0BQAAABBkZWxheUZvckhhdGNoaW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxkdWNrc19hbW91bnQJAABkAAAAAgUAAAAQdG90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AAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAQdG90YWxEdWNrc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAxkdWNrc19hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA4NDA4ODQ5MwkBAAAADWdldFJhbmRvbU5hbWUAAAACBQAAAAR0eElkCQAAZAAAAAIJAQAAAAV2YWx1ZQAAAAEJAAPpAAAAAQUAAAAEdHhJZAAAAAAAAAAAAQQAAAAHZHVja0dlbggFAAAACyR0MDg0MDg4NDkzAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwODQwODg0OTMAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB2R1Y2tHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB2R1Y2tHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0BAAAAAZhbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAPZ2V0RHVja1N0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgAAAAAAAAAAAQQAAAAJZHVja0lkS2V5CQEAAAAMZ2V0RHVja0lkS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGR1Y2tzX2Ftb3VudAkAAGQAAAACBQAAABB0b3RhbER1Y2tzQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABBkdWNrc19sYXN0X3ByaWNlCQAAaQAAAAIFAAAACmVnZ3NOZWVkZWQAAAAAAAAPQkAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARaGF0Y2hpbmdTdGF0dXNLZXkFAAAAEEhhdGNoaW5nRmluaXNoZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJZHVja0lkS2V5CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAAlgAAAABBQAAAAdhc3NldElkBQAAAAlkdWNrSWRLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9nZXREdWNrU3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQAAAAAAAAAAAQkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAAB2FkZHJlc3MAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAlgAAAABBQAAAAdhc3NldElkAAAAAWkBAAAADGlzc3VlSmFja3BvdAAAAAMAAAAHYWRkcmVzcwAAAAd0eElkU3RyAAAAA2dlbgMDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAAAdBZGRyZXNzAAAAAQUAAAAOcmViaXJ0aEFkZHJlc3MJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAAACAAAAAQIAAAAVYWRtaW4gb3IgcmViaXJ0aCBvbmx5BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAEHRvdGFsRHVja3NBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAMZHVja3NfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAAQdG90YWxEdWNrc0Ftb3VudAQAAAALJHQwOTk0Njk5OTgJAAUUAAAAAgkAASwAAAACCQABLAAAAAICAAAABURVQ0stBQAAAANnZW4CAAAAAy1KVQIAAAAEOFctSgQAAAAHZHVja0dlbggFAAAACyR0MDk5NDY5OTk4AAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwOTk0Njk5OTgAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB2R1Y2tHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB2R1Y2tHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0BAAAAAlkdWNrSWRLZXkJAQAAAAxnZXREdWNrSWRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMZHVja3NfYW1vdW50CQAAZAAAAAIFAAAAEHRvdGFsRHVja3NBbW91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", "height": 3066512, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9jtnRTecEX3tDPR7QEXifDEKhgmeEVSSm3JNDibJmbyG Next: 8D243UbyJgCrqEAd1c3c2rhuDjCa8sEfwR4e2VzRw8R4 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = base58' | |
4 | + | let a = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS' | |
5 | 5 | ||
6 | 6 | let b = 2 | |
7 | 7 | ||
8 | 8 | let c = 9 | |
9 | 9 | ||
10 | - | let d = base58' | |
10 | + | let d = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe' | |
11 | 11 | ||
12 | 12 | let e = 5 | |
13 | 13 | ||
15 | 15 | ||
16 | 16 | let g = "HATCHING_FINISHED" | |
17 | 17 | ||
18 | - | let h = base58' | |
18 | + | let h = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ' | |
19 | 19 | ||
20 | - | let i = base58' | |
20 | + | let i = base58'3PKmLiGEfqLWMC1H9xhzqvAZKUXfFm8uoeg' | |
21 | 21 | ||
22 | - | let j = base58' | |
22 | + | let j = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD' | |
23 | 23 | ||
24 | 24 | func k () = { | |
25 | 25 | let l = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
61 | 61 | ||
62 | 62 | let y = v("discountCoefficient") | |
63 | 63 | ||
64 | - | func z (A,q,B,C) = { | |
65 | - | let D = value(blockInfoByHeight((B - 1))) | |
66 | - | let E = sha256((q + value(D.vrf))) | |
67 | - | (toInt(E, (C * 8)) % A) | |
64 | + | let z = v("saleCoefficient") | |
65 | + | ||
66 | + | func A (B,q,C,D) = { | |
67 | + | let E = value(blockInfoByHeight((C - 1))) | |
68 | + | let F = sha256((q + value(E.vrf))) | |
69 | + | (toInt(F, (D * 8)) % B) | |
68 | 70 | } | |
69 | 71 | ||
70 | 72 | ||
71 | - | func | |
73 | + | func G (H) = v(t(H)) | |
72 | 74 | ||
73 | 75 | ||
74 | - | func | |
75 | - | let | |
76 | - | if (if ((5 > | |
77 | - | then ( | |
76 | + | func I (q,C) = { | |
77 | + | let J = A(500, q, C, 0) | |
78 | + | if (if ((5 > J)) | |
79 | + | then (G("DUCK-WWZETKIN-JU") == 0) | |
78 | 80 | else false) | |
79 | 81 | then $Tuple2("DUCK-WWZETKIN-JU", "1E1I1K1N1T1U2W1Z-J") | |
80 | - | else if (if ((10 > | |
81 | - | then ( | |
82 | + | else if (if ((10 > J)) | |
83 | + | then (G("DUCK-WWWWMARG-JU") == 0) | |
82 | 84 | else false) | |
83 | 85 | then $Tuple2("DUCK-WWWWMARG-JU", "1A1G1M1R4W-J") | |
84 | - | else if (if ((15 > | |
85 | - | then ( | |
86 | + | else if (if ((15 > J)) | |
87 | + | then (G("DUCK-WWWDAISY-JU") == 0) | |
86 | 88 | else false) | |
87 | 89 | then $Tuple2("DUCK-WWWDAISY-JU", "1A1D1I1S3W1Y-J") | |
88 | 90 | else { | |
89 | - | let | |
90 | - | let | |
91 | - | let | |
91 | + | let K = A(4, q, C, 0) | |
92 | + | let L = A(4, q, C, 1) | |
93 | + | let M = if ((L == 0)) | |
92 | 94 | then "Y" | |
93 | - | else if (( | |
95 | + | else if ((L == 1)) | |
94 | 96 | then "G" | |
95 | - | else if (( | |
97 | + | else if ((L == 2)) | |
96 | 98 | then "B" | |
97 | 99 | else "R" | |
98 | - | if (( | |
99 | - | then $Tuple2(("DUCK-FFFFFFFF-G" + | |
100 | - | else if (( | |
101 | - | then $Tuple2(("DUCK-HHHHHHHH-G" + | |
102 | - | else if (( | |
103 | - | then $Tuple2(("DUCK-GGGGGGGG-G" + | |
104 | - | else $Tuple2(("DUCK-IIIIIIII-G" + | |
100 | + | if ((K == 0)) | |
101 | + | then $Tuple2(("DUCK-FFFFFFFF-G" + M), "8F-G") | |
102 | + | else if ((K == 1)) | |
103 | + | then $Tuple2(("DUCK-HHHHHHHH-G" + M), "8H-G") | |
104 | + | else if ((K == 2)) | |
105 | + | then $Tuple2(("DUCK-GGGGGGGG-G" + M), "8G-G") | |
106 | + | else $Tuple2(("DUCK-IIIIIIII-G" + M), "8I-G") | |
105 | 107 | } | |
106 | 108 | } | |
107 | 109 | ||
108 | 110 | ||
109 | - | func M (N) = { | |
110 | - | let O = N | |
111 | - | let P = y | |
112 | - | let Q = c | |
113 | - | let R = pow((100 + ((O * P) / (10 * Q))), 2, 5, 1, 2, DOWN) | |
114 | - | (R * 1000000) | |
111 | + | func N (O) = { | |
112 | + | let P = O | |
113 | + | let Q = y | |
114 | + | let R = z | |
115 | + | let S = c | |
116 | + | let T = pow((100 + ((P * Q) / (10 * S))), 2, 5, 1, 2, DOWN) | |
117 | + | if ((z == 0)) | |
118 | + | then (T * 1000000) | |
119 | + | else (((T * 1000000) / 100) * (100 - z)) | |
115 | 120 | } | |
116 | 121 | ||
117 | 122 | ||
118 | - | @Callable( | |
119 | - | func setDiscount (x) = if (( | |
123 | + | @Callable(U) | |
124 | + | func setDiscount (x) = if ((U.caller != this)) | |
120 | 125 | then throw("admin_only") | |
121 | 126 | else [IntegerEntry("discountCoefficient", x)] | |
122 | 127 | ||
123 | 128 | ||
124 | 129 | ||
125 | - | @Callable(S) | |
126 | - | func startDuckHatching (T) = if ((k() > 0)) | |
130 | + | @Callable(U) | |
131 | + | func setSale (x) = if ((U.caller != this)) | |
132 | + | then throw("admin_only") | |
133 | + | else [IntegerEntry("saleCoefficient", x)] | |
134 | + | ||
135 | + | ||
136 | + | ||
137 | + | @Callable(U) | |
138 | + | func startDuckHatching (V) = if ((k() > 0)) | |
127 | 139 | then throw("EGG operations are temporarily locked") | |
128 | 140 | else { | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | if (( | |
134 | - | then ( | |
135 | - | else if (( | |
141 | + | let O = v("ducks_amount") | |
142 | + | let W = N(O) | |
143 | + | let X = value(U.payments[0]) | |
144 | + | let Y = [StringEntry(o(toString(U.originCaller), U.transactionId), f), IntegerEntry(r(toString(U.originCaller), U.transactionId), (height + b)), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000))] | |
145 | + | if ((U.caller == Address(i))) | |
146 | + | then (Y ++ [BooleanEntry((("hatching_" + toBase58String(U.transactionId)) + "_babyDuck"), true)]) | |
147 | + | else if ((X.assetId != a)) | |
136 | 148 | then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a))) | |
137 | - | else if (( | |
138 | - | then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString( | |
149 | + | else if ((W > X.amount)) | |
150 | + | then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(W))) | |
139 | 151 | else { | |
140 | - | let | |
141 | - | let | |
142 | - | if (( | |
143 | - | then ( | |
152 | + | let Z = fraction(W, e, 100) | |
153 | + | let aa = invoke(Address(d), "refPayment", [V], [AttachedPayment(a, Z)]) | |
154 | + | if ((aa == aa)) | |
155 | + | then (Y ++ [ScriptTransfer(U.caller, (X.amount - W), a)]) | |
144 | 156 | else throw("Strict value is not equal to itself.") | |
145 | 157 | } | |
146 | 158 | } | |
147 | 159 | ||
148 | 160 | ||
149 | 161 | ||
150 | - | @Callable( | |
162 | + | @Callable(U) | |
151 | 163 | func startDuckHatchingForAddress (p) = if ((k() > 0)) | |
152 | 164 | then throw("EGG operations are temporarily locked") | |
153 | - | else if (( | |
165 | + | else if ((U.caller != Address(j))) | |
154 | 166 | then throw("Pernission denied") | |
155 | 167 | else { | |
156 | - | let | |
157 | - | let | |
158 | - | [StringEntry(o(p, | |
168 | + | let O = v("ducks_amount") | |
169 | + | let W = N(O) | |
170 | + | [StringEntry(o(p, U.transactionId), f), IntegerEntry(r(p, U.transactionId), (height + b)), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), BooleanEntry((("hatching_" + toBase58String(U.transactionId)) + "_promo"), true)] | |
159 | 171 | } | |
160 | 172 | ||
161 | 173 | ||
162 | 174 | ||
163 | - | @Callable( | |
164 | - | func finishDuckHatching ( | |
165 | - | let q = fromBase58String( | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let m = getBoolean((("hatching_" + | |
175 | + | @Callable(U) | |
176 | + | func finishDuckHatching (ab) = { | |
177 | + | let q = fromBase58String(ab) | |
178 | + | let ac = o(toString(U.caller), q) | |
179 | + | let ad = r(toString(U.caller), q) | |
180 | + | let ae = s(toString(U.caller), q) | |
181 | + | let af = { | |
182 | + | let m = getBoolean((("hatching_" + ab) + "_babyDuck")) | |
171 | 183 | if ($isInstanceOf(m, "Boolean")) | |
172 | 184 | then { | |
173 | - | let | |
174 | - | | |
185 | + | let S = m | |
186 | + | S | |
175 | 187 | } | |
176 | 188 | else false | |
177 | 189 | } | |
178 | - | let | |
179 | - | let | |
180 | - | if (( | |
190 | + | let ag = getStringValue(this, ac) | |
191 | + | let C = getIntegerValue(this, ad) | |
192 | + | if ((ag == g)) | |
181 | 193 | then { | |
182 | - | let | |
183 | - | throw(("The duck was hatched and claimed already, here is the folowing: " + | |
194 | + | let ah = getStringValue(this, s(toString(U.caller), q)) | |
195 | + | throw(("The duck was hatched and claimed already, here is the folowing: " + ah)) | |
184 | 196 | } | |
185 | - | else if (( | |
186 | - | then throw((((("Hatching is not finished yet " + toString(( | |
197 | + | else if ((C > height)) | |
198 | + | then throw((((("Hatching is not finished yet " + toString((C - height))) + " blocks remaining, it will take around ") + toString((C - height))) + " minutes")) | |
187 | 199 | else { | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | let | |
194 | - | let | |
195 | - | [StringEntry( | |
200 | + | let ai = I(q, C) | |
201 | + | let aj = ai._1 | |
202 | + | let ak = ai._2 | |
203 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
204 | + | let am = Issue(aj, al, 1, 0, false, unit, C) | |
205 | + | let an = calculateAssetId(am) | |
206 | + | let ao = (v(t(aj)) + 1) | |
207 | + | [StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), BooleanEntry((("duck_" + toBase58String(an)) + "_grown"), af), IntegerEntry(t(aj), ao), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(U.caller, 1, an)] | |
196 | 208 | } | |
197 | 209 | } | |
198 | 210 | ||
199 | 211 | ||
200 | 212 | ||
201 | - | @Callable( | |
202 | - | func issueFreeDuck (p, | |
213 | + | @Callable(U) | |
214 | + | func issueFreeDuck (p,ab) = if ((U.caller != Address(h))) | |
203 | 215 | then throw("rebirth only") | |
204 | 216 | else { | |
205 | - | let q = fromBase58String( | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
214 | - | let | |
215 | - | let | |
216 | - | let | |
217 | - | let | |
218 | - | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", ( | |
217 | + | let q = fromBase58String(ab) | |
218 | + | let ac = o(p, q) | |
219 | + | let ad = r(p, q) | |
220 | + | let O = v("ducks_amount") | |
221 | + | let W = N(O) | |
222 | + | let ap = I(q, (value(transactionHeightById(q)) + 1)) | |
223 | + | let aj = ap._1 | |
224 | + | let ak = ap._2 | |
225 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
226 | + | let am = Issue(aj, al, 1, 0, false, unit, height) | |
227 | + | let an = calculateAssetId(am) | |
228 | + | let ao = (v(t(aj)) + 1) | |
229 | + | let ae = s(p, q) | |
230 | + | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), IntegerEntry(t(aj), ao), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(value(addressFromString(p)), 1, an)], toBase58String(an)) | |
219 | 231 | } | |
220 | 232 | ||
221 | 233 | ||
222 | 234 | ||
223 | - | @Callable( | |
224 | - | func issueJackpot (p, | |
225 | - | then ( | |
235 | + | @Callable(U) | |
236 | + | func issueJackpot (p,ab,H) = if (if ((U.caller != Address(h))) | |
237 | + | then (U.caller != this) | |
226 | 238 | else false) | |
227 | 239 | then throw("admin or rebirth only") | |
228 | 240 | else { | |
229 | - | let q = fromBase58String( | |
230 | - | let | |
231 | - | let | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", ( | |
241 | + | let q = fromBase58String(ab) | |
242 | + | let ac = o(p, q) | |
243 | + | let ad = r(p, q) | |
244 | + | let O = v("ducks_amount") | |
245 | + | let W = N(O) | |
246 | + | let aq = $Tuple2((("DUCK-" + H) + "-JU"), "8W-J") | |
247 | + | let aj = aq._1 | |
248 | + | let ak = aq._2 | |
249 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
250 | + | let am = Issue(aj, al, 1, 0, false, unit, height) | |
251 | + | let an = calculateAssetId(am) | |
252 | + | let ae = s(p, q) | |
253 | + | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), IntegerEntry(t(aj), (v(t(aj)) + 1)), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(value(addressFromString(p)), 1, an)], toBase58String(an)) | |
242 | 254 | } | |
243 | 255 | ||
244 | 256 | ||
245 | 257 | ||
246 | - | @Callable( | |
247 | - | func reduceRarity ( | |
248 | - | let | |
249 | - | if (if (( | |
250 | - | then ( | |
258 | + | @Callable(U) | |
259 | + | func reduceRarity (an,ar) = { | |
260 | + | let am = fromBase58String(an) | |
261 | + | if (if ((U.caller != Address(h))) | |
262 | + | then (U.caller != this) | |
251 | 263 | else false) | |
252 | 264 | then throw("admin or rebirth only") | |
253 | 265 | else { | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | [IntegerEntry(t( | |
266 | + | let aj = value(assetInfo(am)).name | |
267 | + | let as = takeRight(take(aj, 6), 1) | |
268 | + | let ak = (("8" + as) + "-G") | |
269 | + | [IntegerEntry(t(aj), (v(t(aj)) - 1)), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) - 1))] | |
258 | 270 | } | |
259 | 271 | } | |
260 | 272 | ||
261 | 273 | ||
262 | - | @Verifier( | |
263 | - | func | |
274 | + | @Verifier(at) | |
275 | + | func au () = sigVerify(at.bodyBytes, at.proofs[0], at.senderPublicKey) | |
264 | 276 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = base58' | |
4 | + | let a = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS' | |
5 | 5 | ||
6 | 6 | let b = 2 | |
7 | 7 | ||
8 | 8 | let c = 9 | |
9 | 9 | ||
10 | - | let d = base58' | |
10 | + | let d = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe' | |
11 | 11 | ||
12 | 12 | let e = 5 | |
13 | 13 | ||
14 | 14 | let f = "HATCHING_STARTED" | |
15 | 15 | ||
16 | 16 | let g = "HATCHING_FINISHED" | |
17 | 17 | ||
18 | - | let h = base58' | |
18 | + | let h = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ' | |
19 | 19 | ||
20 | - | let i = base58' | |
20 | + | let i = base58'3PKmLiGEfqLWMC1H9xhzqvAZKUXfFm8uoeg' | |
21 | 21 | ||
22 | - | let j = base58' | |
22 | + | let j = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD' | |
23 | 23 | ||
24 | 24 | func k () = { | |
25 | 25 | let l = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
26 | 26 | let m = getInteger(l, "egglock") | |
27 | 27 | if ($isInstanceOf(m, "Int")) | |
28 | 28 | then { | |
29 | 29 | let n = m | |
30 | 30 | n | |
31 | 31 | } | |
32 | 32 | else 0 | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func o (p,q) = (((p + "_") + toBase58String(q)) + "_status") | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func r (p,q) = (((p + "_") + toBase58String(q)) + "_fh") | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func s (p,q) = (((p + "_") + toBase58String(q)) + "_di") | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func t (u) = (("stats_" + u) + "_amount") | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func v (w) = { | |
49 | 49 | let x = { | |
50 | 50 | let m = getInteger(this, w) | |
51 | 51 | if ($isInstanceOf(m, "Int")) | |
52 | 52 | then { | |
53 | 53 | let n = m | |
54 | 54 | n | |
55 | 55 | } | |
56 | 56 | else 0 | |
57 | 57 | } | |
58 | 58 | x | |
59 | 59 | } | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | let y = v("discountCoefficient") | |
63 | 63 | ||
64 | - | func z (A,q,B,C) = { | |
65 | - | let D = value(blockInfoByHeight((B - 1))) | |
66 | - | let E = sha256((q + value(D.vrf))) | |
67 | - | (toInt(E, (C * 8)) % A) | |
64 | + | let z = v("saleCoefficient") | |
65 | + | ||
66 | + | func A (B,q,C,D) = { | |
67 | + | let E = value(blockInfoByHeight((C - 1))) | |
68 | + | let F = sha256((q + value(E.vrf))) | |
69 | + | (toInt(F, (D * 8)) % B) | |
68 | 70 | } | |
69 | 71 | ||
70 | 72 | ||
71 | - | func | |
73 | + | func G (H) = v(t(H)) | |
72 | 74 | ||
73 | 75 | ||
74 | - | func | |
75 | - | let | |
76 | - | if (if ((5 > | |
77 | - | then ( | |
76 | + | func I (q,C) = { | |
77 | + | let J = A(500, q, C, 0) | |
78 | + | if (if ((5 > J)) | |
79 | + | then (G("DUCK-WWZETKIN-JU") == 0) | |
78 | 80 | else false) | |
79 | 81 | then $Tuple2("DUCK-WWZETKIN-JU", "1E1I1K1N1T1U2W1Z-J") | |
80 | - | else if (if ((10 > | |
81 | - | then ( | |
82 | + | else if (if ((10 > J)) | |
83 | + | then (G("DUCK-WWWWMARG-JU") == 0) | |
82 | 84 | else false) | |
83 | 85 | then $Tuple2("DUCK-WWWWMARG-JU", "1A1G1M1R4W-J") | |
84 | - | else if (if ((15 > | |
85 | - | then ( | |
86 | + | else if (if ((15 > J)) | |
87 | + | then (G("DUCK-WWWDAISY-JU") == 0) | |
86 | 88 | else false) | |
87 | 89 | then $Tuple2("DUCK-WWWDAISY-JU", "1A1D1I1S3W1Y-J") | |
88 | 90 | else { | |
89 | - | let | |
90 | - | let | |
91 | - | let | |
91 | + | let K = A(4, q, C, 0) | |
92 | + | let L = A(4, q, C, 1) | |
93 | + | let M = if ((L == 0)) | |
92 | 94 | then "Y" | |
93 | - | else if (( | |
95 | + | else if ((L == 1)) | |
94 | 96 | then "G" | |
95 | - | else if (( | |
97 | + | else if ((L == 2)) | |
96 | 98 | then "B" | |
97 | 99 | else "R" | |
98 | - | if (( | |
99 | - | then $Tuple2(("DUCK-FFFFFFFF-G" + | |
100 | - | else if (( | |
101 | - | then $Tuple2(("DUCK-HHHHHHHH-G" + | |
102 | - | else if (( | |
103 | - | then $Tuple2(("DUCK-GGGGGGGG-G" + | |
104 | - | else $Tuple2(("DUCK-IIIIIIII-G" + | |
100 | + | if ((K == 0)) | |
101 | + | then $Tuple2(("DUCK-FFFFFFFF-G" + M), "8F-G") | |
102 | + | else if ((K == 1)) | |
103 | + | then $Tuple2(("DUCK-HHHHHHHH-G" + M), "8H-G") | |
104 | + | else if ((K == 2)) | |
105 | + | then $Tuple2(("DUCK-GGGGGGGG-G" + M), "8G-G") | |
106 | + | else $Tuple2(("DUCK-IIIIIIII-G" + M), "8I-G") | |
105 | 107 | } | |
106 | 108 | } | |
107 | 109 | ||
108 | 110 | ||
109 | - | func M (N) = { | |
110 | - | let O = N | |
111 | - | let P = y | |
112 | - | let Q = c | |
113 | - | let R = pow((100 + ((O * P) / (10 * Q))), 2, 5, 1, 2, DOWN) | |
114 | - | (R * 1000000) | |
111 | + | func N (O) = { | |
112 | + | let P = O | |
113 | + | let Q = y | |
114 | + | let R = z | |
115 | + | let S = c | |
116 | + | let T = pow((100 + ((P * Q) / (10 * S))), 2, 5, 1, 2, DOWN) | |
117 | + | if ((z == 0)) | |
118 | + | then (T * 1000000) | |
119 | + | else (((T * 1000000) / 100) * (100 - z)) | |
115 | 120 | } | |
116 | 121 | ||
117 | 122 | ||
118 | - | @Callable( | |
119 | - | func setDiscount (x) = if (( | |
123 | + | @Callable(U) | |
124 | + | func setDiscount (x) = if ((U.caller != this)) | |
120 | 125 | then throw("admin_only") | |
121 | 126 | else [IntegerEntry("discountCoefficient", x)] | |
122 | 127 | ||
123 | 128 | ||
124 | 129 | ||
125 | - | @Callable(S) | |
126 | - | func startDuckHatching (T) = if ((k() > 0)) | |
130 | + | @Callable(U) | |
131 | + | func setSale (x) = if ((U.caller != this)) | |
132 | + | then throw("admin_only") | |
133 | + | else [IntegerEntry("saleCoefficient", x)] | |
134 | + | ||
135 | + | ||
136 | + | ||
137 | + | @Callable(U) | |
138 | + | func startDuckHatching (V) = if ((k() > 0)) | |
127 | 139 | then throw("EGG operations are temporarily locked") | |
128 | 140 | else { | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | if (( | |
134 | - | then ( | |
135 | - | else if (( | |
141 | + | let O = v("ducks_amount") | |
142 | + | let W = N(O) | |
143 | + | let X = value(U.payments[0]) | |
144 | + | let Y = [StringEntry(o(toString(U.originCaller), U.transactionId), f), IntegerEntry(r(toString(U.originCaller), U.transactionId), (height + b)), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000))] | |
145 | + | if ((U.caller == Address(i))) | |
146 | + | then (Y ++ [BooleanEntry((("hatching_" + toBase58String(U.transactionId)) + "_babyDuck"), true)]) | |
147 | + | else if ((X.assetId != a)) | |
136 | 148 | then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a))) | |
137 | - | else if (( | |
138 | - | then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString( | |
149 | + | else if ((W > X.amount)) | |
150 | + | then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(W))) | |
139 | 151 | else { | |
140 | - | let | |
141 | - | let | |
142 | - | if (( | |
143 | - | then ( | |
152 | + | let Z = fraction(W, e, 100) | |
153 | + | let aa = invoke(Address(d), "refPayment", [V], [AttachedPayment(a, Z)]) | |
154 | + | if ((aa == aa)) | |
155 | + | then (Y ++ [ScriptTransfer(U.caller, (X.amount - W), a)]) | |
144 | 156 | else throw("Strict value is not equal to itself.") | |
145 | 157 | } | |
146 | 158 | } | |
147 | 159 | ||
148 | 160 | ||
149 | 161 | ||
150 | - | @Callable( | |
162 | + | @Callable(U) | |
151 | 163 | func startDuckHatchingForAddress (p) = if ((k() > 0)) | |
152 | 164 | then throw("EGG operations are temporarily locked") | |
153 | - | else if (( | |
165 | + | else if ((U.caller != Address(j))) | |
154 | 166 | then throw("Pernission denied") | |
155 | 167 | else { | |
156 | - | let | |
157 | - | let | |
158 | - | [StringEntry(o(p, | |
168 | + | let O = v("ducks_amount") | |
169 | + | let W = N(O) | |
170 | + | [StringEntry(o(p, U.transactionId), f), IntegerEntry(r(p, U.transactionId), (height + b)), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), BooleanEntry((("hatching_" + toBase58String(U.transactionId)) + "_promo"), true)] | |
159 | 171 | } | |
160 | 172 | ||
161 | 173 | ||
162 | 174 | ||
163 | - | @Callable( | |
164 | - | func finishDuckHatching ( | |
165 | - | let q = fromBase58String( | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let m = getBoolean((("hatching_" + | |
175 | + | @Callable(U) | |
176 | + | func finishDuckHatching (ab) = { | |
177 | + | let q = fromBase58String(ab) | |
178 | + | let ac = o(toString(U.caller), q) | |
179 | + | let ad = r(toString(U.caller), q) | |
180 | + | let ae = s(toString(U.caller), q) | |
181 | + | let af = { | |
182 | + | let m = getBoolean((("hatching_" + ab) + "_babyDuck")) | |
171 | 183 | if ($isInstanceOf(m, "Boolean")) | |
172 | 184 | then { | |
173 | - | let | |
174 | - | | |
185 | + | let S = m | |
186 | + | S | |
175 | 187 | } | |
176 | 188 | else false | |
177 | 189 | } | |
178 | - | let | |
179 | - | let | |
180 | - | if (( | |
190 | + | let ag = getStringValue(this, ac) | |
191 | + | let C = getIntegerValue(this, ad) | |
192 | + | if ((ag == g)) | |
181 | 193 | then { | |
182 | - | let | |
183 | - | throw(("The duck was hatched and claimed already, here is the folowing: " + | |
194 | + | let ah = getStringValue(this, s(toString(U.caller), q)) | |
195 | + | throw(("The duck was hatched and claimed already, here is the folowing: " + ah)) | |
184 | 196 | } | |
185 | - | else if (( | |
186 | - | then throw((((("Hatching is not finished yet " + toString(( | |
197 | + | else if ((C > height)) | |
198 | + | then throw((((("Hatching is not finished yet " + toString((C - height))) + " blocks remaining, it will take around ") + toString((C - height))) + " minutes")) | |
187 | 199 | else { | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | let | |
194 | - | let | |
195 | - | [StringEntry( | |
200 | + | let ai = I(q, C) | |
201 | + | let aj = ai._1 | |
202 | + | let ak = ai._2 | |
203 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
204 | + | let am = Issue(aj, al, 1, 0, false, unit, C) | |
205 | + | let an = calculateAssetId(am) | |
206 | + | let ao = (v(t(aj)) + 1) | |
207 | + | [StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), BooleanEntry((("duck_" + toBase58String(an)) + "_grown"), af), IntegerEntry(t(aj), ao), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(U.caller, 1, an)] | |
196 | 208 | } | |
197 | 209 | } | |
198 | 210 | ||
199 | 211 | ||
200 | 212 | ||
201 | - | @Callable( | |
202 | - | func issueFreeDuck (p, | |
213 | + | @Callable(U) | |
214 | + | func issueFreeDuck (p,ab) = if ((U.caller != Address(h))) | |
203 | 215 | then throw("rebirth only") | |
204 | 216 | else { | |
205 | - | let q = fromBase58String( | |
206 | - | let | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
214 | - | let | |
215 | - | let | |
216 | - | let | |
217 | - | let | |
218 | - | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", ( | |
217 | + | let q = fromBase58String(ab) | |
218 | + | let ac = o(p, q) | |
219 | + | let ad = r(p, q) | |
220 | + | let O = v("ducks_amount") | |
221 | + | let W = N(O) | |
222 | + | let ap = I(q, (value(transactionHeightById(q)) + 1)) | |
223 | + | let aj = ap._1 | |
224 | + | let ak = ap._2 | |
225 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
226 | + | let am = Issue(aj, al, 1, 0, false, unit, height) | |
227 | + | let an = calculateAssetId(am) | |
228 | + | let ao = (v(t(aj)) + 1) | |
229 | + | let ae = s(p, q) | |
230 | + | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), IntegerEntry(t(aj), ao), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(value(addressFromString(p)), 1, an)], toBase58String(an)) | |
219 | 231 | } | |
220 | 232 | ||
221 | 233 | ||
222 | 234 | ||
223 | - | @Callable( | |
224 | - | func issueJackpot (p, | |
225 | - | then ( | |
235 | + | @Callable(U) | |
236 | + | func issueJackpot (p,ab,H) = if (if ((U.caller != Address(h))) | |
237 | + | then (U.caller != this) | |
226 | 238 | else false) | |
227 | 239 | then throw("admin or rebirth only") | |
228 | 240 | else { | |
229 | - | let q = fromBase58String( | |
230 | - | let | |
231 | - | let | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", ( | |
241 | + | let q = fromBase58String(ab) | |
242 | + | let ac = o(p, q) | |
243 | + | let ad = r(p, q) | |
244 | + | let O = v("ducks_amount") | |
245 | + | let W = N(O) | |
246 | + | let aq = $Tuple2((("DUCK-" + H) + "-JU"), "8W-J") | |
247 | + | let aj = aq._1 | |
248 | + | let ak = aq._2 | |
249 | + | let al = (("{\"genotype\": \"" + aj) + "\", \"crossbreeding\": true}") | |
250 | + | let am = Issue(aj, al, 1, 0, false, unit, height) | |
251 | + | let an = calculateAssetId(am) | |
252 | + | let ae = s(p, q) | |
253 | + | $Tuple2([IntegerEntry(r(p, q), height), IntegerEntry("ducks_amount", (O + 1)), IntegerEntry("ducks_last_price", (W / 1000000)), StringEntry(ac, g), StringEntry(ae, toBase58String(an)), StringEntry(toBase58String(an), ae), IntegerEntry(t(aj), (v(t(aj)) + 1)), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) + 1)), am, ScriptTransfer(value(addressFromString(p)), 1, an)], toBase58String(an)) | |
242 | 254 | } | |
243 | 255 | ||
244 | 256 | ||
245 | 257 | ||
246 | - | @Callable( | |
247 | - | func reduceRarity ( | |
248 | - | let | |
249 | - | if (if (( | |
250 | - | then ( | |
258 | + | @Callable(U) | |
259 | + | func reduceRarity (an,ar) = { | |
260 | + | let am = fromBase58String(an) | |
261 | + | if (if ((U.caller != Address(h))) | |
262 | + | then (U.caller != this) | |
251 | 263 | else false) | |
252 | 264 | then throw("admin or rebirth only") | |
253 | 265 | else { | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | [IntegerEntry(t( | |
266 | + | let aj = value(assetInfo(am)).name | |
267 | + | let as = takeRight(take(aj, 6), 1) | |
268 | + | let ak = (("8" + as) + "-G") | |
269 | + | [IntegerEntry(t(aj), (v(t(aj)) - 1)), IntegerEntry((("stats_" + ak) + "_quantity"), (v((("stats_" + ak) + "_quantity")) - 1))] | |
258 | 270 | } | |
259 | 271 | } | |
260 | 272 | ||
261 | 273 | ||
262 | - | @Verifier( | |
263 | - | func | |
274 | + | @Verifier(at) | |
275 | + | func au () = sigVerify(at.bodyBytes, at.proofs[0], at.senderPublicKey) | |
264 | 276 |
github/deemru/w8io/0e76f2f 114.19 ms ◑