проверку возможно, вычисляя все «непотраченные выходы» по предыдущим
транзакциям в пользу данного отправителя. Также математически проверяется
соответствие цифровой электронной подписи отправителя указанному им
своему открытому ключу. Это нужно для того, чтобы удостовериться, что
отправитель транзакции обладает закрытым ключом от адреса, с которого он
собирается потратить деньги. Если транзакция успешно прошла все
необходимые проверки, то она попадает во временное хранилище, которое
называется «мемпул» (mempool).
Мемпул — это что-то вроде очереди транзакций, ожидающих, пока их включат
в блок. Каждый узел самостоятельно определяет размер мемпула, который он
будет у себя хранить. Разница между обычной очередью и мемпулом состоит в
различной форме приоритизации поступающих на обработку транзакций. Если
в обычной очереди данные обрабатываются в зависимости от времени их
поступления, то в мемпуле их ранжируют по величине комиссии, которую
отправители определили для своих транзакций. Как уже упоминалось, величина транзакционной комиссии устанавливается отправителем
самостоятельно, исходя из его пожеланий в отношении скорости включения
данной транзакции в ближайшие создаваемые блоки. Поскольку создатель
блока забирает всю комиссию по всем включенным в него транзакциям в свою
пользу, логично было бы предположить, что он будет в первую очередь
включать в блок транзакции с наибольшей комиссией.
Если учесть тот факт, что размер блока в сети Биткоин ограничен одним
мегабайтом, а средний размер транзакции составляет около 300 байт, то в
один блок можно поместить около 4000 транзакций, что само по себе
достаточно немного. Сеть Биткоин настроена таким образом, что каждый
новый блок создается примерно один раз в десять минут, поэтому пропускная
способность всей сети составляет около семи транзакций в секунду. В периоды
повышенной нагрузки на сеть, когда количество транзакций может
существенно возрасти, мемпул начинает сильно увеличиваться в своих
размерах, в то время как скорость включения транзакций в блоки уменьшается.
Поэтому, чтобы транзакция попала в новый блок как можно быстрее, отправители начинают увеличивать комиссию. В декабре 2017 года был
отмечен рекордный размер мемпула — около 140 мегабайт, при этом
количество транзакций, ожидающих обработки, превысило 200 000. Однако
уже спустя полгода напряжение в сети Биткоин существенно снизилось, величина мемпула упала до единиц мегабайт, а комиссия за обработку
транзакций вернулась к обычным значениям.
Как уже отмечалось, каждый участник сети, являясь равнозначным по правам с
остальными участниками узлов, получает на свое локальное устройство (как
правило, это обычный компьютер) всю информацию обо всех блоках и
транзакциях сети Биткоин. Поскольку база блоков со временем растет, объем
передаваемой для синхронизации информации постоянно увеличивается в
размере. Очевидно, что, если узел получил информацию о созданных блоках
ранее, ему уже не нужно ее обновлять, поскольку со временем она не
меняется. Тем не менее он должен продолжать получать информацию о вновь
создаваемых блоках, а также хранить у себя мемпул, куда постоянно
поступают новые транзакции, еще не включенные в блоки.
Все эти данные имеют существенный размер: по состоянию на весну 2019 года
объем базы данных Биткоин составлял около 570 000 блоков и занимал около
250 гигабайт на дисковом пространстве. Для тех, кто не желает выделять
место для хранения столь приличного объема данных, имеет смысл
воспользоваться возможностью получить статус «легкого клиента», когда
вместо всего объема информации он скачивает себе только заголовки блоков
без списка транзакций. В этом случае ему необходимо получить на свое
устройство всего лишь несколько сотен мегабайт информации, что
несопоставимо легче и быстрее, чем синхронизировать себе полную базу.
Однако в этом случае данный «легкий» узел сети не сможет участвовать в
создании новых блоков. Впрочем, этим занимаются далеко не все участники
сети — весной 2019 года в сети Биткоин насчитывалось около 10 000 полных
узлов, а число уникальных активно используемых адресов составляло около
640 000.
Исследуя принципы работы блокчейн в целом и сети Биткоин в частности, необходимо представлять себе механику создания новых блоков в
распределенной сети. Понятно, что в конец цепочки всегда добавляется только
один блок, который создается на тот момент только одним участником сети.
При этом вся остальная сеть должна с этим согласиться посредством
механизмов достижения консенсуса и синхронизировать у себя базу блоков
вместе с новым, последним созданным блоком. Однако, как мы могли
убедиться, количество полных узлов в сети исчисляется тысячами, и
потенциально каждый из них может независимо от других узлов создать свой
собственный блок и предложить его всей остальной сети для включения в
общую цепочку блоков. Из этого факта неизбежно следует, что в течение
небольшого временного интервала, исчисляемого минутами, в сети могут
возникать конфликтующие между собой блоки, претендующие на включение в
общую цепочку. Причем часть узлов может включить себе один блок, а часть —
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии