tx · BdN4gSBVMNjbGfNoGRpGmKG6Pp7QZyr4VUz8N4pTWVRm 3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C: -0.02100000 Waves 2024.12.03 23:51 [3398961] smart account 3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C > SELF 0.00000000 Waves
{ "type": 13, "id": "BdN4gSBVMNjbGfNoGRpGmKG6Pp7QZyr4VUz8N4pTWVRm", "fee": 2100000, "feeAssetId": null, "timestamp": 1733259196408, "version": 2, "chainId": 84, "sender": "3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C", "senderPublicKey": "ESRi59hjHAnDxmeFyTaaXNvzeEW323BvzYJYyKjpEsC1", "proofs": [ "XnMW2S55UqURVmSXp1qw5p9f6ta4mFYxyQjzXJ7HMpVAvYxfQfHK7PV2jmrSixYgEC6FSCgypQuVyU9P79nqK69" ], "script": "base64:AAIFAAAAAAAAAC8IAhIECgIICBIECgIICBIDCgEIEgUKAwgICBIECgIICBIDCgEBEgMKAQgSAwoBCAAAACUBAAAAB2dldEJvb2wAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACZ3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IEludAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABcwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACd3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IFVuaXQJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAJaXNUZXN0RW52AAAAAAkBAAAAB2dldEJvb2wAAAABAgAAAAdURVNURU5WAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAAAAAIAAAAZc3RhdGljX3JlZkNvbnRyYWN0QWRkcmVzcwEAAAAcc3RhdGljS2V5X2NhbmlSZWJpcnRoQWRkcmVzcwAAAAACAAAAG3N0YXRpY19jYW5pbmVSZWJpcnRoQWRkcmVzcwEAAAAcc3RhdGljS2V5X2NhbmlGYXJtaW5nQWRkcmVzcwAAAAACAAAAG3N0YXRpY19jYW5pbmVTdGFraW5nQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAEAAAAOZ2V0TWludEFzc2V0SWQAAAAABQAAAAR1bml0AQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABVnZXRSZWZDb250cmFjdEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAAAAAEAAAAVZ2V0Q2FuaVJlYmlydGhBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X2NhbmlSZWJpcnRoQWRkcmVzcwAAAAABAAAAFWdldENhbmlGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9jYW5pRmFybWluZ0FkZHJlc3MAAAAAAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGkJEQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB1CRENBUDogUGxlYXNlIGF0dGFjaCBleGFjdGx5IAkAAaQAAAABBQAAAAlmZWVBbW91bnQCAAAAEyBhbW91bnQgb2Ygd2F2ZWxldHMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAABQAAAAlmZWVBbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAAQZGVsYXlGb3JIYXRjaGluZwAAAAAAAAAAAgAAAAAPSGF0Y2hpbmdTdGFydGVkAgAAABBIQVRDSElOR19TVEFSVEVEAAAAABBIYXRjaGluZ0ZpbmlzaGVk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BQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABB0b3RhbER1Y2tzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAC2NhbmlfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAAQdG90YWxEdWNrc0Ftb3VudAQAAAALJHQwNjk3MDcwMjIJAAUUAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNBTkktBQAAAANnZW4CAAAAAy1KVQIAAAAEOFctSgQAAAAHZHVja0dlbggFAAAACyR0MDY5NzA3MDIyAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwNjk3MDcwMjIAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB2R1Y2tHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB2R1Y2tHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0BAAAAAlkdWNrSWRLZXkJAQAAAAxnZXRDQU5JSWRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABN2YWx1ZUR1Y2tJZEtleUV4aXRzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQUAAAAJZHVja0lkS2V5AwkBAAAAAiE9AAAAAgUAAAATdmFsdWVEdWNrSWRLZXlFeGl0cwIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAClJU0o6IFlvdSB3aWxsIG92ZXJyaWRlIGZvbGxvd2luZyBkdWNrSWQgOgUAAAAJZHVja0lkS2V5AgAAACQgbWFrZSBzdXJl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", "height": 3398961, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B7mXXdprvczmQyEEm9yfKnx7vkRgJ4bhhteTWCSVCCpD Next: none Diff:
Old | New | Differences | |
---|---|---|---|
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | - | func e () = a("TESTENV") | |
15 | + | func e (f) = { | |
16 | + | let c = f | |
17 | + | if ($isInstanceOf(c, "String")) | |
18 | + | then { | |
19 | + | let g = c | |
20 | + | g | |
21 | + | } | |
22 | + | else if ($isInstanceOf(c, "Int")) | |
23 | + | then { | |
24 | + | let g = c | |
25 | + | throw("wrong type, expected: String, got: Int") | |
26 | + | } | |
27 | + | else if ($isInstanceOf(c, "Unit")) | |
28 | + | then { | |
29 | + | let g = c | |
30 | + | throw("wrong type, expected: String, got: Unit") | |
31 | + | } | |
32 | + | else throw("wrong type, expected: String") | |
33 | + | } | |
16 | 34 | ||
17 | 35 | ||
18 | - | func f (g,b) = { | |
19 | - | let c = getString(g, b) | |
36 | + | func h () = a("TESTENV") | |
37 | + | ||
38 | + | ||
39 | + | func i (j,b) = { | |
40 | + | let c = getString(j, b) | |
20 | 41 | if ($isInstanceOf(c, "String")) | |
21 | 42 | then { | |
22 | - | let | |
23 | - | | |
43 | + | let k = c | |
44 | + | k | |
24 | 45 | } | |
25 | 46 | else "" | |
26 | 47 | } | |
27 | 48 | ||
28 | 49 | ||
29 | - | func | |
50 | + | func l (b) = i(this, b) | |
30 | 51 | ||
31 | 52 | ||
32 | - | func | |
53 | + | func m () = "static_oracleAddress" | |
33 | 54 | ||
34 | 55 | ||
35 | - | func | |
56 | + | func n () = "static_extraFee" | |
36 | 57 | ||
37 | 58 | ||
38 | - | func | |
59 | + | func o () = "static_feeAggregator" | |
39 | 60 | ||
40 | 61 | ||
41 | - | func | |
62 | + | func p () = "static_refContractAddress" | |
42 | 63 | ||
43 | 64 | ||
44 | - | func | |
65 | + | func q () = "static_canineRebirthAddress" | |
45 | 66 | ||
46 | 67 | ||
47 | - | func | |
68 | + | func r () = "static_canineStakingAddress" | |
48 | 69 | ||
49 | 70 | ||
50 | - | func | |
71 | + | func s () = "static_itemsAddress" | |
51 | 72 | ||
52 | 73 | ||
53 | - | func | |
74 | + | func t () = Address(fromBase58String(l(m()))) | |
54 | 75 | ||
55 | 76 | ||
56 | - | func | |
77 | + | func u () = Address(fromBase58String(i(t(), o()))) | |
57 | 78 | ||
58 | 79 | ||
59 | - | func | |
80 | + | func v () = unit | |
60 | 81 | ||
61 | 82 | ||
62 | - | func | |
83 | + | func w () = Address(fromBase58String(i(t(), "static_burnAddress"))) | |
63 | 84 | ||
64 | 85 | ||
65 | - | func | |
86 | + | func x () = Address(fromBase58String(i(t(), p()))) | |
66 | 87 | ||
67 | 88 | ||
68 | - | func | |
89 | + | func y () = Address(fromBase58String(i(t(), q()))) | |
69 | 90 | ||
70 | 91 | ||
71 | - | func w (x) = if (isDefined(x.assetId)) | |
92 | + | func z () = Address(fromBase58String(i(t(), r()))) | |
93 | + | ||
94 | + | ||
95 | + | func A () = Address(fromBase58String(i(t(), s()))) | |
96 | + | ||
97 | + | ||
98 | + | func B (C) = if (isDefined(C.assetId)) | |
72 | 99 | then throw("BDCAP: Please attach waves") | |
73 | 100 | else { | |
74 | - | let | |
75 | - | if (( | |
76 | - | then throw((("BDCAP: Please attach exactly " + toString( | |
77 | - | else [ScriptTransfer( | |
101 | + | let D = getIntegerValue(t(), n()) | |
102 | + | if ((C.amount != D)) | |
103 | + | then throw((("BDCAP: Please attach exactly " + toString(D)) + " amount of wavelets")) | |
104 | + | else [ScriptTransfer(u(), D, unit)] | |
78 | 105 | } | |
79 | 106 | ||
80 | 107 | ||
81 | - | let | |
108 | + | let E = 2 | |
82 | 109 | ||
83 | - | let | |
110 | + | let F = "HATCHING_STARTED" | |
84 | 111 | ||
85 | - | let | |
112 | + | let G = "HATCHING_FINISHED" | |
86 | 113 | ||
87 | - | func | |
88 | - | let | |
89 | - | let c = getInteger( | |
114 | + | func H () = { | |
115 | + | let I = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
116 | + | let c = getInteger(I, "egglock") | |
90 | 117 | if ($isInstanceOf(c, "Int")) | |
91 | 118 | then { | |
92 | 119 | let d = c | |
96 | 123 | } | |
97 | 124 | ||
98 | 125 | ||
99 | - | func | |
126 | + | func J (j,K) = (((j + "_") + toBase58String(K)) + "_status") | |
100 | 127 | ||
101 | 128 | ||
102 | - | func | |
129 | + | func L (j,K) = (((j + "_") + toBase58String(K)) + "_fh") | |
103 | 130 | ||
104 | 131 | ||
105 | - | func | |
132 | + | func M (j,K) = (((j + "_") + toBase58String(K)) + "_di") | |
106 | 133 | ||
107 | 134 | ||
108 | - | func | |
135 | + | func N (O) = (("stats_" + O) + "_amount") | |
109 | 136 | ||
110 | 137 | ||
111 | - | func | |
112 | - | let | |
138 | + | func P (b) = { | |
139 | + | let Q = { | |
113 | 140 | let c = getInteger(this, b) | |
114 | 141 | if ($isInstanceOf(c, "Int")) | |
115 | 142 | then { | |
118 | 145 | } | |
119 | 146 | else 0 | |
120 | 147 | } | |
121 | - | | |
148 | + | Q | |
122 | 149 | } | |
123 | 150 | ||
124 | 151 | ||
125 | - | let | |
152 | + | let R = P("discountCoefficient") | |
126 | 153 | ||
127 | - | func | |
128 | - | let | |
129 | - | let | |
130 | - | (toInt( | |
154 | + | func S (T,K,U,V) = { | |
155 | + | let W = value(blockInfoByHeight((U - 1))) | |
156 | + | let X = sha256((K + value(W.vrf))) | |
157 | + | (toInt(X, (V * 8)) % T) | |
131 | 158 | } | |
132 | 159 | ||
133 | 160 | ||
134 | - | func | |
135 | - | let | |
136 | - | let | |
137 | - | $Tuple2(( | |
161 | + | func Y (Z) = { | |
162 | + | let aa = [$Tuple2(("CANI-AAAAAAAA-G" + Z), "8A-G")] | |
163 | + | let ab = [$Tuple2(("CANI-BBBBBBBB-G" + Z), "8B-G"), $Tuple2(("CANI-CCCCCCCC-G" + Z), "8C-G"), $Tuple2(("CANI-DDDDDDDD-G" + Z), "8D-G"), $Tuple2(("CANI-EEEEEEEE-G" + Z), "8E-G")] | |
164 | + | $Tuple2((aa ++ ab), ab) | |
138 | 165 | } | |
139 | 166 | ||
140 | 167 | ||
141 | - | func | |
142 | - | let | |
143 | - | let | |
144 | - | let | |
145 | - | let | |
146 | - | then | |
147 | - | else | |
148 | - | let | |
149 | - | ||
168 | + | func ac (K,U,ad) = { | |
169 | + | let ae = S(4, K, U, 1) | |
170 | + | let Z = ["A", "B", "C", "D"][ae] | |
171 | + | let af = Y(Z) | |
172 | + | let ag = if (ad) | |
173 | + | then af._1 | |
174 | + | else af._2 | |
175 | + | let ah = S(size(ag), K, U, 0) | |
176 | + | ag[ah] | |
150 | 177 | } | |
151 | 178 | ||
152 | 179 | ||
153 | - | let | |
180 | + | let ai = (size(Y("R")._2) - 1) | |
154 | 181 | ||
155 | - | func | |
156 | - | let | |
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | ( | |
182 | + | func aj (ak) = { | |
183 | + | let al = ak | |
184 | + | let am = R | |
185 | + | let an = ai | |
186 | + | let ao = (pow((100 + ((al * am) / (10 * an))), 2, 5, 1, 2, DOWN) + 55) | |
187 | + | (ao * 1500000) | |
161 | 188 | } | |
162 | 189 | ||
163 | 190 | ||
164 | - | func | |
165 | - | let c = | |
191 | + | func ap (f) = { | |
192 | + | let c = f | |
166 | 193 | if ($isInstanceOf(c, "Boolean")) | |
167 | 194 | then { | |
168 | - | let | |
169 | - | | |
195 | + | let aq = c | |
196 | + | aq | |
170 | 197 | } | |
171 | 198 | else throw("TI: wrong type, expected: Boolean") | |
172 | 199 | } | |
173 | 200 | ||
174 | 201 | ||
175 | - | @Callable( | |
176 | - | func reduceRarity ( | |
177 | - | let | |
178 | - | if (if (( | |
179 | - | then ( | |
202 | + | @Callable(ar) | |
203 | + | func reduceRarity (as,at) = { | |
204 | + | let au = fromBase58String(as) | |
205 | + | if (if ((ar.caller != y())) | |
206 | + | then (ar.caller != this) | |
180 | 207 | else false) | |
181 | 208 | then throw("IRR: admin or rebirth only") | |
182 | 209 | else { | |
183 | - | let | |
184 | - | let | |
185 | - | let | |
186 | - | [IntegerEntry( | |
210 | + | let av = value(assetInfo(au)).name | |
211 | + | let aw = takeRight(take(av, 6), 1) | |
212 | + | let ax = (("8" + aw) + "-G") | |
213 | + | [IntegerEntry(N(av), (P(N(av)) - 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) - 1))] | |
187 | 214 | } | |
188 | 215 | } | |
189 | 216 | ||
190 | 217 | ||
191 | 218 | ||
192 | - | @Callable( | |
193 | - | func increaseRarity ( | |
194 | - | let | |
195 | - | if (if (( | |
196 | - | then ( | |
219 | + | @Callable(ar) | |
220 | + | func increaseRarity (as,at) = { | |
221 | + | let au = fromBase58String(as) | |
222 | + | if (if ((ar.caller != y())) | |
223 | + | then (ar.caller != this) | |
197 | 224 | else false) | |
198 | 225 | then throw("IRR: admin or rebirth only") | |
199 | 226 | else { | |
200 | - | let | |
201 | - | let | |
202 | - | let | |
203 | - | [IntegerEntry( | |
227 | + | let av = value(assetInfo(au)).name | |
228 | + | let aw = takeRight(take(av, 6), 1) | |
229 | + | let ax = (("8" + aw) + "-G") | |
230 | + | [IntegerEntry(N(av), (P(N(av)) + 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1))] | |
204 | 231 | } | |
205 | 232 | } | |
206 | 233 | ||
207 | 234 | ||
208 | 235 | ||
209 | - | @Callable( | |
210 | - | func configureOracle ( | |
236 | + | @Callable(ar) | |
237 | + | func configureOracle (ay) = if ((ar.caller != this)) | |
211 | 238 | then throw("ICU: admin only") | |
212 | - | else [StringEntry("static_oracleAddress", | |
239 | + | else [StringEntry("static_oracleAddress", ay)] | |
213 | 240 | ||
214 | 241 | ||
215 | 242 | ||
216 | - | @Callable( | |
217 | - | func issueJackpot ( | |
218 | - | then ( | |
243 | + | @Callable(ar) | |
244 | + | func issueJackpot (j,az,aA) = if (if ((ar.caller != y())) | |
245 | + | then (ar.caller != this) | |
219 | 246 | else false) | |
220 | 247 | then throw("ISJ: admin or rebirth only") | |
221 | 248 | else { | |
222 | - | let | |
223 | - | let | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | if (( | |
236 | - | then throw((("ISJ: You will override following duckId :" + | |
237 | - | else $Tuple2([IntegerEntry( | |
249 | + | let K = fromBase58String(az) | |
250 | + | let aB = J(j, K) | |
251 | + | let aC = L(j, K) | |
252 | + | let aD = P("cani_amount") | |
253 | + | let aE = aj(aD) | |
254 | + | let aF = $Tuple2((("CANI-" + aA) + "-JU"), "8W-J") | |
255 | + | let av = aF._1 | |
256 | + | let ax = aF._2 | |
257 | + | let aG = (("{\"genotype\": \"" + av) + "\", \"crossbreeding\": true}") | |
258 | + | let au = Issue(av, aG, 1, 0, false, unit, height) | |
259 | + | let as = calculateAssetId(au) | |
260 | + | let aH = M(j, K) | |
261 | + | let aI = l(aH) | |
262 | + | if ((aI != "")) | |
263 | + | then throw((("ISJ: You will override following duckId :" + aH) + " make sure that your txId is unique!")) | |
264 | + | else $Tuple2([IntegerEntry(L(j, K), height), IntegerEntry("cani_amount", (aD + 1)), IntegerEntry("cani_last_price", (aE / 1500000)), StringEntry(aB, G), StringEntry(aH, toBase58String(as)), StringEntry(toBase58String(as), aH), IntegerEntry(N(av), (P(N(av)) + 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(value(addressFromString(j)), 1, as)], toBase58String(as)) | |
238 | 265 | } | |
239 | 266 | ||
240 | 267 | ||
241 | 268 | ||
242 | - | @Callable( | |
243 | - | func issueFree ( | |
269 | + | @Callable(ar) | |
270 | + | func issueFree (j,az) = if ((ar.caller != y())) | |
244 | 271 | then throw("CIF: rebirth only") | |
245 | 272 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | let | |
249 | - | let | |
250 | - | let | |
251 | - | let | |
252 | - | let | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | $Tuple2([IntegerEntry( | |
273 | + | let K = fromBase58String(az) | |
274 | + | let aB = J(j, K) | |
275 | + | let aC = L(j, K) | |
276 | + | let aD = P("cani_amount") | |
277 | + | let aE = aj(aD) | |
278 | + | let aJ = ac(K, (valueOrErrorMessage(transactionHeightById(K), ((az + " not found ") + toBase58String(K))) + 1), true) | |
279 | + | let aK = aJ._1 | |
280 | + | let ax = aJ._2 | |
281 | + | let aG = (("{\"genotype\": \"" + aK) + "\", \"crossbreeding\": true}") | |
282 | + | let au = Issue(aK, aG, 1, 0, false, unit, height) | |
283 | + | let as = calculateAssetId(au) | |
284 | + | let aL = (P(N(aK)) + 1) | |
285 | + | let aH = M(j, K) | |
286 | + | $Tuple2([IntegerEntry(L(j, K), height), IntegerEntry("cani_amount", (aD + 1)), IntegerEntry("cani_last_price", (aE / 1500000)), StringEntry(aB, G), StringEntry(aH, toBase58String(as)), StringEntry(toBase58String(as), aH), IntegerEntry(N(aK), aL), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(value(addressFromString(j)), 1, as)], toBase58String(as)) | |
260 | 287 | } | |
261 | 288 | ||
262 | 289 | ||
263 | 290 | ||
264 | - | @Callable( | |
265 | - | func setDiscount ( | |
291 | + | @Callable(ar) | |
292 | + | func setDiscount (Q) = if ((ar.caller != this)) | |
266 | 293 | then throw("admin_only") | |
267 | - | else [IntegerEntry("discountCoefficient", | |
294 | + | else [IntegerEntry("discountCoefficient", Q)] | |
268 | 295 | ||
269 | 296 | ||
270 | 297 | ||
271 | - | @Callable( | |
272 | - | func startHatching ( | |
273 | - | let | |
274 | - | if (( | |
275 | - | then if (( | |
298 | + | @Callable(ar) | |
299 | + | func startHatching (aM) = { | |
300 | + | let aN = B(ar.payments[0]) | |
301 | + | if ((aN == aN)) | |
302 | + | then if ((H() > 0)) | |
276 | 303 | then throw("EGG operations are temporarily locked") | |
277 | 304 | else { | |
278 | - | let aK = K("cani_amount") | |
279 | - | let aA = ae(aK) | |
280 | - | let aL = [StringEntry(E(toString(an.originCaller), an.transactionId), A), IntegerEntry(G(toString(an.originCaller), an.transactionId), (height + z)), IntegerEntry("cani_amount", (aK + 1)), IntegerEntry("cani_last_price", (aA / 1500000))] | |
281 | - | let aM = aA | |
282 | - | let aN = value(an.payments[1]) | |
283 | - | if ((aN.assetId != r())) | |
305 | + | let aO = P("cani_amount") | |
306 | + | let aE = aj(aO) | |
307 | + | let aP = [StringEntry(J(toString(ar.originCaller), ar.transactionId), F), IntegerEntry(L(toString(ar.originCaller), ar.transactionId), (height + E)), IntegerEntry("cani_amount", (aO + 1)), IntegerEntry("cani_last_price", (aE / 1500000))] | |
308 | + | let aQ = value(ar.payments[1]) | |
309 | + | let aR = if ((size(ar.payments) == 3)) | |
310 | + | then { | |
311 | + | let aS = e(invoke(A(), "checkArtefactDetails", [toBase58String(value(value(ar.payments[2]).assetId))], nil)) | |
312 | + | if ((aS == aS)) | |
313 | + | then if ((aS == "ART-CANCPN")) | |
314 | + | then ((aE / 100) * 85) | |
315 | + | else 100 | |
316 | + | else throw("Strict value is not equal to itself.") | |
317 | + | } | |
318 | + | else aE | |
319 | + | if ((aQ.assetId != v())) | |
284 | 320 | then throw("TB: You can attach only WAVES") | |
285 | - | else if (( | |
286 | - | then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString( | |
321 | + | else if ((aR > aQ.amount)) | |
322 | + | then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString(aR)) + " ") + toString(ar.caller))) | |
287 | 323 | else { | |
288 | - | let | |
289 | - | if (( | |
324 | + | let aT = invoke(z(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, aR)]) | |
325 | + | if ((aT == aT)) | |
290 | 326 | then { | |
291 | - | let | |
292 | - | then [ScriptTransfer( | |
327 | + | let aU = if ((size(ar.payments) == 2)) | |
328 | + | then [ScriptTransfer(ar.caller, (ar.payments[1].amount - aR), v())] | |
293 | 329 | else nil | |
294 | - | (( | |
330 | + | ((aP ++ aU) ++ aN) | |
295 | 331 | } | |
296 | 332 | else throw("Strict value is not equal to itself.") | |
297 | 333 | } | |
301 | 337 | ||
302 | 338 | ||
303 | 339 | ||
304 | - | @Callable( | |
305 | - | func finishHatching ( | |
306 | - | let | |
307 | - | if (( | |
340 | + | @Callable(ar) | |
341 | + | func finishHatching (az) = { | |
342 | + | let aN = B(ar.payments[0]) | |
343 | + | if ((aN == aN)) | |
308 | 344 | then { | |
309 | - | let | |
310 | - | let | |
311 | - | let | |
312 | - | let | |
313 | - | let | |
314 | - | let | |
315 | - | if (( | |
345 | + | let K = fromBase58String(az) | |
346 | + | let aB = J(toString(ar.caller), K) | |
347 | + | let aC = L(toString(ar.caller), K) | |
348 | + | let aV = M(toString(ar.caller), K) | |
349 | + | let aW = getStringValue(this, aB) | |
350 | + | let U = getIntegerValue(this, aC) | |
351 | + | if ((aW == G)) | |
316 | 352 | then { | |
317 | - | let | |
318 | - | throw(("The Cani was hatched and claimed already, here is the folowing: " + | |
353 | + | let aX = getStringValue(this, M(toString(ar.caller), K)) | |
354 | + | throw(("The Cani was hatched and claimed already, here is the folowing: " + aX)) | |
319 | 355 | } | |
320 | - | else if (( | |
321 | - | then throw((((("Hatching is not finished yet " + toString(( | |
356 | + | else if ((U > height)) | |
357 | + | then throw((((("Hatching is not finished yet " + toString((U - height))) + " blocks remaining, it will take around ") + toString((U - height))) + " minutes")) | |
322 | 358 | else { | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | ([StringEntry( | |
359 | + | let aY = ac(K, U, false) | |
360 | + | let aK = aY._1 | |
361 | + | let ax = aY._2 | |
362 | + | let aG = (("{\"genotype\": \"" + aK) + "\", \"crossbreeding\": true}") | |
363 | + | let au = Issue(aK, aG, 1, 0, false, unit, U) | |
364 | + | let as = calculateAssetId(au) | |
365 | + | let aL = (P(N(aK)) + 1) | |
366 | + | ([StringEntry(aB, G), StringEntry(aV, toBase58String(as)), StringEntry(toBase58String(as), aV), IntegerEntry(N(aK), aL), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(ar.caller, 1, as)] ++ aN) | |
331 | 367 | } | |
332 | 368 | } | |
333 | 369 | else throw("Strict value is not equal to itself.") | |
334 | 370 | } | |
335 | 371 | ||
336 | 372 | ||
337 | - | @Verifier( | |
338 | - | func | |
339 | - | then sigVerify( | |
373 | + | @Verifier(aZ) | |
374 | + | func ba () = if (h()) | |
375 | + | then sigVerify(aZ.bodyBytes, aZ.proofs[0], aZ.senderPublicKey) | |
340 | 376 | else { | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
377 | + | let bb = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
378 | + | let bc = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8' | |
379 | + | let bd = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3' | |
380 | + | let be = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bb)) | |
345 | 381 | then 1 | |
346 | - | else if (sigVerify( | |
382 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bb)) | |
347 | 383 | then 1 | |
348 | - | else if (sigVerify( | |
384 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bb)) | |
349 | 385 | then 1 | |
350 | 386 | else 0 | |
351 | - | let | |
387 | + | let bf = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bc)) | |
352 | 388 | then 1 | |
353 | - | else if (sigVerify( | |
389 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bc)) | |
354 | 390 | then 1 | |
355 | - | else if (sigVerify( | |
391 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bc)) | |
356 | 392 | then 1 | |
357 | 393 | else 0 | |
358 | - | let | |
394 | + | let bg = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bd)) | |
359 | 395 | then 1 | |
360 | - | else if (sigVerify( | |
396 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bd)) | |
361 | 397 | then 1 | |
362 | - | else if (sigVerify( | |
398 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bd)) | |
363 | 399 | then 1 | |
364 | 400 | else 0 | |
365 | - | let | |
366 | - | let c = | |
367 | - | ( | |
401 | + | let bh = ((be + bf) + bg) | |
402 | + | let c = aZ | |
403 | + | (bh >= 2) | |
368 | 404 | } | |
369 | 405 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getBoolean(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Boolean")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else false | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | - | func e () = a("TESTENV") | |
15 | + | func e (f) = { | |
16 | + | let c = f | |
17 | + | if ($isInstanceOf(c, "String")) | |
18 | + | then { | |
19 | + | let g = c | |
20 | + | g | |
21 | + | } | |
22 | + | else if ($isInstanceOf(c, "Int")) | |
23 | + | then { | |
24 | + | let g = c | |
25 | + | throw("wrong type, expected: String, got: Int") | |
26 | + | } | |
27 | + | else if ($isInstanceOf(c, "Unit")) | |
28 | + | then { | |
29 | + | let g = c | |
30 | + | throw("wrong type, expected: String, got: Unit") | |
31 | + | } | |
32 | + | else throw("wrong type, expected: String") | |
33 | + | } | |
16 | 34 | ||
17 | 35 | ||
18 | - | func f (g,b) = { | |
19 | - | let c = getString(g, b) | |
36 | + | func h () = a("TESTENV") | |
37 | + | ||
38 | + | ||
39 | + | func i (j,b) = { | |
40 | + | let c = getString(j, b) | |
20 | 41 | if ($isInstanceOf(c, "String")) | |
21 | 42 | then { | |
22 | - | let | |
23 | - | | |
43 | + | let k = c | |
44 | + | k | |
24 | 45 | } | |
25 | 46 | else "" | |
26 | 47 | } | |
27 | 48 | ||
28 | 49 | ||
29 | - | func | |
50 | + | func l (b) = i(this, b) | |
30 | 51 | ||
31 | 52 | ||
32 | - | func | |
53 | + | func m () = "static_oracleAddress" | |
33 | 54 | ||
34 | 55 | ||
35 | - | func | |
56 | + | func n () = "static_extraFee" | |
36 | 57 | ||
37 | 58 | ||
38 | - | func | |
59 | + | func o () = "static_feeAggregator" | |
39 | 60 | ||
40 | 61 | ||
41 | - | func | |
62 | + | func p () = "static_refContractAddress" | |
42 | 63 | ||
43 | 64 | ||
44 | - | func | |
65 | + | func q () = "static_canineRebirthAddress" | |
45 | 66 | ||
46 | 67 | ||
47 | - | func | |
68 | + | func r () = "static_canineStakingAddress" | |
48 | 69 | ||
49 | 70 | ||
50 | - | func | |
71 | + | func s () = "static_itemsAddress" | |
51 | 72 | ||
52 | 73 | ||
53 | - | func | |
74 | + | func t () = Address(fromBase58String(l(m()))) | |
54 | 75 | ||
55 | 76 | ||
56 | - | func | |
77 | + | func u () = Address(fromBase58String(i(t(), o()))) | |
57 | 78 | ||
58 | 79 | ||
59 | - | func | |
80 | + | func v () = unit | |
60 | 81 | ||
61 | 82 | ||
62 | - | func | |
83 | + | func w () = Address(fromBase58String(i(t(), "static_burnAddress"))) | |
63 | 84 | ||
64 | 85 | ||
65 | - | func | |
86 | + | func x () = Address(fromBase58String(i(t(), p()))) | |
66 | 87 | ||
67 | 88 | ||
68 | - | func | |
89 | + | func y () = Address(fromBase58String(i(t(), q()))) | |
69 | 90 | ||
70 | 91 | ||
71 | - | func w (x) = if (isDefined(x.assetId)) | |
92 | + | func z () = Address(fromBase58String(i(t(), r()))) | |
93 | + | ||
94 | + | ||
95 | + | func A () = Address(fromBase58String(i(t(), s()))) | |
96 | + | ||
97 | + | ||
98 | + | func B (C) = if (isDefined(C.assetId)) | |
72 | 99 | then throw("BDCAP: Please attach waves") | |
73 | 100 | else { | |
74 | - | let | |
75 | - | if (( | |
76 | - | then throw((("BDCAP: Please attach exactly " + toString( | |
77 | - | else [ScriptTransfer( | |
101 | + | let D = getIntegerValue(t(), n()) | |
102 | + | if ((C.amount != D)) | |
103 | + | then throw((("BDCAP: Please attach exactly " + toString(D)) + " amount of wavelets")) | |
104 | + | else [ScriptTransfer(u(), D, unit)] | |
78 | 105 | } | |
79 | 106 | ||
80 | 107 | ||
81 | - | let | |
108 | + | let E = 2 | |
82 | 109 | ||
83 | - | let | |
110 | + | let F = "HATCHING_STARTED" | |
84 | 111 | ||
85 | - | let | |
112 | + | let G = "HATCHING_FINISHED" | |
86 | 113 | ||
87 | - | func | |
88 | - | let | |
89 | - | let c = getInteger( | |
114 | + | func H () = { | |
115 | + | let I = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
116 | + | let c = getInteger(I, "egglock") | |
90 | 117 | if ($isInstanceOf(c, "Int")) | |
91 | 118 | then { | |
92 | 119 | let d = c | |
93 | 120 | d | |
94 | 121 | } | |
95 | 122 | else 0 | |
96 | 123 | } | |
97 | 124 | ||
98 | 125 | ||
99 | - | func | |
126 | + | func J (j,K) = (((j + "_") + toBase58String(K)) + "_status") | |
100 | 127 | ||
101 | 128 | ||
102 | - | func | |
129 | + | func L (j,K) = (((j + "_") + toBase58String(K)) + "_fh") | |
103 | 130 | ||
104 | 131 | ||
105 | - | func | |
132 | + | func M (j,K) = (((j + "_") + toBase58String(K)) + "_di") | |
106 | 133 | ||
107 | 134 | ||
108 | - | func | |
135 | + | func N (O) = (("stats_" + O) + "_amount") | |
109 | 136 | ||
110 | 137 | ||
111 | - | func | |
112 | - | let | |
138 | + | func P (b) = { | |
139 | + | let Q = { | |
113 | 140 | let c = getInteger(this, b) | |
114 | 141 | if ($isInstanceOf(c, "Int")) | |
115 | 142 | then { | |
116 | 143 | let d = c | |
117 | 144 | d | |
118 | 145 | } | |
119 | 146 | else 0 | |
120 | 147 | } | |
121 | - | | |
148 | + | Q | |
122 | 149 | } | |
123 | 150 | ||
124 | 151 | ||
125 | - | let | |
152 | + | let R = P("discountCoefficient") | |
126 | 153 | ||
127 | - | func | |
128 | - | let | |
129 | - | let | |
130 | - | (toInt( | |
154 | + | func S (T,K,U,V) = { | |
155 | + | let W = value(blockInfoByHeight((U - 1))) | |
156 | + | let X = sha256((K + value(W.vrf))) | |
157 | + | (toInt(X, (V * 8)) % T) | |
131 | 158 | } | |
132 | 159 | ||
133 | 160 | ||
134 | - | func | |
135 | - | let | |
136 | - | let | |
137 | - | $Tuple2(( | |
161 | + | func Y (Z) = { | |
162 | + | let aa = [$Tuple2(("CANI-AAAAAAAA-G" + Z), "8A-G")] | |
163 | + | let ab = [$Tuple2(("CANI-BBBBBBBB-G" + Z), "8B-G"), $Tuple2(("CANI-CCCCCCCC-G" + Z), "8C-G"), $Tuple2(("CANI-DDDDDDDD-G" + Z), "8D-G"), $Tuple2(("CANI-EEEEEEEE-G" + Z), "8E-G")] | |
164 | + | $Tuple2((aa ++ ab), ab) | |
138 | 165 | } | |
139 | 166 | ||
140 | 167 | ||
141 | - | func | |
142 | - | let | |
143 | - | let | |
144 | - | let | |
145 | - | let | |
146 | - | then | |
147 | - | else | |
148 | - | let | |
149 | - | ||
168 | + | func ac (K,U,ad) = { | |
169 | + | let ae = S(4, K, U, 1) | |
170 | + | let Z = ["A", "B", "C", "D"][ae] | |
171 | + | let af = Y(Z) | |
172 | + | let ag = if (ad) | |
173 | + | then af._1 | |
174 | + | else af._2 | |
175 | + | let ah = S(size(ag), K, U, 0) | |
176 | + | ag[ah] | |
150 | 177 | } | |
151 | 178 | ||
152 | 179 | ||
153 | - | let | |
180 | + | let ai = (size(Y("R")._2) - 1) | |
154 | 181 | ||
155 | - | func | |
156 | - | let | |
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | ( | |
182 | + | func aj (ak) = { | |
183 | + | let al = ak | |
184 | + | let am = R | |
185 | + | let an = ai | |
186 | + | let ao = (pow((100 + ((al * am) / (10 * an))), 2, 5, 1, 2, DOWN) + 55) | |
187 | + | (ao * 1500000) | |
161 | 188 | } | |
162 | 189 | ||
163 | 190 | ||
164 | - | func | |
165 | - | let c = | |
191 | + | func ap (f) = { | |
192 | + | let c = f | |
166 | 193 | if ($isInstanceOf(c, "Boolean")) | |
167 | 194 | then { | |
168 | - | let | |
169 | - | | |
195 | + | let aq = c | |
196 | + | aq | |
170 | 197 | } | |
171 | 198 | else throw("TI: wrong type, expected: Boolean") | |
172 | 199 | } | |
173 | 200 | ||
174 | 201 | ||
175 | - | @Callable( | |
176 | - | func reduceRarity ( | |
177 | - | let | |
178 | - | if (if (( | |
179 | - | then ( | |
202 | + | @Callable(ar) | |
203 | + | func reduceRarity (as,at) = { | |
204 | + | let au = fromBase58String(as) | |
205 | + | if (if ((ar.caller != y())) | |
206 | + | then (ar.caller != this) | |
180 | 207 | else false) | |
181 | 208 | then throw("IRR: admin or rebirth only") | |
182 | 209 | else { | |
183 | - | let | |
184 | - | let | |
185 | - | let | |
186 | - | [IntegerEntry( | |
210 | + | let av = value(assetInfo(au)).name | |
211 | + | let aw = takeRight(take(av, 6), 1) | |
212 | + | let ax = (("8" + aw) + "-G") | |
213 | + | [IntegerEntry(N(av), (P(N(av)) - 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) - 1))] | |
187 | 214 | } | |
188 | 215 | } | |
189 | 216 | ||
190 | 217 | ||
191 | 218 | ||
192 | - | @Callable( | |
193 | - | func increaseRarity ( | |
194 | - | let | |
195 | - | if (if (( | |
196 | - | then ( | |
219 | + | @Callable(ar) | |
220 | + | func increaseRarity (as,at) = { | |
221 | + | let au = fromBase58String(as) | |
222 | + | if (if ((ar.caller != y())) | |
223 | + | then (ar.caller != this) | |
197 | 224 | else false) | |
198 | 225 | then throw("IRR: admin or rebirth only") | |
199 | 226 | else { | |
200 | - | let | |
201 | - | let | |
202 | - | let | |
203 | - | [IntegerEntry( | |
227 | + | let av = value(assetInfo(au)).name | |
228 | + | let aw = takeRight(take(av, 6), 1) | |
229 | + | let ax = (("8" + aw) + "-G") | |
230 | + | [IntegerEntry(N(av), (P(N(av)) + 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1))] | |
204 | 231 | } | |
205 | 232 | } | |
206 | 233 | ||
207 | 234 | ||
208 | 235 | ||
209 | - | @Callable( | |
210 | - | func configureOracle ( | |
236 | + | @Callable(ar) | |
237 | + | func configureOracle (ay) = if ((ar.caller != this)) | |
211 | 238 | then throw("ICU: admin only") | |
212 | - | else [StringEntry("static_oracleAddress", | |
239 | + | else [StringEntry("static_oracleAddress", ay)] | |
213 | 240 | ||
214 | 241 | ||
215 | 242 | ||
216 | - | @Callable( | |
217 | - | func issueJackpot ( | |
218 | - | then ( | |
243 | + | @Callable(ar) | |
244 | + | func issueJackpot (j,az,aA) = if (if ((ar.caller != y())) | |
245 | + | then (ar.caller != this) | |
219 | 246 | else false) | |
220 | 247 | then throw("ISJ: admin or rebirth only") | |
221 | 248 | else { | |
222 | - | let | |
223 | - | let | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | if (( | |
236 | - | then throw((("ISJ: You will override following duckId :" + | |
237 | - | else $Tuple2([IntegerEntry( | |
249 | + | let K = fromBase58String(az) | |
250 | + | let aB = J(j, K) | |
251 | + | let aC = L(j, K) | |
252 | + | let aD = P("cani_amount") | |
253 | + | let aE = aj(aD) | |
254 | + | let aF = $Tuple2((("CANI-" + aA) + "-JU"), "8W-J") | |
255 | + | let av = aF._1 | |
256 | + | let ax = aF._2 | |
257 | + | let aG = (("{\"genotype\": \"" + av) + "\", \"crossbreeding\": true}") | |
258 | + | let au = Issue(av, aG, 1, 0, false, unit, height) | |
259 | + | let as = calculateAssetId(au) | |
260 | + | let aH = M(j, K) | |
261 | + | let aI = l(aH) | |
262 | + | if ((aI != "")) | |
263 | + | then throw((("ISJ: You will override following duckId :" + aH) + " make sure that your txId is unique!")) | |
264 | + | else $Tuple2([IntegerEntry(L(j, K), height), IntegerEntry("cani_amount", (aD + 1)), IntegerEntry("cani_last_price", (aE / 1500000)), StringEntry(aB, G), StringEntry(aH, toBase58String(as)), StringEntry(toBase58String(as), aH), IntegerEntry(N(av), (P(N(av)) + 1)), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(value(addressFromString(j)), 1, as)], toBase58String(as)) | |
238 | 265 | } | |
239 | 266 | ||
240 | 267 | ||
241 | 268 | ||
242 | - | @Callable( | |
243 | - | func issueFree ( | |
269 | + | @Callable(ar) | |
270 | + | func issueFree (j,az) = if ((ar.caller != y())) | |
244 | 271 | then throw("CIF: rebirth only") | |
245 | 272 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | let | |
249 | - | let | |
250 | - | let | |
251 | - | let | |
252 | - | let | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | $Tuple2([IntegerEntry( | |
273 | + | let K = fromBase58String(az) | |
274 | + | let aB = J(j, K) | |
275 | + | let aC = L(j, K) | |
276 | + | let aD = P("cani_amount") | |
277 | + | let aE = aj(aD) | |
278 | + | let aJ = ac(K, (valueOrErrorMessage(transactionHeightById(K), ((az + " not found ") + toBase58String(K))) + 1), true) | |
279 | + | let aK = aJ._1 | |
280 | + | let ax = aJ._2 | |
281 | + | let aG = (("{\"genotype\": \"" + aK) + "\", \"crossbreeding\": true}") | |
282 | + | let au = Issue(aK, aG, 1, 0, false, unit, height) | |
283 | + | let as = calculateAssetId(au) | |
284 | + | let aL = (P(N(aK)) + 1) | |
285 | + | let aH = M(j, K) | |
286 | + | $Tuple2([IntegerEntry(L(j, K), height), IntegerEntry("cani_amount", (aD + 1)), IntegerEntry("cani_last_price", (aE / 1500000)), StringEntry(aB, G), StringEntry(aH, toBase58String(as)), StringEntry(toBase58String(as), aH), IntegerEntry(N(aK), aL), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(value(addressFromString(j)), 1, as)], toBase58String(as)) | |
260 | 287 | } | |
261 | 288 | ||
262 | 289 | ||
263 | 290 | ||
264 | - | @Callable( | |
265 | - | func setDiscount ( | |
291 | + | @Callable(ar) | |
292 | + | func setDiscount (Q) = if ((ar.caller != this)) | |
266 | 293 | then throw("admin_only") | |
267 | - | else [IntegerEntry("discountCoefficient", | |
294 | + | else [IntegerEntry("discountCoefficient", Q)] | |
268 | 295 | ||
269 | 296 | ||
270 | 297 | ||
271 | - | @Callable( | |
272 | - | func startHatching ( | |
273 | - | let | |
274 | - | if (( | |
275 | - | then if (( | |
298 | + | @Callable(ar) | |
299 | + | func startHatching (aM) = { | |
300 | + | let aN = B(ar.payments[0]) | |
301 | + | if ((aN == aN)) | |
302 | + | then if ((H() > 0)) | |
276 | 303 | then throw("EGG operations are temporarily locked") | |
277 | 304 | else { | |
278 | - | let aK = K("cani_amount") | |
279 | - | let aA = ae(aK) | |
280 | - | let aL = [StringEntry(E(toString(an.originCaller), an.transactionId), A), IntegerEntry(G(toString(an.originCaller), an.transactionId), (height + z)), IntegerEntry("cani_amount", (aK + 1)), IntegerEntry("cani_last_price", (aA / 1500000))] | |
281 | - | let aM = aA | |
282 | - | let aN = value(an.payments[1]) | |
283 | - | if ((aN.assetId != r())) | |
305 | + | let aO = P("cani_amount") | |
306 | + | let aE = aj(aO) | |
307 | + | let aP = [StringEntry(J(toString(ar.originCaller), ar.transactionId), F), IntegerEntry(L(toString(ar.originCaller), ar.transactionId), (height + E)), IntegerEntry("cani_amount", (aO + 1)), IntegerEntry("cani_last_price", (aE / 1500000))] | |
308 | + | let aQ = value(ar.payments[1]) | |
309 | + | let aR = if ((size(ar.payments) == 3)) | |
310 | + | then { | |
311 | + | let aS = e(invoke(A(), "checkArtefactDetails", [toBase58String(value(value(ar.payments[2]).assetId))], nil)) | |
312 | + | if ((aS == aS)) | |
313 | + | then if ((aS == "ART-CANCPN")) | |
314 | + | then ((aE / 100) * 85) | |
315 | + | else 100 | |
316 | + | else throw("Strict value is not equal to itself.") | |
317 | + | } | |
318 | + | else aE | |
319 | + | if ((aQ.assetId != v())) | |
284 | 320 | then throw("TB: You can attach only WAVES") | |
285 | - | else if (( | |
286 | - | then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString( | |
321 | + | else if ((aR > aQ.amount)) | |
322 | + | then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString(aR)) + " ") + toString(ar.caller))) | |
287 | 323 | else { | |
288 | - | let | |
289 | - | if (( | |
324 | + | let aT = invoke(z(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, aR)]) | |
325 | + | if ((aT == aT)) | |
290 | 326 | then { | |
291 | - | let | |
292 | - | then [ScriptTransfer( | |
327 | + | let aU = if ((size(ar.payments) == 2)) | |
328 | + | then [ScriptTransfer(ar.caller, (ar.payments[1].amount - aR), v())] | |
293 | 329 | else nil | |
294 | - | (( | |
330 | + | ((aP ++ aU) ++ aN) | |
295 | 331 | } | |
296 | 332 | else throw("Strict value is not equal to itself.") | |
297 | 333 | } | |
298 | 334 | } | |
299 | 335 | else throw("Strict value is not equal to itself.") | |
300 | 336 | } | |
301 | 337 | ||
302 | 338 | ||
303 | 339 | ||
304 | - | @Callable( | |
305 | - | func finishHatching ( | |
306 | - | let | |
307 | - | if (( | |
340 | + | @Callable(ar) | |
341 | + | func finishHatching (az) = { | |
342 | + | let aN = B(ar.payments[0]) | |
343 | + | if ((aN == aN)) | |
308 | 344 | then { | |
309 | - | let | |
310 | - | let | |
311 | - | let | |
312 | - | let | |
313 | - | let | |
314 | - | let | |
315 | - | if (( | |
345 | + | let K = fromBase58String(az) | |
346 | + | let aB = J(toString(ar.caller), K) | |
347 | + | let aC = L(toString(ar.caller), K) | |
348 | + | let aV = M(toString(ar.caller), K) | |
349 | + | let aW = getStringValue(this, aB) | |
350 | + | let U = getIntegerValue(this, aC) | |
351 | + | if ((aW == G)) | |
316 | 352 | then { | |
317 | - | let | |
318 | - | throw(("The Cani was hatched and claimed already, here is the folowing: " + | |
353 | + | let aX = getStringValue(this, M(toString(ar.caller), K)) | |
354 | + | throw(("The Cani was hatched and claimed already, here is the folowing: " + aX)) | |
319 | 355 | } | |
320 | - | else if (( | |
321 | - | then throw((((("Hatching is not finished yet " + toString(( | |
356 | + | else if ((U > height)) | |
357 | + | then throw((((("Hatching is not finished yet " + toString((U - height))) + " blocks remaining, it will take around ") + toString((U - height))) + " minutes")) | |
322 | 358 | else { | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | ([StringEntry( | |
359 | + | let aY = ac(K, U, false) | |
360 | + | let aK = aY._1 | |
361 | + | let ax = aY._2 | |
362 | + | let aG = (("{\"genotype\": \"" + aK) + "\", \"crossbreeding\": true}") | |
363 | + | let au = Issue(aK, aG, 1, 0, false, unit, U) | |
364 | + | let as = calculateAssetId(au) | |
365 | + | let aL = (P(N(aK)) + 1) | |
366 | + | ([StringEntry(aB, G), StringEntry(aV, toBase58String(as)), StringEntry(toBase58String(as), aV), IntegerEntry(N(aK), aL), IntegerEntry((("stats_" + ax) + "_quantity"), (P((("stats_" + ax) + "_quantity")) + 1)), au, ScriptTransfer(ar.caller, 1, as)] ++ aN) | |
331 | 367 | } | |
332 | 368 | } | |
333 | 369 | else throw("Strict value is not equal to itself.") | |
334 | 370 | } | |
335 | 371 | ||
336 | 372 | ||
337 | - | @Verifier( | |
338 | - | func | |
339 | - | then sigVerify( | |
373 | + | @Verifier(aZ) | |
374 | + | func ba () = if (h()) | |
375 | + | then sigVerify(aZ.bodyBytes, aZ.proofs[0], aZ.senderPublicKey) | |
340 | 376 | else { | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
377 | + | let bb = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
378 | + | let bc = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8' | |
379 | + | let bd = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3' | |
380 | + | let be = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bb)) | |
345 | 381 | then 1 | |
346 | - | else if (sigVerify( | |
382 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bb)) | |
347 | 383 | then 1 | |
348 | - | else if (sigVerify( | |
384 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bb)) | |
349 | 385 | then 1 | |
350 | 386 | else 0 | |
351 | - | let | |
387 | + | let bf = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bc)) | |
352 | 388 | then 1 | |
353 | - | else if (sigVerify( | |
389 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bc)) | |
354 | 390 | then 1 | |
355 | - | else if (sigVerify( | |
391 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bc)) | |
356 | 392 | then 1 | |
357 | 393 | else 0 | |
358 | - | let | |
394 | + | let bg = if (sigVerify(aZ.bodyBytes, aZ.proofs[0], bd)) | |
359 | 395 | then 1 | |
360 | - | else if (sigVerify( | |
396 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[1], bd)) | |
361 | 397 | then 1 | |
362 | - | else if (sigVerify( | |
398 | + | else if (sigVerify(aZ.bodyBytes, aZ.proofs[2], bd)) | |
363 | 399 | then 1 | |
364 | 400 | else 0 | |
365 | - | let | |
366 | - | let c = | |
367 | - | ( | |
401 | + | let bh = ((be + bf) + bg) | |
402 | + | let c = aZ | |
403 | + | (bh >= 2) | |
368 | 404 | } | |
369 | 405 |
github/deemru/w8io/169f3d6 129.68 ms ◑