Журнал изменений Nxt Software

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page Nxt Software Change Log and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎русский • ‎українська

Contents

1 Версия 1.5.11

8 Июня, 2015

  • В этой версии удалена совместимость с узлами версий более старыми чем версия 1.5, и больше не поддерживается соединение и обмен данными с устаревшими узлами.
  • Условная логика зависящая от блока 445000 была удалена, в ней больше нет необходимости, так как блок 445000 был достигнут.
  • Теперь используется параллельная загрузка blockchain с использованием 36-блочных сегментов, теперь это значение используется по умолчанию независимо от высоты. Возвращает более 36 блоков за раз, getNextBlocks больше не поддерживается.
  • Максимальный размер WebSockets сообщение и Максимально допустимый размер ответа на запрос getNextBlocks были сокращены с 192 МБ до 10 МБ.
  • Была добавлена контрольная сумма 445 000 блока.
  • В ответе API getBlockchainStatus и GetState добавлено поле ​​isDownload, указывающее на состояние загрузки blockchain. Его значение становится true, когда одновременно более чем 10 блоков были загружены с узла сети, и сбрасывается в false, когда попытка загрузки блоков от узлов не приводит к появлению новых блоков.
  • Запросы к узлам getUnconfirmedTransactions, getMilestoneBlockIds, getNextBlockIds, getNextBlocks, processBlock, processTransactions, getCumulativeDifficulty теперь отвергаются пока происходит загрузка blockchain, что отображается в свойстве isDownloading.
  • Отметка времени последней попытки подключения к узлу теперь включена в объекте JSON узла.
  • Добавлен параметр соединения DumpPeers в API отладки, чтобы ускорить попытки подключений к известным узлам, AdminPassword требуется если он необходимо.
  • Скрипт run.bat для Windows больше не использует флаг -server по умолчанию.
  • Узлы которые обновляются со старых версий до текущей версии 1.5 удалят блоки с высотой более 445000, чтобы гарантировать что таких узлов в сети нет, и исключить вероятность появления ветвлений версии 1.4.

2 Версия 1.5.10

4 Июня, 2015

  • Создан пакет установщика для Windows и Linux, с использованием установщика IzPack. Подробнее см. https://bitbucket.org/JeanLucPicard/nxt/issue/283 (англ.)
  • Добавлены отдельные сборки Linux и Windows (cygwin) и сценарии запуска.
  • Трекинг и логирование времени выполнения запросов к базе данных. Новые свойства: nxt.statementLogThreshold, nxt.transactionLogThreshold, и nxt.transactionLogInterval может использоваться, чтобы сконфигурировать журналирование медленных запросов.
  • Оптимизация и улучшения производительности базы данных . Данные о лизинге(аренде) аккаунта перенесены из таблицы учетной записи к отдельную таблицу account_lease. Во многих таблицах были добавлены индексы, существующие изменены.
  • Улучшена производительность JSON кодирования.
  • Исходящие websockets соединения больше не инициируются при использовании socks или http proxy (если определены системные свойства socksProxyHost или http.proxyHost).
  • Включает заканчивающиеся prunable JSON в транзакцию API JSON, при наличии.
  • Чтобы защитить общедоступные узлы от ненужной дополнительной загрузки, getState API не включает количество, даже если includeCounts=true, пока не будет задан параметр adminPassword, или не является необходимым.
  • В getState добавлены numberOfAccountLeases и numberOfActiveAccountLeases, показывают общее количество запланированных (которые начнут арендовать), или активные в настоящее время договора аренды баланса аккаунта.
  • Ограничение длинны детализации узлов - 10 символов для версии, 20 для приложения, 30 для платформы, и 100 для адреса, который анонсируют.
  • Улучшения пользовательского интерфейса:
    • Исправленный ошибка из за которой иногда не отображался значок уведомлений после входа в систему.
    • Улучшены переводы на болгарский и словацкий языки.
    • Исправления ошибок при локальном подписании загружаемых теговых данных и утверждения транзакции.
    • Эта версия выполнит полное пересканирование blockchain при первом запуске.
    • Обновление jetty до версии 9.2.11. При установке распаковкой поверх существующей установки, предварительно удалите старую папку lib.

3 Версия 1.5.9

27 Мая, 2015

  • Активирован функционал Voting System, Phasing, и связанный с ними новый функционал, начиная с блока 445000.
  • Это hard fork, обновление до версии 1.5.9 или более новой обязательно для всех.
  • Если вы обновляетесь с версии 1.4.x, для изучения изменений которые введены в версий 1.5.х прочтите внимательно описание изменений и новых возможностей.
  • Улучшения в работе узлов. Узлы, которые недоступны больше 7 дней и не перечисленные в параметрах nxt.wellKnownPeers или nxt.defaultPeers, удаляются из базы данных узлов.
  • Обновлены файлы переводов, добавлен Болгарский и Каталонский переводы.
  • Прочие незначительные исправления и улучшения.

Важные изменения в лицензировании:

  • Программное обеспечение ядра Nxt теперь распространяется под лицензией GNU General Public License version 2, за исключением кода пользовательского интерфейса клиента, который продолжает распространяться в соответствии с лицензией MIT. Читайте файлы LICENSE.txt, COPYING.txt и DEVELOPER-AGREEMENT.txt для получения дополнительной информации.

4 Версия 1.5.8e

15 Мая, 2015

  • Это экспериментальная версия. Необходимо обязательно обновить все узлы testnet, также может использоваться в основной сети.
  • Установите тип контента в "text/plain; charset=UTF-8", когда отправляете http запросы узлам. Это важное исправление ошибки, поскольку неправильная кодировка исходящих блоков и транзакций, содержащих некоторые символы Unicode, может остановить их распространение и привести к ветвлениям. Все кто использует экспериментальный выпуск должны обязательно обновиться.

5 Версия 1.5.7e

15 мая, 2015

  • Это экспериментальная версия. Её необходимо обновить на всех узлах testnet, эту версию также возможно использовать на основной сети.
  • Добавлена поддержка WebSockets для p2p взаимодействия сети. При соединении с узлами, которые не поддерживают WebSockets, будет использоваться HTTP. WebSockets может быть отключен, установкой параметра nxt.useWebSockets в "false" (по умолчанию включено).
  • Реализована параллельная загрузка blockchain. После наступления Constants.PHASING_BLOCK (еще не установленной в основной сети), блоки и данные транзакций будут запрашиваться сразу от множества узлов параллельно, пакетами по 36 блоков (когда необходима загрузка более чем 36 блоков), вместо того как это было реализовано ранее - путем загрузки 720 блоков от единственного соседнего узла содержащего нужные блоки в blockchain. Как ожидается, это значительно сократит время полной загрузки blockchain, как только большинство узлов обновится, чтобы поддерживать протокол параллельный загрузки.
  • Добавлена загрузка файла, использующая множественную форму запросов к API UploadTaggedData, ExtendTaggedData и VerifyTaggedData. Добавлена кнопка загрузки файла к соответствующим формам на странице /test.
  • Добавлен API вызов DownloadTaggedData, для загрузки тегированых данных как файл.
  • Добавлен опциональный булев параметр includeData для всех API вызовов GetTaggedData, по умолчанию "true", позволить опускать фактические данные возвращаемых результатов для сохранения пропускной способности, так как эти данные теперь можно получить отдельно, используя DownloadTaggedData API.
  • Реализован поиск по тегам. Реализована проверка тегированых данных.
  • Добавлен параметр includeEffectiveBalance в API вызовы getAccount и getBalance, по умолчанию "true". Если "false", эффективный баланс и гарантированный баланс не включаются в ответ, это должно повысить эффективность работы указанных API вызовов.
  • Добавлена утилита HexConvert API.
  • Улучшения в GetConstants JSON, теперь позволяет включать альтернативный тип JSON представления транзакции.
  • Узлы в списке nxt.wellKnownPeers всегда поддерживают соединение, независимо от числа подключенных публичных узлов или общего количества известных узлов.
  • Добавлен API функция GetInboundPeers, которая возвращает список всех узлов сети которые отправляли запросу указанному узлу, в течении последних 30 минут.
  • Добавлены булевы поля inbound, inboundWebSocket, и outboundWebSocket в JSON узла, возвращаемый API запросами getPeer и getPeers, чтобы показать входящее состояние каждого узла и определить установило ли это входящие или исходящие websocket соединение с этим узлом.
  • Ограничение общего количества входящих и исходящих соединений, используя свойства nxt.maxNumberOfInboundConnections и nxt.maxNumberOfOutboundConnections, по умолчанию 250 и 50 соответственно. Значение nxt.maxNumberOfConnectedPublicPeers не может превышать значение nxt.maxNumberOfOutboundConnections (если это происходит, то это задано в nxt.maxNumberOfOutboundConnections).
  • API запросы getAccountTransactions и getAccountTransactionIds были ограничены таким образом, что всегда возвращают только не-фазированные транзакции. Эти API будут удалены начиная с версии 1.6. Вместо них должна использоваться API функция getBlockchainTransactions, которая имеет тот же функционал, но возвращает и фазированные и не-фазированные транзакции (по умолчанию, если или phasedOnly или nonPhasedOnly параметры не заданы). Не стоит просто заменять getAccountTransactions на getBlockchainTransactions в вашем клиентском коде без понимания того, как фазированные (поэтапные) транзакции работают, т.к. вы не будете готовы обрабатывать их правильно.
  • Добавлена ссылка на Wiki документацию по использованию API запросов со страницы /test. Ссылка генерируется автоматически, и таким образом предоставляются данные только на тот раздел Wiki который соответствует хэш-тегу, на данный момент, большинство из них еще в доработке.
  • JavaScript функция NRS.sendRequest () больше не принимает callback функцию как свой второй параметр. Вместо этого при отправлении запроса без данных установите значение {} как второй параметр и функция callback как третий параметр.

Улучшения пользовательского интерфейса:

  • Реализовано на стороне клиента подписание тегированых данных транзакций.
  • Добавлена форма File Upload (Загрузки Файла), доступная из меню настройки параметров. Допускается расширенное тегирование данных транзакции в модальной окне с информацией о транзакции.
  • Интеграция текущего статуса клиентских переводов для новых функций 1.5 версии, новое "экспериментальное" состояние для языков с состоянием перевода в 40-50%+, добавлены чешский, греческий, перевод на хинди в экспериментальном состоянии, обновила состояние перевода для других языков (Бета: 70-80%+, Стабильный:90-95%+).

6 Версия 1.5.6e

28 апреля, 2015

  • Это экспериментальная версия. Её необходимо обновить на всех узлах testnet, эту версию также возможно использовать на основной сети.
  • Улучшение работы узлов сети.
  • Анонсируемые адреса всегда проверяются на соответствие заданному адресу, и не принимаются если выявляется несоответствие. Ранее анонсированные узлы и адреса, будут удалены при смене IP у узла с динамическим IP адресом.
  • Если nxt.maxNumberOfKnownPeers (значение по умолчанию 2000) превышен, размер пула узлов уменьшается до nxt.minNumberOfKnownPeers (значение по умолчанию 1000), сначала сохранив самые высокие hallmarked узлы.
  • Узлы теперь идентифицируются только IP-адресом а не адресом и портом. Мульти-узлы, совместно использующие один и тот же IP-адрес, будут рассматривать как один узел, с заявленным адресом и портом который будет получен запросом GetInfo или из ответа, при отправке или получении информации на/с этого адреса.
  • Несовместимое изменение: При использовании порта отличающегося от порта по умолчанию, клеймо должно также включать информацию о этом порте, иначе клеймо будет проигнорировано.
  • Оптимизация распространения неподтвержденных транзакций. Когда узлам передается недавно полученная неподтвержденная транзакция, если их количество превышает 10, передача происходит несколькими пакетами по 10. При запросе неподтвержденных транзакций от узлов, идентификаторы транзакций в пуле, в настоящее время включены в запрос, так, чтобы удаленный узел не должен был включать их в ответ. Размер ответа также ограничен 100 транзакциями, если запрашивающий узел не поддерживает исключающий параметр.
  • У любых тегированных данных теперь также добавлено поле канала. API searchTaggedData может фильтровать результаты поиска по каналу, а новый API getChannelTaggedData был добавлен, чтобы выбирать тегированные данные по каналам, с дополнительной фильтрацией по аккаунту.
  • Исправления в пользовательском интерфейсе для AddPeer и BlacklistPeer, для принятии пароля администратора в случае необходимости.
  • Действия с "Approve Transaction" теперь доступны на вкладке действий информации о транзакции.
  • Добавлено поле "Reveal Secret" в форме "Approve Transaction",при голосовании по модели "By Hash".
  • Улучшена /test страница для принятия и предварительного заполнения тестовых форм любыми значениями параметров, предоставленными в URL, например: http://localhost:7876/test?requestType=getBlocks&lastIndex=10&includeTransactions=true
  • Эта версия выполнит полное ресканирование blockchain в тестовой сети.

7 Версия 1.5.5e

23 апреля, 2015

  • Это экспериментальная версия. Её необходимо обновить на всех узлах testnet, эту версию также возможно использовать на основной сети.
  • Исправлена обработка неподтвержденных транзакций ExtendTaggedData.
  • API AddPeer и BlacklistPeer теперь используют POST метод и требуют admin пароль.
  • Эта версия будет выполнять полное повторное сканирование в testnet.

8 Версия 1.5.4e

22 апреля, 2015

  • Это экспериментальная версия. Её необходимо обновить на всех узлах testnet, эту версию также возможно использовать на основной сети.
  • Исправлена ошибка в парсинге json транзакции ExtendTaggedData, которая препятствовала тому, чтобы такие транзакции распространялись между узлами.
  • Добавленная постоянная опция сообщений для большинства диалогов при отправке транзакций.
  • Другие незначительные исправления и улучшения.

9 Версия 1.5.3e

19 апреля, 2015

  • Это экспериментальная версия. Необходимо её обновить на всех testnet узлах, её также возможно использовать на основной сети.
  • Эта версия добавляет опцию Prunable Tagged Data, запланированную к включению с блока включающего систему голосования.
  • Тегированые Prunable данные подобны prunable сообщениям c открытым текстом, без получателя, но с дополнительными доступными для поиска полями метаданных. Эта функция может быть использована для децентрализованного и доверенного распределенного хранения маленьких (до 42KB метаданных включительно) частей данных, которые по умолчанию хранятся только в течение двух недель (24 часа на testnet), но опционально могут быть сохранены некоторыми узлами на более длительное время или даже бесконечно, и могут быть проверены повторно в blockchain даже после их удаления.
  • В настоящее время у любых тегированых данных могут быть следующие поля, в дополнение к самим данным: Имя(требуемое), Описание, Теги, Тип, isText, Имя Файла.
  • Поля Имя, Описание и Теги индексируются и доступны для поиска с использованием Lucene. У всех prunable данных и метаданных, после удаления сохраняются только 32-байта хеша.
  • Комиссия за любую загрузку или за продление тегированых данных основывается на общем размере данных (включая метаданные) и составляет 1 NXT для данных размером до 1 KB, и 0.1 NXT для каждого последующего 1 KB, на данный момент ограничено объемом 42 KB.

Новые API:

  • UploadTaggedData - создает и публикует новые тегированые данные.
  • ExtendTaggedData - увеличивает время истечения срока уже загруженных тегированых данных. Если данные все еще доступны, необходим только идентификатор транзакции. В противном случае уже уделенные данные могут быть восстановлены включением (в дополнение к исходному идентификатору транзакции) всех полей, т.е. имя, описание, и т.д. Обеспечить продление срока может любой пользователь, а не только тот кто загружал данные. Каждая транзакции увеличивающая срок доступности данных, продлевает его на две недели (24 ч на testnet). Увеличение срока доступности тегированых данных другой учетной записью не изменяет исходный идентификатор аккаунта submitter, который проиндексирован и доступен для поиска.
  • VerifyTaggedData - используется чтобы проверить истекшие теговые данные, загруженные с другого узла, на присутствие хеша в текущем blockchain.
  • SearchTaggedData - полнотекстовый поиск по названию, тегу, и описанию, опционально может фильтровать аккаунту который опубликовал данные.
  • GetTaggedData - получает данные тегов по заданному id транзакции.
  • GetAccountTaggedData - возвращает все тегированые данные опубликованные заданным аккаунтом.
  • GetAllTaggedData - возвращает все существующие тегированые данные.
  • GetDataTags - возвращает различные теги всех тегированых данных, с числом данных, имеющих каждый тэг.
  • GetDataTagsLike - префиксный поиск тегов данных.
  • GetDataTagCount - общее число различных тегов.
  • Все Get* и Search* API может получить только теговые данные, которые еще не были удалены (pruned).
  • Сейчас нет никакой поддержки перечисленных API на уровне пользовательского интерфейса. Ожидается, что будут разработаны специализированные сторонние плагины для специализированных тегированых данных, в зависимости от типа файла и целевой группы пользователей.
  • В настоящее время удалением теговых данных управляют те же свойства конфигурации, которые используются для удаления удаляемых (prunable) сообщений.
  • По аналогии с prunable сообщениями, когда используется broadcastTransaction API, чтобы опубликовать уже подписанные тегированые данные в выгружаемой транзакции, prunable части должны находиться в параметре prunableAttachmentJSON в случае, если используется параметр transactionBytes. Если публикуется transactionJSON, он уже содержит prunable части.

Новые API отладки:

  • GetAllBroadcastedTransactions - если ретрансляция транзакции включена, возвращает неподтвержденные транзакции, которые были переданы от этого узла, но еще не были получены назад от узлов.
  • GetAllWaitingTransactions - возвращает неподтвержденные транзакции, которые в настоящее время временно сохранены в памяти во время обработки транзакций.
  • RebroadcastUnconfirmedTransactions - если ретрансляция транзакции включена, транзакции находящиеся в настоящее время в пуле неподтвержденных транзакций, будут повторно передаваться узлам, пока не не будут получены назад от узлов сети.

Другие изменения и исправления:

  • Улучшенная обработка недопустимых транзакций во время генерации блоков. Исправлена проверка допустимости транзакции отмены AE ордеров. Зафиксирована утечка памяти при обработке неподтвержденных транзакций. Предел ожидания неподтвержденных транзакций в параметре nxt.maxUnconfirmedTransactions установлен по умолчанию в 1000.
  • Размер данных доставки товаров DGS будет ограничен 1000 байтами после блока VS.
  • Исправления в обработке prunable сообщений.
  • Исправления в фазировании с белым списком учетных записей одобрения.
  • На testnet, при первом запуске, эта версия выполнит полное ресканирование с последующим откатом blockchain к высоте 263895.

10 Версия 1.5.2e

15 апреля, 2015

  • Это экспериментальная версия. Её необходимо обновить на всех узлах testnet, эту версию также возможно использовать на основной сети.
  • Добавлен getAllPrunableMessages API, возвращает все доступные на данный момент prunable сообщения, в порядке обратном метке времени блока.
  • Добавлен API verifyPrunableMessage,который можно использовать, чтобы проверить, что prunable сообщение, полученное от другого узла (поставщика услуг), соответствует хешу, найденному в blockchain, т.е. не было подделано.
  • Отображает maxPrunableLifetime настройки в getState и getBlockchainStatus. Отображает текущее количество prunable сообщений в getState.
  • Изменено свойство nxt.maxPrunableLifetime, теперь также влияет на существующие prunable сообщения (будут удалены при следующем запуске), поскольку теперь используются метки времени транзакции вместо меток времени истечения сообщений.
  • Размер максимального доставляемого товара DGS опять вернулся к 10 Кбайтам, как в версии 1.4. Для товаров большего размера вместо этого должно использоваться зашифрованное prunable сообщение.
  • Удаленное базовое ограничение на 28-байтовую минимальную длину prunable сообщения, это условие будет проверяться только в пользовательском интерфейсе.
  • Добавлено свойство nxt.includeExpiredPrunables, дающее возможность вызвать включенные prunable части в возвращаемом JSON транзакции, даже если у них истек срок хранения, но они все еще доступны. Может использоваться, чтобы заставить архивный узел всегда возвращать эти данные, таким образом позволяя другому архивному узлу, который получает от него информацию, также получить все указанные необходимые данные.
  • Лимит количества неподтвержденных транзакций, которые могут быть сохранены в памяти, задается в nxt.maxUnconfirmedTransactions, по умолчанию ограничения отсутствуют. Если значение задано, транзакции с самым низким отношением комиссии/размера удаляются из пула неподтвержденных транзакций в первую очередь. Порядок такой же какой используется при выборе транзакций которые включаются в новый блок.
  • Добавлена API отладки requeueUnconfirmedTransactions .
  • Добавлена поддержка для несжатых не prunable зашифрованных сообщений и самостоятельно зашифрованных сообщений, как новой версии приложений, чтобы избежать потребности определять состояние сжатия как параметр запроса при чтении этих данных.
  • Добавлен setLogging API, который позволяет менять уровень логирования без необходимого рестарта сервера.
  • Добавлены eventRegister и eventWait API, использоваться для регистрации публикаций и ожидания событий сервера опроса.
  • Изменены параметры принимаемые broadcastTransaction. Любая prunable часть должна быть передана в transactionJSON, или, если используются transactionBytes, в новом prunableAttachmentJSON параметре, который имеет тот же формат что и присоединяемый к транзакции json. PrunableAttachmentJSON теперь возвращает signTransaction и getTransactionBytes API.
  • Добавлена поддержка для prunable сообщений, простых и шифрованных, в пользовательском интерфейсе.
  • Добавлен опциональный параметр buyer в getDGSGoodsPurchases API.
  • Улучшения и исправления ошибок в интерфейсе пользователя в Voting system.

11 Версия 1.5.1e

11 апреля, 2015

  • Это экспериментальная версия, которая добавляет опцию Prunable Messages. Эта функция будет включена в основной сети в том же блоке что и функции Voting и Phasing.
  • Эта версия обязательна для обновления на всех узлах testnet, также может работать на основной сети.

