Вышла версия 1.5.15.
Добавлены новые API. Улучшен GUI, в частности высвечивается общая стоимость MS валют на балансе аккаунта.
Реализована полноценная оффлайновая подпись транзакций ("холодный" аккаунт).
Инструкция:
Этот функционал позволяет подписывать транзакции без ввода пароля на онлайн компьютере (т.е. подключенном к интернету), что позволяет избежать риска перехвата пароля зловредной программой.
Для использования этого функционала необходимо настроить два компьютера:
(1) онлайновый, с актуальным блокчейном, нужен для подготовки транзакций;
(2) оффлайновый (без связи с интернет), с установленной Java и Nxt (блокчейн не нужен) - для подписи транзакций. Чтобы Nxt на этом компьютере даже не пытался связываться с другими нодами можно также установить параметр nxt.isOffline=true
Также для переноса данных между этими компьютерами следует подготовить флэшку, либо веб-камеру для сканирования QR-кодов.
Дальнейшая последовательность действий:
Создать транзакцию (без ввода пароля, на онлайн-компьютере): в веб-клиенте пункт "advanced", взвести опцию "Do Not Broadcast", и затем "Do Not Sign" (после чего поле ввода пароля станет серым - деактивируется).
Если аккаунт, с которого отправляется транзакция, ещё не имеет публичного ключа, то появится отдельно поле для его ввода.
В ответ на нажатие кнопки "Send NXT" Nxt-сервер вернёт в модальное окно "Raw Transaction Details" неподписанную транзакцию в формате JSON, а также (только в случае если в транзакции нет шифрованного сообщения) и в байт-формате (плюс эти байты в QR-коде).
В эти неподписанные байты не включаются
удаляемые вложения, тем не менее их всё же можно подписывать.
Переместить байты неподписанной транзакции на оффлайн-компьютер либо путём сканирования QR-кода, либо сохранением JSON-строки в файл на флешку (иконка "download"
рядом со словами "Unsigned Transaction JSON").
Подписать транзакцию на оффлайн-компьютере - пункт "Transaction Operations", закладка "Sign Transaction".
Переместить назад на оффлайн-компьютер получившиеся подписанные байты (в окно "Raw Transaction Details") либо JSON (в закладку "Broadcast Transaction" окна "Transaction Operations"), и нажать кнопку "Broadcast" ("отправить").
В версию также входит утилита командной строки sign.sh для подписи транзакций в JSON-формате даже без работающего Nxt-сервера.
Замечание: если подписываемая транзакция содержит шифрованное сообщение, то это шифрование производится также на оффлайн-компьютере (что хорошо). Что плохо - это подготовка транзакции (в формате JSON) к подписанию на онлайн-компьютере. Если в качестве онлайн-клиента используется удалённый сервер, то сообщение передаётся на него открытым текстом, поэтому для транзакций с важными сообщениями следует использовать локальный Nxt-сервер онлайн-компьютера.
Во всех закладках окна "Transaction Operations" нужно заполнять либо JSON-, либо байт- поля. В случае сомнений используйте JSON, т.к. он работает для всех типов транзакций. Байт-формат сейчас используется для обратной совместимости, и для передачи QR-кодом (в отличие от JSON).
Ещё о "холодных" аккаунтах от Жан-Люка:
The sign.sh command line tool, included in this release, calls a small Java application nxt.tools.SignTransactionJSON, which even though uses Nxt code, avoids initializing any subsystems that it doesn't need, such as database, peer networking, jetty, etc. Thus it can be used for quickly signing unsigned transaction json from the command line, without firing up the Nxt server, on the offline machine. It uses json as input and can also do encryption of message attachments when needed, unlike other generic curve25519 signing tools that need to handle transaction bytes only and can't do such encryption.
It should be noted that while malware on the online machine cannot steal your passphrase, it could in theory modify the transaction json and replace the recipient or add a few zeros to amountNQT, letting you unwittingly sign and broadcast not exactly what you intended. To protect against such attack, you should inspect the transaction json you will be signing, on the offline machine. The "parse transaction" tab in the "transaction operations" modal can be used for that, as it formats the transaction fields in a more readable way. Currently it skips the attachment fields, if any, this will be improved in a future release.
"холодная " подпись в NxtWiki:
http://nxtwiki.org//wiki/Offline_Transaction_Signing