tx · 7VYauowJCP5uTGaiELVpCQzaEv9d9opqR1dx4rhENsfB 3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N: -0.02000000 Waves 2020.07.14 17:16 [1087110] smart account 3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N > SELF 0.00000000 Waves
{ "type": 13, "id": "7VYauowJCP5uTGaiELVpCQzaEv9d9opqR1dx4rhENsfB", "fee": 2000000, "feeAssetId": null, "timestamp": 1594736219012, "version": 1, "sender": "3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N", "senderPublicKey": "4bj7YXaphTC4Ldx7DqqMmrTjNshRtw1yNsej2XXZcAzS", "proofs": [ "3BQoDmS85UB9tVPVsssvPCtzcBiQWN39RZtiDALrHPzbGfaJrDcPRarR46zMuzF7AJcLG66oTh3tP7Gd2YF7egs9", "2ZgTkeaDn1aR9hxXoas9f58VbzbpE12SaqV97S2dasLRdh8JhMrk4ZcAe3QP9Qf9ZjWF2VFZSsK2RPPceMJcDVNf", "BhJU5Gu8VVdbxuF26JkGoVSPDwXEbmeRLPH3XsKgyFeMNJPCCrcXLEZzrqiMopt86C72vTdmcVgt2RbcAXWi56Q" ], "script": "base64:AAIDAAAAAAAAABYIARIDCgEBEgQKAgEIEgMKAQgSABIAAAAANwEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEHAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAAAAAAB1dBVkVMRVQAAAAAAAX14QAAAAAABVBBVUxJAAAAAAAAD0JAAAAAAAhQUklDRUxFVAAAAAAAAA9CQAAAAAANTUlOT1JERVJUT1RBTAkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUAAAAAAZNQVhST0kAAAAAAAAAAF8AAAAACENBTkNFTEVEAgAAAAhjYW5jZWxlZAAAAAADTkVXAgAAAANuZXcAAAAABkZJTExFRAIAAAAGZmlsbGVkAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQUAAAAHV0FWRUxFVAUAAAAFUEFVTEkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAFcHJpY2UFAAAACFBSSUNFTEVUBQAAAAVQQVVMSQUAAAAHV0FWRUxFVAEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVHU7b6OlcTCIdohGSL8/NKL5nwWXL+YZyQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUno2OAJeUn0PSjRqULfZsUfTQiLeRVcFDAAAAABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUrh+60NLfu2FBMSeZ0mudJuV2fLRxw6pzAAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAtib25kQXNzZXRJZAEAAAAgmJo/x0eBXqqYBUsDVec3bkdYTgn3lisjb3dBcLTJiUgAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAGE5ldXRyaW5vTG9ja2VkQmFsYW5jZUtleQAAAAAHcmVzZXJ2ZQkAAGUAAAACCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAFVdhdmVzTG9ja2VkQmFsYW5jZUtleQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAdleHRyYWN0AAAAAQkAA+wAAAABBQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAIcXVhbnRpdHkJAAPrAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAPbmV1dHJpbm9Bc3NldElkCQAD6wAAAAIFAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAAAAAAHZGVmaWNpdAkAAGUAAAACBQAAAA5uZXV0cmlub1N1cHBseQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAdyZXNlcnZlBQAAAAxjdXJyZW50UHJpY2UAAAAACmZpcnN0T3JkZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAADUZpcnN0T3JkZXJLZXkBAAAADWdldE9yZGVyUHJpY2UAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJQcmljZUtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlclRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJPd25lcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQUAAAACaWQBAAAADmdldE9yZGVyU3RhdHVzAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAACaWQBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEFAAAAAmlkAQAAAAxnZXRQcmV2T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAACaWQBAAAADGdldE5leHRPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAJb3JkZXJEYXRhAAAABgAAAAdvcmRlcklkAAAADXRvdGFsV2F2ZWxldHMAAAAFb3duZXIAAAAGc3RhdHVzAAAAA3JvaQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAdvcmRlcklkBQAAAA10b3RhbFdhdmVsZXRzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAB29yZGVySWQFAAAABW93bmVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAARZ2V0T3JkZXJIZWlnaHRLZXkAAAABBQAAAAdvcmRlcklkBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAB29yZGVySWQFAAAABnN0YXR1cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABlkZWJ1Z19vcmRlcl9jdXJyZW50UHJpY2VfBQAAAAdvcmRlcklkBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAdvcmRlcklkBQAAAANyb2kFAAAAA25pbAEAAAAQaW50ZXJuYWxTZWxsQm9uZAAAAAkAAAANY3VycmVudE1heFJvaQAAAAtwRmlyc3RPcmRlcgAAAApwTmV4dE9yZGVyAAAADHBGaWxsZWRUb3RhbAAAAARwUm9pAAAABnBQcmljZQAAABBwUGF5bWVudFdhdmVsZXRzAAAAEW9yZGVyT3duZXJBZGRyZXNzAAAADGluc3RhbnRPcmRlcgQAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzCQAAawAAAAMJAABkAAAAAgAAAAAAAAAAZAUAAAAEcFJvaQUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkBAAAAA1yZW1haW5lZFRvdGFsCQAAZQAAAAIFAAAAEHBQYXltZW50V2F2ZWxldHMFAAAADHBGaWxsZWRUb3RhbAQAAAATZmlsbGFibGVPcmRlckFtb3VudAkBAAAAEmNvbnZlcnRXYXZlc1RvQm9uZAAAAAIFAAAADXJlbWFpbmVkVG90YWwFAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwQAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkCQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgUAAAATZmlsbGFibGVPcmRlckFtb3VudAUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBAAAABVuYlRva2Vuc1NlbGxDb25kaXRpb24JAABnAAAAAgUAAAANY3VycmVudE1heFJvaQUAAAAEcFJvaQMJAQAAAAEhAAAAAQUAAAAVbmJUb2tlbnNTZWxsQ29uZGl0aW9uCQAAAgAAAAEJAAEsAAAAAgIAAAATaW5uYXByb3ByaWF0ZSByb2k6IAkAAaQAAAABBQAAAARwUm9pAwkAAAAAAAACBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQAAAAAAAAAAAAJAAACAAAAAQIAAAAfY2Fubm90IGZpbGwgb3JkZXIgYXQgdGhlIG1vbWVudAQAAAAOY2hhbmdlV2F2ZWxldHMJAABlAAAAAgUAAAANcmVtYWluZWRUb3RhbAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkBAAAAAx3cml0ZVNldERhdGEDBQAAAAxpbnN0YW50T3JkZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABnBQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgUAAAAQcFBheW1lbnRXYXZlbGV0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgkAAlgAAAABCAUAAAARb3JkZXJPd25lckFkZHJlc3MAAAAFYnl0ZXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEFAAAAC3BGaXJzdE9yZGVyBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAC3BGaXJzdE9yZGVyBQAAAAZGSUxMRUQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAZZGVidWdfb3JkZXJfY3VycmVudFByaWNlXwUAAAALcEZpcnN0T3JkZXIFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEFAAAAC3BGaXJzdE9yZGVyBQAAAARwUm9pBQAAAANuaWwJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAC3BGaXJzdE9yZGVyBQAAAAZGSUxMRUQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAAEHBQYXltZW50V2F2ZWxldHMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAApwTmV4dE9yZGVyAgAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkFAAAACnBOZXh0T3JkZXIFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEFAAAADHdyaXRlU2V0RGF0YQkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFvcmRlck93bmVyQWRkcmVzcwUAAAATZmlsbGFibGVPcmRlckFtb3VudAUAAAALYm9uZEFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkBQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBQAAAA5jaGFuZ2VXYXZlbGV0cwUAAAAEdW5pdAUAAAADbmlsAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAYAAAANY3VycmVudE1heFJvaQAAAANyb2kAAAAFcHJpY2UAAAAJcHJldk9yZGVyAAAAA2ludgAAAAxpbnN0YW50T3JkZXIEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAADaW52AAAAB3BheW1lbnQEAAAACm5ld09yZGVySWQJAAJYAAAAAQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkAAGYAAAACBQAAAA1NSU5PUkRFUlRPVEFMCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAF21pbiBvcmRlciB0b3RhbCBlcXVhbHMgCQABpAAAAAEFAAAADU1JTk9SREVSVE9UQUwDCQAAZgAAAAIFAAAAA3JvaQUAAAAGTUFYUk9JCQAAAgAAAAECAAAAF21heCBzZXRPcmRlciBST0kgaXMgOTUlAwMJAABmAAAAAgUAAAAHZGVmaWNpdAAAAAAAAAAAAAkAAGYAAAACAAAAAAAAAAAABQAAAANyb2kHCQAAAgAAAAECAAAAMmNhbid0IHBsYWNlIG9yZGVyIHdpdGggbmVnYXRpdmUgcm9pIGR1cmluZyBkZWZpY2l0AwkAAGYAAAACCQEAAAABLQAAAAEFAAAABk1BWFJPSQUAAAADcm9pCQAAAgAAAAECAAAAGG1pbiBzZXRPcmRlciBST0kgaXMgLTk1JQMJAAAAAAAAAgUAAAADcm9pAAAAAAAAAAAACQAAAgAAAAECAAAAHHJvaSBzaG91bGQgbm90IGJlIGVxdWFsIHRvIDADCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAQAAAAIhPQAAAAIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAKbmV3T3JkZXJJZAIAAAAACQAAAgAAAAECAAAADG9yZGVyIGV4aXN0cwMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkBAAAAAiE9AAAAAgkBAAAADmdldE9yZGVyU3RhdHVzAAAAAQUAAAAJcHJldk9yZGVyBQAAAANORVcHCQAAAgAAAAECAAAAHHByZXYgb3JkZXIgc3RhdHVzIGlzIG5vdCBuZXcEAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24JAAAAAAAAAgUAAAAJcHJldk9yZGVyAgAAAAAEAAAABW93bmVyCQAEJQAAAAEIBQAAAANpbnYAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uBQAAAApmaXJzdE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAJcHJldk9yZGVyBAAAAAxuZXh0T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAluZXh0T3JkZXIEAAAAEGlzTmV4dE9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJbmV4dE9yZGVyAgAAAAAJAABnAAAAAgUAAAADcm9pBQAAAAxuZXh0T3JkZXJSb2kHBgcEAAAADHByZXZPcmRlclJvaQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEFAAAACXByZXZPcmRlcgQAAAAQaXNQcmV2T3JkZXJFcnJvcgMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkAAGYAAAACBQAAAAxwcmV2T3JkZXJSb2kFAAAAA3JvaQcGBwMDBQAAABBpc05leHRPcmRlckVycm9yBgUAAAAQaXNQcmV2T3JkZXJFcnJvcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9pbnZhbGlkIG9yZGVyIGlzUHJldk9yZGVyRXJyb3I6CQABpQAAAAEFAAAAEGlzUHJldk9yZGVyRXJyb3ICAAAAEiBpc05leHRPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc05leHRPcmRlckVycm9yAwMFAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24JAABnAAAAAgUAAAANY3VycmVudE1heFJvaQUAAAADcm9pBwkBAAAAEGludGVybmFsU2VsbEJvbmQAAAAJBQAAAA1jdXJyZW50TWF4Um9pBQAAAApuZXdPcmRlcklkBQAAAAluZXh0T3JkZXIAAAAAAAAAAAAFAAAAA3JvaQUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CAUAAAADaW52AAAABmNhbGxlcgYDBQAAAAxpbnN0YW50T3JkZXIJAAACAAAAAQIAAAAySW5zdGFudCBvcmRlciBjb3VsZG4ndCBiZSBhZGRlZCBpbnRvIHdhaXRpbmcgcXVldWUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAApuZXdPcmRlcklkBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAApuZXdPcmRlcklkBQAAAAluZXh0T3JkZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIDCQAAAAAAAAIFAAAACXByZXZPcmRlcgIAAAAAAgAAAAAFAAAACm5ld09yZGVySWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAluZXh0T3JkZXIDCQAAAAAAAAIFAAAACW5leHRPcmRlcgIAAAAAAgAAAAAFAAAACm5ld09yZGVySWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkDAwkAAAAAAAACBQAAAApmaXJzdE9yZGVyAgAAAAAGCQAAAAAAAAIFAAAACmZpcnN0T3JkZXIFAAAACW5leHRPcmRlcgUAAAAKbmV3T3JkZXJJZAUAAAAKZmlyc3RPcmRlcgkBAAAACW9yZGVyRGF0YQAAAAYFAAAACm5ld09yZGVySWQIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVvd25lcgUAAAADTkVXBQAAAANyb2kFAAAABXByaWNlAAAABQAAAAFpAQAAABRpbnN0YW50QnV5TnNidE9yRmFpbAAAAAEAAAANbm9MZXNzVGhlblJvaQQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAADWN1cnJlbnRNYXhSb2kJAABrAAAAAwUAAAAHZGVmaWNpdAAAAAAAAAAAZAUAAAAObmV1dHJpbm9TdXBwbHkDCQAAZgAAAAIFAAAADW5vTGVzc1RoZW5Sb2kFAAAADWN1cnJlbnRNYXhSb2kJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ3VycmVudCBtYXhSb2k9CQABpAAAAAEFAAAADWN1cnJlbnRNYXhSb2kCAAAALSBpcyBsZXNzIHRoZW4gcGFzc2VkIHBhcmFtZXRlciBub0xlc3NUaGVuUm9pPQkAAaQAAAABBQAAAA1ub0xlc3NUaGVuUm9pBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAABrAAAAAwkAAGQAAAACAAAAAAAAAABkBQAAAA1jdXJyZW50TWF4Um9pBQAAAAxjdXJyZW50UHJpY2UAAAAAAAAAAGQJAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAYFAAAADWN1cnJlbnRNYXhSb2kFAAAADWN1cnJlbnRNYXhSb2kJAABpAAAAAgkAAGgAAAACBQAAAAhQUklDRUxFVAUAAAAIUFJJQ0VMRVQFAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwIAAAAABQAAAAFpBgAAAAFpAQAAAA9hZGRCdXlCb25kT3JkZXIAAAACAAAABXByaWNlAAAACXByZXZPcmRlcgQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwkAAGsAAAADBQAAAAhQUklDRUxFVAUAAAAIUFJJQ0VMRVQFAAAABXByaWNlAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAA9wcmljZSBsZXNzIHplcm8JAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAYJAABrAAAAAwUAAAAHZGVmaWNpdAAAAAAAAAAAZAUAAAAObmV1dHJpbm9TdXBwbHkJAABrAAAAAwkAAGUAAAACBQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMFAAAADGN1cnJlbnRQcmljZQAAAAAAAAAAZAUAAAAMY3VycmVudFByaWNlBQAAAAVwcmljZQUAAAAJcHJldk9yZGVyBQAAAAFpBwAAAAFpAQAAAAtjYW5jZWxPcmRlcgAAAAEAAAAHb3JkZXJJZAQAAAAFb3duZXIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAHb3JkZXJJZAQAAAAGYW1vdW50CQAAZQAAAAIJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAHb3JkZXJJZAkBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABBQAAAAdvcmRlcklkBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIJAQAAAAxnZXROZXh0T3JkZXIAAAABBQAAAAdvcmRlcklkBAAAAAlwcmV2T3JkZXIJAQAAAAxnZXRQcmV2T3JkZXIAAAABBQAAAAdvcmRlcklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkBAAAAAiE9AAAAAgUAAAAFb3duZXIFAAAABmNhbGxlcgkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAMJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAAB29yZGVySWQFAAAAA05FVwkAAAIAAAABAgAAABRpbnZhbGlkIG9yZGVyIHN0YXR1cwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkDCQAAAAAAAAIFAAAACmZpcnN0T3JkZXIFAAAAB29yZGVySWQFAAAACW5leHRPcmRlcgUAAAAKZmlyc3RPcmRlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAACXByZXZPcmRlcgUAAAAJbmV4dE9yZGVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAB29yZGVySWQFAAAACENBTkNFTEVEBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhzZWxsQm9uZAAAAAADBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQAAAAAAAAIFAAAACmZpcnN0T3JkZXICAAAAAAkAAAIAAAABAgAAAA9lbXB0eSBvcmRlcmJvb2sEAAAACW5leHRPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACmZpcnN0T3JkZXIEAAAAC2ZpbGxlZFRvdGFsCQEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAACm9yZGVyUHJpY2UJAQAAAA1nZXRPcmRlclByaWNlAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAADcm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAPcGF5bWVudFdhdmVsZXRzCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAAEW9yZGVyT3duZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADWdldE9yZGVyT3duZXIAAAABBQAAAApmaXJzdE9yZGVyCQEAAAAQaW50ZXJuYWxTZWxsQm9uZAAAAAkJAABrAAAAAwUAAAAHZGVmaWNpdAAAAAAAAAAAZAUAAAAObmV1dHJpbm9TdXBwbHkFAAAACmZpcnN0T3JkZXIFAAAACW5leHRPcmRlcgUAAAALZmlsbGVkVG90YWwFAAAAA3JvaQUAAAAKb3JkZXJQcmljZQUAAAAPcGF5bWVudFdhdmVsZXRzBQAAABFvcmRlck93bmVyQWRkcmVzcwcAAAABaQEAAAAfdXBkYXRlUmVzZXJ2ZXNBbmROZXV0cmlub1N1cHBseQAAAAAKAQAAABZnZXROdW1iZXJCeUtleUludGVybmFsAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAA2lkeAkBAAAAFmdldE51bWJlckJ5S2V5SW50ZXJuYWwAAAABAgAAACJ1cGRhdGVSZXNlcnZlc0FuZE5ldXRyaW5vU3VwcGx5SWR4BAAAAAZuZXdJZHgJAABkAAAAAgUAAAADaWR4AAAAAAAAAAABCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAACJ1cGRhdGVSZXNlcnZlc0FuZE5ldXRyaW5vU3VwcGx5SWR4BQAAAAZuZXdJZHgJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAB3Jlc2VydmUFAAAAB3Jlc2VydmUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADm5ldXRyaW5vU3VwcGx5BQAAAA5uZXV0cmlub1N1cHBseQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAHZGVmaWNpdAUAAAAHZGVmaWNpdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAQcHViS2V5QWRtaW5zTGlzdAkABEwAAAACAgAAACxHWHhtWmFDaWdQZ0pzVDZkMWNMcjhuVVhBNjVuR1g4VjdGdUF6enJZOHdRRQkABEwAAAACAgAAACwzeHVteDRoclBwZWVvbzc5SExHYlpDZ2Z6OTVMMzlaRmR4eHdXZVNVQzJQdQkABEwAAAACAgAAACxENENxdEs1ZkJzbnpSbzMzWk1ock03bmlMc2VESDJ1Um9LNndlQnEySlEzQQkABEwAAAACAgAAACw1V1JYRlNqd2NUYk5mS2NKczhacVhtU1NXWXNTVkpVdE12TXFaajVoSDROYwUAAAADbmlsBAAAAAVjb3VudAkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAgAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAADCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAwAAAAAAAAAAAgAAAAAAAAAAAAkAAGcAAAACBQAAAAVjb3VudAAAAAAAAAAAAzy1G4M=", "chainId": 84, "height": 1087110, "spentComplexity": 0 } View: original | compacted Prev: D6qSxj3CgoU1Zku54HMLTSRf82vQBNNEepWC8QUBFZ3D Next: 3dg2e9q1kfuTtvoZxLHncXAahiwd2MtFK1o1X8eTCAwv Diff:
Old | New | Differences | |
---|---|---|---|
60 | 60 | ||
61 | 61 | let k = 1000000 | |
62 | 62 | ||
63 | - | let l = | |
63 | + | let l = 1000000 | |
64 | 64 | ||
65 | - | let m = | |
65 | + | let m = (10 * j) | |
66 | 66 | ||
67 | - | let n = | |
67 | + | let n = 95 | |
68 | 68 | ||
69 | - | let o = " | |
69 | + | let o = "canceled" | |
70 | 70 | ||
71 | - | let p = " | |
71 | + | let p = "new" | |
72 | 72 | ||
73 | - | let q = " | |
73 | + | let q = "filled" | |
74 | 74 | ||
75 | 75 | let r = "price" | |
76 | 76 | ||
78 | 78 | ||
79 | 79 | let t = "neutrino_asset_id" | |
80 | 80 | ||
81 | - | let u = " | |
81 | + | let u = "balance_lock_" | |
82 | 82 | ||
83 | - | let v = " | |
83 | + | let v = (u + "waves") | |
84 | 84 | ||
85 | - | let w = ( | |
85 | + | let w = (u + "neutrino") | |
86 | 86 | ||
87 | - | let x = | |
87 | + | let x = "order_first" | |
88 | 88 | ||
89 | - | let y = "liquidation_contract" | |
90 | - | ||
91 | - | let z = "order_first" | |
92 | - | ||
93 | - | func A (B) = ("debug_order_roi_" + B) | |
89 | + | func y (z) = ("debug_order_roi_" + z) | |
94 | 90 | ||
95 | 91 | ||
96 | - | func | |
92 | + | func A (z) = ("order_price_" + z) | |
97 | 93 | ||
98 | 94 | ||
99 | - | func | |
95 | + | func B (z) = ("order_total_" + z) | |
100 | 96 | ||
101 | 97 | ||
102 | - | func | |
98 | + | func C (z) = ("order_owner_" + z) | |
103 | 99 | ||
104 | 100 | ||
105 | - | func | |
101 | + | func D (z) = ("order_height_" + z) | |
106 | 102 | ||
107 | 103 | ||
108 | - | func | |
104 | + | func E (z) = ("order_status_" + z) | |
109 | 105 | ||
110 | 106 | ||
111 | - | func | |
107 | + | func F (z) = ("order_filled_total_" + z) | |
112 | 108 | ||
113 | 109 | ||
114 | - | func | |
110 | + | func G (z) = ("order_prev_" + z) | |
115 | 111 | ||
116 | 112 | ||
117 | - | func | |
113 | + | func H (z) = ("order_next_" + z) | |
118 | 114 | ||
119 | 115 | ||
120 | - | func | |
116 | + | func I (J,K) = fraction(fraction(J, l, K), j, k) | |
121 | 117 | ||
122 | 118 | ||
123 | - | func L ( | |
119 | + | func L (J,K) = fraction(fraction(J, K, l), k, j) | |
124 | 120 | ||
125 | 121 | ||
126 | - | func | |
122 | + | func M (J,K) = L(J, K) | |
127 | 123 | ||
128 | 124 | ||
129 | - | func | |
125 | + | func N (J,K) = I(J, K) | |
130 | 126 | ||
131 | 127 | ||
132 | - | func Q (M,N) = L(M, N) | |
128 | + | let O = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we') | |
129 | + | ||
130 | + | let P = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx') | |
131 | + | ||
132 | + | let Q = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62') | |
133 | + | ||
134 | + | let R = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
135 | + | ||
136 | + | let S = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH' | |
137 | + | ||
138 | + | let T = f(P, "is_blocked") | |
139 | + | ||
140 | + | let U = i(P, r) | |
141 | + | ||
142 | + | let V = i(O, w) | |
143 | + | ||
144 | + | let W = (wavesBalance(O) - i(O, v)) | |
145 | + | ||
146 | + | let X = (((V + extract(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R)) | |
147 | + | ||
148 | + | let Y = (X - L(W, U)) | |
149 | + | ||
150 | + | let Z = e(x) | |
151 | + | ||
152 | + | func aa (ab) = a(A(ab)) | |
133 | 153 | ||
134 | 154 | ||
135 | - | let R = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we') | |
136 | - | ||
137 | - | let S = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx') | |
138 | - | ||
139 | - | let T = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62') | |
140 | - | ||
141 | - | let U = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
142 | - | ||
143 | - | let V = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH' | |
144 | - | ||
145 | - | let W = f(S, "is_blocked") | |
146 | - | ||
147 | - | let X = i(S, r) | |
148 | - | ||
149 | - | let Y = i(R, x) | |
150 | - | ||
151 | - | let Z = (wavesBalance(R) - i(R, w)) | |
152 | - | ||
153 | - | let aa = (((Y + extract(assetInfo(U)).quantity) - assetBalance(R, U)) - assetBalance(T, U)) | |
154 | - | ||
155 | - | let ab = (aa - O(Z, X)) | |
156 | - | ||
157 | - | let ac = e(z) | |
158 | - | ||
159 | - | func ad (ae) = a(C(ae)) | |
155 | + | func ac (ab) = a(B(ab)) | |
160 | 156 | ||
161 | 157 | ||
162 | - | func | |
158 | + | func ad (ab) = e(C(ab)) | |
163 | 159 | ||
164 | 160 | ||
165 | - | func | |
161 | + | func ae (ab) = e(E(ab)) | |
166 | 162 | ||
167 | 163 | ||
168 | - | func | |
164 | + | func af (ab) = a(F(ab)) | |
169 | 165 | ||
170 | 166 | ||
171 | - | func | |
167 | + | func ag (ab) = e(G(ab)) | |
172 | 168 | ||
173 | 169 | ||
174 | - | func | |
170 | + | func ah (ab) = e(H(ab)) | |
175 | 171 | ||
176 | 172 | ||
177 | - | func | |
173 | + | func ai (z,aj,ak,al,am,K) = [DataEntry(A(z), K), DataEntry(B(z), aj), DataEntry(C(z), ak), DataEntry(D(z), height), DataEntry(E(z), al), DataEntry(("debug_order_currentPrice_" + z), U), DataEntry(y(z), am)] | |
178 | 174 | ||
179 | 175 | ||
180 | - | func al (ae) = e(K(ae)) | |
181 | - | ||
182 | - | ||
183 | - | @Callable(am) | |
184 | - | func migrateOrderPrice () = { | |
185 | - | let an = "migration_6decimals_lastMigratedOrderId" | |
186 | - | let ao = "migrated_to_6decimals" | |
187 | - | let ap = e(an) | |
188 | - | let aq = if ((ap == "")) | |
189 | - | then ac | |
190 | - | else al(ap) | |
191 | - | let ar = ("migration_6decimals_status" + aq) | |
192 | - | let as = e(ar) | |
193 | - | if ((as == ao)) | |
194 | - | then throw("error: order has been already migrated") | |
195 | - | else if ((aq == "")) | |
196 | - | then throw("status ok: all orders have been already migrated or nothing to migrate") | |
197 | - | else WriteSet([DataEntry(ar, ao), DataEntry(an, aq), DataEntry(C(aq), (ad(aq) * 10000)), DataEntry(D(aq), (af(aq) * 10000))]) | |
176 | + | func an (ao,ap,aq,ar,as,at,au,av,aw) = { | |
177 | + | let ax = fraction((100 + as), U, 100) | |
178 | + | let ay = (au - ar) | |
179 | + | let az = M(ay, ax) | |
180 | + | let aA = N(az, ax) | |
181 | + | let aB = (ao >= as) | |
182 | + | if (!(aB)) | |
183 | + | then throw(("innapropriate roi: " + toString(as))) | |
184 | + | else if ((aA == 0)) | |
185 | + | then throw("cannot fill order at the moment") | |
186 | + | else { | |
187 | + | let aC = (ay - aA) | |
188 | + | let aD = if (aw) | |
189 | + | then [DataEntry(A(ap), at), DataEntry(B(ap), au), DataEntry(C(ap), toBase58String(av.bytes)), DataEntry(D(ap), height), DataEntry(F(ap), (ar + aA)), DataEntry(E(ap), q), DataEntry(("debug_order_currentPrice_" + ap), U), DataEntry(y(ap), as)] | |
190 | + | else [DataEntry(F(ap), (ar + aA)), DataEntry(E(ap), q), DataEntry(B(ap), au), DataEntry(G(aq), ""), DataEntry(x, aq)] | |
191 | + | ScriptResult(WriteSet(aD), TransferSet([ScriptTransfer(av, az, S), ScriptTransfer(O, aA, unit), ScriptTransfer(av, aC, unit)])) | |
192 | + | } | |
198 | 193 | } | |
199 | 194 | ||
200 | 195 | ||
201 | - | @Verifier(at) | |
202 | - | func au () = { | |
203 | - | let av = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
204 | - | let aw = ((((if (sigVerify(at.bodyBytes, at.proofs[0], fromBase58String(av[0]))) | |
196 | + | func aE (ao,am,K,aF,aG,aw) = { | |
197 | + | let aH = extract(aG.payment) | |
198 | + | let aI = toBase58String(aG.transactionId) | |
199 | + | if (T) | |
200 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
201 | + | else if ((m > aH.amount)) | |
202 | + | then throw(("min order total equals " + toString(m))) | |
203 | + | else if ((am > n)) | |
204 | + | then throw("max setOrder ROI is 95%") | |
205 | + | else if (if ((Y > 0)) | |
206 | + | then (0 > am) | |
207 | + | else false) | |
208 | + | then throw("can't place order with negative roi during deficit") | |
209 | + | else if ((-(n) > am)) | |
210 | + | then throw("min setOrder ROI is -95%") | |
211 | + | else if ((am == 0)) | |
212 | + | then throw("roi should not be equal to 0") | |
213 | + | else if (isDefined(aH.assetId)) | |
214 | + | then throw("can use waves only") | |
215 | + | else if ((ad(aI) != "")) | |
216 | + | then throw("order exists") | |
217 | + | else if (if ((aF != "")) | |
218 | + | then (ae(aF) != p) | |
219 | + | else false) | |
220 | + | then throw("prev order status is not new") | |
221 | + | else { | |
222 | + | let aJ = (aF == "") | |
223 | + | let ak = toString(aG.caller) | |
224 | + | let aK = if (aJ) | |
225 | + | then Z | |
226 | + | else ah(aF) | |
227 | + | let aL = a(y(aK)) | |
228 | + | let aM = if (if ((aK != "")) | |
229 | + | then (am >= aL) | |
230 | + | else false) | |
231 | + | then true | |
232 | + | else false | |
233 | + | let aN = a(y(aF)) | |
234 | + | let aO = if (if ((aF != "")) | |
235 | + | then (aN > am) | |
236 | + | else false) | |
237 | + | then true | |
238 | + | else false | |
239 | + | if (if (aM) | |
240 | + | then true | |
241 | + | else aO) | |
242 | + | then throw(((("invalid order isPrevOrderError:" + toString(aO)) + " isNextOrderError:") + toString(aM))) | |
243 | + | else if (if (aJ) | |
244 | + | then (ao >= am) | |
245 | + | else false) | |
246 | + | then an(ao, aI, aK, 0, am, K, aH.amount, aG.caller, true) | |
247 | + | else if (aw) | |
248 | + | then throw("Instant order couldn't be added into waiting queue") | |
249 | + | else WriteSet([DataEntry(G(aI), aF), DataEntry(H(aI), aK), DataEntry(H(aF), if ((aF == "")) | |
250 | + | then "" | |
251 | + | else aI), DataEntry(G(aK), if ((aK == "")) | |
252 | + | then "" | |
253 | + | else aI), DataEntry(x, if (if ((Z == "")) | |
254 | + | then true | |
255 | + | else (Z == aK)) | |
256 | + | then aI | |
257 | + | else Z), ai(aI, aH.amount, ak, p, am, K)]) | |
258 | + | } | |
259 | + | } | |
260 | + | ||
261 | + | ||
262 | + | @Callable(aP) | |
263 | + | func instantBuyNsbtOrFail (aQ) = { | |
264 | + | let aH = extract(aP.payment) | |
265 | + | let ao = fraction(Y, 100, X) | |
266 | + | if ((aQ > ao)) | |
267 | + | then throw(((("Current maxRoi=" + toString(ao)) + " is less then passed parameter noLessThenRoi=") + toString(aQ))) | |
268 | + | else { | |
269 | + | let ax = fraction((100 + ao), U, 100) | |
270 | + | aE(ao, ao, ((l * l) / ax), "", aP, true) | |
271 | + | } | |
272 | + | } | |
273 | + | ||
274 | + | ||
275 | + | ||
276 | + | @Callable(aP) | |
277 | + | func addBuyBondOrder (K,aF) = { | |
278 | + | let aH = extract(aP.payment) | |
279 | + | let ax = fraction(l, l, K) | |
280 | + | if ((0 >= K)) | |
281 | + | then throw("price less zero") | |
282 | + | else aE(fraction(Y, 100, X), fraction((ax - U), 100, U), K, aF, aP, false) | |
283 | + | } | |
284 | + | ||
285 | + | ||
286 | + | ||
287 | + | @Callable(aP) | |
288 | + | func cancelOrder (z) = { | |
289 | + | let ak = ad(z) | |
290 | + | let J = (ac(z) - af(z)) | |
291 | + | let aR = toString(aP.caller) | |
292 | + | let aK = ah(z) | |
293 | + | let aF = ag(z) | |
294 | + | if (T) | |
295 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
296 | + | else if ((ak != aR)) | |
297 | + | then throw("permission denied") | |
298 | + | else if ((ae(z) != p)) | |
299 | + | then throw("invalid order status") | |
300 | + | else ScriptResult(WriteSet([DataEntry(x, if ((Z == z)) | |
301 | + | then aK | |
302 | + | else Z), DataEntry(H(aF), aK), DataEntry(G(aK), aF), DataEntry(E(z), o)]), TransferSet([ScriptTransfer(aP.caller, J, unit)])) | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(aP) | |
308 | + | func sellBond () = if (T) | |
309 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
310 | + | else if ((Z == "")) | |
311 | + | then throw("empty orderbook") | |
312 | + | else { | |
313 | + | let aK = ah(Z) | |
314 | + | let aS = af(Z) | |
315 | + | let aT = aa(Z) | |
316 | + | let am = a(y(Z)) | |
317 | + | let aU = ac(Z) | |
318 | + | let av = Address(fromBase58String(ad(Z))) | |
319 | + | an(fraction(Y, 100, X), Z, aK, aS, am, aT, aU, av, false) | |
320 | + | } | |
321 | + | ||
322 | + | ||
323 | + | ||
324 | + | @Callable(aP) | |
325 | + | func updateReservesAndNeutrinoSupply () = { | |
326 | + | func aV (b) = { | |
327 | + | let c = getInteger(this, b) | |
328 | + | if ($isInstanceOf(c, "Int")) | |
329 | + | then { | |
330 | + | let d = c | |
331 | + | d | |
332 | + | } | |
333 | + | else 0 | |
334 | + | } | |
335 | + | ||
336 | + | let aW = aV("updateReservesAndNeutrinoSupplyIdx") | |
337 | + | let aX = (aW + 1) | |
338 | + | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aX), DataEntry("reserve", W), DataEntry("neutrinoSupply", X), DataEntry("deficit", Y)]) | |
339 | + | } | |
340 | + | ||
341 | + | ||
342 | + | @Verifier(aY) | |
343 | + | func aZ () = { | |
344 | + | let ba = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
345 | + | let bb = ((((if (sigVerify(aY.bodyBytes, aY.proofs[0], fromBase58String(ba[0]))) | |
205 | 346 | then 1 | |
206 | - | else 0) + (if (sigVerify( | |
347 | + | else 0) + (if (sigVerify(aY.bodyBytes, aY.proofs[1], fromBase58String(ba[1]))) | |
207 | 348 | then 1 | |
208 | - | else 0)) + (if (sigVerify( | |
349 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[2], fromBase58String(ba[2]))) | |
209 | 350 | then 1 | |
210 | - | else 0)) + (if (sigVerify( | |
351 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[3], fromBase58String(ba[3]))) | |
211 | 352 | then 2 | |
212 | 353 | else 0)) | |
213 | - | ( | |
354 | + | (bb >= 3) | |
214 | 355 | } | |
215 | 356 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getInteger(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Int")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else 0 | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func e (b) = { | |
16 | 16 | let c = getString(this, b) | |
17 | 17 | if ($isInstanceOf(c, "String")) | |
18 | 18 | then { | |
19 | 19 | let d = c | |
20 | 20 | d | |
21 | 21 | } | |
22 | 22 | else "" | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func f (g,b) = { | |
27 | 27 | let c = getBoolean(g, b) | |
28 | 28 | if ($isInstanceOf(c, "Boolean")) | |
29 | 29 | then { | |
30 | 30 | let d = c | |
31 | 31 | d | |
32 | 32 | } | |
33 | 33 | else false | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func h (g,b) = { | |
38 | 38 | let c = getString(g, b) | |
39 | 39 | if ($isInstanceOf(c, "String")) | |
40 | 40 | then { | |
41 | 41 | let d = c | |
42 | 42 | d | |
43 | 43 | } | |
44 | 44 | else "" | |
45 | 45 | } | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func i (g,b) = { | |
49 | 49 | let c = getInteger(g, b) | |
50 | 50 | if ($isInstanceOf(c, "Int")) | |
51 | 51 | then { | |
52 | 52 | let d = c | |
53 | 53 | d | |
54 | 54 | } | |
55 | 55 | else 0 | |
56 | 56 | } | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | let j = 100000000 | |
60 | 60 | ||
61 | 61 | let k = 1000000 | |
62 | 62 | ||
63 | - | let l = | |
63 | + | let l = 1000000 | |
64 | 64 | ||
65 | - | let m = | |
65 | + | let m = (10 * j) | |
66 | 66 | ||
67 | - | let n = | |
67 | + | let n = 95 | |
68 | 68 | ||
69 | - | let o = " | |
69 | + | let o = "canceled" | |
70 | 70 | ||
71 | - | let p = " | |
71 | + | let p = "new" | |
72 | 72 | ||
73 | - | let q = " | |
73 | + | let q = "filled" | |
74 | 74 | ||
75 | 75 | let r = "price" | |
76 | 76 | ||
77 | 77 | let s = "bond_asset_id" | |
78 | 78 | ||
79 | 79 | let t = "neutrino_asset_id" | |
80 | 80 | ||
81 | - | let u = " | |
81 | + | let u = "balance_lock_" | |
82 | 82 | ||
83 | - | let v = " | |
83 | + | let v = (u + "waves") | |
84 | 84 | ||
85 | - | let w = ( | |
85 | + | let w = (u + "neutrino") | |
86 | 86 | ||
87 | - | let x = | |
87 | + | let x = "order_first" | |
88 | 88 | ||
89 | - | let y = "liquidation_contract" | |
90 | - | ||
91 | - | let z = "order_first" | |
92 | - | ||
93 | - | func A (B) = ("debug_order_roi_" + B) | |
89 | + | func y (z) = ("debug_order_roi_" + z) | |
94 | 90 | ||
95 | 91 | ||
96 | - | func | |
92 | + | func A (z) = ("order_price_" + z) | |
97 | 93 | ||
98 | 94 | ||
99 | - | func | |
95 | + | func B (z) = ("order_total_" + z) | |
100 | 96 | ||
101 | 97 | ||
102 | - | func | |
98 | + | func C (z) = ("order_owner_" + z) | |
103 | 99 | ||
104 | 100 | ||
105 | - | func | |
101 | + | func D (z) = ("order_height_" + z) | |
106 | 102 | ||
107 | 103 | ||
108 | - | func | |
104 | + | func E (z) = ("order_status_" + z) | |
109 | 105 | ||
110 | 106 | ||
111 | - | func | |
107 | + | func F (z) = ("order_filled_total_" + z) | |
112 | 108 | ||
113 | 109 | ||
114 | - | func | |
110 | + | func G (z) = ("order_prev_" + z) | |
115 | 111 | ||
116 | 112 | ||
117 | - | func | |
113 | + | func H (z) = ("order_next_" + z) | |
118 | 114 | ||
119 | 115 | ||
120 | - | func | |
116 | + | func I (J,K) = fraction(fraction(J, l, K), j, k) | |
121 | 117 | ||
122 | 118 | ||
123 | - | func L ( | |
119 | + | func L (J,K) = fraction(fraction(J, K, l), k, j) | |
124 | 120 | ||
125 | 121 | ||
126 | - | func | |
122 | + | func M (J,K) = L(J, K) | |
127 | 123 | ||
128 | 124 | ||
129 | - | func | |
125 | + | func N (J,K) = I(J, K) | |
130 | 126 | ||
131 | 127 | ||
132 | - | func Q (M,N) = L(M, N) | |
128 | + | let O = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we') | |
129 | + | ||
130 | + | let P = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx') | |
131 | + | ||
132 | + | let Q = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62') | |
133 | + | ||
134 | + | let R = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
135 | + | ||
136 | + | let S = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH' | |
137 | + | ||
138 | + | let T = f(P, "is_blocked") | |
139 | + | ||
140 | + | let U = i(P, r) | |
141 | + | ||
142 | + | let V = i(O, w) | |
143 | + | ||
144 | + | let W = (wavesBalance(O) - i(O, v)) | |
145 | + | ||
146 | + | let X = (((V + extract(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R)) | |
147 | + | ||
148 | + | let Y = (X - L(W, U)) | |
149 | + | ||
150 | + | let Z = e(x) | |
151 | + | ||
152 | + | func aa (ab) = a(A(ab)) | |
133 | 153 | ||
134 | 154 | ||
135 | - | let R = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we') | |
136 | - | ||
137 | - | let S = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx') | |
138 | - | ||
139 | - | let T = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62') | |
140 | - | ||
141 | - | let U = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
142 | - | ||
143 | - | let V = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH' | |
144 | - | ||
145 | - | let W = f(S, "is_blocked") | |
146 | - | ||
147 | - | let X = i(S, r) | |
148 | - | ||
149 | - | let Y = i(R, x) | |
150 | - | ||
151 | - | let Z = (wavesBalance(R) - i(R, w)) | |
152 | - | ||
153 | - | let aa = (((Y + extract(assetInfo(U)).quantity) - assetBalance(R, U)) - assetBalance(T, U)) | |
154 | - | ||
155 | - | let ab = (aa - O(Z, X)) | |
156 | - | ||
157 | - | let ac = e(z) | |
158 | - | ||
159 | - | func ad (ae) = a(C(ae)) | |
155 | + | func ac (ab) = a(B(ab)) | |
160 | 156 | ||
161 | 157 | ||
162 | - | func | |
158 | + | func ad (ab) = e(C(ab)) | |
163 | 159 | ||
164 | 160 | ||
165 | - | func | |
161 | + | func ae (ab) = e(E(ab)) | |
166 | 162 | ||
167 | 163 | ||
168 | - | func | |
164 | + | func af (ab) = a(F(ab)) | |
169 | 165 | ||
170 | 166 | ||
171 | - | func | |
167 | + | func ag (ab) = e(G(ab)) | |
172 | 168 | ||
173 | 169 | ||
174 | - | func | |
170 | + | func ah (ab) = e(H(ab)) | |
175 | 171 | ||
176 | 172 | ||
177 | - | func | |
173 | + | func ai (z,aj,ak,al,am,K) = [DataEntry(A(z), K), DataEntry(B(z), aj), DataEntry(C(z), ak), DataEntry(D(z), height), DataEntry(E(z), al), DataEntry(("debug_order_currentPrice_" + z), U), DataEntry(y(z), am)] | |
178 | 174 | ||
179 | 175 | ||
180 | - | func al (ae) = e(K(ae)) | |
181 | - | ||
182 | - | ||
183 | - | @Callable(am) | |
184 | - | func migrateOrderPrice () = { | |
185 | - | let an = "migration_6decimals_lastMigratedOrderId" | |
186 | - | let ao = "migrated_to_6decimals" | |
187 | - | let ap = e(an) | |
188 | - | let aq = if ((ap == "")) | |
189 | - | then ac | |
190 | - | else al(ap) | |
191 | - | let ar = ("migration_6decimals_status" + aq) | |
192 | - | let as = e(ar) | |
193 | - | if ((as == ao)) | |
194 | - | then throw("error: order has been already migrated") | |
195 | - | else if ((aq == "")) | |
196 | - | then throw("status ok: all orders have been already migrated or nothing to migrate") | |
197 | - | else WriteSet([DataEntry(ar, ao), DataEntry(an, aq), DataEntry(C(aq), (ad(aq) * 10000)), DataEntry(D(aq), (af(aq) * 10000))]) | |
176 | + | func an (ao,ap,aq,ar,as,at,au,av,aw) = { | |
177 | + | let ax = fraction((100 + as), U, 100) | |
178 | + | let ay = (au - ar) | |
179 | + | let az = M(ay, ax) | |
180 | + | let aA = N(az, ax) | |
181 | + | let aB = (ao >= as) | |
182 | + | if (!(aB)) | |
183 | + | then throw(("innapropriate roi: " + toString(as))) | |
184 | + | else if ((aA == 0)) | |
185 | + | then throw("cannot fill order at the moment") | |
186 | + | else { | |
187 | + | let aC = (ay - aA) | |
188 | + | let aD = if (aw) | |
189 | + | then [DataEntry(A(ap), at), DataEntry(B(ap), au), DataEntry(C(ap), toBase58String(av.bytes)), DataEntry(D(ap), height), DataEntry(F(ap), (ar + aA)), DataEntry(E(ap), q), DataEntry(("debug_order_currentPrice_" + ap), U), DataEntry(y(ap), as)] | |
190 | + | else [DataEntry(F(ap), (ar + aA)), DataEntry(E(ap), q), DataEntry(B(ap), au), DataEntry(G(aq), ""), DataEntry(x, aq)] | |
191 | + | ScriptResult(WriteSet(aD), TransferSet([ScriptTransfer(av, az, S), ScriptTransfer(O, aA, unit), ScriptTransfer(av, aC, unit)])) | |
192 | + | } | |
198 | 193 | } | |
199 | 194 | ||
200 | 195 | ||
201 | - | @Verifier(at) | |
202 | - | func au () = { | |
203 | - | let av = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
204 | - | let aw = ((((if (sigVerify(at.bodyBytes, at.proofs[0], fromBase58String(av[0]))) | |
196 | + | func aE (ao,am,K,aF,aG,aw) = { | |
197 | + | let aH = extract(aG.payment) | |
198 | + | let aI = toBase58String(aG.transactionId) | |
199 | + | if (T) | |
200 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
201 | + | else if ((m > aH.amount)) | |
202 | + | then throw(("min order total equals " + toString(m))) | |
203 | + | else if ((am > n)) | |
204 | + | then throw("max setOrder ROI is 95%") | |
205 | + | else if (if ((Y > 0)) | |
206 | + | then (0 > am) | |
207 | + | else false) | |
208 | + | then throw("can't place order with negative roi during deficit") | |
209 | + | else if ((-(n) > am)) | |
210 | + | then throw("min setOrder ROI is -95%") | |
211 | + | else if ((am == 0)) | |
212 | + | then throw("roi should not be equal to 0") | |
213 | + | else if (isDefined(aH.assetId)) | |
214 | + | then throw("can use waves only") | |
215 | + | else if ((ad(aI) != "")) | |
216 | + | then throw("order exists") | |
217 | + | else if (if ((aF != "")) | |
218 | + | then (ae(aF) != p) | |
219 | + | else false) | |
220 | + | then throw("prev order status is not new") | |
221 | + | else { | |
222 | + | let aJ = (aF == "") | |
223 | + | let ak = toString(aG.caller) | |
224 | + | let aK = if (aJ) | |
225 | + | then Z | |
226 | + | else ah(aF) | |
227 | + | let aL = a(y(aK)) | |
228 | + | let aM = if (if ((aK != "")) | |
229 | + | then (am >= aL) | |
230 | + | else false) | |
231 | + | then true | |
232 | + | else false | |
233 | + | let aN = a(y(aF)) | |
234 | + | let aO = if (if ((aF != "")) | |
235 | + | then (aN > am) | |
236 | + | else false) | |
237 | + | then true | |
238 | + | else false | |
239 | + | if (if (aM) | |
240 | + | then true | |
241 | + | else aO) | |
242 | + | then throw(((("invalid order isPrevOrderError:" + toString(aO)) + " isNextOrderError:") + toString(aM))) | |
243 | + | else if (if (aJ) | |
244 | + | then (ao >= am) | |
245 | + | else false) | |
246 | + | then an(ao, aI, aK, 0, am, K, aH.amount, aG.caller, true) | |
247 | + | else if (aw) | |
248 | + | then throw("Instant order couldn't be added into waiting queue") | |
249 | + | else WriteSet([DataEntry(G(aI), aF), DataEntry(H(aI), aK), DataEntry(H(aF), if ((aF == "")) | |
250 | + | then "" | |
251 | + | else aI), DataEntry(G(aK), if ((aK == "")) | |
252 | + | then "" | |
253 | + | else aI), DataEntry(x, if (if ((Z == "")) | |
254 | + | then true | |
255 | + | else (Z == aK)) | |
256 | + | then aI | |
257 | + | else Z), ai(aI, aH.amount, ak, p, am, K)]) | |
258 | + | } | |
259 | + | } | |
260 | + | ||
261 | + | ||
262 | + | @Callable(aP) | |
263 | + | func instantBuyNsbtOrFail (aQ) = { | |
264 | + | let aH = extract(aP.payment) | |
265 | + | let ao = fraction(Y, 100, X) | |
266 | + | if ((aQ > ao)) | |
267 | + | then throw(((("Current maxRoi=" + toString(ao)) + " is less then passed parameter noLessThenRoi=") + toString(aQ))) | |
268 | + | else { | |
269 | + | let ax = fraction((100 + ao), U, 100) | |
270 | + | aE(ao, ao, ((l * l) / ax), "", aP, true) | |
271 | + | } | |
272 | + | } | |
273 | + | ||
274 | + | ||
275 | + | ||
276 | + | @Callable(aP) | |
277 | + | func addBuyBondOrder (K,aF) = { | |
278 | + | let aH = extract(aP.payment) | |
279 | + | let ax = fraction(l, l, K) | |
280 | + | if ((0 >= K)) | |
281 | + | then throw("price less zero") | |
282 | + | else aE(fraction(Y, 100, X), fraction((ax - U), 100, U), K, aF, aP, false) | |
283 | + | } | |
284 | + | ||
285 | + | ||
286 | + | ||
287 | + | @Callable(aP) | |
288 | + | func cancelOrder (z) = { | |
289 | + | let ak = ad(z) | |
290 | + | let J = (ac(z) - af(z)) | |
291 | + | let aR = toString(aP.caller) | |
292 | + | let aK = ah(z) | |
293 | + | let aF = ag(z) | |
294 | + | if (T) | |
295 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
296 | + | else if ((ak != aR)) | |
297 | + | then throw("permission denied") | |
298 | + | else if ((ae(z) != p)) | |
299 | + | then throw("invalid order status") | |
300 | + | else ScriptResult(WriteSet([DataEntry(x, if ((Z == z)) | |
301 | + | then aK | |
302 | + | else Z), DataEntry(H(aF), aK), DataEntry(G(aK), aF), DataEntry(E(z), o)]), TransferSet([ScriptTransfer(aP.caller, J, unit)])) | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(aP) | |
308 | + | func sellBond () = if (T) | |
309 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
310 | + | else if ((Z == "")) | |
311 | + | then throw("empty orderbook") | |
312 | + | else { | |
313 | + | let aK = ah(Z) | |
314 | + | let aS = af(Z) | |
315 | + | let aT = aa(Z) | |
316 | + | let am = a(y(Z)) | |
317 | + | let aU = ac(Z) | |
318 | + | let av = Address(fromBase58String(ad(Z))) | |
319 | + | an(fraction(Y, 100, X), Z, aK, aS, am, aT, aU, av, false) | |
320 | + | } | |
321 | + | ||
322 | + | ||
323 | + | ||
324 | + | @Callable(aP) | |
325 | + | func updateReservesAndNeutrinoSupply () = { | |
326 | + | func aV (b) = { | |
327 | + | let c = getInteger(this, b) | |
328 | + | if ($isInstanceOf(c, "Int")) | |
329 | + | then { | |
330 | + | let d = c | |
331 | + | d | |
332 | + | } | |
333 | + | else 0 | |
334 | + | } | |
335 | + | ||
336 | + | let aW = aV("updateReservesAndNeutrinoSupplyIdx") | |
337 | + | let aX = (aW + 1) | |
338 | + | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aX), DataEntry("reserve", W), DataEntry("neutrinoSupply", X), DataEntry("deficit", Y)]) | |
339 | + | } | |
340 | + | ||
341 | + | ||
342 | + | @Verifier(aY) | |
343 | + | func aZ () = { | |
344 | + | let ba = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
345 | + | let bb = ((((if (sigVerify(aY.bodyBytes, aY.proofs[0], fromBase58String(ba[0]))) | |
205 | 346 | then 1 | |
206 | - | else 0) + (if (sigVerify( | |
347 | + | else 0) + (if (sigVerify(aY.bodyBytes, aY.proofs[1], fromBase58String(ba[1]))) | |
207 | 348 | then 1 | |
208 | - | else 0)) + (if (sigVerify( | |
349 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[2], fromBase58String(ba[2]))) | |
209 | 350 | then 1 | |
210 | - | else 0)) + (if (sigVerify( | |
351 | + | else 0)) + (if (sigVerify(aY.bodyBytes, aY.proofs[3], fromBase58String(ba[3]))) | |
211 | 352 | then 2 | |
212 | 353 | else 0)) | |
213 | - | ( | |
354 | + | (bb >= 3) | |
214 | 355 | } | |
215 | 356 |
github/deemru/w8io/169f3d6 82.68 ms ◑![]()