Новые функции:

  • Prunable (удаляемые) простые и шифрованные сообщения.
  • Простые и шифрованные сообщения могут теперь быть созданы как prunable. Для prunable сообщения сами данные сообщения не являются частью байтов транзакции. Вместо этого хранится 32 байта его хэша SHA256 который включены в байты транзакции, которые подписываются и используются чтобы проверить подпись или получить полный хэш транзакции или id. Это позволяет полностью удалить данные о сообщении в любое время, сохранив только 32 байта хэша, при этом иметь возможность проверить подпись а транзакции, получить хэш транзакции и id, при этом удаление никак на эти данные не повлияет.
  • У prunable сообщений есть заданный период жизни, после которого их prunable части будут удалены из blockchain. Отсчет периода жизни сообщения начинается метки времени транзакции. Когда узел получает транзакцию или блок от другого узла, требуется чтобы prunable части любого prunable сообщения были включены, если срок их жизни еще не истек. Если это выполняется, и корректный хэш сообщения присутствует, блок или транзакция будут приняты.
  • В настоящее время минимальный срок жизни prunable данных составляет 24 ч для testnet, что позволяет очень просто тестировать данный функционал. Для основной сети этот показатель экспериментально установлен в две недели, но возможно будет изменен перед выпуском стабильной версии. Обратите внимание на то, что удаление выполняется в то же время, что и обрезание таблиц, которое происходит через каждых 1000 блоков, таким образом, фактическое удаление prunable данных из базы данных произойдет с некоторой задержкой после окончания времени их жизни.
  • Узел может хранить prunable сообщения дольше, путем установки большего значения параметру nxt.maxPrunableLifetime . Этот параметр не может повлиять на удаление данных на более раннем этапе. Изменение этого значения затрагивает только те транзакции которые были получены после изменения. Удаление может быть полностью отключено путем установки этого параметра в -1.
  • Prunable сообщения у которых еще не закончился срок жизни, но прошел минимальный срок жизни (см. выше), могут быть только восстановлены с использованием API getPrunableMessage (s), но они не включены как часть их JSON транзакции.
  • Если транзакция содержащая prunable вложение является поэтапно осуществляемой (фазируемой), её prunable части, тем не менее, сохраняются и доступны немедленно, а не только на конечной высоте. Если наступает их крайний срок жизни, то перед конечной высотой фазирования они будут удалены и не доступные на конечной высоте.
  • Комиссия за prunable сообщения составляет 0.1 NXT за каждых 1024 байта, с бесплатными первыми 1024 байтами (комиссия за транзакцию в зависимости от его типа также применяется). Размер комиссии возможно будет изменен перед выпуском стабильной версии.
  • Полный размер вложенных prunable сообщения ограничен 42 Кбайтами. Обратите внимание на то, что этот размер используется при вычисления полного полезного груза блока, хотя фактически в транзакционых байтах содержится только 32-байтовый хэш сообщения.
  • Размер обыкновенных простых и зашифрованных сообщений в этой версии был опять ограничен 1000 байтами и будет, вероятно, уменьшен еще больше перед выходом стабильной версии. Это делается для того чтобы поощрять пользователей переключаться с обыкновенных сообщений на prunable сообщения. Комиссия за обыкновенные сообщения также будет существенно увеличиваться.
  • Создание простых prunable сообщений размером меньше 28 байтов запрещено, так как в таком небольшом объеме более эффективно хранить полное сообщение чем его 32-байтовой хэш. У зашифрованных prunable сообщениях отсутствуют какие либо ограничения на размер.
  • Транзакция не может иметь одновременно и простое prunable сообщение и зашифрованное prunable сообщение. Также не может иметь prunable и обыкновенное сообщение того же самого типа (простое или зашифрованное). При этом можно одновременно иметь обыкновенное простое сообщение и зашифрованное prunable сообщение, или простое prunable сообщение и регулярное зашифрованное сообщение.
  • Prunable encrypt-self сообщения в настоящее время не поддерживаются, поскольку предполагается отсутствие потребности в использовании такого решения.
  • Зашифрованные Prunable сообщения могут быть произвольно сжаты перед шифрованием (сжатие по умолчанию). Статус сжатия сохраняется и нет необходимости его самостоятельно определять при расшифровывании. Обыкновенные зашифрованные сообщения по умолчанию сжимаются, но теперь это сжатие может быть произвольно отключено. Для обратной совместимости со "старыми" сообщениями, так как их байт формат не сохраняет статус сжатия, это должно быть определено при расшифровывании, в противном случае будет возвращена ошибка или будут возвращены нечитабельные данные.

Новые API:

  • GetPrunableMessage - возвращает prunable сообщение для заданного id транзакции, дополнительно дешифрует его, если сообщение зашифровано и secretPhrase предоставлена.
  • GetPrunableMessages - возвраты все prunable сообщения для заданного id аккаунта, дополнительно ограничивая заданной учетной записью получателя или отправителя, и дешифрует их, если secretPhrase предоставлена.
  • Prunable сообщения, которые уже были удалены не будут возвращаться указанными API
  • Пользовательский интерфейс для этих API будет реализован в новых версиях.
  • TrimDerivedTables - API отладки, чтобы инициировать обрезку производных и prunable таблиц.

Измененные API:

  • Все API которые создают новые транзакции теперь также опционально поддерживают boolean параметры: messageIsPrunable или encryptedMessageIsPrunable (по умолчанию false). Если true, тогда присоединено сообщение или шифрованное сообщение, в любом другом случае это создано prunable сообщение.
  • Чтобы управлять, выполнять сжатие перед шифрованием или нет, можно использовать новые параметры compressMessageToEncrypt и compressMessageToEncryptToSelf (по умолчанию true).
  • Prunable сообщения, если еще не удалены, будут также возвращаться как часть json транзакции API getAccountTransactions, используя те же соответствующие поля как и регулярные сообщения, но добавляя messageIsPrunable или encryptedMessageIsPrunable boolean флаг.
  • ReadMessage теперь также обрабатывает вложенные prunable сообщения, если таковые имеются. Для этого используются дополнительные параметры uncompressDecryptedMessage и uncompressDecryptedMessageToSelf (по умолчанию true), используемые только для non-prunable сообщений (не являются необходимыми для prunable).
  • DecryptFrom принимает дополнительный параметр uncompressDecryptedMessage, и encryptTo принимает дополнительный параметр compressMessageToEncrypt, true по умолчанию.

НЕСОВМЕСТИМЫЕ изменения:

  • BroadcastTransaction был изменен, чтобы дополнительно принимать все параметры, которые необходимы, чтобы создать простое или зашифрованное prunable сообщение (только клиентское шифрование). Это необходимо, потому что данные для таких сообщений никогда не являются частью самих байтов транзакции, таким образом, попытка широковещательно передать транзакцию у которой есть prunable часть, только представляя их как байты broadcastTransaction приведет к ОШИБКЕ, если соответствующие параметры, необходимые, чтобы добавить prunable часть, не будут также предоставлены. Обратите внимание на то, что они должны точно соответствовать исходным параметрам, с которыми байты транзакции были созданы и подписаны.
  • Для сообщений non-prunable broadcastTransaction ведет себя как прежде, но пользователи должны начинать переходить на prunable сообщения ввиду запланированных ограничений размера и увеличения комиссий.
  • Класс EncryptedData java больше не делает внутренней обработки сжатия, это передается вызывающей стороне чтобы использовать методы шифрования и дешифрования.

Прочие изменения:

  • GetPolls теперь поддерживает дополнительный параметр includeFinished (false по умолчанию).
  • Множественные исправления и улучшения Системы голосования и пользовательского интерфейса Фазирования.
  • Предел крайнего срока транзакции в 1440 минут был удален. Теперь возможно создать транзакцию со сроком до 32767 минут. Это было сделано, потому что во многих случаях использования фазирования требуются чтобы байты транзакции были подготовлены намного ранее, чем произойдет фактическая широковещательная передача транзакции в blockchain.
  • Эта версия при первом запуске выполнит обновление базы данных с полным повторным сканированием. На testnet также произойдет откат к блоку 256935.

12 Версия 1.5.0e

6 апреля, 2015

  • Эта версия является экспериментальной, в ней реализованы Voting System и Phasing. Эта версия является обязательной для обновления на всех узлах testnet, указанный функционал доступен только в testnet.
  • Также возможно запустить эту версию на главной сети, но блок, с которого будут активированы новые функции, еще не был установлен.
  • Новые функции:
    • Voting System / Система голосования.
      • Voting System API:
        • CreatePoll, CastVote, GetPoll, GetPolls, GetPollResult, GetPollVote, GetPollVotes, SearchPolls.
      • Обработка опросов опциональна. Если параметр nxt.processPolls=false (значение по умолчанию - true), то подсчет голосов не будет производиться, и результаты опроса не будут сохранены. Это может использоваться, чтобы уменьшить нагрузку на узлы с меньшей производительностью. Сохранена возможность получить результаты опроса, используя getPollResult, пока требуемое голосование и данные балансов еще не были обрезаны.
      • Независимо от настроек nxt.processPolls голоса к опросам, которые закончились перед последней высотой обрезания (1441 блок по умолчанию) будут удалены и только их итоговые результаты будут сохранены, если обработка включена.
      • Оценка голосов происходит на основе выбранной модели голосования, которая может связана с учетной записью, балансом, балансом актива или балансом валюты, также может быть задан минимальный баланс при котором можно получить доступ к голосованию. Модель голосования задается при создании опроса, однако альтернативная модель подсчета голосов может быть использована при вызове getPollResult API, чтобы вычислить на лету голоса альтернативным методом, пока данные голосования все еще доступны.
      • Голосование многократное, изменение или удаление голосов не возможно.
      • Сбор за создание опроса составляет 10 NXT для опроса с максимум 20 опциями, и дополнительный сбор в 1 NXT за любую дополнительную опцию (максимально допускается до 100 опций).
    • Phasing.
      • Phasing API:
        • ApproveTransaction, GetAccountPhasedTransactions, GetAccountPhasedTransactionCount, GetAssetPhasedTransactions, GetCurrencyPhasedTransactions, GetPhasingPoll, GetPhasingPolls, GetPhasingPollVote, GetPhasingPollVotes, GetVoterPhasedTransactions.
        • Транзакция любого типа может быть осуществлена поэтапно, если добавить параметр phased=true и соответствующий набор параметров фазирования. Поэтапные транзакции принимаются в blockchain сразу (проходя все обычные проверки допустимости), но выполняются только на заданной высоте окончания, если транзакция все еще является допустимой и если требуемый кворум был достигнут.
        • Если на высоте окончания транзакция не подтверждена, или не стала недопустимой, она остается в blockchain но никогда не выполняется, и никакие изменения, которые она произвела не будут подтверждены, а баланс отправителя будет восстановлен, за исключением того, что сбор за транзакцию не будет возмещен.
        • В дополнение к моделям голосования, доступных в опросах, транзакции осуществляемые поэтапно могут использовать whitelist (белый список) учетных записей (максимум 10), которым позволяется голосовать за транзакцию.
        • Это делает возможным голосование за (утверждение) до 10 поэтапных транзакций единичными подтверждениями транзакции. Эта транзакция будет принята в blockchain только если все поэтапные транзакции, которые голосуют за транзакцию, уже находятся в нем.
        • Многократное голосование одним аккаунтом позволено, но не имеет никакого эффекта при подсчете голосов, после первого голосования, повторное голосование от учетной записи игнорируется.
        • Также возможно сделать любую транзакцию поэтапно реализуемой, без необходимости голосования с одобрением. Это может использоваться, чтобы создать транзакции с отложенным исполнением.
        • Плата за раскрытие секрета поддерживается как модель голосования для поэтапных транзакций.
        • Когда используется эта модель голосования, поэтапная транзакция должна включать хеш секрета, выбранный отправителем (100 байт длиной), и одобрение транзакции для неё принимается только если оно включает секрет, который дает этот хеш. Не имеет значения, кто отправитель транзакции одобрения, если whitelist не определен. На данный момент поддерживаются хеш-функции sha256, ripemd160, и sha256, с последующим ripemd160. Коды, которые необходимо указать в качестве параметров доступны из API getConstants.

13 Версия 1.4.18

15 мая, 2015

  • Эта версия исправляет небольшие ошибки. Рекомендуется для обновления всем.
  • Установите тип контента в "text/plain; charset=UTF-8", когда отправляете http запросы узлам. Это важное исправление ошибки, поскольку неправильная кодировка исходящих блоков и транзакций, содержащих некоторые символы Unicode, может остановить их распространение и привести к ветвлениям.

14 Версия 1.4.17

19 апреля, 2015

  • Эта версия является критическим обновлением. Рекомендована всем для обновления.
  • Исправлена проверка допустимости ордера на отмену на бирже активов.
  • Исправлена утечка памяти при обработке неподтвержденных транзакций.

15 Версия 1.4.16

24 февраля, 2015

  • Обновление Jetty до версии 9.2.9 из-за критической ошибки безопасности:

http://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00074.html Никаких изменений в коде клиента не производились, обновлены только jetty библиотеки. Внимание! Перед установкой новой версии обязательно удалите папку lib, содержащую старые библиотеки jetty.

16 Версия 1.4.15

13 февраля, 2015

  • Возможное исправление ошибки недопустимого счетчика CurrencyMint.
  • В описании сделаны кликабельные URL и исправлена потенциальная проблема с возможностью XSS эксплойта.

17 Версия 1.4.14

9 февраля, 2015

  • Добавленная отладочная информация о сбоях транзакций при чеканке (minting) валют.
  • Уменьшенное значение по умолчанию для параметра numberOfForkConfirmations до 2.

18 Версия 1.4.13

9 февраля, 2015

  • Улучшения в работе узлов сети, улучшено журналирование, исправления ошибок.
  • Страница новостей теперь загружается правильно, когда бумажник использует https.
  • Обновления сообщений Nxt-форума выводятся на экран поверх новых тем.
  • Обновление канала выполняется при каждом обновлении страницы новостей.
  • Незначительные исправления в пользовательском интерфейсе.

19 Версия 1.4.12

4 февраля, 2015

  • Улучшенное разрешение ветвлений, позволяет продвигать узлу более сложный блок, чтобы заменить текущий последний блок.
  • При форжинге, не принимается блок узла, со временем попадания после времени следующего попадания

текущего форжащего аккаунта (т.е. предотвращают опережающее выполнение при форжинге).

  • Удалена возможность форжера пропускать его очередь. Даже если с опозданием, блок будет все еще сгенерирован и представлен.
  • Задержка форжинга и представление блоков в 20 секунд, настраивается через

параметр nxt.forgingDelay, чтобы накопить больше транзакций в блоке который форжится. Поступление опережающего блока от узла, однако отменит эту задержку и следующий блок сгенерируется на 3 секунд раньше его, этим можно управлять через параметр nxt.forgingSpeedup.

  • Вышеупомянутые сдвиги времени применяются только к физическому времени генерации блоков и

представление блоков. Метки времени блоков всегда фиксируются алгоритмом форжинга с точностью в 1 секунду, и не могут быть изменены.

  • Улучшено журналирование ошибок узлов сети. Регистрируются, но не помещают в черный список узлы не предоставившие или предоставившие поврежденные JSON ответы.
  • Добавлен пользовательский интерфейс для добавления и помещения в черный список узлов. Помещение в черный список из пользовательского интерфейса возможно только, когда пароль администратора не нужен (отключенный или работающий localhost).
  • Оптимизация базы данных. В отдельные таблицы перемещены открытый ключ аккаунта, отправители транзакций, и форжеры блоков, что приводит к 15%-му сокращению размера базы данных. Это изменение будут выполнены при первом запуске и займут некоторое время. Для сжатия базы данных рекомендуем после первого запуска перезапустить клиент.
  • Улучшения в API форжинга: getForging и stopForging теперь могут использовать для доступа

пароль администратора вместо секретной фразы аккаунта. Они получают соответствующие состояние, или останавливают форжинг, весь текущий форжинг аккаунта. Как и в других API защищенных паролем администратора, пароль не требуется когда сервер API слушает только интерфейс localhost. Функция API getState теперь также возвращает булевскую переменную needsAdminPassword, чтобы указать это.

  • Осуществить это можно используя файл nxt-default.properties текущей версии NRS.
  • Добавлен диалог распределения валюты который вызывается с помощью ссылки из диалогового окна с информацией о транзакциях валюты.

20 Версия 1.4.11

27 января, 2015

  • Исправлена ошибка в проверке транзакций, которая могла повредить загрузку blockchain. По умолчанию (и допустимый минимум) значение для nxt.maxRollback теперь 1441.
  • Ограничен максимальный размер HTTP запроса и ответа к сетевому узлу, чтобы предотвратить потенциальную атаку переполнения памяти.
  • Ctrl-C теперь может остановить работу сервера, без необходимости ожидания окончания начального ресканирования.

21 Версия 1.4.10

25 января, 2015

  • Улучшено отображение статуса скачивания blockchain в пользовательском интерфейсе клиента.
  • Добавлены переводы клиента, изменены состояние из бета-версии в стабильные для следующих языков: Итальянский, Голландский, Украинский.
  • Исправлена ошибка в парсинге байт транзакции, которые могут вызвать ошибку верификации подписи и прекращение форжинга.
  • При загрузке blockchain, требуют более одного подтверждения вилки когда высота блока находится до контрольной точки (в настоящее время это MS блок).
  • Новые вызовы API для управления узлами: addPeer и blacklistPeer. AddPeer добавляет адрес или IP узла, опционально с номером порта, в список известных узлов и будет пытаться подключиться к этим узлам. BlacklistPeer (защищенные паролем) будет добавлять в черный список узлы, для блокировки по умолчанию.
  • Эти API, и некоторые другие, связанные с работой узлов сети, были сгруппированы на новой вкладке Networking на странице тестирования.
  • Обработка портов узлов была улучшена, чтобы позволить различным узлам совместно использовать один и тот же IP-адрес, если они используют различные порты.
  • Чтобы предотвратить перегрузку узла с недействительными адресами узлов, максимальное общее количество известных узлов ограничено параметром nxt.maxNumberOfKnownPeers (по умолчанию 2000).
  • Как только это число будет достигнуто, новые адреса узлов не будут добавляться, а узлы, с которыми связь была больше чем неделю назад, удалятся из списка известных узлов, пока узел имеет достаточно соединений с публичными узлами, а количество известных узлов не уменьшится ниже nxt.minNumberOfKnownPeers (неплатеж 1000).
  • Улучшенная производительность базы данных, за счет хранения объема валюты и резерва за единицу в отдельной таблице.
  • Этот релиз будет выполнять повторное сканирование базы данных при первом запуске.
  • Обновление jetty до версии 9.2.7. Если распаковка происходит поверх предыдущей установки,

вначале удалите полностью папку lib, содержащую старую версию библиотеки.

22 Версия 1.4.9

18 января, 2015

Логика сервера:

  • Защита паролем API отладки. Параметр nxt.enableDebugAPI больше не используется. Вместо этого API отладка, которая позволяют на прямую манипулировать blockchain базой данных, всегда доступна, но теперь защищена паролем, который должен быть установлен в параметре nxt.adminPassword. Пароль не требуется, когда сервер API слушает только интерфейс localhost (по умолчанию). Защита с помощью пароля может быть отключена, установкой nxt.disableAdminPassword=true.
  • Некоторый рефакторинг, чтобы создавать и подписывать транзакции, используя Java API даже при полном отсутствии данных blockchain, при необходимости для MintWorker.
  • Незначительные улучшения в работе узлов сети, запросы addPeers и processBlock теперь выполняются в фоновом режиме.
  • Улучшения решений ситуаций с "вилками". Функция сетевого узла getNextBlocks API больше не ограничивает число блоков и возвратилась к общему размеру полезной нагрузки в 1 МБ, но всегда возвращает 720 блоков если они доступны.

MintWorker:

  • Добавлено свойство nxt.mint.stopOnError, по умолчанию false. Чеканка теперь продолжится, по умолчанию, даже после того, как произошла ошибка когда отсылалась Mint транзакция на сервер.
  • Minting транзакции теперь подписываются локально и отсылаются на сервер используя broadcastTransaction API. Таким образом секретная фраза Minting аккаунта никогда не посылается на сервер, и сервер или связь с ним не должна быть доверенной. Секретная фраза также не логируется ни при каком выводе лог записей.

Пользовательский интерфейс:

  • Добавленный второй ряд блоков информации на основной панели.
  • Уведомления для входящих сообщений.
  • Переделана навигация страницы.
  • Диалог лизинга аккаунта теперь показывает число блоков до истечения договора аренды.
  • Исправлена ссылка названия аккаунта в окне информации о транзакциях.

Переводы интерфейса клиента:

  • Добавлен выбор языка на экране приветствия.
  • Добавлены переводы на нескольких языках для MS.
  • Завершенные переводы: English, Spanish, French, Lithuanian, Portuguese (Brazilian), Russian, Chinese (Simplified), Chinese (Traditional)
  • В процессе тестирования: German, Finnish, Galician, Croatian, Indonesian, Italian, Japanese, Dutch, Slovakian, Portuguese, Serbian (Cyrillic), Serbian (Latin), Ukrainian

23 Версия 1.4.8

11 января, 2015

  • Удаленный некоторые проверки и логика, которые стали ненужными после блока Monetary System.
  • Добавлена контрольная точка в блоке 330000.
  • Различные незначительные исправления в пользовательском интерфейсе
  • Исправления в поиске валют. Исправлена обработка с очень высокой сложностью чеканки (minting).
  • Устранены проблемы с параллелизмом чеканки (minting) Scrypt, теперь можно использовать мультипотоки.
  • Разрешено использование https для представления транзакций чеканки (minting), для этого установите параметр nxt.mint.useHttps=true. Обратите внимание на то, что любой сертификат SSL будет приниматься как допустимый, поэтому система не защитит Вас от атак "man-in-the-middle" при чеканке.
  • Допускается принятие в пул неподтвержденных транзакций, не более одной неподтвержденной транзакции чеканки от учетную запись чеканившей валюту.
  • Улучшения переводов, задокументированных в DEVELOPERS-GUIDE.md.
  • Улучшена проверка клейм (hallmarks) для узлов с множественными адресами. Не помещает в черный список узлы с недопустимыми признаками, а просто рассматривает их как не hallmarked узлы.
  • В Черный список будут попадать все узлы с версиями старее 1.4.
  • Поскольку прошло больше чем 720 блоков после блока MS, узлы более старые чем версия 1.4, находятся теперь на ветвлении, которое не будет разрешено. Для исправления этого необходимо обновить такие узлы до версии 1.4.8, при этом при запуске произойдет удаление и полная загрузка blockchain.

24 Версия 1.4.7.1

10 января, 2015

  • Меню "Monetary System" теперь всегда доступно в пользовательском интерфейсе после блока 330000.
  • Больше никаких изменений по отношению к версии 1.4.7.

25 Версия 1.4.7

6 января, 2015

  • Это обязательное обновление !Все должны обязательно обновиться до версии 1.4.7 или более новой до блока 330000.
  • Шаблоны Сообщений в AccountInfo, введенные с версии 1.4.0e, заблокированы, и не будут активировано в блоке 330000. Это превентивная мера, чтобы избежать атаки отказа сервисов специфическими шаблонами регулярных выражений которые при некоторых условиях могут создавать очень большую нагрузку на CPU. Эта функция возможно будет включена снова в версии 1.5, но уже с предустановленным набором допустимых и безопасных шаблонов регулярных выражений.
  • Множественные незначительные улучшения и исправления пользовательского интерфейса.
  • Свойство nxt.allowedBotHosts теперь принимает диапазон адресов, используя нотацию CIDR.
  • Эта версия вызовет ресканирование при первом запуске, только для testnet.

26 Версия 1.4.6

1 января, 2015

  • Поддержка работы с MS в пользовательском интерфейсе также будет доступна с блока 330000, меню функций MS появится после достижения этого блока.
  • Функционал обмена валют будет активирован и доступен после достижения блока 330000 в blockchain.
  • Рефакторинг HTML UI, index.html разделен на несколько файлов.
  • Добавляемые предложения и трансферы связаны с интерфейсом обмена валюты .
  • Этот выпуск выполнит ресканирование только в testnet, с откатом к блоку 159305.

27 Версия 1.4.5

28 декабря, 2014

  • Monetary System будет активирована начиная с блока 330000. Это hard fork, поэтому всем необходимо обновиться до версии 1.4.5 или более новую, до этого момента.
  • Если вы обновляетесь с версии 1.3.x, прочтите список изменений от версии 1.4.0e или более поздней чтобы ознакомиться с важными изменениями и новыми возможностями, реализованными в версии 1.4.х

28 Версия 1.4.4e

25 декабря, 2014

  • Улучшения и исправления в интерфейсе Monetary System, выплатах дивидендов и лизинга аккаунта.
  • Добавлена функция экспорта/импорта контактов.
  • Ограничивает в обмене валют, подаваемые предложения на продажу и покупку, они не должны превышать общий объем покупки или продажи.
  • В этой версии реализован вызов рескана (только в testnet), удалив блоки после 159306.

