tx · B7mXXdprvczmQyEEm9yfKnx7vkRgJ4bhhteTWCSVCCpD 3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C: -0.01900000 Waves 2024.11.01 19:39 [3352711] smart account 3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C > SELF 0.00000000 Waves
{ "type": 13, "id": "B7mXXdprvczmQyEEm9yfKnx7vkRgJ4bhhteTWCSVCCpD", "fee": 1900000, "feeAssetId": null, "timestamp": 1730479187009, "version": 2, "chainId": 84, "sender": "3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C", "senderPublicKey": "ESRi59hjHAnDxmeFyTaaXNvzeEW323BvzYJYyKjpEsC1", "proofs": [ "4qorX7cgtgke8sVpwfSWnHacpMUJkhZwgfboRRQo8AhB2wtJGQaDXVeNnqgc8dfgyitutuaqkfoCvGkXZSzaAydk" ], "script": "base64:AAIFAAAAAAAAAC8IAhIECgIICBIECgIICBIDCgEIEgUKAwgICBIECgIICBIDCgEBEgMKAQgSAwoBCAAAACIBAAAAB2dldEJvb2wAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAAlpc1Rlc3RFbnYAAAAACQEAAAAHZ2V0Qm9vbAAAAAECAAAAB1RFU1RFTlYBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAgAAAA9zdGF0aWNfZXh0cmFGZWUBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAIAAAAUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAABxzdGF0aWNLZXlfY2FuaVJlYmlydGhBZGRyZXNzAAAAAAIAAAAbc3RhdGljX2NhbmluZVJlYmlydGhBZGRyZXNzAQAAABxzdGF0aWNLZXlfY2FuaUZhcm1pbmdBZGRyZXNzAAAAAAIAAAAbc3RhdGljX2NhbmluZVN0YWtpbmdBZGRyZXNzAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAADmdldE1pbnRBc3NldElkAAAAAAUAAAAEdW5pdAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAFWdldENhbmlSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9jYW5pUmViaXJ0aEFkZHJlc3MAAAAAAQAAABVnZXRDYW5pRmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfY2FuaUZhcm1pbmdBZGRyZXNzAAAAAAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGkJEQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRP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AAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB2R1Y2tHZW4JAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAPZ2V0Q0FOSVN0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAJaXNzdWVGcmVlAAAAAgAAAAdhZGRyZXNzAAAAB3R4SWRTdHIDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABVnZXRDYW5pUmViaXJ0aEFkZHJlc3MAAAAACQAAAgAAAAECAAAAEUNJRjogcmViaXJ0aCBvbmx5BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAEHRvdGFsRHVja3NBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAALY2FuaV9hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA4MTg4ODMzNgkBAAAADWdldFJhbmRvbU5hbWUA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JUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAD3RvdGFsQ2FuaUFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAtjYW5pX2Ftb3VudAQAAAAKZWdnc05lZWRlZAkBAAAAFWNvdW50RWdnc05lZWRlZEFtb3VudAAAAAEFAAAAD3RvdGFsQ2FuaUFtb3VudAQAAAAHcmVzdWx0cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAPSGF0Y2hpbmdTdGFydGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAC2NhbmlfYW1vdW50CQAAZAAAAAIFAAAAD3RvdGFsQ2FuaUFtb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAPY2FuaV9sYXN0X3ByaWNlCQAAaQAAAAIFAAAACmVnZ3NOZWVkZWQAAAAAAAAW42AFAAAAA25pbAQAAAAJbGVmdFRvUGF5BQAAAAplZ2dzTmVlZGVkBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA5nZXRNaW50QXNzZXRJZAAAAAAJAAACAAAAAQIAAAAdVEI6IFlvdSBjYW4gYXR0YWNoIG9ubHkgV0FWRVMDCQAAZgAAAAIFAAAACWxlZnRUb1BheQgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQJ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", "height": 3352711, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BBxGEaZ5BaLv1FKrLM3bXDQziSuNRAcKYURP7nAc11Tz Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b | |
5 | - | let | |
6 | - | if ($isInstanceOf( | |
4 | + | func a (b) = { | |
5 | + | let c = getBoolean(this, b) | |
6 | + | if ($isInstanceOf(c, "Boolean")) | |
7 | 7 | then { | |
8 | - | let e = d | |
9 | - | e | |
8 | + | let d = c | |
9 | + | d | |
10 | + | } | |
11 | + | else false | |
12 | + | } | |
13 | + | ||
14 | + | ||
15 | + | func e () = a("TESTENV") | |
16 | + | ||
17 | + | ||
18 | + | func f (g,b) = { | |
19 | + | let c = getString(g, b) | |
20 | + | if ($isInstanceOf(c, "String")) | |
21 | + | then { | |
22 | + | let h = c | |
23 | + | h | |
10 | 24 | } | |
11 | 25 | else "" | |
12 | 26 | } | |
13 | 27 | ||
14 | 28 | ||
15 | - | func f (c) = { | |
16 | - | let d = getInteger(this, c) | |
17 | - | if ($isInstanceOf(d, "Int")) | |
29 | + | func i (b) = f(this, b) | |
30 | + | ||
31 | + | ||
32 | + | func j () = "static_oracleAddress" | |
33 | + | ||
34 | + | ||
35 | + | func k () = "static_extraFee" | |
36 | + | ||
37 | + | ||
38 | + | func l () = "static_feeAggregator" | |
39 | + | ||
40 | + | ||
41 | + | func m () = "static_refContractAddress" | |
42 | + | ||
43 | + | ||
44 | + | func n () = "static_canineRebirthAddress" | |
45 | + | ||
46 | + | ||
47 | + | func o () = "static_canineStakingAddress" | |
48 | + | ||
49 | + | ||
50 | + | func p () = Address(fromBase58String(i(j()))) | |
51 | + | ||
52 | + | ||
53 | + | func q () = Address(fromBase58String(f(p(), l()))) | |
54 | + | ||
55 | + | ||
56 | + | func r () = unit | |
57 | + | ||
58 | + | ||
59 | + | func s () = Address(fromBase58String(f(p(), "static_burnAddress"))) | |
60 | + | ||
61 | + | ||
62 | + | func t () = Address(fromBase58String(f(p(), m()))) | |
63 | + | ||
64 | + | ||
65 | + | func u () = Address(fromBase58String(f(p(), n()))) | |
66 | + | ||
67 | + | ||
68 | + | func v () = Address(fromBase58String(f(p(), o()))) | |
69 | + | ||
70 | + | ||
71 | + | func w (x) = if (isDefined(x.assetId)) | |
72 | + | then throw("BDCAP: Please attach waves") | |
73 | + | else { | |
74 | + | let y = getIntegerValue(p(), k()) | |
75 | + | if ((x.amount != y)) | |
76 | + | then throw((("BDCAP: Please attach exactly " + toString(y)) + " amount of wavelets")) | |
77 | + | else [ScriptTransfer(q(), y, unit)] | |
78 | + | } | |
79 | + | ||
80 | + | ||
81 | + | let z = 2 | |
82 | + | ||
83 | + | let A = "HATCHING_STARTED" | |
84 | + | ||
85 | + | let B = "HATCHING_FINISHED" | |
86 | + | ||
87 | + | func C () = { | |
88 | + | let D = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
89 | + | let c = getInteger(D, "egglock") | |
90 | + | if ($isInstanceOf(c, "Int")) | |
18 | 91 | then { | |
19 | - | let | |
20 | - | | |
92 | + | let d = c | |
93 | + | d | |
21 | 94 | } | |
22 | 95 | else 0 | |
23 | 96 | } | |
24 | 97 | ||
25 | 98 | ||
26 | - | func | |
99 | + | func E (g,F) = (((g + "_") + toBase58String(F)) + "_status") | |
27 | 100 | ||
28 | 101 | ||
29 | - | func i (j) = { | |
30 | - | let d = j | |
31 | - | if ($isInstanceOf(d, "Int")) | |
32 | - | then { | |
33 | - | let k = d | |
34 | - | k | |
35 | - | } | |
36 | - | else if ($isInstanceOf(d, "String")) | |
102 | + | func G (g,F) = (((g + "_") + toBase58String(F)) + "_fh") | |
103 | + | ||
104 | + | ||
105 | + | func H (g,F) = (((g + "_") + toBase58String(F)) + "_di") | |
106 | + | ||
107 | + | ||
108 | + | func I (J) = (("stats_" + J) + "_amount") | |
109 | + | ||
110 | + | ||
111 | + | func K (b) = { | |
112 | + | let L = { | |
113 | + | let c = getInteger(this, b) | |
114 | + | if ($isInstanceOf(c, "Int")) | |
37 | 115 | then { | |
38 | - | let | |
39 | - | | |
116 | + | let d = c | |
117 | + | d | |
40 | 118 | } | |
41 | - | else throw("RAI: wrong type, expected: Int") | |
119 | + | else 0 | |
120 | + | } | |
121 | + | L | |
42 | 122 | } | |
43 | 123 | ||
44 | 124 | ||
45 | - | func m (j) = { | |
46 | - | let d = j | |
47 | - | if ($isInstanceOf(d, "Boolean")) | |
48 | - | then { | |
49 | - | let n = d | |
50 | - | n | |
51 | - | } | |
52 | - | else throw("FAB: wrong type, expected: Boolean") | |
125 | + | let M = K("discountCoefficient") | |
126 | + | ||
127 | + | func N (O,F,P,Q) = { | |
128 | + | let R = value(blockInfoByHeight((P - 1))) | |
129 | + | let S = sha256((F + value(R.vrf))) | |
130 | + | (toInt(S, (Q * 8)) % O) | |
53 | 131 | } | |
54 | 132 | ||
55 | 133 | ||
56 | - | func o (j) = { | |
57 | - | let d = j | |
58 | - | if ($isInstanceOf(d, "String")) | |
59 | - | then { | |
60 | - | let p = d | |
61 | - | p | |
62 | - | } | |
63 | - | else if ($isInstanceOf(d, "Int")) | |
64 | - | then { | |
65 | - | let p = d | |
66 | - | throw("wrong type, expected: String, got: Int") | |
67 | - | } | |
68 | - | else if ($isInstanceOf(d, "Unit")) | |
69 | - | then { | |
70 | - | let p = d | |
71 | - | throw("wrong type, expected: String, got: Unit") | |
72 | - | } | |
73 | - | else throw("wrong type, expected: String") | |
134 | + | func T (U) = { | |
135 | + | let V = [$Tuple2(("CANI-AAAAAAAA-G" + U), "8A-G")] | |
136 | + | let W = [$Tuple2(("CANI-BBBBBBBB-G" + U), "8B-G"), $Tuple2(("CANI-CCCCCCCC-G" + U), "8C-G"), $Tuple2(("CANI-DDDDDDDD-G" + U), "8D-G"), $Tuple2(("CANI-EEEEEEEE-G" + U), "8E-G")] | |
137 | + | $Tuple2((V ++ W), W) | |
74 | 138 | } | |
75 | 139 | ||
76 | 140 | ||
77 | - | func q () = "static_oracleAddress" | |
78 | - | ||
79 | - | ||
80 | - | func r () = "static_extraFee" | |
81 | - | ||
82 | - | ||
83 | - | func s () = "static_feeAggregator" | |
84 | - | ||
85 | - | ||
86 | - | func t () = "static_canineIncubatorAddress" | |
87 | - | ||
88 | - | ||
89 | - | func u () = "static_canineBreederAddress" | |
90 | - | ||
91 | - | ||
92 | - | func v () = "static_couponsAddress" | |
93 | - | ||
94 | - | ||
95 | - | func w () = "static_canineStakingAddress" | |
96 | - | ||
97 | - | ||
98 | - | func x () = "static_farmingAddressNew" | |
99 | - | ||
100 | - | ||
101 | - | func y () = "static_incubatorAddress" | |
102 | - | ||
103 | - | ||
104 | - | func z () = "static_itemsAddress" | |
105 | - | ||
106 | - | ||
107 | - | func A () = "static_canineWavesRebirthPrice" | |
108 | - | ||
109 | - | ||
110 | - | func B () = "static_turtleIncubatorAddress" | |
111 | - | ||
112 | - | ||
113 | - | func C () = "static_babyDuckAddress" | |
114 | - | ||
115 | - | ||
116 | - | func D () = Address(fromBase58String(h(q()))) | |
117 | - | ||
118 | - | ||
119 | - | func E () = Address(fromBase58String(a(D(), s()))) | |
120 | - | ||
121 | - | ||
122 | - | func F () = Address(fromBase58String(a(D(), u()))) | |
123 | - | ||
124 | - | ||
125 | - | func G () = Address(fromBase58String(a(D(), t()))) | |
126 | - | ||
127 | - | ||
128 | - | func H () = Address(fromBase58String(a(D(), v()))) | |
129 | - | ||
130 | - | ||
131 | - | func I () = Address(fromBase58String(a(D(), w()))) | |
132 | - | ||
133 | - | ||
134 | - | func J () = Address(fromBase58String(a(D(), x()))) | |
135 | - | ||
136 | - | ||
137 | - | func K () = Address(fromBase58String(a(D(), y()))) | |
138 | - | ||
139 | - | ||
140 | - | func L () = Address(fromBase58String(a(D(), z()))) | |
141 | - | ||
142 | - | ||
143 | - | func M () = Address(fromBase58String(a(D(), B()))) | |
144 | - | ||
145 | - | ||
146 | - | func N () = Address(fromBase58String(a(D(), C()))) | |
147 | - | ||
148 | - | ||
149 | - | func O (b,c) = { | |
150 | - | let d = getInteger(b, c) | |
151 | - | if ($isInstanceOf(d, "Int")) | |
152 | - | then { | |
153 | - | let g = d | |
154 | - | g | |
155 | - | } | |
156 | - | else throw("TR: Value not found in sc!") | |
141 | + | func X (F,P,Y) = { | |
142 | + | let Z = N(4, F, P, 1) | |
143 | + | let U = ["A", "B", "C", "D"][Z] | |
144 | + | let aa = T(U) | |
145 | + | let ab = if (Y) | |
146 | + | then aa._1 | |
147 | + | else aa._2 | |
148 | + | let ac = N(size(ab), F, P, 0) | |
149 | + | ab[ac] | |
157 | 150 | } | |
158 | 151 | ||
159 | 152 | ||
160 | - | let | |
153 | + | let ad = (size(T("R")._2) - 1) | |
161 | 154 | ||
162 | - | let Q = 2 | |
163 | - | ||
164 | - | func R (S) = if (if ((value(assetInfo(S)).issuer == F())) | |
165 | - | then true | |
166 | - | else (value(assetInfo(S)).issuer == G())) | |
167 | - | then value(assetInfo(S)).issuer | |
168 | - | else throw("not valid NFT") | |
169 | - | ||
170 | - | ||
171 | - | func T (U) = if (isDefined(U.assetId)) | |
172 | - | then throw("RCAP: Please attach waves") | |
173 | - | else { | |
174 | - | let V = getIntegerValue(D(), r()) | |
175 | - | if ((U.amount != V)) | |
176 | - | then throw((("RCAP: Please attach exactly " + toString(V)) + " amount of wavelets")) | |
177 | - | else [ScriptTransfer(E(), V, unit)] | |
178 | - | } | |
179 | - | ||
180 | - | ||
181 | - | func W (X,Y,Z,aa) = { | |
182 | - | let ab = value(blockInfoByHeight((Z - 1))) | |
183 | - | let ac = sha256((Y + value(ab.vrf))) | |
184 | - | (toInt(ac, (aa * 8)) % X) | |
155 | + | func ae (af) = { | |
156 | + | let ag = af | |
157 | + | let ah = M | |
158 | + | let ai = ad | |
159 | + | let aj = (pow((100 + ((ag * ah) / (10 * ai))), 2, 5, 1, 2, DOWN) + 55) | |
160 | + | (aj * 1500000) | |
185 | 161 | } | |
186 | 162 | ||
187 | 163 | ||
188 | - | func | |
189 | - | let | |
190 | - | if ($isInstanceOf( | |
164 | + | func ak (al) = { | |
165 | + | let c = al | |
166 | + | if ($isInstanceOf(c, "Boolean")) | |
191 | 167 | then { | |
192 | - | let | |
193 | - | | |
168 | + | let am = c | |
169 | + | am | |
194 | 170 | } | |
195 | - | else | |
171 | + | else throw("TI: wrong type, expected: Boolean") | |
196 | 172 | } | |
197 | 173 | ||
198 | 174 | ||
199 | - | func ae (af,ag,ah) = { | |
200 | - | let ai = W(10, af, ag, 1) | |
201 | - | if ((ai == 1)) | |
202 | - | then $Tuple2(ai, "jackpot") | |
175 | + | @Callable(an) | |
176 | + | func reduceRarity (ao,ap) = { | |
177 | + | let aq = fromBase58String(ao) | |
178 | + | if (if ((an.caller != u())) | |
179 | + | then (an.caller != this) | |
180 | + | else false) | |
181 | + | then throw("IRR: admin or rebirth only") | |
203 | 182 | else { | |
204 | - | let aj = W(1000, af, ag, 0) | |
205 | - | let ak = if (if ((100 > aj)) | |
206 | - | then (ah != "docking_A") | |
207 | - | else false) | |
208 | - | then "docking_A" | |
209 | - | else if (if ((200 > aj)) | |
210 | - | then (ah != "docking_B") | |
211 | - | else false) | |
212 | - | then "docking_B" | |
213 | - | else if (if ((300 > aj)) | |
214 | - | then (ah != "docking_C") | |
215 | - | else false) | |
216 | - | then "docking_C" | |
217 | - | else if (if ((400 > aj)) | |
218 | - | then (ah != "docking_D") | |
219 | - | else false) | |
220 | - | then "docking_D" | |
221 | - | else if (if ((450 > aj)) | |
222 | - | then (ah != "incubator") | |
223 | - | else false) | |
224 | - | then "incubator" | |
225 | - | else if (if ((490 > aj)) | |
226 | - | then (ah != "duckling_40") | |
227 | - | else false) | |
228 | - | then "duckling_40" | |
229 | - | else if (if ((540 > aj)) | |
230 | - | then (ah != "duckling_20") | |
231 | - | else false) | |
232 | - | then "duckling_20" | |
233 | - | else if (if ((640 > aj)) | |
234 | - | then (ah != "item!ART-FEED5") | |
235 | - | else false) | |
236 | - | then "item!ART-FEED5" | |
237 | - | else if (if ((710 > aj)) | |
238 | - | then (ah != "item!ART-FEED10") | |
239 | - | else false) | |
240 | - | then "item!ART-FEED10" | |
241 | - | else if (if ((740 > aj)) | |
242 | - | then (ah != "item!ART-FEED15") | |
243 | - | else false) | |
244 | - | then "item!ART-FEED15" | |
245 | - | else if (if ((770 > aj)) | |
246 | - | then (ah != "item!ART-FEED20") | |
247 | - | else false) | |
248 | - | then "item!ART-FEED20" | |
249 | - | else if (if ((790 > aj)) | |
250 | - | then (ah != "item!ART-FEED25") | |
251 | - | else false) | |
252 | - | then "item!ART-FEED25" | |
253 | - | else if (if ((810 > aj)) | |
254 | - | then (ah != "item!ART-FEED50") | |
255 | - | else false) | |
256 | - | then "item!ART-FEED50" | |
257 | - | else if (if ((830 > aj)) | |
258 | - | then (ah != "item!ART-FEED100") | |
259 | - | else false) | |
260 | - | then "item!ART-FEED100" | |
261 | - | else if (if ((860 > aj)) | |
262 | - | then (ah != "item!ART-MUTARIUM-G") | |
263 | - | else false) | |
264 | - | then "item!ART-MUTARIUM-G" | |
265 | - | else if (if ((890 > aj)) | |
266 | - | then (ah != "item!ART-MUTARIUM-D") | |
267 | - | else false) | |
268 | - | then "item!ART-MUTARIUM-D" | |
269 | - | else if (if ((910 > aj)) | |
270 | - | then (ah != "item!ART-FREEGENE") | |
271 | - | else false) | |
272 | - | then "item!ART-FREEGENE" | |
273 | - | else if (if ((930 > aj)) | |
274 | - | then (ah != "item!ART-FIXGENE") | |
275 | - | else false) | |
276 | - | then "item!ART-FIXGENE" | |
277 | - | else if (if ((980 > aj)) | |
278 | - | then (ah != "trtl_incubator") | |
279 | - | else false) | |
280 | - | then "trtl_incubator" | |
281 | - | else "item!ART-POTION" | |
282 | - | $Tuple2(aj, ak) | |
183 | + | let ar = value(assetInfo(aq)).name | |
184 | + | let as = takeRight(take(ar, 6), 1) | |
185 | + | let at = (("8" + as) + "-G") | |
186 | + | [IntegerEntry(I(ar), (K(I(ar)) - 1)), IntegerEntry((("stats_" + at) + "_quantity"), (K((("stats_" + at) + "_quantity")) - 1))] | |
283 | 187 | } | |
284 | 188 | } | |
285 | 189 | ||
286 | 190 | ||
287 | - | func al (af,ag) = { | |
288 | - | let aj = W(2, af, ag, 1) | |
289 | - | if ((aj == 0)) | |
290 | - | then true | |
291 | - | else false | |
191 | + | ||
192 | + | @Callable(an) | |
193 | + | func increaseRarity (ao,ap) = { | |
194 | + | let aq = fromBase58String(ao) | |
195 | + | if (if ((an.caller != u())) | |
196 | + | then (an.caller != this) | |
197 | + | else false) | |
198 | + | then throw("IRR: admin or rebirth only") | |
199 | + | else { | |
200 | + | let ar = value(assetInfo(aq)).name | |
201 | + | let as = takeRight(take(ar, 6), 1) | |
202 | + | let at = (("8" + as) + "-G") | |
203 | + | [IntegerEntry(I(ar), (K(I(ar)) + 1)), IntegerEntry((("stats_" + at) + "_quantity"), (K((("stats_" + at) + "_quantity")) + 1))] | |
204 | + | } | |
292 | 205 | } | |
293 | 206 | ||
294 | 207 | ||
295 | - | func am (an,b,ao,ap,ah,aq) = { | |
296 | - | let ar = f((((("address_" + b) + "_initTx_") + an) + "_finishBlock")) | |
297 | - | let as = h((((("address_" + b) + "_initTx_") + an) + "_status")) | |
298 | - | let at = T(ao) | |
299 | - | if ((at == at)) | |
300 | - | then if ((as != "open")) | |
301 | - | then throw("rebirth is finished or not open") | |
302 | - | else if ((ar > height)) | |
303 | - | then throw("you cannot finish rebirth, yet") | |
304 | - | else { | |
305 | - | let au = ae(fromBase58String(an), ar, ah) | |
306 | - | let av = au._2 | |
307 | - | let aw = au._1 | |
308 | - | let Y = an | |
309 | - | let ak = if ((indexOf(av, "docking") != unit)) | |
310 | - | then { | |
311 | - | let ax = takeRight(av, 1) | |
312 | - | let ay = if (!(ap)) | |
208 | + | ||
209 | + | @Callable(an) | |
210 | + | func configureOracle (au) = if ((an.caller != this)) | |
211 | + | then throw("ICU: admin only") | |
212 | + | else [StringEntry("static_oracleAddress", au)] | |
213 | + | ||
214 | + | ||
215 | + | ||
216 | + | @Callable(an) | |
217 | + | func issueJackpot (g,av,aw) = if (if ((an.caller != u())) | |
218 | + | then (an.caller != this) | |
219 | + | else false) | |
220 | + | then throw("ISJ: admin or rebirth only") | |
221 | + | else { | |
222 | + | let F = fromBase58String(av) | |
223 | + | let ax = E(g, F) | |
224 | + | let ay = G(g, F) | |
225 | + | let az = K("cani_amount") | |
226 | + | let aA = ae(az) | |
227 | + | let aB = $Tuple2((("CANI-" + aw) + "-JU"), "8W-J") | |
228 | + | let ar = aB._1 | |
229 | + | let at = aB._2 | |
230 | + | let aC = (("{\"genotype\": \"" + ar) + "\", \"crossbreeding\": true}") | |
231 | + | let aq = Issue(ar, aC, 1, 0, false, unit, height) | |
232 | + | let ao = calculateAssetId(aq) | |
233 | + | let aD = H(g, F) | |
234 | + | let aE = i(aD) | |
235 | + | if ((aE != "")) | |
236 | + | then throw((("ISJ: You will override following duckId :" + aD) + " make sure that your txId is unique!")) | |
237 | + | else $Tuple2([IntegerEntry(G(g, F), height), IntegerEntry("cani_amount", (az + 1)), IntegerEntry("cani_last_price", (aA / 1500000)), StringEntry(ax, B), StringEntry(aD, toBase58String(ao)), StringEntry(toBase58String(ao), aD), IntegerEntry(I(ar), (K(I(ar)) + 1)), IntegerEntry((("stats_" + at) + "_quantity"), (K((("stats_" + at) + "_quantity")) + 1)), aq, ScriptTransfer(value(addressFromString(g)), 1, ao)], toBase58String(ao)) | |
238 | + | } | |
239 | + | ||
240 | + | ||
241 | + | ||
242 | + | @Callable(an) | |
243 | + | func issueFree (g,av) = if ((an.caller != u())) | |
244 | + | then throw("CIF: rebirth only") | |
245 | + | else { | |
246 | + | let F = fromBase58String(av) | |
247 | + | let ax = E(g, F) | |
248 | + | let ay = G(g, F) | |
249 | + | let az = K("cani_amount") | |
250 | + | let aA = ae(az) | |
251 | + | let aF = X(F, (valueOrErrorMessage(transactionHeightById(F), ((av + " not found ") + toBase58String(F))) + 1), true) | |
252 | + | let aG = aF._1 | |
253 | + | let at = aF._2 | |
254 | + | let aC = (("{\"genotype\": \"" + aG) + "\", \"crossbreeding\": true}") | |
255 | + | let aq = Issue(aG, aC, 1, 0, false, unit, height) | |
256 | + | let ao = calculateAssetId(aq) | |
257 | + | let aH = (K(I(aG)) + 1) | |
258 | + | let aD = H(g, F) | |
259 | + | $Tuple2([IntegerEntry(G(g, F), height), IntegerEntry("cani_amount", (az + 1)), IntegerEntry("cani_last_price", (aA / 1500000)), StringEntry(ax, B), StringEntry(aD, toBase58String(ao)), StringEntry(toBase58String(ao), aD), IntegerEntry(I(aG), aH), IntegerEntry((("stats_" + at) + "_quantity"), (K((("stats_" + at) + "_quantity")) + 1)), aq, ScriptTransfer(value(addressFromString(g)), 1, ao)], toBase58String(ao)) | |
260 | + | } | |
261 | + | ||
262 | + | ||
263 | + | ||
264 | + | @Callable(an) | |
265 | + | func setDiscount (L) = if ((an.caller != this)) | |
266 | + | then throw("admin_only") | |
267 | + | else [IntegerEntry("discountCoefficient", L)] | |
268 | + | ||
269 | + | ||
270 | + | ||
271 | + | @Callable(an) | |
272 | + | func startHatching (aI) = { | |
273 | + | let aJ = w(an.payments[0]) | |
274 | + | if ((aJ == aJ)) | |
275 | + | then if ((C() > 0)) | |
276 | + | then throw("EGG operations are temporarily locked") | |
277 | + | 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())) | |
284 | + | then throw("TB: You can attach only WAVES") | |
285 | + | else if ((aM > aN.amount)) | |
286 | + | then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString(aM)) + " ") + toString(an.caller))) | |
287 | + | else { | |
288 | + | let aO = invoke(v(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, aM)]) | |
289 | + | if ((aO == aO)) | |
313 | 290 | then { | |
314 | - | let | |
315 | - | | |
316 | - | | |
317 | - | | |
291 | + | let aP = if ((size(an.payments) == 2)) | |
292 | + | then [ScriptTransfer(an.caller, (an.payments[1].amount - aM), r())] | |
293 | + | else nil | |
294 | + | ((aL ++ aP) ++ aJ) | |
318 | 295 | } | |
319 | - | else { | |
320 | - | let az = invoke(I(), "addFreePerch", [b, ax, 2], nil) | |
321 | - | if ((az == az)) | |
322 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_result1"), o(az)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_win1"), av)] | |
323 | - | else throw("Strict value is not equal to itself.") | |
324 | - | } | |
325 | - | if ((ay == ay)) | |
326 | - | then ay | |
327 | 296 | else throw("Strict value is not equal to itself.") | |
328 | 297 | } | |
329 | - | else if ((av == "jackpot")) | |
330 | - | then { | |
331 | - | let ay = invoke(G(), "issueJackpot", [b, Y, "WWWWHWTF"], nil) | |
332 | - | if ((ay == ay)) | |
333 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(ay))] | |
334 | - | else throw("Strict value is not equal to itself.") | |
335 | - | } | |
336 | - | else if ((av == "incubator")) | |
337 | - | then { | |
338 | - | let ay = if (!(ap)) | |
339 | - | then { | |
340 | - | let az = invoke(G(), "issueFree", [b, Y], nil) | |
341 | - | if ((az == az)) | |
342 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az))] | |
343 | - | else throw("Strict value is not equal to itself.") | |
344 | - | } | |
345 | - | else { | |
346 | - | let az = invoke(G(), "issueFree", [b, Y], nil) | |
347 | - | if ((az == az)) | |
348 | - | then { | |
349 | - | let aA = invoke(M(), "issueFreeTurtle", [b, Y], nil) | |
350 | - | if ((aA == aA)) | |
351 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_result1"), o(aA)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_win1"), "incubator")] | |
352 | - | else throw("Strict value is not equal to itself.") | |
353 | - | } | |
354 | - | else throw("Strict value is not equal to itself.") | |
355 | - | } | |
356 | - | if ((ay == ay)) | |
357 | - | then ay | |
358 | - | else throw("Strict value is not equal to itself.") | |
359 | - | } | |
360 | - | else if ((indexOf(av, "duckling") != unit)) | |
361 | - | then { | |
362 | - | let aB = parseIntValue(split(av, "_")[1]) | |
363 | - | let aC = if (ap) | |
364 | - | then (2 * aB) | |
365 | - | else aB | |
366 | - | let ay = invoke(N(), "issueFreeDuckling", [b, Y, aC], nil) | |
367 | - | if ((ay == ay)) | |
368 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(ay))] | |
369 | - | else throw("Strict value is not equal to itself.") | |
370 | - | } | |
371 | - | else if ((av == "trtl_incubator")) | |
372 | - | then { | |
373 | - | let ay = if (!(ap)) | |
374 | - | then { | |
375 | - | let az = invoke(M(), "issueFreeTurtle", [b, Y], nil) | |
376 | - | if ((az == az)) | |
377 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az))] | |
378 | - | else throw("Strict value is not equal to itself.") | |
379 | - | } | |
380 | - | else { | |
381 | - | let az = invoke(M(), "issueFreeTurtle", [b, Y], nil) | |
382 | - | if ((az == az)) | |
383 | - | then { | |
384 | - | let aA = invoke(G(), "issueFree", [b, Y], nil) | |
385 | - | if ((aA == aA)) | |
386 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_result1"), o(aA)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_win1"), "trtl_incubator")] | |
387 | - | else throw("Strict value is not equal to itself.") | |
388 | - | } | |
389 | - | else throw("Strict value is not equal to itself.") | |
390 | - | } | |
391 | - | if ((ay == ay)) | |
392 | - | then ay | |
393 | - | else throw("Strict value is not equal to itself.") | |
394 | - | } | |
395 | - | else if ((indexOf(av, "item") != unit)) | |
396 | - | then { | |
397 | - | let aD = split(av, "!")[1] | |
398 | - | let ay = if (!(ap)) | |
399 | - | then { | |
400 | - | let az = invoke(L(), "issueArtefactIndex", [aD, b, 0], nil) | |
401 | - | if ((az == az)) | |
402 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az))] | |
403 | - | else throw("Strict value is not equal to itself.") | |
404 | - | } | |
405 | - | else { | |
406 | - | let az = invoke(L(), "issueArtefactIndex", [aD, b, 0], nil) | |
407 | - | if ((az == az)) | |
408 | - | then { | |
409 | - | let aA = invoke(L(), "issueArtefactIndex", [aD, b, 1], nil) | |
410 | - | if ((aA == aA)) | |
411 | - | then [StringEntry((((("address_" + b) + "_initTx_") + an) + "_result"), o(az)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_result1"), o(aA)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_win1"), av)] | |
412 | - | else throw("Strict value is not equal to itself.") | |
413 | - | } | |
414 | - | else throw("Strict value is not equal to itself.") | |
415 | - | } | |
416 | - | if ((ay == ay)) | |
417 | - | then ay | |
418 | - | else throw("Strict value is not equal to itself.") | |
419 | - | } | |
420 | - | else throw(("RFB: Some error occured, please contact the admins! " + av)) | |
421 | - | if ((ak == ak)) | |
422 | - | then { | |
423 | - | let aE = if (aq) | |
424 | - | then al(fromBase58String(an), ar) | |
425 | - | else false | |
426 | - | let aF = if (aE) | |
427 | - | then { | |
428 | - | let S = fromBase58String(getStringValue((((("address_" + b) + "_initTx_") + an) + "_assetId"))) | |
429 | - | let aG = R(S) | |
430 | - | let aH = o(invoke(F(), "getGenFromName", [value(assetInfo(S)).name], nil)) | |
431 | - | if ((aH == aH)) | |
432 | - | then { | |
433 | - | let ay = invoke(aG, "increaseRarity", [toBase58String(S), aH], nil) | |
434 | - | if ((ay == ay)) | |
435 | - | then [ScriptTransfer(addressFromStringValue(b), 1, S)] | |
436 | - | else throw("Strict value is not equal to itself.") | |
437 | - | } | |
438 | - | else throw("Strict value is not equal to itself.") | |
439 | - | } | |
440 | - | else nil | |
441 | - | (((ak ++ [StringEntry((((("address_" + b) + "_initTx_") + an) + "_win"), av), StringEntry((((("address_" + b) + "_initTx_") + an) + "_status"), "finish"), IntegerEntry((((("address_" + b) + "_initTx_") + an) + "_random"), aw)]) ++ at) ++ aF) | |
442 | - | } | |
443 | - | else throw("Strict value is not equal to itself.") | |
444 | - | } | |
298 | + | } | |
445 | 299 | else throw("Strict value is not equal to itself.") | |
446 | 300 | } | |
447 | 301 | ||
448 | 302 | ||
449 | - | @Callable(aI) | |
450 | - | func configureOracle (aJ) = if ((aI.caller != this)) | |
451 | - | then throw("RCU: admin only") | |
452 | - | else [StringEntry("static_oracleAddress", aJ)] | |
453 | 303 | ||
454 | - | ||
455 | - | ||
456 | - | @Callable(aI) | |
457 | - | func initRebirth () = { | |
458 | - | let aK = aI.payments[0] | |
459 | - | let aL = aI.payments[1] | |
460 | - | let S = value(aK.assetId) | |
461 | - | let an = toBase58String(aI.transactionId) | |
462 | - | let b = toString(aI.caller) | |
463 | - | if ((aK.amount != 1)) | |
464 | - | then throw("NFT is not attached") | |
465 | - | else if (if ((aL.amount != P)) | |
466 | - | then true | |
467 | - | else (aL.assetId != unit)) | |
468 | - | then throw("Wavespayment is not attached or wrong!") | |
469 | - | else { | |
470 | - | let aM = (aL.amount / 4) | |
471 | - | let aN = (aL.amount - aM) | |
472 | - | let aO = invoke(I(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, aN)]) | |
473 | - | if ((aO == aO)) | |
474 | - | then { | |
475 | - | let aG = R(S) | |
476 | - | let aH = o(invoke(F(), "getGenFromName", [value(assetInfo(S)).name], nil)) | |
477 | - | if ((aH == aH)) | |
478 | - | then { | |
479 | - | let ay = invoke(aG, "reduceRarity", [toBase58String(S), aH], nil) | |
480 | - | if ((ay == ay)) | |
481 | - | then [IntegerEntry((((("address_" + b) + "_initTx_") + an) + "_finishBlock"), (height + Q)), StringEntry((((("address_" + b) + "_initTx_") + an) + "_status"), "open"), StringEntry((((("address_" + b) + "_initTx_") + an) + "_assetId"), toBase58String(S)), ScriptTransfer(E(), aM, unit)] | |
482 | - | else throw("Strict value is not equal to itself.") | |
483 | - | } | |
484 | - | else throw("Strict value is not equal to itself.") | |
304 | + | @Callable(an) | |
305 | + | func finishHatching (av) = { | |
306 | + | let aJ = w(an.payments[0]) | |
307 | + | if ((aJ == aJ)) | |
308 | + | then { | |
309 | + | let F = fromBase58String(av) | |
310 | + | let ax = E(toString(an.caller), F) | |
311 | + | let ay = G(toString(an.caller), F) | |
312 | + | let aQ = H(toString(an.caller), F) | |
313 | + | let aR = getStringValue(this, ax) | |
314 | + | let P = getIntegerValue(this, ay) | |
315 | + | if ((aR == B)) | |
316 | + | then { | |
317 | + | let aS = getStringValue(this, H(toString(an.caller), F)) | |
318 | + | throw(("The Cani was hatched and claimed already, here is the folowing: " + aS)) | |
319 | + | } | |
320 | + | else if ((P > height)) | |
321 | + | then throw((((("Hatching is not finished yet " + toString((P - height))) + " blocks remaining, it will take around ") + toString((P - height))) + " minutes")) | |
322 | + | else { | |
323 | + | let aT = X(F, P, false) | |
324 | + | let aG = aT._1 | |
325 | + | let at = aT._2 | |
326 | + | let aC = (("{\"genotype\": \"" + aG) + "\", \"crossbreeding\": true}") | |
327 | + | let aq = Issue(aG, aC, 1, 0, false, unit, P) | |
328 | + | let ao = calculateAssetId(aq) | |
329 | + | let aH = (K(I(aG)) + 1) | |
330 | + | ([StringEntry(ax, B), StringEntry(aQ, toBase58String(ao)), StringEntry(toBase58String(ao), aQ), IntegerEntry(I(aG), aH), IntegerEntry((("stats_" + at) + "_quantity"), (K((("stats_" + at) + "_quantity")) + 1)), aq, ScriptTransfer(an.caller, 1, ao)] ++ aJ) | |
485 | 331 | } | |
486 | - | | |
487 | - | | |
332 | + | } | |
333 | + | else throw("Strict value is not equal to itself.") | |
488 | 334 | } | |
489 | 335 | ||
490 | 336 | ||
491 | - | ||
492 | - | @Callable(aI) | |
493 | - | func finishRebirth (an) = am(an, toString(aI.caller), aI.payments[0], false, "", false) | |
494 | - | ||
495 | - | ||
496 | - | ||
497 | - | @Callable(aI) | |
498 | - | func finishRebirthDouble (an) = if (!(if ((size(aI.payments) == 2)) | |
499 | - | then (aI.payments[0].amount == 1) | |
500 | - | else false)) | |
501 | - | then throw("Invalid payment") | |
337 | + | @Verifier(aU) | |
338 | + | func aV () = if (e()) | |
339 | + | then sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey) | |
502 | 340 | else { | |
503 | - | let S = value(aI.payments[0].assetId) | |
504 | - | let aP = o(invoke(L(), "checkArtefactDetails", [toBase58String(S)], nil)) | |
505 | - | if ((aP == aP)) | |
506 | - | then if ((aP == "ART-GIFT_DOUBL")) | |
507 | - | then ([Burn(S, 1)] ++ am(an, toString(aI.caller), aI.payments[1], true, "", false)) | |
508 | - | else throw("Error! Wrong item attached to double rewards!") | |
509 | - | else throw("Strict value is not equal to itself.") | |
341 | + | let aW = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4' | |
342 | + | let aX = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8' | |
343 | + | let aY = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3' | |
344 | + | let aZ = if (sigVerify(aU.bodyBytes, aU.proofs[0], aW)) | |
345 | + | then 1 | |
346 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[1], aW)) | |
347 | + | then 1 | |
348 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[2], aW)) | |
349 | + | then 1 | |
350 | + | else 0 | |
351 | + | let ba = if (sigVerify(aU.bodyBytes, aU.proofs[0], aX)) | |
352 | + | then 1 | |
353 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[1], aX)) | |
354 | + | then 1 | |
355 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[2], aX)) | |
356 | + | then 1 | |
357 | + | else 0 | |
358 | + | let bb = if (sigVerify(aU.bodyBytes, aU.proofs[0], aY)) | |
359 | + | then 1 | |
360 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[1], aY)) | |
361 | + | then 1 | |
362 | + | else if (sigVerify(aU.bodyBytes, aU.proofs[2], aY)) | |
363 | + | then 1 | |
364 | + | else 0 | |
365 | + | let bc = ((aZ + ba) + bb) | |
366 | + | let c = aU | |
367 | + | (bc >= 2) | |
510 | 368 | } | |
511 | - | ||
512 | - | ||
513 | - | ||
514 | - | @Callable(aI) | |
515 | - | func finishRebirthItem (an,aQ) = if (if ((size(aI.payments) == 2)) | |
516 | - | then (aI.payments[0].amount == 1) | |
517 | - | else false) | |
518 | - | then { | |
519 | - | let S = value(aI.payments[0].assetId) | |
520 | - | let aP = o(invoke(L(), "checkArtefactDetails", [toBase58String(S)], nil)) | |
521 | - | if ((aP == aP)) | |
522 | - | then if ((aP == "ART-HWERASE")) | |
523 | - | then ([Burn(S, 1)] ++ am(an, toString(aI.caller), aI.payments[1], false, aQ, false)) | |
524 | - | else if ((aP == "ART-HWRESCUE")) | |
525 | - | then ([Burn(S, 1)] ++ am(an, toString(aI.caller), aI.payments[1], false, "", true)) | |
526 | - | else if ((aP == "ART-GIFT_DOUBL")) | |
527 | - | then ([Burn(S, 1)] ++ am(an, toString(aI.caller), aI.payments[1], true, "", false)) | |
528 | - | else throw("Error! Wrong item attached ") | |
529 | - | else throw("Strict value is not equal to itself.") | |
530 | - | } | |
531 | - | else if ((size(aI.payments) == 1)) | |
532 | - | then am(an, toString(aI.caller), aI.payments[0], false, "", false) | |
533 | - | else throw("Invalid payments") | |
534 | - | ||
535 | 369 |
github/deemru/w8io/026f985 66.23 ms ◑