← Timeline
Avatar
Shmuel Leib Melamud
У кого длиннее

К оглавлению

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

В общепринятой терминологии биткойна страницы бухгалтерской книги называются блоками. Возьмем, например, один из недавно созданных блоков. В нем 2005 транзакций, суммарные комиссионные составляют 2.79144222 биткойна (примерно $6700). Обратите внимание на поле, обозначенное как “Nonce” - его значение равно 3975993266. Это и есть наша марка, наклеенная на блок. Она была подобрана таким образом, чтобы хэш блока начинался с 17 нулей в шестнадцатеричной системе счисления. Сколько вариантов при этом пришлось перебрать? Примерно 10 секстиллионов (10 миллиардов триллионов).

Как вы помните, марка зависит от всех транзакций в блоке и от марки, наклеенной на предыдущий блок. Таким образом, каждый блок оказывается прочно скрепленным с предыдущим блоком. Если вы захотите поменять одну транзакцию в блоке, марка этого блока сразу станет негодной, ее придется пересчитать. Из-за того, что марка изменилась, станет негодной марка следующего блока и ее тоже придется пересчитать - и так далее до самого последнего по времени блока. Блоки, как звенья - каждый цепляется за предыдущий - и все вместе образуют прочную цепь. Таким образом, бухгалтерская книга биткойна - это цепочка блоков - block chain - блокчейн.

Участники сети, которые соревнуются за право добавить в блокчейн новый блок, перекапывают тысячи тонн бесполезных чисел, чтобы найти одно нужное. Поэтому их называют майнерами (от английского miner - шахтер), а процесс поиска нужного числа - майнингом (mining).

Но что произойдет, если два майнера - Алиса и Боб - найдут нужную марку одновременно? Пусть даже не строго одновременно, а с разницей в несколько миллисекунд. Ведь на то, чтобы оповестить о новом блоке всю сеть биткойна по всему миру нужно время - и часть майнеров будет считать, что победила Алиса, а другая часть - что победил Боб. В результате, в сети появится два варианта последнего блока блокчейна - цепочка раздвоится.

Чтобы решить, кто же все-таки победил, нам придется подождать еще 10 минут. За это время группа поддержки Алисы будет пристраивать новый блок к ее варианту цепочки, а группа поддержки Боба - к его варианту. Победит тот, кому первым удастся удлинить цепочку. В этот момент, цепочка, например, Алисы будет длиной N+2 блока, а цепочка Боба - N+1.

Алиса будет объявлена победителем, ее цепочка станет единственной официально правильной, а блок Боба будет отброшен. А что произойдет с транзакциями, которые были записаны в блоке Боба? Большая их часть записана также в блоке Алисы, так что все в порядке. А остальным придется опять ждать следующего блока, чтобы быть записанными в него.

Таким образом, к алгоритму работы биткойна нужно добавить еще одно правило:

“8. Если есть два варианта цепочки блоков, правильной признается та, которая длиннее.”

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

Почему так важно, что выбирается всегда самая длинная цепочка? Вспомним, что поиски нужной марки - это блуждание в темноте, наткнуться на нее можно лишь по чистой случайности. Но чем больше усилий вы прилагаете, тем скорее вы ее найдете. Если мощность ваших компьютеров вдвое больше, чем у конкурентов, то и находить марки вы будете вдвое чаще и вдвое чаще будете выигрывать награду. Поэтому майнеры пытаются все время нарастить мощность своих ферм - использовать устройства, которые производят больше вычислений при меньших затратах энергии, установить больше устройств, переехать в места с дешевой электроэнергией и с более холодным климатом - чтобы меньше тратиться на кондиционирование. Майнеры биткойнов уже давно не используют для майнинга обычные компьютеры и даже видеокарты. Сейчас в ходу устройства с ASIC - специализированными микросхемами, умеющими выполнять только одну задачу - быстро вычислять хэши. Благодаря этому суммарная производительность всех майнеров достигла на сегодняшний день 6 эксахэшей (6 миллиардов миллиардов хэшей) в секунду.

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

Представим себе, что какой-то из майнеров решил изменить один из блоков - например, самый последний. Для этого он должен найти для него новую марку, причем успеть это сделать быстрее, чем за 10 минут. В противном случае, остальные майнеры успеют добавить к правильной цепочке еще один блок и фальшивая цепочка окажется короче - а значит, будет отброшена. То есть майнер-мошенник должен вложить в фальшивую цепочку столько мощности, сколько у всех остальных майнеров вместе взятых (то есть его мощность должна составлять 51% от мощности всей сети, включающей и его самого).

Если же он захочет поменять предпоследний блок, ему придется пересчитать марку для двух блоков - предпоследнего и последнего (ведь они связаны в цепочку) - и сделать это быстрее, пока все остальные не добавили всего лишь один блок в правильную цепочку. То есть его мощность должна быть вдвое больше, чем у всех остальных майнеров в сумме. И так далее.

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

Стоит ли говорить, что при колоссальной мощности сети биткойна получение одним майнером 51% от нее - явление близкое к невероятному. Не говоря уже о 66% и более. (Но даже если такое и произойдет (и происходило - на очень короткое время в ранние времена биткойна, когда мощность сети была гораздо ниже), даже такой майнер не сможет нанести существенный урон биткойну. Но мы не будем сейчас на этом останавливаться.)

Таким образом, чем больше суммарная производительность всех майнеров, тем защищеннее становится биткойн от подделок. А производительность майнеров зависит от их доходов. Чем ценнее становится биткойн, тем больше электроэнергии могут приобрести майнеры и тем больше оборудования они включают в работу. Расходы майнеров на электроэнергию можно сравнить в случае бумажных денег с расходами на изготовление более защищенных купюр, постройку мощных сейфов и охрану. Чем ценнее купюра, тем больше средств вкладывается в ее защиту от подделки и кражи.

Благодаря этому появляется доверие к биткойну как к средству платежа. Если вы - владелец магазина и к вам приходит клиент, который платит биткойнами, вы можете:

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

  2. Если сумма велика и вы не доверяете клиенту, вы можете дождаться, пока транзакция будет подтверждена, то есть записана в блок. Это займет в среднем 10 минут, хотя может быть и дольше, но практически гарантирует получение вами денег. За исключением случая, когда именно в этот момент цепочка биткойна раздвоится и ваша транзакция окажется в блоке, который будет потом отброшен.

  3. Чтобы защитить себя и в этом случае, вы можете дождаться трех подтверждений, то есть дождаться момента, когда блок, в который записана ваша транзакция окажется третьим с конца. Это займет в среднем 30 минут, но после этого транзакция уже закреплена в блокчейне биткойна навечно.

С практической точки зрения такие задержки не составляют проблемы. За бокал пива от клиента, которого вы видите в лицо, можно принять и неподтвержденную транзакцию. В крайнем случае, вы поймаете его за руку и вызовете полицию. В случае интернет-магазина обработка заказа все равно займет дольше 10 минут, а то и получаса. Даже интернет-магазины, принимающие обычные кредитки, оставляют себе зазор во времени, чтобы выявлять платежи с ворованных кредиток. Я помню, как, находясь в США, я купил что-то на $100 в интернет-магазине, расплатившись карточкой иностранного банка. Мне пришлось выслать магазину фотографию карточки, физически находящейся в моих руках и скан американской визы в паспорте. С биткойном ситуация гораздо проще - вам не нужно держать отдел по выявлению мошеннических платежей, достаточно просто дождаться подтверждения транзакции.

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

Окончание

👍5
To react or comment  View in Web Client