tx · EQVPsKZcHmA1Qcn2G67M57Ykway7mF1EREquAEnzWCrk

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.01400000 Waves

2022.06.06 14:20 [3150009] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "EQVPsKZcHmA1Qcn2G67M57Ykway7mF1EREquAEnzWCrk", "fee": 1400000, "feeAssetId": null, "timestamp": 1654514438977, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "5M8UXkC5jtZbsJsXPUKWoTLrXf3x1z1Th1H8Va8zDBaZwm6BWP95TrhXK4sZpCpGE1uLdGhLAsPBWjcNzUVL1vtN" ], "script": "base64:AAIFAAAAAAAAAC0IAhIDCgEIEgASBAoCCAgSBAoCCAgSABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAApAAAAAApwZXJjaFByaWNlCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAPQkAAAAAABXNjYWxlAAAAAAAAACcQAAAAAAZzY2FsZTIAAAAAAAAPQkABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAABNnZXRTd29wUHJvbW9BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfc3dvcFByb21vQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAGHN0YXRpY19hY2NCb29zdGVyQWRkcmVzcwEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfdHJ1c3RlZENvbnRyYWN0cwEAAAAOZ2V0TWFpbnRlbmFuY2UAAAAACQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX21haW50ZW5hbmNlAQAAABJnZXRDZk1hc3RlckFk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AAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAADW5vdCB2YWxpZCBORlQBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAANX2Zhcm1pbmdQb3dlcgEAAAAOZ2V0QXNzZXRzQnlHZW4AAAABAAAAA2dlbgQAAAABcwkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAADZ2VuAwkAAAAAAAACBQAAAAFzAgAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzAgAAAAEsAQAAAAxjYWxjSW50ZXJlc3QAAAADAAAAEHByZXZpb3VzSW50ZXJlc3QAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAAAABF0b3RhbEZhcm1pbmdQb3dlcgkAAGQAAAACBQAAABBwcmV2aW91c0ludGVyZXN0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAVzY2FsZQkBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAAAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAQcHJldmlvdXNJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQAAAARdG90YWxGYXJtaW5nUG93ZXIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQEAAAAMY2FsY0ludGVyZXN0AAAAAwUAAAAQcHJldmlvdXNJbnRlcmVzdAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIDCQEAAAACIT0AAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEXRvdGFsX3N0YXJ0SGVpZ2h0AAAAAAAAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQAAAgAAAAECAAAAHGZhcm1pbmcgaXMgbm90IGxhdW5jaGVkLCB5ZXQBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAAaAAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAEAAAAUYWRkQXNzZXRJZFRvR2VuRW50cnkAAAACAAAAB2Fzc2V0SWQAAAAIYXNzZXRHZW4EAAAADGN1cnJlbnRWYWx1ZQkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdhc3NldHNfBQAAAAhhc3NldEdlbgIAAAAHX2xvY2tlZAMJAAAAAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAAFAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAASwFAAAAB2Fzc2V0SWQBAAAADmdldFN0YWtlUmVzdWx0AAAABAAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIAAAAIdW5zdGFrZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGYXNzZXRfBQAAAAVhc3NldAIAAAAGX293bmVyBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABJfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAlfdW5zdGFrZXIFAAAACHVuc3Rha2VyBQAAAANuaWwBAAAAEGdldFVuc3Rha2VSZXN1bHQAAAAFAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAAAtyZXdhcmREZWx0YQAAAA93aXRoZHJhd25BbW91bnQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGYXNzZXRfBQAAAAVhc3NldAIAAAAGX293bmVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEl9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAPd2l0aGRyYXduQW1vdW50BQAAAAZzY2FsZTIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQFAAAAC3Jld2FyZERlbHRhBQAAAANuaWwBAAAAE2NhbGN1bGF0ZVBlcmNoUHJpY2UAAAABAAAAB2FkZHJlc3MEAAAAEWhhc0FydGVmYWN0U3Rha2VkCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQABLAAAAAIJAAEsAAAAAgIAAAALQVJULVhNSVNUTF8FAAAAB2FkZHJlc3MCAAAABl9vd25lcgMJAAAAAAAAAgUAAAARaGFzQXJ0ZWZhY3RTdGFrZWQCAAAAAAUAAAAKcGVyY2hQcmljZQkAAGgAAAACCQAAaQAAAAIFAAAACnBlcmNoUHJpY2UAAAAAAAAAAAoAAAAAAAAAAAkBAAAAC2lzVHJ1c3RlZFNjAAAAAQAAAAdhZGRyZXNzBAAAABBhbGxvd2VkQ29udHJhY3RzCQEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAEAAAAFGFsbG93ZWRD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eW91IHdpbGwgYmUgbm90IGFibGUgdG8gY2xhaW0geW91ciBmYXJtaW5nIHJld2FyZHMgdGlsbCB0aGUgZW5kIG9mIER1Y2tTcXVpZCBnYW1lLiBRdWFjayBpbiBwZWFjZSEEAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAFYXNzZXQEAAAABWNvbG9yCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAC19wZXJjaENvbG9yBAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIFAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAQAAAAGcmV3YXJkCQAAaQAAAAIJAABlAAAAAgUAAAAMZmFybWVkQW1vdW50BQAAAA93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAFc2NhbGUAAAAAAAAAAGQEAAAACHVuc3Rha2VyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAA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", "height": 3150009, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 49HFdCE23qpe6RY5EmCzuvuTsMuLyEuDvuXZtpkvSDY2 Next: 9uL7bkYat89d43MjfuG8JkFzDcDRCWetbsqoS5W2jSiA Diff:
OldNewDifferences
122122 let N = g
123123 N
124124 }
125- else throw("wrong type, expected: String")
125+ else throw("FAS: wrong type, expected: String")
126126 }
127127
128128
133133 let P = g
134134 P
135135 }
136- else throw("wrong type, expected: Int")
136+ else throw("FAI: wrong type, expected: Int")
137137 }
138138
139139
228228 }
229229
230230
231-@Callable(av)
232-func configureOracle (aw) = if ((av.caller != this))
233- then throw("admin only")
234- else [StringEntry("static_oracleAddress", aw)]
231+func av (e) = {
232+ let aw = t()
233+ let ax = split(aw, ";")
234+ (indexOf(ax, e) == unit)
235+ }
236+
237+
238+@Callable(ay)
239+func configureOracle (az) = if ((ay.caller != this))
240+ then throw("FCO: admin only")
241+ else [StringEntry("static_oracleAddress", az)]
235242
236243
237244
238-@Callable(av)
239-func init () = if ((av.caller != this))
240- then throw("admin only")
245+@Callable(ay)
246+func init () = if ((ay.caller != this))
247+ then throw("FI: admin only")
241248 else [IntegerEntry("total_startHeight", height)]
242249
243250
244251
245-@Callable(av)
246-func buyPerch (ax,ay) = {
247- let az = A()
248- if ((az == az))
249- then if ((0 > value(indexOf(["B", "R", "G", "Y"], ax))))
252+@Callable(ay)
253+func buyPerch (aA,aB) = {
254+ let aC = A()
255+ if ((aC == aC))
256+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aA))))
250257 then throw("you need to set color properly")
251258 else {
252- let aA = at(toString(av.caller))
253- let aB = O(invoke(x(), "useCoupons", [aA], nil))
254- if ((aB == aB))
259+ let aD = at(toString(ay.caller))
260+ let aE = O(invoke(x(), "useCoupons", [aD], nil))
261+ if ((aE == aE))
255262 then {
256- let aC = (aA - aB)
257- let aD = if ((aC != 0))
263+ let aF = (aD - aE)
264+ let aG = if ((aF != 0))
258265 then {
259- let aE = value(av.payments[0])
260- if ((aE.assetId != k()))
261- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
262- else if ((aE.amount != aC))
263- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(aC)))
266+ let aH = value(ay.payments[0])
267+ if ((aH.assetId != k()))
268+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
269+ else if ((aH.amount != aF))
270+ then throw(("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(aF)))
264271 else {
265- let aF = fraction(aC, y, 100)
266- let aG = invoke(p(), "refPayment", [ay], [AttachedPayment(k(), aF)])
267- if ((aG == aG))
268- then aC
272+ let aI = fraction(aF, y, 100)
273+ let aJ = invoke(p(), "refPayment", [aB], [AttachedPayment(k(), aI)])
274+ if ((aJ == aJ))
275+ then aF
269276 else throw("Strict value is not equal to itself.")
270277 }
271278 }
272279 else 0
273- if ((aD == aD))
280+ if ((aG == aG))
274281 then {
275- let aH = ((("address_" + toString(av.caller)) + "_perchesAvailable_") + ax)
276- let aI = B(aH)
277-[IntegerEntry(aH, (aI + 1))]
282+ let aK = ((("address_" + toString(ay.caller)) + "_perchesAvailable_") + aA)
283+ let aL = B(aK)
284+[IntegerEntry(aK, (aL + 1))]
278285 }
279286 else throw("Strict value is not equal to itself.")
280287 }
285292
286293
287294
288-@Callable(av)
289-func addFreePerch (e,ax) = {
290- let az = A()
291- if ((az == az))
292- then if ((0 > value(indexOf(["B", "R", "G", "Y"], ax))))
295+@Callable(ay)
296+func addFreePerch (e,aA) = {
297+ let aC = A()
298+ if ((aC == aC))
299+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aA))))
293300 then throw("you need to set color properly")
294- else if (if (if ((av.caller != m()))
295- then (av.caller != this)
301+ else if (if (if ((ay.caller != m()))
302+ then (ay.caller != this)
296303 else false)
297- then (av.caller != n())
304+ then (ay.caller != n())
298305 else false)
299306 then throw("rebirth and swop promo only")
300307 else {
301- let aH = ((("address_" + e) + "_perchesAvailable_") + ax)
302- let aI = B(aH)
303- $Tuple2([IntegerEntry(aH, (aI + 1))], "")
308+ let aK = ((("address_" + e) + "_perchesAvailable_") + aA)
309+ let aL = B(aK)
310+ $Tuple2([IntegerEntry(aK, (aL + 1))], "")
304311 }
305312 else throw("Strict value is not equal to itself.")
306313 }
307314
308315
309316
310-@Callable(av)
317+@Callable(ay)
311318 func stakeNFT () = {
312- let az = A()
313- if ((az == az))
319+ let aC = A()
320+ if ((aC == aC))
314321 then {
315- let aJ = value(av.payments[0])
316- let R = value(value(av.payments[0]).assetId)
317- let aK = toString(av.caller)
318- let e = if (if ((r() == av.caller))
319- then true
320- else (w() == av.caller))
321- then aK
322- else toString(av.originCaller)
323- let ax = takeRight(value(assetInfo(R)).name, 1)
324- let aL = B(((("address_" + e) + "_perchesAvailable_") + ax))
325- if ((aJ.amount != 1))
322+ let aM = value(ay.payments[0])
323+ let R = value(value(ay.payments[0]).assetId)
324+ let aN = toString(ay.caller)
325+ let e = if (av(toString(ay.caller)))
326+ then toString(ay.originCaller)
327+ else aN
328+ let aA = takeRight(value(assetInfo(R)).name, 1)
329+ let aO = B(((("address_" + e) + "_perchesAvailable_") + aA))
330+ if ((aM.amount != 1))
326331 then throw("NFT is not attached")
327- else if ((0 >= aL))
328- then throw(("no perches available for the color " + ax))
332+ else if ((0 >= aO))
333+ then throw(("no perches available for the color " + aA))
329334 else {
330- let aM = Q(R, e)
331- let al = aM._1
332- let ah = aM._2
333- (an(e, R, ah, aK) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (aL - 1))])
335+ let aP = Q(R, e)
336+ let al = aP._1
337+ let ah = aP._2
338+ (an(e, R, ah, aN) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (aO - 1))])
334339 }
335340 }
336341 else throw("Strict value is not equal to itself.")
338343
339344
340345
341-@Callable(av)
346+@Callable(ay)
342347 func stakeNFTWithoutPerch () = {
343- let az = A()
344- if ((az == az))
348+ let aC = A()
349+ if ((aC == aC))
345350 then {
346- let aN = t()
347- let aO = split(aN, ";")
348- let aP = toString(av.caller)
349- if ((indexOf(aO, aP) == unit))
350- then throw("Only trusted smart contracts can stake without a perch!")
351+ let aQ = toString(ay.caller)
352+ if (av(aQ))
353+ then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
351354 else {
352- let aJ = value(av.payments[0])
353- let R = value(value(av.payments[0]).assetId)
354- let e = toString(av.originCaller)
355- if ((aJ.amount != 1))
355+ let aM = value(ay.payments[0])
356+ let R = value(value(ay.payments[0]).assetId)
357+ let e = toString(ay.originCaller)
358+ if ((aM.amount != 1))
356359 then throw("NFT is not attached")
357360 else {
358- let aQ = Q(R, e)
359- let al = aQ._1
360- let ah = aQ._2
361+ let aR = Q(R, e)
362+ let al = aR._1
363+ let ah = aR._2
361364 let ap = toBase58String(R)
362- let aK = toString(av.caller)
363- (an(e, R, ah, aK) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"), true)])
365+ let aN = toString(ay.caller)
366+ (an(e, R, ah, aN) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"), true)])
364367 }
365368 }
366369 }
369372
370373
371374
372-@Callable(av)
375+@Callable(ay)
373376 func unstakeNFT (ap) = {
374- let az = A()
375- if ((az == az))
377+ let aC = A()
378+ if ((aC == aC))
376379 then {
377- let aR = toString(av.originCaller)
378- if (E(aR))
379- 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!")
380+ let aS = toString(ay.originCaller)
381+ if (E(aS))
382+ then throw("FUN: 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!")
380383 else {
381384 let R = fromBase58String(ap)
382- let ao = i((((("address_" + aR) + "_asset_") + ap) + "_unstaker"))
383- let e = if (if ((r() == av.caller))
384- then true
385- else (w() == av.caller))
386- then toString(av.caller)
387- else aR
385+ let ao = i((((("address_" + aS) + "_asset_") + ap) + "_unstaker"))
386+ let e = if (av(toString(ay.caller)))
387+ then aS
388+ else toString(ay.caller)
388389 let ah = Y(e, ap)
389- let aS = ag(e, ap, ah)
390- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
390+ let aT = ag(e, ap, ah)
391+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
391392 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
392- let aU = ((aT - as) / (b * 100))
393- let ax = takeRight(value(assetInfo(R)).name, 1)
394- let aK = toString(av.caller)
393+ let aV = ((aU - as) / (b * 100))
394+ let aA = takeRight(value(assetInfo(R)).name, 1)
395+ let aN = toString(ay.caller)
395396 if (if ((ao != ""))
396- then (ao != aK)
397+ then (ao != aN)
397398 else false)
398- then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
399+ then throw("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
399400 else if ((0 >= ah))
400- then throw("asset not available")
401+ then throw("FUN: asset not available")
401402 else {
402- let aV = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
403- if ((ax == "U"))
404- then throw("use another function to unstake Jackpot NFT")
403+ let aW = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
404+ if ((aA == "U"))
405+ then throw("FUN: use another function to unstake Jackpot NFT")
405406 else {
406- let aW = aq(e, R, aS, aU, ah)
407- let aX = if (aV)
407+ let aX = aq(e, R, aT, aV, ah)
408+ let aY = if (aW)
408409 then [DeleteEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"))]
409- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (B(((("address_" + e) + "_perchesAvailable_") + ax)) + 1))]
410- $Tuple2(((aW ++ [ScriptTransfer(av.caller, (aU * 1000000), k()), ScriptTransfer(av.caller, 1, R)]) ++ aX), (aU * 1000000))
410+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (B(((("address_" + e) + "_perchesAvailable_") + aA)) + 1))]
411+ $Tuple2(((aX ++ [ScriptTransfer(ay.caller, (aV * 1000000), k()), ScriptTransfer(ay.caller, 1, R)]) ++ aY), (aV * 1000000))
411412 }
412413 }
413414 }
417418
418419
419420
420-@Callable(av)
421-func stakeJackpot (ax) = {
422- let az = A()
423- if ((az == az))
421+@Callable(ay)
422+func stakeJackpot (aA) = {
423+ let aC = A()
424+ if ((aC == aC))
424425 then {
425- let aJ = value(av.payments[0])
426- let R = value(aJ.assetId)
427- let aK = toString(av.caller)
428- let e = if (if ((r() == av.caller))
429- then true
430- else (w() == av.caller))
431- then aK
432- else toString(av.originCaller)
433- let aL = B(((("address_" + e) + "_perchesAvailable_") + ax))
434- let aY = value(assetInfo(R)).issuer
435- if ((aJ.amount != 1))
426+ let aM = value(ay.payments[0])
427+ let R = value(aM.assetId)
428+ let aN = toString(ay.caller)
429+ let e = if (av(toString(ay.caller)))
430+ then toString(ay.originCaller)
431+ else aN
432+ let aO = B(((("address_" + e) + "_perchesAvailable_") + aA))
433+ let aZ = value(assetInfo(R)).issuer
434+ if ((aM.amount != 1))
436435 then throw("NFT is not attached")
437- else if (if ((aY == l()))
436+ else if (if ((aZ == l()))
438437 then true
439- else (aY == o()))
438+ else (aZ == o()))
440439 then if ((takeRight(value(value(assetInfo(R)).name), 1) != "U"))
441440 then throw("jackpot only")
442- else if ((0 >= aL))
443- then throw(("no perches available for the color " + ax))
441+ else if ((0 >= aO))
442+ then throw(("FSJ: no perches available for the color " + aA))
444443 else {
445- let aZ = Q(R, e)
446- (an(e, R, aZ._2, aK) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (aL - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(R)) + "_perchColor"), ax)])
444+ let ba = Q(R, e)
445+ (an(e, R, ba._2, aN) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (aO - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(R)) + "_perchColor"), aA)])
447446 }
448447 else throw("asset is not valid")
449448 }
452451
453452
454453
455-@Callable(av)
454+@Callable(ay)
456455 func unstakeJackpot (ap) = {
457- let az = A()
458- if ((az == az))
456+ let aC = A()
457+ if ((aC == aC))
459458 then {
460- let aK = toString(av.caller)
461- let e = if (if ((r() == av.caller))
462- then true
463- else (w() == av.caller))
464- then aK
465- else toString(av.originCaller)
459+ let aN = toString(ay.caller)
460+ let e = if (av(toString(ay.caller)))
461+ then toString(ay.originCaller)
462+ else aN
466463 if (E(e))
467- 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!")
464+ then throw("FUJ: 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!")
468465 else {
469466 let R = fromBase58String(ap)
470- let ax = i((((("address_" + e) + "_asset_") + ap) + "_perchColor"))
467+ let aA = i((((("address_" + e) + "_asset_") + ap) + "_perchColor"))
471468 let ah = Y(e, ap)
472- let aS = ag(e, ap, ah)
473- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
469+ let aT = ag(e, ap, ah)
470+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
474471 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
475- let aU = ((aT - as) / (b * 100))
472+ let aV = ((aU - as) / (b * 100))
476473 let ao = i((((("address_" + e) + "_asset_") + ap) + "_unstaker"))
477474 if (if ((ao != ""))
478- then (ao != aK)
475+ then (ao != aN)
479476 else false)
480- then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
477+ then throw("FUJ: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
481478 else if ((takeRight(value(value(assetInfo(R)).name), 1) != "U"))
482479 then throw("jackpot only")
483480 else if ((ah > 0))
484481 then {
485- let aW = aq(e, R, aS, aU, ah)
486- let aV = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
487- let aX = if (aV)
482+ let aX = aq(e, R, aT, aV, ah)
483+ let aW = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
484+ let aY = if (aW)
488485 then [DeleteEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"))]
489- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (B(((("address_" + e) + "_perchesAvailable_") + ax)) + 1))]
490- $Tuple2(((aW ++ aX) ++ [ScriptTransfer(av.caller, (aU * 1000000), k()), ScriptTransfer(av.caller, 1, R)]), (aU * 1000000))
486+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (B(((("address_" + e) + "_perchesAvailable_") + aA)) + 1))]
487+ $Tuple2(((aX ++ aY) ++ [ScriptTransfer(ay.caller, (aV * 1000000), k()), ScriptTransfer(ay.caller, 1, R)]), (aV * 1000000))
491488 }
492- else throw("Asset farming power not bigger then 0")
489+ else throw("FUJ: Asset farming power not bigger then 0")
493490 }
494491 }
495492 else throw("Strict value is not equal to itself.")
497494
498495
499496
500-@Callable(av)
497+@Callable(ay)
501498 func claimReward (ap) = {
502- let az = A()
503- if ((az == az))
499+ let aC = A()
500+ if ((aC == aC))
504501 then {
505- let e = if ((av.originCaller == v()))
506- then toString(av.caller)
507- else toString(av.originCaller)
502+ let e = if ((ay.originCaller == v()))
503+ then toString(ay.caller)
504+ else toString(ay.originCaller)
508505 if (E(e))
509- 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!")
506+ then throw("FCR: 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!")
510507 else {
511508 let R = fromBase58String(ap)
512509 let ah = Y(e, ap)
513- let aS = ag(e, ap, ah)
514- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
510+ let aT = ag(e, ap, ah)
511+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
515512 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
516- let aU = ((aT - as) / (b * 100))
517- if ((0 >= aU))
518- then throw("you have no EGGs to withdraw")
519- else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount")) + (aU * c))), ScriptTransfer(Address(fromBase58String(e)), (aU * 1000000), k())], (aU * 1000000))
513+ let aV = ((aU - as) / (b * 100))
514+ if ((0 >= aV))
515+ then throw("FCR: you have no EGGs to withdraw")
516+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount")) + (aV * c))), ScriptTransfer(Address(fromBase58String(e)), (aV * 1000000), k())], (aV * 1000000))
520517 }
521518 }
522519 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = (100 * 1000000)
55
66 let b = 10000
77
88 let c = 1000000
99
1010 func d (e,f) = {
1111 let g = getString(e, f)
1212 if ($isInstanceOf(g, "String"))
1313 then {
1414 let h = g
1515 h
1616 }
1717 else ""
1818 }
1919
2020
2121 func i (f) = d(this, f)
2222
2323
2424 func j () = Address(fromBase58String(i("static_oracleAddress")))
2525
2626
2727 func k () = fromBase58String(d(j(), "static_eggAssetId"))
2828
2929
3030 func l () = Address(fromBase58String(d(j(), "static_incubatorAddress")))
3131
3232
3333 func m () = Address(fromBase58String(d(j(), "static_rebirthAddress")))
3434
3535
3636 func n () = Address(fromBase58String(d(j(), "static_swopPromoAddress")))
3737
3838
3939 func o () = Address(fromBase58String(d(j(), "static_breederAddress")))
4040
4141
4242 func p () = Address(fromBase58String(d(j(), "static_refContractAddress")))
4343
4444
4545 func q () = Address(fromBase58String(d(j(), "static_itemsAddress")))
4646
4747
4848 func r () = Address(fromBase58String(d(j(), "static_metaRaceAddress")))
4949
5050
5151 func s () = Address(fromBase58String(d(j(), "static_accBoosterAddress")))
5252
5353
5454 func t () = d(j(), "static_trustedContracts")
5555
5656
5757 func u () = d(j(), "static_maintenance")
5858
5959
6060 func v () = Address(fromBase58String(d(j(), "static_cfMasterAddress")))
6161
6262
6363 func w () = Address(fromBase58String(d(j(), "static_duckWrapper")))
6464
6565
6666 func x () = Address(fromBase58String(d(j(), "static_couponsAddress")))
6767
6868
6969 let y = 5
7070
7171 func z () = 684
7272
7373
7474 func A () = if ((u() != ""))
7575 then throw(u())
7676 else 0
7777
7878
7979 func B (f) = {
8080 let g = getInteger(this, f)
8181 if ($isInstanceOf(g, "Int"))
8282 then {
8383 let C = g
8484 C
8585 }
8686 else 0
8787 }
8888
8989
9090 func D (f) = {
9191 let g = getBoolean(this, f)
9292 if ($isInstanceOf(g, "Boolean"))
9393 then {
9494 let C = g
9595 C
9696 }
9797 else false
9898 }
9999
100100
101101 func E (e) = false
102102
103103
104104 func F (G) = if ((G == "G"))
105105 then l()
106106 else o()
107107
108108
109109 func H (I,G) = {
110110 let J = valueOrErrorMessage(getInteger(F(G), (("stats_" + I) + "_quantity")), (("stats_" + I) + "_quantity not found"))
111111 let K = pow((10000 / J), 4, 5, 1, 2, FLOOR)
112112 if ((K > 0))
113113 then K
114114 else 2
115115 }
116116
117117
118118 func L (M) = {
119119 let g = M
120120 if ($isInstanceOf(g, "String"))
121121 then {
122122 let N = g
123123 N
124124 }
125- else throw("wrong type, expected: String")
125+ else throw("FAS: wrong type, expected: String")
126126 }
127127
128128
129129 func O (M) = {
130130 let g = M
131131 if ($isInstanceOf(g, "Int"))
132132 then {
133133 let P = g
134134 P
135135 }
136- else throw("wrong type, expected: Int")
136+ else throw("FAI: wrong type, expected: Int")
137137 }
138138
139139
140140 func Q (R,e) = if (if ((value(assetInfo(R)).issuer == o()))
141141 then true
142142 else (value(assetInfo(R)).issuer == l()))
143143 then {
144144 let S = O(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(R), e], nil))
145145 if ((S == S))
146146 then {
147147 let T = value(assetInfo(R)).name
148148 let U = (takeRight(value(T), 1) == "U")
149149 let V = if (U)
150150 then ""
151151 else L(invoke(o(), "getGenFromName", [T], nil))
152152 if ((V == V))
153153 then {
154154 let W = if (U)
155155 then 100
156156 else {
157157 let G = take(takeRight(T, 2), 1)
158158 H(V, G)
159159 }
160160 let X = (W + fraction(W, S, 100))
161161 $Tuple2(V, X)
162162 }
163163 else throw("Strict value is not equal to itself.")
164164 }
165165 else throw("Strict value is not equal to itself.")
166166 }
167167 else throw("not valid NFT")
168168
169169
170170 func Y (e,R) = B((((("address_" + e) + "_asset_") + R) + "_farmingPower"))
171171
172172
173173 func Z (aa) = {
174174 let ab = i(("assets_" + aa))
175175 if ((ab == ""))
176176 then nil
177177 else split(ab, ",")
178178 }
179179
180180
181181 func ac (ad,ae,X) = (ad + (((b * z()) * (height - ae)) / X))
182182
183183
184184 func af () = if ((B("total_farmingPower") > 0))
185185 then {
186186 let ad = B("total_lastCheckInterest")
187187 let ae = B("total_lastCheckInterestHeight")
188188 let X = B("total_farmingPower")
189189 ac(ad, ae, X)
190190 }
191191 else if ((B("total_startHeight") != 0))
192192 then B("total_lastCheckInterest")
193193 else throw("farming is not launched, yet")
194194
195195
196196 func ag (e,R,ah) = {
197197 let ai = B((((("address_" + e) + "_asset_") + R) + "_lastCheckInterest"))
198198 let aj = af()
199199 (ah * (aj - ai))
200200 }
201201
202202
203203 func ak (R,al) = {
204204 let am = i((("assets_" + al) + "_locked"))
205205 if ((am == ""))
206206 then R
207207 else ((am + ",") + R)
208208 }
209209
210210
211211 func an (e,R,ah,ao) = {
212212 let ap = toBase58String(R)
213213 [IntegerEntry("total_farmingPower", (B("total_farmingPower") + ah)), IntegerEntry("total_lastCheckInterest", af()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + ap) + "_owner"), e), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_farmingPower"), ah), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_lastCheckInterest"), af()), StringEntry((((("address_" + e) + "_asset_") + ap) + "_unstaker"), ao)]
214214 }
215215
216216
217217 func aq (e,R,ar,as,ah) = {
218218 let ap = toBase58String(R)
219219 [IntegerEntry("total_farmingPower", (B("total_farmingPower") - ah)), IntegerEntry("total_lastCheckInterest", af()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + ap) + "_owner")), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_lastCheckInterest"), af()), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount")) + (as * c))), IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")) + ar))]
220220 }
221221
222222
223223 func at (e) = {
224224 let au = d(s(), (("ART-XMISTL_" + e) + "_owner"))
225225 if ((au == ""))
226226 then a
227227 else ((a / 10) * 9)
228228 }
229229
230230
231-@Callable(av)
232-func configureOracle (aw) = if ((av.caller != this))
233- then throw("admin only")
234- else [StringEntry("static_oracleAddress", aw)]
231+func av (e) = {
232+ let aw = t()
233+ let ax = split(aw, ";")
234+ (indexOf(ax, e) == unit)
235+ }
236+
237+
238+@Callable(ay)
239+func configureOracle (az) = if ((ay.caller != this))
240+ then throw("FCO: admin only")
241+ else [StringEntry("static_oracleAddress", az)]
235242
236243
237244
238-@Callable(av)
239-func init () = if ((av.caller != this))
240- then throw("admin only")
245+@Callable(ay)
246+func init () = if ((ay.caller != this))
247+ then throw("FI: admin only")
241248 else [IntegerEntry("total_startHeight", height)]
242249
243250
244251
245-@Callable(av)
246-func buyPerch (ax,ay) = {
247- let az = A()
248- if ((az == az))
249- then if ((0 > value(indexOf(["B", "R", "G", "Y"], ax))))
252+@Callable(ay)
253+func buyPerch (aA,aB) = {
254+ let aC = A()
255+ if ((aC == aC))
256+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aA))))
250257 then throw("you need to set color properly")
251258 else {
252- let aA = at(toString(av.caller))
253- let aB = O(invoke(x(), "useCoupons", [aA], nil))
254- if ((aB == aB))
259+ let aD = at(toString(ay.caller))
260+ let aE = O(invoke(x(), "useCoupons", [aD], nil))
261+ if ((aE == aE))
255262 then {
256- let aC = (aA - aB)
257- let aD = if ((aC != 0))
263+ let aF = (aD - aE)
264+ let aG = if ((aF != 0))
258265 then {
259- let aE = value(av.payments[0])
260- if ((aE.assetId != k()))
261- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
262- else if ((aE.amount != aC))
263- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(aC)))
266+ let aH = value(ay.payments[0])
267+ if ((aH.assetId != k()))
268+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
269+ else if ((aH.amount != aF))
270+ then throw(("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(aF)))
264271 else {
265- let aF = fraction(aC, y, 100)
266- let aG = invoke(p(), "refPayment", [ay], [AttachedPayment(k(), aF)])
267- if ((aG == aG))
268- then aC
272+ let aI = fraction(aF, y, 100)
273+ let aJ = invoke(p(), "refPayment", [aB], [AttachedPayment(k(), aI)])
274+ if ((aJ == aJ))
275+ then aF
269276 else throw("Strict value is not equal to itself.")
270277 }
271278 }
272279 else 0
273- if ((aD == aD))
280+ if ((aG == aG))
274281 then {
275- let aH = ((("address_" + toString(av.caller)) + "_perchesAvailable_") + ax)
276- let aI = B(aH)
277-[IntegerEntry(aH, (aI + 1))]
282+ let aK = ((("address_" + toString(ay.caller)) + "_perchesAvailable_") + aA)
283+ let aL = B(aK)
284+[IntegerEntry(aK, (aL + 1))]
278285 }
279286 else throw("Strict value is not equal to itself.")
280287 }
281288 else throw("Strict value is not equal to itself.")
282289 }
283290 else throw("Strict value is not equal to itself.")
284291 }
285292
286293
287294
288-@Callable(av)
289-func addFreePerch (e,ax) = {
290- let az = A()
291- if ((az == az))
292- then if ((0 > value(indexOf(["B", "R", "G", "Y"], ax))))
295+@Callable(ay)
296+func addFreePerch (e,aA) = {
297+ let aC = A()
298+ if ((aC == aC))
299+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aA))))
293300 then throw("you need to set color properly")
294- else if (if (if ((av.caller != m()))
295- then (av.caller != this)
301+ else if (if (if ((ay.caller != m()))
302+ then (ay.caller != this)
296303 else false)
297- then (av.caller != n())
304+ then (ay.caller != n())
298305 else false)
299306 then throw("rebirth and swop promo only")
300307 else {
301- let aH = ((("address_" + e) + "_perchesAvailable_") + ax)
302- let aI = B(aH)
303- $Tuple2([IntegerEntry(aH, (aI + 1))], "")
308+ let aK = ((("address_" + e) + "_perchesAvailable_") + aA)
309+ let aL = B(aK)
310+ $Tuple2([IntegerEntry(aK, (aL + 1))], "")
304311 }
305312 else throw("Strict value is not equal to itself.")
306313 }
307314
308315
309316
310-@Callable(av)
317+@Callable(ay)
311318 func stakeNFT () = {
312- let az = A()
313- if ((az == az))
319+ let aC = A()
320+ if ((aC == aC))
314321 then {
315- let aJ = value(av.payments[0])
316- let R = value(value(av.payments[0]).assetId)
317- let aK = toString(av.caller)
318- let e = if (if ((r() == av.caller))
319- then true
320- else (w() == av.caller))
321- then aK
322- else toString(av.originCaller)
323- let ax = takeRight(value(assetInfo(R)).name, 1)
324- let aL = B(((("address_" + e) + "_perchesAvailable_") + ax))
325- if ((aJ.amount != 1))
322+ let aM = value(ay.payments[0])
323+ let R = value(value(ay.payments[0]).assetId)
324+ let aN = toString(ay.caller)
325+ let e = if (av(toString(ay.caller)))
326+ then toString(ay.originCaller)
327+ else aN
328+ let aA = takeRight(value(assetInfo(R)).name, 1)
329+ let aO = B(((("address_" + e) + "_perchesAvailable_") + aA))
330+ if ((aM.amount != 1))
326331 then throw("NFT is not attached")
327- else if ((0 >= aL))
328- then throw(("no perches available for the color " + ax))
332+ else if ((0 >= aO))
333+ then throw(("no perches available for the color " + aA))
329334 else {
330- let aM = Q(R, e)
331- let al = aM._1
332- let ah = aM._2
333- (an(e, R, ah, aK) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (aL - 1))])
335+ let aP = Q(R, e)
336+ let al = aP._1
337+ let ah = aP._2
338+ (an(e, R, ah, aN) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (aO - 1))])
334339 }
335340 }
336341 else throw("Strict value is not equal to itself.")
337342 }
338343
339344
340345
341-@Callable(av)
346+@Callable(ay)
342347 func stakeNFTWithoutPerch () = {
343- let az = A()
344- if ((az == az))
348+ let aC = A()
349+ if ((aC == aC))
345350 then {
346- let aN = t()
347- let aO = split(aN, ";")
348- let aP = toString(av.caller)
349- if ((indexOf(aO, aP) == unit))
350- then throw("Only trusted smart contracts can stake without a perch!")
351+ let aQ = toString(ay.caller)
352+ if (av(aQ))
353+ then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
351354 else {
352- let aJ = value(av.payments[0])
353- let R = value(value(av.payments[0]).assetId)
354- let e = toString(av.originCaller)
355- if ((aJ.amount != 1))
355+ let aM = value(ay.payments[0])
356+ let R = value(value(ay.payments[0]).assetId)
357+ let e = toString(ay.originCaller)
358+ if ((aM.amount != 1))
356359 then throw("NFT is not attached")
357360 else {
358- let aQ = Q(R, e)
359- let al = aQ._1
360- let ah = aQ._2
361+ let aR = Q(R, e)
362+ let al = aR._1
363+ let ah = aR._2
361364 let ap = toBase58String(R)
362- let aK = toString(av.caller)
363- (an(e, R, ah, aK) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"), true)])
365+ let aN = toString(ay.caller)
366+ (an(e, R, ah, aN) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"), true)])
364367 }
365368 }
366369 }
367370 else throw("Strict value is not equal to itself.")
368371 }
369372
370373
371374
372-@Callable(av)
375+@Callable(ay)
373376 func unstakeNFT (ap) = {
374- let az = A()
375- if ((az == az))
377+ let aC = A()
378+ if ((aC == aC))
376379 then {
377- let aR = toString(av.originCaller)
378- if (E(aR))
379- 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!")
380+ let aS = toString(ay.originCaller)
381+ if (E(aS))
382+ then throw("FUN: 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!")
380383 else {
381384 let R = fromBase58String(ap)
382- let ao = i((((("address_" + aR) + "_asset_") + ap) + "_unstaker"))
383- let e = if (if ((r() == av.caller))
384- then true
385- else (w() == av.caller))
386- then toString(av.caller)
387- else aR
385+ let ao = i((((("address_" + aS) + "_asset_") + ap) + "_unstaker"))
386+ let e = if (av(toString(ay.caller)))
387+ then aS
388+ else toString(ay.caller)
388389 let ah = Y(e, ap)
389- let aS = ag(e, ap, ah)
390- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
390+ let aT = ag(e, ap, ah)
391+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
391392 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
392- let aU = ((aT - as) / (b * 100))
393- let ax = takeRight(value(assetInfo(R)).name, 1)
394- let aK = toString(av.caller)
393+ let aV = ((aU - as) / (b * 100))
394+ let aA = takeRight(value(assetInfo(R)).name, 1)
395+ let aN = toString(ay.caller)
395396 if (if ((ao != ""))
396- then (ao != aK)
397+ then (ao != aN)
397398 else false)
398- then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
399+ then throw("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
399400 else if ((0 >= ah))
400- then throw("asset not available")
401+ then throw("FUN: asset not available")
401402 else {
402- let aV = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
403- if ((ax == "U"))
404- then throw("use another function to unstake Jackpot NFT")
403+ let aW = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
404+ if ((aA == "U"))
405+ then throw("FUN: use another function to unstake Jackpot NFT")
405406 else {
406- let aW = aq(e, R, aS, aU, ah)
407- let aX = if (aV)
407+ let aX = aq(e, R, aT, aV, ah)
408+ let aY = if (aW)
408409 then [DeleteEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"))]
409- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (B(((("address_" + e) + "_perchesAvailable_") + ax)) + 1))]
410- $Tuple2(((aW ++ [ScriptTransfer(av.caller, (aU * 1000000), k()), ScriptTransfer(av.caller, 1, R)]) ++ aX), (aU * 1000000))
410+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (B(((("address_" + e) + "_perchesAvailable_") + aA)) + 1))]
411+ $Tuple2(((aX ++ [ScriptTransfer(ay.caller, (aV * 1000000), k()), ScriptTransfer(ay.caller, 1, R)]) ++ aY), (aV * 1000000))
411412 }
412413 }
413414 }
414415 }
415416 else throw("Strict value is not equal to itself.")
416417 }
417418
418419
419420
420-@Callable(av)
421-func stakeJackpot (ax) = {
422- let az = A()
423- if ((az == az))
421+@Callable(ay)
422+func stakeJackpot (aA) = {
423+ let aC = A()
424+ if ((aC == aC))
424425 then {
425- let aJ = value(av.payments[0])
426- let R = value(aJ.assetId)
427- let aK = toString(av.caller)
428- let e = if (if ((r() == av.caller))
429- then true
430- else (w() == av.caller))
431- then aK
432- else toString(av.originCaller)
433- let aL = B(((("address_" + e) + "_perchesAvailable_") + ax))
434- let aY = value(assetInfo(R)).issuer
435- if ((aJ.amount != 1))
426+ let aM = value(ay.payments[0])
427+ let R = value(aM.assetId)
428+ let aN = toString(ay.caller)
429+ let e = if (av(toString(ay.caller)))
430+ then toString(ay.originCaller)
431+ else aN
432+ let aO = B(((("address_" + e) + "_perchesAvailable_") + aA))
433+ let aZ = value(assetInfo(R)).issuer
434+ if ((aM.amount != 1))
436435 then throw("NFT is not attached")
437- else if (if ((aY == l()))
436+ else if (if ((aZ == l()))
438437 then true
439- else (aY == o()))
438+ else (aZ == o()))
440439 then if ((takeRight(value(value(assetInfo(R)).name), 1) != "U"))
441440 then throw("jackpot only")
442- else if ((0 >= aL))
443- then throw(("no perches available for the color " + ax))
441+ else if ((0 >= aO))
442+ then throw(("FSJ: no perches available for the color " + aA))
444443 else {
445- let aZ = Q(R, e)
446- (an(e, R, aZ._2, aK) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (aL - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(R)) + "_perchColor"), ax)])
444+ let ba = Q(R, e)
445+ (an(e, R, ba._2, aN) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (aO - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(R)) + "_perchColor"), aA)])
447446 }
448447 else throw("asset is not valid")
449448 }
450449 else throw("Strict value is not equal to itself.")
451450 }
452451
453452
454453
455-@Callable(av)
454+@Callable(ay)
456455 func unstakeJackpot (ap) = {
457- let az = A()
458- if ((az == az))
456+ let aC = A()
457+ if ((aC == aC))
459458 then {
460- let aK = toString(av.caller)
461- let e = if (if ((r() == av.caller))
462- then true
463- else (w() == av.caller))
464- then aK
465- else toString(av.originCaller)
459+ let aN = toString(ay.caller)
460+ let e = if (av(toString(ay.caller)))
461+ then toString(ay.originCaller)
462+ else aN
466463 if (E(e))
467- 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!")
464+ then throw("FUJ: 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!")
468465 else {
469466 let R = fromBase58String(ap)
470- let ax = i((((("address_" + e) + "_asset_") + ap) + "_perchColor"))
467+ let aA = i((((("address_" + e) + "_asset_") + ap) + "_perchColor"))
471468 let ah = Y(e, ap)
472- let aS = ag(e, ap, ah)
473- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
469+ let aT = ag(e, ap, ah)
470+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
474471 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
475- let aU = ((aT - as) / (b * 100))
472+ let aV = ((aU - as) / (b * 100))
476473 let ao = i((((("address_" + e) + "_asset_") + ap) + "_unstaker"))
477474 if (if ((ao != ""))
478- then (ao != aK)
475+ then (ao != aN)
479476 else false)
480- then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
477+ then throw("FUJ: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
481478 else if ((takeRight(value(value(assetInfo(R)).name), 1) != "U"))
482479 then throw("jackpot only")
483480 else if ((ah > 0))
484481 then {
485- let aW = aq(e, R, aS, aU, ah)
486- let aV = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
487- let aX = if (aV)
482+ let aX = aq(e, R, aT, aV, ah)
483+ let aW = D((((("address_" + e) + "_asset_") + ap) + "_without_perch"))
484+ let aY = if (aW)
488485 then [DeleteEntry((((("address_" + e) + "_asset_") + ap) + "_without_perch"))]
489- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + ax), (B(((("address_" + e) + "_perchesAvailable_") + ax)) + 1))]
490- $Tuple2(((aW ++ aX) ++ [ScriptTransfer(av.caller, (aU * 1000000), k()), ScriptTransfer(av.caller, 1, R)]), (aU * 1000000))
486+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aA), (B(((("address_" + e) + "_perchesAvailable_") + aA)) + 1))]
487+ $Tuple2(((aX ++ aY) ++ [ScriptTransfer(ay.caller, (aV * 1000000), k()), ScriptTransfer(ay.caller, 1, R)]), (aV * 1000000))
491488 }
492- else throw("Asset farming power not bigger then 0")
489+ else throw("FUJ: Asset farming power not bigger then 0")
493490 }
494491 }
495492 else throw("Strict value is not equal to itself.")
496493 }
497494
498495
499496
500-@Callable(av)
497+@Callable(ay)
501498 func claimReward (ap) = {
502- let az = A()
503- if ((az == az))
499+ let aC = A()
500+ if ((aC == aC))
504501 then {
505- let e = if ((av.originCaller == v()))
506- then toString(av.caller)
507- else toString(av.originCaller)
502+ let e = if ((ay.originCaller == v()))
503+ then toString(ay.caller)
504+ else toString(ay.originCaller)
508505 if (E(e))
509- 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!")
506+ then throw("FCR: 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!")
510507 else {
511508 let R = fromBase58String(ap)
512509 let ah = Y(e, ap)
513- let aS = ag(e, ap, ah)
514- let aT = (aS + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
510+ let aT = ag(e, ap, ah)
511+ let aU = (aT + B((((("address_" + e) + "_asset_") + ap) + "_lastCheckFarmedAmount")))
515512 let as = B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"))
516- let aU = ((aT - as) / (b * 100))
517- if ((0 >= aU))
518- then throw("you have no EGGs to withdraw")
519- else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount")) + (aU * c))), ScriptTransfer(Address(fromBase58String(e)), (aU * 1000000), k())], (aU * 1000000))
513+ let aV = ((aU - as) / (b * 100))
514+ if ((0 >= aV))
515+ then throw("FCR: you have no EGGs to withdraw")
516+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount"), (B((((("address_" + e) + "_asset_") + ap) + "_withdrawnAmount")) + (aV * c))), ScriptTransfer(Address(fromBase58String(e)), (aV * 1000000), k())], (aV * 1000000))
520517 }
521518 }
522519 else throw("Strict value is not equal to itself.")
523520 }
524521
525522

github/deemru/w8io/0e76f2f 
140.74 ms