tx · J9BgLH1DoCgCd8fhn2zh23oHVywysoaG8RfM8PtrbKd9

3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT:  -0.01400000 Waves

2022.02.16 15:25 [2991263] smart account 3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT > SELF 0.00000000 Waves

{ "type": 13, "id": "J9BgLH1DoCgCd8fhn2zh23oHVywysoaG8RfM8PtrbKd9", "fee": 1400000, "feeAssetId": null, "timestamp": 1645014373542, "version": 2, "chainId": 87, "sender": "3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT", "senderPublicKey": "DvzM1HgWkv7KTs8nozoqi2VnCgL56k1kFNgpTCYNqt9S", "proofs": [ "3xwJr3DCT3pfZ53azV5s3QBB9QPFxsR71wkLKB7MyCWhgJdUdTbt2P4JSg7qgDeXX8UFyzatpQK9jELxTcNnuEXR" ], "script": "base64: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VExFTkFNRQUAAAAHYWRkcmVzcwUAAAALbWFudGxlTmZ0SWQEAAAADWtNYW50bGVFeGlzdHMJAQAAABFrZXlBcnRlZmFjdEV4aXN0cwAAAAIFAAAACk1BTlRMRU5BTUUFAAAAC21hbnRsZU5mdElkBAAAAAxrTWFudGxlT3duZXIJAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADWtNYW50bGVTdGF0dXMJAQAAABFrZXlBcnRlZmFjdFN0YXR1cwAAAAIFAAAACk1BTlRMRU5BTUUFAAAAC21hbnRsZU5mdElkBAAAAA1rQXJ0ZWZhY3RUeXBlCQEAAAAPa2V5QXJ0ZWZhY3RUeXBlAAAAAQUAAAALbWFudGxlTmZ0SWQEAAAAD2tNYW50bGVJbnZlc3RlZAkBAAAAE2tleUFydGVmYWN0SW52ZXN0ZWQAAAACBQAAAApNQU5UTEVOQU1FCQACWAAAAAEFAAAAC21hbnRsZU5mdElkBAAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBAAAAGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMAAAADBQAAAApNQU5UTEVOQU1FBQAAAAdhZGRyZXNzBQAAAAttYW50bGVOZnRJZAQAAAASa09ubHlBcnRlZmFjdExldmVsCQEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABBQAAAAttYW50bGVOZnRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMa01hbnRsZUxldmVsBQAAAAVsZXZlbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa01hbnRsZUludmVzdGVkBQAAAAhpbnZlc3RlZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAANa01hbnRsZUV4aXN0cwYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAMa01hbnRsZU93bmVyBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtNYW50bGVTdGF0dXMFAAAAClNUQVRVU0ZSRUUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa0FydGVmYWN0VHlwZQUAAAAKTUFOVExFTkFNRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa09ubHlBcnRlZmFjdExldmVsBQAAAAVsZXZlbAUAAAADbmlsAAAAAWkBAAAAC2J1eUFydGVmYWN0AAAAAQAAAAR0eXBlAwkBAAAAAiE9AAAAAgUAAAAEdHlwZQUAAAAKTUFOVExFTkFNRQkAAAIAAAABAgAAABxZb3UgY2FuIGJ1eSBvbmx5IG1hbnRsZXMgbm93BAAAAAtNQU5UTEVQUklDRQAAAAAAAA9CQAQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkBQAAAAplZ2dBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAA8WW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEFAAAACmVnZ0Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAUAAAALTUFOVExFUFJJQ0UJAAACAAAAAQkAASwAAAACAgAAAERUbyBidXkgYSBtYW50bGUgeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkAAaQAAAABBQAAAAtNQU5UTEVQUklDRQQAAAAOaXNzdWVNYW50bGVORlQJAARCAAAABQIAAAANRFVDSy1NQU5UTEUtMAIAAAAgW0FydGVmYWN0XSBNYW50bGUgTkZUIGZvciBKZWR1Y2sAAAAAAAAAAAEAAAAAAAAAAAAHBAAAAAttYW50bGVOZnRJZAkABDgAAAABBQAAAA5pc3N1ZU1hbnRsZU5GVAQAAAAMa01hbnRsZUxldmVsCQEAAAAQa2V5QXJ0ZWZhY3RMZXZlbAAAAAMFAAAACk1BTlRMRU5BTUUJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZUV4aXN0cwkBAAAAEWtleUFydGVmYWN0RXhpc3RzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABBQAAAAttYW50bGVOZnRJZAQAAAAPa01hbnRsZUludmVzdGVkCQEAAAATa2V5QXJ0ZWZhY3RJbnZlc3RlZAAAAAIFAAAACk1BTlRMRU5BTUUJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAACk1BTlRMRU5BTUUJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAttYW50bGVOZnRJZAQAAAASa09ubHlBcnRlZmFjdExldmVsCQEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABBQAAAAttYW50bGVOZnRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMa01hbnRsZUxldmVsAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rTWFudGxlSW52ZXN0ZWQFAAAAC01BTlRMRVBSSUNFCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA1rTWFudGxlRXhpc3RzBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrTWFudGxlT3duZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtNYW50bGVTdGF0dXMFAAAAClNUQVRVU0ZSRUUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa0FydGVmYWN0VHlwZQUAAAAKTUFOVExFTkFNRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa09ubHlBcnRlZmFjdExldmVsAAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAANdXBncmFkZU1hbnRsZQAAAAEAAAAKYXJ0ZWZhY3RJZAQAAAARdXBncmFkZVBvaW50UHJpY2UAAAAAAAAPQkAEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAUAAAAKZWdnQXNzZXRJZAkAAAIAAAABCQABLAAAAAICAAAAPFlvdSBjYW4gYXR0YWNoIG9ubHkgRUdHIHRva2VucyB3aXRoIHRoZSBmb2xsb3dpbmcgYXNzZXQgaWQ6IAkAAlgAAAABBQAAAAplZ2dBc3NldElkAwkAAGYAAAACBQAAABF1cGdyYWRlUG9pbnRQcmljZQgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACAgAAAClNaW5pbWFsIHBheW1lbnQgZm9yIHVwZ3JhZGluZyBtYW50bGUgaXM6IAkAAaQAAAABBQAAABF1cGdyYWRlUG9pbnRQcmljZQQAAAANa01hbnRsZUV4aXN0cwkBAAAAEWtleUFydGVmYWN0RXhpc3RzAAAAAgUAAAAKTUFOVExFTkFNRQkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAAAxrTWFudGxlT3duZXIJAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgUAAAAKTUFOVExFTkFNRQkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAAAxtYW50bGVFeGlzdHMJAQAAABFAZXh0ck5hdGl2ZSgxMDU2KQAAAAEFAAAADWtNYW50bGVFeGlzdHMEAAAAC21hbnRsZU93bmVyCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAAAxrTWFudGxlT3duZXIDCQEAAAABIQAAAAEFAAAADG1hbnRsZUV4aXN0cwkAAAIAAAABAgAAACVNYW50bGUgd2l0aCBzdWNoIGFuIElEIGRvZXMgbm90IGV4aXN0AwkBAAAAAiE9AAAAAgUAAAALbWFudGxlT3duZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAAAgAAAAECAAAAIVlvdSdyZSBub3QgYW4gb3duZXIgb2YgdGhlIG1hbnRsZQQAAAAPa01hbnRsZUludmVzdGVkCQEAAAATa2V5QXJ0ZWZhY3RJbnZlc3RlZAAAAAIFAAAACk1BTlRMRU5BTUUFAAAACmFydGVmYWN0SWQEAAAAFW1hbnRsZUFscmVhZHlJbnZlc3RlZAkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAPa01hbnRsZUludmVzdGVkBAAAAAxrTWFudGxlTGV2ZWwJAQAAABBrZXlBcnRlZmFjdExldmVsAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAASa09ubHlBcnRlZmFjdExldmVsCQEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADXRvdGFsSW52ZXN0ZWQJAABkAAAAAgUAAAAVbWFudGxlQWxyZWFkeUludmVzdGVkCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAQAAAAIbmV3TGV2ZWwJAABpAAAAAgkAAGQAAAACCQAAaAAAAAIAAAAAAAAAAAoJAABsAAAABgUAAAANdG90YWxJbnZlc3RlZAAAAAAAAAAACAAAAAAAAAAABgAAAAAAAAAAAQAAAAAAAAAACAUAAAAGSEFMRlVQAAAAAAAF9eEAAAAAAAAF9eEACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwFAAAACG5ld0xldmVsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rTWFudGxlSW52ZXN0ZWQFAAAADXRvdGFsSW52ZXN0ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtPbmx5QXJ0ZWZhY3RMZXZlbAUAAAAIbmV3TGV2ZWwFAAAAA25pbAAAAAFpAQAAAA1wdXRPbkFydGVmYWN0AAAAAQAAAAphcnRlZmFjdElkBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAEWF0dGFjaGVkQXNzZXRJbmZvCQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAAE05GVCBpcyBub3QgYXR0YWNoZWQDAwkBAAAAAiE9AAAAAggIBQAAABFhdHRhY2hlZEFzc2V0SW5mbwAAAAZpc3N1ZXIAAAAFYnl0ZXMFAAAAEWluY3ViYXRvckNvbnRyYWN0CQEAAAACIT0AAAACCAgFAAAAEWF0dGFjaGVkQXNzZXRJbmZvAAAABmlzc3VlcgAAAAVieXRlcwUAAAAPYnJlZWRlckNvbnRyYWN0BwkAAAIAAAABAgAAADlZb3UgY2FuIGF0dGFjaCBvbmx5IERVQ0tzIGlzc3VlZCBieSBpbmN1YmF0b3Igb3IgYnJlZWRlciAEAAAADWtNYW50bGVFeGlzdHMJAQAAABFrZXlBcnRlZmFjdEV4aXN0cwAAAAIFAAAACk1BTlRMRU5BTUUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAMa01hbnRsZU93bmVyCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIFAAAACk1BTlRMRU5BTUUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAKTUFOVExFTkFNRQkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBAAAAGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMAAAADBQAAAApNQU5UTEVOQU1FCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAAAlrRHVja0xvY2sJAQAAAAtrZXlEdWNrTG9jawAAAAIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAQAAAAMbWFudGxlRXhpc3RzCQEAAAARQGV4dHJOYXRpdmUoMTA1NikAAAABBQAAAA1rTWFudGxlRXhpc3RzBAAAAAttYW50bGVPd25lcgkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQUAAAAMa01hbnRsZU93bmVyBAAAAAxtYW50bGVTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADWtNYW50bGVTdGF0dXMEAAAAEWtBcnRlZmFjdElkQnlUeXBlCQEAAAAaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUAAAACBQAAAApNQU5UTEVOQU1FCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEFAAAADG1hbnRsZUV4aXN0cwkAAAIAAAABAgAAACVNYW50bGUgd2l0aCBzdWNoIGFuIElEIGRvZXMgbm90IGV4aXN0AwkBAAAAAiE9AAAAAgUAAAALbWFudGxlT3duZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAAAgAAAAECAAAAIVlvdSdyZSBub3QgYW4gb3duZXIgb2YgdGhlIG1hbnRsZQMJAQAAAAIhPQAAAAIFAAAADG1hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkAAAIAAAABAgAAABdNYW50bGUgaXMgYWxyZWFkeSB1c2VkIQQAAAAOa1B1dE9uQXJ0ZWZhY3QJAQAAABBrZXlQdXRPbkFydGVmYWN0AAAABAUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFydGVmYWN0SWQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAADmtQdXRPbkFydGVmYWN0BgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rTWFudGxlU3RhdHVzBQAAAA5TVEFUVVNPQ0NVUElFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUAAAAOU1RBVFVTT0NDVVBJRUQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtEdWNrTG9jawYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa0FydGVmYWN0SWRCeVR5cGUFAAAACmFydGVmYWN0SWQFAAAAA25pbAAAAAFpAQAAAA90YWtlT2ZmQXJ0ZWZhY3QAAAACAAAABmR1Y2tJZAAAAAxhcnRlZmFjdFR5cGUEAAAAGGtBcnRlZmFjdElkQnlUeXBlQW5kRHVjawkBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgUAAAAMYXJ0ZWZhY3RUeXBlCQACWQAAAAEFAAAABmR1Y2tJZAQAAAAKYXJ0ZWZhY3RJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQUAAAAYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrBAAAAA1rQXJ0ZWZhY3RUeXBlCQEAAAAPa2V5QXJ0ZWZhY3RUeXBlAAAAAQkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAAA5rUHV0T25BcnRlZmFjdAkBAAAAEGtleVB1dE9uQXJ0ZWZhY3QAAAAEBQAAAAxhcnRlZmFjdFR5cGUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAZkdWNrSWQJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAUa1B1dE9uQXJ0ZWZhY3RTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDU2KQAAAAEFAAAADmtQdXRPbkFydGVmYWN0BAAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwkBAAAAGWtleUFydGVmYWN0T3duZXJBbmRTdGF0dXMAAAADBQAAAAxhcnRlZmFjdFR5cGUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAACWtEdWNrTG9jawkBAAAAC2tleUR1Y2tMb2NrAAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAABmR1Y2tJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAMYXJ0ZWZhY3RUeXBlCQACWQAAAAEFAAAACmFydGVmYWN0SWQDCQEAAAACIT0AAAACBQAAABRrUHV0T25BcnRlZmFjdFN0YXR1cwYJAAACAAAAAQIAAAAmVGhlcmUgaXMgbm8gZHVjayB3aXRoIHN1Y2ggcGFyYW1ldGVyZXMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAOa1B1dE9uQXJ0ZWZhY3QJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACWtEdWNrTG9jawkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rTWFudGxlU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAZkdWNrSWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V538ZUkQ==", "height": 2991263, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7KfeLt5wfjUTXzGx3A2U7o5JM2rURRdTa4bKwf3QsvYd Next: CVW8FcqtrVbULWNsHpAht6cAkvCNETxKKWTuKA3hpDt4 Diff:
OldNewDifferences
136136 func putOnArtefact (artefactId) = {
137137 let firstPayment = value(i.payments[0])
138138 let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
139- if (if ((attachedAssetInfo.issuer.bytes != incubatorContract))
140- then (attachedAssetInfo.issuer.bytes != breederContract)
141- else false)
142- then throw("You can attach only DUCKs issued by incubator or breeder ")
143- else {
144- let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
145- let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
146- let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
147- let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
148- let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
149- let mantleExists = getBooleanValue(kMantleExists)
150- let mantleOwner = getStringValue(kMantleOwner)
151- let mantleStatus = getStringValue(kMantleStatus)
152- let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
153- if (!(mantleExists))
154- then throw("Mantle with such an ID does not exist")
155- else if ((mantleOwner != toString(i.originCaller)))
156- then throw("You're not an owner of the mantle")
157- else if ((mantleStatus != STATUSFREE))
158- then throw("Mantle is already used!")
159- else {
160- let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
139+ if ((firstPayment.amount != 1))
140+ then throw("NFT is not attached")
141+ else if (if ((attachedAssetInfo.issuer.bytes != incubatorContract))
142+ then (attachedAssetInfo.issuer.bytes != breederContract)
143+ else false)
144+ then throw("You can attach only DUCKs issued by incubator or breeder ")
145+ else {
146+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
147+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
148+ let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
149+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
150+ let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
151+ let mantleExists = getBooleanValue(kMantleExists)
152+ let mantleOwner = getStringValue(kMantleOwner)
153+ let mantleStatus = getStringValue(kMantleStatus)
154+ let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
155+ if (!(mantleExists))
156+ then throw("Mantle with such an ID does not exist")
157+ else if ((mantleOwner != toString(i.originCaller)))
158+ then throw("You're not an owner of the mantle")
159+ else if ((mantleStatus != STATUSFREE))
160+ then throw("Mantle is already used!")
161+ else {
162+ let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
161163 [BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
162- }
163- }
164+ }
165+ }
164166 }
165167
166168
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let breederContract = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
55
66 let incubatorContract = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
77
88 let swopPromoContract = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD'
99
1010 let eggAssetId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
1111
1212 let MANTLENAME = "mantle"
1313
1414 let STATUSFREE = "FREE"
1515
1616 let STATUSOCCUPIED = "OCCUPIED"
1717
1818 func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
1919
2020
2121 func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
2222
2323
2424 func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
2525
2626
2727 func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
2828
2929
3030 func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
3131
3232
3333 func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
3434
3535
3636 func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
3737
3838
3939 func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
4040
4141
4242 func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
4343
4444
4545 func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
4646
4747
4848 func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
4949
5050
5151 func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
5252
5353
5454 @Callable(i)
5555 func issueFreeMantle (address,type,level,invested) = if (if ((i.caller != this))
5656 then (i.caller != Address(swopPromoContract))
5757 else false)
5858 then throw("Can be called only by admin")
5959 else if ((type != MANTLENAME))
6060 then throw("You can buy only mantles now")
6161 else {
6262 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
6363 let mantleNftId = calculateAssetId(issueMantleNFT)
6464 let kMantleLevel = keyArtefactLevel(MANTLENAME, address, mantleNftId)
6565 let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
6666 let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
6767 let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
6868 let kArtefactType = keyArtefactType(mantleNftId)
6969 let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
7070 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, address, mantleNftId)
7171 let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
7272 [IntegerEntry(kMantleLevel, level), IntegerEntry(kMantleInvested, invested), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, address), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, level)]
7373 }
7474
7575
7676
7777 @Callable(i)
7878 func buyArtefact (type) = if ((type != MANTLENAME))
7979 then throw("You can buy only mantles now")
8080 else {
8181 let MANTLEPRICE = 1000000
8282 let firstPayment = value(i.payments[0])
8383 if ((firstPayment.assetId != eggAssetId))
8484 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggAssetId)))
8585 else if ((firstPayment.amount != MANTLEPRICE))
8686 then throw(("To buy a mantle you currently need the following amount of EGGlets: " + toString(MANTLEPRICE)))
8787 else {
8888 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
8989 let mantleNftId = calculateAssetId(issueMantleNFT)
9090 let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.caller), mantleNftId)
9191 let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
9292 let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
9393 let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
9494 let kArtefactType = keyArtefactType(mantleNftId)
9595 let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
9696 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.caller), mantleNftId)
9797 let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
9898 [IntegerEntry(kMantleLevel, 1), IntegerEntry(kMantleInvested, MANTLEPRICE), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, toString(i.caller)), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, 1)]
9999 }
100100 }
101101
102102
103103
104104 @Callable(i)
105105 func upgradeMantle (artefactId) = {
106106 let upgradePointPrice = 1000000
107107 let firstPayment = value(i.payments[0])
108108 if ((firstPayment.assetId != eggAssetId))
109109 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggAssetId)))
110110 else if ((upgradePointPrice > firstPayment.amount))
111111 then throw(("Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
112112 else {
113113 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
114114 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
115115 let mantleExists = getBooleanValue(kMantleExists)
116116 let mantleOwner = getStringValue(kMantleOwner)
117117 if (!(mantleExists))
118118 then throw("Mantle with such an ID does not exist")
119119 else if ((mantleOwner != toString(i.originCaller)))
120120 then throw("You're not an owner of the mantle")
121121 else {
122122 let kMantleInvested = keyArtefactInvested(MANTLENAME, artefactId)
123123 let mantleAlreadyInvested = getIntegerValue(kMantleInvested)
124124 let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
125125 let kOnlyArtefactLevel = keyOnlyArtefactLevel(fromBase58String(artefactId))
126126 let totalInvested = (mantleAlreadyInvested + firstPayment.amount)
127127 let newLevel = (((10 * pow(totalInvested, 8, 6, 1, 8, HALFUP)) + 100000000) / 100000000)
128128 [IntegerEntry(kMantleLevel, newLevel), IntegerEntry(kMantleInvested, totalInvested), IntegerEntry(kOnlyArtefactLevel, newLevel)]
129129 }
130130 }
131131 }
132132
133133
134134
135135 @Callable(i)
136136 func putOnArtefact (artefactId) = {
137137 let firstPayment = value(i.payments[0])
138138 let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
139- if (if ((attachedAssetInfo.issuer.bytes != incubatorContract))
140- then (attachedAssetInfo.issuer.bytes != breederContract)
141- else false)
142- then throw("You can attach only DUCKs issued by incubator or breeder ")
143- else {
144- let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
145- let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
146- let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
147- let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
148- let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
149- let mantleExists = getBooleanValue(kMantleExists)
150- let mantleOwner = getStringValue(kMantleOwner)
151- let mantleStatus = getStringValue(kMantleStatus)
152- let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
153- if (!(mantleExists))
154- then throw("Mantle with such an ID does not exist")
155- else if ((mantleOwner != toString(i.originCaller)))
156- then throw("You're not an owner of the mantle")
157- else if ((mantleStatus != STATUSFREE))
158- then throw("Mantle is already used!")
159- else {
160- let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
139+ if ((firstPayment.amount != 1))
140+ then throw("NFT is not attached")
141+ else if (if ((attachedAssetInfo.issuer.bytes != incubatorContract))
142+ then (attachedAssetInfo.issuer.bytes != breederContract)
143+ else false)
144+ then throw("You can attach only DUCKs issued by incubator or breeder ")
145+ else {
146+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
147+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
148+ let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
149+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
150+ let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
151+ let mantleExists = getBooleanValue(kMantleExists)
152+ let mantleOwner = getStringValue(kMantleOwner)
153+ let mantleStatus = getStringValue(kMantleStatus)
154+ let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
155+ if (!(mantleExists))
156+ then throw("Mantle with such an ID does not exist")
157+ else if ((mantleOwner != toString(i.originCaller)))
158+ then throw("You're not an owner of the mantle")
159+ else if ((mantleStatus != STATUSFREE))
160+ then throw("Mantle is already used!")
161+ else {
162+ let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
161163 [BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
162- }
163- }
164+ }
165+ }
164166 }
165167
166168
167169
168170 @Callable(i)
169171 func takeOffArtefact (duckId,artefactType) = {
170172 let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
171173 let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
172174 let kArtefactType = keyArtefactType(fromBase58String(artefactId))
173175 let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
174176 let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
175177 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
176178 let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
177179 let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
178180 if ((kPutOnArtefactStatus != true))
179181 then throw("There is no duck with such parameteres")
180182 else [DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))]
181183 }
182184
183185
184186 @Verifier(tx)
185187 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
186188

github/deemru/w8io/6500d08 
40.54 ms