29 Версия 1.4.3e

23 декабря, 2014

  • Добавлен параметр availableOnly в функции getBuyOffers и getSellOffers, чтобы задавать возврат только ненулевых предложений и лимитов, по умолчанию - false. Этот параметр будет проигнорирован, в случае когда и валюта и аккаунт заданы в указанном API вызове.
  • Добавлена API функция getExchangesByOffer, чтобы получить выполненные предложения по обмену валют.
  • Не логируются операции обмена с нулевой суммой.
  • Исправлена установка состояния узла. Улучшения в подключении к узлам.
  • Добавлены файлы README.md, DEVELOPERS-GUIDE.md OPERATORS-GUIDE.md, и USERS-GUIDE.md.
  • Добавлен поиск валют по коду, названию, или по ключевым словам описания.
  • Исправлены ошибки в обработке неподтвержденного баланса при обмене валют и удалении валют.
  • Эта версия вызовет рескан, но только в testnet.

30 Версия 1.4.2e

21 декабря, 2014

  • Дополнительные проверки транзакций Monetary System, и исправления в существующих проверок.
  • Позволяют установить другой файл в качестве страницы по умолчанию для сервера API, в nxt.apiWelcomeFile, по умолчанию index.html.
  • Исправлены ошибки в обработке десятичной точки при преобразовании в пользовательском интерфейсе, касающиеся транзакций MS и AE.
  • Исправления ошибок при создании валют и в MintWorker. Диалоговое окно создания было удалено, Вы можете создавать используя утилиты создания валют или вручную опубликовав currencyMint транзакцию на тестовой странице.
  • Исправлена ошибка, в следствии которой пользовательский интерфейс клиента не отвечал после выполнения определенных операций MS.
  • Исправлены дублирующиеся транзакции на панели инструментов UI.
  • Ссылка на таблицу учредителей перемещена из таблицы валют в диалог информации о транзакциях. Другие улучшения пользовательского интерфейса Monetary System.
  • Улучшена работа сети узлов, появилась возможность реализовать отправку блоков и транзакций узлам в фоновом потоке.
  • Эта версия вызовет рескан только в testnet, будут удалены блоки после 159306.

31 Версия 1.4.1e

17 декабря, 2014

Эта версия исправляет ошибки обнаруженные в 1.4.0e.

  • Исправлена ошибка приводящая к неработоспособности Пункта Обмена Валют (Currency Exchange, CE).
  • Исправлена проблема с десятичными знаками у валют.
  • Исправлены мелкие ошибки в проверке транзакций MS.
  • Отображает общее количество альясов аккаунта, на странице альясов.
  • Исправления в интерфейсе функций удаление альясов и выплаты дивидендов.

32 Версия 1.4.0e

17 декабря, 2014

Это экспериментальный выпуск, чтобы протестировать новые основные функции Monetary System. Эти функции будут доступны в testnet, при этом все работающие testnet узлы должны обновиться до этой версии, даже если они не планируют использовать функции MS, иначе они уйдут в ветвлении. Этот выпуск также может работать в основной сети, но не может считаться стабильным для реальных операций в основной сети. Номер блока для запуска Monetary System в основной сети еще не определен.

Новые функции:

  • Транзакции выплаты дивидендов. Эмитент актива может делать выплату дивидендов всем держателям актива, в одной транзакции. Обязательные параметры - высота blockchain, при которой доли держателей актива будут насчитываться (должна быть меньше чем 1440 блоков в прошлом), и сумма, которая будет выплачиваться за 1 долю.
  • Транзакция удаления альяса. Владелец альяса теперь может может удалить его полностью, сделав альяс вновь доступным для регистрации любым пользователем.
  • Шаблоны сообщений в AccountInfo. Владелец аккаунта может устанавливать шаблоны регулярных выражений в AccountInfo этого аккаунта, используя setAccountInfo API. Как только такой шаблон будет установлен, входящие транзакции на этот аккаунт будут приниматься только если они содержат обычное текстовое сообщение, которое соответствует этому шаблону. Синтаксис соответствует спецификации java.util.regex.Pattern.

Изменения API:

  • После блока MS, дополнительный анонс публичного ключа при отправке транзакции аккаунту без публичного ключа становится опциональным.
  • Добавлен булевый (boolean) параметр withMessage в getAccountTransactions и getAccountTransactionIds API, для того чтобы возвращать только те транзакции которые имеют присоединенные сообщения, которые могут быть не зашифрованы или расшифрованы аккаунтом.
  • Добавлены опциональные булевы (boolean) параметры includeLessors, includeAssets, и includeCurrencies для getAccount API. Установите в false когда вам не надо получать эти данные, чтобы повысить производительность getAccount.
  • После блока MS, отправка сообщений, продажа альясов, и передача в лизинг баланса, генезисному аккаунту, будет запрещено.
  • API отладки popOff теперь позволяет вытолкнуть больше, чем максимальное число отката блоков, инициировав полное пересканирование в данном случае.

Внутренние изменения:

  • После блока Monetary System, порядок в котором выполняются транзакции в блоке, будет определяться форжингом блока, вместо ID, по умолчанию являющееся временем поступления в узел форжинга.
  • Улучшения в загрузке blockchain, чтобы предотвратить застревание на неправильном ветвлении. Узлы загрузят блоки пакетами, с не больше чем 719 блоками за один раз от единственного узла, после того, как каждый такой пакет проверят с nxt.numberOfForkConfirmations другие узлы (значение по умолчанию 5) если это будет лучшим ветвлением, перед продолжением, если загруженный пакет имеет не меньше чем 10 блоков.
  • Состояние ресканирования теперь хранится в базе данных, чтобы избежать ситуации когда база данных была оставлена в противоречивом состоянии, когда ресканирование перестало работать или было прервано. Как только ресканирование будет запланировано, оно будет автоматически начато снова при перезапуске, пока оно не завершится успешно.
  • Улучшения в обработке неподтвержденных транзакций.
  • Эта версия вызовет рескан при первом старте.

33 Версия 1.3.5

14 Декабря, 2014

  • Добавлен getDGSTagCount API, getDGSGoodsCount и getDGSPurchaseCount могут использоваться чтобы получить общее количество товара или количества покупок.
  • Добавлен дополнительный параметр в getDGSGoodsPurchases, getDGSGoodsPurchaseCount, getDGSPurchaseCount, getDGSPurchases, чтобы иметь возможность делать запрос только для завершенных покупок. Добавлен параметр withPublicFeedbacksOnly в getDGSPurchaseCount.
  • Вторичная сортировка результатов поиска после сортировки по релевантности, по метке времени, если запрос был для любого продавца, или по имени а затем по метке времени, если для единственного продавца.
  • Улучшенная производительность страницы Marketplace, отображает количество только для товаров на складе.
  • Увеличено значение по умолчанию, для срока доставки покупателю, до 168 часов (1 неделя).
  • Включает полную информацию о пуле в getPeers API если параметр includePeerInfo=true, чтобы избежать необходимость делать отдельный запрос getPeer на каждый узел.
  • cumulativeDifficulty включен в JSON блока.
  • Позволяет транзакции подписанной в signTransaction пропускать проверку допустимости подписываемых байтов транзакции, если добавлен дополнительный параметр validate=false. Это будет полезно при подписании байтов транзакции на машине, на которой не загружен полный blockchain, который обычно предотвращает проверку допустимости.
  • Разрешена отправка сообщений, без указания получателя.
  • Автоматическое добавление в blacklist узлов версии 1.2.0 или более старой.
  • Улучшение пользовательского интерфейса API/test страниц.
  • Изменен nxt-default.properties так чтобы MVCC использовался по умолчанию, чтобы избежать блокировки базы данных и ошибок тайм-аута.
  • Jetty обновлен до версии 9.2.6. Если установку производить путем распаковки архива поверх предыдущей инсталляции, предварительно удалите папку lib, что удалить старую jetty библиотеку.

34 Версия 1.3.4

20 Ноября, 2014

  • Эта версия фокусируется на улучшении Nxt Marketplace (Магазин Цифровых Товаров), добавляя возможности улучшенного обзора и поиска.
  • Реализован полнотекстовый поиск с использованием библиотеки Lucene, с поддержкой H2. Столбцы таблицы, которые на данный момент индексируются: asset.name, asset.description, goods.name, goods.tags, goods.description. Перестроение поискового индекса может быть реализовано путем использования API отладки luceneReindex.
  • Полнотекстовый поисковый запрос поддерживает параметры согласно стандартному синтаксису Lucene, который позволяет использовать логические операторы AND, OR, фразы запросы или маски запросов. Оператор запроса по умолчанию ИЛИ (OR), чтобы сделать И (AND) необходимо явно указать AND между ключевыми словами.
  • Добавлен searchAssets API, который принимает параметр запроса и возвращает активы, имеющие название или описание соответствующее запросу.
  • Добавлен searchDGSGoods API, который принимает параметр запроса и возвращает товар, имеющий имя, теги, или описание соответствующее запросу. Полученные результаты также могут быть ограничены определенным продавцом, только товаром который есть в наличии, или товары содержащих только конкретный тег.
  • getDGSPurchases API теперь принимает необязательный параметр withPublicFeedbacksOnly. Если этот параметр=true, результат включает только покупки с общедоступными отзывами.
  • Добавлен getDGSGoodsPurchases API для получения списка закупок конкретных товаров, необязательно тех, у которых есть публичные отзывы.
  • Добавлен getDGSTags API, возвращает все теги товаров в DGS, отсортированные по количеству товара на складе с данным тегом и общего количества товаров с этой меткой. Принимает необязательный параметр inStockOnly, по умолчанию true, чтобы получить теги только для товаров на складе. У товара используются более трех тегов, теги блинной менее 3 символов и более 20 символов игнорируются, а разбор тегов осуществляется с помощью Lucene StandardAnalyzer.
  • Показывает количество покупок и количество публичных отзывов во всех ответах API возвращающих JSON товара, если параметр includeCounts не является ложным.
  • Включает общее количество Товаров, Продаж, и Тегов в getState API.
  • Добавлены getAccountAssetCount, getAliasCount, getDGSGoodsCount, getDGSGoodsPurchaseCount, getDGSPurchaseCount API, чтобы иметь возможность непосредственно получить соответствующие итоговые счетчики.
  • Для заполнения таблицы тегов в базе данных, blockchain сделает повторное сканирование при первом запуске.
  • Обновлен jetty до версии 9.2.5. Если вы обновляете путем распаковки архива с файлами поверх существующей инсталляции, предварительно удалите папку lib чтобы удалить старые библиотеки jetty.
  • Изменения интерфейса пользователя:
    • Страница Marketplace теперь показывает список тегов/категорий товаров, упорядоченных по количеству товаров в данной категории.
    • Щелчок по тегу возвращает список товаров, имеющих этот тег.
    • Поиск товаров теперь позволяет искать по ключевым словам которые могут располагаться в названии товара, описании или теге.
    • Список товаров также отображает число завершенных покупок, и для товаров с общедоступными отзывами отображает ссылку которая отображает отзывы.

35 Версия 1.3.3

12 ноября, 2014

  • Исправлена ошибка гарантированного баланса в getAccountLessors API.
  • Добавлена функция getAccountBlockCount API возвращающая количество сфорженных блоков аккаунтом.
  • Добавлен параметр includeCounts в функцию getAssets API, для избегания получения ненужных(лишних) данных как то сделки, аккаунты и количества трансферов.
  • Кэшируется баланс аккаунтов hallmarked узлов, чтобы сократить количество вызовов базы данных.
  • Другие незначительные улучшения и исправления ошибок.
  • Исправлена ошибка расшифровки товаров купленных в DGS. Исправлена ошибка отзывов о купленных товарах на DGS. Для повторного заполнения таблицы отзывов, эта версия произведет пересканирование blockchain при первом старте.
  • Добавлен параметр hideDelisted в getDGSGoods API, по умолчанию false. Если он установлен в true, снятые с публикации товары не будут включены в результирующий ответ. Этот параметр будет иметь эффект, если inStockOnly=false, т.к. снятые с публикации товары не находятся на складе.
  • Исправления и улучшения пользовательского интерфейса. Добавлены настройки тем и корпоративная тема
  • Скрыт ввод размера комиссии при отправке NXT в основном режиме, и установлен в минимальный размер комиссии.
  • Улучшен интерфейс страницы http://localhost:7876/test, позволяет выполнять пользовательский вызов API, добавлена подсветка синтаксиса ответа JSON.
  • Добавлен getAccountAssets API запрос, возвращает баланс активов заданного аккаунта. Если в параметре asset заданы данные, будет возвращен балан только для указанного актива. В отличие от getAccount API, этот запрос может также принимать параметр высоты, чтобы возвратить баланс актива с заданной высотой.
  • Добавлен getAssetAccountCount API запрос, возвращает количество аккаунтов владеющих заданным активом, также с опциональной возможностью задавать параметр высоты.
  • Обновление jetty до версии 9.2.4. Если вы устанавливаете путем распаковки файлов поверх старой инсталляции, в начале удалите каталог lib, для удаления старых библиотек jetty.

36 Версия 1.3.2

30 октября, 2014

  • Позволяет ретранслировать транзакций уже в неподтвержденном пуле.
  • Добавлена отладка clearUnconfirmedTransactions API, чтобы вызвать очистку неподтвержденного пула транзакций.
  • Показывают корректные метки времени в истории передачи активов.
  • Пробует установить открытый ключ учетной записи в базы данных транзакций, исправляя ошибку в установке открытого ключа для учетных записей, у которых никогда не было исходящей транзакции.
  • getAccountLessors API теперь возвращает гарантированный баланс каждого арендодателя, с высотой, определенной в дополнительном параметре высоты. Формат возвращенного json был изменен, чтобы позволить добавлять свойство guaranteedBalanceNQT.
  • getPeers теперь принимает дополнительный параметр "состояние", чтобы возвратить только узлы в заданном состоянии. Возможные значения: CONNECTED, NON_CONNECTED, DISCONNECTED. Если указан параметр active=true он имеет приоритет.
  • getBlock теперь принимает дополнительный параметр "timestamp", чтобы возвратить последний блок с заданной метки времени. Параметры к getBlock: "block", "height", "timestamp" обрабатываются в таком порядке очередности, т.е. если и высота и метка времени заданы, высота будет использоваться, а метка времени проигнорируется. Если не заданы никакие параметры, будет возвращен текущий последний блок.
  • getState теперь принимает дополнительный параметр "includeCounts", true по умолчанию. Если установлено в false, количество таблиц базы данных, которые медленной получают данные, не будут включены в ответ.
  • getTrades, getAllTrades, и getAssetTransfers API теперь принимают дополнительный параметр "includeAssetInfo", true по умолчанию. Если установлено в false, имя актива и десятичные числа не будут включены в результат Trade json, и из за отсутствия необходимости получить их - ускоряется обработка запросов.
  • Добавлен getBlocks API, возвращая блоки, упорядоченные по убыванию высоты и с использованием параметров firstIndex, lastIndex для разбиения на страницы. Ограниченно выводом 100 блоков за один раз. Если includeTransactions - true, также включает полный JSON транзакции.
  • Улучшено распределение кэша H2. Если nxt.dbCacheKB не установлен, кэш H2 будет изменяться линейно от 16MB для JVM heap размером 160MB, до 256MB для heap размером 640MB или выше. Это позволит запускать систему на слабых устройствах без необходимости ручного управления и настроек для параметра nxt.dbCacheKB, а также предотвратит чрезмерное использование памяти на устройствах с большим количеством памяти.
  • Отключен SSLv3 протокол когда используется SSL для API.
  • Улучшения в интерфейсе пользователя:
    • Добавлена разбивка на страницы (пагинация) на странице Blocks. Количество отображаемых строк на странице по умолчанию могут быть заданы в настройках клиента.
    • Отображает баланс аккаунта в боковой панели на всех страницах.
    • Улучшены и исправлены страницы торговли активами и истории перемещений активов.
    • Новый дизайн панели управления, и улучшена работа списка последних транзакций.

37 Версия 1.3.1

16 октября, 2014

  • Это - критический bugfix, все использующие версию 1.3.0 должны обновиться.
  • Исправлена ошибка в загрузке транзакции, которая порождала ID транзакции и подписи для некоторых транзакций с недопустимыми значениями ecBlock, изменяя после сохранения и перезагрузки из базы данных.
  • Отчет requestProcessingTime в JSON всех ответов API функций.
  • Задержка загрузки блоков транзакций из базы данных, пока они не понадобятся.

38 Версия 1.2.9

16 октября, 2014

  • Это - критический bugfix, все использующие версию 1.2.8 или более раннюю должны обновиться.
  • После установки 1.2.9, установите свойство nxt.forceValidate=true в nxt.properties и перезапустите, чтобы ревалидацию блоков которые уже в базе данных. После первого запуска установите обратно это свойство в false.
  • Исправлена ошибка в загрузке транзакции, которая порождала ID транзакции и подписи для некоторых транзакций с недопустимыми значениями ecBlock, изменяя после сохранения и перезагрузки из базы данных.

Это все отличия от версии 1.2.8.

39 Версия 1.3.0

14 октября, 2014

Это - первая версия, которая хранит все производные объекты в базе данных, в отличии от предыдущих версий, где данные хранились только в памяти.

Производные объекты это те объекты которые построены на основе уже имеющейся информации в цепочках блоков и сделок - т.е. аккаунты, альясы, активы, товары, покупки, ордера, продажи. Хранение их в базе данных, а не в памяти означает что Биржа Активов и Магазин Цифровых Товаров могут свободно расширяться и увеличивать число активов, ордеров и товаров, больше не требуя увеличения объема используемой памяти для каждого узла.

Использование стандартных таблиц SQL базы данных, для хранения этих данных, также позволяет делать намного более сложные запросы и позволяет третьим сторонам создавать и выполнять пользовательские запросы с использованием этих таблиц непосредственно, абсолютно не завися от NRS http API.

Хранение состояний всех производных объектов с текущей высоты, плюс их предыдущее состояние на высоте до 1440 блоков назад, дает возможность полностью избавить от необходимости пересканирования blockchain при запуске, и при ветвлении.

При обновлении с версии 1.2.8 и более старых, эта версия инициирует создание таблиц производных объектов, что на быстрой машине занимает приблизительно 4 минуты, но может занять больше времени в зависимости от Ваших аппаратных средств. Размер базы данных во время процесса пересканирования снова вырастет, но после того как процесс завершится, база данных должна опять уменьшиться до размера приблизительно 550 Мбайтам.

При последующих перезапусках не будет происходить пересканирование, и время запуска теперь уменьшено до нескольких секунд. Также не будет производиться пересканирование во времени выполнения при появлении новых блоков .

Таблицы производного объекта хранят небольшой объем, обрезая данные таким образом, чтобы хранить только те записи, которые позволяют откатиться на 1440 блоков назад. Если Вы хотите хранить и запрашивать информацию из более широкого диапазона, вплоть до блока с высотой 0, это "обрезание" может быть отключено, путем установки параметра nxt.trimDerivedTables=false (значение по умолчанию - true) в файле nxt.properties. После изменения этого параметра восстановление данных в таблицы может быть инициировано путем использования нового API запроса для сканирования, который представлен ниже.

Количество откатываемых блоков по умолчанию может быть увеличено, при этом продолжать поддерживать "обрезание", для этого необходимо установить в параметре nxt.maxRollback большее значение (по умолчанию, и минимально возможное, 1440). Это должно обеспечить компромисс для тех, кто хочет сохранить историю из более чем 1440 блоков по умолчанию, и если вы хотите избежать штраф по производительности никогда не обрезайте таблицы производных объектов.

Чтобы сделать доступным увеличение количества обращений к базе, максимальное число соединений с базой данных по умолчанию было увеличено до nxt.maxDbConnections=30, и тайм-аут блокировки увеличился до nxt.dbDefaultLockTimeout=60 в nxt-default.properties.

Более медленные машины и общественные узлы с интенсивным трафиком могут испытать тайм-ауты блокировки базы данных с настройками по умолчанию. Чтобы это предотвратить, может быть включен режим MVCC, добавьте MVCC=TRUE к jdbc URL в nxt.properties. MVCC по умолчанию отключен, потому что при обеспечении более высокого параллелизма при множественных одновременных соединениях, хоть и предотвращает тайм-ауты, он заметно медленнее в целом и не настолько хорошо протестирован.

Чтобы помочь с отладкой потенциальных ошибок в этой версии, значение уровня журналирования по умолчанию было установлено в nxt.level=FINE в параметре logging-default.properties, что приведет к росту записей данных в журнал.


Изменения API:

  • существующий API теперь позволяют дополнительно делать разбиение на страницы, используя firstIndex, lastIndex параметры:
    • getAccountBlockIds, getAccountCurrentAskOrderIds, getAccountCurrentBidOrderIds, getAliases, getAllAssets, getAllTrades, getAskOrderIds, getBidOrderIds, getAskOrders, getBidOrders, getAssetIds, getAssetsByIssuer.
  • параметр limit больше не принимается getAskOrderIds, getBidOrderIds, getAskOrders и getBidOrders API, поскольку теперь параметры firstIndex/lastIndex используются вместо этого для разбиения на страницы.
  • getAccountBlockIds в дополнение к возможности разбиения на страницы теперь возвращает блоки в порядке убывания, поскольку это более удобно и полезно когда новейшие блоки отображаются на верху.
  • getTrades теперь принимает опционально дополнительный параметр аккаунт, в дополнение к активу, что позволяет получать торговую историю для определенного аккаунта, для всех активов или только для определенного актива.
  • getUnconfirmedTransactions и getUnconfirmedTransactionIds теперь также принимают аккаунт в формате RS.
  • Trade JSON теперь включает идентификаторы учетной записи покупателя и продавца, высоту на которой торговля произошла, а также имя актива, высоты на которых были заявки спроса и предложения была приняты в blockchain.
  • Asset JSON теперь включает общее количество передач актива и число учетных записей, содержащих актив.
  • parseTransaction теперь не только возвращает ошибку при попытке проанализировать недопустимые байты транзакции или JSON, но и добавляет поле validate=false, плюс фактическое сообщение об ошибке, в дополнение к проанализированной транзакции JSON.
  • getState больше не включает общий эффективный баланс.

Новые API запросы:

  • getAccountBlocks - похож на getAccountBlockIds, но возвращает полный JSON блок. Если параметр includeTransactions - true, также включает JSON транзакции.
  • getAccountCurrentAskOrders и getAccountCurrentBidOrders - как getAccountCurrentAskOrderIds и getAccountCurrentBidOrderIds, но возвращает полный JSON ордера.
  • getAllOpenAskOrders и getAllOpenBidOrders теперь заменяют getAllOpenOrders, но возвращают ордера спроса и ордера предложения соответственно и поддерживают firstIndex/lastIndex разбиение на страницы.
  • getAssetTransfers - получает информацию о трансфере актива, учетной записи или обоих, отсортированных по убыванием высоты.
  • getAssetAccounts - принимает в виде параметр актив и возвращает все аккаунты, содержащие этот актив с текущей высотой и количество актива, которым каждый аккаунт владеет, отсортированные по убыванию количества актива. Опционально может принимать дополнительный параметр высоты, чтобы иметь возможность получить держателей актива с предыдущей высоты blockchain.
  • getAccountLessors - возвращает аккаунты, которые сдали в аренду свой баланс указанному аккаунту, опционально может принимать дополнительный параметр высоты, чтобы запрашивать данные предыдущие заданной высоте blockchain.
  • longConvert - утилита API, чтобы преобразовать между signed long ids используемые в базе данных и unsigned long ids представляемые как строки. Принимает идентификатор в любом формате и возвращает обе версии - без знака и со знаком.
  • getECBlock - возвращает ecBlockId и ecBlockHeight, опционально может получать метку времени, если не задано-текущее время.

