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