tx · 7T5s711EEWufSGXhPEhan9ayxidFULUam15bHjixcVBd

3P6uaG88jjcLYZQrvJHLWPbFFRnChnAzmcU:  -0.14000000 Waves

2022.03.25 14:15 [3044557] smart account 3P6uaG88jjcLYZQrvJHLWPbFFRnChnAzmcU > SELF 0.00000000 Waves

{ "type": 13, "id": "7T5s711EEWufSGXhPEhan9ayxidFULUam15bHjixcVBd", "fee": 14000000, "feeAssetId": null, "timestamp": 1648210437655, "version": 1, "sender": "3P6uaG88jjcLYZQrvJHLWPbFFRnChnAzmcU", "senderPublicKey": "25FbY5KVYBwg3d7BHW8veu77fsJCs7VyzzunTKR4jYnv", "proofs": [ "4GRXGqLJsrud2Nt6zejAk6sadpsKF6FPPL21RPgQk3GB7ThYineF8jBwUYdJXj15BEzP5rwGSNkCa23CN7fPjwpN" ], "script": "base64:AAIFAAAAAAAAADMIAhIFCgMICAgSABIDCgEIEgQKAggBEgMKAQESBgoEAQEBARIECgIBARIECgIBCBIAEgAAAAA9AAAAAAtyZXZpc2lvbk51bQIAAAAoZGEzNTdjMjM2NDdiZWY4ZmM5MTE4Y2YyNTg0MTA0OGNiMmFhZWFhMwAAAAAIUFJJQ0VMRVQAAAAAAAAPQkAAAAAACU1VTFRTQ0FMRQAAAAAAAAAACAAAAAALRVVMRVJOVU1CRVIAAAAAABAzxNYAAAAABnNjYWxlNgAAAAAAAA9CQAAAAAAMc2NhbGU2QmlnSW50CQABNgAAAAEAAAAAAAAPQkAAAAAABnNjYWxlOAAAAAAABfXhAAAAAAAMc2NhbGU4QmlnSW50CQABNgAAAAEAAAAAAAX14QAAAAAAB3NjYWxlMTIAAAAA6NSlEAAAAAAAB3NjYWxlMTgJAAE2AAAAAQAN4Lazp2QAAAAAAAADU0VQAgAAAAJfXwEAAAASa2V5TmV1dHJpbm9BZGRyZXNzAAAAAAIAAAAdJXMlc19fY29uZmlnX19uZXV0cmlub0FkZHJlc3MBAAAAEmtleU5ldXRyaW5vQXNzZXRJZAAAAAACAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAQAAAB1rZXlMaXF1aWRhdGlvbkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAFGxpcXVpZGF0aW9uX2NvbnRyYWN0AQAAAA5rZXlSUERDb250cmFjdAAAAAACAAAADHJwZF9jb250cmFjdAEAAAASa2V5QXVjdGlvbkNvbnRyYWN0AAAAAAIAAAAQYXVjdGlvbl9jb250cmFjdAEAAAARa2V5Q29udG9sQ29udHJhY3QAAAAAAgAAABBjb250cm9sX2NvbnRyYWN0AQAAAA5rZXlCb25kQXNzZXRJZAAAAAACAAAADWJvbmRfYXNzZXRfaWQBAAAAEGtleUJhbGFuY2VMb2NrZWQAAAAAAgAAAA1iYWxhbmNlX2xvY2tfAQAAABVrZXlXYXZlc0xvY2tlZEJhbGFuY2UAAAAACQABLAAAAAIJAQAAABBrZXlCYWxhbmNlTG9ja2VkAAAAAAIAAAAFd2F2ZXMBAAAAGGtleU5ldXRyaW5vTG9ja2VkQmFsYW5jZQAAAAAJAAEsAAAAAgkBAAAAEGtleUJhbGFuY2VMb2NrZWQAAAAAAgAAAAhuZXV0cmlubwEAAAAVa2V5TWluV2F2ZXNTd2FwQW1vdW50AAAAAAIAAAAVbWluX3dhdmVzX3N3YXBfYW1vdW50AQAAABhrZXlNaW5OZXV0cmlub1N3YXBBbW91bnQAAAAAAgAAABhtaW5fbmV1dHJpbm9fc3dhcF9hbW91bnQBAAAAEmtleVdhdmVzT3V0RmVlUGFydAAAAAACAAAAFXdhdmVzT3V0X3N3YXBfZmVlUGFydAEAAAAVa2V5TmV1dHJpbm9PdXRGZWVQYXJ0AAAAAAIAAAAYbmV1dHJpbm9PdXRfc3dhcF9mZWVQYXJ0AQAAABNrZXlOc2J0TG9ja0NvbnRyYWN0AAAAAAIAAAAUJXNfX25zYnRMb2NrQ29udHJhY3QBAAAAD2tleU1hdGhDb250cmFjdAAAAAACAAAAECVzX19tYXRoQ29udHJhY3QBAAAAG2tleUJhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbAAAAAACAAAAG2JhbGFuY2Vfd2F2ZXNfbG9ja19pbnRlcnZhbAEAAAAea2V5QmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsAAAAAAIAAAAeYmFsYW5jZV9uZXV0cmlub19sb2NrX2ludGVydmFsAQAAAAhrZXlQcmljZQAAAAACAAAABXByaWNlAQAAABZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAAAAAQAAAAt1c2VyQWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABiVzJXMlcwkABEwAAAACAgAAAAtwYXJhbUJ5VXNlcgkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACAgAAAAVzdGFydAUAAAADbmlsBQAAAANTRVABAAAAC2tleUhhbGZMaWZlAAAAAAIAAAAMJXNfX2hhbGZMaWZlAQAAABBrZXlNaW5Mb2NrQW1vdW50AAAAAAIAAAARJXNfX21pbkxvY2tBbW91bnQBAAAAFWtleU1pbldhdmVzRm9yTnNidEJ1eQAAAAACAAAAEm1pbl93YXZlc19uc2J0X2J1eQEAAAAOa2V5TWluTnNidFNlbGwAAAAAAgAAAA1taW5fbnNidF9zZWxsAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAABAAAADWdldEJvb2xPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQbAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAhQUklDRUxFVAUAAAAFcHJpY2UFAAAABnNjYWxlOAUAAAAGc2NhbGU2AQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAhQUklDRUxFVAUAAAAGc2NhbGU2BQAAAAZzY2FsZTgBAAAACWFzQW55TGlzdAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUxpc3RbQW55XQQAAAAKdmFsQW55TGlzdAUAAAAHJG1hdGNoMAUAAAAKdmFsQW55TGlzdAkAAAIAAAABAgAAABtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAAAABWFzSW50AAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZ2YWxJbnQFAAAAByRtYXRjaDAFAAAABnZhbEludAkAAAIAAAABAgAAABVmYWlsIHRvIGNhc3QgaW50byBJbnQBAAAACGFzU3RyaW5nAAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZ2YWxTdHIFAAAAByRtYXRjaDAFAAAABnZhbFN0cgkAAAIAAAABAgAAABhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAAAADGFzVHVwbGUySW50cwAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACihJbnQsIEludCkEAAAAAXYFAAAAByRtYXRjaDAFAAAAAXYJAAACAAAAAQIAAAAdZmFpbCB0byBjYXN0IGludG8gVHVwbGUyIGludHMBAAAAEmFzU3dhcFBhcmFtc1NUUlVDVAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAGShJbnQsIEludCwgSW50LCBJbnQsIEludCkEAAAABnN0cnVjdAUAAAAHJG1hdGNoMAUAAAAGc3RydWN0CQAAAgAAAAECAAAAFWZhaWwgdG8gY2FzdCBpbnRvIEludAEAAAAFdG9YMTgAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkAATwAAAADCQABNgAAAAEFAAAAB29yaWdWYWwFAAAAB3NjYWxlMTgJAAE2AAAAAQUAAAANb3JpZ1NjYWxlTXVsdAEAAAAHZnJvbVgxOAAAAAIAAAADdmFsAAAAD3Jlc3VsdFNjYWxlTXVsdAkAAaAAAAABCQABPAAAAAMFAAAAA3ZhbAkAATYAAAABBQAAAA9yZXN1bHRTY2FsZU11bHQFAAAAB3NjYWxlMTgAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAASa2V5TmV1dHJpbm9BZGRyZXNzAAAAAAAAAAAPY29udHJvbENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEWtleUNvbnRvbENvbnRyYWN0AAAAAAAAAAAPYXVjdGlvbkNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEmtleUF1Y3Rpb25Db250cmFjdAAAAAAAAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAda2V5TGlxdWlkYXRpb25Db250cmFjdEFkZHJlc3MAAAAAAAAAAAtycGRDb250cmFjdAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAAA5rZXlSUERDb250cmFjdAAAAAAAAAAADG1hdGhDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAA9rZXlNYXRoQ29udHJhY3QAAAAAAAAAABNuc2J0U3Rha2luZ0NvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAE2tleU5zYnRMb2NrQ29udHJhY3QAAAAAAAAAABVuZXV0cmlub0Fzc2V0SWRTdHJpbmcJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAASa2V5TmV1dHJpbm9Bc3NldElkAAAAAAAAAAAPbmV1dHJpbm9Bc3NldElkCQACWQAAAAEFAAAAFW5ldXRyaW5vQXNzZXRJZFN0cmluZwAAAAAObnNidEFzc2V0SWRTdHIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAAA5rZXlCb25kQXNzZXRJZAAAAAAAAAAAC25zYnRBc3NldElkCQACWQAAAAEFAAAADm5zYnRBc3NldElkU3RyAQAAABJtaW5XYXZlc0Zvck5zYnRCdXkAAAAACQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAAD2F1Y3Rpb25Db250cmFjdAIAAAAgbWluV2F2ZXNBbW91bnROc2J0QnV5U1lTUkVBRE9OTFkFAAAAA25pbAUAAAADbmlsAQAAAA5taW5Oc2J0Rm9yU2VsbAAAAAAJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAPYXVjdGlvbkNvbnRyYWN0AgAAAB9taW5Oc2J0QW1vdW50Rm9yU2VsbFNZU1JFQURPTkxZBQAAAANuaWwFAAAAA25pbAEAAAAUcHJpdmF0ZU5zYnRQcmljZVJFU1QAAAAABAAAAAZwcmljZXMJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAgY2FsY0NvbnRyYWN0TnNidFByaWNlU1lTUkVBRE9OTFkJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAAANuaWwEAAAADm5zYnQydXNkblByaWNlCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAAQAAAAPbnNidDJ3YXZlc1ByaWNlCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAQkABRQAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAObnNidDJ1c2RuUHJpY2UFAAAADm5zYnQydXNkblByaWNlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAPbnNidDJ3YXZlc1ByaWNlBQAAAA9uc2J0MndhdmVzUHJpY2UAAAAKAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAwAAAA9uZXV0cmlub0FkZHJlc3MAAAAPbnNidExvY2tBZGRyZXNzAAAAC21hdGhBZGRyZXNzAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAADm5vdCBhdXRob3JpemVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlOZXV0cmlub0FkZHJlc3MAAAAABQAAAA9uZXV0cmlub0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU5zYnRMb2NrQ29udHJhY3QAAAAABQAAAA9uc2J0TG9ja0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleU1hdGhDb250cmFjdAAAAAAFAAAAC21hdGhBZGRyZXNzBQAAAANuaWwAAAABaQEAAAAVbmV1dHJpbm9TdGF0c1JFQURPTkxZAAAAAAQAAAAPbmV1dHJpbm9NZXRyaWNzCQEAAAAJYXNBbnlMaXN0AAAAAQkAA/wAAAAEBQAAAAxtYXRoQ29udHJhY3QCAAAAGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQAAAANuaWwFAAAAA25pbAQAAAAGcHJpY2VzCQEAAAAJYXNBbnlMaXN0AAAAAQkAA/wAAAAEBQAAAAxtYXRoQ29udHJhY3QCAAAAIGNhbGNDb250cmFjdE5zYnRQcmljZVNZU1JFQURPTkxZCQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsBAAAAAxjdXJyZW50UHJpY2UJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzAAAAAAAAAAAABAAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzAAAAAAAAAAABBAAAABJ3YXZlc0xvY2tlZEJhbGFuY2UJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzAAAAAAAAAAACBAAAAA9yZXNlcnZlc0luV2F2ZXMJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzAAAAAAAA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Q29udHJhY3QJAQAAABJrZXlXYXZlc091dEZlZVBhcnQAAAAABAAAAA11c2RuMldhdmVzRmVlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAVa2V5TmV1dHJpbm9PdXRGZWVQYXJ0AAAAAAQAAAAVdXNkblN3YXBEZWxheUR1cmF0aW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAea2V5QmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsAAAAAAQAAAAWd2F2ZXNTd2FwRGVsYXlEdXJhdGlvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAG2tleUJhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbAAAAAAEAAAACyR0MDgzNzE4NTMyCQEAAAASYXNTd2FwUGFyYW1zU1RSVUNUAAAAAQkAA/wAAAAEBQAAABBuZXV0cmlub0NvbnRyYWN0AgAAABtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAAANuaWwEAAAAEHN3YXBMaW1pdE1heFVzZG4IBQAAAAskdDA4MzcxODUzMgAAAAJfMQQAAAASc3dhcExpbWl0U3BlbnRVc2RuCAUAAAALJHQwODM3MTg1MzIAAAACXzIEAAAADmJsY2tzMkxtdFJlc2V0CAUAAAALJHQwODM3MTg1MzIAAAACXzMEAAAAEXN3YXBMaW1pdE1heFdhdmVzCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAAEHN3YXBMaW1pdE1heFVzZG4FAAAADGN1cnJlbnRQcmljZQkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAABYlZCVkJWQlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAPbWluV2F2ZXNTd2FwQW10CQAETAAAAAIJAAGkAAAAAQUAAAAObWluVXNkblN3YXBBbXQJAARMAAAAAgkAAaQAAAABBQAAAA13YXZlczJVc2RuRmVlCQAETAAAAAIJAAGkAAAAAQUAAAANdXNkbjJXYXZlc0ZlZQkABEwAAAACCQABpAAAAAEFAAAAFXVzZG5Td2FwRGVsYXlEdXJhdGlvbgkABEwAAAACCQABpAAAAAEFAAAAFndhdmVzU3dhcERlbGF5RHVyYXRpb24JAARMAAAAAgkAAaQAAAABBQAAAA5ibGNrczJMbXRSZXNldAkABEwAAAACCQABpAAAAAEFAAAAEXN3YXBMaW1pdE1heFdhdmVzCQAETAAAAAIJAAGkAAAAAQUAAAAQc3dhcExpbWl0TWF4VXNkbgkABEwAAAACCQABpAAAAAEFAAAAEnN3YXBMaW1pdFNwZW50VXNkbgUAAAADbmlsBQAAAANTRVAAAAABaQEAAAARZ25zYnRJbmZvUkVBRE9OTFkAAAACAAAAEXVzZXJBZGRyZXNzU3RyT3B0AAAAC25zYnRBbXREaWZmBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAkBAAAACGtleVByaWNlAAAAAAQAAAALJHQwOTQzMDk2MTMJAQAAABJhc1N3YXBQYXJhbXNTVFJVQ1QAAAABCQAD/AAAAAQFAAAAEG5ldXRyaW5vQ29udHJhY3QCAAAAG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkABEwAAAACBQAAABF1c2VyQWRkcmVzc1N0ck9wdAkABEwAAAACAAAAAAAAAAAABQAAAANuaWwFAAAAA25pbAQAAAAMbGltaXRNYXhVc2RuCAUAAAALJHQwOTQzMDk2MTMAAAACXzEEAAAACmxpbWl0U3BlbnQIBQAAAAskdDA5NDMwOTYxMwAAAAJfMgQAAAAOYmxja3MyTG10UmVzZXQIBQAAAAskdDA5NDMwOTYxMwAAAAJfMwQAAAAIZ25zYnRBbXQIBQAAAAskdDA5NDMwOTYxMwAAAAJfNAQAAAANZ25zYnRBbXRUb3RhbAgFAAAACyR0MDk0MzA5NjEzAAAAAl81BAAAAAskdDA5NjE3OTgyNQkBAAAAEmFzU3dhcFBhcmFtc1NUUlVDVAAAAAEJAAP8AAAABAUAAAAQbmV1dHJpbm9Db250cmFjdAIAAAAbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQAETAAAAAIFAAAAEXVzZXJBZGRyZXNzU3RyT3B0CQAETAAAAAIFAAAAC25zYnRBbXREaWZmBQAAAANuaWwFAAAAA25pbAQAAAAPbGltaXRNYXhVc2RuTkVXCAUAAAALJHQwOTYxNzk4MjUAAAACXzEEAAAADWxpbWl0U3BlbnRORVcIBQAAAAskdDA5NjE3OTgyNQAAAAJfMgQAAAARYmxja3MyTG10UmVzZXRORVcIBQAAAAskdDA5NjE3OTgyNQAAAAJfMwQAAAALZ25zYnRBbXRORVcIBQAAAAskdDA5NjE3OTgyNQAAAAJfNAQAAAAQZ25zYnRBbXRUb3RhbE5FVwgFAAAACyR0MDk2MTc5ODI1AAAAAl81BAAAAA1saW1pdE1heFdhdmVzCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAADGxpbWl0TWF4VXNkbgUAAAAMY3VycmVudFByaWNlBAAAABBsaW1pdE1heFdhdmVzTkVXCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAAD2xpbWl0TWF4VXNkbk5FVwUAAAAMY3VycmVudFByaWNlBAAAAApnbnNidFNoYXJlAwkBAAAAAiE9AAAAAgUAAAANZ25zYnRBbXRUb3RhbAAAAAAAAAAAAAkAAGsAAAADCQAAaAAAAAIFAAAACGduc2J0QW10AAAAAAAAAABkBQAAAAdzY2FsZTEyBQAAAA1nbnNidEFtdFRvdGFsAAAAAAAAAAAABAAAAA1nbnNidFNoYXJlTkVXAwkBAAAAAiE9AAAAAgUAAAAQZ25zYnRBbXRUb3RhbE5FVwAAAAAAAAAAAAkAAGsAAAADCQAAaAAAAAIFAAAAC2duc2J0QW10TkVXAAAAAAAAAABkBQAAAAdzY2FsZTEyBQAAABBnbnNidEFtdFRvdGFsTkVXAAAAAAAAAAAABAAAAApyZXdhcmRJbmZvCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQFAAAAE25zYnRTdGFraW5nQ29udHJhY3QCAAAAGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQkABEwAAAACBQAAABF1c2VyQWRkcmVzc1N0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", "chainId": 87, "height": 3044557, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BrsgkqZQ3kww9ozp5gmGaMnzZ3QgPgQ5MSLmoLx7sdV6 Next: 4kD6d1LdCebFMthzQ6dbrD2ZYmXNhWJaqh9JLSvMkNd2 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let revisionNum = "443c64dd5056b5be23b700224699295e733e0452"
4+let revisionNum = "da357c23647bef8fc9118cf25841048cb2aaeaa3"
55
66 let PRICELET = 1000000
77
184184 func minNsbtForSell () = asInt(invoke(auctionContract, "minNsbtAmountForSellSYSREADONLY", nil, nil))
185185
186186
187+func privateNsbtPriceREST () = {
188+ let prices = asAnyList(invoke(mathContract, "calcContractNsbtPriceSYSREADONLY", [0], nil))
189+ let nsbt2usdnPrice = asInt(prices[0])
190+ let nsbt2wavesPrice = asInt(prices[1])
191+ $Tuple2(IntegerEntry("nsbt2usdnPrice", nsbt2usdnPrice), IntegerEntry("nsbt2wavesPrice", nsbt2wavesPrice))
192+ }
193+
194+
187195 @Callable(i)
188196 func constructor (neutrinoAddress,nsbtLockAddress,mathAddress) = if ((i.caller != this))
189197 then throw("not authorized")
225233 let usdn2WavesFee = getIntegerValue(neutrinoContract, keyNeutrinoOutFeePart())
226234 let usdnSwapDelayDuration = getIntegerValue(neutrinoContract, keyBalanceNeutrinoLockInterval())
227235 let wavesSwapDelayDuration = getIntegerValue(neutrinoContract, keyBalanceWavesLockInterval())
228- let $t080338194 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStr, 0], nil))
229- let swapLimitMaxUsdn = $t080338194._1
230- let swapLimitSpentUsdn = $t080338194._2
231- let blcks2LmtReset = $t080338194._3
236+ let $t083718532 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStr, 0], nil))
237+ let swapLimitMaxUsdn = $t083718532._1
238+ let swapLimitSpentUsdn = $t083718532._2
239+ let blcks2LmtReset = $t083718532._3
232240 let swapLimitMaxWaves = convertNeutrinoToWaves(swapLimitMaxUsdn, currentPrice)
233241 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(currentPrice), toString(minWavesSwapAmt), toString(minUsdnSwapAmt), toString(waves2UsdnFee), toString(usdn2WavesFee), toString(usdnSwapDelayDuration), toString(wavesSwapDelayDuration), toString(blcks2LmtReset), toString(swapLimitMaxWaves), toString(swapLimitMaxUsdn), toString(swapLimitSpentUsdn)], SEP))
234242 }
238246 @Callable(i)
239247 func gnsbtInfoREADONLY (userAddressStrOpt,nsbtAmtDiff) = {
240248 let currentPrice = getIntegerValue(controlContract, keyPrice())
241- let $t090929275 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, 0], nil))
242- let limitMaxUsdn = $t090929275._1
243- let limitSpent = $t090929275._2
244- let blcks2LmtReset = $t090929275._3
245- let gnsbtAmt = $t090929275._4
246- let gnsbtAmtTotal = $t090929275._5
247- let $t092799487 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, nsbtAmtDiff], nil))
248- let limitMaxUsdnNEW = $t092799487._1
249- let limitSpentNEW = $t092799487._2
250- let blcks2LmtResetNEW = $t092799487._3
251- let gnsbtAmtNEW = $t092799487._4
252- let gnsbtAmtTotalNEW = $t092799487._5
249+ let $t094309613 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, 0], nil))
250+ let limitMaxUsdn = $t094309613._1
251+ let limitSpent = $t094309613._2
252+ let blcks2LmtReset = $t094309613._3
253+ let gnsbtAmt = $t094309613._4
254+ let gnsbtAmtTotal = $t094309613._5
255+ let $t096179825 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, nsbtAmtDiff], nil))
256+ let limitMaxUsdnNEW = $t096179825._1
257+ let limitSpentNEW = $t096179825._2
258+ let blcks2LmtResetNEW = $t096179825._3
259+ let gnsbtAmtNEW = $t096179825._4
260+ let gnsbtAmtTotalNEW = $t096179825._5
253261 let limitMaxWaves = convertNeutrinoToWaves(limitMaxUsdn, currentPrice)
254262 let limitMaxWavesNEW = convertNeutrinoToWaves(limitMaxUsdnNEW, currentPrice)
255263 let gnsbtShare = if ((gnsbtAmtTotal != 0))
317325 }
318326
319327
328+
329+@Callable(i)
330+func neutrinoStateREST () = {
331+ let neutrinoMetrics = asAnyList(invoke(mathContract, "calcNeutinoMetricsREADONLY", nil, nil))
332+ let currentPrice = asInt(neutrinoMetrics[0])
333+ let neutrinoLockedBalance = asInt(neutrinoMetrics[1])
334+ let wavesLockedBalance = asInt(neutrinoMetrics[2])
335+ let reservesInWaves = asInt(neutrinoMetrics[3])
336+ let reservesInUsdn = asInt(neutrinoMetrics[4])
337+ let neutrinoSupply = asInt(neutrinoMetrics[5])
338+ let surplus = asInt(neutrinoMetrics[6])
339+ let surplusPercent = asInt(neutrinoMetrics[7])
340+ let BR = asInt(neutrinoMetrics[8])
341+ let nsbtSupply = asInt(neutrinoMetrics[9])
342+ throw(makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__"))
343+ }
344+
345+
346+
347+@Callable(i)
348+func nsbtPriceREST () = {
349+ let prices = asAnyList(invoke(mathContract, "calcContractNsbtPriceSYSREADONLY", [0], nil))
350+ let nsbt2usdnPrice = asInt(prices[0])
351+ let nsbt2wavesPrice = asInt(prices[1])
352+ let restData = makeString(["startNsbtPriceREST", toString(nsbt2usdnPrice), toString(nsbt2wavesPrice), "endNsbtPriceREST"], "__")
353+ throw(restData)
354+ }
355+
356+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let revisionNum = "443c64dd5056b5be23b700224699295e733e0452"
4+let revisionNum = "da357c23647bef8fc9118cf25841048cb2aaeaa3"
55
66 let PRICELET = 1000000
77
88 let MULTSCALE = 8
99
1010 let EULERNUMBER = 271828182
1111
1212 let scale6 = 1000000
1313
1414 let scale6BigInt = toBigInt(1000000)
1515
1616 let scale8 = 100000000
1717
1818 let scale8BigInt = toBigInt(100000000)
1919
2020 let scale12 = 1000000000000
2121
2222 let scale18 = toBigInt(1000000000000000000)
2323
2424 let SEP = "__"
2525
2626 func keyNeutrinoAddress () = "%s%s__config__neutrinoAddress"
2727
2828
2929 func keyNeutrinoAssetId () = "neutrino_asset_id"
3030
3131
3232 func keyLiquidationContractAddress () = "liquidation_contract"
3333
3434
3535 func keyRPDContract () = "rpd_contract"
3636
3737
3838 func keyAuctionContract () = "auction_contract"
3939
4040
4141 func keyContolContract () = "control_contract"
4242
4343
4444 func keyBondAssetId () = "bond_asset_id"
4545
4646
4747 func keyBalanceLocked () = "balance_lock_"
4848
4949
5050 func keyWavesLockedBalance () = (keyBalanceLocked() + "waves")
5151
5252
5353 func keyNeutrinoLockedBalance () = (keyBalanceLocked() + "neutrino")
5454
5555
5656 func keyMinWavesSwapAmount () = "min_waves_swap_amount"
5757
5858
5959 func keyMinNeutrinoSwapAmount () = "min_neutrino_swap_amount"
6060
6161
6262 func keyWavesOutFeePart () = "wavesOut_swap_feePart"
6363
6464
6565 func keyNeutrinoOutFeePart () = "neutrinoOut_swap_feePart"
6666
6767
6868 func keyNsbtLockContract () = "%s__nsbtLockContract"
6969
7070
7171 func keyMathContract () = "%s__mathContract"
7272
7373
7474 func keyBalanceWavesLockInterval () = "balance_waves_lock_interval"
7575
7676
7777 func keyBalanceNeutrinoLockInterval () = "balance_neutrino_lock_interval"
7878
7979
8080 func keyPrice () = "price"
8181
8282
8383 func keyLockParamStartBlock (userAddress) = makeString(["%s%s%s", "paramByUser", userAddress, "start"], SEP)
8484
8585
8686 func keyHalfLife () = "%s__halfLife"
8787
8888
8989 func keyMinLockAmount () = "%s__minLockAmount"
9090
9191
9292 func keyMinWavesForNsbtBuy () = "min_waves_nsbt_buy"
9393
9494
9595 func keyMinNsbtSell () = "min_nsbt_sell"
9696
9797
9898 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
9999
100100
101101 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
102102
103103
104104 func getBoolOrFail (address,key) = valueOrErrorMessage(getBoolean(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
105105
106106
107107 func convertNeutrinoToWaves (amount,price) = fraction(fraction(amount, PRICELET, price), scale8, scale6)
108108
109109
110110 func convertWavesToNeutrino (amount,price) = fraction(fraction(amount, price, PRICELET), scale6, scale8)
111111
112112
113113 func asAnyList (val) = match val {
114114 case valAnyList: List[Any] =>
115115 valAnyList
116116 case _ =>
117117 throw("fail to cast into List[Any]")
118118 }
119119
120120
121121 func asInt (val) = match val {
122122 case valInt: Int =>
123123 valInt
124124 case _ =>
125125 throw("fail to cast into Int")
126126 }
127127
128128
129129 func asString (val) = match val {
130130 case valStr: String =>
131131 valStr
132132 case _ =>
133133 throw("fail to cast into String")
134134 }
135135
136136
137137 func asTuple2Ints (val) = match val {
138138 case v: (Int, Int) =>
139139 v
140140 case _ =>
141141 throw("fail to cast into Tuple2 ints")
142142 }
143143
144144
145145 func asSwapParamsSTRUCT (val) = match val {
146146 case struct: (Int, Int, Int, Int, Int) =>
147147 struct
148148 case _ =>
149149 throw("fail to cast into Int")
150150 }
151151
152152
153153 func toX18 (origVal,origScaleMult) = fraction(toBigInt(origVal), scale18, toBigInt(origScaleMult))
154154
155155
156156 func fromX18 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), scale18))
157157
158158
159159 let neutrinoContract = addressFromStringValue(getStringOrFail(this, keyNeutrinoAddress()))
160160
161161 let controlContract = addressFromStringValue(getStringOrFail(neutrinoContract, keyContolContract()))
162162
163163 let auctionContract = addressFromStringValue(getStringOrFail(neutrinoContract, keyAuctionContract()))
164164
165165 let liquidationContract = getStringOrFail(neutrinoContract, keyLiquidationContractAddress())
166166
167167 let rpdContract = getStringOrFail(neutrinoContract, keyRPDContract())
168168
169169 let mathContract = addressFromStringValue(getStringOrFail(this, keyMathContract()))
170170
171171 let nsbtStakingContract = addressFromStringValue(getStringOrFail(this, keyNsbtLockContract()))
172172
173173 let neutrinoAssetIdString = getStringOrFail(neutrinoContract, keyNeutrinoAssetId())
174174
175175 let neutrinoAssetId = fromBase58String(neutrinoAssetIdString)
176176
177177 let nsbtAssetIdStr = getStringValue(neutrinoContract, keyBondAssetId())
178178
179179 let nsbtAssetId = fromBase58String(nsbtAssetIdStr)
180180
181181 func minWavesForNsbtBuy () = asInt(invoke(auctionContract, "minWavesAmountNsbtBuySYSREADONLY", nil, nil))
182182
183183
184184 func minNsbtForSell () = asInt(invoke(auctionContract, "minNsbtAmountForSellSYSREADONLY", nil, nil))
185185
186186
187+func privateNsbtPriceREST () = {
188+ let prices = asAnyList(invoke(mathContract, "calcContractNsbtPriceSYSREADONLY", [0], nil))
189+ let nsbt2usdnPrice = asInt(prices[0])
190+ let nsbt2wavesPrice = asInt(prices[1])
191+ $Tuple2(IntegerEntry("nsbt2usdnPrice", nsbt2usdnPrice), IntegerEntry("nsbt2wavesPrice", nsbt2wavesPrice))
192+ }
193+
194+
187195 @Callable(i)
188196 func constructor (neutrinoAddress,nsbtLockAddress,mathAddress) = if ((i.caller != this))
189197 then throw("not authorized")
190198 else [StringEntry(keyNeutrinoAddress(), neutrinoAddress), StringEntry(keyNsbtLockContract(), nsbtLockAddress), StringEntry(keyMathContract(), mathAddress)]
191199
192200
193201
194202 @Callable(i)
195203 func neutrinoStatsREADONLY () = {
196204 let neutrinoMetrics = asAnyList(invoke(mathContract, "calcNeutinoMetricsREADONLY", nil, nil))
197205 let prices = asAnyList(invoke(mathContract, "calcContractNsbtPriceSYSREADONLY", [0], nil))
198206 let currentPrice = asInt(neutrinoMetrics[0])
199207 let neutrinoLockedBalance = asInt(neutrinoMetrics[1])
200208 let wavesLockedBalance = asInt(neutrinoMetrics[2])
201209 let reservesInWaves = asInt(neutrinoMetrics[3])
202210 let reservesInUsdn = asInt(neutrinoMetrics[4])
203211 let neutrinoSupply = asInt(neutrinoMetrics[5])
204212 let surplus = asInt(neutrinoMetrics[6])
205213 let surplusPercent = asInt(neutrinoMetrics[7])
206214 let BR = asInt(neutrinoMetrics[8])
207215 let nsbtSupply = asInt(neutrinoMetrics[9])
208216 let maxNsbtSupply = asInt(neutrinoMetrics[10])
209217 let nsbt2usdnPrice = asInt(prices[0])
210218 let nsbt2wavesPrice = asInt(prices[1])
211219 let minWaves4NsbtBuy = minWavesForNsbtBuy()
212220 let minNsbtsell = minNsbtForSell()
213221 let minNsbtLockAmt = getIntOrFail(nsbtStakingContract, keyMinLockAmount())
214222 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply), toString(maxNsbtSupply), toString(nsbt2usdnPrice), toString(nsbt2wavesPrice), toString(minWaves4NsbtBuy), toString(minNsbtsell), toString(minNsbtLockAmt)], SEP))
215223 }
216224
217225
218226
219227 @Callable(i)
220228 func swapInfoREADONLY (userAddressStr) = {
221229 let currentPrice = getIntegerValue(controlContract, keyPrice())
222230 let minWavesSwapAmt = getIntegerValue(neutrinoContract, keyMinWavesSwapAmount())
223231 let minUsdnSwapAmt = getIntegerValue(neutrinoContract, keyMinNeutrinoSwapAmount())
224232 let waves2UsdnFee = getIntegerValue(neutrinoContract, keyWavesOutFeePart())
225233 let usdn2WavesFee = getIntegerValue(neutrinoContract, keyNeutrinoOutFeePart())
226234 let usdnSwapDelayDuration = getIntegerValue(neutrinoContract, keyBalanceNeutrinoLockInterval())
227235 let wavesSwapDelayDuration = getIntegerValue(neutrinoContract, keyBalanceWavesLockInterval())
228- let $t080338194 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStr, 0], nil))
229- let swapLimitMaxUsdn = $t080338194._1
230- let swapLimitSpentUsdn = $t080338194._2
231- let blcks2LmtReset = $t080338194._3
236+ let $t083718532 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStr, 0], nil))
237+ let swapLimitMaxUsdn = $t083718532._1
238+ let swapLimitSpentUsdn = $t083718532._2
239+ let blcks2LmtReset = $t083718532._3
232240 let swapLimitMaxWaves = convertNeutrinoToWaves(swapLimitMaxUsdn, currentPrice)
233241 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(currentPrice), toString(minWavesSwapAmt), toString(minUsdnSwapAmt), toString(waves2UsdnFee), toString(usdn2WavesFee), toString(usdnSwapDelayDuration), toString(wavesSwapDelayDuration), toString(blcks2LmtReset), toString(swapLimitMaxWaves), toString(swapLimitMaxUsdn), toString(swapLimitSpentUsdn)], SEP))
234242 }
235243
236244
237245
238246 @Callable(i)
239247 func gnsbtInfoREADONLY (userAddressStrOpt,nsbtAmtDiff) = {
240248 let currentPrice = getIntegerValue(controlContract, keyPrice())
241- let $t090929275 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, 0], nil))
242- let limitMaxUsdn = $t090929275._1
243- let limitSpent = $t090929275._2
244- let blcks2LmtReset = $t090929275._3
245- let gnsbtAmt = $t090929275._4
246- let gnsbtAmtTotal = $t090929275._5
247- let $t092799487 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, nsbtAmtDiff], nil))
248- let limitMaxUsdnNEW = $t092799487._1
249- let limitSpentNEW = $t092799487._2
250- let blcks2LmtResetNEW = $t092799487._3
251- let gnsbtAmtNEW = $t092799487._4
252- let gnsbtAmtTotalNEW = $t092799487._5
249+ let $t094309613 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, 0], nil))
250+ let limitMaxUsdn = $t094309613._1
251+ let limitSpent = $t094309613._2
252+ let blcks2LmtReset = $t094309613._3
253+ let gnsbtAmt = $t094309613._4
254+ let gnsbtAmtTotal = $t094309613._5
255+ let $t096179825 = asSwapParamsSTRUCT(invoke(neutrinoContract, "swapParamsByUserSYSREADONLY", [userAddressStrOpt, nsbtAmtDiff], nil))
256+ let limitMaxUsdnNEW = $t096179825._1
257+ let limitSpentNEW = $t096179825._2
258+ let blcks2LmtResetNEW = $t096179825._3
259+ let gnsbtAmtNEW = $t096179825._4
260+ let gnsbtAmtTotalNEW = $t096179825._5
253261 let limitMaxWaves = convertNeutrinoToWaves(limitMaxUsdn, currentPrice)
254262 let limitMaxWavesNEW = convertNeutrinoToWaves(limitMaxUsdnNEW, currentPrice)
255263 let gnsbtShare = if ((gnsbtAmtTotal != 0))
256264 then fraction((gnsbtAmt * 100), scale12, gnsbtAmtTotal)
257265 else 0
258266 let gnsbtShareNEW = if ((gnsbtAmtTotalNEW != 0))
259267 then fraction((gnsbtAmtNEW * 100), scale12, gnsbtAmtTotalNEW)
260268 else 0
261269 let rewardInfo = asString(invoke(nsbtStakingContract, "unclaimedRewardsREADONLY", [userAddressStrOpt], nil))
262270 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(gnsbtAmt), toString(gnsbtAmtNEW), toString(gnsbtShare), toString(gnsbtShareNEW), toString(limitMaxUsdn), toString(limitMaxWaves), toString(limitMaxUsdnNEW), toString(limitMaxWavesNEW), rewardInfo], SEP))
263271 }
264272
265273
266274
267275 @Callable(i)
268276 func buyNsbtREADONLY (wavesPay) = {
269277 let minWavesAmountNsbtBuy = minWavesForNsbtBuy()
270278 if ((minWavesAmountNsbtBuy > wavesPay))
271279 then throw((("min " + toString(minWavesAmountNsbtBuy)) + " waves expected"))
272280 else {
273281 let curveResult = asAnyList(invoke(mathContract, "curveFunctionREADONLY", [wavesPay], nil))
274282 if ((curveResult == curveResult))
275283 then {
276284 let nsbtAmount = asInt(curveResult[0])
277285 if ((0 >= nsbtAmount))
278286 then throw("nsbtAmount <= 0")
279287 else $Tuple2(nil, makeString(["%d", toString(nsbtAmount)], SEP))
280288 }
281289 else throw("Strict value is not equal to itself.")
282290 }
283291 }
284292
285293
286294
287295 @Callable(i)
288296 func mergedStakeREADONLY (amount1,height1,amount2,height2) = {
289297 let halfLife = getIntOrFail(nsbtStakingContract, keyHalfLife())
290298 let h = asInt(invoke(mathContract, "mergeStakesREADONLY", [amount1, height1, amount2, height2, halfLife], nil))
291299 if ((h == h))
292300 then $Tuple2(nil, makeString(["%d%d", toString((amount1 + amount2)), toString(h)], SEP))
293301 else throw("Strict value is not equal to itself.")
294302 }
295303
296304
297305
298306 @Callable(i)
299307 func unstakeComissionAmountByHeightREADONLY (amount,startHeight) = {
300308 let halfLife = getIntOrFail(nsbtStakingContract, keyHalfLife())
301309 let a = asInt(invoke(mathContract, "getUnstakeComissionAmountREADONLY", [amount, startHeight, halfLife], nil))
302310 if ((a == a))
303311 then $Tuple2(nil, makeString(["%d", toString(a)], SEP))
304312 else throw("Strict value is not equal to itself.")
305313 }
306314
307315
308316
309317 @Callable(i)
310318 func unstakeComissionAmountByUserREADONLY (amount,userAddress) = {
311319 let halfLife = getIntOrFail(nsbtStakingContract, keyHalfLife())
312320 let startHeight = valueOrElse(getInteger(nsbtStakingContract, keyLockParamStartBlock(userAddress)), height)
313321 let a = asInt(invoke(mathContract, "getUnstakeComissionAmountREADONLY", [amount, startHeight, halfLife], nil))
314322 if ((a == a))
315323 then $Tuple2(nil, makeString(["%d", toString(a)], SEP))
316324 else throw("Strict value is not equal to itself.")
317325 }
318326
319327
328+
329+@Callable(i)
330+func neutrinoStateREST () = {
331+ let neutrinoMetrics = asAnyList(invoke(mathContract, "calcNeutinoMetricsREADONLY", nil, nil))
332+ let currentPrice = asInt(neutrinoMetrics[0])
333+ let neutrinoLockedBalance = asInt(neutrinoMetrics[1])
334+ let wavesLockedBalance = asInt(neutrinoMetrics[2])
335+ let reservesInWaves = asInt(neutrinoMetrics[3])
336+ let reservesInUsdn = asInt(neutrinoMetrics[4])
337+ let neutrinoSupply = asInt(neutrinoMetrics[5])
338+ let surplus = asInt(neutrinoMetrics[6])
339+ let surplusPercent = asInt(neutrinoMetrics[7])
340+ let BR = asInt(neutrinoMetrics[8])
341+ let nsbtSupply = asInt(neutrinoMetrics[9])
342+ throw(makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__"))
343+ }
344+
345+
346+
347+@Callable(i)
348+func nsbtPriceREST () = {
349+ let prices = asAnyList(invoke(mathContract, "calcContractNsbtPriceSYSREADONLY", [0], nil))
350+ let nsbt2usdnPrice = asInt(prices[0])
351+ let nsbt2wavesPrice = asInt(prices[1])
352+ let restData = makeString(["startNsbtPriceREST", toString(nsbt2usdnPrice), toString(nsbt2wavesPrice), "endNsbtPriceREST"], "__")
353+ throw(restData)
354+ }
355+
356+

github/deemru/w8io/3ef1775 
62.11 ms