tx · Ef3ndKwh9MKx9MCmb8UJYKX8FBebvEzFsKhvDqZHVNRY

3MuAPY3jP4q2AoNYX27B5BU9EoLU77mr7pS:  -0.02000000 Waves

2022.02.11 18:43 [1919149] smart account 3MuAPY3jP4q2AoNYX27B5BU9EoLU77mr7pS > SELF 0.00000000 Waves

{ "type": 13, "id": "Ef3ndKwh9MKx9MCmb8UJYKX8FBebvEzFsKhvDqZHVNRY", "fee": 2000000, "feeAssetId": null, "timestamp": 1644594264374, "version": 1, "sender": "3MuAPY3jP4q2AoNYX27B5BU9EoLU77mr7pS", "senderPublicKey": "rqCnkHfz5ix6HNKiVvYE3URUtLs6f2nWzt4hpdGGQdm", "proofs": [ "4dBhkRCdKxkJ9TwLhXAewvzyZG4hXnESuHjJVScoXsvFM9V4PVnf7cBnKxHTw5RTmyzaB3KefpFKo5HVZzrxwSKw" ], "script": "base64:AAIFAAAAAAAAAAgIAhIAEgASAAAAAFQAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNemJ4MzRFeDVyUmJuMzl2VUh4OWtpd2gzbm5lRjhTNXdlAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAA2tleQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAAANrZXkCAAAAAAEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAADa2V5BwEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdhZGRyZXNzBQAAAANrZXkAAAAAAAAAAAABAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB2FkZHJlc3MFAAAAA2tleQcAAAAADFNFTkRUWEVYUElSRQAAAAAAAAAAHgAAAAAPTElTVFNQTElUU1lNQk9MAgAAAAFfAAAAAA5MSVNUREFUQVNZTUJPTAIAAAABKwAAAAAHV0FWRUxFVAAAAAAABfXhAAAAAAAFUEFVTEkAAAAAAAAPQkAAAAAACFBSSUNFTEVUAAAAAAAAD0JAAAAAAARNVUxUAAAAAAAF9eEAAAAAAAlNVUxUU0NBTEUAAAAAAAAAAAgAAAAAEk5ldXRyaW5vQXNzZXRJZEtleQIAAAARbmV1dHJpbm9fYXNzZXRfaWQAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJBdWN0aW9uQ29udHJhY3RLZXkCAAAAEGF1Y3Rpb25fY29udHJhY3QAAAAAFkxpcXVpZGF0aW9uQ29udHJhY3RLZXkCAAAAFGxpcXVpZGF0aW9uX2NvbnRyYWN0AAAAAA5SUERDb250cmFjdEtleQIAAAAMcnBkX2NvbnRyYWN0AAAAABFDb250b2xDb250cmFjdEtleQIAAAAQY29udHJvbF9jb250cmFjdAAAAAAbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5AgAAABtiYWxhbmNlX3dhdmVzX2xvY2tfaW50ZXJ2YWwAAAAAHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQIAAAAeYmFsYW5jZV9uZXV0cmlub19sb2NrX2ludGVydmFsAAAAABVNaW5XYXZlc1N3YXBBbW91bnRLZXkCAAAAFW1pbl93YXZlc19zd2FwX2Ftb3VudAAAAAAYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5AgAAABhtaW5fbmV1dHJpbm9fc3dhcF9hbW91bnQAAAAAG05vZGVPcmFjbGVQcm92aWRlclB1YktleUtleQIAAAAUbm9kZV9vcmFjbGVfcHJvdmlkZXIAAAAADVJQREJhbGFuY2VLZXkCAAAAC3JwZF9iYWxhbmNlAQAAABhnZXRSUERDb250cmFjdEJhbGFuY2VLZXkAAAABAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAA1SUERCYWxhbmNlS2V5AgAAAAFfCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAAACFByaWNlS2V5AgAAAAVwcmljZQAAAAANUHJpY2VJbmRleEtleQIAAAALcHJpY2VfaW5kZXgAAAAADElzQmxvY2tlZEtleQIAAAAKaXNfYmxvY2tlZAEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAACFByaWNlS2V5AgAAAAFfCQABpAAAAAEFAAAABWJsb2NrAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABAAAABWluZGV4CQABLAAAAAIJAAEsAAAAAgUAAAANUHJpY2VJbmRleEtleQIAAAABXwkAAaQAAAABBQAAAAVpbmRleAAAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAADWJhbGFuY2VfbG9ja18AAAAAFVdhdmVzTG9ja2VkQmFsYW5jZUtleQkAASwAAAACBQAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAAFd2F2ZXMAAAAAGE5ldXRyaW5vTG9ja2VkQmFsYW5jZUtleQkAASwAAAACBQAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAAIbmV1dHJpbm8BAAAAIGdldFJQRFNuYXBzaG90Q29udHJhY3RCYWxhbmNlS2V5AAAAAgAAAAVjb3VudAAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADVJQREJhbGFuY2VLZXkCAAAAAV8JAAJYAAAAAQUAAAAHYXNzZXRJZAIAAAABXwkAAaQAAAABBQAAAAVjb3VudAEAAAAdZ2V0Q2FuY2VsTGVhc2VUeFJlc2VydmVGZWVLZXkAAAABAAAABGhhc2gJAAEsAAAAAgkAASwAAAACAgAAABtjYW5jZWxfbGVhc2VfdHhfcmVzZXJ2ZV9mZWUCAAAAAV8FAAAABGhhc2gBAAAAGGdldFdhdmVzTG9ja2VkQmFsYW5jZUtleQAAAAEAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACBQAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkCAAAAAV8FAAAABW93bmVyAQAAABtnZXROZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkAAAABAAAABW93bmVyCQABLAAAAAIJAAEsAAAAAgUAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5AgAAAAFfBQAAAAVvd25lcgEAAAAYZ2V0QmFsYW5jZVVubG9ja0Jsb2NrS2V5AAAAAQAAAAVvd25lcgkAASwAAAACAgAAABViYWxhbmNlX3VubG9ja19ibG9ja18FAAAABW93bmVyAQAAAA9nZXRSUERQcm9maXRLZXkAAAABAAAABWNvdW50CQABLAAAAAIJAAEsAAAAAgIAAAAKcnBkX3Byb2ZpdAIAAAABXwkAAaQAAAABBQAAAAVjb3VudAEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAhQUklDRUxFVAUAAAAFcHJpY2UFAAAAB1dBVkVMRVQFAAAABVBBVUxJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAhQUklDRUxFVAUAAAAFUEFVTEkFAAAAB1dBVkVMRVQBAAAAEmNvbnZlcnRXYXZlc1RvQm9uZAAAAAIAAAAGYW1vdW50AAAABXByaWNlCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAABmFtb3VudAUAAAAFcHJpY2UBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABAAAACWpzb25BcnJheQkABLUAAAACBQAAAAlqc29uQXJyYXkCAAAAASwAAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAFkxpcXVpZGF0aW9uQ29udHJhY3RLZXkAAAAAFW5ldXRyaW5vQXNzZXRJZFN0cmluZwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAASTmV1dHJpbm9Bc3NldElkS2V5AAAAAA9uZXV0cmlub0Fzc2V0SWQJAAJZAAAAAQUAAAAVbmV1dHJpbm9Bc3NldElkU3RyaW5nAAAAAA9hdWN0aW9uQ29udHJhY3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEkF1Y3Rpb25Db250cmFjdEtleQAAAAALcnBkQ29udHJhY3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAADlJQRENvbnRyYWN0S2V5AAAAAA9jb250cm9sQ29udHJhY3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEUNvbnRvbENvbnRyYWN0S2V5AAAAAApwcmljZUluZGV4CQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAA1QcmljZUluZGV4S2V5AAAAAAlpc0Jsb2NrZWQJAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAAxJc0Jsb2NrZWRLZXkAAAAAGG5vZGVPcmFjbGVQcm92aWRlclB1YktleQkAAlkAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkAAAAAGGJhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5AAAAABtiYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWwJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQAAAAASbWluV2F2ZXNTd2FwQW1vdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABVNaW5XYXZlc1N3YXBBbW91bnRLZXkAAAAAFW1pbk5ldXRyaW5vU3dhcEFtb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5AAAAAA5uc2J0QXNzZXRJZFN0cgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAOQm9uZEFzc2V0SWRLZXkAAAAAC25zYnRBc3NldElkCQACWQAAAAEFAAAADm5zYnRBc3NldElkU3RyAAAAABVkZXByZWNhdGVkQm9uZEFzc2V0SWQJAAJZAAAAAQIAAAAsOTc1YWtaQmZuTWo1MTNVN01aYUhLelFybXNFeDVhRTN3ZFdLVHJIQmhiakYAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5AAAAABJ3YXZlc0xvY2tlZEJhbGFuY2UJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAFVdhdmVzTG9ja2VkQmFsYW5jZUtleQAAAAAPcmVzZXJ2ZXNJbldhdmVzCQAAZQAAAAIICQAD7wAAAAEFAAAAEG5ldXRyaW5vQ29udHJhY3QAAAAHcmVndWxhcgUAAAASd2F2ZXNMb2NrZWRCYWxhbmNlAAAAAA5yZXNlcnZlc0luVXNkbgkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAA9yZXNlcnZlc0luV2F2ZXMFAAAADGN1cnJlbnRQcmljZQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB3N1cnBsdXMJAABlAAAAAgUAAAAOcmVzZXJ2ZXNJblVzZG4FAAAADm5ldXRyaW5vU3VwcGx5AAAAAA5zdXJwbHVzUGVyY2VudAkAAGgAAAACCQAAawAAAAMFAAAAB3N1cnBsdXMFAAAABVBBVUxJBQAAAA5uZXV0cmlub1N1cHBseQAAAAAAAAAAZAAAAAACQlIJAABrAAAAAwUAAAAOcmVzZXJ2ZXNJblVzZG4FAAAABVBBVUxJBQAAAA5uZXV0cmlub1N1cHBseQAAAAAOYXVjdGlvbkFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAD2F1Y3Rpb25Db250cmFjdAAAAAANbnNidFN1cHBseU1BWAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAALbnNidEFzc2V0SWQAAAAIcXVhbnRpdHkAAAAACm5zYnRTdXBwbHkJAABlAAAAAgUAAAANbnNidFN1cHBseU1BWAkAA/AAAAACBQAAAA5hdWN0aW9uQWRkcmVzcwUAAAALbnNidEFzc2V0SWQAAAAABElkeEEAAAAAAAAAAAAAAAAACElkeFBhdWxCAAAAAAAAAAABAAAAAA1JZHhXUmVzQXNVc2RuAAAAAAAAAAACAAAAAAlJZHhNdWx0QlIAAAAAAAAAAAMAAAAADElkeE11bHRQb3dlcgAAAAAAAAAABAAAAAARSWR4TXVsdEV4cEluUG93ZXIAAAAAAAAAAAUAAAAACElkeE11bHRLAAAAAAAAAAAGAQAAAApjYWxjdWxhdGVLAAAABQAAAAR3UmF3AAAABHVSYXcAAAAFcHJpY2UAAAAEbVJhdwAAAARzUmF3BAAAAANFWFAAAAAAABAzxIQEAAAAAWEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAQbnNidEN1cnZlUGFyYW1fYQAAAAAAAAAAAwQAAAAFcGF1bEIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAQbnNidEN1cnZlUGFyYW1fYgkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAMFAAAABVBBVUxJAAAAAAAAAAAKBAAAAA93UmVzZXJ2ZXNJblVzZG4JAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAEd1JhdwUAAAAFcHJpY2UEAAAABm11bHRCUgkAAGsAAAADBQAAAA93UmVzZXJ2ZXNJblVzZG4FAAAABE1VTFQFAAAABHVSYXcEAAAACW11bHRQb3dlcgkAAGgAAAACBQAAAAFhCQAAZQAAAAIFAAAABm11bHRCUgkAAGgAAAACAAAAAAAAAAABBQAAAARNVUxUBAAAAA5tdWx0RXhwSW5Qb3dlcgkAAGwAAAAGBQAAAANFWFAFAAAACU1VTFRTQ0FMRQUAAAAJbXVsdFBvd2VyBQAAAAlNVUxUU0NBTEUFAAAACU1VTFRTQ0FMRQUAAAAERE9XTgQAAAAFbXVsdEsJAABrAAAAAwUAAAAFcGF1bEIFAAAADm11bHRFeHBJblBvd2VyBQAAAAVQQVVMSQkABEwAAAACBQAAAAFhCQAETAAAAAIFAAAABXBhdWxCCQAETAAAAAIFAAAAD3dSZXNlcnZlc0luVXNkbgkABEwAAAACBQAAAAZtdWx0QlIJAARMAAAAAgUAAAAJbXVsdFBvd2VyCQAETAAAAAIFAAAADm11bHRFeHBJblBvd2VyCQAETAAAAAIFAAAABW11bHRLBQAAAANuaWwBAAAAFHByaXZhdGVOc2J0UHJpY2VSRVNUAAAAAAQAAAAKa0NhbGNBcnJheQkBAAAACmNhbGN1bGF0ZUsAAAAFBQAAAA9yZXNlcnZlc0luV2F2ZXMFAAAADm5ldXRyaW5vU3VwcGx5BQAAAAxjdXJyZW50UHJpY2UFAAAADW5zYnRTdXBwbHlNQVgFAAAACm5zYnRTdXBwbHkEAAAABW11bHRLCQABkQAAAAIFAAAACmtDYWxjQXJyYXkFAAAACElkeE11bHRLBAAAAAltdWx0U3RlcDEJAABrAAAAAwUAAAANbnNidFN1cHBseU1BWAUAAAAETVVMVAkAAGUAAAACBQAAAA1uc2J0U3VwcGx5TUFYBQAAAApuc2J0U3VwcGx5BAAAAAltdWx0U3RlcDIJAABrAAAAAwUAAAAJbXVsdFN0ZXAxBQAAAAltdWx0U3RlcDEFAAAABE1VTFQEAAAAEm11bHROc2J0MnVzZG5QcmljZQkAAGsAAAADBQAAAAVtdWx0SwUAAAAJbXVsdFN0ZXAyBQAAAARNVUxUBAAAAA5uc2J0MnVzZG5QcmljZQkAAGsAAAADBQAAABJtdWx0TnNidDJ1c2RuUHJpY2UFAAAABVBBVUxJBQAAAARNVUxUBAAAAA9uc2J0MndhdmVzUHJpY2UJAABrAAAAAwUAAAAObnNidDJ1c2RuUHJpY2UFAAAABVBBVUxJBQAAAAxjdXJyZW50UHJpY2UJAAUUAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADm5zYnQydXNkblByaWNlBQAAAA5uc2J0MnVzZG5QcmljZQkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAD25zYnQyd2F2ZXNQcmljZQUAAAAPbnNidDJ3YXZlc1ByaWNlAQAAABxwcml2YXRlTmV1dHJpbm9TdGF0ZVJFQURPTkxZAAAAAAkABLkAAAACCQAETAAAAAICAAAAF3Jlc3VsdE5ldXRyaW5vU3RhdGVSRVNUCQAETAAAAAIJAAGkAAAAAQUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAVbmV1dHJpbm9Mb2NrZWRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAASd2F2ZXNMb2NrZWRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAPcmVzZXJ2ZXNJbldhdmVzCQAETAAAAAIJAAGkAAAAAQUAAAAOcmVzZXJ2ZXNJblVzZG4JAARMAAAAAgkAAaQAAAABBQAAAA5uZXV0cmlub1N1cHBseQkABEwAAAACCQABpAAAAAEFAAAAB3N1cnBsdXMJAARMAAAAAgkAAaQAAAABBQAAAA5zdXJwbHVzUGVyY2VudAkABEwAAAACCQABpAAAAAEFAAAAAkJSCQAETAAAAAIJAAGkAAAAAQUAAAAKbnNidFN1cHBseQUAAAADbmlsAgAAAAJfXwAAAAMAAAABaQEAAAARbmV1dHJpbm9TdGF0ZVJFU1QAAAAACQAAAgAAAAEJAQAAABxwcml2YXRlTmV1dHJpbm9TdGF0ZVJFQURPTkxZAAAAAAAAAAFpAQAAABVuZXV0cmlub1N0YXRlUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAkBAAAAHHByaXZhdGVOZXV0cmlub1N0YXRlUkVBRE9OTFkAAAAAAAAAAWkBAAAADW5zYnRQcmljZVJFU1QAAAAABAAAAA5uc2J0UHJpY2VUdXBsZQkBAAAAFHByaXZhdGVOc2J0UHJpY2VSRVNUAAAAAAQAAAAObnNidDJ1c2RuUHJpY2UICAUAAAAObnNidFByaWNlVHVwbGUAAAACXzEAAAAFdmFsdWUEAAAAD25zYnQyd2F2ZXNQcmljZQgIBQAAAA5uc2J0UHJpY2VUdXBsZQAAAAJfMgAAAAV2YWx1ZQQAAAAIcmVzdERhdGEJAAS5AAAAAgkABEwAAAACAgAAABJzdGFydE5zYnRQcmljZVJFU1QJAARMAAAAAgkAAaQAAAABBQAAAA5uc2J0MnVzZG5QcmljZQkABEwAAAACCQABpAAAAAEFAAAAD25zYnQyd2F2ZXNQcmljZQkABEwAAAACAgAAABBlbmROc2J0UHJpY2VSRVNUBQAAAANuaWwCAAAAAl9fCQAAAgAAAAEFAAAACHJlc3REYXRhAAAAAEAI2Ck=", "chainId": 84, "height": 1919149, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GKCEuH6PJmQ5pPg5nPMfzPLaE7chqSnP8GqdCaPfMrE5 Next: Aa5vrUS7PeT22UnfNs7jkUM23C2vz7SuCvdo67S8pTuA Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let neutrinoContract = addressFromStringValue("3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we")
207207 }
208208
209209
210+func privateNeutrinoStateREADONLY () = makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__")
211+
212+
210213 @Callable(i)
211-func neutrinoStateREST () = throw(makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__"))
214+func neutrinoStateREST () = throw(privateNeutrinoStateREADONLY())
215+
216+
217+
218+@Callable(i)
219+func neutrinoStateREADONLY () = $Tuple2(nil, privateNeutrinoStateREADONLY())
212220
213221
214222
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let neutrinoContract = addressFromStringValue("3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we")
55
66 func getNumberByKey (key) = valueOrElse(getInteger(neutrinoContract, key), 0)
77
88
99 func getStringByKey (key) = valueOrElse(getString(neutrinoContract, key), "")
1010
1111
1212 func getBoolByKey (key) = valueOrElse(getBoolean(neutrinoContract, key), false)
1313
1414
1515 func getNumberByAddressAndKey (address,key) = valueOrElse(getInteger(addressFromStringValue(address), key), 0)
1616
1717
1818 func getStringByAddressAndKey (address,key) = valueOrElse(getString(addressFromStringValue(address), key), "")
1919
2020
2121 func getBoolByAddressAndKey (address,key) = valueOrElse(getBoolean(addressFromStringValue(address), key), false)
2222
2323
2424 let SENDTXEXPIRE = 30
2525
2626 let LISTSPLITSYMBOL = "_"
2727
2828 let LISTDATASYMBOL = "+"
2929
3030 let WAVELET = 100000000
3131
3232 let PAULI = 1000000
3333
3434 let PRICELET = 1000000
3535
3636 let MULT = 100000000
3737
3838 let MULTSCALE = 8
3939
4040 let NeutrinoAssetIdKey = "neutrino_asset_id"
4141
4242 let BondAssetIdKey = "bond_asset_id"
4343
4444 let AuctionContractKey = "auction_contract"
4545
4646 let LiquidationContractKey = "liquidation_contract"
4747
4848 let RPDContractKey = "rpd_contract"
4949
5050 let ContolContractKey = "control_contract"
5151
5252 let BalanceWavesLockIntervalKey = "balance_waves_lock_interval"
5353
5454 let BalanceNeutrinoLockIntervalKey = "balance_neutrino_lock_interval"
5555
5656 let MinWavesSwapAmountKey = "min_waves_swap_amount"
5757
5858 let MinNeutrinoSwapAmountKey = "min_neutrino_swap_amount"
5959
6060 let NodeOracleProviderPubKeyKey = "node_oracle_provider"
6161
6262 let RPDBalanceKey = "rpd_balance"
6363
6464 func getRPDContractBalanceKey (assetId) = ((RPDBalanceKey + "_") + toBase58String(assetId))
6565
6666
6767 let PriceKey = "price"
6868
6969 let PriceIndexKey = "price_index"
7070
7171 let IsBlockedKey = "is_blocked"
7272
7373 func getPriceHistoryKey (block) = ((PriceKey + "_") + toString(block))
7474
7575
7676 func getHeightPriceByIndexKey (index) = ((PriceIndexKey + "_") + toString(index))
7777
7878
7979 let BalanceLockedkKey = "balance_lock_"
8080
8181 let WavesLockedBalanceKey = (BalanceLockedkKey + "waves")
8282
8383 let NeutrinoLockedBalanceKey = (BalanceLockedkKey + "neutrino")
8484
8585 func getRPDSnapshotContractBalanceKey (count,assetId) = ((((RPDBalanceKey + "_") + toBase58String(assetId)) + "_") + toString(count))
8686
8787
8888 func getCancelLeaseTxReserveFeeKey (hash) = (("cancel_lease_tx_reserve_fee" + "_") + hash)
8989
9090
9191 func getWavesLockedBalanceKey (owner) = ((WavesLockedBalanceKey + "_") + owner)
9292
9393
9494 func getNeutrinoLockedBalanceKey (owner) = ((NeutrinoLockedBalanceKey + "_") + owner)
9595
9696
9797 func getBalanceUnlockBlockKey (owner) = ("balance_unlock_block_" + owner)
9898
9999
100100 func getRPDProfitKey (count) = (("rpd_profit" + "_") + toString(count))
101101
102102
103103 func convertNeutrinoToWaves (amount,price) = fraction(fraction(amount, PRICELET, price), WAVELET, PAULI)
104104
105105
106106 func convertWavesToNeutrino (amount,price) = fraction(fraction(amount, price, PRICELET), PAULI, WAVELET)
107107
108108
109109 func convertWavesToBond (amount,price) = convertWavesToNeutrino(amount, price)
110110
111111
112112 func convertJsonArrayToList (jsonArray) = split(jsonArray, ",")
113113
114114
115115 let liquidationContract = getStringByKey(LiquidationContractKey)
116116
117117 let neutrinoAssetIdString = getStringByKey(NeutrinoAssetIdKey)
118118
119119 let neutrinoAssetId = fromBase58String(neutrinoAssetIdString)
120120
121121 let auctionContract = getStringByKey(AuctionContractKey)
122122
123123 let rpdContract = getStringByKey(RPDContractKey)
124124
125125 let controlContract = getStringByKey(ContolContractKey)
126126
127127 let priceIndex = getNumberByAddressAndKey(controlContract, PriceIndexKey)
128128
129129 let isBlocked = getBoolByAddressAndKey(controlContract, IsBlockedKey)
130130
131131 let nodeOracleProviderPubKey = fromBase58String(getStringByKey(NodeOracleProviderPubKeyKey))
132132
133133 let balanceWavesLockInterval = getNumberByKey(BalanceWavesLockIntervalKey)
134134
135135 let balanceNeutrinoLockInterval = getNumberByKey(BalanceNeutrinoLockIntervalKey)
136136
137137 let minWavesSwapAmount = getNumberByKey(MinWavesSwapAmountKey)
138138
139139 let minNeutrinoSwapAmount = getNumberByKey(MinNeutrinoSwapAmountKey)
140140
141141 let nsbtAssetIdStr = getStringValue(neutrinoContract, BondAssetIdKey)
142142
143143 let nsbtAssetId = fromBase58String(nsbtAssetIdStr)
144144
145145 let deprecatedBondAssetId = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
146146
147147 let currentPrice = getNumberByAddressAndKey(controlContract, PriceKey)
148148
149149 let neutrinoLockedBalance = getNumberByKey(NeutrinoLockedBalanceKey)
150150
151151 let wavesLockedBalance = getNumberByKey(WavesLockedBalanceKey)
152152
153153 let reservesInWaves = (wavesBalance(neutrinoContract).regular - wavesLockedBalance)
154154
155155 let reservesInUsdn = convertWavesToNeutrino(reservesInWaves, currentPrice)
156156
157157 let neutrinoSupply = (((neutrinoLockedBalance + value(assetInfo(neutrinoAssetId)).quantity) - assetBalance(neutrinoContract, neutrinoAssetId)) - assetBalance(addressFromStringValue(liquidationContract), neutrinoAssetId))
158158
159159 let surplus = (reservesInUsdn - neutrinoSupply)
160160
161161 let surplusPercent = (fraction(surplus, PAULI, neutrinoSupply) * 100)
162162
163163 let BR = fraction(reservesInUsdn, PAULI, neutrinoSupply)
164164
165165 let auctionAddress = addressFromStringValue(auctionContract)
166166
167167 let nsbtSupplyMAX = value(assetInfo(nsbtAssetId)).quantity
168168
169169 let nsbtSupply = (nsbtSupplyMAX - assetBalance(auctionAddress, nsbtAssetId))
170170
171171 let IdxA = 0
172172
173173 let IdxPaulB = 1
174174
175175 let IdxWResAsUsdn = 2
176176
177177 let IdxMultBR = 3
178178
179179 let IdxMultPower = 4
180180
181181 let IdxMultExpInPower = 5
182182
183183 let IdxMultK = 6
184184
185185 func calculateK (wRaw,uRaw,price,mRaw,sRaw) = {
186186 let EXP = 271828100
187187 let a = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
188188 let paulB = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * PAULI) / 10))
189189 let wReservesInUsdn = convertWavesToNeutrino(wRaw, price)
190190 let multBR = fraction(wReservesInUsdn, MULT, uRaw)
191191 let multPower = (a * (multBR - (1 * MULT)))
192192 let multExpInPower = pow(EXP, MULTSCALE, multPower, MULTSCALE, MULTSCALE, DOWN)
193193 let multK = fraction(paulB, multExpInPower, PAULI)
194194 [a, paulB, wReservesInUsdn, multBR, multPower, multExpInPower, multK]
195195 }
196196
197197
198198 func privateNsbtPriceREST () = {
199199 let kCalcArray = calculateK(reservesInWaves, neutrinoSupply, currentPrice, nsbtSupplyMAX, nsbtSupply)
200200 let multK = kCalcArray[IdxMultK]
201201 let multStep1 = fraction(nsbtSupplyMAX, MULT, (nsbtSupplyMAX - nsbtSupply))
202202 let multStep2 = fraction(multStep1, multStep1, MULT)
203203 let multNsbt2usdnPrice = fraction(multK, multStep2, MULT)
204204 let nsbt2usdnPrice = fraction(multNsbt2usdnPrice, PAULI, MULT)
205205 let nsbt2wavesPrice = fraction(nsbt2usdnPrice, PAULI, currentPrice)
206206 $Tuple2(IntegerEntry("nsbt2usdnPrice", nsbt2usdnPrice), IntegerEntry("nsbt2wavesPrice", nsbt2wavesPrice))
207207 }
208208
209209
210+func privateNeutrinoStateREADONLY () = makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__")
211+
212+
210213 @Callable(i)
211-func neutrinoStateREST () = throw(makeString(["resultNeutrinoStateREST", toString(currentPrice), toString(neutrinoLockedBalance), toString(wavesLockedBalance), toString(reservesInWaves), toString(reservesInUsdn), toString(neutrinoSupply), toString(surplus), toString(surplusPercent), toString(BR), toString(nsbtSupply)], "__"))
214+func neutrinoStateREST () = throw(privateNeutrinoStateREADONLY())
215+
216+
217+
218+@Callable(i)
219+func neutrinoStateREADONLY () = $Tuple2(nil, privateNeutrinoStateREADONLY())
212220
213221
214222
215223 @Callable(i)
216224 func nsbtPriceREST () = {
217225 let nsbtPriceTuple = privateNsbtPriceREST()
218226 let nsbt2usdnPrice = nsbtPriceTuple._1.value
219227 let nsbt2wavesPrice = nsbtPriceTuple._2.value
220228 let restData = makeString(["startNsbtPriceREST", toString(nsbt2usdnPrice), toString(nsbt2wavesPrice), "endNsbtPriceREST"], "__")
221229 throw(restData)
222230 }
223231
224232

github/deemru/w8io/026f985 
30.19 ms