С чего начинается майнинг?
(Часть 4. Транзакции.)

Транзакции, платежи, проводки ...

Есть уникальный веб-сайт, демонстрирующий блоки и транзакции биткоина в виде шаров и кубов, падающих с неба на большой стол. Гигантские 3D-кубы изображают недавно добытые блоки, а разные по размеру 3D-шары демонстрируют транзакции. Большой пурпурный шар означает транзакцию более 1000 btc, голубые шары — от 100 до 1000 btc, жёлтые шарики от 50 до 100 btc, оранжевые - от 10 до 50 btc, зелёненькие - от 1 до 10 btc, маленькие же шары используются для изображения транзакций менее 1 btc. Кроме того, на сайте ведётся учет количества новых биткоинов и самых крупных транзакций. Шары падают со стола, это особенности программирования, чтобы браузер не сбоил. Если шаров много на столе, нажмите на "пробел", чтобы сбросить их со стола.

Транзакции (платежи) обрабатываются не мгновенно. Выстраивается очередь из транзакций - неподтверждённые транзакции (транзакции, ожидающие включения в блок). Транзакции без комиссии (transaction without a fee) должны удовлетворять условиям:

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

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

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

- Blockchain,
- Bitinfocharts,
- Bitcoinchain.

Как формируются транзакции?

Каждая транзакция пересылается во все узлы биткоин-сети и в какой-то момент времени может образоваться очередь транзакций, ожидающих включения в блок:

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

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

К каждой транзакции указывается алгоритм её проверки. Всем узлам, независимо от их числа и мощности, ставится одна задача: за 10 минут подтвердить очередную партию транзакций и сформировать из них блок размером не более 1 Мб (начальное ограничение, проблема масштабируемости). Транзакции подтверждаются спецпрограммами майнинга. Приходится ждать, пока они закончат майнинг. Однако, если вы оплачиваете платёж через процессинговые компании, такие как BitPay, Coinbase или похожие, то вам не нужно ничего ждать. У них встроен механизм моментального подтверждения сделки после перевода биткоинов. Особый приоритет? На самом деле, когда сделка совершается между двумя клиентами Coinbase, фактически она находится за переделами блокчейна. Это означает, что Coinbase просто меняет информацию на своих внутренних счетах, а не обновляет сам блокчейн биткоина. Ну, это их внутренние проблемы. В текущей же формуле биткойна приоритет транзакции пропорционален балансу транзакции в btc и обратно пропорционален размеру транзакции в байтах - отсюда очередность. Транзакции - не мгновенны. Те, которые требуют 6 подтверждений (пока не будет сгенерировано шесть новых блоков, считая от блока, включающего подтверждаемую транзакцию), заставят ждать получателя 60 минут, а те, которые требуют 120 подтверждений (пока аналогично не будет создано 120 новых блоков), - 20 часов.

Подтверждением транзакции называется процесс включения транзакции в состав найденного блока. Включение транзакции в блок происходит во время процесса майнинга. Ведение цепочки блоков с транзакциями (реестра) и майнинг - два разных алгоритма. Ключевым нововведением биткойна явился способ записи транзакции в распределенную базу данных через майнинг.

Транзакция является основной операцией в системе Bitcoin. Вы можете ожидать, что транзакция просто перемещает некоторые биткойны с одного адреса на другой адрес, но это сложнее. Биткойн-транзакция перемещает биткойны между одним или несколькими входами и выходами . Каждый вход представляет собой транзакцию и адрес, поставляющий биткоины. Каждый вывод является адресом получения биткойнов, а также количеством биткойнов, идущих на этот адрес. Транзакции могут быть достаточно сложными благодаря специальному языку программирования (например, отправить деньги по нескольким адресам, включить ограничения на выплату по времени и т.п.). Внутри каждой транзакции есть небольшая программа, которая выполняется, чтобы решить, является ли транзакция допустимой, правильной. Эта программа написана в скрипте, стековом языке сценариев Bitcoin. Язык скрипта удивительно сложен, с примерно 80 различными операциями. Он включает в себя арифметические, побитовые операции, строковые операции, условные выражения и манипуляции стеком. Язык также включает в себя необходимые криптографические операции (SHA-256, RIPEM и др.) как примитивы. Чтобы гарантировать, что сценарии завершаются, язык не содержит никаких циклических операций. (Как следствие, он не является Тьюринг-полным.) Однако на практике поддерживается лишь несколько типов транзакций.

Прежде, чем быть верифицированными и выполненными, транзакции кодируются и подписываются. Кодировка транзакции - это просто вопрос упаковки данных в двоичный код. Подписание транзакции (сделки) является более сложной частью. Подписанные и верифицированные транзакции связываются друг с другом, чтобы в дальнейшем организовать блок. Для транзакций с несколькими входами подписание еще более сложно, поскольку каждый вход требует отдельной подписи. К тому же, биткоин использует эллиптические кривые как часть алгоритма подписания. Название эллиптическая кривая сбивает с толку: эллиптические кривые не являются эллипсами, не выглядят как эллипсы, и они имеют очень мало общего с эллипсами. Эллиптическая кривая - это кривая, удовлетворяющая довольно простому уравнению y^2 = x^3 + ax + b. Биткойн использует специфическую эллиптическую кривую, называемую secp256k1, с простым уравнением y^2=x^3+7. Фактически эллиптическая кривая биткойна не является кривой, это - случайный беспорядок 256-битных точек, вписывающихся в это уравнение.

