Одновременный релиз двух обновлений: BSV v1.0.8 (бета) и mAPI v1.3.0 (бета)

By Press Release Published: 11 мая, 2021
2-upgrades-released-simultaneously-BSV-v1.0.8-(Beta)-&-mAPI-v1.3.0-(Beta)

Команда Bitcoin SV одновременно выпустила 2 обновления.

А именно:

  1. бета-версия ПО Bitcoin SV Node (обновление до версии 1.0.8);
  2. бета-версия mAPI v1.3.0.

 

Бета-версия ПО Bitcoin SV Node (обновление до версии 1.0.8)

Пользователям рекомендуется обновить ПО версии 1.0.7.1 до версии 1.0.8 (бета). В обновлении добавлена поддержка оповещений о попытках двойного расходования на удаленные конечные точки, такие как mAPI или пользовательские приложения. Также была улучшена производительность ПО, в частности обработка сложных графов зависимых транзакций.

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

  1. Поддержка транзакций с функцией оповещения о двойном расходовании; если замечено двойное расходование входных данных, на указанную конечную точку будет отправлено HTTP-уведомление. (Для получения более подробной информации, посетите страницу https://github.com/bitcoin-sv-specs/protocol ).
  2. Новый вызов удалённых процедур (RPC) — getorphaninfo.
  3. Новый RPC — verifyScript.
  4. Новый RPC — getmerkleproof2, соответствующий требованиям Комитета по ТС.
  5. В вывод RPC getsettings был добавлен параметр maxstackmemoryusageconsensus.
  6. RPC sendrawtransaction и sendrawtransactions теперь можно использовать совместно с dontCheckFees, даже если транзакция уже известна.
  7. RPC sendrawtransaction и sendrawtransactions были модифицированы для опционального возврата списка неподтвержденных родителей.
  8. Для определения пыли теперь доступен новый параметр конфигурации — dustlimitfactor. *
  9. Транзакции с возвратом пыли (dust return transactions). *
  10. Скорректирована максимальная продолжительность проверки по умолчанию для асинхронных задач в целях более эффективной работы с цепочками и длинными графами.
  11. Изменения в алгоритме: теперь используется значение высоты предшествующего блока вместо значения числа предшествующих блоков.
  12. Повышение скорости выпуска из пула потерянных транзакций.
  13. Повышение производительности за счет более эффективной обработки функции cs_main.
  14. Улучшена проверка цепочек.
  15. Транзакции не будут подтверждены, если в результате внутри мемпула возникает цепочка высотой 10 000 предшествующих блоков (неподтвержденных транзакций) или более. Ранее это значение было равно 1000 транзакций.
  16. Значение по умолчанию для параметра конфигурации maxorphantxsize было изменено на 1 ГБ.
  17. Параметр конфигурации maxcollectedoutpoints больше не используется и был удален.
  18. Система STN была сброшена.

 

*Дополнительная информация:

  1. Для определения пыли теперь доступен новый параметр командной строки: -dustlimitfactor

До сих пор минимальное соотношение между суммой выхода транзакции и соответствующей ей комиссией составляло 3 к 1. Если это условие не было выполнено, транзакция считалась «пылью» и отклонялась при проверке.

Теперь этот коэффициент можно настроить в процентах с помощью новой опции –dustlimitfactor. Коэффициент по умолчанию по-прежнему будет равен 300%, но может быть установлено любое значение между 300% и 0%.

Если значение –dustlimitfactor равно нулю, выход транзакции никогда не считается пылью.

Формула для расчета порога пыли выглядит следующим образом (целочисленная арифметика):

s — порядковый размер выхода транзакции;

d — dustlimitfactor, процентное значение между 300 и 0, по умолчанию — 300;

r — dustrelayfee, по умолчанию — default-minrelaytxfee, начиная с версии 1.0.8 — 250;

m = 148, минимальное количество байтов, расходуемых на вход;

d * (r * (s + m)/1000)) / 100.

Обратите внимание, что деление на 100 производится из-за того, что значение dustlimitfactor выражено в процентах.

Пример: для типичной транзакции с выходом размером 34 байта формула дает порог в 135 сатоши.

d = 300;

s = 34;

r = 250;

Порог = (300 * (250 * (34 + 148)/1000)) / 100 = 135.

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

Следовательно, при настройках параметров по умолчанию в версии 1.0.8, типичный выход транзакции должен составлять не менее 135 сатоши, чтобы не считаться пылью. Обратите внимание, что из-за округления рассчитанный порог пыли для примера транзакции становится равным 0, если значения dustlimitfactor и dustrelayfee очень малы.

 

  1. 9Транзакции с возвратом пыли

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

Транзакция считается транзакцией с возвратом пыли, если выполняются следующие условия:

  • транзакция имеет единственный выход с нулевой стоимостью (нулевой суммой);
  • scriptPubKey выглядит следующим образом:

OP_FALSE OP_RETURN n ‘dust’,

