tx · DFf5UtP5FxE6BKATqTYMzcbRLRvv8HUmJppNQLZrecX8

3Mrj66WrZRC5TYVqoGS8WXGNN9ib23GMUEh:  -0.02100000 Waves

2024.10.03 13:16 [3310539] smart account 3Mrj66WrZRC5TYVqoGS8WXGNN9ib23GMUEh > SELF 0.00000000 Waves

{ "type": 13, "id": "DFf5UtP5FxE6BKATqTYMzcbRLRvv8HUmJppNQLZrecX8", "fee": 2100000, "feeAssetId": null, "timestamp": 1727950572954, "version": 2, "chainId": 84, "sender": "3Mrj66WrZRC5TYVqoGS8WXGNN9ib23GMUEh", "senderPublicKey": "HtAuuH8fNTR1JCCJQQz1CsvFkGChAXrRT48xCPAYBfRY", "proofs": [ "54xZtCi9KzQTjBpf7LaakKeqKdisDwiTrszkChsNpsm5RBWCFj5pH6mAxLFEfTTRBM8HvT7E5Gxhd9agrjBZBp1X" ], "script": "base64:AAIFAAAAAAAAACEIAhIDCgEIEgMKAQgSBAoCCAgSAwoBCBIDCgEBEgMKAQgAAAAyAQAAAAdnZXRCb29sAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBwEAAAAJaXNUZXN0RW52AAAAAAkBAAAAB2dldEJvb2wAAAABAgAAAAdURVNURU5WAAAAAAVTY2FsZQAAAAAABfXhAAEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5CQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAAAAABVrZXlHbG9iYWxMYXN0SW50ZXJlc3QCAAAAGWdsb2JhbF9sYXN0Q2hlY2tfaW50ZXJlc3QBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAAAAAIAAAAXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBAAAAGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAbc3RhdGljS2V5X2FjY0Jvb3N0ZXJBZGRyZXNzAAAAAAIAAAAYc3RhdGljX2FjY0Jvb3N0ZXJBZGRyZXNzAQAAABVzdGF0aWNLZXlfZHVja1dyYXBwZXIAAAAAAgAAABJzdGF0aWNfZHVja1dyYXBwZXIBAAAAGHN0YXRpY0tleV9jb3Vwb25zQWRkcmVzcwAAAAACAAAAFXN0YXRpY19jb3Vwb25zQWRkcmVzcwEAAAAVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAgAAAA9zdGF0aWNfZXh0cmFGZWUBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAIAAAAUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IAAAAAD2tleUdsb2JhbEVhcm5lZAIAAAAPZ2xvYmFsX2Vhcm5pbmdzAQAAABZzdGF0aWNLZXlfdmVnZ1BlcmNoRmVlAAAAAAIAAAATc3RhdGljX3ZlZ2dQZXJjaEZlZQEAAAAOdG90YWxTdGFrZWRLZXkAAAAAAgAAAAx0b3RhbF9zdGFrZWQBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2JyZWVkZXJBZGRyZXNzAAAAAAEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABtzdGF0aWNLZXlfYWNjQm9vc3RlckFkZHJlc3MAAAAAAQAAABBnZXREdWNrV3JhcHBlclNjAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAVc3RhdGljS2V5X2R1Y2tXcmFwcGVyAAAAAAEAAAARZ2V0Q291cG9uc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfY291cG9uc0FkZHJlc3MAAAAAAQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFXN0YXRpY0tleV9idXJuQWRkcmVzcwAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAQAAABRrZXlMYXN0Q2hlY2tJbnRlcmVzdAAAAAIAAAAHYWRkcmVzcwAAAAVhc3NldAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEl9sYXN0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ZXIAAAAAAAAAAAAFAAAABXBvd2VyAAAAAAAAAAACAQAAABZnZXRBc3NldFJhcml0eUNvbXBsZXRlAAAAAgAAAAlpc0phY2twb3QAAAAJYXNzZXROYW1lBAAAAAZyYXJpdHkDBQAAAAlpc0phY2twb3QAAAAAAAAAAGQEAAAACmdlbmVyYXRpb24JAAEvAAAAAgkBAAAACXRha2VSaWdodAAAAAIFAAAACWFzc2V0TmFtZQAAAAAAAAAAAgAAAAAAAAAAAQQAAAAHZmFybUdlbgkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAAA5nZXRHZW5Gcm9tTmFtZQkABEwAAAACBQAAAAlhc3NldE5hbWUFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAdmYXJtR2VuBQAAAAdmYXJtR2VuCQEAAAAOZ2V0QXNzZXRSYXJpdHkAAAACBQAAAAdmYXJtR2VuBQAAAApnZW5lcmF0aW9uCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUAAAAGcmFyaXR5AQAAABJ1cGRhdGVGYXJtaW5nUG93ZXIAAAACAAAAB2FkZHJlc3MAAAAFYXNzZXQEAAAAC3RvdGFsU3Rha2VkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA50b3RhbFN0YWtlZEtleQAAAAAEAAAAD3RvdGFsU3Rha2VkVXNlcgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAASdG90YWxTdGFrZWRVc2VyS2V5AAAAAQUAAAAHYWRkcmVzcwQAAAAJY3VycmVudEZQCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABFhc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAAAVuZXdGUAkBAAAACmFzSW50VHVwbGUAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAEmNhbGN1bGF0ZUZhcm1Qb3dlcgkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA50b3RhbFN0YWtlZEtleQAAAAAJAABkAAAAAgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA50b3RhbFN0YWtlZEtleQAAAAAFAAAACWN1cnJlbnRGUAgFAAAABW5ld0ZQAAAAAl8xCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASdG90YWxTdGFrZWRVc2VyS2V5AAAAAQUAAAAHYWRkcmVzcwkAAGQAAAACCQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEnRvdGFsU3Rha2VkVXNlcktleQAAAAEFAAAAB2FkZHJlc3MFAAAACWN1cnJlbnRGUAgFAAAABW5ld0ZQAAAAAl8xCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARYXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAgFAAAABW5ld0ZQAAAAAl8xCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA9ERUJVR19jdXJyZW50RlAFAAAACWN1cnJlbnRGUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAALREVCVUdfbmV3RlAIBQAAAAVuZXdGUAAAAAJfMQUAAAADbmlsAQAAABJjbGFpbVN0YWtpbmdSZXN1bHQAAAACAAAAB2FkZHJlc3MAAAAFYXNzZXQEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAABVrZXlHbG9iYWxMYXN0SW50ZXJlc3QEAAAAEWxhc3RDaGVja0ludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABRrZXlMYXN0Q2hlY2tJbnRlcmVzdAAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAAAxzdGFrZWRBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAACGZwVXBkYXRlCQEAAAASdXBkYXRlRmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAABnJld2FyZAMJAABmAAAAAgUAAAARbGFzdENoZWNrSW50ZXJlc3QAAAAAAAAAAAAJAABrAAAAAwkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAEWxhc3RDaGVja0ludGVyZXN0BQAAAAxzdGFrZWRBbW91bnQFAAAABVNjYWxlAAAAAAAAAAAABAAAAAxpbnZva2VSZXN1bHQDCQAAZgAAAAIFAAAABnJld2FyZAAAAAAAAAAAAAkAA/wAAAAECQEAAAARZ2V0Q291cG9uc0FkZHJlc3MAAAAAAgAAABFhZGRDb3Vwb25zRmFybWluZwkABEwAAAACBQAAAAdhZGRyZXNzCQAETAAAAAIFAAAABnJld2FyZAUAAAADbmlsBQAAAANuaWwFAAAABHVuaXQDCQAAAAAAAAIFAAAADGludm9rZVJlc3VsdAUAAAAMaW52b2tlUmVzdWx0CQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABRrZXlMYXN0Q2hlY2tJbnRlcmVzdAAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABByZXdhcmRDbGFpbWVkS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAQcmV3YXJkQ2xhaW1lZEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAAAZyZXdhcmQFAAAAA25pbAUAAAAIZnBVcGRhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAlhc0Jvb2xlYW4AAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAAHYm9vbGVhbgUAAAAHJG1hdGNoMAUAAAAHYm9vbGVhbgkAAAIAAAABAgAAACJGQUI6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBCb29sZWFuAQAAABNjYWxjdWxhdGVQZXJjaFByaWNlAAAAAQAAAAdhZGRyZXNzBAAAABFoYXNBcnRlZmFjdFN0YWtlZAkB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", "height": 3310539, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 67E5KPYtASEP43CpRCYpG3rXtT8m1bMzm3YVk6oBpqxQ Next: GymeRQtwEjwQR7oRC7trmsfvZXxoXxeMupuTDKCFcbuW Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+func a (b) = {
5+ let c = getBoolean(this, b)
6+ if ($isInstanceOf(c, "Boolean"))
7+ then {
8+ let d = c
9+ d
10+ }
11+ else false
12+ }
513
6-func b (c,d) = {
7- let e = getString(c, d)
8- if ($isInstanceOf(e, "String"))
14+
15+func e () = a("TESTENV")
16+
17+
18+let f = 100000000
19+
20+func g (h,b) = {
21+ let c = getString(h, b)
22+ if ($isInstanceOf(c, "String"))
923 then {
10- let f = e
11- f
24+ let i = c
25+ i
1226 }
1327 else ""
1428 }
1529
1630
17-func g (d) = b(this, d)
31+func j (b) = g(this, b)
1832
1933
20-func h () = "static_refContractAddress"
34+func k () = "static_refContractAddress"
2135
2236
23-let i = "global_lastCheck_interest"
37+let l = "global_lastCheck_interest"
2438
25-func j () = "static_oracleAddress"
39+func m () = "static_oracleAddress"
2640
2741
28-func k () = "static_eggAssetId"
42+func n () = "static_eggAssetId"
2943
3044
31-func l () = "static_incubatorAddress"
45+func o () = "static_incubatorAddress"
3246
3347
34-func m () = "static_breederAddress"
48+func p () = "static_breederAddress"
3549
3650
37-func n () = "static_accBoosterAddress"
51+func q () = "static_accBoosterAddress"
3852
3953
40-func o () = "static_duckWrapper"
54+func r () = "static_duckWrapper"
4155
4256
43-func p () = "static_couponsAddress"
57+func s () = "static_couponsAddress"
4458
4559
46-func q () = "static_burnAddress"
60+func t () = "static_burnAddress"
4761
4862
49-func r () = "static_extraFee"
63+func u () = "static_extraFee"
5064
5165
52-func s () = "static_feeAggregator"
66+func v () = "static_feeAggregator"
5367
5468
55-let t = "global_earnings"
69+let w = "global_earnings"
5670
57-func u () = "static_veggPerchFee"
71+func x () = "static_veggPerchFee"
5872
5973
60-func v () = "total_staked"
74+func y () = "total_staked"
6175
6276
63-func w () = Address(fromBase58String(g(j())))
77+func z () = Address(fromBase58String(j(m())))
6478
6579
66-func x () = fromBase58String(b(w(), k()))
80+func A () = fromBase58String(g(z(), n()))
6781
6882
69-func y () = Address(fromBase58String(b(w(), l())))
83+func B () = Address(fromBase58String(g(z(), o())))
7084
7185
72-func z () = Address(fromBase58String(b(w(), m())))
86+func C () = Address(fromBase58String(g(z(), p())))
7387
7488
75-func A () = Address(fromBase58String(b(w(), n())))
89+func D () = Address(fromBase58String(g(z(), q())))
7690
7791
78-func B () = Address(fromBase58String(b(w(), o())))
92+func E () = Address(fromBase58String(g(z(), r())))
7993
8094
81-func C () = Address(fromBase58String(b(w(), p())))
95+func F () = Address(fromBase58String(g(z(), s())))
8296
8397
84-func D () = Address(fromBase58String(b(w(), q())))
98+func G () = Address(fromBase58String(g(z(), t())))
8599
86100
87-func E () = Address(fromBase58String(b(w(), s())))
101+func H () = Address(fromBase58String(g(z(), v())))
88102
89103
90-func F () = Address(fromBase58String(b(w(), h())))
104+func I () = Address(fromBase58String(g(z(), k())))
91105
92106
93-func G (c,H) = (((("address_" + c) + "_asset_") + H) + "_lastCheckInterest")
107+func J (h,K) = (((("address_" + h) + "_asset_") + K) + "_lastCheckInterest")
94108
95109
96-func I (c,H) = (((("address_" + c) + "_asset_") + H) + "_farmingPower")
110+func L (h,K) = (((("address_" + h) + "_asset_") + K) + "_farmingPower")
97111
98112
99-func J (c,H) = (((c + "_asset_") + H) + "_claimed")
113+func M (h,K) = (((h + "_asset_") + K) + "_claimed")
100114
101115
102-func K (c) = ("total_staked_" + c)
116+func N (h) = ("total_staked_" + h)
103117
104118
105-let L = 5
119+let O = 5
106120
107-func M (N) = if (isDefined(N.assetId))
121+func P (Q) = if (isDefined(Q.assetId))
108122 then throw("FCAP: Please attach waves")
109123 else {
110- let O = getIntegerValue(w(), r())
111- if ((N.amount != O))
112- then throw((("FCAP: Please attach exactly " + toString(O)) + " amount of wavelets"))
113- else [ScriptTransfer(E(), O, unit)]
124+ let R = getIntegerValue(z(), u())
125+ if ((Q.amount != R))
126+ then throw((("FCAP: Please attach exactly " + toString(R)) + " amount of wavelets"))
127+ else [ScriptTransfer(H(), R, unit)]
114128 }
115129
116130
117-func P (d) = {
118- let e = getInteger(this, d)
119- if ($isInstanceOf(e, "Int"))
131+func S (b) = {
132+ let c = getInteger(this, b)
133+ if ($isInstanceOf(c, "Int"))
120134 then {
121- let Q = e
122- Q
135+ let d = c
136+ d
123137 }
124138 else 0
125139 }
126140
127141
128-func R (S) = {
129- let e = S
130- if ($isInstanceOf(e, "Int"))
142+func T (U) = {
143+ let c = U
144+ if ($isInstanceOf(c, "Int"))
131145 then {
132- let T = e
133- T
146+ let V = c
147+ V
134148 }
135149 else throw("FAI: wrong type, expected: Int")
136150 }
137151
138152
139-func U (S) = {
140- let e = S
141- if ($isInstanceOf(e, "(Int, Int)"))
153+func W (U) = {
154+ let c = U
155+ if ($isInstanceOf(c, "(Int, Int)"))
142156 then {
143- let T = e
144- T
157+ let V = c
158+ V
145159 }
146160 else throw("FAI: wrong type, expected: (Int,Int)")
147161 }
148162
149163
150-func V (W) = {
151- let X = P(i)
152- let Y = P(v())
153- let Z = if ((Y > 0))
154- then fraction(W, a, Y)
164+func X (Y) = {
165+ let Z = S(l)
166+ let aa = S(y())
167+ let ab = if ((aa > 0))
168+ then fraction(Y, f, aa)
155169 else 0
156-[IntegerEntry(t, (P(t) + W)), IntegerEntry(i, (X + Z))]
170+[IntegerEntry(w, (S(w) + Y)), IntegerEntry(l, (Z + ab))]
157171 }
158172
159173
160-func aa (S) = {
161- let e = S
162- if ($isInstanceOf(e, "String"))
174+func ac (U) = {
175+ let c = U
176+ if ($isInstanceOf(c, "String"))
163177 then {
164- let ab = e
165- ab
178+ let ad = c
179+ ad
166180 }
167181 else throw("FAS: wrong type, expected: String")
168182 }
169183
170184
171-func ac (d) = {
172- let e = getBoolean(this, d)
173- if ($isInstanceOf(e, "Boolean"))
185+func ae (b) = {
186+ let c = getBoolean(this, b)
187+ if ($isInstanceOf(c, "Boolean"))
174188 then {
175- let Q = e
176- Q
189+ let d = c
190+ d
177191 }
178192 else false
179193 }
180194
181195
182-func ad (c,d) = {
183- let e = getBoolean(c, d)
184- if ($isInstanceOf(e, "Boolean"))
196+func af (h,b) = {
197+ let c = getBoolean(h, b)
198+ if ($isInstanceOf(c, "Boolean"))
185199 then {
186- let Q = e
187- Q
200+ let d = c
201+ d
188202 }
189203 else false
190204 }
191205
192206
193-func ae (af) = if ((af == "G"))
194- then y()
195- else z()
207+func ag (ah) = if ((ah == "G"))
208+ then B()
209+ else C()
196210
197211
198-func ag (ah,af) = {
199- let ai = valueOrErrorMessage(getInteger(ae(af), (("stats_" + ah) + "_quantity")), (("stats_" + ah) + "_quantity not found"))
200- let aj = pow((10000 / ai), 4, 5, 1, 2, FLOOR)
201- if ((aj > 0))
202- then aj
212+func ai (aj,ah) = {
213+ let ak = valueOrErrorMessage(getInteger(ag(ah), (("stats_" + aj) + "_quantity")), (("stats_" + aj) + "_quantity not found"))
214+ let al = pow((10000 / ak), 4, 5, 1, 2, FLOOR)
215+ if ((al > 0))
216+ then al
203217 else 2
204218 }
205219
206220
207-func ak (al,am) = {
208- let an = if (al)
221+func am (an,ao) = {
222+ let ap = if (an)
209223 then 100
210224 else {
211- let af = take(takeRight(am, 2), 1)
212- let ao = aa(invoke(z(), "getGenFromName", [am], nil))
213- if ((ao == ao))
214- then ag(ao, af)
225+ let ah = take(takeRight(ao, 2), 1)
226+ let aq = ac(invoke(C(), "getGenFromName", [ao], nil))
227+ if ((aq == aq))
228+ then ai(aq, ah)
215229 else throw("Strict value is not equal to itself.")
216230 }
217- an
231+ ap
218232 }
219233
220234
221-func ap (c,H) = {
222- let aq = P(v())
223- let ar = P(K(c))
224- let as = P(I(c, H))
225- let at = U(invoke(this, "calculateFarmPower", [H], nil))
226-[IntegerEntry(v(), ((P(v()) - as) + at._1)), IntegerEntry(K(c), ((P(K(c)) - as) + at._1)), IntegerEntry(I(c, H), at._1), IntegerEntry("DEBUG_currentFP", as), IntegerEntry("DEBUG_newFP", at._1)]
235+func ar (h,K) = {
236+ let as = S(y())
237+ let at = S(N(h))
238+ let au = S(L(h, K))
239+ let av = W(invoke(this, "calculateFarmPower", [K], nil))
240+[IntegerEntry(y(), ((S(y()) - au) + av._1)), IntegerEntry(N(h), ((S(N(h)) - au) + av._1)), IntegerEntry(L(h, K), av._1), IntegerEntry("DEBUG_currentFP", au), IntegerEntry("DEBUG_newFP", av._1)]
227241 }
228242
229243
230-func au (c,H) = {
231- let X = P(i)
232- let av = P(G(c, H))
233- let aw = P(I(c, H))
234- let ax = ap(c, H)
235- let ay = if ((av > 0))
236- then fraction((X - av), aw, a)
244+func aw (h,K) = {
245+ let Z = S(l)
246+ let ax = S(J(h, K))
247+ let ay = S(L(h, K))
248+ let az = ar(h, K)
249+ let aA = if ((ax > 0))
250+ then fraction((Z - ax), ay, f)
237251 else 0
238- let az = if ((ay > 0))
239- then invoke(C(), "addCouponsFarming", [c, ay], nil)
252+ let aB = if ((aA > 0))
253+ then invoke(F(), "addCouponsFarming", [h, aA], nil)
240254 else unit
241- if ((az == az))
242- then ([IntegerEntry(G(c, H), X), IntegerEntry(J(c, H), (P(J(c, H)) + ay))] ++ ax)
255+ if ((aB == aB))
256+ then ([IntegerEntry(J(h, K), Z), IntegerEntry(M(h, K), (S(M(h, K)) + aA))] ++ az)
243257 else throw("Strict value is not equal to itself.")
244258 }
245259
246260
247-func aA (S) = {
248- let e = S
249- if ($isInstanceOf(e, "Boolean"))
261+func aC (U) = {
262+ let c = U
263+ if ($isInstanceOf(c, "Boolean"))
250264 then {
251- let aB = e
252- aB
265+ let aD = c
266+ aD
253267 }
254268 else throw("FAB: wrong type, expected: Boolean")
255269 }
256270
257271
258-func aC (c) = {
259- let aD = b(A(), (("ART-XMISTL_" + c) + "_owner"))
260- let aE = getIntegerValue(w(), u())
261- if ((aD == ""))
262- then aE
263- else aE
272+func aE (h) = {
273+ let aF = g(D(), (("ART-XMISTL_" + h) + "_owner"))
274+ let aG = getIntegerValue(z(), x())
275+ if ((aF == ""))
276+ then aG
277+ else aG
264278 }
265279
266280
267-@Callable(aF)
268-func calculateFarmPower (aG) = if (!(if ((value(assetInfo(fromBase58String(aG))).issuer == z()))
281+@Callable(aH)
282+func calculateFarmPower (aI) = if (!(if ((value(assetInfo(fromBase58String(aI))).issuer == C()))
269283 then true
270- else (value(assetInfo(fromBase58String(aG))).issuer == y())))
284+ else (value(assetInfo(fromBase58String(aI))).issuer == B())))
271285 then throw("This does not seem like a valid Duck!")
272286 else {
273- let am = value(assetInfo(fromBase58String(aG))).name
274- let aH = takeRight(am, 1)
275- let al = (takeRight(am, 1) == "U")
276- let an = ak(al, am)
277- let ah = split(dropRight(drop(am, 5), 3), "")
278- func aI (aJ,aK) = if (!(containsElement(aJ, aK)))
279- then (aJ :+ aK)
280- else aJ
287+ let ao = value(assetInfo(fromBase58String(aI))).name
288+ let aJ = takeRight(ao, 1)
289+ let an = (takeRight(ao, 1) == "U")
290+ let ap = am(an, ao)
291+ let aj = split(dropRight(drop(ao, 5), 3), "")
292+ func aK (aL,aM) = if (!(containsElement(aL, aM)))
293+ then (aL :+ aM)
294+ else aL
281295
282- let aL = {
283- let aM = ah
284- let aN = size(aM)
285- let aO = nil
286- func aP (aQ,aR) = if ((aR >= aN))
287- then aQ
288- else aI(aQ, aM[aR])
296+ let aN = {
297+ let aO = aj
298+ let aP = size(aO)
299+ let aQ = nil
300+ func aR (aS,aT) = if ((aT >= aP))
301+ then aS
302+ else aK(aS, aO[aT])
289303
290- func aS (aQ,aR) = if ((aR >= aN))
291- then aQ
304+ func aU (aS,aT) = if ((aT >= aP))
305+ then aS
292306 else throw("List size exceeds 8")
293307
294- aS(aP(aP(aP(aP(aP(aP(aP(aP(aO, 0), 1), 2), 3), 4), 5), 6), 7), 8)
308+ aU(aR(aR(aR(aR(aR(aR(aR(aR(aQ, 0), 1), 2), 3), 4), 5), 6), 7), 8)
295309 }
296- let aT = if ((aH == "U"))
310+ let aV = if ((aJ == "U"))
297311 then 8
298- else size(aL)
299- let aj = pow(15, 1, aT, 0, 2, DOWN)
300- let aU = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
301- let aV = P((aG + "_basePower"))
302- let aW = if ((aV > 0))
303- then aV
304- else ((aj * aU) / 100)
305- let aX = ((aW * an) / 100)
306- $Tuple2([IntegerEntry(("DEBUG_" + am), aW), IntegerEntry(("DEBUG_RARITY" + am), an), IntegerEntry(("DEBUG_FPRARITY_" + am), aX), IntegerEntry(("DEBUG_BASEPOWER_" + am), aV), IntegerEntry(("DEBUG_COEFFICIENT_" + am), aU)], $Tuple2(aX, aW))
312+ else size(aN)
313+ let al = pow(15, 1, aV, 0, 2, DOWN)
314+ let aW = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
315+ let aX = S((aI + "_basePower"))
316+ let aY = if ((aX > 0))
317+ then aX
318+ else ((al * aW) / 100)
319+ let aZ = ((aY * ap) / 100)
320+ $Tuple2([IntegerEntry(("DEBUG_" + ao), aY), IntegerEntry(("DEBUG_RARITY" + ao), ap), IntegerEntry(("DEBUG_FPRARITY_" + ao), aZ), IntegerEntry(("DEBUG_BASEPOWER_" + ao), aX), IntegerEntry(("DEBUG_COEFFICIENT_" + ao), aW)], $Tuple2(aZ, aY))
307321 }
308322
309323
310324
311-@Callable(aF)
312-func configureOracle (aY) = if ((aF.caller != this))
325+@Callable(aH)
326+func configureOracle (ba) = if ((aH.caller != this))
313327 then throw("FCO: admin only")
314- else [StringEntry(j(), aY)]
328+ else [StringEntry(m(), ba)]
315329
316330
317331
318-@Callable(aF)
319-func buyPerch (aZ,ba) = {
320- let bb = M(aF.payments[0])
321- if ((bb == bb))
332+@Callable(aH)
333+func buyPerch (bb,bc) = {
334+ let bd = P(aH.payments[0])
335+ if ((bd == bd))
322336 then {
323- let bc = if ((aZ == "U"))
337+ let be = if ((bb == "U"))
324338 then "B"
325- else aZ
326- if ((0 > value(indexOf(["B", "R", "G", "Y"], bc))))
339+ else bb
340+ if ((0 > value(indexOf(["B", "R", "G", "Y"], be))))
327341 then throw("you need to set color properly")
328342 else {
329- let bd = aC(toString(aF.caller))
330- let be = if ((size(aF.payments) == 2))
331- then value(aF.payments[1])
332- else value(aF.payments[0])
333- if ((be.assetId != x()))
334- then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(x())))
335- else if ((be.amount != bd))
336- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bd)) + " ") + toString(aF.caller)))
343+ let bf = aE(toString(aH.caller))
344+ let bg = if ((size(aH.payments) == 2))
345+ then value(aH.payments[1])
346+ else value(aH.payments[0])
347+ if ((bg.assetId != A()))
348+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(A())))
349+ else if ((bg.amount != bf))
350+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bf)) + " ") + toString(aH.caller)))
337351 else {
338- let bf = fraction(bd, 5, 100)
339- let bg = aA(invoke(F(), "refPayment", [ba], [AttachedPayment(x(), bf)]))
340- if ((bg == bg))
352+ let bh = fraction(bf, 5, 100)
353+ let bi = aC(invoke(I(), "refPayment", [bc], [AttachedPayment(A(), bh)]))
354+ if ((bi == bi))
341355 then {
342- let bh = if (bg)
343- then (bd - bf)
344- else bd
345- let bi = invoke(D(), "burnAttachedPayments", nil, [AttachedPayment(x(), bh)])
346- if ((bi == bi))
356+ let bj = if (bi)
357+ then (bf - bh)
358+ else bf
359+ let bk = invoke(G(), "burnAttachedPayments", nil, [AttachedPayment(A(), bj)])
360+ if ((bk == bk))
347361 then {
348- let bj = ((("address_" + toString(aF.caller)) + "_perchesAvailable_") + bc)
349- let bk = P(bj)
350- ([IntegerEntry(bj, (bk + 1))] ++ bb)
362+ let bl = ((("address_" + toString(aH.caller)) + "_perchesAvailable_") + be)
363+ let bm = S(bl)
364+ ([IntegerEntry(bl, (bm + 1))] ++ bd)
351365 }
352366 else throw("Strict value is not equal to itself.")
353367 }
360374
361375
362376
363-@Callable(aF)
364-func stakeNFT (bl) = {
365- let bb = M(aF.payments[0])
366- if ((bb == bb))
377+@Callable(aH)
378+func stakeNFT (bn) = {
379+ let bd = P(aH.payments[0])
380+ if ((bd == bd))
367381 then {
368- let bm = value(aF.payments[1])
369- let aG = value(bm.assetId)
370- let am = value(value(assetInfo(aG)).name)
371- let al = (takeRight(am, 1) == "U")
372- let c = toString(aF.caller)
373- let an = ak(al, am)
374- if ((70 > an))
382+ let bo = value(aH.payments[1])
383+ let aI = value(bo.assetId)
384+ let ao = value(value(assetInfo(aI)).name)
385+ let an = (takeRight(ao, 1) == "U")
386+ let h = toString(aH.caller)
387+ let ap = am(an, ao)
388+ if ((70 > ap))
375389 then throw("Only ducks with a rarity above 70 can be locked!")
376390 else {
377- let bc = if (al)
378- then bl
379- else takeRight(am, 1)
380- let bn = P(((("address_" + c) + "_perchesAvailable_") + bc))
381- if ((bm.amount != 1))
391+ let be = if (an)
392+ then bn
393+ else takeRight(ao, 1)
394+ let bp = S(((("address_" + h) + "_perchesAvailable_") + be))
395+ if ((bo.amount != 1))
382396 then throw("NFT is not attached")
383- else if ((0 >= bn))
384- then throw(("no perches available for the color " + bc))
397+ else if ((0 >= bp))
398+ then throw(("no perches available for the color " + be))
385399 else {
386- let bo = U(invoke(this, "calculateFarmPower", [toBase58String(aG)], nil))
387- if ((bo == bo))
388- then (([IntegerEntry(v(), (P(v()) + bo._1)), IntegerEntry(K(c), (P(K(c)) + bo._1)), IntegerEntry(((("address_" + c) + "_perchesAvailable_") + bc), (bn - 1)), StringEntry((toBase58String(aG) + "_owner"), c), IntegerEntry(I(c, toBase58String(aG)), bo._1), IntegerEntry((toBase58String(aG) + "_basePower"), bo._2), StringEntry((((("address_" + c) + "_asset_") + toBase58String(aG)) + "_perchColor"), bc)] ++ au(c, toBase58String(aG))) ++ bb)
400+ let bq = W(invoke(this, "calculateFarmPower", [toBase58String(aI)], nil))
401+ if ((bq == bq))
402+ then (([IntegerEntry(y(), (S(y()) + bq._1)), IntegerEntry(N(h), (S(N(h)) + bq._1)), IntegerEntry(((("address_" + h) + "_perchesAvailable_") + be), (bp - 1)), StringEntry((toBase58String(aI) + "_owner"), h), IntegerEntry(L(h, toBase58String(aI)), bq._1), IntegerEntry((toBase58String(aI) + "_basePower"), bq._2), StringEntry((((("address_" + h) + "_asset_") + toBase58String(aI)) + "_perchColor"), be)] ++ aw(h, toBase58String(aI))) ++ bd)
389403 else throw("Strict value is not equal to itself.")
390404 }
391405 }
395409
396410
397411
398-@Callable(aF)
399-func topUpReward (W) = if ((aF.caller != C()))
412+@Callable(aH)
413+func topUpReward (Y) = if ((aH.caller != F()))
400414 then throw("VFTUP: Only couponsdapp can do topup!")
401415 else {
402- let bp = V(W)
403- $Tuple2(bp, true)
416+ let br = X(Y)
417+ $Tuple2(br, true)
404418 }
405419
406420
407421
408-@Callable(aF)
409-func claimReward (aG) = {
410- let bb = M(aF.payments[0])
411- if ((bb == bb))
412- then if ((g((aG + "_owner")) != toString(aF.caller)))
422+@Callable(aH)
423+func claimReward (aI) = {
424+ let bd = P(aH.payments[0])
425+ if ((bd == bd))
426+ then if ((j((aI + "_owner")) != toString(aH.caller)))
413427 then throw("You don't own this duck!!")
414- else if ((size(aF.payments) > 1))
428+ else if ((size(aH.payments) > 1))
415429 then throw("Please don't add extra payments")
416- else (au(toString(aF.caller), aG) ++ bb)
430+ else (aw(toString(aH.caller), aI) ++ bd)
417431 else throw("Strict value is not equal to itself.")
418432 }
419433
434+
435+@Verifier(bs)
436+func bt () = if (e())
437+ then sigVerify(bs.bodyBytes, bs.proofs[0], bs.senderPublicKey)
438+ else {
439+ let bu = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
440+ let bv = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
441+ let bw = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
442+ let bx = if (sigVerify(bs.bodyBytes, bs.proofs[0], bu))
443+ then 1
444+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bu))
445+ then 1
446+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bu))
447+ then 1
448+ else 0
449+ let by = if (sigVerify(bs.bodyBytes, bs.proofs[0], bv))
450+ then 1
451+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bv))
452+ then 1
453+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bv))
454+ then 1
455+ else 0
456+ let bz = if (sigVerify(bs.bodyBytes, bs.proofs[0], bw))
457+ then 1
458+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bw))
459+ then 1
460+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bw))
461+ then 1
462+ else 0
463+ let bA = ((bx + by) + bz)
464+ let c = bs
465+ (bA >= 2)
466+ }
420467
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+func a (b) = {
5+ let c = getBoolean(this, b)
6+ if ($isInstanceOf(c, "Boolean"))
7+ then {
8+ let d = c
9+ d
10+ }
11+ else false
12+ }
513
6-func b (c,d) = {
7- let e = getString(c, d)
8- if ($isInstanceOf(e, "String"))
14+
15+func e () = a("TESTENV")
16+
17+
18+let f = 100000000
19+
20+func g (h,b) = {
21+ let c = getString(h, b)
22+ if ($isInstanceOf(c, "String"))
923 then {
10- let f = e
11- f
24+ let i = c
25+ i
1226 }
1327 else ""
1428 }
1529
1630
17-func g (d) = b(this, d)
31+func j (b) = g(this, b)
1832
1933
20-func h () = "static_refContractAddress"
34+func k () = "static_refContractAddress"
2135
2236
23-let i = "global_lastCheck_interest"
37+let l = "global_lastCheck_interest"
2438
25-func j () = "static_oracleAddress"
39+func m () = "static_oracleAddress"
2640
2741
28-func k () = "static_eggAssetId"
42+func n () = "static_eggAssetId"
2943
3044
31-func l () = "static_incubatorAddress"
45+func o () = "static_incubatorAddress"
3246
3347
34-func m () = "static_breederAddress"
48+func p () = "static_breederAddress"
3549
3650
37-func n () = "static_accBoosterAddress"
51+func q () = "static_accBoosterAddress"
3852
3953
40-func o () = "static_duckWrapper"
54+func r () = "static_duckWrapper"
4155
4256
43-func p () = "static_couponsAddress"
57+func s () = "static_couponsAddress"
4458
4559
46-func q () = "static_burnAddress"
60+func t () = "static_burnAddress"
4761
4862
49-func r () = "static_extraFee"
63+func u () = "static_extraFee"
5064
5165
52-func s () = "static_feeAggregator"
66+func v () = "static_feeAggregator"
5367
5468
55-let t = "global_earnings"
69+let w = "global_earnings"
5670
57-func u () = "static_veggPerchFee"
71+func x () = "static_veggPerchFee"
5872
5973
60-func v () = "total_staked"
74+func y () = "total_staked"
6175
6276
63-func w () = Address(fromBase58String(g(j())))
77+func z () = Address(fromBase58String(j(m())))
6478
6579
66-func x () = fromBase58String(b(w(), k()))
80+func A () = fromBase58String(g(z(), n()))
6781
6882
69-func y () = Address(fromBase58String(b(w(), l())))
83+func B () = Address(fromBase58String(g(z(), o())))
7084
7185
72-func z () = Address(fromBase58String(b(w(), m())))
86+func C () = Address(fromBase58String(g(z(), p())))
7387
7488
75-func A () = Address(fromBase58String(b(w(), n())))
89+func D () = Address(fromBase58String(g(z(), q())))
7690
7791
78-func B () = Address(fromBase58String(b(w(), o())))
92+func E () = Address(fromBase58String(g(z(), r())))
7993
8094
81-func C () = Address(fromBase58String(b(w(), p())))
95+func F () = Address(fromBase58String(g(z(), s())))
8296
8397
84-func D () = Address(fromBase58String(b(w(), q())))
98+func G () = Address(fromBase58String(g(z(), t())))
8599
86100
87-func E () = Address(fromBase58String(b(w(), s())))
101+func H () = Address(fromBase58String(g(z(), v())))
88102
89103
90-func F () = Address(fromBase58String(b(w(), h())))
104+func I () = Address(fromBase58String(g(z(), k())))
91105
92106
93-func G (c,H) = (((("address_" + c) + "_asset_") + H) + "_lastCheckInterest")
107+func J (h,K) = (((("address_" + h) + "_asset_") + K) + "_lastCheckInterest")
94108
95109
96-func I (c,H) = (((("address_" + c) + "_asset_") + H) + "_farmingPower")
110+func L (h,K) = (((("address_" + h) + "_asset_") + K) + "_farmingPower")
97111
98112
99-func J (c,H) = (((c + "_asset_") + H) + "_claimed")
113+func M (h,K) = (((h + "_asset_") + K) + "_claimed")
100114
101115
102-func K (c) = ("total_staked_" + c)
116+func N (h) = ("total_staked_" + h)
103117
104118
105-let L = 5
119+let O = 5
106120
107-func M (N) = if (isDefined(N.assetId))
121+func P (Q) = if (isDefined(Q.assetId))
108122 then throw("FCAP: Please attach waves")
109123 else {
110- let O = getIntegerValue(w(), r())
111- if ((N.amount != O))
112- then throw((("FCAP: Please attach exactly " + toString(O)) + " amount of wavelets"))
113- else [ScriptTransfer(E(), O, unit)]
124+ let R = getIntegerValue(z(), u())
125+ if ((Q.amount != R))
126+ then throw((("FCAP: Please attach exactly " + toString(R)) + " amount of wavelets"))
127+ else [ScriptTransfer(H(), R, unit)]
114128 }
115129
116130
117-func P (d) = {
118- let e = getInteger(this, d)
119- if ($isInstanceOf(e, "Int"))
131+func S (b) = {
132+ let c = getInteger(this, b)
133+ if ($isInstanceOf(c, "Int"))
120134 then {
121- let Q = e
122- Q
135+ let d = c
136+ d
123137 }
124138 else 0
125139 }
126140
127141
128-func R (S) = {
129- let e = S
130- if ($isInstanceOf(e, "Int"))
142+func T (U) = {
143+ let c = U
144+ if ($isInstanceOf(c, "Int"))
131145 then {
132- let T = e
133- T
146+ let V = c
147+ V
134148 }
135149 else throw("FAI: wrong type, expected: Int")
136150 }
137151
138152
139-func U (S) = {
140- let e = S
141- if ($isInstanceOf(e, "(Int, Int)"))
153+func W (U) = {
154+ let c = U
155+ if ($isInstanceOf(c, "(Int, Int)"))
142156 then {
143- let T = e
144- T
157+ let V = c
158+ V
145159 }
146160 else throw("FAI: wrong type, expected: (Int,Int)")
147161 }
148162
149163
150-func V (W) = {
151- let X = P(i)
152- let Y = P(v())
153- let Z = if ((Y > 0))
154- then fraction(W, a, Y)
164+func X (Y) = {
165+ let Z = S(l)
166+ let aa = S(y())
167+ let ab = if ((aa > 0))
168+ then fraction(Y, f, aa)
155169 else 0
156-[IntegerEntry(t, (P(t) + W)), IntegerEntry(i, (X + Z))]
170+[IntegerEntry(w, (S(w) + Y)), IntegerEntry(l, (Z + ab))]
157171 }
158172
159173
160-func aa (S) = {
161- let e = S
162- if ($isInstanceOf(e, "String"))
174+func ac (U) = {
175+ let c = U
176+ if ($isInstanceOf(c, "String"))
163177 then {
164- let ab = e
165- ab
178+ let ad = c
179+ ad
166180 }
167181 else throw("FAS: wrong type, expected: String")
168182 }
169183
170184
171-func ac (d) = {
172- let e = getBoolean(this, d)
173- if ($isInstanceOf(e, "Boolean"))
185+func ae (b) = {
186+ let c = getBoolean(this, b)
187+ if ($isInstanceOf(c, "Boolean"))
174188 then {
175- let Q = e
176- Q
189+ let d = c
190+ d
177191 }
178192 else false
179193 }
180194
181195
182-func ad (c,d) = {
183- let e = getBoolean(c, d)
184- if ($isInstanceOf(e, "Boolean"))
196+func af (h,b) = {
197+ let c = getBoolean(h, b)
198+ if ($isInstanceOf(c, "Boolean"))
185199 then {
186- let Q = e
187- Q
200+ let d = c
201+ d
188202 }
189203 else false
190204 }
191205
192206
193-func ae (af) = if ((af == "G"))
194- then y()
195- else z()
207+func ag (ah) = if ((ah == "G"))
208+ then B()
209+ else C()
196210
197211
198-func ag (ah,af) = {
199- let ai = valueOrErrorMessage(getInteger(ae(af), (("stats_" + ah) + "_quantity")), (("stats_" + ah) + "_quantity not found"))
200- let aj = pow((10000 / ai), 4, 5, 1, 2, FLOOR)
201- if ((aj > 0))
202- then aj
212+func ai (aj,ah) = {
213+ let ak = valueOrErrorMessage(getInteger(ag(ah), (("stats_" + aj) + "_quantity")), (("stats_" + aj) + "_quantity not found"))
214+ let al = pow((10000 / ak), 4, 5, 1, 2, FLOOR)
215+ if ((al > 0))
216+ then al
203217 else 2
204218 }
205219
206220
207-func ak (al,am) = {
208- let an = if (al)
221+func am (an,ao) = {
222+ let ap = if (an)
209223 then 100
210224 else {
211- let af = take(takeRight(am, 2), 1)
212- let ao = aa(invoke(z(), "getGenFromName", [am], nil))
213- if ((ao == ao))
214- then ag(ao, af)
225+ let ah = take(takeRight(ao, 2), 1)
226+ let aq = ac(invoke(C(), "getGenFromName", [ao], nil))
227+ if ((aq == aq))
228+ then ai(aq, ah)
215229 else throw("Strict value is not equal to itself.")
216230 }
217- an
231+ ap
218232 }
219233
220234
221-func ap (c,H) = {
222- let aq = P(v())
223- let ar = P(K(c))
224- let as = P(I(c, H))
225- let at = U(invoke(this, "calculateFarmPower", [H], nil))
226-[IntegerEntry(v(), ((P(v()) - as) + at._1)), IntegerEntry(K(c), ((P(K(c)) - as) + at._1)), IntegerEntry(I(c, H), at._1), IntegerEntry("DEBUG_currentFP", as), IntegerEntry("DEBUG_newFP", at._1)]
235+func ar (h,K) = {
236+ let as = S(y())
237+ let at = S(N(h))
238+ let au = S(L(h, K))
239+ let av = W(invoke(this, "calculateFarmPower", [K], nil))
240+[IntegerEntry(y(), ((S(y()) - au) + av._1)), IntegerEntry(N(h), ((S(N(h)) - au) + av._1)), IntegerEntry(L(h, K), av._1), IntegerEntry("DEBUG_currentFP", au), IntegerEntry("DEBUG_newFP", av._1)]
227241 }
228242
229243
230-func au (c,H) = {
231- let X = P(i)
232- let av = P(G(c, H))
233- let aw = P(I(c, H))
234- let ax = ap(c, H)
235- let ay = if ((av > 0))
236- then fraction((X - av), aw, a)
244+func aw (h,K) = {
245+ let Z = S(l)
246+ let ax = S(J(h, K))
247+ let ay = S(L(h, K))
248+ let az = ar(h, K)
249+ let aA = if ((ax > 0))
250+ then fraction((Z - ax), ay, f)
237251 else 0
238- let az = if ((ay > 0))
239- then invoke(C(), "addCouponsFarming", [c, ay], nil)
252+ let aB = if ((aA > 0))
253+ then invoke(F(), "addCouponsFarming", [h, aA], nil)
240254 else unit
241- if ((az == az))
242- then ([IntegerEntry(G(c, H), X), IntegerEntry(J(c, H), (P(J(c, H)) + ay))] ++ ax)
255+ if ((aB == aB))
256+ then ([IntegerEntry(J(h, K), Z), IntegerEntry(M(h, K), (S(M(h, K)) + aA))] ++ az)
243257 else throw("Strict value is not equal to itself.")
244258 }
245259
246260
247-func aA (S) = {
248- let e = S
249- if ($isInstanceOf(e, "Boolean"))
261+func aC (U) = {
262+ let c = U
263+ if ($isInstanceOf(c, "Boolean"))
250264 then {
251- let aB = e
252- aB
265+ let aD = c
266+ aD
253267 }
254268 else throw("FAB: wrong type, expected: Boolean")
255269 }
256270
257271
258-func aC (c) = {
259- let aD = b(A(), (("ART-XMISTL_" + c) + "_owner"))
260- let aE = getIntegerValue(w(), u())
261- if ((aD == ""))
262- then aE
263- else aE
272+func aE (h) = {
273+ let aF = g(D(), (("ART-XMISTL_" + h) + "_owner"))
274+ let aG = getIntegerValue(z(), x())
275+ if ((aF == ""))
276+ then aG
277+ else aG
264278 }
265279
266280
267-@Callable(aF)
268-func calculateFarmPower (aG) = if (!(if ((value(assetInfo(fromBase58String(aG))).issuer == z()))
281+@Callable(aH)
282+func calculateFarmPower (aI) = if (!(if ((value(assetInfo(fromBase58String(aI))).issuer == C()))
269283 then true
270- else (value(assetInfo(fromBase58String(aG))).issuer == y())))
284+ else (value(assetInfo(fromBase58String(aI))).issuer == B())))
271285 then throw("This does not seem like a valid Duck!")
272286 else {
273- let am = value(assetInfo(fromBase58String(aG))).name
274- let aH = takeRight(am, 1)
275- let al = (takeRight(am, 1) == "U")
276- let an = ak(al, am)
277- let ah = split(dropRight(drop(am, 5), 3), "")
278- func aI (aJ,aK) = if (!(containsElement(aJ, aK)))
279- then (aJ :+ aK)
280- else aJ
287+ let ao = value(assetInfo(fromBase58String(aI))).name
288+ let aJ = takeRight(ao, 1)
289+ let an = (takeRight(ao, 1) == "U")
290+ let ap = am(an, ao)
291+ let aj = split(dropRight(drop(ao, 5), 3), "")
292+ func aK (aL,aM) = if (!(containsElement(aL, aM)))
293+ then (aL :+ aM)
294+ else aL
281295
282- let aL = {
283- let aM = ah
284- let aN = size(aM)
285- let aO = nil
286- func aP (aQ,aR) = if ((aR >= aN))
287- then aQ
288- else aI(aQ, aM[aR])
296+ let aN = {
297+ let aO = aj
298+ let aP = size(aO)
299+ let aQ = nil
300+ func aR (aS,aT) = if ((aT >= aP))
301+ then aS
302+ else aK(aS, aO[aT])
289303
290- func aS (aQ,aR) = if ((aR >= aN))
291- then aQ
304+ func aU (aS,aT) = if ((aT >= aP))
305+ then aS
292306 else throw("List size exceeds 8")
293307
294- aS(aP(aP(aP(aP(aP(aP(aP(aP(aO, 0), 1), 2), 3), 4), 5), 6), 7), 8)
308+ aU(aR(aR(aR(aR(aR(aR(aR(aR(aQ, 0), 1), 2), 3), 4), 5), 6), 7), 8)
295309 }
296- let aT = if ((aH == "U"))
310+ let aV = if ((aJ == "U"))
297311 then 8
298- else size(aL)
299- let aj = pow(15, 1, aT, 0, 2, DOWN)
300- let aU = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
301- let aV = P((aG + "_basePower"))
302- let aW = if ((aV > 0))
303- then aV
304- else ((aj * aU) / 100)
305- let aX = ((aW * an) / 100)
306- $Tuple2([IntegerEntry(("DEBUG_" + am), aW), IntegerEntry(("DEBUG_RARITY" + am), an), IntegerEntry(("DEBUG_FPRARITY_" + am), aX), IntegerEntry(("DEBUG_BASEPOWER_" + am), aV), IntegerEntry(("DEBUG_COEFFICIENT_" + am), aU)], $Tuple2(aX, aW))
312+ else size(aN)
313+ let al = pow(15, 1, aV, 0, 2, DOWN)
314+ let aW = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
315+ let aX = S((aI + "_basePower"))
316+ let aY = if ((aX > 0))
317+ then aX
318+ else ((al * aW) / 100)
319+ let aZ = ((aY * ap) / 100)
320+ $Tuple2([IntegerEntry(("DEBUG_" + ao), aY), IntegerEntry(("DEBUG_RARITY" + ao), ap), IntegerEntry(("DEBUG_FPRARITY_" + ao), aZ), IntegerEntry(("DEBUG_BASEPOWER_" + ao), aX), IntegerEntry(("DEBUG_COEFFICIENT_" + ao), aW)], $Tuple2(aZ, aY))
307321 }
308322
309323
310324
311-@Callable(aF)
312-func configureOracle (aY) = if ((aF.caller != this))
325+@Callable(aH)
326+func configureOracle (ba) = if ((aH.caller != this))
313327 then throw("FCO: admin only")
314- else [StringEntry(j(), aY)]
328+ else [StringEntry(m(), ba)]
315329
316330
317331
318-@Callable(aF)
319-func buyPerch (aZ,ba) = {
320- let bb = M(aF.payments[0])
321- if ((bb == bb))
332+@Callable(aH)
333+func buyPerch (bb,bc) = {
334+ let bd = P(aH.payments[0])
335+ if ((bd == bd))
322336 then {
323- let bc = if ((aZ == "U"))
337+ let be = if ((bb == "U"))
324338 then "B"
325- else aZ
326- if ((0 > value(indexOf(["B", "R", "G", "Y"], bc))))
339+ else bb
340+ if ((0 > value(indexOf(["B", "R", "G", "Y"], be))))
327341 then throw("you need to set color properly")
328342 else {
329- let bd = aC(toString(aF.caller))
330- let be = if ((size(aF.payments) == 2))
331- then value(aF.payments[1])
332- else value(aF.payments[0])
333- if ((be.assetId != x()))
334- then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(x())))
335- else if ((be.amount != bd))
336- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bd)) + " ") + toString(aF.caller)))
343+ let bf = aE(toString(aH.caller))
344+ let bg = if ((size(aH.payments) == 2))
345+ then value(aH.payments[1])
346+ else value(aH.payments[0])
347+ if ((bg.assetId != A()))
348+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(A())))
349+ else if ((bg.amount != bf))
350+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bf)) + " ") + toString(aH.caller)))
337351 else {
338- let bf = fraction(bd, 5, 100)
339- let bg = aA(invoke(F(), "refPayment", [ba], [AttachedPayment(x(), bf)]))
340- if ((bg == bg))
352+ let bh = fraction(bf, 5, 100)
353+ let bi = aC(invoke(I(), "refPayment", [bc], [AttachedPayment(A(), bh)]))
354+ if ((bi == bi))
341355 then {
342- let bh = if (bg)
343- then (bd - bf)
344- else bd
345- let bi = invoke(D(), "burnAttachedPayments", nil, [AttachedPayment(x(), bh)])
346- if ((bi == bi))
356+ let bj = if (bi)
357+ then (bf - bh)
358+ else bf
359+ let bk = invoke(G(), "burnAttachedPayments", nil, [AttachedPayment(A(), bj)])
360+ if ((bk == bk))
347361 then {
348- let bj = ((("address_" + toString(aF.caller)) + "_perchesAvailable_") + bc)
349- let bk = P(bj)
350- ([IntegerEntry(bj, (bk + 1))] ++ bb)
362+ let bl = ((("address_" + toString(aH.caller)) + "_perchesAvailable_") + be)
363+ let bm = S(bl)
364+ ([IntegerEntry(bl, (bm + 1))] ++ bd)
351365 }
352366 else throw("Strict value is not equal to itself.")
353367 }
354368 else throw("Strict value is not equal to itself.")
355369 }
356370 }
357371 }
358372 else throw("Strict value is not equal to itself.")
359373 }
360374
361375
362376
363-@Callable(aF)
364-func stakeNFT (bl) = {
365- let bb = M(aF.payments[0])
366- if ((bb == bb))
377+@Callable(aH)
378+func stakeNFT (bn) = {
379+ let bd = P(aH.payments[0])
380+ if ((bd == bd))
367381 then {
368- let bm = value(aF.payments[1])
369- let aG = value(bm.assetId)
370- let am = value(value(assetInfo(aG)).name)
371- let al = (takeRight(am, 1) == "U")
372- let c = toString(aF.caller)
373- let an = ak(al, am)
374- if ((70 > an))
382+ let bo = value(aH.payments[1])
383+ let aI = value(bo.assetId)
384+ let ao = value(value(assetInfo(aI)).name)
385+ let an = (takeRight(ao, 1) == "U")
386+ let h = toString(aH.caller)
387+ let ap = am(an, ao)
388+ if ((70 > ap))
375389 then throw("Only ducks with a rarity above 70 can be locked!")
376390 else {
377- let bc = if (al)
378- then bl
379- else takeRight(am, 1)
380- let bn = P(((("address_" + c) + "_perchesAvailable_") + bc))
381- if ((bm.amount != 1))
391+ let be = if (an)
392+ then bn
393+ else takeRight(ao, 1)
394+ let bp = S(((("address_" + h) + "_perchesAvailable_") + be))
395+ if ((bo.amount != 1))
382396 then throw("NFT is not attached")
383- else if ((0 >= bn))
384- then throw(("no perches available for the color " + bc))
397+ else if ((0 >= bp))
398+ then throw(("no perches available for the color " + be))
385399 else {
386- let bo = U(invoke(this, "calculateFarmPower", [toBase58String(aG)], nil))
387- if ((bo == bo))
388- then (([IntegerEntry(v(), (P(v()) + bo._1)), IntegerEntry(K(c), (P(K(c)) + bo._1)), IntegerEntry(((("address_" + c) + "_perchesAvailable_") + bc), (bn - 1)), StringEntry((toBase58String(aG) + "_owner"), c), IntegerEntry(I(c, toBase58String(aG)), bo._1), IntegerEntry((toBase58String(aG) + "_basePower"), bo._2), StringEntry((((("address_" + c) + "_asset_") + toBase58String(aG)) + "_perchColor"), bc)] ++ au(c, toBase58String(aG))) ++ bb)
400+ let bq = W(invoke(this, "calculateFarmPower", [toBase58String(aI)], nil))
401+ if ((bq == bq))
402+ then (([IntegerEntry(y(), (S(y()) + bq._1)), IntegerEntry(N(h), (S(N(h)) + bq._1)), IntegerEntry(((("address_" + h) + "_perchesAvailable_") + be), (bp - 1)), StringEntry((toBase58String(aI) + "_owner"), h), IntegerEntry(L(h, toBase58String(aI)), bq._1), IntegerEntry((toBase58String(aI) + "_basePower"), bq._2), StringEntry((((("address_" + h) + "_asset_") + toBase58String(aI)) + "_perchColor"), be)] ++ aw(h, toBase58String(aI))) ++ bd)
389403 else throw("Strict value is not equal to itself.")
390404 }
391405 }
392406 }
393407 else throw("Strict value is not equal to itself.")
394408 }
395409
396410
397411
398-@Callable(aF)
399-func topUpReward (W) = if ((aF.caller != C()))
412+@Callable(aH)
413+func topUpReward (Y) = if ((aH.caller != F()))
400414 then throw("VFTUP: Only couponsdapp can do topup!")
401415 else {
402- let bp = V(W)
403- $Tuple2(bp, true)
416+ let br = X(Y)
417+ $Tuple2(br, true)
404418 }
405419
406420
407421
408-@Callable(aF)
409-func claimReward (aG) = {
410- let bb = M(aF.payments[0])
411- if ((bb == bb))
412- then if ((g((aG + "_owner")) != toString(aF.caller)))
422+@Callable(aH)
423+func claimReward (aI) = {
424+ let bd = P(aH.payments[0])
425+ if ((bd == bd))
426+ then if ((j((aI + "_owner")) != toString(aH.caller)))
413427 then throw("You don't own this duck!!")
414- else if ((size(aF.payments) > 1))
428+ else if ((size(aH.payments) > 1))
415429 then throw("Please don't add extra payments")
416- else (au(toString(aF.caller), aG) ++ bb)
430+ else (aw(toString(aH.caller), aI) ++ bd)
417431 else throw("Strict value is not equal to itself.")
418432 }
419433
434+
435+@Verifier(bs)
436+func bt () = if (e())
437+ then sigVerify(bs.bodyBytes, bs.proofs[0], bs.senderPublicKey)
438+ else {
439+ let bu = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
440+ let bv = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
441+ let bw = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
442+ let bx = if (sigVerify(bs.bodyBytes, bs.proofs[0], bu))
443+ then 1
444+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bu))
445+ then 1
446+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bu))
447+ then 1
448+ else 0
449+ let by = if (sigVerify(bs.bodyBytes, bs.proofs[0], bv))
450+ then 1
451+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bv))
452+ then 1
453+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bv))
454+ then 1
455+ else 0
456+ let bz = if (sigVerify(bs.bodyBytes, bs.proofs[0], bw))
457+ then 1
458+ else if (sigVerify(bs.bodyBytes, bs.proofs[1], bw))
459+ then 1
460+ else if (sigVerify(bs.bodyBytes, bs.proofs[2], bw))
461+ then 1
462+ else 0
463+ let bA = ((bx + by) + bz)
464+ let c = bs
465+ (bA >= 2)
466+ }
420467

github/deemru/w8io/026f985 
150.24 ms