Новые запросы API отладки:

  • следующие запросы используются только для целей отладки и не являются необходимыми для ежедневного использования. По умолчанию они отключены, установите в конфигурации параметр nxt.enableDebugAPI=true, чтобы включить их. Не включайте эти функции на общедоступном узле, где API доступен для любого.
    • fullReset - удаляют и повторно загружает полный blockchain.
    • popOff - принимает параметр numBlocks или высоту, и выталкивает это количество блоков или возвращает к заданной высоте. Если "обрезка" таблиц включена (по умолчанию), в крайнем случае 1440 блока будут вытолкнуты. Таблицы производных объектов откатываются к заданной высоты и блоки и транзакции после этой высоты будут удалены.
    • scan - принимает параметр numBlocks или высоту, откатывает таблицы производного объекта к заданной высоте и восстанавливает их, повторно сканируя существующий blockchain от заданной высоты. Не удаляет блоки или транзакции из blockchain, в отличие от запроса popOff. Запрос на пересканирование больше чем 1440 блоков когда табличная обрезка включена, сделает полное пересканирование, стартующее с высоты 0. При установке параметра в true, также повторно проверит подписи, подтверждения блоков и транзакций во время пересканирования.

DbShellServlet: Доступ к базе данных H2 из командной строки во времени выполнения теперь возможен по адресу: http://localhost:7876/dbshell Эта страница использует инструменты работы с H2, для возможности делать запросы к базе данных во времени выполнения непосредственно из браузера, без необходимости включать автоматический режим сервера в jdbc URL. Этот сервлет включен, только если параметр nxt.enableDebugAPI=true, при этом очень не рекомендуется включать эту возможность на публичном узле, поскольку эта функциональность позволяет получить полный доступ для чтения и записи в базу данных.

Повышение удобства пользования http://localhost:7876/test - страницы доступа к API.

Пакетные изменения: Для предотвращения непонимание, почему хэши JAR-файлов никогда не воспроизводимые, файлы класса в настоящее время распаковываются в подкаталог классов после компиляции, вместо того, чтобы упаковываться в nxt.jar файл. В run.sh и run.bat скрипты были изменены, чтобы включить путь к этому каталогу к классам, а не на nxt.jar файла. Те, кто по-прежнему предпочитают создавать nxt.jar файл, могут легко сделать с помощью сценария входящего в jar.sh, изменив путь к классам. Собранный nxt.jar файл все равно будет включен нескольких последующих релизах, с помощью кода перезагрузки при обновлении с более ранних версий, и только для этих целей.

Прочие внутренние изменения:

  • Везде, идентификаторы объектов, которые раньше были Longs, теперь primitive longs, поскольку их использование в качестве ключей HashMap больше не является необходимым.
  • Сохранение и повторная обработка неподтвержденных транзакций после отказа разрешения ветвления
  • Улучшено распространение неподтвержденных транзакций.
  • Множественные незначительные улучшения и оптимизация на основанная на профилировании результатов.
  • Объединение в коде для того чтобы чтобы включить будущие переменные комиссии на основе типа транзакции и размера транзакции.
  • Обновленный Jetty до версии 9.2.3.
  • Добавлена опция для отключения ретрансляции транзакций, установите параметр nxt.enableTransactionRebroadcasting в false (значение по умолчанию true).

Testnet: Этот выпуск сбросит testnet blockchain назад к высоте 77431. Узлы Testnet, остающиеся на 1.2.8 уже находятся на различных ветвлениях.

Нет никакой крайней необходимости для обновления в основной сети до версии 1.3.0., т.к. 1.2.8 и 1.3.0 версии могут сосуществовать в сети без негативных последствий включая ветвление. Однако стоит помнить, что изменения локальной базы данных не обратимы, и если Вы обновитесь до 1.3.0 и решите вернуться к 1.2.8, то Вы должны будете удалить папку nxt_db и повторно загрузить blockchain.

40 Версия 1.2.8

3 сентября, 2014

Изменения API:

  • Параметр timestamp в getAccountTransactionIds и getAccountTransactions теперь относится к временной метке блока, в который транзакция была включена, а не самой транзакции. Транзакции сортируются в порядке убывания метки блока и идентификатора транзакции, вместо метки транзакции. Это сделано для того, чтобы сортировка соответствовала порядку, в котором обрабатываются транзакции, и поэтому транзакции с более ранними временными метками могут появиться в blockchain после транзакции с более поздней меткой времени обработки, тем самым будут непреднамеренно пропущены во время навигации по списку транзакций.
  • Запрос getAccountTransactionIds и getAccountTransactions теперь опционально принимает параметр numberOfConfirmations, который может использоваться, чтобы получить только транзакции у которых как минимум numberOfConfirmations число подтверждений.
  • Запрос getBlock API теперь опционально принимает параметр высота вместо блока, чтобы получить блок указанной высоты. Если и блок и высота заданы, параметр высоты игнорируется.
  • Запрос getBlock API теперь принимает параметр includeTransactions, если установлено в истину, возвращается полный JSON транзакции вместо только идентификатора транзакции.

Больше нет никаких отличий между 1.2.7 и 1.2.8, таким образом, те, кто полагается на "старое" поведение API, могут продолжать использовать 1.2.7 и сейчас.

Изменения пользовательского интерфейса:

  • Добавлена опция для продавцов чтобы определить специально отформатированное сообщение, которое требуется для добавления к акту платежа или переуступке активов.
  • Чтобы активировать эту возможность, вы должны установить свое описание информации счета в следующем формате: #merchant: [0-9] + #
  • Этот пример позволит принимать только числовое сообщение.
  • Если сообщение должно быть заданной длины, используйте такое решение: #merchant:[a-zA-Z0-9]{4,8}#
  • Этот формат позволит создавать сообщения, у которых длина от 4 до 8 символов, и содержащих только алфавитно-цифровые символы.
  • Обратите внимание на то, что регулярные выражения (regex) чувствительны к регистру.
  • Устранена проблема с полем открытого ключа, не отображающимся при использовании контакта в поле получателя.

41 Версия 1.2.7

26 Августа, 2014

  • Больше не позволяется создание pre-DGS блоков транзакций, и игнорируют такие транзакции полученные от узлов с NRS старых версий.
  • Улучшения обработки исключений, проверки транзакций, регистрации ошибок.
  • Обновлен файл run.bat. В черный список помещаются узлы которые на данный момент не доступны.
  • Препятствуют тому, чтобы сервер запустился если какая либо из задач запуска не выполненна.
  • Добавленный дополнительный "активный" параметр к API запросу getPeers. Если параметр = true, тогда возвращаются только активные узлы (те которые в состоянии CONNECTED или DISCONNECTED).
  • Избегает ненужных запросов DNS.
  • Больше не обрабатывается и не возвращается параметр "комментарий" в Переуступке активов.

42 Версия 1.2.6

17 Августа, 2014

  • Сохранение неподтвержденных транзакций во время пересканирования вместо того, чтобы полагаться на способность получить их снова от узлов сети.
  • Генерация блоков продолжится в случае, когда она приводит к сбою из-за недопустимой транзакции. Предотвращены отказы генерации блоков из-за изменений транзакции до минимального размера .
  • Игнорируется вес узла при выборе случайного узла, когда защита клеймом (hallmark) отключена (по умолчанию она включена). Когда защита клеймом включена, количество nxt.maxNumberOfConnectedPublicPeers теперь основывается только на защищенных узлах, т.е. узел продолжит пытаться соединиться с большим количеством узлов, пока это не будет достигнуто соединение с теми узлами, с которым взаимодействует много защищенных узлов.
  • Добавлен запрос узлам сети addPeers . После отправления getPeers запроса и обработки ответа, узел также отправит другому узлу все свои адреса узлов, у которого отсутствуют эти узлы в наборе узлов с которым он связан, чтобы улучшить распространение равноправных адресов через сеть.
  • Незначительные исправления.

43 Версия 1.2.5

13 Август, 2014

  • Добавлено gzip сжатие данных узлов сети. Этот параметр включен по умолчанию и сделает загрузку blockchain быстрее, но в случае, если это вызывает дополнительную нагрузку на Ваш общедоступный узел, может быть отключить его, установив nxt.enablePeerServerGZIPFilter=false в nxt.properties.
  • Доступна служба gzip сжатия статических ресурсов (HTML, javascript, css файлы) Сервера API. Это ускоряет загрузку UI кошелька с удаленных серверов. Сжатые .gz файлы включены в пакет установки.
  • Поддержка gzip сжатия ответов от API Сервера, данная функция отключена по умолчанию. Это будет полезно при выполнении сервера на удаленной машине, для онлайн кошельков, и поставщики услуг, чтобы включить эту функцию установите nxt.enableAPIServerGZIPFilter = true в nxt.properties.
  • Исправлена ошибку пересканирования на стороне клиента, которая отображала устаревшие данные в UI.

44 Версия 1.2.4

11 августа, 2014

  • Исправлена важная ошибка касающаяся произвольных сообщений и сделок по переуступки активов, перед блоком DGS.
  • Небольшие исправления в интерфейсе пользователя.
  • Обновление jquery до версии 2.1.1 и bootstrap до версии 3.2.0.

45 Версия 1.2.3

  • Все должны обновиться до версии 1.2.3 до блока 213000.
  • Тем пользователям, которые обновляются с предыдущей стабильной версии 1.1.6 или более ранней, очень рекомендуется ознакомиться с важными изменениями для версий 1.2.0e, 1.2.1e и 1.2.2e, которые были введены в линейке версий 1.2.х.
  • Исправление незначительных ошибок.
  • ParseTransaction, signTransaction, и broadcastTransaction API теперь могут принимать транзакцию в формате JSON вместо байтов транзакции.
  • Блок запуска DGS, перенесен с 210000 на 213000.

46 Версия 1.2.2e

Эта версия выпущена только для тестирования, т.е. работы с тестовой сетью. Исходный код не публикуется. Журнал изменений:

  • Этот выпуск - все еще тестовая версия, предназначенная для работы с testnet. Пожалуйста, обновите свои testnet узлы.
  • Исправления в операционном управлении версиями приложения и проверке версий.
  • Добавленный encrypt-to-self тип вложений сообщения. Любая транзакция может содержать такое вложение, предназначенное для использования в приватных примечаниях, которые только может прочитать отправитель транзакции. Эта функция еще не поддерживается в GUI.
  • Добавлено свойство nxt.isOffline. Если установлено в true в nxt.properties, работа с узлами сети не начнется, никакие узлы не будут загружены в базу данных, и какие либо исходящие соединения не будут созданы.

47 Версия 1.2.1e

Этот выпуск все еще считается экспериментальным, но он также работать на основной сети. Запуск DGS установлен на блок 210000 для основной сети. Стабильная версия будет выпущена до этого блока, но все биржи и веб-сайты должны уже начать тестировать работу с версией 1.2.1e, т.к. обновление до стабильной версии 1.2.2 будет обязательно перед блоком 210000.

  • Множественные исправления ошибок в DGS и проверке допустимости транзакций Передачи Алиаса (Alias Transfer). Ограничение транзакций для некоторых типов псевдонимов и DGS до одной за псевдоним / DGS покупку за блок.
  • Транзакции по продаже алиасов теперь используют пустого получателя вместо генезисного, когда продажа алиаса открыта для любого покупателя.Транзакция покупки алиаса использует параметр amountNQT вместо priceNQT, поскольку в любом случае цена хранится в поле суммы .
  • Запрос GetDGSGoods теперь всегда пропускает вычеркнутые из списка товары.
  • Улучшенная обработка адресов IPv6.
  • Улучшен интерфейс http://localhost:7876/test, добавлена поддержка тегирования API запросов во множественных категориях. Все http API запросы теперь классифицированы под отдельными вкладками для более простой навигации
  • Уменьшено время запуска, за счет параллельного запуска инициализации загруженных узлов, определения адресов, и начального сканирования blockchain.
  • Чтобы улучшить производительность базы данных, у транзакций, у которых нет получателя, теперь null вместо идентификатора генезисного аккаунта как получатель, в таблице транзакций. У таких транзакций также не будет поля получателя в их JSON.
  • Добавленная поддержка разбиения на страницы к API getAccountTransactionIds. Результаты теперь возвращаются отсортированные по метке времени в порядке убывания.
  • Добавленный API getAccountTransactions также возвращает json полной транзакции.
  • Обновление информации о узлах, для уже подключенных узлов, каждый час.
  • Вызов setReuseAddress(true) для всех jetty ServerConnectors.
  • Рефакторинг обработки присоединяемой транзакции. Добавлена поддержка версий транзакции и глобальных опций. Транзакции переключатся на версию 1 в блоке DGS
  • Добавлены вложения Сообщения (Message) и Зашифрованные Сообщения (EncryptedMessage) которые могут быть добавлены к транзакциям любого типа, и могут включать текст или данные. Все API, которые создают новую транзакцию теперь принимают дополнительные параметры позволяющие присоединять Message или EncryptedMessage (или оба). Это избавляет от необходимости создания новых типов транзакции для зашифрованных сообщений или платежей с сообщениями.
  • После эпохального блока DGS у транзакций передачи активов больше не будет поля "комментарий". Переключайтесь на использование присоединяемых простых текстовых "сообщений" вместо этого.
  • Добавлено управление версиями вложений в транзакции. У транзакций версии 1 и более новых, будет также поле для версии вложений, которое позволяет в будущем изменять только один присоединяемый тип, например, добавлять поле истечения срока актива, без необходимости добавлять новый тип транзакции
  • Добавлено вложение PublicKeyAnnouncement. Оно будут принято после блока DGS, но реализовано после блока 215000. После этого блока транзакции с учетной записью получателя, у которой нет открытого ключа, чтобы использовать такое вложение, потребуются объявить и установить открытый ключ получателя. Чтобы добавить PublicKeyAnnouncement, просто добавьте "recipientPublicKey" параметр с hex-encoded строкой с открытым ключом при отправке первой транзакции в ту учетную запись. Это безопасно (но бесполезно) если продолжать добавлять тот же самый recipientPublicKey для дальнейших сделок c тем же самым счетом.Но попытка установить различные открытые ключи для счета, у которого уже есть открытый ключ, приведет к отклонению транзакции.
  • Запрос getAccountId может использоваться, для получения открытого ключа для секретной фразы (даже когда эта информация еще не объявлена в blockchain).
  • Добавленная первая часть Экономической Кластеризации (Economic Clustering) - обнаружение ветвления. После блока DGS каждая транзакция будет включать ссылку на последний blockId. На данный момент это используется только для того, чтобы обнаружить ветвления, и транзакции, относящиеся к ветвлению, все еще не отклонены.
  • Следующий шаг в Прозрачном Форжинге (Transparent Forging) будет активирован с блока 215000: учетные записи, которые пропускают свою очередь форжинга, не будут в состоянии форжить в течение следующего одного часа.
  • Обновлен jetty до версии 9.2.2 и bouncycastle до версии 1.51.
  • Эта версия вызовет сброс testnet, удалив блоки и транзакции после блока 117907.
  • Изменения клиента:
    • Редизайн страницы входа в систему.
    • Многоязычный интерфейс. Некоторые переводы неполные и будут дорабатываться по мере тестирования.
    • Большинство форм теперь позволяет Вам добавлять зашифрованное или публичное сообщение к ним.
    • Добавленная поддержка анонса открытого ключа.
    • Проверка длины секретной фразы.
    • Автоматически активируемые опции при наступлении блока DGS.
    • Исправлений несколько ошибок DGS.

48 Версия 1.2.0e

29 июня, 2014

  • Эта версия исключительно для работы в тестовой сети ! Установите nxt.isTestnet=true в файле nxt.properties.
  • Новые функции:
    • Магазин цифровых товаров (Digital goods store, DGS).
      • Новые http API вызовы для создания транзакций: dgsListing, dgsDelisting, dgsPriceChange, dgsQuantityChange, dgsPurchase, dgsDelivery, dgsRefund, dgsFeedback
      • Новые http API вызовы для запросов к DGS: getDGSGood, getDGSGoods, getDGSPurchase, getDGSPurchases, getDGSPendingPurchases
      • Обмен товарами и сообщениями между покупателем и продавцом шифруются при помощи AES, также используется gzip сжатие перед шифрованием. Максимально допустимый размер цифрового товара не должен превышать 10240 байта после компрессии и шифрования. Надо понимать, что продажа "тяжелого" контента типа видео файлов, происходит через "продажу ссылки на скачивание", которая гарантированно поместится в 10240 байт, а не через передачу видео файла через DGS
    • Трансфер альясов.
      • Новые http API вызовы: sellAlias, buyAlias
      • Продажа альяса может быть ограничена определенным покупателем или открыта для любого покупателя. Продажа альяса с ценой 0 рассматривается как непосредственная передача от одного аккаунта другому, и не требует отдельной транзакции для покупки альяса. Чтобы изменить запрос цены, создайте новую транзакцию sellAlias. Чтобы отменить продажу, создайте новую транзакцию sellAlias для себя с ценой 0
      • Транзакция покупки альяса, может только быть опубликована, только если псевдоним уже продается. В настоящее время невозможно просто сделать ставку на альясы, которые не продаются.
    • Зашифрованные сообщения.
      • Шифрование сообщений при помощи AES теперь поддерживается на уровне ядра, таким образом, больше нет необходимости использовать внешние механизмы шифрования произвольных сообщений. Используйте произвольные сообщения только для передачи простого текста, зашифрованные сообщения для конфиденциального обмена сообщениями.
      • Новые API: sendEncryptedNote и readEncryptedNote. Максимальная длинна сообщения - 1000 байт, после сжатия и шифрования.
      • Новые http API вызовы: encryptTo/decryptFrom может использоваться для шифрования и дешифрования произвольных сообщений передаваемых к/от аккаунта. Но они делают только шифрование и дешифрование, но не отправляют сообщения между учетными записями.
  • Новый http запрос rsConvert для конвертации номеров аккаунта в формат RS и обратно.
  • Новый API getBlockId чтобы получить BlockID для заданной высоты блока.
  • Улучшенное журналирование, для случаев, когда Nxt встроен как библиотека.
  • Незначительные улучшения: getState и getBlockchainStatus теперь также отображает имя приложения, блок JSON также отображает generatorPublickKey, getAccountId также принимает publicKey как параметр.
  • Обновление jetty до версии 9.2.1.
  • Обновления клиента:
    • Добавлен интерфейс Магазина Цифровых Товаров (Digital Goods Store UI).
    • Добавлен интерфейс Торговли Альясами (Alias Trading UI).
    • Шифрованные сообщения.
  • Номера аккаунтов поддерживаются только в формате RS. Биржи и сервисы должны перейти в формат RS КАК МОЖНО СКОРЕЕ.
  • Функции декодирования токенов.
  • По умолчанию комиссия (Fee) / дедлайн теперь скрыты, отображаются при помощи дополнительного переключателя.
  • Показывает предупреждающее сообщение, если пользователь находится в ветвлении (если его учетная запись генерировала, по крайней мере, последние 10 блоков).
  • Несколько дополнительных параметров настройки (запомнить пароль по умолчанию, 12/24 формат отображении времени).

49 Версия 1.1.6

27 июня, 2014

  • Исправлена логическая ошибка в обработке неподтвержденных транзакций и обнаружении операций двойных расходов.
  • Улучшена производительность запроса getTransactions.
  • Добавлен новый параметр nxt.debugLogUnconfirmed (по умолчанию = false), для управления логированием отладки неподтвержденных остатков в аккаунте.
  • Улучшен пользовательский интерфейс тестового API сервлета, патч представленн Holger Drewes.

50 Версия 1.1.5

20 июня, 2014

  • Исправлен особый случай в вычислении неподтвержденного баланса. Добавлены дополнительные проверки баланса счетов.

51 Версия 1.1.4

  • http API для работы с альясами почищен. Теперь существует только 2 API запроса, позволяющих получить информацию о альясах:

getAlias
параметры: на выбор "aliasName" (имя альяса) или "alias" (id альяса)
ответ: полный JSON альяса

getAliases
параметры: "timestamp" (опционально метка времени) и "account" (id аккаунта, обязательно)
ответ: список альясов (полный JSON) принадлежащих аккаунту, опционально фильтруется по метке времени.

  • Старые getAliasId, getAliasIds, getAliasURI и listAccountAliases были удалены, поскольку они избыточны, а новые запросы возвращают всю необходимую информацию.
  • assignAlias был переименован в setAlias, с "aliasName" и "aliasURI" параметрами.
  • Удален getAssetsByName API.
  • API функция getAssetsByIssuer теперь принимает теперь принимает многозначный параметр "account" и возвращает и возвращает список списков активов, выпущенных указанными аккаунтами.
  • Для логирования используется фреймворк slf4j. Спасибо ScripterRon за адаптацию нашей системы логирования для использования slf4j! Теперь логирование может настраиваться в conf/logging.properties, смотри conf/logging-default.properties для доступных параметров и их значений по умолчанию и для создания нового conf/logging.properties файла с любыми пользовательскими настройками, при необходимости.
  • Незначительные улучшения DebugTrace - журнал событий Arbitrary Messages, отправителя и получателя, и сгенерированного id блока.
  • Улучшения проверки допустимости транзакции и логики пересканирования.
  • Обновления клиента:
    • Больше не отображается полный список активов. Теперь вы должны добавлять активы в ручную или через идентификатор актива или через идентификатор аккаунта выпустившего актив.
    • Мгновенный поиск активов в закладках (не требуется нажимать enter).

52 Версия 1.1.3

  • Отмена дескриптора начального присвоения псевдонима, чтобы минимизировать ресканирования. Очистка карты неподтвержденных транзакций не до, а после ресканирования.
  • Добавлен параметр nxt.forceValidate для разрешения ре-валидации блоков и транзакций при запуске.
  • Пользовательский Интерфейс Клиента:
    • Кодировка аккаунтов в формате reed solomon используется по умолчанию.
    • Поиск по номеру аккаунта в кодировке reed solomon.
    • Отдельным цветом фона выделены активы пользователя в панели активов.
    • Отдельным цветом фона выделены выпущенные активы в окне аккаунта.
    • URL автоссылки в описании актива и данных альяса.
    • Отображает подсказку при логине, если обнаружены обновления NRS.
    • Добавлена настройка предупреждения максимального количества передаваемых активов.
    • Добавлено меню помощи (help).
    • Корректные суммы на странице своих активов (my assets).
    • Поиск альясов на странице альясов.
    • Добавлены глобальные неподтвержденные транзакции на странице транзакций.
    • Отображает количество актива, доступного для передачи в окне передачи активов.

53 Версия 1.1.2

  • Решена проблема появления ветвления, приводящая к слишком частым сканированиям.

54 Версия 1.1.1

  • Исправлена ​​проблема появления форка. Надеюсь.
  • Включен guaranteedBalanceNQT (1440 подтверждений) в getAccount JSON.
  • UI Клиента:
    • Исправлено ​​отображение AE в Safari.
    • Удалена часть логики для пре-NQT периода. А.Е. отображается по умолчанию.

