2021.06.16 20:40 [2637973] smart account 3PF21L9aRbaGjcsu5sAUrJPw1gi4RmLugFi > SELF 0.00000000 Waves
{ "type": 13, "id": "H4uu1xV9QJTqF6JHJuqT7pn5VJwhB68sySgxyg3on4x3", "fee": 1400000, "feeAssetId": null, "timestamp": 1623865202849, "version": 2, "chainId": 87, "sender": "3PF21L9aRbaGjcsu5sAUrJPw1gi4RmLugFi", "senderPublicKey": "5AZJc2JvBSnmkRSK1MmbNWSM3b5oUsbsmWaa1wuDk1pb", "proofs": [ "4XpDDPYJWzgVVryBdVKERXZBKADNB4cbYDKZH7PBTcKuvTpNPCeJBwJLn3WvwixiEnqEbbpPFEsZQQGKoDJZ6FWL" ], "script": "base64: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DSRhY2MxMTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjMDE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAEFAAAADSRhY2MxMTg5MTE5MjIEAAAADSRhY2MyMTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjMTE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAIFAAAADSRhY2MyMTg5MTE5MjIEAAAADSRhY2MzMTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjMjE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAMFAAAADSRhY2MzMTg5MTE5MjIEAAAADSRhY2M0MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjMzE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAQFAAAADSRhY2M0MTg5MTE5MjIEAAAADSRhY2M1MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjNDE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAUFAAAADSRhY2M1MTg5MTE5MjIEAAAADSRhY2M2MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjNTE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAYFAAAADSRhY2M2MTg5MTE5MjIEAAAADSRhY2M3MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjNjE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAcFAAAADSRhY2M3MTg5MTE5MjIEAAAADSRhY2M4MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjNzE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMTg5MTE5MjIAAAAAAAAAAAgFAAAADSRhY2M4MTg5MTE5MjIEAAAADSRhY2M5MTg5MTE5MjIJAQAAAAlpc1N5bWJvbEIAAAACBQAAAA0kYWNjODE4OTExOTIyCQABkQAAAAIFAAAADSRsaXN0MTg5MTE5MjIAAAAAAAAAAAgJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA4AgAAAAFCCQEAAAAQZ2V0QW1vdW50T3JDbGVhcgAAAAEJAAEsAAAAAgkAAaQAAAABBAAAAA0kbGlzdDE5NTkxOTkwBQAAAAhnZW5vdHlwZQQAAAANJHNpemUxOTU5MTk5MAkAAZAAAAABBQAAAA0kbGlzdDE5NTkxOTkwBAAAAA0kYWNjMDE5NTkxOTkwAAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAABQAAAA0kYWNjMDE5NTkxOTkwBAAAAA0kYWNjMTE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzAxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAABBQAAAA0kYWNjMTE5NTkxOTkwBAAAAA0kYWNjMjE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzExOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAACBQAAAA0kYWNjMjE5NTkxOTkwBAAAAA0kYWNjMzE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzIxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAADBQAAAA0kYWNjMzE5NTkxOTkwBAAAAA0kYWNjNDE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzMxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAEBQAAAA0kYWNjNDE5NTkxOTkwBAAAAA0kYWNjNTE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzQxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAFBQAAAA0kYWNjNTE5NTkxOTkwBAAAAA0kYWNjNjE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzUxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAGBQAAAA0kYWNjNjE5NTkxOTkwBAAAAA0kYWNjNzE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzYxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAHBQAAAA0kYWNjNzE5NTkxOTkwBAAAAA0kYWNjODE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzcxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5NTkxOTkwAAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTE5NTkxOTkwAAAAAAAAAAAIBQAAAA0kYWNjODE5NTkxOTkwBAAAAA0kYWNjOTE5NTkxOTkwCQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzgxOTU5MTk5MAkAAZEAAAACBQAAAA0kbGlzdDE5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MzQEAAAADSRhY2MyMjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMTIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAIFAAAADSRhY2MyMjMwMzIzMzQEAAAADSRhY2MzMjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMjIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAMFAAAADSRhY2MzMjMwMzIzMzQEAAAADSRhY2M0MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMzIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAQFAAAADSRhY2M0MjMwMzIzMzQEAAAADSRhY2M1MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNDIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAUFAAAADSRhY2M1MjMwMzIzMzQEAAAADSRhY2M2MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNTIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAYFAAAADSRhY2M2MjMwMzIzMzQEAAAADSRhY2M3MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNjIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAcFAAAADSRhY2M3MjMwMzIzMzQEAAAADSRhY2M4MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNzIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMjMwMzIzMzQAAAAAAAAAAAgFAAAADSRhY2M4MjMwMzIzMzQEAAAADSRhY2M5MjMwMzIzMzQJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjODIzMDMyMzM0CQABkQAAAAIFAAAADSRsaXN0MjMwMzIzMzQAAAAAAAAAAAgJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA4AgAAAAFIAQAAAA5nZXRBc3NldE9yaWdpbgAAAAEAAAAKZ2VuZXJhdGlvbgMJAAAAAAAAAgUAAAAKZ2VuZXJhdGlvbgIAAAABRwUAAAAQaW5jdWJhdG9yQWRkcmVzcwUAAAAOYnJlZWRlckFkZHJlc3MBAAAADmdldEFzc2V0UmFyaXR5AAAAAgAAAAhnZW5vdHlwZQAAAApnZW5lcmF0aW9uBAAAAAhxdWFudGl0eQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAB0FkZHJlc3MAAAABCQEAAAAOZ2V0QXNzZXRPcmlnaW4AAAABBQAAAApnZW5lcmF0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAhnZW5vdHlwZQIAAAAJX3F1YW50aXR5CQAAbAAAAAYFAAAACHF1YW50aXR5AAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAACBQAAAAhIQUxGRE9XTgEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABAAAAB2Fzc2V0SWQEAAAACWFzc2V0TmFtZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAARuYW1lBAAAAApnZW5lcmF0aW9uCQABLwAAAAIJAQAAAAl0YWtlUmlnaHQAAAACBQAAAAlhc3NldE5hbWUAAAAAAAAAAAIAAAAAAAAAAAEEAAAAA2dlbgkAASwAAAACCQABLAAAAAIJAQAAAAZnZXRHZW4AAAABBQAAAAlhc3NldE5hbWUCAAAAAS0FAAAACmdlbmVyYXRpb24JAAUUAAAAAgUAAAADZ2VuCQEAAAAOZ2V0QXNzZXRSYXJpdHkAAAACBQAAAANnZW4FAAAACmdlbmVyYXRpb24BAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAANX2Zhcm1pbmdQb3dlcgEAAAAOZ2V0QXNzZXRzQnlHZW4AAAABAAAAA2dlbgQAAAABcwkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAADZ2VuAwkAAAAAAAACBQAAAAFzAgAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzAgAAAAEsAQAAAAxjYWxjSW50ZXJlc3QAAAADAAAAEHByZXZpb3VzSW50ZXJlc3QAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAAAABF0b3RhbEZhcm1pbmdQb3dlcgkAAGQAAAACBQAAABBwcmV2aW91c0ludGVyZXN0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAVzY2FsZQkBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAAAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAQcHJldmlvdXNJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQAAAARdG90YWxGYXJtaW5nUG93ZXIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQEAAAAMY2FsY0ludGVyZXN0AAAAAwUAAAAQcHJldmlvdXNJbnRlcmVzdAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIDCQAAZwAAAAIFAAAABmhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABF0b3RhbF9zdGFydEhlaWdodAAAAAAAAAAAAAkAAAIAAAABAgAAABxmYXJtaW5nIGlzIG5vdCBsYXVuY2hlZCwgeWV0AQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAABVsYXN0Q2hlY2tVc2VySW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAAaAAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAVbGFzdENoZWNrVXNlckludGVyZXN0AQAAABRhZGRBc3NldElkVG9HZW5FbnRyeQAAAAIAAAAHYXNzZXRJZAAAAAhhc3NldEdlbgQAAAAMY3VycmVudFZhbHVlCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2Fzc2V0c18FAAAACGFzc2V0R2VuAgAAAAdfbG9ja2VkAwkAAAAAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAAAUAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIFAAAADGN1cnJlbnRWYWx1ZQIAAAABLAUAAAAHYXNzZXRJZAEAAAATZ2V0Q2hlY2tEYXRhQ2hhbmdlcwAAAAQAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAC3Jld2FyZERlbHRhAAAAFmFzc2V0RmFybWluZ1Bvd2VyRGVsdGEEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAAWYXNzZXRGYXJtaW5nUG93ZXJEZWx0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA1fZmFybWluZ1Bvd2VyBQAAABZhc3NldEZhcm1pbmdQb3dlckRlbHRhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAUAAAALcmV3YXJkRGVsdGEFAAAAA25pbAAAAAQAAAABaQEAAAAEaW5pdAAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAKYWRtaW4gb25seQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARdG90YWxfc3RhcnRIZWlnaHQFAAAABmhlaWdodAUAAAADbmlsAAAAAWkBAAAACHN0YWtlTkZUAAAAAAQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACyR0MDU2NjQ1NzI5CQEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABBQAAAAdhc3NldElkBAAAAAhhc3NldEdlbggFAAAACyR0MDU2NjQ1NzI5AAAAAl8xBAAAABFhc3NldEZhcm1pbmdQb3dlcggFAAAACyR0MDU2NjQ1NzI5AAAAAl8yBAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQEAAAATZ2V0Q2hlY2tEYXRhQ2hhbmdlcwAAAAQFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQFAAAAEGFzc2V0UmV3YXJkRGVsdGEFAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAAAWkBAAAACnVuc3Rha2VORlQAAAABAAAABWFzc2V0BAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAABnJldHVybgkBAAAAE2dldENoZWNrRGF0YUNoYW5nZXMAAAAEBQAAAAdhZGRyZXNzBQAAAAdhc3NldElkBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAABLQAAAAEFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETgAAAAIFAAAABnJldHVybgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAGQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAtjbGFpbVJld2FyZAAAAAEAAAAFYXNzZXQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAskdDA2NzAyNjc2NwkBAAAAFGdldEFzc2V0RmFybWluZ1Bvd2VyAAAAAQUAAAAHYXNzZXRJZAQAAAAIYXNzZXRHZW4IBQAAAAskdDA2NzAyNjc2NwAAAAJfMQQAAAARYXNzZXRGYXJtaW5nUG93ZXIIBQAAAAskdDA2NzAyNjc2NwAAAAJfMgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50BQAAAAVzY2FsZQMJAABnAAAAAgAAAAAAAAAAAAUAAAAGcmV3YXJkCQAAAgAAAAECAAAAHHlvdSBoYXZlIG5vIEVHR3MgdG8gd2l0aGRyYXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAQX3dpdGhkcmF3bkFtb3VudAUAAAAMZmFybWVkQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGcmV3YXJkBQAAAAtlZ2dzQXNzZXRJZAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXl1SPHD", "height": 2637973, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BwFsvdfXP7vqDLKznbR3dS6QeWF7MJCx2TUpddvx3cj5 Next: 3bgPEfWbBeh499i95fNYJ6WSx7fbthnBZNrSXxF2F6E4 Diff:
Old | New | Differences | |
---|---|---|---|
502 | 502 | } | |
503 | 503 | ||
504 | 504 | ||
505 | - | func | |
505 | + | func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower")) | |
506 | 506 | ||
507 | 507 | ||
508 | 508 | func getAssetsByGen (gen) = { | |
543 | 543 | } | |
544 | 544 | ||
545 | 545 | ||
546 | - | func getCheckDataChanges (address,assetId,rewardDelta,assetFarmingPowerDelta | |
546 | + | func getCheckDataChanges (address,assetId,rewardDelta,assetFarmingPowerDelta) = { | |
547 | 547 | let asset = toBase58String(assetId) | |
548 | 548 | [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPowerDelta)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_farmingPower")) + assetFarmingPowerDelta)), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + rewardDelta))] | |
549 | 549 | } | |
560 | 560 | func stakeNFT () = { | |
561 | 561 | let assetId = value(value(i.payments[0]).assetId) | |
562 | 562 | let address = toString(i.caller) | |
563 | - | let $ | |
564 | - | let assetGen = $ | |
565 | - | let assetFarmingPower = $ | |
563 | + | let $t056645729 = getAssetFarmingPower(assetId) | |
564 | + | let assetGen = $t056645729._1 | |
565 | + | let assetFarmingPower = $t056645729._2 | |
566 | 566 | let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower) | |
567 | - | getCheckDataChanges(address, assetId, assetRewardDelta, assetFarmingPower | |
567 | + | getCheckDataChanges(address, assetId, assetRewardDelta, assetFarmingPower) | |
568 | 568 | } | |
569 | 569 | ||
570 | 570 | ||
573 | 573 | func unstakeNFT (asset) = { | |
574 | 574 | let assetId = fromBase58String(asset) | |
575 | 575 | let address = toString(i.caller) | |
576 | - | let $t060626127 = getAssetFarmingPower(assetId) | |
577 | - | let assetGen = $t060626127._1 | |
578 | - | let assetFarmingPower = $t060626127._2 | |
576 | + | let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset) | |
579 | 577 | let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower) | |
580 | - | let return = getCheckDataChanges(address, assetId, assetRewardDelta, -(assetFarmingPower) | |
578 | + | let return = getCheckDataChanges(address, assetId, assetRewardDelta, -(assetFarmingPower)) | |
581 | 579 | (return ++ [ScriptTransfer(i.caller, 100, assetId)]) | |
582 | 580 | } | |
583 | 581 | ||
587 | 585 | func claimReward (asset) = { | |
588 | 586 | let address = toString(i.caller) | |
589 | 587 | let assetId = fromBase58String(asset) | |
590 | - | let $ | |
591 | - | let assetGen = $ | |
592 | - | let assetFarmingPower = $ | |
588 | + | let $t067026767 = getAssetFarmingPower(assetId) | |
589 | + | let assetGen = $t067026767._1 | |
590 | + | let assetFarmingPower = $t067026767._2 | |
593 | 591 | let farmedAmount = (calcAssetRewardDelta(address, asset, assetFarmingPower) + tryGetInteger((("address_" + address) + "_lastCheckFarmedAmount"))) | |
594 | 592 | let withdrawnAmount = tryGetInteger((("address_" + address) + "_withdrawnAmount")) | |
595 | 593 | let reward = ((farmedAmount - withdrawnAmount) / scale) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let eggsAssetId = base58'53bLXGQhnMxAoiWnza2SJQRp7hNQZVHnyrRziLmwdVjb' | |
5 | 5 | ||
6 | 6 | let perchPrice = 100 | |
7 | 7 | ||
8 | 8 | let scale = 10000 | |
9 | 9 | ||
10 | 10 | let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM' | |
11 | 11 | ||
12 | 12 | let breederAddress = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y' | |
13 | 13 | ||
14 | 14 | let GENS = ["A", "B", "C", "D", "E", "F", "G"] | |
15 | 15 | ||
16 | 16 | func getRewardPerBlock () = 7 | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func tryGetInteger (key) = match getInteger(this, key) { | |
20 | 20 | case b: Int => | |
21 | 21 | b | |
22 | 22 | case _ => | |
23 | 23 | 0 | |
24 | 24 | } | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func tryGetString (key) = match getString(this, key) { | |
28 | 28 | case a: String => | |
29 | 29 | a | |
30 | 30 | case _ => | |
31 | 31 | "" | |
32 | 32 | } | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | func isSymbolA (accumulated,sym) = if ((sym == "A")) | |
36 | 36 | then (accumulated + 1) | |
37 | 37 | else (accumulated + 0) | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func isSymbolB (accumulated,sym) = if ((sym == "B")) | |
41 | 41 | then (accumulated + 1) | |
42 | 42 | else (accumulated + 0) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func isSymbolC (accumulated,sym) = if ((sym == "C")) | |
46 | 46 | then (accumulated + 1) | |
47 | 47 | else (accumulated + 0) | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | func isSymbolD (accumulated,sym) = if ((sym == "D")) | |
51 | 51 | then (accumulated + 1) | |
52 | 52 | else (accumulated + 0) | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func isSymbolE (accumulated,sym) = if ((sym == "E")) | |
56 | 56 | then (accumulated + 1) | |
57 | 57 | else (accumulated + 0) | |
58 | 58 | ||
59 | 59 | ||
60 | 60 | func isSymbolF (accumulated,sym) = if ((sym == "F")) | |
61 | 61 | then (accumulated + 1) | |
62 | 62 | else (accumulated + 0) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func isSymbolG (accumulated,sym) = if ((sym == "G")) | |
66 | 66 | then (accumulated + 1) | |
67 | 67 | else (accumulated + 0) | |
68 | 68 | ||
69 | 69 | ||
70 | 70 | func isSymbolH (accumulated,sym) = if ((sym == "H")) | |
71 | 71 | then (accumulated + 1) | |
72 | 72 | else (accumulated + 0) | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func getAmountOrClear (amount) = if (contains(amount, "0")) | |
76 | 76 | then "" | |
77 | 77 | else amount | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func getGen (assetName) = { | |
81 | 81 | let genotype = split(dropRight(drop(assetName, 5), 3), "") | |
82 | 82 | (((((((getAmountOrClear((toString({ | |
83 | 83 | let $list18231854 = genotype | |
84 | 84 | let $size18231854 = size($list18231854) | |
85 | 85 | let $acc018231854 = 0 | |
86 | 86 | if (($size18231854 == 0)) | |
87 | 87 | then $acc018231854 | |
88 | 88 | else { | |
89 | 89 | let $acc118231854 = isSymbolA($acc018231854, $list18231854[0]) | |
90 | 90 | if (($size18231854 == 1)) | |
91 | 91 | then $acc118231854 | |
92 | 92 | else { | |
93 | 93 | let $acc218231854 = isSymbolA($acc118231854, $list18231854[1]) | |
94 | 94 | if (($size18231854 == 2)) | |
95 | 95 | then $acc218231854 | |
96 | 96 | else { | |
97 | 97 | let $acc318231854 = isSymbolA($acc218231854, $list18231854[2]) | |
98 | 98 | if (($size18231854 == 3)) | |
99 | 99 | then $acc318231854 | |
100 | 100 | else { | |
101 | 101 | let $acc418231854 = isSymbolA($acc318231854, $list18231854[3]) | |
102 | 102 | if (($size18231854 == 4)) | |
103 | 103 | then $acc418231854 | |
104 | 104 | else { | |
105 | 105 | let $acc518231854 = isSymbolA($acc418231854, $list18231854[4]) | |
106 | 106 | if (($size18231854 == 5)) | |
107 | 107 | then $acc518231854 | |
108 | 108 | else { | |
109 | 109 | let $acc618231854 = isSymbolA($acc518231854, $list18231854[5]) | |
110 | 110 | if (($size18231854 == 6)) | |
111 | 111 | then $acc618231854 | |
112 | 112 | else { | |
113 | 113 | let $acc718231854 = isSymbolA($acc618231854, $list18231854[6]) | |
114 | 114 | if (($size18231854 == 7)) | |
115 | 115 | then $acc718231854 | |
116 | 116 | else { | |
117 | 117 | let $acc818231854 = isSymbolA($acc718231854, $list18231854[7]) | |
118 | 118 | if (($size18231854 == 8)) | |
119 | 119 | then $acc818231854 | |
120 | 120 | else { | |
121 | 121 | let $acc918231854 = isSymbolA($acc818231854, $list18231854[8]) | |
122 | 122 | throw("List size exceed 8") | |
123 | 123 | } | |
124 | 124 | } | |
125 | 125 | } | |
126 | 126 | } | |
127 | 127 | } | |
128 | 128 | } | |
129 | 129 | } | |
130 | 130 | } | |
131 | 131 | } | |
132 | 132 | }) + "A")) + getAmountOrClear((toString({ | |
133 | 133 | let $list18911922 = genotype | |
134 | 134 | let $size18911922 = size($list18911922) | |
135 | 135 | let $acc018911922 = 0 | |
136 | 136 | if (($size18911922 == 0)) | |
137 | 137 | then $acc018911922 | |
138 | 138 | else { | |
139 | 139 | let $acc118911922 = isSymbolB($acc018911922, $list18911922[0]) | |
140 | 140 | if (($size18911922 == 1)) | |
141 | 141 | then $acc118911922 | |
142 | 142 | else { | |
143 | 143 | let $acc218911922 = isSymbolB($acc118911922, $list18911922[1]) | |
144 | 144 | if (($size18911922 == 2)) | |
145 | 145 | then $acc218911922 | |
146 | 146 | else { | |
147 | 147 | let $acc318911922 = isSymbolB($acc218911922, $list18911922[2]) | |
148 | 148 | if (($size18911922 == 3)) | |
149 | 149 | then $acc318911922 | |
150 | 150 | else { | |
151 | 151 | let $acc418911922 = isSymbolB($acc318911922, $list18911922[3]) | |
152 | 152 | if (($size18911922 == 4)) | |
153 | 153 | then $acc418911922 | |
154 | 154 | else { | |
155 | 155 | let $acc518911922 = isSymbolB($acc418911922, $list18911922[4]) | |
156 | 156 | if (($size18911922 == 5)) | |
157 | 157 | then $acc518911922 | |
158 | 158 | else { | |
159 | 159 | let $acc618911922 = isSymbolB($acc518911922, $list18911922[5]) | |
160 | 160 | if (($size18911922 == 6)) | |
161 | 161 | then $acc618911922 | |
162 | 162 | else { | |
163 | 163 | let $acc718911922 = isSymbolB($acc618911922, $list18911922[6]) | |
164 | 164 | if (($size18911922 == 7)) | |
165 | 165 | then $acc718911922 | |
166 | 166 | else { | |
167 | 167 | let $acc818911922 = isSymbolB($acc718911922, $list18911922[7]) | |
168 | 168 | if (($size18911922 == 8)) | |
169 | 169 | then $acc818911922 | |
170 | 170 | else { | |
171 | 171 | let $acc918911922 = isSymbolB($acc818911922, $list18911922[8]) | |
172 | 172 | throw("List size exceed 8") | |
173 | 173 | } | |
174 | 174 | } | |
175 | 175 | } | |
176 | 176 | } | |
177 | 177 | } | |
178 | 178 | } | |
179 | 179 | } | |
180 | 180 | } | |
181 | 181 | } | |
182 | 182 | }) + "B"))) + getAmountOrClear((toString({ | |
183 | 183 | let $list19591990 = genotype | |
184 | 184 | let $size19591990 = size($list19591990) | |
185 | 185 | let $acc019591990 = 0 | |
186 | 186 | if (($size19591990 == 0)) | |
187 | 187 | then $acc019591990 | |
188 | 188 | else { | |
189 | 189 | let $acc119591990 = isSymbolC($acc019591990, $list19591990[0]) | |
190 | 190 | if (($size19591990 == 1)) | |
191 | 191 | then $acc119591990 | |
192 | 192 | else { | |
193 | 193 | let $acc219591990 = isSymbolC($acc119591990, $list19591990[1]) | |
194 | 194 | if (($size19591990 == 2)) | |
195 | 195 | then $acc219591990 | |
196 | 196 | else { | |
197 | 197 | let $acc319591990 = isSymbolC($acc219591990, $list19591990[2]) | |
198 | 198 | if (($size19591990 == 3)) | |
199 | 199 | then $acc319591990 | |
200 | 200 | else { | |
201 | 201 | let $acc419591990 = isSymbolC($acc319591990, $list19591990[3]) | |
202 | 202 | if (($size19591990 == 4)) | |
203 | 203 | then $acc419591990 | |
204 | 204 | else { | |
205 | 205 | let $acc519591990 = isSymbolC($acc419591990, $list19591990[4]) | |
206 | 206 | if (($size19591990 == 5)) | |
207 | 207 | then $acc519591990 | |
208 | 208 | else { | |
209 | 209 | let $acc619591990 = isSymbolC($acc519591990, $list19591990[5]) | |
210 | 210 | if (($size19591990 == 6)) | |
211 | 211 | then $acc619591990 | |
212 | 212 | else { | |
213 | 213 | let $acc719591990 = isSymbolC($acc619591990, $list19591990[6]) | |
214 | 214 | if (($size19591990 == 7)) | |
215 | 215 | then $acc719591990 | |
216 | 216 | else { | |
217 | 217 | let $acc819591990 = isSymbolC($acc719591990, $list19591990[7]) | |
218 | 218 | if (($size19591990 == 8)) | |
219 | 219 | then $acc819591990 | |
220 | 220 | else { | |
221 | 221 | let $acc919591990 = isSymbolC($acc819591990, $list19591990[8]) | |
222 | 222 | throw("List size exceed 8") | |
223 | 223 | } | |
224 | 224 | } | |
225 | 225 | } | |
226 | 226 | } | |
227 | 227 | } | |
228 | 228 | } | |
229 | 229 | } | |
230 | 230 | } | |
231 | 231 | } | |
232 | 232 | }) + "C"))) + getAmountOrClear((toString({ | |
233 | 233 | let $list20292060 = genotype | |
234 | 234 | let $size20292060 = size($list20292060) | |
235 | 235 | let $acc020292060 = 0 | |
236 | 236 | if (($size20292060 == 0)) | |
237 | 237 | then $acc020292060 | |
238 | 238 | else { | |
239 | 239 | let $acc120292060 = isSymbolD($acc020292060, $list20292060[0]) | |
240 | 240 | if (($size20292060 == 1)) | |
241 | 241 | then $acc120292060 | |
242 | 242 | else { | |
243 | 243 | let $acc220292060 = isSymbolD($acc120292060, $list20292060[1]) | |
244 | 244 | if (($size20292060 == 2)) | |
245 | 245 | then $acc220292060 | |
246 | 246 | else { | |
247 | 247 | let $acc320292060 = isSymbolD($acc220292060, $list20292060[2]) | |
248 | 248 | if (($size20292060 == 3)) | |
249 | 249 | then $acc320292060 | |
250 | 250 | else { | |
251 | 251 | let $acc420292060 = isSymbolD($acc320292060, $list20292060[3]) | |
252 | 252 | if (($size20292060 == 4)) | |
253 | 253 | then $acc420292060 | |
254 | 254 | else { | |
255 | 255 | let $acc520292060 = isSymbolD($acc420292060, $list20292060[4]) | |
256 | 256 | if (($size20292060 == 5)) | |
257 | 257 | then $acc520292060 | |
258 | 258 | else { | |
259 | 259 | let $acc620292060 = isSymbolD($acc520292060, $list20292060[5]) | |
260 | 260 | if (($size20292060 == 6)) | |
261 | 261 | then $acc620292060 | |
262 | 262 | else { | |
263 | 263 | let $acc720292060 = isSymbolD($acc620292060, $list20292060[6]) | |
264 | 264 | if (($size20292060 == 7)) | |
265 | 265 | then $acc720292060 | |
266 | 266 | else { | |
267 | 267 | let $acc820292060 = isSymbolD($acc720292060, $list20292060[7]) | |
268 | 268 | if (($size20292060 == 8)) | |
269 | 269 | then $acc820292060 | |
270 | 270 | else { | |
271 | 271 | let $acc920292060 = isSymbolD($acc820292060, $list20292060[8]) | |
272 | 272 | throw("List size exceed 8") | |
273 | 273 | } | |
274 | 274 | } | |
275 | 275 | } | |
276 | 276 | } | |
277 | 277 | } | |
278 | 278 | } | |
279 | 279 | } | |
280 | 280 | } | |
281 | 281 | } | |
282 | 282 | }) + "D"))) + getAmountOrClear((toString({ | |
283 | 283 | let $list20972128 = genotype | |
284 | 284 | let $size20972128 = size($list20972128) | |
285 | 285 | let $acc020972128 = 0 | |
286 | 286 | if (($size20972128 == 0)) | |
287 | 287 | then $acc020972128 | |
288 | 288 | else { | |
289 | 289 | let $acc120972128 = isSymbolE($acc020972128, $list20972128[0]) | |
290 | 290 | if (($size20972128 == 1)) | |
291 | 291 | then $acc120972128 | |
292 | 292 | else { | |
293 | 293 | let $acc220972128 = isSymbolE($acc120972128, $list20972128[1]) | |
294 | 294 | if (($size20972128 == 2)) | |
295 | 295 | then $acc220972128 | |
296 | 296 | else { | |
297 | 297 | let $acc320972128 = isSymbolE($acc220972128, $list20972128[2]) | |
298 | 298 | if (($size20972128 == 3)) | |
299 | 299 | then $acc320972128 | |
300 | 300 | else { | |
301 | 301 | let $acc420972128 = isSymbolE($acc320972128, $list20972128[3]) | |
302 | 302 | if (($size20972128 == 4)) | |
303 | 303 | then $acc420972128 | |
304 | 304 | else { | |
305 | 305 | let $acc520972128 = isSymbolE($acc420972128, $list20972128[4]) | |
306 | 306 | if (($size20972128 == 5)) | |
307 | 307 | then $acc520972128 | |
308 | 308 | else { | |
309 | 309 | let $acc620972128 = isSymbolE($acc520972128, $list20972128[5]) | |
310 | 310 | if (($size20972128 == 6)) | |
311 | 311 | then $acc620972128 | |
312 | 312 | else { | |
313 | 313 | let $acc720972128 = isSymbolE($acc620972128, $list20972128[6]) | |
314 | 314 | if (($size20972128 == 7)) | |
315 | 315 | then $acc720972128 | |
316 | 316 | else { | |
317 | 317 | let $acc820972128 = isSymbolE($acc720972128, $list20972128[7]) | |
318 | 318 | if (($size20972128 == 8)) | |
319 | 319 | then $acc820972128 | |
320 | 320 | else { | |
321 | 321 | let $acc920972128 = isSymbolE($acc820972128, $list20972128[8]) | |
322 | 322 | throw("List size exceed 8") | |
323 | 323 | } | |
324 | 324 | } | |
325 | 325 | } | |
326 | 326 | } | |
327 | 327 | } | |
328 | 328 | } | |
329 | 329 | } | |
330 | 330 | } | |
331 | 331 | } | |
332 | 332 | }) + "E"))) + getAmountOrClear((toString({ | |
333 | 333 | let $list21652196 = genotype | |
334 | 334 | let $size21652196 = size($list21652196) | |
335 | 335 | let $acc021652196 = 0 | |
336 | 336 | if (($size21652196 == 0)) | |
337 | 337 | then $acc021652196 | |
338 | 338 | else { | |
339 | 339 | let $acc121652196 = isSymbolF($acc021652196, $list21652196[0]) | |
340 | 340 | if (($size21652196 == 1)) | |
341 | 341 | then $acc121652196 | |
342 | 342 | else { | |
343 | 343 | let $acc221652196 = isSymbolF($acc121652196, $list21652196[1]) | |
344 | 344 | if (($size21652196 == 2)) | |
345 | 345 | then $acc221652196 | |
346 | 346 | else { | |
347 | 347 | let $acc321652196 = isSymbolF($acc221652196, $list21652196[2]) | |
348 | 348 | if (($size21652196 == 3)) | |
349 | 349 | then $acc321652196 | |
350 | 350 | else { | |
351 | 351 | let $acc421652196 = isSymbolF($acc321652196, $list21652196[3]) | |
352 | 352 | if (($size21652196 == 4)) | |
353 | 353 | then $acc421652196 | |
354 | 354 | else { | |
355 | 355 | let $acc521652196 = isSymbolF($acc421652196, $list21652196[4]) | |
356 | 356 | if (($size21652196 == 5)) | |
357 | 357 | then $acc521652196 | |
358 | 358 | else { | |
359 | 359 | let $acc621652196 = isSymbolF($acc521652196, $list21652196[5]) | |
360 | 360 | if (($size21652196 == 6)) | |
361 | 361 | then $acc621652196 | |
362 | 362 | else { | |
363 | 363 | let $acc721652196 = isSymbolF($acc621652196, $list21652196[6]) | |
364 | 364 | if (($size21652196 == 7)) | |
365 | 365 | then $acc721652196 | |
366 | 366 | else { | |
367 | 367 | let $acc821652196 = isSymbolF($acc721652196, $list21652196[7]) | |
368 | 368 | if (($size21652196 == 8)) | |
369 | 369 | then $acc821652196 | |
370 | 370 | else { | |
371 | 371 | let $acc921652196 = isSymbolF($acc821652196, $list21652196[8]) | |
372 | 372 | throw("List size exceed 8") | |
373 | 373 | } | |
374 | 374 | } | |
375 | 375 | } | |
376 | 376 | } | |
377 | 377 | } | |
378 | 378 | } | |
379 | 379 | } | |
380 | 380 | } | |
381 | 381 | } | |
382 | 382 | }) + "F"))) + getAmountOrClear((toString({ | |
383 | 383 | let $list22352266 = genotype | |
384 | 384 | let $size22352266 = size($list22352266) | |
385 | 385 | let $acc022352266 = 0 | |
386 | 386 | if (($size22352266 == 0)) | |
387 | 387 | then $acc022352266 | |
388 | 388 | else { | |
389 | 389 | let $acc122352266 = isSymbolG($acc022352266, $list22352266[0]) | |
390 | 390 | if (($size22352266 == 1)) | |
391 | 391 | then $acc122352266 | |
392 | 392 | else { | |
393 | 393 | let $acc222352266 = isSymbolG($acc122352266, $list22352266[1]) | |
394 | 394 | if (($size22352266 == 2)) | |
395 | 395 | then $acc222352266 | |
396 | 396 | else { | |
397 | 397 | let $acc322352266 = isSymbolG($acc222352266, $list22352266[2]) | |
398 | 398 | if (($size22352266 == 3)) | |
399 | 399 | then $acc322352266 | |
400 | 400 | else { | |
401 | 401 | let $acc422352266 = isSymbolG($acc322352266, $list22352266[3]) | |
402 | 402 | if (($size22352266 == 4)) | |
403 | 403 | then $acc422352266 | |
404 | 404 | else { | |
405 | 405 | let $acc522352266 = isSymbolG($acc422352266, $list22352266[4]) | |
406 | 406 | if (($size22352266 == 5)) | |
407 | 407 | then $acc522352266 | |
408 | 408 | else { | |
409 | 409 | let $acc622352266 = isSymbolG($acc522352266, $list22352266[5]) | |
410 | 410 | if (($size22352266 == 6)) | |
411 | 411 | then $acc622352266 | |
412 | 412 | else { | |
413 | 413 | let $acc722352266 = isSymbolG($acc622352266, $list22352266[6]) | |
414 | 414 | if (($size22352266 == 7)) | |
415 | 415 | then $acc722352266 | |
416 | 416 | else { | |
417 | 417 | let $acc822352266 = isSymbolG($acc722352266, $list22352266[7]) | |
418 | 418 | if (($size22352266 == 8)) | |
419 | 419 | then $acc822352266 | |
420 | 420 | else { | |
421 | 421 | let $acc922352266 = isSymbolG($acc822352266, $list22352266[8]) | |
422 | 422 | throw("List size exceed 8") | |
423 | 423 | } | |
424 | 424 | } | |
425 | 425 | } | |
426 | 426 | } | |
427 | 427 | } | |
428 | 428 | } | |
429 | 429 | } | |
430 | 430 | } | |
431 | 431 | } | |
432 | 432 | }) + "G"))) + getAmountOrClear((toString({ | |
433 | 433 | let $list23032334 = genotype | |
434 | 434 | let $size23032334 = size($list23032334) | |
435 | 435 | let $acc023032334 = 0 | |
436 | 436 | if (($size23032334 == 0)) | |
437 | 437 | then $acc023032334 | |
438 | 438 | else { | |
439 | 439 | let $acc123032334 = isSymbolH($acc023032334, $list23032334[0]) | |
440 | 440 | if (($size23032334 == 1)) | |
441 | 441 | then $acc123032334 | |
442 | 442 | else { | |
443 | 443 | let $acc223032334 = isSymbolH($acc123032334, $list23032334[1]) | |
444 | 444 | if (($size23032334 == 2)) | |
445 | 445 | then $acc223032334 | |
446 | 446 | else { | |
447 | 447 | let $acc323032334 = isSymbolH($acc223032334, $list23032334[2]) | |
448 | 448 | if (($size23032334 == 3)) | |
449 | 449 | then $acc323032334 | |
450 | 450 | else { | |
451 | 451 | let $acc423032334 = isSymbolH($acc323032334, $list23032334[3]) | |
452 | 452 | if (($size23032334 == 4)) | |
453 | 453 | then $acc423032334 | |
454 | 454 | else { | |
455 | 455 | let $acc523032334 = isSymbolH($acc423032334, $list23032334[4]) | |
456 | 456 | if (($size23032334 == 5)) | |
457 | 457 | then $acc523032334 | |
458 | 458 | else { | |
459 | 459 | let $acc623032334 = isSymbolH($acc523032334, $list23032334[5]) | |
460 | 460 | if (($size23032334 == 6)) | |
461 | 461 | then $acc623032334 | |
462 | 462 | else { | |
463 | 463 | let $acc723032334 = isSymbolH($acc623032334, $list23032334[6]) | |
464 | 464 | if (($size23032334 == 7)) | |
465 | 465 | then $acc723032334 | |
466 | 466 | else { | |
467 | 467 | let $acc823032334 = isSymbolH($acc723032334, $list23032334[7]) | |
468 | 468 | if (($size23032334 == 8)) | |
469 | 469 | then $acc823032334 | |
470 | 470 | else { | |
471 | 471 | let $acc923032334 = isSymbolH($acc823032334, $list23032334[8]) | |
472 | 472 | throw("List size exceed 8") | |
473 | 473 | } | |
474 | 474 | } | |
475 | 475 | } | |
476 | 476 | } | |
477 | 477 | } | |
478 | 478 | } | |
479 | 479 | } | |
480 | 480 | } | |
481 | 481 | } | |
482 | 482 | }) + "H"))) | |
483 | 483 | } | |
484 | 484 | ||
485 | 485 | ||
486 | 486 | func getAssetOrigin (generation) = if ((generation == "G")) | |
487 | 487 | then incubatorAddress | |
488 | 488 | else breederAddress | |
489 | 489 | ||
490 | 490 | ||
491 | 491 | func getAssetRarity (genotype,generation) = { | |
492 | 492 | let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity")) | |
493 | 493 | pow(quantity, 0, 5, 1, 2, HALFDOWN) | |
494 | 494 | } | |
495 | 495 | ||
496 | 496 | ||
497 | 497 | func getAssetFarmingPower (assetId) = { | |
498 | 498 | let assetName = value(assetInfo(assetId)).name | |
499 | 499 | let generation = take(takeRight(assetName, 2), 1) | |
500 | 500 | let gen = ((getGen(assetName) + "-") + generation) | |
501 | 501 | $Tuple2(gen, getAssetRarity(gen, generation)) | |
502 | 502 | } | |
503 | 503 | ||
504 | 504 | ||
505 | - | func | |
505 | + | func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower")) | |
506 | 506 | ||
507 | 507 | ||
508 | 508 | func getAssetsByGen (gen) = { | |
509 | 509 | let s = tryGetString(("assets_" + gen)) | |
510 | 510 | if ((s == "")) | |
511 | 511 | then nil | |
512 | 512 | else split(s, ",") | |
513 | 513 | } | |
514 | 514 | ||
515 | 515 | ||
516 | 516 | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower)) | |
517 | 517 | ||
518 | 518 | ||
519 | 519 | func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0)) | |
520 | 520 | then { | |
521 | 521 | let previousInterest = tryGetInteger("total_lastCheckInterest") | |
522 | 522 | let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight") | |
523 | 523 | let totalFarmingPower = tryGetInteger("total_farmingPower") | |
524 | 524 | calcInterest(previousInterest, previousInterestHeight, totalFarmingPower) | |
525 | 525 | } | |
526 | 526 | else if ((height >= tryGetInteger("total_startHeight"))) | |
527 | 527 | then 0 | |
528 | 528 | else throw("farming is not launched, yet") | |
529 | 529 | ||
530 | 530 | ||
531 | 531 | func calcAssetRewardDelta (address,assetId,assetFarmingPower) = { | |
532 | 532 | let lastCheckUserInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest")) | |
533 | 533 | let currentInterest = getCurrentInterest() | |
534 | 534 | (assetFarmingPower * (currentInterest - lastCheckUserInterest)) | |
535 | 535 | } | |
536 | 536 | ||
537 | 537 | ||
538 | 538 | func addAssetIdToGenEntry (assetId,assetGen) = { | |
539 | 539 | let currentValue = tryGetString((("assets_" + assetGen) + "_locked")) | |
540 | 540 | if ((currentValue == "")) | |
541 | 541 | then assetId | |
542 | 542 | else ((currentValue + ",") + assetId) | |
543 | 543 | } | |
544 | 544 | ||
545 | 545 | ||
546 | - | func getCheckDataChanges (address,assetId,rewardDelta,assetFarmingPowerDelta | |
546 | + | func getCheckDataChanges (address,assetId,rewardDelta,assetFarmingPowerDelta) = { | |
547 | 547 | let asset = toBase58String(assetId) | |
548 | 548 | [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPowerDelta)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_farmingPower")) + assetFarmingPowerDelta)), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + rewardDelta))] | |
549 | 549 | } | |
550 | 550 | ||
551 | 551 | ||
552 | 552 | @Callable(i) | |
553 | 553 | func init () = if ((i.caller != this)) | |
554 | 554 | then throw("admin only") | |
555 | 555 | else [IntegerEntry("total_startHeight", height)] | |
556 | 556 | ||
557 | 557 | ||
558 | 558 | ||
559 | 559 | @Callable(i) | |
560 | 560 | func stakeNFT () = { | |
561 | 561 | let assetId = value(value(i.payments[0]).assetId) | |
562 | 562 | let address = toString(i.caller) | |
563 | - | let $ | |
564 | - | let assetGen = $ | |
565 | - | let assetFarmingPower = $ | |
563 | + | let $t056645729 = getAssetFarmingPower(assetId) | |
564 | + | let assetGen = $t056645729._1 | |
565 | + | let assetFarmingPower = $t056645729._2 | |
566 | 566 | let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower) | |
567 | - | getCheckDataChanges(address, assetId, assetRewardDelta, assetFarmingPower | |
567 | + | getCheckDataChanges(address, assetId, assetRewardDelta, assetFarmingPower) | |
568 | 568 | } | |
569 | 569 | ||
570 | 570 | ||
571 | 571 | ||
572 | 572 | @Callable(i) | |
573 | 573 | func unstakeNFT (asset) = { | |
574 | 574 | let assetId = fromBase58String(asset) | |
575 | 575 | let address = toString(i.caller) | |
576 | - | let $t060626127 = getAssetFarmingPower(assetId) | |
577 | - | let assetGen = $t060626127._1 | |
578 | - | let assetFarmingPower = $t060626127._2 | |
576 | + | let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset) | |
579 | 577 | let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower) | |
580 | - | let return = getCheckDataChanges(address, assetId, assetRewardDelta, -(assetFarmingPower) | |
578 | + | let return = getCheckDataChanges(address, assetId, assetRewardDelta, -(assetFarmingPower)) | |
581 | 579 | (return ++ [ScriptTransfer(i.caller, 100, assetId)]) | |
582 | 580 | } | |
583 | 581 | ||
584 | 582 | ||
585 | 583 | ||
586 | 584 | @Callable(i) | |
587 | 585 | func claimReward (asset) = { | |
588 | 586 | let address = toString(i.caller) | |
589 | 587 | let assetId = fromBase58String(asset) | |
590 | - | let $ | |
591 | - | let assetGen = $ | |
592 | - | let assetFarmingPower = $ | |
588 | + | let $t067026767 = getAssetFarmingPower(assetId) | |
589 | + | let assetGen = $t067026767._1 | |
590 | + | let assetFarmingPower = $t067026767._2 | |
593 | 591 | let farmedAmount = (calcAssetRewardDelta(address, asset, assetFarmingPower) + tryGetInteger((("address_" + address) + "_lastCheckFarmedAmount"))) | |
594 | 592 | let withdrawnAmount = tryGetInteger((("address_" + address) + "_withdrawnAmount")) | |
595 | 593 | let reward = ((farmedAmount - withdrawnAmount) / scale) | |
596 | 594 | if ((0 >= reward)) | |
597 | 595 | then throw("you have no EGGs to withdraw") | |
598 | 596 | else [IntegerEntry((("address_" + address) + "_withdrawnAmount"), farmedAmount), ScriptTransfer(i.caller, reward, eggsAssetId)] | |
599 | 597 | } | |
600 | 598 | ||
601 | 599 | ||
602 | 600 | @Verifier(tx) | |
603 | 601 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
604 | 602 |
github/deemru/w8io/786bc32 81.33 ms ◑