tx · 9rmjNpv6uaeLHdJ6kqY4SL8bgXh2DN7hC7xuV3BjP3MQ

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.01000000 Waves

2022.04.05 12:48 [3060382] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "9rmjNpv6uaeLHdJ6kqY4SL8bgXh2DN7hC7xuV3BjP3MQ", "fee": 1000000, "feeAssetId": null, "timestamp": 1649152170610, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "5AHz915xMKYQYHa2751jY6Jxyt8g3M6YVnkY5dGHZXtF7miCdnp5UtiKwqbNW9yU1sYuD9iuXi8WyrRjMXp8srJj" ], "script": "base64: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AAEsAAAAAgIAAAAHYXNzZXRzXwUAAAADZ2VuAwkAAAAAAAACBQAAAAFzAgAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzAgAAAAEsAQAAAAxjYWxjSW50ZXJlc3QAAAADAAAAEHByZXZpb3VzSW50ZXJlc3QAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAAAABF0b3RhbEZhcm1pbmdQb3dlcgkAAGQAAAACBQAAABBwcmV2aW91c0ludGVyZXN0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAVzY2FsZQkBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAAAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAQcHJldmlvdXNJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQAAAARdG90YWxGYXJtaW5nUG93ZXIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQEAAAAMY2FsY0ludGVyZXN0AAAAAwUAAAAQcHJldmlvdXNJbnRlcmVzdAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIDCQEAAAACIT0AAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEXRvdGFsX3N0YXJ0SGVpZ2h0AAAAAAAAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQAAAgAAAAECAAAAHGZhcm1pbmcgaXMgbm90IGxhdW5jaGVkLCB5ZXQBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAAaAAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAEAAAAUYWRkQXNzZXRJZFRvR2VuRW50cnkAAAACAAAAB2Fzc2V0SWQAAAAIYXNzZXRHZW4EAAAADGN1cnJlbnRWYWx1ZQkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdhc3NldHNfBQAAAAhhc3NldEdlbgIAAAAHX2xvY2tlZAMJAAAAAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAAFAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAASwFAAAAB2Fzc2V0SWQBAAAADmdldFN0YWtlUmVzdWx0AAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADV9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAUAAAADbmlsAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABQAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAALcmV3YXJkRGVsdGEAAAAPd2l0aGRyYXduQW1vdW50AAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAA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bGFpbSB5b3VyIGZhcm1pbmcgcmV3YXJkcyB0aWxsIHRoZSBlbmQgb2YgRHVja1NxdWlkIGdhbWUuIFF1YWNrIGluIHBlYWNlIQMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAFY29sb3IJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAALX3BlcmNoQ29sb3IEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQEAAAAdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAQAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwUAAAAHYWRkcmVzcwUAAAAFYXNzZXQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAxmYXJtZWRBbW91bnQJAABkAAAAAgUAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAQAAAAPd2l0aGRyYXduQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50BAAAAAZyZXdhcmQJAABpAAAAAgkAAGUAAAACBQAAAAxmYXJtZWRBbW91bnQFAAAAD3dpdGhkcmF3bkFtb3VudAkAAGgAAAACBQAAAAVzY2FsZQAAAAAAAAAAZAMJAQAAAAIhPQAAAAIJAQAAAAl0YWtlUmlnaHQAAAACCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABG5hbWUAAAAAAAAAAAECAAAAAVUJAAACAAAAAQIAAAAMamFja3BvdCBvbmx5AwkAAGYAAAACBQAAABFhc3NldEZhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAGcmVzdWx0CQEAAAAQZ2V0VW5zdGFrZVJlc3VsdAAAAAUFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQFAAAAEGFzc2V0UmV3YXJkRGVsdGEFAAAABnJld2FyZAUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAAUUAAAAAgkABE4AAAACBQAAAAZyZXN1bHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JACQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JACQAAAgAAAAECAAAAAAAAAAFpAQAAAAtjbGFpbVJld2FyZAAAAAEAAAAFYXNzZXQDCQEAAAARaXNVc2VyQmxhY2tsaXN0ZWQAAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAANNPb29wcywgbG9va3MgbGlrZSB5b3UgbG9zdCBpbiBvbmUgb2YgdGhlIER1Y2tzcXVpZCBnYW1lcyEgQXMgeW91IGFscmVhZHkga25vdywgYW55IGxvc3MgaGFzIGl0cyBjb25zZXF1ZW5jZXMsIHNvIHlvdSB3aWxsIGJlIG5vdCBhYmxlIHRvIGNsYWltIHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIFAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAQAAAAGcmV3YXJkCQAAaQAAAAIJAABlAAAAAgUAAAAMZmFybWVkQW1vdW50BQAAAA93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAFc2NhbGUAAAAAAAAAAGQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABnJld2FyZAkAAAIAAAABAgAAABx5b3UgaGF2ZSBubyBFR0dzIHRvIHdpdGhkcmF3CQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAGcmV3YXJkBQAAAAZzY2FsZTIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAB2FkZHJlc3MJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JACQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAFAAAAA25pbAkAAGgAAAACBQAAAAZyZXdhcmQAAAAAAAAPQkAAAAAA4zCSEQ==", "height": 3060382, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Aemww9ndw22A7HsoYzoPSAQX8iggaeAhcgs2s2aEomdy Next: 8yYNfVWc2hKBEMWLd7DU7wBRFy2U6D2jAq15bYS1c8Ge Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+let a = (100 * 1000000)
55
6-let b = (100 * 1000000)
6+let b = 10000
77
8-let c = 10000
8+let c = 1000000
99
10-let d = 1000000
11-
12-let e = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
13-
14-let f = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
15-
16-let g = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD'
17-
18-let h = base58'3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX'
19-
20-let i = 5
21-
22-let j = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
23-
24-func k () = 684
10+func d (e,f) = {
11+ let g = getString(e, f)
12+ if ($isInstanceOf(g, "String"))
13+ then {
14+ let h = g
15+ h
16+ }
17+ else ""
18+ }
2519
2620
27-func l () = {
28- let m = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
29- let n = getInteger(m, "egglock")
30- if ($isInstanceOf(n, "Int"))
21+func i (f) = d(this, f)
22+
23+
24+func j () = Address(fromBase58String(i("static_oracleAddress")))
25+
26+
27+func k () = fromBase58String(d(j(), "static_eggAssetId"))
28+
29+
30+func l () = Address(fromBase58String(d(j(), "static_incubatorAddress")))
31+
32+
33+func m () = Address(fromBase58String(d(j(), "static_rebirthAddress")))
34+
35+
36+func n () = Address(fromBase58String(d(j(), "static_swopPromoAddress")))
37+
38+
39+func o () = Address(fromBase58String(d(j(), "static_breederAddress")))
40+
41+
42+func p () = Address(fromBase58String(d(j(), "static_refContractAddress")))
43+
44+
45+func q () = Address(fromBase58String(d(j(), "static_itemsAddress")))
46+
47+
48+let r = 5
49+
50+func s () = 684
51+
52+
53+func t () = {
54+ let u = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
55+ let g = getInteger(u, "egglock")
56+ if ($isInstanceOf(g, "Int"))
3157 then {
32- let o = n
33- o
58+ let v = g
59+ v
3460 }
3561 else 0
3662 }
3763
3864
39-func p (q) = {
40- let n = getInteger(this, q)
41- if ($isInstanceOf(n, "Int"))
65+func w (f) = {
66+ let g = getInteger(this, f)
67+ if ($isInstanceOf(g, "Int"))
4268 then {
43- let o = n
44- o
69+ let v = g
70+ v
4571 }
4672 else 0
4773 }
4874
4975
50-func r (s,q) = {
51- let n = getString(s, q)
52- if ($isInstanceOf(n, "String"))
53- then {
54- let t = n
55- t
56- }
57- else ""
58- }
76+func x (e) = false
5977
6078
61-func u (q) = r(this, q)
79+func y (z) = if ((z == "G"))
80+ then l()
81+ else o()
6282
6383
64-func v () = fromBase58String(u("static_itemsAddress"))
65-
66-
67-func w (s) = false
68-
69-
70-func x (y) = if ((y == "G"))
71- then e
72- else f
73-
74-
75-func z (A,y) = {
76- let B = valueOrErrorMessage(getInteger(Address(x(y)), (("stats_" + A) + "_quantity")), (("stats_" + A) + "_quantity"))
77- let C = pow((10000 / B), 4, 5, 1, 2, FLOOR)
78- if ((C > 0))
79- then C
84+func A (B,z) = {
85+ let C = valueOrErrorMessage(getInteger(y(z), (("stats_" + B) + "_quantity")), (("stats_" + B) + "_quantity not found"))
86+ let D = pow((10000 / C), 4, 5, 1, 2, FLOOR)
87+ if ((D > 0))
88+ then D
8089 else 2
8190 }
8291
8392
84-func D (E) = {
85- let n = E
86- if ($isInstanceOf(n, "String"))
93+func E (F) = {
94+ let g = F
95+ if ($isInstanceOf(g, "String"))
8796 then {
88- let F = n
89- F
97+ let G = g
98+ G
9099 }
91100 else throw("wrong type, expected: String")
92101 }
93102
94103
95-func G (H) = if (if ((value(assetInfo(H)).issuer == Address(f)))
104+func H (I,e) = if (if ((value(assetInfo(I)).issuer == o()))
96105 then true
97- else (value(assetInfo(H)).issuer == Address(e)))
106+ else (value(assetInfo(I)).issuer == l()))
98107 then {
99- let I = value(assetInfo(H)).name
100- let y = take(takeRight(I, 2), 1)
101- let J = D(invoke(Address(f), "getGenFromName", [I], nil))
102- if ((J == J))
103- then $Tuple2(J, z(take(J, 8), y))
108+ let J = value(assetInfo(I)).name
109+ let z = take(takeRight(J, 2), 1)
110+ let K = E(invoke(o(), "getGenFromName", [J], nil))
111+ if ((K == K))
112+ then {
113+ let L = E(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(I), e], nil))
114+ if ((L == L))
115+ then {
116+ let M = A(K, z)
117+ $Tuple2(K, M)
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
104121 else throw("Strict value is not equal to itself.")
105122 }
106123 else throw("not valid NFT")
107124
108125
109-func K (s,H) = p((((("address_" + s) + "_asset_") + H) + "_farmingPower"))
126+func N (e,I) = w((((("address_" + e) + "_asset_") + I) + "_farmingPower"))
110127
111128
112-func L (M) = {
113- let N = u(("assets_" + M))
114- if ((N == ""))
129+func O (P) = {
130+ let Q = i(("assets_" + P))
131+ if ((Q == ""))
115132 then nil
116- else split(N, ",")
133+ else split(Q, ",")
117134 }
118135
119136
120-func O (P,Q,R) = (P + (((c * k()) * (height - Q)) / R))
137+func R (S,T,M) = (S + (((b * s()) * (height - T)) / M))
121138
122139
123-func S () = if ((p("total_farmingPower") > 0))
140+func U () = if ((w("total_farmingPower") > 0))
124141 then {
125- let P = p("total_lastCheckInterest")
126- let Q = p("total_lastCheckInterestHeight")
127- let R = p("total_farmingPower")
128- O(P, Q, R)
142+ let S = w("total_lastCheckInterest")
143+ let T = w("total_lastCheckInterestHeight")
144+ let M = w("total_farmingPower")
145+ R(S, T, M)
129146 }
130- else if ((p("total_startHeight") != 0))
131- then p("total_lastCheckInterest")
147+ else if ((w("total_startHeight") != 0))
148+ then w("total_lastCheckInterest")
132149 else throw("farming is not launched, yet")
133150
134151
135-func T (s,H,U) = {
136- let V = p((((("address_" + s) + "_asset_") + H) + "_lastCheckInterest"))
137- let W = S()
138- (U * (W - V))
152+func V (e,I,W) = {
153+ let X = w((((("address_" + e) + "_asset_") + I) + "_lastCheckInterest"))
154+ let Y = U()
155+ (W * (Y - X))
139156 }
140157
141158
142-func X (H,Y) = {
143- let Z = u((("assets_" + Y) + "_locked"))
144- if ((Z == ""))
145- then H
146- else ((Z + ",") + H)
159+func Z (I,aa) = {
160+ let ab = i((("assets_" + aa) + "_locked"))
161+ if ((ab == ""))
162+ then I
163+ else ((ab + ",") + I)
147164 }
148165
149166
150-func aa (s,H,U) = {
151- let ab = toBase58String(H)
152-[IntegerEntry("total_farmingPower", (p("total_farmingPower") + U)), IntegerEntry("total_lastCheckInterest", S()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_farmingPower"), U), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckInterest"), S())]
167+func ac (e,I,W) = {
168+ let ad = toBase58String(I)
169+[IntegerEntry("total_farmingPower", (w("total_farmingPower") + W)), IntegerEntry("total_lastCheckInterest", U()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_farmingPower"), W), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckInterest"), U())]
153170 }
154171
155172
156-func ac (s,H,ad,ae,U) = {
157- let ab = toBase58String(H)
158-[IntegerEntry("total_farmingPower", (p("total_farmingPower") - U)), IntegerEntry("total_lastCheckInterest", S()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_farmingPower"), 0), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckInterest"), S()), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount")) + (ae * d))), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")) + ad))]
173+func ae (e,I,af,ag,W) = {
174+ let ad = toBase58String(I)
175+[IntegerEntry("total_farmingPower", (w("total_farmingPower") - W)), IntegerEntry("total_lastCheckInterest", U()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckInterest"), U()), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount")) + (ag * c))), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")) + af))]
159176 }
160177
161178
162-func af (s) = {
163- let ag = r(Address(v()), (("ART-XMISTL_" + s) + "_owner"))
164- if ((ag == ""))
165- then b
166- else ((b / 10) * 9)
179+func ah (e) = {
180+ let ai = d(q(), (("ART-XMISTL_" + e) + "_owner"))
181+ if ((ai == ""))
182+ then a
183+ else ((a / 10) * 9)
167184 }
168185
169186
170-@Callable(ah)
171-func init () = if ((ah.caller != this))
187+@Callable(aj)
188+func configureOracle (ak) = if ((aj.caller != this))
189+ then throw("admin only")
190+ else [StringEntry("static_oracleAddress", ak)]
191+
192+
193+
194+@Callable(aj)
195+func init () = if ((aj.caller != this))
172196 then throw("admin only")
173197 else [IntegerEntry("total_startHeight", height)]
174198
175199
176200
177-@Callable(ah)
178-func buyPerch (ai,aj) = if ((l() > 0))
201+@Callable(aj)
202+func buyPerch (al,am) = if ((t() > 0))
179203 then throw("EGG operations are temporarily locked")
180- else if ((0 > value(indexOf(["B", "R", "G", "Y"], ai))))
204+ else if ((0 > value(indexOf(["B", "R", "G", "Y"], al))))
181205 then throw("you need to set color properly")
182206 else {
183- let ak = value(ah.payments[0])
184- let al = af(toString(ah.caller))
185- if ((ak.assetId != a))
186- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
187- else if ((ak.amount != al))
188- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(al)))
207+ let an = value(aj.payments[0])
208+ let ao = ah(toString(aj.caller))
209+ if ((an.assetId != k()))
210+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
211+ else if ((an.amount != ao))
212+ then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(ao)))
189213 else {
190- let am = fraction(ak.amount, i, 100)
191- let an = invoke(Address(h), "refPayment", [aj], [AttachedPayment(a, am)])
192- if ((an == an))
214+ let ap = fraction(an.amount, r, 100)
215+ let aq = invoke(p(), "refPayment", [am], [AttachedPayment(k(), ap)])
216+ if ((aq == aq))
193217 then {
194- let ao = ((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)
195- let ap = p(ao)
196-[IntegerEntry(ao, (ap + 1))]
218+ let ar = ((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)
219+ let as = w(ar)
220+[IntegerEntry(ar, (as + 1))]
197221 }
198222 else throw("Strict value is not equal to itself.")
199223 }
201225
202226
203227
204-@Callable(ah)
205-func addFreePerch (s,ai) = if ((0 > value(indexOf(["B", "R", "G", "Y"], ai))))
228+@Callable(aj)
229+func addFreePerch (e,al) = if ((0 > value(indexOf(["B", "R", "G", "Y"], al))))
206230 then throw("you need to set color properly")
207- else if (if (if ((ah.caller != Address(j)))
208- then (ah.caller != this)
231+ else if (if (if ((aj.caller != m()))
232+ then (aj.caller != this)
209233 else false)
210- then (ah.caller != Address(g))
234+ then (aj.caller != n())
211235 else false)
212236 then throw("rebirth and swop promo only")
213237 else {
214- let ao = ((("address_" + s) + "_perchesAvailable_") + ai)
215- let ap = p(ao)
216- $Tuple2([IntegerEntry(ao, (ap + 1))], "")
238+ let ar = ((("address_" + e) + "_perchesAvailable_") + al)
239+ let as = w(ar)
240+ $Tuple2([IntegerEntry(ar, (as + 1))], "")
217241 }
218242
219243
220244
221-@Callable(ah)
222-func stakeNFT () = if ((l() > 0))
245+@Callable(aj)
246+func stakeNFT () = if ((t() > 0))
223247 then throw("EGG operations are temporarily locked")
224248 else {
225- let aq = value(ah.payments[0])
226- let H = value(value(ah.payments[0]).assetId)
227- let s = toString(ah.caller)
228- let ai = takeRight(value(assetInfo(H)).name, 1)
229- let ar = p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai))
230- if ((aq.amount != 1))
249+ let at = value(aj.payments[0])
250+ let I = value(value(aj.payments[0]).assetId)
251+ let e = toString(aj.caller)
252+ let al = takeRight(value(assetInfo(I)).name, 1)
253+ let au = w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al))
254+ if ((at.amount != 1))
231255 then throw("NFT is not attached")
232- else if ((0 >= ar))
233- then throw(("no perches available for the color " + ai))
256+ else if ((0 >= au))
257+ then throw(("no perches available for the color " + al))
234258 else {
235- let as = G(H)
236- let Y = as._1
237- let U = as._2
238- let at = T(s, toBase58String(H), U)
239- (aa(s, H, U) ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (ar - 1))])
259+ let av = H(I, e)
260+ let aa = av._1
261+ let W = av._2
262+ let aw = V(e, toBase58String(I), W)
263+ (ac(e, I, W) ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (au - 1))])
240264 }
241265 }
242266
243267
244268
245-@Callable(ah)
246-func unstakeNFT (ab) = if (w(toString(ah.caller)))
269+@Callable(aj)
270+func unstakeNFT (ad) = if (x(toString(aj.caller)))
247271 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
248- else if ((l() > 0))
272+ else if ((t() > 0))
249273 then throw("EGG operations are temporarily locked")
250274 else {
251- let H = fromBase58String(ab)
252- let s = toString(ah.caller)
253- let U = K(s, ab)
254- let at = T(s, ab, U)
255- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
256- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
257- let av = ((au - ae) / (c * 100))
258- let ai = takeRight(value(assetInfo(H)).name, 1)
259- if ((0 >= U))
275+ let I = fromBase58String(ad)
276+ let e = toString(aj.caller)
277+ let W = N(e, ad)
278+ let aw = V(e, ad, W)
279+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
280+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
281+ let ay = ((ax - ag) / (b * 100))
282+ let al = takeRight(value(assetInfo(I)).name, 1)
283+ if ((0 >= W))
260284 then throw("asset not available")
261- else if ((ai == "U"))
285+ else if ((al == "U"))
262286 then throw("use another function to unstake Jackpot NFT")
263287 else {
264- let aw = ac(s, H, at, av, U)
265- $Tuple2((aw ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)) + 1)), ScriptTransfer(ah.caller, (av * 1000000), a), ScriptTransfer(ah.caller, 1, H)]), (av * 1000000))
288+ let az = ae(e, I, aw, ay, W)
289+ $Tuple2((az ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)) + 1)), ScriptTransfer(aj.caller, (ay * 1000000), k()), ScriptTransfer(aj.caller, 1, I)]), (ay * 1000000))
266290 }
267291 }
268292
269293
270294
271-@Callable(ah)
272-func stakeJackpot (ai) = if ((l() > 0))
295+@Callable(aj)
296+func stakeJackpot (al) = if ((t() > 0))
273297 then throw("EGG operations are temporarily locked")
274298 else {
275- let aq = value(ah.payments[0])
276- let H = value(aq.assetId)
277- let s = toString(ah.caller)
278- let ar = p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai))
279- let ax = value(assetInfo(H)).issuer.bytes
280- if ((aq.amount != 1))
299+ let at = value(aj.payments[0])
300+ let I = value(at.assetId)
301+ let e = toString(aj.caller)
302+ let au = w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al))
303+ let aA = value(assetInfo(I)).issuer
304+ if ((at.amount != 1))
281305 then throw("NFT is not attached")
282- else if (if ((ax == e))
306+ else if (if ((aA == l()))
283307 then true
284- else (ax == f))
285- then if ((takeRight(value(value(assetInfo(H)).name), 1) != "U"))
308+ else (aA == o()))
309+ then if ((takeRight(value(value(assetInfo(I)).name), 1) != "U"))
286310 then throw("jackpot only")
287- else if ((0 >= ar))
288- then throw(("no perches available for the color " + ai))
289- else (aa(s, H, 100) ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (ar - 1)), StringEntry((((("address_" + toString(ah.caller)) + "_asset_") + toBase58String(H)) + "_perchColor"), ai)])
311+ else if ((0 >= au))
312+ then throw(("no perches available for the color " + al))
313+ else (ac(e, I, 100) ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (au - 1)), StringEntry((((("address_" + toString(aj.caller)) + "_asset_") + toBase58String(I)) + "_perchColor"), al)])
290314 else throw("asset is not valid")
291315 }
292316
293317
294318
295-@Callable(ah)
296-func unstakeJackpot (ab) = if (w(toString(ah.caller)))
319+@Callable(aj)
320+func unstakeJackpot (ad) = if (x(toString(aj.caller)))
297321 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
298- else if ((l() > 0))
322+ else if ((t() > 0))
299323 then throw("EGG operations are temporarily locked")
300324 else {
301- let H = fromBase58String(ab)
302- let s = toString(ah.caller)
303- let ai = u((((("address_" + s) + "_asset_") + ab) + "_perchColor"))
304- let U = K(s, ab)
305- let at = T(s, ab, U)
306- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
307- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
308- let av = ((au - ae) / (c * 100))
309- if ((takeRight(value(value(assetInfo(H)).name), 1) != "U"))
325+ let I = fromBase58String(ad)
326+ let e = toString(aj.caller)
327+ let al = i((((("address_" + e) + "_asset_") + ad) + "_perchColor"))
328+ let W = N(e, ad)
329+ let aw = V(e, ad, W)
330+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
331+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
332+ let ay = ((ax - ag) / (b * 100))
333+ if ((takeRight(value(value(assetInfo(I)).name), 1) != "U"))
310334 then throw("jackpot only")
311- else if ((U > 0))
335+ else if ((W > 0))
312336 then {
313- let aw = ac(s, H, at, av, U)
314- $Tuple2((aw ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)) + 1)), ScriptTransfer(ah.caller, (av * 1000000), a), ScriptTransfer(ah.caller, 1, H)]), (av * 1000000))
337+ let az = ae(e, I, aw, ay, W)
338+ $Tuple2((az ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)) + 1)), ScriptTransfer(aj.caller, (ay * 1000000), k()), ScriptTransfer(aj.caller, 1, I)]), (ay * 1000000))
315339 }
316340 else throw("")
317341 }
318342
319343
320344
321-@Callable(ah)
322-func claimReward (ab) = if (w(toString(ah.caller)))
345+@Callable(aj)
346+func claimReward (ad) = if (x(toString(aj.caller)))
323347 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
324- else if ((l() > 0))
348+ else if ((t() > 0))
325349 then throw("EGG operations are temporarily locked")
326350 else {
327- let s = toString(ah.caller)
328- let H = fromBase58String(ab)
329- let U = K(s, ab)
330- let at = T(s, ab, U)
331- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
332- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
333- let av = ((au - ae) / (c * 100))
334- if ((0 >= av))
351+ let e = toString(aj.caller)
352+ let I = fromBase58String(ad)
353+ let W = N(e, ad)
354+ let aw = V(e, ad, W)
355+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
356+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
357+ let ay = ((ax - ag) / (b * 100))
358+ if ((0 >= ay))
335359 then throw("you have no EGGs to withdraw")
336- else $Tuple2([IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount")) + (av * d))), ScriptTransfer(Address(fromBase58String(s)), (av * 1000000), a)], (av * 1000000))
360+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount")) + (ay * c))), ScriptTransfer(Address(fromBase58String(e)), (ay * 1000000), k())], (ay * 1000000))
337361 }
338362
339363
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+let a = (100 * 1000000)
55
6-let b = (100 * 1000000)
6+let b = 10000
77
8-let c = 10000
8+let c = 1000000
99
10-let d = 1000000
11-
12-let e = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
13-
14-let f = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
15-
16-let g = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD'
17-
18-let h = base58'3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX'
19-
20-let i = 5
21-
22-let j = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
23-
24-func k () = 684
10+func d (e,f) = {
11+ let g = getString(e, f)
12+ if ($isInstanceOf(g, "String"))
13+ then {
14+ let h = g
15+ h
16+ }
17+ else ""
18+ }
2519
2620
27-func l () = {
28- let m = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
29- let n = getInteger(m, "egglock")
30- if ($isInstanceOf(n, "Int"))
21+func i (f) = d(this, f)
22+
23+
24+func j () = Address(fromBase58String(i("static_oracleAddress")))
25+
26+
27+func k () = fromBase58String(d(j(), "static_eggAssetId"))
28+
29+
30+func l () = Address(fromBase58String(d(j(), "static_incubatorAddress")))
31+
32+
33+func m () = Address(fromBase58String(d(j(), "static_rebirthAddress")))
34+
35+
36+func n () = Address(fromBase58String(d(j(), "static_swopPromoAddress")))
37+
38+
39+func o () = Address(fromBase58String(d(j(), "static_breederAddress")))
40+
41+
42+func p () = Address(fromBase58String(d(j(), "static_refContractAddress")))
43+
44+
45+func q () = Address(fromBase58String(d(j(), "static_itemsAddress")))
46+
47+
48+let r = 5
49+
50+func s () = 684
51+
52+
53+func t () = {
54+ let u = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
55+ let g = getInteger(u, "egglock")
56+ if ($isInstanceOf(g, "Int"))
3157 then {
32- let o = n
33- o
58+ let v = g
59+ v
3460 }
3561 else 0
3662 }
3763
3864
39-func p (q) = {
40- let n = getInteger(this, q)
41- if ($isInstanceOf(n, "Int"))
65+func w (f) = {
66+ let g = getInteger(this, f)
67+ if ($isInstanceOf(g, "Int"))
4268 then {
43- let o = n
44- o
69+ let v = g
70+ v
4571 }
4672 else 0
4773 }
4874
4975
50-func r (s,q) = {
51- let n = getString(s, q)
52- if ($isInstanceOf(n, "String"))
53- then {
54- let t = n
55- t
56- }
57- else ""
58- }
76+func x (e) = false
5977
6078
61-func u (q) = r(this, q)
79+func y (z) = if ((z == "G"))
80+ then l()
81+ else o()
6282
6383
64-func v () = fromBase58String(u("static_itemsAddress"))
65-
66-
67-func w (s) = false
68-
69-
70-func x (y) = if ((y == "G"))
71- then e
72- else f
73-
74-
75-func z (A,y) = {
76- let B = valueOrErrorMessage(getInteger(Address(x(y)), (("stats_" + A) + "_quantity")), (("stats_" + A) + "_quantity"))
77- let C = pow((10000 / B), 4, 5, 1, 2, FLOOR)
78- if ((C > 0))
79- then C
84+func A (B,z) = {
85+ let C = valueOrErrorMessage(getInteger(y(z), (("stats_" + B) + "_quantity")), (("stats_" + B) + "_quantity not found"))
86+ let D = pow((10000 / C), 4, 5, 1, 2, FLOOR)
87+ if ((D > 0))
88+ then D
8089 else 2
8190 }
8291
8392
84-func D (E) = {
85- let n = E
86- if ($isInstanceOf(n, "String"))
93+func E (F) = {
94+ let g = F
95+ if ($isInstanceOf(g, "String"))
8796 then {
88- let F = n
89- F
97+ let G = g
98+ G
9099 }
91100 else throw("wrong type, expected: String")
92101 }
93102
94103
95-func G (H) = if (if ((value(assetInfo(H)).issuer == Address(f)))
104+func H (I,e) = if (if ((value(assetInfo(I)).issuer == o()))
96105 then true
97- else (value(assetInfo(H)).issuer == Address(e)))
106+ else (value(assetInfo(I)).issuer == l()))
98107 then {
99- let I = value(assetInfo(H)).name
100- let y = take(takeRight(I, 2), 1)
101- let J = D(invoke(Address(f), "getGenFromName", [I], nil))
102- if ((J == J))
103- then $Tuple2(J, z(take(J, 8), y))
108+ let J = value(assetInfo(I)).name
109+ let z = take(takeRight(J, 2), 1)
110+ let K = E(invoke(o(), "getGenFromName", [J], nil))
111+ if ((K == K))
112+ then {
113+ let L = E(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(I), e], nil))
114+ if ((L == L))
115+ then {
116+ let M = A(K, z)
117+ $Tuple2(K, M)
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
104121 else throw("Strict value is not equal to itself.")
105122 }
106123 else throw("not valid NFT")
107124
108125
109-func K (s,H) = p((((("address_" + s) + "_asset_") + H) + "_farmingPower"))
126+func N (e,I) = w((((("address_" + e) + "_asset_") + I) + "_farmingPower"))
110127
111128
112-func L (M) = {
113- let N = u(("assets_" + M))
114- if ((N == ""))
129+func O (P) = {
130+ let Q = i(("assets_" + P))
131+ if ((Q == ""))
115132 then nil
116- else split(N, ",")
133+ else split(Q, ",")
117134 }
118135
119136
120-func O (P,Q,R) = (P + (((c * k()) * (height - Q)) / R))
137+func R (S,T,M) = (S + (((b * s()) * (height - T)) / M))
121138
122139
123-func S () = if ((p("total_farmingPower") > 0))
140+func U () = if ((w("total_farmingPower") > 0))
124141 then {
125- let P = p("total_lastCheckInterest")
126- let Q = p("total_lastCheckInterestHeight")
127- let R = p("total_farmingPower")
128- O(P, Q, R)
142+ let S = w("total_lastCheckInterest")
143+ let T = w("total_lastCheckInterestHeight")
144+ let M = w("total_farmingPower")
145+ R(S, T, M)
129146 }
130- else if ((p("total_startHeight") != 0))
131- then p("total_lastCheckInterest")
147+ else if ((w("total_startHeight") != 0))
148+ then w("total_lastCheckInterest")
132149 else throw("farming is not launched, yet")
133150
134151
135-func T (s,H,U) = {
136- let V = p((((("address_" + s) + "_asset_") + H) + "_lastCheckInterest"))
137- let W = S()
138- (U * (W - V))
152+func V (e,I,W) = {
153+ let X = w((((("address_" + e) + "_asset_") + I) + "_lastCheckInterest"))
154+ let Y = U()
155+ (W * (Y - X))
139156 }
140157
141158
142-func X (H,Y) = {
143- let Z = u((("assets_" + Y) + "_locked"))
144- if ((Z == ""))
145- then H
146- else ((Z + ",") + H)
159+func Z (I,aa) = {
160+ let ab = i((("assets_" + aa) + "_locked"))
161+ if ((ab == ""))
162+ then I
163+ else ((ab + ",") + I)
147164 }
148165
149166
150-func aa (s,H,U) = {
151- let ab = toBase58String(H)
152-[IntegerEntry("total_farmingPower", (p("total_farmingPower") + U)), IntegerEntry("total_lastCheckInterest", S()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_farmingPower"), U), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckInterest"), S())]
167+func ac (e,I,W) = {
168+ let ad = toBase58String(I)
169+[IntegerEntry("total_farmingPower", (w("total_farmingPower") + W)), IntegerEntry("total_lastCheckInterest", U()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_farmingPower"), W), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckInterest"), U())]
153170 }
154171
155172
156-func ac (s,H,ad,ae,U) = {
157- let ab = toBase58String(H)
158-[IntegerEntry("total_farmingPower", (p("total_farmingPower") - U)), IntegerEntry("total_lastCheckInterest", S()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_farmingPower"), 0), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckInterest"), S()), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount")) + (ae * d))), IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")) + ad))]
173+func ae (e,I,af,ag,W) = {
174+ let ad = toBase58String(I)
175+[IntegerEntry("total_farmingPower", (w("total_farmingPower") - W)), IntegerEntry("total_lastCheckInterest", U()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckInterest"), U()), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount")) + (ag * c))), IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")) + af))]
159176 }
160177
161178
162-func af (s) = {
163- let ag = r(Address(v()), (("ART-XMISTL_" + s) + "_owner"))
164- if ((ag == ""))
165- then b
166- else ((b / 10) * 9)
179+func ah (e) = {
180+ let ai = d(q(), (("ART-XMISTL_" + e) + "_owner"))
181+ if ((ai == ""))
182+ then a
183+ else ((a / 10) * 9)
167184 }
168185
169186
170-@Callable(ah)
171-func init () = if ((ah.caller != this))
187+@Callable(aj)
188+func configureOracle (ak) = if ((aj.caller != this))
189+ then throw("admin only")
190+ else [StringEntry("static_oracleAddress", ak)]
191+
192+
193+
194+@Callable(aj)
195+func init () = if ((aj.caller != this))
172196 then throw("admin only")
173197 else [IntegerEntry("total_startHeight", height)]
174198
175199
176200
177-@Callable(ah)
178-func buyPerch (ai,aj) = if ((l() > 0))
201+@Callable(aj)
202+func buyPerch (al,am) = if ((t() > 0))
179203 then throw("EGG operations are temporarily locked")
180- else if ((0 > value(indexOf(["B", "R", "G", "Y"], ai))))
204+ else if ((0 > value(indexOf(["B", "R", "G", "Y"], al))))
181205 then throw("you need to set color properly")
182206 else {
183- let ak = value(ah.payments[0])
184- let al = af(toString(ah.caller))
185- if ((ak.assetId != a))
186- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
187- else if ((ak.amount != al))
188- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(al)))
207+ let an = value(aj.payments[0])
208+ let ao = ah(toString(aj.caller))
209+ if ((an.assetId != k()))
210+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
211+ else if ((an.amount != ao))
212+ then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(ao)))
189213 else {
190- let am = fraction(ak.amount, i, 100)
191- let an = invoke(Address(h), "refPayment", [aj], [AttachedPayment(a, am)])
192- if ((an == an))
214+ let ap = fraction(an.amount, r, 100)
215+ let aq = invoke(p(), "refPayment", [am], [AttachedPayment(k(), ap)])
216+ if ((aq == aq))
193217 then {
194- let ao = ((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)
195- let ap = p(ao)
196-[IntegerEntry(ao, (ap + 1))]
218+ let ar = ((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)
219+ let as = w(ar)
220+[IntegerEntry(ar, (as + 1))]
197221 }
198222 else throw("Strict value is not equal to itself.")
199223 }
200224 }
201225
202226
203227
204-@Callable(ah)
205-func addFreePerch (s,ai) = if ((0 > value(indexOf(["B", "R", "G", "Y"], ai))))
228+@Callable(aj)
229+func addFreePerch (e,al) = if ((0 > value(indexOf(["B", "R", "G", "Y"], al))))
206230 then throw("you need to set color properly")
207- else if (if (if ((ah.caller != Address(j)))
208- then (ah.caller != this)
231+ else if (if (if ((aj.caller != m()))
232+ then (aj.caller != this)
209233 else false)
210- then (ah.caller != Address(g))
234+ then (aj.caller != n())
211235 else false)
212236 then throw("rebirth and swop promo only")
213237 else {
214- let ao = ((("address_" + s) + "_perchesAvailable_") + ai)
215- let ap = p(ao)
216- $Tuple2([IntegerEntry(ao, (ap + 1))], "")
238+ let ar = ((("address_" + e) + "_perchesAvailable_") + al)
239+ let as = w(ar)
240+ $Tuple2([IntegerEntry(ar, (as + 1))], "")
217241 }
218242
219243
220244
221-@Callable(ah)
222-func stakeNFT () = if ((l() > 0))
245+@Callable(aj)
246+func stakeNFT () = if ((t() > 0))
223247 then throw("EGG operations are temporarily locked")
224248 else {
225- let aq = value(ah.payments[0])
226- let H = value(value(ah.payments[0]).assetId)
227- let s = toString(ah.caller)
228- let ai = takeRight(value(assetInfo(H)).name, 1)
229- let ar = p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai))
230- if ((aq.amount != 1))
249+ let at = value(aj.payments[0])
250+ let I = value(value(aj.payments[0]).assetId)
251+ let e = toString(aj.caller)
252+ let al = takeRight(value(assetInfo(I)).name, 1)
253+ let au = w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al))
254+ if ((at.amount != 1))
231255 then throw("NFT is not attached")
232- else if ((0 >= ar))
233- then throw(("no perches available for the color " + ai))
256+ else if ((0 >= au))
257+ then throw(("no perches available for the color " + al))
234258 else {
235- let as = G(H)
236- let Y = as._1
237- let U = as._2
238- let at = T(s, toBase58String(H), U)
239- (aa(s, H, U) ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (ar - 1))])
259+ let av = H(I, e)
260+ let aa = av._1
261+ let W = av._2
262+ let aw = V(e, toBase58String(I), W)
263+ (ac(e, I, W) ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (au - 1))])
240264 }
241265 }
242266
243267
244268
245-@Callable(ah)
246-func unstakeNFT (ab) = if (w(toString(ah.caller)))
269+@Callable(aj)
270+func unstakeNFT (ad) = if (x(toString(aj.caller)))
247271 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
248- else if ((l() > 0))
272+ else if ((t() > 0))
249273 then throw("EGG operations are temporarily locked")
250274 else {
251- let H = fromBase58String(ab)
252- let s = toString(ah.caller)
253- let U = K(s, ab)
254- let at = T(s, ab, U)
255- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
256- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
257- let av = ((au - ae) / (c * 100))
258- let ai = takeRight(value(assetInfo(H)).name, 1)
259- if ((0 >= U))
275+ let I = fromBase58String(ad)
276+ let e = toString(aj.caller)
277+ let W = N(e, ad)
278+ let aw = V(e, ad, W)
279+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
280+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
281+ let ay = ((ax - ag) / (b * 100))
282+ let al = takeRight(value(assetInfo(I)).name, 1)
283+ if ((0 >= W))
260284 then throw("asset not available")
261- else if ((ai == "U"))
285+ else if ((al == "U"))
262286 then throw("use another function to unstake Jackpot NFT")
263287 else {
264- let aw = ac(s, H, at, av, U)
265- $Tuple2((aw ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)) + 1)), ScriptTransfer(ah.caller, (av * 1000000), a), ScriptTransfer(ah.caller, 1, H)]), (av * 1000000))
288+ let az = ae(e, I, aw, ay, W)
289+ $Tuple2((az ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)) + 1)), ScriptTransfer(aj.caller, (ay * 1000000), k()), ScriptTransfer(aj.caller, 1, I)]), (ay * 1000000))
266290 }
267291 }
268292
269293
270294
271-@Callable(ah)
272-func stakeJackpot (ai) = if ((l() > 0))
295+@Callable(aj)
296+func stakeJackpot (al) = if ((t() > 0))
273297 then throw("EGG operations are temporarily locked")
274298 else {
275- let aq = value(ah.payments[0])
276- let H = value(aq.assetId)
277- let s = toString(ah.caller)
278- let ar = p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai))
279- let ax = value(assetInfo(H)).issuer.bytes
280- if ((aq.amount != 1))
299+ let at = value(aj.payments[0])
300+ let I = value(at.assetId)
301+ let e = toString(aj.caller)
302+ let au = w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al))
303+ let aA = value(assetInfo(I)).issuer
304+ if ((at.amount != 1))
281305 then throw("NFT is not attached")
282- else if (if ((ax == e))
306+ else if (if ((aA == l()))
283307 then true
284- else (ax == f))
285- then if ((takeRight(value(value(assetInfo(H)).name), 1) != "U"))
308+ else (aA == o()))
309+ then if ((takeRight(value(value(assetInfo(I)).name), 1) != "U"))
286310 then throw("jackpot only")
287- else if ((0 >= ar))
288- then throw(("no perches available for the color " + ai))
289- else (aa(s, H, 100) ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (ar - 1)), StringEntry((((("address_" + toString(ah.caller)) + "_asset_") + toBase58String(H)) + "_perchColor"), ai)])
311+ else if ((0 >= au))
312+ then throw(("no perches available for the color " + al))
313+ else (ac(e, I, 100) ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (au - 1)), StringEntry((((("address_" + toString(aj.caller)) + "_asset_") + toBase58String(I)) + "_perchColor"), al)])
290314 else throw("asset is not valid")
291315 }
292316
293317
294318
295-@Callable(ah)
296-func unstakeJackpot (ab) = if (w(toString(ah.caller)))
319+@Callable(aj)
320+func unstakeJackpot (ad) = if (x(toString(aj.caller)))
297321 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
298- else if ((l() > 0))
322+ else if ((t() > 0))
299323 then throw("EGG operations are temporarily locked")
300324 else {
301- let H = fromBase58String(ab)
302- let s = toString(ah.caller)
303- let ai = u((((("address_" + s) + "_asset_") + ab) + "_perchColor"))
304- let U = K(s, ab)
305- let at = T(s, ab, U)
306- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
307- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
308- let av = ((au - ae) / (c * 100))
309- if ((takeRight(value(value(assetInfo(H)).name), 1) != "U"))
325+ let I = fromBase58String(ad)
326+ let e = toString(aj.caller)
327+ let al = i((((("address_" + e) + "_asset_") + ad) + "_perchColor"))
328+ let W = N(e, ad)
329+ let aw = V(e, ad, W)
330+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
331+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
332+ let ay = ((ax - ag) / (b * 100))
333+ if ((takeRight(value(value(assetInfo(I)).name), 1) != "U"))
310334 then throw("jackpot only")
311- else if ((U > 0))
335+ else if ((W > 0))
312336 then {
313- let aw = ac(s, H, at, av, U)
314- $Tuple2((aw ++ [IntegerEntry(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai), (p(((("address_" + toString(ah.caller)) + "_perchesAvailable_") + ai)) + 1)), ScriptTransfer(ah.caller, (av * 1000000), a), ScriptTransfer(ah.caller, 1, H)]), (av * 1000000))
337+ let az = ae(e, I, aw, ay, W)
338+ $Tuple2((az ++ [IntegerEntry(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al), (w(((("address_" + toString(aj.caller)) + "_perchesAvailable_") + al)) + 1)), ScriptTransfer(aj.caller, (ay * 1000000), k()), ScriptTransfer(aj.caller, 1, I)]), (ay * 1000000))
315339 }
316340 else throw("")
317341 }
318342
319343
320344
321-@Callable(ah)
322-func claimReward (ab) = if (w(toString(ah.caller)))
345+@Callable(aj)
346+func claimReward (ad) = if (x(toString(aj.caller)))
323347 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
324- else if ((l() > 0))
348+ else if ((t() > 0))
325349 then throw("EGG operations are temporarily locked")
326350 else {
327- let s = toString(ah.caller)
328- let H = fromBase58String(ab)
329- let U = K(s, ab)
330- let at = T(s, ab, U)
331- let au = (at + p((((("address_" + s) + "_asset_") + ab) + "_lastCheckFarmedAmount")))
332- let ae = p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"))
333- let av = ((au - ae) / (c * 100))
334- if ((0 >= av))
351+ let e = toString(aj.caller)
352+ let I = fromBase58String(ad)
353+ let W = N(e, ad)
354+ let aw = V(e, ad, W)
355+ let ax = (aw + w((((("address_" + e) + "_asset_") + ad) + "_lastCheckFarmedAmount")))
356+ let ag = w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"))
357+ let ay = ((ax - ag) / (b * 100))
358+ if ((0 >= ay))
335359 then throw("you have no EGGs to withdraw")
336- else $Tuple2([IntegerEntry((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount"), (p((((("address_" + s) + "_asset_") + ab) + "_withdrawnAmount")) + (av * d))), ScriptTransfer(Address(fromBase58String(s)), (av * 1000000), a)], (av * 1000000))
360+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount"), (w((((("address_" + e) + "_asset_") + ad) + "_withdrawnAmount")) + (ay * c))), ScriptTransfer(Address(fromBase58String(e)), (ay * 1000000), k())], (ay * 1000000))
337361 }
338362
339363

github/deemru/w8io/873ac7e 
206.70 ms