55 Версия 1.1.0

  • Вложения (аттачи) теперь сохранены в базе данных как байтовые массивы вместо serializedobjects. В связи с этим, будет иметь место очередная реструктуризация базы данных после первого запуска этой версии, что займет некоторое время и дисковое пространство, но после завершения работы база данных уменьшит еще сильнее (приблизительно 25%).
  • В blockchain добавлена контрольная точка NQT_BLOCK.
  • Полагание на частично-канонические подписи будут запущены после NQT_BLOCK, чтобы обнаруживать атаки податливости подписи, удалена логика устанавливающая уникальность хэша транзакции (за исключением подписей). Только полный хэш (включая подпись) теперь уникальны. Поэтому свойство "хеш" было удалено из JSON транзакций, теперь возвращается только "полный хэш".
  • Используйте полный хэш вместо идентификатора для зависимых транзакций. Существующие транзакции в базе данных будут переработаны в рамках преобразования данных.
  • Зависимые транзакции могут ссылаться на транзакции которые были созданы не более 60 дней назад. Это ограничение распространяется на все зависимые транзакции в цепи транзакций, т.е. ограничение накладывается на все транзакций в одной последовательной цепочке. Кроме того, длина таких цепочек ограничивается 10 транзакциями.
  • Убраны некоторые NotYetEnabled контрольные точки, которые больше не актуальны. Удалено максимально много устаревшей логики, которая связанна с количествами исчисляемые в NXT , так как все новые транзакции будут созданы только в формате NQT.
  • Расширен черный список узлов, которые вызывают RuntimeExceptions.
  • Сделки, возвращаемые API функцией getTrades теперь идут обратном порядке, сначала идут самые новые.
  • Обновления клиента:
    • Неподтвержденные транзакции отображаются на рабочей панели сразу.
    • Показ соответствующего сообщения во время ресканирования blockchain.
    • История торгов ограничена 50 последними сделками.
    • Отображаются уведомления о том что активы покупаются/продаются.

56 Версия 1.0.3

11 мая, 2014

  • Account.getPublicKey() должен вернуть null если ключ еще не попал в блок. Связанная с загрузкой blockchain ошибка "залипнет" до 133933 блока.
  • Увеличен таймаут, установленный по умолчанию в nxt-default.properties.
  • Интерфейс пользователя:
    • Исправлена ошибка парсинга NQT.
    • Устраненная проблема полосы прокрутки в бирже активов

57 Версия 1.0.2

10 мая, 2014

  • Добавлена API функция getUnconfirmedTransactions , которая возвращает полный JSON объектов для всех неподтвержденных транзакций, опционально фильтруется в параметрах аккаунта.
  • Добавлен скрипт win-compile.sh для компиляции в Windows.
  • GetForging также показывает "remaining" (ожидаемое) время до генерации блока.
  • Очистка статуса генератора при ре-сканировании, вероятно, это было причиной повторения проблемы при сканировании.
  • Обновление клиента:
    • Форжинг автоматически не стартует, когда загружается blockchain.
    • Ожидает окончания загрузки blockchain прежде чем предоставить доступ к формам.
    • Исправление в нотификации обновлений.
    • Страницы блоков и узлов сделаны авто обновляемыми.
    • Отображает buy/sell (покупка/продажа) оповещение для активов.

58 Версия 1.0.1

9 мая, 2014

  • Добавлена API функция getAssetsByIssuer для получения всех активов принадлежащих указанному аккаунту.
  • Добавлены API функции getAskOrders и getBidOrders, возвращающие полный JSON объектов.
  • Добавлен BlockchainProcessor.getLastBlockchainFeederHeight(), чтобы помочь определять статус загрузки. Обратите внимание на то, что это возможно только когда действующий узел также поддерживает эту функцию, т.е. имеет эту версию клиента (1.0.1 или более новую).
  • Добавлено BlockchainProcessor.isScanning() для проверки того происходит ли в данный момент ре-сканирование Blockchain.
  • Добавлен API getBlockchainStatus , содержащий вышеупомянутый статус, использование этой функции более эффективно чем API getState.
  • Расширен DebugTrace чтобы регистрировать договор аренды аккаунта, начало и окончание аренды, гарантируемого остатки для каждого блока, в файле nxt-trace.csv
  • Добавленная поддержка на стороне сервера кодирования Reed-Solomon номеров аккаунтов, благодаря ChuckOne, который преобразовал javascript версию в java.

Все вызовы API, которые принимают номера аккаунтов как параметр, могут теперь использовать или идентификатор аккаунта или адреса Reed-Solomon. Возвращаемые данные JSON содержащие номера аккаунтов теперь также могут использовать формат адресов Reed-Solomon.

  • Добавлены методы Crypto.getPrivateKey() и Crypto.curve(). Добавлена библиотека Bouncy Castle, чтобы использоваться для шифрования AES вместо ограниченного по сложности, используемого по умолчанию механизма.
  • Добавлен Account.getForgedBalanceNQT() для отслеживания комиссий за форжинг определенным аккаунтом, доступен как forgedBalanceNQT в getBalance и getAccount.
  • Увеличен устанавливаемый по умолчанию таймаут для блокировки запросов базы данных до 10 сек., nxt.dbDefaultLockTimeout в nxt-default.properties.
  • Повторная проверка пула неподтвержденных двойных транзакций после каждого нового блока.
  • Поддержка для соединений IPv6, патч реализовал ScripterRon.
  • Обновление jetty до версии 9.1.5. Убедитесь что вы удалили старые jetty jar файлы из папок, если вы проводите установку этой версии путем распаковки установочного архива поверх установленной версии.
  • Обновления клиента:
    • Встроена поддержка кодирования Reed Solomon. Сейчас по умолчанию находится в состоянии отключена. Зайдите в настройки клиента чтобы изменить.
    • Добавлено уведомление/предупреждение пользователя, когда количество NXT или комиссия в NXT превышает установленный в настройках максимум.
    • На основной панели добавлен баланс форжинга.
    • В Биржа Активов теперь доступен поиск.
    • Прогресс загрузки Blockchain использует новый API.
    • Отображает (неподтвержденную) транзакцию на основной панели сразу после подтверждения формы.

59 Версия 1.0.0

28 апреля, 2014

  • Старый пользовательский интерфейс NRS UI теперь по умолчанию отключен. Внимание: доступ к новому пользовательскому интерфейсу клиента доступен по адресу http://localhost:7876
  • Добавлены события аренды средств аккаунта (Account lease events), "Слушатель" может отслеживать события LEASE_SCHEDULED, LEASE_STARTED и LEASE_ENDED. Этим на данный момент можно воспользоваться только из Java API.
  • Небольшие исправления. Обойдена ошибка при новой проверки транзакций при сканировании blockchain. Удалена проверка NotYetEnabled для старых блоков, которые уже прошли проверку.
  • Добавлен файл README.txt, в нем вы сможете прочитать подробную инструкцию по инсталляции и конфигурировании клиента.

60 Версия 0.9.10e

27 апреля, 2014

  • Добавлена новая API функция getAllAssets которая возвращает все активы (Assets), и API функция getAssets которая берет множественные параметры актива и возвращает актив (Assets) с соответствующим assetIds.
  • Добавлена API функция signTransaction , которая берет unsignedTransactionBytes и secretPhrase и возвращает подписанный transactionBytes, идентификатор транзакции, полный хеш и подписанный хеш. Транзакция не передается.
  • Чтобы предотвратить атаки "отказ в обслуживании", транзакции, которые должны находиться в пуле неподтвержденных транзакций, ожидая поступления связанных транзакций, будут "заряжены" 100 NXT как возвратным депозитом. Эта сумма вычитается из неподтвержденного баланса учетной записи, когда транзакция принимается в пул неподтвержденных транзакций, и возвращается назад, когда транзакция или подтверждается, или истекает срок ожидания и она удаляется из пула.
  • Добавлен клиент от Wesley с новым пользовательским интерфейсом, доступный по умолчанию по адресу http://localhost:7876

61 Версия 0.9.9

25 Апреля, 2014

  • Во всех http APIs которые используются в новых транзакциях теперь доступен опциональный параметр "broadcast". Если его установить в значение"false", транзакции не будут передаваться, если установить любое другое значение транзакции будут передаваться. Не подписанные транзакции не будут передаваться. Подписанные и не подписанные байты всегда возвращаются в JSON транзакции, таким образом, подписанные байты могут быть переданы вручную позже.
  • Незначительные исправления ошибок в обработке идентификатора транзакции, на которую ссылаются.
  • Расчет полного хэша транзакции (а следовательно и id transaction) был изменен, эффект от изменений вступит в силу с NQT_BLOCK. Вместо того, чтобы использовать подпись в качестве части байтов, по которым вычислен хэш, теперь используется sha256 подпись.
  • После NQT_BLOCK, вышеупомянутое изменение позволит использовать простой способ реализовать условную аренду, полагаясь на функции транзакций, на которые ссылаются, и которую мы уже имеем:
    • Алиса подготавливает и подписывает транзакцию A, но не публикует её(путем установки параметра broadcast=false, параметр введен в систему с этой версии). Она отсылает Бобу байты не подписанной транзакции, полный хэш транзакции, и подписанный хэш. Все это содержится в JSON результате вызова API. (Внимание: удостоверьтесь, что вы не послали байты подписанные транзакции или саму подпись, поскольку тогда Боб может просто совершить сделку сам).
    • Боб подготавливает, подписывает и публикует транзакцию Б, установив параметр referencedTransactionFullHash в значение полного хэша транзакции A предоставленных Алисой. Он может проверить, что этот хэш действительно принадлежит транзакции, предоставленной Алисой, используя новую API функцию calculateFullHash , который берет байты не подписаной транзакции и хеш подписи (оба из которых Алиса также отправила Бобу). Он может также использовать API функцию parseTransaction , чтобы декодировать все неподписаные байты и просмотреть все поля транзакции.
    • Транзакция Б попадает в пул неподтвержденных транзакций , но, до тех пор пока но, пока транзакция A все еще отсутствует, Транзакция Б не будет подтверждена, т.е. не будет включена в blockchain. Если транзакция А никогда никогда не будет подписанной, транзакция Б в конечном счете будет отменена по дедлайну - таким образом, Боб должен удостовериться, что установил достаточно долгий крайний срок, такой как на пример 1440 минут.
    • Никаким образом, в пуле неподтвержденных транзакций, Боб не может отменить транзакцию Б. Поэтому теперь Алиса может безопасно публиковать свою транзакцию A, просто широковещательно передавая байты подписанной транзакции, этим она сделает первый шаг в сделке. После того как Транзакция A будет включена в blockchain, при следующей генерации блока в него будет включена транзакция Б Боба.
      • Обратите внимание на то, что, вышеупомянутая схема достаточно хороша для простого условного депонирования, но надо помнить, что blockchain не реализует механизм обеспечивающий, что если транзакция A будет подтверждена, то транзакция Б будет также подтверждена. Это может произойти из-за ветвлений и реструктуризации blockchain, что приведет к тому, что транзакция Б никогда не получит шанс быть включенной в блок и останется неподтвержденной в связи с истечение срока дедлайна. Однако для Боба практически не возможно преднамеренно вызвать такую цепь событий и препятствовать тому, чтобы транзакция Б была подтверждена.
  • Так как были проведены изменения в механизме вычисления идентификатора транзакций, тестовой сети, NQT_BLOCK был перенесен на 76500, который приведет к сбросу и незначительным удалением блоков после 76000.
  • В основной сети NQT_BLOCK будет активирован с блока 132.000, FRACTIONAL_BLOCK c 134.000, ASSET_EXCHANGE_BLOCK c 135000. Любые ошибки в NQT или AE должны быть найдены и исправлены до указанных блоков.
  • Дедлайн для обновления до версии 0.9.9 - это блок 130.000, с этого момента станет доступна функциональность "безопасная передача средств аккаунта в аренду". Узлы версии 0.8.13 вероятно создадут ветвление в сети после указанного блока. Узлы версии 0.7.7 наиболее вероятные "виновники" ветвления.
  • Решения основанные на базе API версии 0.9 используют количественные измерения только в NQT, любой клиент, вебсайт, или биржа, использующие API версии 0.8 , все еще используют количественные измерения в NXT, поэтому до блока 130.000 необходимо обновить их, и начать использовать NQT API 0.9. В противном случае, решения использующие API версии 0.8.13, как я ранее говорил, породят ветвление, после наступления указанного блока.

62 Версия 0.9.8e

20 Апреля, 2014

  • Этот релиз только для сети testnet. Использование данной версии в очередной раз вызовет сброс тестовой сети (testnet), таким образом, необходимо, что бы все узлы testnet обновились до этой версии.
  • Реализовано переключение на использование полного 256-разрядного хеша для идентификаторов транзакции, на которые ссылаются. Полное переключение на использование полного хеша будет реализован только после NQT_BLOCK, поскольку это требует сложного ветвления, поэтому изменение в формате байтов транзакции от типа long к 256-разрядному хешу для транзакций, на которые ссылаются, как теперь планируется, произойдет к моменту NQT_BLOCK.
  • При первом запуске, будет выполнены некоторые обновления структуры базы данных а также будут удалены блоки testnet после 63000. NQT_BLOCK для testnet, теперь будет установлен в 76000, таким образом, мы имеем последнюю возможность для тестирования не дробных количеств, плюс текущие изменения транзакций, на которые идут ссылки до и после NQT_BLOCK. Аренда средств теперь будет включена в testnet c блока 75000. После сброса, testnet запустится с блока 74590, таким образом, у нас будет приблизительно 1000 блоков перед NQT_BLOCK в testnet.
  • транзакции fullHash (полный, 256-разрядный хеш), включают подпись теперь также доступную в JSON транзакции, в отличие от транзакций с хешем, который мы в настоящее время используем. Также возможно получить транзакцию на основе своего fullHash, используя getTransaction.
  • параметр http API referencedTransactionId был заменен на referencedTransactionFullHash, с hex-encoded 256-разрядным полным хешем.
  • JSON транзакций теперь также включает в себя referencedTransactionFullHash, если результат не null, и на данный момент также включает referencedTransactionId. Пока NQT_BLOCK не пройден, пользователи этого API вынуждены проверить оба параметра,

так как для транзакций до NQT_BLOCK нельзя гарантировать, что ReferencedTransactionFullHash будет доступен, потому что это не является частью формата байтового массива транзакции. После того, как NQT_BLOCK будет пройден, API будет изменен так, чтобы всегда включать referencedTransactionFullHash в JSON (также и для старых транзакций), а referencedTransactionId будет удален.

  • Добавлен nxt.usePeersDb в nxt-default.properties, включенный по умолчанию. Это должно отключить использование сохраненных равноправных адресов, будет полезно только в тестовых целях.

63 Версия 0.9.7

18 Апреля, 2014

  • Добавленный parseTransaction API, который берет transactionBytes и возвращает JSON транзакции, включая логическую переменную, отвечающую за проверку корректности подписи. Обратите внимание на то, что интерпретация и проверка допустимости байтов зависят от текущей "высоты" блока - происходит это в блоках до или после NQT_BLOCK.
  • Чтобы избежать возможности стать зависимыми от нескольких централизованно управляемых общедоступных узлов, все известные узлы теперь регулярно сохраняются в базе данных. Когда база данных создается с нуля, в базе данных находится порядка 200-300 изначально прописанных общедоступных узлов. После этого, в момент, когда ваш узел выбирает новые узлы-партнеры в сети, он также сохраняет их в таблице и удаляет те узлы, которые помещены в черный список а также те, которые не доступны по указанному в базе данных адресу. Это позволяет получать актуальный и независимый список партнерских узлов сети, для каждого отдельного узла.
    • Эта функция опциональна, и параметр nxt.savePeers может быть отключен путем установки его значение на fale в nxt.properties для тех пользователей, которые не хотят сохранять на своих жестких дисках данные трассировок, хранящие данные о соединениях с партнерскими узлами, чтобы предотвратить возможные сетевые корреляционные атаки.
    • Параметры nxt.wellKnownPeers и nxt.testnetPeers все еще используются, для тех узлов, которые добавляются в базу данных при запуске.

64 Версия 0.9.6

17 Апреля, 2014

  • Проверка учетной запись получателя арендованных средств, на наличие открытого публичного ключа до того как будет принята транзакция аренды. Эта проверка вызовет некоторый незначительный откат в testnet, поскольку блоки, содержащие такие транзакции, будут удалены.
  • Оптимизация аренды средств. Отрицательные величины гарантированного баланса сохраняются только для внутренних вычислений, а эффективный баланс теперь всегда положительный. Другие незначительные исправления и улучшения.
  • Аренда средств эффективного баланса будет включена в основной сети начиная с блока 130000. Это означает, что все узлы должны быть обновлены до версии 0.9.6 или более поздней до этого блока, иначе получим ветвление. Мы должны этого момента найти и исправить любые серьезные ошибки в функционале аренды средств. И все клиенты, которые будут использоваться в основной сети, должны будут переключиться на обработку сумм в NQT до этого, поскольку в версии 0.9 API могут только принимать суммы в NQT. Фактический номер блока перехода к NQT будет определен позже.

65 Версия 0.9.5e

14 Апреля, 2014

  • Добавлен вызов http API leaseBalance, который позволяет реализовать аренду эффективного баланса. Параметр "период", указывается как количество блоков, которым ограничивается продолжительность аренды. Минимальный период это 1440 блоков, максимальный 32767 блоков. Аренда начинается только после 1440 блоков после того как запрос leaseBalance был выполнен. Если вы уже сдали в аренду часть своих средств, и создали еще один запрос на подачу аренды средств, новая аренда станет активной по завершению предыдущей, но не ранее чем 1440 блоков, считая от текущего блока.
  • Во время аренды, гарантированный баланс учетной записи арендодателя, после 1440 подтверждений, добавляется к эффективному балансу учетной записи получателя/арендатора.
  • Заработанная комиссия в ходе форжинга поступает на аккаунт арендатора (получателя), при этом в blockchain отсутствуют механизмы которые позволяют автоматически перечислять эту комиссию на аккаунт арендодателя, таким образом, владелец пула (арендатор) должен сам планировать действия по распределению полученной прибыли (комиссии) всем арендодателям.
  • Информация об арендаторах и арендодателях добавлена в виде JSON к результату вызова API getAccount.
  • Эта функция будет активирована в testnet с блока 73000 для полноценного тестирования функциональности

66 Версия 0.9.4e

14 апреля, 2014

  • Добавлен Магазин Цифровых Товаров (Digital Goods Store), Эффективный баланс для аренды (передача в безопасную аренду своих средств), и Hub Terminal анонса новостей. Они все еще не протестированы, отсутствуют соответствующие http API, и в настоящее время отключены даже на testnet, так, чтобы не мешать тестированию Asset Exchange (Биржа Активов).
  • Реализованы канонические подписи и канонические открытые ключи после NQT_BLOCK..
  • Добавлен http API вызов setAccountInfo, который использует информацию о учетной записи транзакции, чтобы получить имя и свойства учетной записи. Те поля, если установлено, будут возвращены как часть getAccount JSON. Информация о учетной записи будет включена в NQT_BLOCK, таким образом, что это должно начать работать в тестовой сети после этой версии.
  • Исправлена ошибка в Asset Transfer при передаче количества актива, которая предотвращала подтверждения транзакции в testnet.
  • Два новых свойства в nxt-default.properties, для упрощения экспорта nxt.trace в csv файл:
    1. Знак сепаратора для журнала трассировки
      • nxt.debugTraceSeparator=\t
    2. Символ кавычки для журнала трассировки
      • nxt.debugTraceQuote="
  • Jetty был обновлен до версии 9.1.4 , и Н2 до версии 1.3.176 . Не забудьте удалить старые версии из папки lib, или если вы делаете обновление , просто распакуйте файлы архива поверх существующих.
  • Исправления и улучшения в механизме проверки сделки. Существующие сделки будут проверяться один раз при первом запуске этой версии , которая может привести к некоторой турбулентности в сети testnet когда недействительные блоки будут удаляться.

67 Version 0.9.3.1e

09 Апреля, 2014

  • Исправлены ошибки в парсинге транзакций Выпускаемых Активов. Узлы Testnet должны быть обновлены.

68 Version 0.9.3e

07 Апреля, 2014

  • Удалены все возвращаемые значения quantityINT, balanceINT, amountNXT, priceNXT, feeNXT из JSON API, и удалена поддержка парсинга INT и NXT параметров. Теперь во всех блоках используется только NQT (для сумм) и QNT (для количеств).
  • Активирован запуск этого функционала в основной сети. NQT_BLOCK начнет работать начиная с 150000 блока для основной сети, до указанного момента дробные суммы остаются отключенными. Целые NXT суммы и комиссии должны работать нормально в основной сети, также эта версия должна быть совместима с узлами сети версии 0.8.13. ПРИМЕЧАНИЕ: Узлы версии 0.7.* более не поддерживаются. Все пользователи Nxt должны обновить свои клиенты до стабильной версии 0.8.13, и быть готовыми обновиться до версии 0.9 как только будет выпущен стабильная версия этой линейки.
  • Поскольку NRS javascript UI больше не будет дорабатываться, и ни у кого нет времени, чтобы преобразовать его для использования библиотеки BigInteger javascript, он все еще будет принимать принимает суммы и комиссии в NXT, которые будут автоматически преобразованы в NQT на стороне сервера. Возвращаемые значения хранятся в NQT и могут привести к переполнению в javascript для сумм превышающих 2^53 NQT (приблизительно 90 миллионов NXT). Такое переполнение может повлиять только на UI, т.к. ввод происходит как строки и преобразованы в longs на стороне сервера. Однако, для транзакций такого размера лучше остаться на стабильной версии 0.8.13 или использовать сторонние клиенты.
  • При первом запуске в основной сети, как это происходило в тестовой сети, будет произведено обновление полей количества и сумм в таблицах блоков и транзакций до NQT, что займет некоторое время. В ходе этого процесса,объем базы данных временно сильно увеличится, приблизительно до 1 GB. База данных уменьшится при перезапуске клиента (что также займет некоторое время), до приблизительно 180 MB.

69 Version 0.9.2e

06 Апреля, 2014

  • Добавлена поддержка дробного измерения количества активов. Наслаждайтесь очередным сбросом testnet
  • При создании актива, максимально допустимое количество цифр после целого количества актива, может быть указанно в параметре "decimals" (допустимые значения от 0 до 8). Например, это может быть 2 - для валюты евро, и 8 для Bitcoin.
  • Подобно ценам, количества актива могут быть определены любым удобным образом:
    • в quantityQNT, численные показатели указывается в минимальной единице измерения ("quant")
    • в quantityINT, в этом случае численные показатели указываются в целых единицах актива (важно помнить что и в этом случае также может указываться дробная часть).

Например, 9.97 долларов США могут быть выражены: в quantityINT = "9.97", или как quantityQNT = "997", установив "decimals"=2 например для доллара США.

  • Ответы JSON, содержащие количество или баланс актива, снова возвращают quantityINT и quantityQNT, как строки.
  • При размещении ордера на покупку или продажу актива, если указан quantityQNT, цена интерпретируется так, чтобы можно было использовать единицы измерения QNT (независимо от того была ли цена определена в NXT или в NQT).