Прежде, чем рассмотреть структуру транзакции, обратим внимание на условие подтверждения транзакции, требующее генерации такого-то количества новых блоков. Как только информация о переводе денег отправлена в биткоин-сеть, соответствующую этой информации транзакцию ставят в очередь для включения в блок, и с этого момента транзакцию уже невозможно вернуть назад. В то же время, существует промежуток примерно 10 минут между появлением новых блоков в цепочке. То есть когда транзакция ставится в очередь, есть временной зазор, пока транзакция не получила первое подтверждение. До тех пор она считается транзакцией с нулевым подтверждением (zero confirmation transaction). В течение этого времени можно попытаться сгенерировать альтернативный блок с фальшивой транзакцией с того же адреса, но уже на свой собственный кошелек. Это называется «двойной тратой» одних и тех же денег (double spending).

Обычно «двойная трата» ассоциируется с попытками мошенничества. Например, владелец биткоинов одновременно создает две транзакции: одну на свой кошелек, а вторую — в адрес магазина. Первую он отправляет в крупный майнинг-пул, а вторую — всем остальным узлам в сети, которые согласятся ее принять, чтобы магазин получил подтверждение как можно быстрее. Есть некоторая вероятность, что магазин одобрит покупку без подтверждения из сети (на веру), а впоследствии эту транзакцию признают недействительной. Магазин, который принял транзакцию с нулевым подтверждением, не может её отменить, но можно разработать пользовательское приложение для отмены фальшивой транзакции.

Классический Bitcoin-клиент будет отображать транзакцию как «неподтвержденную» пока не наберется 6 подтверждений (6 новых найденных блоков). Сайты или сервисы, которые принимают Bitcoin для оплаты своих товаров или услуг, могут ставить свои ограничения на количество блоков нужных для подтверждения транзакции, почему они и рискуют, ибо цифра 6 была выбрана не случайно: она основывается на теории, что вероятность того, что злоумышленник сможет накопить более 10% от хешрейта сети для подделки транзакций, мала, и что незначительный риск (менее 0,1%) является приемлемым. Для злоумышленников, которые не обладают значительной мощностью, 6 подтверждений являются непреодолимой преградой на пути к атаке. В свою очередь, людям, обладающим более 10% мощности, не составит сложности получить 6 подтверждений подряд. Однако, обладание такими вычислительными мощностями требует инвестиций в миллионы долларов, что снижает риск атаки. Поэтому классический Bitcoin клиент не будет отображать эмиссионные монеты, полученные за генерацию блока, пока не накопится уже не 6, а 120 подтверждений, ну, а магазины, как хотят. С другой стороны, увеличивается время платежа, поэтому разработчики вводят новые криптомонеты с меньшим временем формирования блока. Что тогда биткоин? Биткоин изначально нацелен на солидные платежи со 100%-ной гарантией. Фактически биткоин и другие альткоины подвигли банки конкурировать или внедряться в магазинную сферу на кассу посредством платёжных карт, что действительно быстрее, хотя и менее надёжно, если риск небольших сумм вы оправдываете. В любом случае, выбор остаётся: зависеть от банка, кассы, карты или от компьютера.

Транзакция - это не просто платёж, это - программа платежа, в простом случае, с адреса на адрес, или со счёта на счёт. Рассмотрим структуру какой-либо транзакции, которая будет понятна простому пользователю. Для этого зайдём на один из биткоин-эксплореров, например, на Blockchain. Сделаем снимок последних найденных блоков:



Рассмотрим блок 596689-ый, найденный пулом F2Pool. В блоке уместилось 2459 транзакций, на сумму 20,494.94 BTC. Размер блока в кб - 1,228.55, размер блока в весовых единицах kWU - 3,998.35. kWU связана с SegWit, с увеличением размера блока. Основной раздел транзакций в блоке по-прежнему содержит данные отправителя и получателя, а новая структура "свидетель" (SegWit) содержит сценарии и подписи. Размер основных данных подсчитывается обычно, а сегмент "свидетель" подсчитывается как четверть его реального размера. В SegWit–транзакциях информация о подписи и сценариях вынесена за транзакции.



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

В настоящее время все нормальные биткоин-адреса всегда начинаются с 1 или 3. Те адреса, которые начинаются с единицы были сгенерированы до внедрения протокола SegWit и не использовались в "коллективных" счетах, а после внедрения SegWit получили распространение адреса начинающиеся с 3. Эти адреса используют защиту Multi-Signature (MultiSig), в отличии от адресов, начинающихся с 1. Что это значит? Это значит, что для такого адреса есть возможность сгенерировать несколько приватных ключей и доступ к кошельку обеспечивается введением всех этих приватных ключей (ПИН-кодов). Этот метод защиты в разы снижает шанс злоумышленника получить контроль над кошельком, ведь для этого ему нужно будет украсть все сгенерированные приватные ключи.

Итак, 1-ая и 2-ая транзакции блока 596689 для пользователя будут выглядеть так:


Одна из золотых жил по добыче биткоинов находится в штате Вашингтон рядом с дешёвой электростанцией и близко расположенным оптоволоконным интернет-кабелем. Это майнинг-ферма, добывающая биткоинов на $70000 в день. Ферма использует ASIC-майнеры по схеме 24/7. Эта ферма является одним из эпицентров мировой добычи биткоинов.

Контейнер для майнинга. Профессиональное размещение оборудования для майнинга.



Счётчик посещений сайта с 08.07.2019


Copyright © 2008-2019. Все права защищены.

Сайт разработан с помощью http://free-templates.ru и SeanPollock.
Hosted by uCoz