где n — длина идентификатора протокола, т. е. размер строки ‘dust’;

  • либо все входы стандартные, либо установлен следующий параметр конфигурации:
    -acceptnonstdconsolidationinput=1 (по умолчанию — 0);
  • должны быть разрешены нестандартные транзакции, т. е. должна быть установлена следующая конфигурация:
    -acceptnonstdtx=1 (по умолчанию — 1).

Обратите внимание, что транзакции с возвратом пыли имеют два общих параметра конфигурации с консолидированными транзакциями:

  • -acceptnonstdconsolidationinput (по умолчанию — false);
  • -minconsolidationfactor (по умолчанию — not zero. Установка коэффициента консолидации на 0 отключает консолидированные операции, а также операции возврата пыли).

 

Пример транзакции с возвратом пыли:

{
‘txid’: ‘7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc’,
‘hash’: ‘7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc’,
‘version’: 1,
‘size’: 226,
‘locktime’: 0,
‘vin’: [
{
‘txid’: ‘471e1070d48faf20b599b2291c5c7550f9152d6e3549987d85dae82f2e96e93f’,
‘vout’: 0,
‘scriptSig’: {
‘asm’: ‘616161616161616161616161616161616161616161616161616161616161616161
61616161616161616161
616161616161616161616161616161616161616161616161616161616161616161
6161616161616161616161616161
6161616161616161616161616161616161616161616161616161616161616161616
1616161616161616161616
161616161616161616161616161c2’,
‘hex’:
‘4c95616161616161616161616161616161616161616161616161616161616161
6161616161616161616161616
16161616161616161616161616161616161616161616161616161616161616161
616161616161616161616
161616161616161616161616161616161616161616161616161616161616161616
1616161616161616161616161616161
6161616161616161616161616161c2’
},
‘sequence’: 0
}
],
‘vout’: [
{
‘value’: Decimal(‘0.00’),
‘n’: 0,
‘scriptPubKey’: {
‘asm’: ‘0 OP_RETURN 11 647573745f72657475726e’,
‘hex’: ‘006a5b0b647573745f72657475726e’,
‘type’: ‘nulldata’
}
}
],
‘blockhash’: ‘380fe8631752b75ee3ce027bdf80e22f3445f4b620a9585b369fb9a0c3f2677e’,
‘confirmations’: 1,
‘time’: 1620224004,
‘blocktime’: 1620224004,
‘blockheight’: 208,
}

 

Бинарные файлы и исходный код можно загрузить здесь:

URL: https://download.bitcoinsv.io/bitcoinsv/

В случае возникновения технических вопросов, пожалуйста, направляйте их на электронную почту [email protected] или в Telegram по адресу https://t.me/bitcoinsvsupport.

 

Бета-версия ПО mAPI (обновление до версии 1.3.0)

Пользователям рекомендуется обновить ПО версии 1.2.0 до версии 1.3.0 (бета). В этом обновлении mAPI мы вводим поддержку получения уведомлений о двойном расходовании от удаленных узлов.

В дополнение к локальным узлам, которые подключены непосредственно к mAPI через подписку ZMQ, любой удаленный узел в сети BSV, который обнаруживает двойное расходование транзакции, содержащей адрес для уведомления о двойном расходовании, теперь может уведомить mAPI об обнаруженном двойном расходовании через функцию обратного вызова HTTP. Для получения более подробной информации, посетите страницу https://github.com/bitcoin-sv-specs/protocol .

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

Уведомления о доказательствах целостности блоков теперь могут использовать стандартный формат, установленный Комитетом по ТС. Формат возвращает заголовок блока в шестнадцатеричной кодировке в уведомлениях обратного вызова.

В число дополнительных улучшений входят поддержка параметров причины использования функции обратного вызова в URL-адресах обратного вызова, поддержка развертывания пользовательского сервера базы данных и дополнительные параметры конфигурации для улучшенной интеграции.

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

  • уведомления о двойном расходовании для неподтвержденных родителей;
  • поддержка конечной точки обратного вызова для уведомлений о двойном расходовании от удаленного узла;
  • добавлена поддержка уведомления о доказательствах целостности блоков в формате, установленном Комитетом по ТС;
  • добавлена поддержка параметра причины использования функции обратного вызова в URL обратного вызова;
  • поддержка развертывания пользовательского сервера базы данных;
  • опция конфигурации для отключения проверки комиссии;
  • возможность указания конечной точки ZMQ при регистрации узла с помощью mAPI;
  • возможность запуска mAPI по HTTP в целях разработки.

 

Бинарные файлы и исходный код можно загрузить здесь:

URL: https://github.com/bitcoin-sv-specs/brfc-merchantapi

В случае возникновения технических вопросов, пожалуйста, направляйте их на электронную почту [email protected] или в Telegram по адресу https://t.me/bitcoinsvsupport.

Спасибо за вашу неизменную поддержку Bitcoin SV!