Если указывается quantityINT , цена интерпретируется, чтобы можно было использовать единицы измерения INT. Например, ордер предложения на quantityQNT = "300", priceNXT = "2", за актив в долларе США будет интерпретироваться как 3.00$ и 1 цент = 2 NXT, т.е. 200 NXT за один доллар, итого 600 NXT. Если параметры будут представлены как quantityINT = "7", priceNXT = "50", то ордер будет на 7.00$ по 50 NXT за один доллар, на общую сумму 350 NXT.

  • Внутренний ордер, вычисляющий и отслеживающий баланс актива на счете, всегда будет представлен в quantityQNT. Неудобный побочный эффект на данный момент - это то что, помещая ордер, используя quantityINT, расчетная цена в NQT для одной единицы QNT должна быть целым числом. Таким образом, Вы не можете разместить ордер для quantityINT = "1", priceNXT = "10.12345678" (или эквивалентно priceNQT = "1012345678"), потому что тогда цена одной quantityQNT будет 10123456.78 NQT. priceNXT должен будет быть также 10.12345600 или 10.12345700. Если это сбивает с толку, укажите в ордере quantityQNT = "100", priceNQT = "10123456".

70 Версия 0.9.1e

03 арпеля, 2014

  • Всегда возвращают суммы и в NXT и в NQT, представленном в JSON как строки.
  • Рефакторинг кода генерируемого JSON, удален getJSONObject из блоков и транзакций.
  • Операции порождающие некорректные блоки, всегда будут удаляться из пула неподтвержденных транзакций.
  • Устранена ошибка переполнение в вычислении веса hallmark.
  • Устранена ошибка JSON парсинга.
  • Все узлы testnet должны быть обновлены до этой версии.

71 Версия 0.9.0e

03 Апрель, 2014

  • Это - экспериментальная версия для предварительного ознакомления, который будет работать только в testnet. Данная версия не будет работать в основной сети Nxt поэтому не старайтесь его запустить в основной сети. Важно, чтобы все узлы тестовой сети (testnet) обновились до версии 0.9.0e, для того чтобы все могли начать тестировать работу с дробными частями NXT.
  • Все транзакции и комиссии начнут обрабатываться в NQT, (это 10^-8 NXT), начиная с NQT_BLOCK, который для испытательной сети установлен в значение 63000 блоков. Переход на дробные NXT в основной сети будет реализован в несколько этапов, чтобы сохранить совместимость с более старыми версиями, и для того чтобы не перезагружать основной blockchain. Это решение также будет протестировано в тестовой сети testnet, поэтому в ближайшее время логично ожидать еще один сброс testnet. Для сегодняшней версии testnet, существующие активы будут снова удалены, blockchain сброшен назад к блоку 63000, после чего дробные суммы и обмен активов будет доступен начиная с блока 63000.
  • Подробности о данной версии:
    • Внутри все суммы обрабатываются в NQT, используя Java longs (64 бита). Суммы счетов и комиссии в базе данных также будут преобразованы в NQT, и будут сохранены как BIGINT. Эти изменения будут применены для всех старых (перед NQT_BLOCK) и новых операций. Только после подтверждения подписи, старые операции и блоки будут представлены в виде 32 битных записей вместо типа long (64 бита) для счетов и комиссий. Для всех узлов, с целью совместимости, операция JSON для старых операций будет содержать суммы и в NQT и в NXT.
    • Чтобы предотвратить ошибку переполнения, все операции сложения и умножение longs сделаны с использованием методов тестирования предварительного условия, Convert.safeAdd и Convert.safeMultiply, которые проверяют на возможное переполнение прежде, чем сделать само вычисление.
    • Вся соответствующие Java API былb переименованы, чтобы указать, что суммы возвращаются в NQT, за исключением getEffectiveBalanceNXT, который используется только при форжинге и там необходимо вести учет в NXT.
    • http API был изменен, чтобы использовать суммы или в NQT или в NXT, с дробными суммами, полученными как строки в параметрах запроса http, и затем преобразованы непосредственно к longs. Возвращаемые объекты JSON используют только NQT. Все соответствующие http названия параметров и параметры JSON были изменены, чтобы указывать, являются они в NQT или NXT.
    • Цены активов (AE) также изменены, чтобы использовать NQT вместо NXT-центов. Но я не проверил биржевые сделки по активам, я успел только проверить простые операции по передачи средств, поэтому ожидаются ошибки.
    • Дробные количества активов еще не внедрены.

72 Версия 0.8.13

01 Апрель, 2014

  • Исправлена ошибка дублирования хеша транзакций в пуле неподтвержденных транзакций.
  • Добавлено поле комментария к транзакции типа Переуступки/Трансфера активов, может содержать до 1000 символов. При первом запуске этой версии произойдет удаление всех блоков на testnet, начинающихся с первого блока содержащего транзакцию переуступки/трансфера активов.
  • Добавленная дополнительная фильтрация по счету в getUnconfirmedTransactions API.
  • Добавленный API запрос getAllOpenOrders.
  • Добавленные Слушатели AccountAsset, чтобы отслеживать уведомление об активе для балансировки изменений, указывает на актив, который изменил баланс.
  • Система возвращает ошибку при попытке широковещательно передать транзакцию с недостаточным объемом средств, и не пытается повторно ретранслировать такие транзакции.
  • Улучшена реализация DebugTrace и VerifyTrace.
  • Jetty обновлен до версии 9.1.3.

73 Версия 0.8.12

21 марта, 2014

  • Эта версия только для тестирования и отладки. Если вам не интересно тестирование - нет необходимости обновляться.
  • Добавлен DebugTrace.java, который используется для мониторинга всех изменений в балансе аккаунта и балансе активов, и всех событий, которые вызывают изменения - транзакции, генерация блоков, ордеров на покупку, выпуск активов, продажа активов, отмена ордеров на покупку, торговля.
  • Это новшество использует 2 новых свойства в nxt-default.properties:
    • nxt.debugTraceLog=nxt.trace
    • nxt.debugTraceAccounts=
  • Для активации трассировки баланса аккаунта, установите в параметре nxt.debugTraceAccounts tсписок ID аккаунтов для мониторинга, разделенные через "; ". Все данные должны записываться в nxt.trace, или файл определенный в nxt.debugTraceLog. Значения/данные в этих файлах записываются с tab разделением, для того чтобы просто импортировать в табличный формат.
  • Теперь возможно отслеживать балансы всех ваших аккаунтов, путем установки nxt.debugTraceAccount=* .
  • При рестарте а также при ре-сканировании базы данных, лог файл nxt.trace log теперь перезаписывается.
  • Добавлен VerifyTrace.java, который занимается парсингом файла nxt.trace (или файла указанного как аргумент в командной строке), и выполняет некоторые проверки. В настоящее время это решение проверяет, что для каждого счета который вы указали для проверки, итоговый баланс вычисляется как общее количество всех изменений, которые влияют на этот счет, и зарегистрированы в журнале nxt.trace. Также проверяет, что для каждого актива, общее количество количество актива на всех счетах соответствует первоначальному количеству выпущенного актива. Эта проверка, как можно предположить, будет не удачной, если не все счета, которым принадлежит часть актива, будут включены в debugTraceAccounts.
  • Для запуска VerifyTrace, используйте verify.sh скрипт. Nxt сервер должен быть остановлен в начале, чтобы журнал nxt.trace не продолжал обновляться, в то время как VerifyTrace проверяет его.
  • Неподтвержденный баланс и неподтвержденный баланс активов будут логироваться, но не будут верифицироваться VerifyTrace, потому что присутствие открытых или частично выполненных заказов делает такое вычисление очень сложным. Скорее всего будет проще использовать электронные таблицы, чем реализовать такие вычисления.
  • Добавлено событие TRADE, срабатывающее когда происходит торговая операция. Обратите внимание на то, что это событие происходит перед обновлением остатков на счетах.
  • Добавлены BEFORE_BLOCK_APPLY и BEFORE_BLOCK_UNDO события, срабатывающие перед соответствующими операциями в обработке блока.

74 Version 0.8.11

19 марта, 2014

  • Введена поддержка не уникальных наименований активов
  • Добавлен новый API getAssetsByName который возвращает список всех активов содержащих в названии assetName.
  • Добавлен новый API getAllTrades API который возвращает все торги, которые были начаты после указанного времени (contributed by Antanst).
  • Улучшены/оптимизированы JSON ответы для некоторых API вызовов: getAsset теперь также возвращает numberOfTrades. getAccount теперь также возвращает unconfirmedBalance. broadcastTransaction теперь также возвращает хеш транзакцийnow. getAsk/BidOrder теперь также возвращает "высоту" ордера. Производительность getTrades сильно повышена а также теперь возвращает id блока для каждого торга.
  • Явно останавливает все jetty servers при вызове Nxt.shutdown().
  • Escape текст вставлен как узел или анонсированный адрес узла в html код NRS клиента, для предотвращения кросс-сайтового скриптинга и атак с зараженных узлов.
  • Теперь Crypto.sign() не будет генерировать некорректные подписи, нет необходимости делать дополнительный вызов verify() после подписания блока, или при многократной попытке подписи транзакции.

75 Версия 0.8.10

15 марта , 2014

  • Добавлена улучшенная проверка транзакций. Блоки которые были приняты и признаны некорректными для последующей обработки кем либо, будут удалены из базы данных.
  • Улучшена проверка минимальной комиссии за различные типы транзакции.
  • GetAccount API теперь также возвращает неподтвержденный баланс актива.
  • BroadcastTransaction теперь проверяет подпись полученной транзакции перед тем как её начать передавать через широковещательный запрос.
  • Удален код более не используемого фиржинга. Генерация блоков до 30.000 (transparent forging phase 1/прозрачный форжинг 1 фазы) больше не поддерживается.
  • Db.getConnection () сделал public и добавил в методы Blockchain.getBlocks и

getTransactions параметр PreparedStatement, для использования клиентами API Java.

  • Добавленный APITestServlet для ручной отладки и тестирования

API. Все http вызовы API будут теперь автоматически перенаправлены на : http://localhost:7876/test или если вы хотите испытать только какой то один из запросов, на пример getBalance: http://localhost:7876/test?requestType=getBalance

    • В отличии от страницы admin.html, этот список автоматически генерирует и включает все доступные API без необходимости в ручную добавлять новые.
  • Применен патч к Curve25519.sign () предложенный DoctorEvil. Блок и подписание транзакции теперь не должны допускать ошибку проверки.

76 Версия 0.8.9

13 марта, 2014

  • Добавлена поддержка подписи транзакций на стороне клиента. Все http API запросы которые создают новую транзакцию , теперь работают с secretPhrase или publicKey параметром. Если secretPhrase предоставлена, транзакция получает статус созданной, подписывается на сервере и передается сервером, как обычно. Если secretPhrase не предоставлена, но есть publicKey параметр, в виде закодированного байтового массива, то операция будет подготовлена сервером и возвращена в JSON ответе как transactionBytes. Этот байтовый массив может теперь быть подписан клиентом, и затем передан обратно на сервер для широковещательной передачи broadcastTransaction API.
  • Хеши транзакций, которые могут быть использованы, для однозначного определения транзакций, чтобы избежать атак пластичной транзакции (двойной вывод, суть его - в получении своих денег дважды в результате повторной транзакции), теперь могут быть получены, используя Transaction.getHash () и также доступны в представлении JSON транзакций. Хеш может также использоваться, чтобы получить транзакцию от сервера, вместо того, чтобы использовать идентификатор транзакции, предоставляя параметр хеша к getTransaction http API вместо параметра транзакции.
  • Для повышения производительности getBlockId и getBlockTimestamp методы Java API были добавлены к Transaction классу, чтобы минимизировать вызовы getBlock, что в свою очередь может потребовать дополнительных запросов к базе данных. Java клиенты должны использовать их вместо использования getBlock. Точно так же поле blockTimestamp было добавлено к JSON, возвращаемом getTransaction и другими вызовами API, которые возвращают транзакции JSON. Таким образом, http клиенты могут также избежать ненужных обращений к getBlock.
  • Обновление до 0.8.9 также модифицирует базу данных и добавит поля hash и block_timestamp таблицу транзакций.
  • Транзакции которые определены как неверные будет теперь также удалены из пула широковещательной публикации.
  • Все глобальные константы перенесены в Constants.java.
  • Улучшенная проверка транзакций для Биржевых (AE)операций, чтобы избежать введения в заблуждение ошибками недействительные операционные.
  • Исправленная обработка операций с идентичными метками времени в генерации блоков и в клиенте NRS UI.
  • Добавлены ASSET_BALANCE и событие UNCONFIRMED_ASSET_BALANCE в аккаунт, для решения возможной проблемы с вычислением баланса актива.

77 Версия 0.8.8 / 0.7.7

7 марта, 2014

  • Исправлена проблема установки времени генерации генезисного блока, когда происходит переход на летнее время. Это было причиной не возможности форжинга для пользователей находящихся в южном полушарии.
  • Так как DST в США запускается 09 марта, это критически важно для пользователей США и им необходимо обновиться до 0.8.8 или 0.7.7.
  • Больше никаких исправлений ошибок или новых функций по отношению к версии 0.8.7 /0.7.6, кроме указанного решения проблемы перехода на летнее время.

78 Версия 0.8.7

6 Марта, 2014

  • Исправлена ошибка вычисления неподтвержденного баланса генезисного блока.
  • Исправлена ошибка отображения баланса генезисного аккаунта в UI NRS.

79 Версия 0.8.6

5 марта, 2014

  • Ретрансляция транзакций была некорректна в нескольких предыдущих версиях, теперь должна работать.
  • Исправлена ошибка обновления количества подтверждений транзакции UI NRS.
  • Проверка неподтвержденных транзакций на корректность, и если выявляется их некорректность, они удаляются из пула неподтвержденного транзакций.
  • Добавлено несколько известных testnet узлов в свойствах по умолчанию.
  • run.bat преобразован к формату окончания строки CRLF.

Исправления специфических bugfixes в функционале Биржи:

  • Ордер на отмену должен обновлять только неподтвержденные балансы.
  • В блоке pop-off, не обновлялся баланс актива.
  • Когда торговля выполняется по цене ниже, чем предложение, исправляется неподтвержденный баланс продавца на возникшую разницу.

80 Версия 0.8.5

4 марта, 2014

  • Большая часть bugfixes имеет отношение к вычислению неподтвержденного баланса.
  • Незначительные исправления, чтобы обойти некоторые не критичные ошибки.

81 Версия 0.8.4e

3 марта, 2014

  • Несколько исправлений в механизме в вычисления неподтвержденных балансов и неподтвержденных балансов актива (как вы понимает разговор идет о AE). Это - попытка зафиксировать ошибку отрицательного неподтвержденного баланса и ошибку "Not enough funds", но пока полная работоспособность не была протестирована, именно по этой причине, данный выпуск - экспериментальный.
  • Активация работы с тестовой сетью (testnet) происходит путем установки свойства nxt.isTestnet=true в nxt.properties. Больше ничего предпринимать не надо !
  • При переключении на testnet, путем прописывания параметра nxt.isTestnet=true, порт узла назначается 6874, порт UI 6875 и порт сервера API 6876. Эти значения жестко прописаны, чтобы предотвратить ошибки и забрать приоритет у любого пользовательского порта, указанного в nxt.properties. Кроме того, если не используя testnet, сервер откажется запускаться если порт узла установлен в 6874, опять же, для того чтобы предотвратить случайный смешивание реальных и тестовых blockchains.
  • Для testnet также будет автоматически создаваться новый подкаталог nxt_test_db, для тестового blockchain.
  • Вы должны установить в nxt.testnetPeers список известных общедоступных тестовых узлов. Я установил bug.airdns.org в коде версии 0.8.4e , и копия blockchain тестовой сети, as obtained from holms (извините - не смог перевести логично). Я надеюсь, что и другие люди также установят тестовые узлы и объявят о них на форуме.
  • В этой версии, при переключении на тестовую сеть, Голосования (Voting ) и Биржа (Asset Exchange) включаются автоматически. В реальной сети, данные функции заблокированы. NRS клиент сейчас не поддерживает данные функции, т.е. вам понадобится сторонний клиент с реализацией этих функций, или придется пользоваться прямыми вызовами API
  • Добавлен параметр nxt.knownBlacklistedPeers, для ручного помещение в черный список узлов в nxt.properties файле.
  • Больше не перезаписываются адреса узлов с их анонсированными адресами в панели "Active peers", для уникальной идентификации узлов используются только IP адреса
  • Допускается деактивация DoSFilter для узлов являющихся серверами сети. Добавлен параметр nxt.peerServerDoSFilter.maxRequestMs=300000, потому что значение по умолчанию для DoSFilter maxRequestMs блокирует узел у которого запросы к соседним узлам превышают 30 с, что приводит к прерыванию загрузки blockchain для медленных узлов. Возможно это было причиной предупреждений об ошибках Jetty, которые мы получаем еще со времен 0.5.x версии.
  • Добавленный метод Generator.getAccount и START_FORGING и событие STOP_FORGING, интереса для использования Java API клиентами.
  • Добавлен оригинальный run.bat для пользователей Windows.
  • Исходный код теперь включен в архив клиента в каталоге src. Скрипты compile.sh и javadoc.sh могут использоваться, чтобы собрать исходники и воссоздать nxt.jar и javadoc документацию.

82 Версия 0.8.3

26 февраля, 2014

  • Исправлены проблемы с отображением UI интерфейса и обновлением My Transactions. Согласован подсчет подтверждений транзакций. Транзакции, включенные в последний блок, автоматически имеют 0 подтверждений.
  • При генерации блока, событие BLOCK_PUSHED теперь обрабатывается перед событиями REMOVED_UNCONFIRMED_TRANSACTIONS и ADDED_CONFIRMED_TRANSACTIONS.
  • Добавлено BlockchainProcessor. События RESCAN_BEGIN и RESCAN_END, срабатывают до и после повторной проверки (не регулярный запуск сканирования).
  • Исправлено появление нескольких пустых указателей (null pointers), вызванное плохими данными от других нод.
  • Улучшена обработка адресов пиров и клейм(Hallmarks).
  • Добавлен черный список к статусу информации о пирах.

83 Версия 0.8.2e

25 февраля, 2014

  • В основном, мелкие исправления проблем после выхода 0.8.1e.
  • Исправлена json-строка клейма в информации о пирах.
  • Улучшено свойство Logger, добавил методы RemoveListener.
  • Не нужно устанавливать заголовки Content-Length при использовании XMLHttpRequest, для отправки POST запросов.
  • Добавлен jetty-security jar.
  • worker_sha256.js перемещён в tools.
  • Кроме того, добавлены случайные узлы mynxt.info в значения по умолчанию wellKnownPeers.

84 Версия 0.8.1e

24 февраля, 2014

  • Улучшено взаимодействие узлов при объявлении адресов и портов. Параметр nxt.myAddress теперь опционален, и поможет пользователям с динамическими IP-адресами. Если nxt.shareMyAddress=True, после подключения к узлу, через какое то время он будет пытаться подключится к вам по объявленному адресу, и, если это не удалось, по тому адресу с которого пришел ваш запрос. В случае успеха, узел сохранит ваш последний адрес и будет использовать его для подключения к вам в будущем, также он будет делиться им с другими. Дополнительно, проходит проверка объявленных адресов, т.е. ваш узел будет подключен только после успешного соединения. Это позволит предотвратить распространение некорректно объявленных адресов на другие узлы.
  • Если вам нужно использовать нестандартный порт, его номер должен быть добавлен к вашему объявленному адресу. Он не должен быть такими же, как в nxt.myPeerServerPort, так что вы можете запустить сервер на одном порту, и перенаправить к нему другой порт от маршрутизатора. Если номер порта не установлен в объявленном адресе, а значение nxt.myPeerServerPort не является значением по умолчанию, номер порта из nxt.myPeerServerPort автоматически будет добавлен к объявленному адресу.
  • Суммируя вышесказанное: пользователям с динамическими IP-адресами, не нужно изменять nxt.myAddress, однако необходимо настроить перенаправление портов на маршрутизаторе.
  • Проверка клейма (hallmark) также была улучшена, чтобы попытаться разрешить имя хоста в IP-адресе. Обратите внимание, что если вы используете нестандартный порт, в hallmark вы должны указать только свой адрес, без порта.
  • Добавлена функция API "generateToken". Параметрами являются secretPhrase и host; ответ: токен, обёрнутый в JSON. Эта функция также доступна на странице admin.html.
  • Улучшена обработка инициализации и завершения работы. Вызов Nxt.shutdown() теперь доступен всем, включая разработчиков клиентов. Когда Nxt запускается как отдельное приложение вызовом main(), выключение будет запланировано как прерывание(hook). Если для запуска используется init(), за выключение отвечает вызов shutdown() или запланированное прерывание.
  • Добавлена задержка запуска сканирования блокчейна и сервлетов Jetty, пока не завершится инициализация всех классов. Это позволит зарегистрироваться всем службам слушающим порты, и должно помочь предотвратить ошибки сервлетов, которые начинают принимать запросы, прежде чем система полностью инициализировалась.
  • Если файл NXT-default.properties не найден, Nxt также сделает попытку загрузить его из файла, определенного в параметрах запуска, т.е. вы можете определить его в командной строке: java -Dnxt-default.properties=conf/nxt-default.properties. Это представляет интерес только для разработчиков клиентов.
  • Добавлена поддержка POST запросов, в дополнении ко всем API и UI http запросам. Чтобы использовать только POST, для тех запросов, которые требуют от пользователя secretPhrase, в nxt.properties могут быть установлены параметры nxt.apiServerEnforcePOST и nxt.uiServerEnforcePOST (по умолчания отключено для API и включено для UI). Т.е. разработчики клиентов могут определить, какой тип запросов будет применяться для конфиденциальных данных.
  • По умолчанию интерфейс NRS был изменен для использования только с POST запросами, в том числе, и в инструментах - admin.html, message.html, alias.html. Таким образом, secretPhrase пользователя больше не будет кэшироваться в памяти браузера.

85 Версия 0.8.0e

