Опубликована сборка 0.4.4.6u5

Новые апдейты v0.4.4.6-nvc-update5 включены в основную ветку.

  • Core: Функции создания подписи теперь генерируют подписи, защищенные от манипуляции значением S;
  • Core: Правила проверки формата скриптов приведены к боле строгому виду: DER формат для подписи теперь является обязательным, а последний аргумент CHECKMULTISIG теперь обязан быть пустым значением (это значение никак не используется и удаляется при подписывании/проверке подписи, а потому является источником возможных манипуляций содержимым);
  • Core: Многопоточная проверка скриптов, использование разделяемой блокировки для кэша подписей;
  • Core: Поддержка слежения за «недоступными» инпутами: возможен импорт адреса без добавления соответствующих ему ключей;

  • QT: Недоступный для траты баланс отображается на главной странице рядом с общим балансом;
  • QT: На странице отправки текущий баланс заменен суммой инпутов, доступных для траты;
  • RPC: getcheckpoint теперь возвращает информацию о чекпоинт-сообщении (версию, хэш блока, raw представление и подпись);
  • RPC: getblock (hash, true) и getblockbynumber (height, true) теперь возвращают массивы raw транзакций вместо их декодированного представления;
  • RPC: Добавлен вызов importaddress, позволяющий импортировать в клиент любые адреса, в том числе «чужие»;
  • RPC: Добавлено поле redeemScript в вывод listunspent, добавлена обработка этого поля в signrawtransaction.

Подробнее о генерации подписей новой версией клиента:

При подписывании транзакций сравниваем S в получившейся подписи с n/2. Если больше — вычитаем из него n, в противном случае ничего не делаем. Это позволяет избежать генерации подписей с неоправданно большим значением S, которое в дальнейшем может быть заменено на «нормальное» в новом варианте транзакции. Это позволяет закрыть данную возможность манипуляции содержимым транзакции. Аналогичная проверка с 20 сентября будет производиться перед добавлением транзакции в локальный пул. Если S больше n/2, то транзакция с такой подписью будет отклонена. Возможно, в дальнейшем реализуем рассылку «исправленного» варианта транзакции при получении, но пока в этом большого смысла нет.

Значение n здесь является одной из базовых констант для кривой secp256k1, подробнее в этом документе.

Подробнее о недоступных инпутах:

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

Возможные применения данной функции:

  • Создание на незащищенной машине кошелька-двойника для слежения за proof-of-stake майнингом, идущим на защищенной машине. Новые транзакции будут появляться в таком кошельке по мере появления их в оригинале;
  • Слежение за транзакциями на онлайн-сервисах (скрипты пополнения баланса на биржах и т.п., скрипты для слежения за статусами намайненных блоков на пулах);
  • Наблюдение за статусом интересующего адреса без регулярных визитов в эксплорер.

Q: Недоступные входы? Что это такое?
A: Это входы с адресами, за которыми можно наблюдать, но нельзя ничего с них тратить.

Q: Как это работает?
A: Вы можете импортировать адрес в клиент, не добавляя никаких соответствующих ему ключей.

Q: Как этим пользоватся?
A: Откройте RPC консоль и наберите: importaddress . Здесь должно быть заменено на адрес, за которым вы хотите наблюдать.

Q: Есть ли какие-нибудь ограничения на адреса, которые можно добавлять в клиент таким образом?
A: Нет, вы можете добавлять любые адреса, необязательно даже свои собственные.

Выполнив в консоли importaddress адрес, можно будет следить в своем клиенте за состоянием любого адреса. При этом, потратить с него пользователь что-либо не сможет, только посмотреть.

Сумма недоступных входов отображается на главной странице

Unspendable in main window Novacoin-Qt

и в выводе функции getinfo

Unspendable in console Novacoin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *