Сегодняшний день отмечен официальным релизом Bitcoin Core 0.15.0 — пятнадцатого поколения оригинального программного обеспечения биткоина, запущенного Сатоши Накамото почти девять лет назад. Этот крупный релиз, вверенный главному разработчику Bitcoin Core Владимиру Ван дер Лаану, над которым работали почти 100 контрибьютеров в течение 6 месяцев, — также, благодаря крупным пожертвованиям от Chaincode Labs, Blockstream и MIT Digital Currency Initiative.
Bitcoin Core 0.15.0 обеспечивает значительную производительность и удобство использования по сравнению с предыдущими версиями программного обеспечения. Он также вводит несколько новых функций, позволяющих лучше справляться с текущим статусом сети.
Вот некоторые из наиболее заметных изменений.
Реструктуризация базы данных Chainstate
Одно из самых больших изменений по сравнению с предыдущими версиями связано с тем, как изменяется и сохраняется состояние блокчейна биткоина. Это «состояние блокчейна» (chainstate / UTXO-set) сохраняется в отдельной базе данных, тогда как ранее оно категоризировалось для каждой отдельной транзакции. Если одна транзакция отправляла биткоины на несколько выходных записей («адресов»), то информация об этих разных выходных записях сохранялась как одна запись в базе данных – со ссылкой на эту транзакцию.
Вместо такого подхода в Bitcoin Core 0.15.0 каждая из этих выходных записей хранится в одной записи базы данных. Если одна транзакция отправляет биткоины на разные выходные записи, то каждая запись хранится отдельно. Хотя этот метод требует большего объёма дискового пространства, он требует меньше вычислительных ресурсов, если одно из этих выходных слов будет позже использовано.
Наиболее чётко выраженным преимуществом этой новой структуры данных является то, что начальное время синхронизации для новых узлов уменьшается примерно на 40%. Она также представляет более простой код, уменьшает использование памяти и многое другое. Кроме того, она исправляет ошибку, которая теоретически может привести к краху узлов Bitcoin Core, — об этом шла дискуссия и на конференции Breaking Bitcoin на прошлой неделе в Париже.
Улучшенная оценка комиссии
Поскольку блоки биткоина за последний год или два переполнялись, не все транзакции могут приспособиться к первому блоку, который был добыт. Вместо этого, майнеры обычно определяют приоритеты для транзакций, которые включают в себя наибольшую комиссию. Если пользователь хочет быстрого подтверждения своей транзакции, то он должен включить в неё достаточно высокую комиссию. Если он не спешит, то ему подойдёт более низкая комиссия.
Тем не менее, сеть биткоина имеет присущую ей непредсказуемость с точки зрения скорости обнаружения блоков или количества транзакций. Это затрудняет определение правильной комиссии за транзакцию.
Bitcoin Core 0.15.0 снижает эту неопределённость: он включает в себя значительно улучшенные алгоритмы оценки комиссии. Это связано главным образом с тем, что программное обеспечение при расчётах учитывает больше данных, таких как комиссии, включённые в более старые подтверждённые транзакции, а также комиссии в неподтвержденных транзакциях — те, которых оказалось недостаточно.
Кроме того, пользователи смогут пользоваться большей гибкостью программного обеспечения. Во-первых, Bitcoin Core 0.15.0 впервые позволяет пользователям включать комиссии, из-за которых на подтверждение транзакций могут уйти недели. Кроме того, новизна в том, что пользователи смогут выбирать «большую» или «меньшую» степень риска задержки транзакций — на случай, если в сеть «нахлынут» другие транзакции.
Тэг «замена комиссии» — в пользовательском интерфейсе
Даже с улучшенной оценкой комиссии, возможно, что пользователям придётся ждать дольше, чем они хотят, — возможно, из-за внезапного притока транзакций в сети; а возможно, из-за того, что пользователь передумал и предпочёл подтвердить транзакцию быстрее, чем первоначально заплатил за неё; либо по другим причинам.
В этих случаях некоторые кошельки позволяют пользователям добавлять в свои транзакции тег «замена комиссии». По такому тегу узлы и майнеры в сети узнают, что отправитель может захотеть заменить эту транзакцию более новой транзакцией, которая будет включать в себя более высокую комиссию. Это позволит пользователям эффективно ускорить транзакцию в очереди, чтобы она была подтверждена быстрее.