22 февраля, 2014

  • В этой версии внесены серьезные изменения в серверной архитектуре Nxt. Теперь, Nxt не сервлет внутри Jetty, а самостоятельное приложение, которое само может запускать Jetty сервлеты, когда это необходимо. Это должно упростить использование Java библиотек, поскольку они больше не должны быть запущены внутри контейнера сервлетов.
  • Конфигурация Nxt сделана гибче, как для конечного пользователя так и для разработчиков приложений. Теперь, Nxt больше не использует файлы web.xml, и XML-файлов в принципе. Вместо этого, введены удобные файлы конфигурации (*.properties).
  • Компоновка дистрибутива, была изменена и упрощена. Распаковка архива даст следующую структуру каталогов:
    • nxt/html/
      • Подкаталог html/nrs необходим для работы NRS javascript клиента, подкаталог html/tools - для html-страниц, таких как admin.html или update.html, и html/doc содержит документацию по низкоуровневым API функциям.
    • nxt/lib/
      • Каталог для хранения необходимых Java библиотек - Jetty, база данных H2, и простой JSON-парсер. Неиспользуемые библиотеки Jetty удалены, что привело к уменьшению дистрибутива.
    • nxt/nxt.jar
      • Каталог содержит все скомпилированные классы Nxt.
    • nxt/run.sh
      • Простой скрипт для запуска Nxt, под Linux:

        java -Xmx1024M -cp nxt.jar:lib/*:conf nxt.Nxt

        Как видите, все используемые Java-классы включены в nxt.jar, а все настройки хранятся в каталоге nxt/conf.
  • Обратите внимание, файлы start.jar, webapps и каталог с конфигурацией Jetty больше не нужны.
  • В дополнении к переходу на встроенный Jetty, значительному рефакторингу подвергся код, который представляет интерес для пользователей Java API. Изменений слишком много для того, чтобы описывать их здесь, но их легко можно увидеть, сравнивая документацию версии 0.8.* с 0.7.*. В частности, были определены интерфейсы для классов блоков и транзакций, класс Blockchain был разделен на несколько классов, а некоторые классы Peer и User были исключены.
  • Разработчики клиентов, использующих Java API могут переопределить любое из свойств по умолчанию, используя объект Nxt.init().
  • Все настраиваемые свойства документированы в файле NXT-default.properties. Вот некоторые дополнительные подробности о них:
  • Nxt может запускать до трёх разных экземпляров серверов Jetty, если это необходимо.
  • Ноды могут принимать HTTP запросы от других нод. Это стартовое значение умолчанию nxt.shareMyAddress = True. Если вы за брандмауэром, вы можете отключить эту возможность (False).
  • Номер порта и название сервера ноды можно изменить. Если вы установили порт не по умолчанию (в nxt.peerServerPort), эта информация добавится к адресу, который вы объявили (адрес устанавливается параметром nxt.myAddress). Хотя, отличный от умолчального порт не будет часто проверятся другими нодами.
  • Для машины с несколькими сетевыми интерфейсами, теперь можно указать, конкретный интерфейс для привязки каждого запущенного сервера. По умолчанию nxt.peerServerHost = 0.0.0.0, т.е. Nxt слушает другие ноды на всех интерфейсах.
  • Теперь, в свойствах по умолчанию, нет жестко заданного параметра nxt.wellKnownPeers. Вы можете установить их, добавив нужные ноды в nxt.properties. Тем не менее, если свойство не установлено, будет использоваться случайный выбор по данным общедоступных узлов nxtcrypto.org и nxtbase.com.
  • DoS фильтр включен только для сервера узлов.
  • Сервер API принимает HTTP / JSON запросы API. По умолчанию, в настоящее время он работает на порту 7876, и слушает только на локальном интерфейсе 127.0.0.1. Если вы запустили общедоступный узел и хотите принимать запросы API от всех, определите nxt.apiServerHost в 0.0.0.0, и оставьте nxt.allowedBotHosts пустым или со значением "*".
  • Nxt.apiResourceBase указывает на каталог статических HTML-файлов, обслуживаемых сервером API. Разработчики клиентов, использующих HTTP / JSON API захотят настроить этот параметр, чтобы укзаать на их клиентские HTML и Javascript файлы.
  • Фильтр Jetty Cross Origin Filter может быть включен для API сервера, установкой параметра nxt.apiServerCORS = True (по умолчанию - отключено).
  • В NRS javascript клиенте используется UI cервер. По умолчанию он работает на порту 7875 и принимает запросы только локально. Разработчики клиента, который использует те же вызовы API, что и клиент NRS (а не HTTP / JSON) должны определить параметр nxt.uiResourceBase, чтобы указать на свои клиентские HTML и Javascript файлы.
  • SSL может быть включен как для сервера API так и для UI сервера (по умолчанию отключено). Если это будет сделано, то соответствующие порты будут принимать только HTTPS-запросы. Сейчас нет способа чтобы поддерживались одновременно HTTP и HTTPS, однако это можно добавить, просто я не вижу в этом необходимости. Если вы включите SSL, вам необходимо определить nxt.keyStorePath и nxt.keyStorePassword, и, очевидно, у Вас должен быть свой собственный сертификат SSL (самоподписанный или подписанный центром сертификации) в файле хранилища ключей. Я проверял это только с собственным сертификатом.
  • Разработчики клиентов на Java API, вероятно, захотят, отключить и сервер API и сервер UI, и пользователей, без видимого IP адреса и даже сервера узлов.
  • Отладочная информация теперь отключена по умолчанию, но может быть включена установкой nxt.debug = True. Исключения при трассировки стека, тем не менее будут протоколироваться, пока nxt.enableStackTraces = True. Надеюсь их там не будет.
  • Подключение к базе, можно настроить полным JDBC URL и изменять свойства подключения на лету. Разработчики клиента, которые настаивают на возможности доступа к базе данных из отдельного процесса, в то время как Nxt работает, могут сделать это, добавив AUTO_SERVER = True в JDBC URL, что автоматический запустит смешанный режим. Это возможность по умолчанию отключена, и если вы включите её и произведёте запись в базу данных в то время как Nxt работает, ожидайте остановки процесса.
  • Кроме того, можно хранить базу данных в другом месте, а не только в текущем рабочем каталоге, если вы измените JDBC URL соответствующим образом.
  • Чтобы изменить объем памяти, используемый для кэша базы данных, используйте параметр nxt.dbCacheKB, в килобайтах. Если значение установлено в 0, JVM будет использовать для кэша базы данных 50% от количества доступной памяти.
  • Структура базы данных не была изменена. С этой версией, вы можете использовать существующий каталог nxt_db без загрузки блокчейна с нуля
  • Этот релиз помечен экспериментальным, однако, пожалуйста, попробуйте его. В частности, разработчики клиентских приложений должны проверить насколько хорошо всё работает. Если не будет никаких серьезных проблем, ожидайте, что ветка 0.7 устареет в самое ближайшее время.

86 Версия 0.7.6

19 февраля, 2014

  • Сжатие базы данных при каждом завершении работы клиента. Это должно уменьшать размер каталога nxt_db после первого запуска. Проверьте до и после запуска нового клиента использование диска (объем папки nxt_db).
  • Предотвращение задваивания списка известных узлов и списка узлов помещенных в черный список, в фреймах WEB клиента.
  • Предотвращена потенциальная опасность с атакой задвоенного ключа аккаунта . Описание здесь: https://bitcointalk.org/index.php? topic=397183.msg4569817#msg4569817
  • Добавленная Система голосований еще не включена.
  • Некоторый рефакторинг классов Block и Transaction.
  • Bugfixes в функционале Биржи (Asset exchange) в тестовой сети и большого количества API запросов.
  • Улучшенная проверка корректности транзакций, чтобы предотвратить неправильное помещение в черный список узлов и повысить качество проверки транзакций.

87 Версия 0.7.5

14 февраля, 2014

  • Различные улучшения производительности и улучшение использования памяти.
  • Улучшенная проверка адресов узлов и обработка изменения состояния соединений узлов. Улучшен пользовательский интерфейс в блоке отображения информации о узлах.
  • Дополнительная оптимизация в getMilestoneBlockIds, для обратной совместимости.
  • Дальнейшая очистка ядра nxt, от классов UI.

88 Версия 0.7.4

13 февраль, 2014

  • Еще один bugfix для перехода к Прозрачному форжингу, запускающемуся с блока 67000. Обновитесь до выхода этого блока, иначе получим ветвление.
  • С этой версии прекращается поддержка старой версии протокола getMilestoneBlockIds. Клиенты версий ниже чем 0.7.3, не смогут получать блоки от узлов версии 0.7.4 . Все должны обновить до 0.7.4 перед блоком 67000.
  • Некоторая оптимизация в запросах к базе данных, используемых во время разблокировки учетной записи, давайте посмотрим, помогает ли это пользователям Raspberry.
  • Другие незначительные улучшения.

89 Версия 0.7.3

12 февраля , 2014

  • Линейка 0.6.x больше не поддерживается и не развивается ! Начиная с этой версии (0.7.3), развиваться и обновляться будут только версии работающие с базой данных !
  • Оптимизировал протокол getMilestoneBlockIds. Это протокол передачи точка-точка между узлами,который создает основную нагрузку на общественные узлы и создавал значительный объем ненужного трафика. Однако для обратной совместимость, версия 0.7.3 все еще поддерживает оба варианта протокола (и старый и новый, оптимизированный), поэтому когда более старые клиенты соединяются с узлами версии 0.7.3 они, к сожалению, все еще передают лишний, ненужный трафик.
  • ПРЕДУПРЕЖДЕНИЕ: Поддержка старого getMilestoneBlockIds протокола будет прекращена с версии 0.7.4. Нет необходимости все бросать и обновляться,но если не обновиться до выхода версии 0.7.4, твои более старые узлы не будет в состоянии получать/запрашивать блоки и актуализировать blockchain. По этому лучше обновиться раньше, чем позже!
  • Еще больше рефакторинга кода. Полностью разделена логика пользовательского интерфейса от логики ядра системы. Больше ничто не связывает ядро nxt с классами в пакете nxt.user. Instead, a Listeners framework is used, so that the UI can register to be notified of the events in the core that it needs to know about. This is also intended to be used by Java client API developers.
  • Добавлено еще несколько индексов к таблицам базы данных, чтобы улучшить работу. Они будут созданы автоматически при первом запуске клиента. При этом вам не надо что либо удалять или изменять из nxt_db.
  • Изменения системы безопасности: Before this release, newly generated blocks and new transactions were broadcasted to peers twice. This could allow your peers to deduce that your node was the generator of the block or transaction in question. This is now fixed. Note that somebody with the ability to monitor all your internet traffic will still be able to tell that it was you who generated a block, because the generating node sends the block before having received it from any other peer. I don't see a physically possible way to avoid that, yet. Also note that the transaction re-broadcasting feature will continue to re-broadcast your transactions until they are received back from at least one other node, but will not do that with transactions received from other nodes. This

could still be used to deduce that your node was the source of a transaction, in case the initial attempt to send it failed, and it was re-broadcasted (but somebody already observed the failed first attempt).

  • Выделен блок логики форжинга в класс Generator , который может использоваться клиентами Java API, чтобы начинать и прекращать форжинг.
  • Добавлены API функции startForging и stopForging. Параметры: secretPhrase, требуется для старта и остановки действий.
  • Исправленные незначительные ошибки. Исправленный ошибка в узле связанные с контролем загружаемого трафика.

90 Версия 0.7.2

9 февраля 2014

  • Улучшена производительность сканирования цепочки блоков.

91 Версия 0.7.1 / 0.6.2

8 февраля, 2014

  • Исправлена ошибка в вычислении гарантируемого баланса, который мог в некоторых случаях привести к эффективному балансу выше, чем фактический баланс. Так как это изменение может произвести ветвление, переключение к корректному вычислению произойдет после генерации блока 64000. Все должны обновиться или до 0.7.1 или до 0.6.2 перед блоком 64000, или мы получим ветвления..
  • Улучшенная проверка корректности узлов чтобы не допускать синтаксические ошибки, не вычисляемые адреса, в списках узлов.
  • Реализована возможность регистрировать всю отладочной информации в файле журнала. Все, что было выведено в консоли будет также зарегистрировано к файлу nxt.log. Это должно помочь в работе с отчетами об ошибках в случае катастрофических отказов и ошибок, поскольку теперь закрытие вашей консоли не приведет к потери данных (об ошибке). При каждом перезапуске сервера, файл nxt.log будет перезаписан.
  • Очищены метки (hallmark) и авторизация по токенам. Добавлены классы Token и Hallmark , которые теперь могут использоваться разработчиками клиентов на Java для генерации и проверки токенов и клейм (hallmarks), без задействования интерфейса http.
  • Улучшено журналирование отказов при работе с блоками, и событий с блоками, теперь регистрируется идентификатор блока и причина проблемы.
  • Улучшен механизм помещения узлов в "черный список",при занесении узла в "черный список" регистрируется причина таких действий. Http запросы от помещенных в черный список узлов, теперь полностью игнорируются.
  • Все API запросы управляются классами через nxt.http, видимым в javadoc документации, чтобы использоваться при документирования параметров и возвращаемых значений http API.
  • В линейке версии 0.7. не было обнаружено каких либо ошибок при работе с базой данных.
  • Все вышеупомянутые изменения были применены и к версии 0.6 и к версии 0.7. Я призываю людей тестировать версию 0.7.1, так как не вижу особого смысла в очень длительной поддержке и развитии версии 0.6, если мы не обнаружим проблемы с версией работающей с базой данных (0.7.х).

92 Версия 0.7.0e

6 февраля, 2014

  • Это первая версия Nxt клиента, которая использует встроенную базу данных Java (H2), чтобы хранить blockchain, вместо объектных файлов Java. Поскольку это существенное изменение, эту версию нужно считать экспериментальной.
  • blocks.nxt и transactions.nxt и .bak файлы больше не используются.

Кроме того, они не будут загружены при старте клиента. Когда вы запустите клиента первый раз у вас будет создана пустая база данных, которая будет автоматически заполнена загруженными данными blockchain из сети.

  • База данных сохраняется в каталоге nxt_db каталогом, и на данный момент, после полной загрузки, будет занимать порядка 100 Мбайт. Если что-нибудь пошло не так, вы можете просто удалить каталог nxt_db. После этого база данных будет пересоздана автоматически, и заполнится актуальными данными. (прим. Dr.NXT: Предполагаю что перед удалением стоит остановить клиента, и после удаления запустить по новой.)
  • В файле web.xml файле нет никаких отличий по отношению к версии 0.6.1. Я добавлю параметры настройки базы данных позже, в случае необходимости.
  • База данных будет использовать 50% памяти, доступной Java для ее кэша. Фактическое значение будет отображаться при старте клиента.
  • На данный момент в базе данных хранятся только блоки и транзакции, все остальное (аккаунты, псевдонимы, активы, заказы, сообщения,...) загружаются при старте хранятся в памяти. При этом, объем памяти, которая необходима для хранения этих данных значительно меньше, чем ранее требовалось для хранения блоков и транзакций.
  • При старте сканирование blockchain занимает немного больше времени, чем раньше, и это нормально. Если что-либо еще будет заметно медленнее, чем в предыдущих версиях, то я изучу проблему и оптимизирую это.
  • Отсутствуют какие либо новые видимые функций по сравнению с 0.6.1, код сохранен и синхронизирован (включая критические bugfixes). Наличие в сети клиентов 0.6.1 и 0.7.0e на узлах сети не должно приводить к ветвлениям. Я буду поддержите и 0.6.x и 0.7.x ответвления в течение некоторого времени, до выявления и исправления известных проблем. Пожалуйста сообщайте о выявленных проблемах, желательно предоставлять трассировку стека.

93 Версия 0.6.1

6 февраль 2014

  • Исправлена незначительная ошибка в критическом bugfix версии 0.6.0. Исправление не критическое, но не помешает обновиться !
  • Портированы некоторые незначительные изменения из версии 0.7.0.
  • Улучшена обработка некорректной работы узлов, публикующих неверные адреса.

94 Версия 0.6.0

5 февраля 2014

  • Суть критического bugfix - будет раскрыта несколько позже (см. UPD). Это документ включает только описание отличий 0.6.0 от 0.5.12

UPD: Несколько дней назад один парень, нашел уязвимость в Blockchain.Info и подобрав секретную фразу генезисной учетной записи Nxt, нашел дефект безопасности в криптографическом алгоритме NRS. Дефект позволял создавать транзакции, которые приведут к увеличению сумм перевода, дважды, трижды и т.д. Обнаружив этот дефект он провел аудит класса Crypto и выиграл специальный приз, который мы собрали именно для такого случая.

Я не могу раскрыть детали дефекта, т.к. это вне моей области знаний. Вы можете связаться с ним непосредственно через nextcoin.org форум.

Дефект был исправлен и все, кто обновил до версии 0.6.0 и выше, находятся в безопасности. Пользователи более старых версий находятся в безопасности только пока они соединены с узлами версий 0.6.0 и выше.

  • 0.5.x доработка этой линейки сильно отвлекало от полного пересмотра кода версий 0.6.x и 0.7.x. Поэтому, я решил становить поддержку 0.5.x полностью перейти к развитию версии 0.6.x.
  • Последний bugfix в 0.5.12 не был полным, и все пользователи сети должны

обновиться до 0.6.0 как можно скорее. 0.5.12 имеет недостатки, который уже не будут исправляться.

  • 0.6.x версия все еще использует сериализированные объектные файлы, однако они обратно не совместимы с 0.5.x. Старые blocks.nxt и transactions.nxt файлы версии 0.5.x будут автоматически преобразован в новый формат, при первом запуске клиента версии 0.6.0.
  • blockchainStoragePath параметр в web.xml больше не используется.
  • Код клиента был значительно пересмотрен и больше не поставляется как единственный файл Java. Все классы, используемые в клиенте Nxt, теперь вынесены в собственные файлы.
  • Все пакеты nxt верхнего уровня, и соответственно servlet-class параметры в web.xml должен быть изменены на nxt.Nxt. Извините, что я забыл об этом упомянуть при выпуске версии 0.6.0:

<servlet-name>Nxt</servlet-name> <servlet-class>nxt.Nxt</servlet-class>

  • Теперь существуют три подпакета, nxt.user, nxt.peer, и nxt.http, которые отдельно отвечают за обработку запросов к UI (пользовательский интерфейс), peer to peer, и http API запросов, соответственно
  • Вся бизнес-логика была перемещена из класса сервлета Nxt.
  • Новая иерархия Transaction.Type была введена чтобы обрабатывать всю логику для проверки допустимости транзакции, дополнительной обработки транзакций и транзакций приложений. Это решение полностью заменяет переключатели статуса, которые использовались для проверки транзакций и логики основных процессов.
  • Отмена транзакций в блоках pop-off была реализована для тех транзакций которые могут быть отменены. При срабатывании триггеров UndoNotSupportedException triggers происходит полное пересканирование blockchain.
  • Пользовательское исключение NxtException теперь используется, чтобы улучшить работу с блоками и проверкой транзакций. Most transaction and block parameters are now enforced to be valid in the Transaction and Block constructors, which makes it sort of difficult to forget to validate them.
  • Было применено много незначительных и значительных исправлений для повышения производительность и оптимизации памяти, на основе фактических замеров профилей.
  • Все поля и методы доступа были пересмотрены. Никакие поле или методы Java доступны не более чем это необходимо. Все, что должно быть "private", теперь "private". Все, что должно быть "final", теперь "final".
  • Все результаты возвращаемые JSON и обработки ошибок были очищены и оптимизированы.
  • Ненужный ByteBuffer используемый в блоках и обработках транзакций был удалены.
  • Предел deadline теперь не может быть больше 1440 минут для обработки новых транзакций.
  • Узлы которые публикуют некорректные блоки или некорректные данные транзакций, автоматически помещаются в черный список.
  • Документация API Java теперь доступна по ссылке http://localhost:7874/doc/, весь API подвержен изменениям, идет активная работа.
  • Незначительные изменения UI: добавленные предупреждения в окне разблокирови учетной записи и message.html, добавлен sendMoney на странице admin.html.

Новые или улучшенные API:

  • getAccount

параметр: учетная запись (идентификатор учетной записи) возвращает: открытый ключ (если известный), баланс, эффективные/подтвержденный баланс (effectiveBalance), общий баланс активов.

  • getAsset

параметр: актив (идентификатор актива) возвращает: accountId - идентификатор аккаунта который выпускает актив, имя актива, описание и количество

  • getAssetIds

возвращает: все существующие идентификаторы актива.

  • getAskOrderIds и getBidOrderIds теперь требуют параметра актива и возвращают

идентификатор заказа только для указанного актива.

95 Версия 0.5.12

5 февраля 2014

  • Исправлена критическая ошибка. Всем пользователям следует немедленно обновить версию.

96 Версия 0.5.11

30 января, 2014

  • Решенные проблемы производительности в getState, getEffectiveBalance и getGuaranteedBalance. При вычислении getGuaranteedBalance теперь использует другой алгоритм что может в некоторых случаях дать результаты отличающиеся от вычисленных в версии 0.5.10 guaranteedBalance (у которого были некоторые ошибки), таким образом, желательно, чтобы все обновились до версии 0.5.11, чтобы избежать риска ветвления.
  • Исправленный ошибка с установкой открытых ключей учетных записей, которые сгенерировали блоки без исходящих транзакций.

97 Версия 0.5.10

23 января, 2014

  • Это - выпуск bugfix. Все пользователи версии 0.5.9 и более ранних должны обязательно обновить.
  • Исправлял ошибку в Прозрачном Форжинге. Это исправление вступив силу после генерации 51000 блока. Пользователи, которые не обновлят клиент до генерации этого блока, не смогут принять участи в форжинге/добыче монет.
  • Исправлена незначительная ошибку в вычислении веса узла.
  • Отчет о выполнении работ:
    • Рефакторинг для версии 0.6.0 идет полным ходом. Проект Nxt теперь состоит из 86 файлов Java вместо 1. Разработка продолжается, на следующей неделе будет проведена работа над сохранением блоков и транзакций в базе данных. Это пока не планируется реализовать в версии 0.6.0, потому что это решение не содержит нового для пользователей, какие либо новые видимые функции. К тому же первые выпуски 0.6.х вероятно, будет менее стабильна, чем 0.5.x линейка.

Срочные bugfixes и новые API, в случае необходимости, будут добавлены еще к динейке 0.5.x. Любые проекты которые планировали клонировать Nxt, в связи с чем нетерпеливо ждали линейку версии 0.6.x , для того чтобы получить бесплатно выгоду из моей работы по рефакторингу, будут вынуждены продолжать ожидать, до тех пор пока разработчики не достигнут результата.

98 Версия 0.5.9

19 января, 2014

  • Занимался решением оставшихся вопросов параллелизма потоков в обработке транзакции и блока. Все ошибки "null pointer exceptions", о которых сообщали, а также ошибка деления на нуль и связанные с этим ошибки больше не должны повторяться. Если Вы заметите какие-либо ошибки в журнале, сообщите о них в нашей базе данных ошибок: https://bitbucket.org/JeanLucPicard/nxt-public/issues
  • Добавлены API функции связанные с Asset Exchange: getAskOrder, getAskOrderIds, getBidOrder, getBidOrderIds, getAccountCurrentAskOrderIds, getAccountCurrentBidOrderIds.
  • Исправлена проблема, возникающая во вкладке "Recent Blocks" в браузере,при увеличении количества загруженных блоков до 60. Это позволит избежать торможение/замедление работы браузера и зависания во время загрузки blockchain с нуля.
  • Добавленная повторная широковещательная трансляция транзакции. Чтобы удостовериться что новая транзакция была получена сетью, она будет повторно передаваться каждую минуту, пока она не появится в списке неподтвержденных или подтвержденных транзакций.
  • Журналы отладки теперь стали более тихими, фактически я не наблюдал исключений за прошедшие 24 ч тестирования этой версии. Все должны протестировать эту версию, поскольку я надеюсь, что это - действительно стабильная версия. Внимание: все те кто еще используют версию 0.5.7 будут помещены в черный список, если они не обновятся, потому что они продолжают широковещательно передавать некорректные блоки JSON и будут рассматриваться как "зомби".

99 Версия 0.5.8

16 января, 2014

  • Устранена проблема параллелизма потока, которая является вероятной причиной ошибок OutOfMemory, с которыми некоторые столкнулись. Это критическое исправление, все пользователи версии 0.5.7 обязательно должны обновиться до версии 0.5.8.
  • Добавлен "type" и "subtype" фильтры для API функции getAccountTransactionsIds.

100 Версия 0.5.7

15 января, 2014

  • После оптимизации использования памяти и ЦП, этот выпуск посвящен оптимизации работы в сети. Теперь, вместо отправки всем узлам, данные отправляются только 10 узлам по умолчанию. Их число устанавливается в файле web.xml, в параметре sendToPeersLimit. Это должно привести к уменьшению сетевого трафика и также должно значительно уменьшить время ожидания при отсылке транзакции. Кроме того, отправка теперь сделана параллельной, используя пул 10 потоков, что означает, что медленные узлы не будут задерживать отправку данных всем остальным узлам.
  • Несколько исключений, найденных в отчетах отладчика, а также несколько сетевых исключений, которые, как известно, были безопасны, будут теперь проигнорированы. Журналы отладки стали еще более "спокойными", теперь даже с включенной отладкой, поэтому, я решил по умолчанию активировать параметр nxt.debug в nxt.ini.
  • Прозрачный Форжинг фазы 2 стартует после генерации 47000 блока. Все должны обновиться как минимум до версии 0.5.7, прежде чем этот блок будет достигнут, иначе мы можем получим ветвления.
  • На странице message.html добавлен инструмент Wesley's для отправки сообщений

101 Версия 0.5.6e

13 января, 2014

  • Исправлена ошибка при логировании и обработке исключений. Теперь есть два системных свойства, которые помогут собирать расширенную информацию: nxt.debug и nxt.enableStackTraces. Они описаны в start.d/nxt.ini:

    # Enable debug messages
    #-Dnxt.debug

    # Also enable exception stack traces
    -Dnxt.enableStackTraces

    # Disable all jetty warnings and info
    -Dorg.eclipse.jetty.LEVEL=OFF
  • По умолчанию, nxt.debug отключены(не активны). Если вы хотите получать расширенное логирование, пожалуйста активируйте эту функцию путем раскомментирования строки -Dnxt.debug в nxt.ini, и передавайте любые ошибки в наш JIRA в трекер Bitbucket:
    https://bitbucket.org/JeanLucPicard/nxt-public/issues
    Постарайтесь избегать дублирования ошибок, предварительно ознакомившись с уже опубликованными ошибками, возможно выявленная вами ошибка уже была заявлена.
  • Параметр nxt.enableStackTraces активирует запись трассировок стека ошибок в журнал, независимо от состояния nxt.debug, Вы должны оставить его включенным.
  • С закоментированным nxt.debug, Nxt все равно будет регистрировать часть ошибок в журнале, но их количство будет очень малым. Если появится критическое исключение/ошибка, то они будут зарегистрированы, даже если nxt.debug будет не активен.
  • Создающая много записей система журналирования Jetty отключена, теперь в журналах будет меньше лишней информации. Если вы хотите наслаждаться сообщениями Jetty , раскомментируйте строку -Dorg.eclipse.jetty.LEVEL=OFF в start.d/nxt.ini, только не публикуйте данные оттуда как ошибки.
  • Причина по которой этот выпуск также можно считать экспериментальным, состоит в том, что я обновил Jetty с версии 9.1.0 до 9.1.1.v20140108. Все пользователи могут протестировать насколько качественно все работает/не работает, выявить проблемы и несовместимости.

102 Версия 0.5.5

11 января, 2014

  • Добавлена функция API getGuaranteedBalance:

    http://localhost:7874/nxt?requestType=getGuaranteedBalance&account=account&numberOfConfirmations=numberOfConfirmations

    Возвращает подтвержденный баланс аккаунта. Рассматриваются только те транзакции у которых количество подтверждений >= значения numberOfConfirmations.
  • API функции getAccountBlockIds and getAccountTransactionIds теперь возвращают результат в сортированном виде.
  • Добавлены getAccountPublicKey and getGuaranteedBalance на страницу admin.html.
  • Другие решения для оптимизации производительности.

103 Версия 0.5.4e

10 января, 2014

  • Добавлен сервис Произвольных Сообщений (Arbitrary Messages), функционал будет доступен после генерации 40000 блока.
  • Добавлены новые API запросы:

Это даст возможность учетной записи создать блок, который будет вычислен пользователем как myEffectiveBalance/totalEffectiveBalance.

  • Улучшенное потребление памяти и оптимизация производительности, чтобы уменьшить нагрузку на GC и общие требования к памяти. Должно работать с параметром запуска Java -Xmx512M в случае необходимости, конечно чем больше будет выделено памяти тем лучше, но это не является обязательным. Я надеюсь, что пользователи Raspberry будут довольны этим выпуском
  • Это экспериментальный выпуск из за многократных экспериментов по оптимизации работы с памятью, но должен работать лучше, чем 0.5.3.

104 Версия 0.5.3

8 января, 2014

  • Исправлена ошибка пересканирования blockchain. При пересканировании удаляются неподтвержденные транзакции.
  • Улучшена проверка допустимости номера счета получателя. Не дает сделать перевод на номера со слишком большим номером, или отрицательным номером. Решение должно уменьшить вероятность, создания части некорректных транзакций, отправляемых неправильным получателям из-за ошибок пользователя

105 Версия 0.5.2

7 январь, 2014

  • Добавлена проверка допустимости numberOfTransactions и payloadLength, чтобы предотвратить атаки типа OutOfMemory.

106 Версия 0.5.1

7 января, 2014

  • Возможно решена проблема https://bitcointalk.org/index.php?topic=397183.msg4343616#msg4343616; требуется дополнительное тестирование. Пожалуйста сообщите о любых случаях появления отрицательных блоков и балансов, и включите журнал ошибки, если это возможно.
  • Исправлено помещение в черный список узлов помеченных hallmarked.
  • Учетные записи с отрицательными балансами не могут форжить.
  • Улучшенная проверка открытого ключа учетной записи.
  • Обновлен update.html для получения новейших версий и изменен url загрузки.
  • Исправлена ошибка недостающих идентификаторов транзакций в блоке "My Transactions".

107 Версия 0.5.0

Эту версию можно считать стабильной. Журнал изменений:

  • Устранена большая часть проблем параллельной обработки, оптимизирована производительность и проведена очистка кода. Я устранил все выявленные проблемы в коде, которые могли приводить к ошибкам, которые были описаны в TODO как ошибки и вопросы рефакторинга .
  • Добавлена контрольная точка для блока 30000 (блок, начиная с которого начнет работать прозрачный форжинг).
  • Добавлен контроль обновлений wesleyh's: https://bitcointalk.org/index.php?topic=345619.msg4294180#msg4294180
    • Используйте https://localhost:7875/update.html чтобы проверять наличие обновлений. В работе этого функционала еще могут находиться ошибки, и я его специально включил в данное обновление, чтобы пользователи протестировали его работу на разных браузерах.
  • Разработчики не смогли выявить причины заявленной критической ошибки при которой транзакции, посылаемые получателю, приходили не тому который был указан.

Я пересмотрел протокол еще раз, но не обнаружил возможных вариантов, при котором такая ситуация может возникнуть. Эту ошибку мы не игнорируем, и допускаем что ошибка может иметь место, но пока нам не удалось воспроизвести ошибку, и соответственно понять из за чего она происходит.

108 Версия 0.4.9e

Эту версию нужно считать ЭКСПЕРИМЕНТАЛЬНОЙ. В ней присутствует достаточно много изменений, поэтому надо понимать риски с вязанные с обновлением. Если вы не хотите рисковать - останьтесь на стабильной версии 0.4.8. Но наш узел NCC-1701-D без проблем работает на 0.4.9e со вчерашнего дня.

  • Многие параллельные обработки исправлены и оптимизированы. Это должно значительно улучшить работу и стабильность и уменьшить вероятность зависания клиента и необходимости его перезапуска.
  • Оптимизация производительности, сокращено количество временных объектов, создаваемых на узле. Требования к объему потребляемой памяти теперь ниже, на моих серверах потребление памяти никогда не превышает 1.5 ГБ. Вы можете запускать без проблем свой узел на VPS с 2 ГБ с параметром запуска среды Java -Xmx1536M. Если Вы не будете создавать много трафика (если не будете публиковать свой IP), то потребление памяти будет даже ниже 1 ГБ.
  • Теперь открыть аккаунт на одном локальном сервере можно только в одном окне браузера. Если у вас были открыты на этом же сервере другие окна с этим же аккаунтом, они будут автоматически закрыты(заблокированы).

Другими словами, если Вы открываете несколько окон браузера на одном и том же сервере (localhost), Вы можете войти в свой аккаунт только в одном окне, в остальных аккаунт автоматически заблокируется. При этом, если вы откроете свои аккаунты на разных серверах, подобного не произойдет, т.е. у вас будет запущенно несколько копий вашего аккаунта (хотя делать это не рекомендуется)

  • При генерации авторизационного ключа, система также запросит у вас секретную фразу
  • Как Вы заметили (а возможно не заметили), Прозрачный Форжинг уже начал работать. Мое решение начать этот процесс с блока 32000 не было корректно реализовано в версии 0.4.8 (я допустил ошибку), и получилось что в версии 0.4.8 процесс начинался с 30000 блока. Так блок 30000 был достигнут - процесс работает.
  • Незначительные изменения: Добавлены функции Get Account Aliases, Get Alias URI, и Get Multiple Account Balances на странице the https://localhost:7875/admin.html. Добавленный несколько достаточно известных узлов в web.xml.
  • Есть один серьезный вопрос безопасности, который не полностью исправлен в версии 0.4.9e. Все URL запросов хранятся в кешэ браузера, при этом они не сохраняются в истории браузера(это объясняет почему мы раньше не обнаружили эту проблему). Проверьте у себя используя about:cache (в Firefox).
  • И немного о плохом, учитывая вышесказанное получается что что Ваша секретная фраза хранится на диске в открытом виде, в кешэ браузера. И я уверен что рано или поздно появятся javascript exploits которые смогут извлекать его. Чтобы действительно исправить эту проблему, все API запросы к браузеру, которые включают секретную фразу, должны быть посылаться как POST запросы, вместо GET. Но это потребует существенных изменений в javascript клиента, что потребует значительного времени.

Поскольку мы не планируем поддержать только javascript клиент, я не уверен, что необходимо из за этого переписывать весь код. В 0.4.9e я, по крайней мере, добавил код в заголовок ответа, который предотвращает кеширование на диск. Firefox реагирует на это, но все равно кеширует URL запросы в памяти. Чтобы гарантировать безопасность, я настоятельно рекомендую использовать отдельный профиль браузера только для доступа к Вашему клиенту Nxt или использовать приватный режим просмотра. Все пользователи версии 0.4.8 и более ранних, должны обязательно очистить кэш своего браузера

109 Версия 0.4.8

  • Добавлен Прозрачный Форжинг, Начнет работать после генерации 30000 блока.
  • Исправлены проблемы с утечкой памяти.
  • Отправка монет NXT из браузера теперь обязательно запрашивает секретную фразу для подтверждения перевода.
  • Добавлен еще один новый параметр в web.xml, myPlatform. Это используется, чтобы объявить о Вашей платформе - PC, Mac, Raspberry, NeXTstation, VAX, zombie...
  • Начиная с этой версии, установочный zip-архив не содержит файлы blocks.nxt и transactions.nxt. Убедитесь, что Вы сохраняете свои собственные *.nxt файлы перед обновлением!


110 Версия 0.4.7e (версия, исходные коды которой открыто публикуются)

  • Alias System не включена в источник, поскольку это - расширенная функция.
  • Прозрачный Форжинг также не включен, поскольку этот функционал будет выпущен только в 0.4.8 версии. Поэтому клиенты которые будут скомпилированы из этого исходного кода, смогут работать только до генерации 30000 блока на текущем blockchain.
  • Все мои исправления проблем с утечкой памяти и оптимизации производительности, которые войдут в версии 0.4.8 и 0.4.9e, также не включены.
  • Только для ознакомления, раздел загрузок содержит скомпилированный 0.4.7e двоичный пакет. Json-базовые библиотеки и Jetty библиотеки будут необходимы, чтобы скомпилировать исходный код Nxt.java. Как объяснено выше, этот двоичный пакет устарел и не будет работать с текущим blockchain за пределами 30000 блока.

111 Версия 0.4.6

  • Единственное отличие от версии 0.4.5 это включенные файлы blockchain

112 Версия 0.4.5

  • Небольшие исправления связанные с ошибкой переполнения.

113 Версия 0.4.4

  • Добавлено Jetty DoSFilter (благодарность Edward Elric)
  • Добавлены параметры myScheme, myPort и shareMyAddress (установите им правильные значения, они будут использоваться в следующей версии),
  • Добавлен параметр enableHallmarkProtection, установите этот параметр в"false" если Вы хотите выключить защиту blacklistingPeriod устанавливаемую в миллисекундах вместо секунд!
  • logPeerCommunication заменен на communicationLoggingMask (1 - журнал исключений/ошибок, 2 - журнал с ответами HTTP кроме 200 кода, 4 - журнал с ответами HTTP, только с 200 кодами), значения маски могут быть объединены стандартным способом
  • Блок feeding chunks увеличен с 128 KiB до 1 MiB.

114 Версия 0.4.2

115 Версия 0.4.1e

  • Добавлена поддержка для CORS (http://publicnxtnode.com:7874/nxt?requestType=getAliasURI&alias=Google только запрос, включен для проверки proof-of-concept)
  • JS-скрипты могут заменить псевдонимы Nxt соответствующим URIs при помощи XMLHttpRequest и document.links
  • Оптимизированная алгоритм выбора транзакция. Блоки будут заполнены на максимальную емкость, предыдущий алгоритм не выбирал транзакции с низкой комиссией, чтобы заполнить маленькие зазоры.

116 Версия 0.4.0

117 Версия 0.3.20

  • Добавлена API функция http://localhost:7874/nxt?requestType=getAccountId&secretPhrase=123 Возвращает номер кошелька связанного с указанной секретной фразой.
  • Изменен вызов API функции "sendMoney" (теперь эта функция также возвращает байты транзакции)
  • Исправлено "unconfirmedBalance" - проблема с транзакциями которые находятся в неопределенном состоянии.
  • Исправление в API функции "getBalance" при вызове для аккаунтов из генезисного блока (смотри https://nextcoin.org/index.php/topic,658.0.html), теперь общее предоставление NXTs может быть определено, через вызов http://localhost:7874/nxt?requestType=getBalance&account=1739068987193023818 (кто-то должен сказать об этом владельцу coinmarketcap)
  • Добавлена страница http://localhost:7874/admin.html разработка Jean-Luc
  • Добавлены параметры "pushThreshold" и "pullThreshold" в web.xml, они помогают определить минимально допустимый уровень веса для узла для отсылки/получения данных (если Вы отправляете много платежей, Вы должны установить значение pushThreshold в 1 или более, но это увеличивает шанс, что транзакции не будут замечены большинством узлов)
  • Удален файл peers.nxt для соответствия стандартам безопасности BCNext

118 Version 0.3.19e

  • Добавлены параметры "peerScheme" и "peerPort" d web.xml. "Это сделано для миграции на HTTPS и другие порты .
  • Добавлен параметр "maxNumberOfConnectedPublicPeers" в web.xml. Ваш узел будет продолжать попытки соединения с общедоступными узлами, пока это число не будет достигнуто. Предыдущая версия продолжала подключаться к публичным и частным узлам, пока их количество не достигало <100
  • Был удален код связанный с решением "Цветные Монеты" (в связи с подготовкой исходного кода к открытой публикации). Теперь Вам не придется копировать столько .class файлов.
  • Была предпринята попытка устранить проблему загрузки blockchain с зависанием сообщения "Catching up...". Я удалил это сообщение его из .html файлов полностью, таким образом, Вы не будете видеть его больше... Это - шутка, я также изменил несколько строк серверного кода. Теперь блоки загружаются значительно быстрее (2 минуты по сравнению с 30 минутами в предыдущей версии), и Вы не должны блокировать/разблокировать учетную запись, чтобы "разморозить" зависший виджет "Recent blocks"/"Полученные блоки"(я надеюсь). Я не смог проверить, как изменения обрабатывают blockchain, когда появляются "осиротевшие"/"orphaned" блоки, именно по этому эта версия "экспериментальная". Если возможно - установите это обновление и сообщайте, если вы заметите хотя бы один "осиротевший"/"orphaned" блок, или заметите, что blockchain прекратил увеличиваться.

119 Версия 0.3.18

11 декабря, 2013

  • Включена hallmark защита для исходящих запросов
  • Добавленный код для использования нестандартных портов для обмена данными между узлами сети
  • Добавлен код, для миграции к другому формату файлов blockchain file format (проверка "blockchainStoragePath" в web.xml, вы можете использовать абсолютный путь)
  • Добавлен API вызов http://localhost:7874/nxt?requestType=getUnconfirmedTransactionIds - получение списка всех не подтвержденных транзакций.
  • Если Вы объявляете об адресе своего узла через "myAddress" вы должны установить его в значение возвращаемое параметром "host" из вызова функции http://otherserver.com:7874/nxt?requestType=getMyInfo. В одной из следующих версий узлы начнут проверять, что он соответствует адресу, возвращаемому из запроса http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
  • Больше информации о hallmark защите
    • Теперь помеченные (hallmark) узлы будут привлекать больше трафика. Есть 2 типа исходящих запросов - Send (для получения неизвестных неподтвержденных транзакций, для загрузки blockchain) и SendToAll (для публикации блоков и транзакций).

Send выбирает один из связанных узлов в зависимости от их веса (механизм взвешенного случайного выбора сделан), узел с весом = 0 рассматривают как имеющий вес = 1. SendToAll отправляет данные узлам согласно их весам в порядке убывания.

120 Версия 0.3.17

10 декабря, 2013

  • Удален файл accounts.nxt, данные генеририруются на лету. Если вы увидите некорректный баланс - перезапустите клиент (но обязательно сообщите о этой ошибке, так как я на данный момент не могу воспроизвести эту ошибку).
  • Активирован механизм автоматизации работы с черным списком. Теперь необходимо задавать параметр "blacklistingPeriod" (в секундах) в файле web.xml для автоматического удаления узла из черного списка, через указанное время, после попадания в черный список.
  • Добавлена API функция http://localhost:7874/nxt?requestType=getPeers для получения списка всех узлов сети. Подробная информация о отдельном узле, может быть получена через вызов функции http://localhost:7874/nxt?* requestType=getPeer&peer=88.198.210.245.
  • Значок Trash теперь работает для удаленных пользователей, если allowedUserHosts установлен во что-нибудь кроме "*".


121 Версия 0.3.16

8 декабря, 2013

  • Доступно "allowedUserHosts".
  • Добавлен параметр "logPeerCommunication" в web.xml
  • Добавлен API вызов http://localhost:7874/nxt?requestType=getPeer&peer=88.198.210.245 - позволяет получить развернутую информацию о указанном узле
  • Добавлен API вызов http://localhost:7874/nxt?requestType=getConstants - позволяет получить все доступные узлу константы и их значения
  • Заблокирован blacklisting (для тестирования работы узлов при работе с механизмом выбора)
  • Добавленная визуализация веса узла

122 Версия 0.3.15

7 декабря, 2013

  • Теперь список известных узлов в 0.3.15 формируется и указывается более гибко и удобно. Посмотрите параметр "wellKnownPeers" в nxt/webapps/root/WEB-INF/web.xml. Его можно спокойно менять, прописывая необходимые вам данные.
  • Добавлен параметр "myHallmark" в web.xml. Если Вы - владелец значительных сумм в NXT, Вы должны запустить свой собственный узел(лы), доступный в Интернете, чтобы защитить сеть. Hallmark используется, чтобы отметить такие узлы.

123 Версия 0.3.14

6 декабря, 2013

  • Устранена проблема округления в браузере Opera.

124 Версия 0.3.13

5 декабря, 2013

  • Добавлено предупреждение, когда секретная фраза имеет длину <30 символов.
  • Добавленная дополнительная проверка допустимости транзакции (для @hacker: попробуй повторить свой прием снова)

125 Версия 0.3.12

5 декабря, 2013

  • Обновление, только если Вы используете версию 0.3.11 и хотите генерировать блоки. Содержит временное обходное решение против неподтвержденных задублированных транзакций

126 Версия 0.3.11

5 декабря, 2013

  • Стал доступен API вызов "sendMoney".
  • Устранил проблему устаревших неподтвержденных транзакций (@anonymousHacker: проверь это пожалуйста).
  • Устранены некоторые проблемы, связанные с утечкой памяти при работе клиента.

127 Версия 0.3.10

4 декабря, 2013

  • Вызовы API теперь доступны на портах 7874 (http) и 7875 (https).
  • Изменен формат вызова API запросов с вида localhost:7876/?request=XXX на localhost:7874/nxt?requestType=XXX
  • Добавлено 2 параметра в web.xml:
    • "allowedUserHosts" (сейчас пока не активно) и "allowedBotHosts". Пример значения "allowedBotHosts" - "*" для всех узлов или "173.194.70.102; 204.79.197.200" для указанных.
  • Поскольку быстрый веб-интерфейс был "отключен", удалите все *.html файлы в папке "nxt/webapps/root".

128 Версия 0.3.8

4 декабря, 2013

  • Переписан Web интерфейс.
  • Теперь HTTP & HTTPS могут использоваться (http://localhost:7874 & https://localhost:7875). Последний предпочтительнее, если Вы используете "онлайн" кошелек. Браузеры покажут предупреждение о том что сертификат TLS самоподписаный, постарайтесь добавить этот сертификат в хранилище сертификатов браузера, чтобы избавиться от предупреждения.

129 Версия 0.3.6

3 декабря, 2013

  • Добавлен "черный список" узлов и некоторые изменения в интерфейсе .
  • Осталось немного ошибок в интерфейсе, если что-то не обновилось, используйте F5. К сожалению, я некоторое время не смогу делать исправления, так как кто-то разрушил мой узел, используя Jetty уязвимость. Сейчас мне необходимо в первую очередь исправить проблему Jetty уязвимости.

130 Версия 0.3.5

3 декабря, 2013

  • Уменьшен тайм-аут узла с 10 до 2 секунд. Это временное/обходное решение для попавших в черный список.

131 Версия 0.3.4

3 декабря, 2013

  • Обновите, если Вы заметили много неподтвержденных транзакций.
  • Анонимный хакер сделал нам одолжение и помог с задублированными транзакциями. В этой новой версии есть быстрое/обходное решение, чтобы избавиться от таких транзакций. К счастью блок проверки был в порядке и не позволял, чтобы блоки с задублированными транзакции включались в цепочку.

132 Версия 0.2.20

1 декабря, 2013

  • Включает только небольшие исправления предложенные Come-from-Beyond.

133 Версия 0.2.19

30 ноября, 2013

  • Исправления в интерфейсе, связанные с проблемой возникающей при очень длинном имени узла.

134 Версия 0.2.18

30 ноября, 2013

  • Изменения в механизме управления буфером для узлов API роботов

135 Версия 0.2.17

29 ноября, 2013

  • Некоторые незначительные изменения в интерфейсе, теперь Вы можете видеть идентификаторы транзакции. Установите это обновления, если у Вас есть проблема исчезающих транзакций.

136 Версия 0.2.16

28 ноября, 2013

  • Только для разработчиков

137 Версия 0.2.15

28 ноября, 2013

  • Добавлено 2 API функции

138 Версия 0.2.13

28 ноября, 2013

  • Небольшие исправления связанные с повреждением *.nxt фалов

139 Версия 0.2.12

27 ноября, 2013

  • Исправляет зависание "Catching up..."
  • Если все еще происходит зависание, необходимо удалить все Активные узлы один за одним, после удаления того узла с которого вы закачали blockchain, загрузка должна продолжиться с других узлов.

140 Версия 0.2.10

26 ноября, 2013

141 Версия 0.2.9

25 ноября, 2013

  • Обязательная для всех, кто остановился на 303-м блоке.

142 Версия 0.2.8 (минуя версию 0.2.3)

25 ноября 2013

143 Версия 0.2.1

24 ноября, 2013