Как устроен биткоин — полный гайд

Как устроен биткоин?

Сегодня о Bitcoin не слышал, наверное, только ленивый. Слышать-то слышал, но мало кто задавался вопросом, как он там «внутри» работает. Многие довольствуются теми знаниями, которых хватает, чтобы завести кошелек, получить, отправить криптовалюту на другой или продать ее. Работает – и ладно, а как именно – не важно. Тем не менее, знать это необходимо, так как эта информация может снять множество вопросов и избежать проблем с использованием.

Однажды мы уже рассматривали, что такое биткоин, но не углублялись в детали. В этой статье мы постараемся доступно и подробно расписать, как работает биткоин.

Сеть

Как говорят нам многие источники, Bitcoin — это одноранговая платёжная система (сеть), расчетной единицей операций в которой является одноименная криптовалюта.

Одноранговая сеть — это компьютерная сеть, принципом которой является равноправие всех участников. Каждый узел (peer) или нода, как их еще называют, выполняет функции как клиента, так и сервера. Такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных нод (от перестановки мест слагаемых сумма не меняется). Участниками сети являются все пиры, поэтому главной особенностью системы является полная децентрализация: нет какого-либо центрального администратора или сервера. Вместо термина «одноранговая» можно использовать такие определения, как: децентрализованная, пиринговая или p2p (peer-to-peer) сеть.

Blockchain

Основой биткоина, а попутно и «книгой» учета транзакций является упорядоченная последовательность (цепочка) набора данных (блоков), или просто — блокчейн. Каждый блок сети биткоина вмещает до 1 Мб данных, формируется в среднем 10 минут, содержит информацию обо всех транзакциях, помещенных в него и информацию, которая связывает его с предыдущим блоком.

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

Принцип работы

Для более наглядного понимания основ работы сети биткоина представим гипотетического криптоэнтузиаста Тони, у которого установлен биткоин-кошелек с 2-мя BTC на балансе. Что такое биткоин-кошелек мы уже рассматривали в статьях ранее.

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

Транзакции и нагрузка сети

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

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

По сути, транзакция — это набор информации, которая указывает участникам сети на какое значение уменьшился баланс отправителя, и на какое значение увеличился баланс получателя.

Майнеры

Чтобы транзакция была успешно осуществлена, ее должны подтвердить (валидировать) майнеры. Сейчас, это специализированные организации, которые с помощью мощного вычислительного оборудования (ASIC-фермы) проверяют транзакции на «правильность», собирают эти транзакции в блоки, а блоки последовательно присоединяют друг к другу. На формирование 1 блока алгоритмом сети отводится в среднем 10 минут, в течение которых майнеры ежесекундно выполняют однотипную вычислительную работу в поисках одного единственно правильного решения. Это не сложно, это не математическая проблема, но это очень большой объём работы, который тяжело сделать маленькими вычислительными мощностями быстро и эффективно.

За выполненную работу майнеры получают вознаграждение в виде BTC. Это вознаграждение состоит из тех комиссий, которые заплатили пользователи за транзакции и абсолютно новых биткоинов, которые сгенерировала сама сеть в момент, когда из транзакций был собран и подтвержден новый блок. Новые биткоины являются наградой для майнеров за выполненную работу. Каждые 210 000 блоков происходит уполовинивание награды для майнеров за найденный блок, это называется «халвинг«.

Комиссии

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

Для вас, читатели, мы расскажем, как сформируется вес и стоимость транзакции Тони.
Те 2 BTC, который он имеет на балансе, появились в кошельке не просто так. Тони их заработал. 1 BTC в 2017 году, 1 BTC — в 2018. Теперь он хочет отправить половину подруге. В его транзакцию, помимо сведений о количестве монет, будет включена информация об адресах, с которых ему пришли монеты (их называют входы), информация об адресах получателей (их называют выходы) и информация о его собственном адресе.

Вам будет интересно  Блокчейн: как он работает, и почему эта технология изменит мир / Блог компании ITI Capital / Хабр

— Каждый вход, с которого были получены монеты весит

— Каждый выход, на который уходят монеты —

— Сама транзакция весит

10 байтов, независимо от количества адресов или суммы перевода.

Считаем: 148*2+34*2+10=374 байта. Теперь мы знаем, что наш «жадный» Тони заплатит за транзакцию 374 satoshi.

Сдача

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

Mempool

Выставив мизерную комиссию в 374 сатоши, Тони подтверждает отправку 1 BTC и ждет, когда майнеры подтвердят эту транзакцию.

Вот только майнеры не спешат её подтверждать, транзакция попадает в мемпул — книгу очереди на подтверждение. Почему? Потому что майнеры хотят зарабатывать, а не просто эксплуатировать свое оборудование, ведь за подтверждение транзакции Тони они получат всего 374 satoshi. Специально для таких очень дешевых транзакций и существует мемпул с его системой сортировки.

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

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

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

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

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

3 суткам, но в моменты высокой активности сети этот срок может растянуться на неделю и дольше.

Согласитесь, что скорость переводов в наше время — это одна из приоритетных характеристик в вопросе использования платежных систем, а такие вот очереди не очень приятны, мягко говоря.

Чтобы протолкнуть транзакцию в мемпуле существует много способов. Все они достаточно сложны понимании и осуществлении для рядового пользователя, а некоторые граничат с таким мошенническим способом как «double-spending» (повторная трата). Тем не менее, есть одна замечательная функция, которой может пользоваться любой, о ней и поговорим. Называется она «Замена комиссионных» (Replace-by-Fee или RBF).

Replace-by-fee (RBF)

В настоящий момент не каждый, а тем более мобильный биткоин-кошелек имеет подобный продвинутый функционал.

RBF — это редактирование существующей транзакции, которая находится в мемпуле.

Редактирование означает, что в новой транзакции будут использованы те же входы что и в старой, но при этом будет изменена комиссия. Такая редактированная транзакция не будет считаться «double-spending», так как использование опции Replace-by-Fee позволит этого избежать. Ноды сети bitcoin воспринимают отредактированную транзакцию как старую, и она переносится в очереди мемпула на более привлекательные для майнеров позиции.

Таким образом, если комиссия слишком мала, то увеличить ее — это нормальная практика в случае, если требуется ускорить операцию. Не пренебрегайте функцией RBF и включите ее перед совершением транзакций, это позволит подстраховаться на случай, если перевод задержится в очереди. О том, как ускорить транзакцию bitcoin в Trustee Wallet описано в этой короткой статье.

Подтверждение

Тони вовремя сообразил, что из-за его жадности Синди может не получить подарок вовсе, поэтому своевременно воспользовался функцией RBF и увеличил комиссию. Транзакция, как и ожидалось, стала более привлекательной для майнеров, и они включили ее в очередной блок — транзакция получила 1 подтверждение. С каждым последующим найденным блоком, эта транзакция будет получать по 1 дополнительному подтверждению. Когда таких подтверждений набирается 6 и более, транзакция считается подтвержденной.

Вам будет интересно  Где учиться и работать специалисту по блокчейну

Скорость транзакций

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

    размер одного блока

1 Мб (1’048’576 байтов);

каждый блок, заполненный транзакциями формируется раз в

10 минут (600 секунд);

  • транзакция нашего Тони имеет вес 374 байта.
  • 1’048’576 байтов : 374 байта = 2803,6 транзакций в одном десятиминутном блоке.
  • 2803,6 транзакций : 600 секунд = 4,6 транзакций в секунду.

Ответ: Каждую секунду майнеры подтверждают

5 транзакций, подобных транзакции Тони.

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

Фактически, после включения транзакции в блок, получатель может не только видеть средства у себя на балансе, но и при определенном условии распоряжаться ими. Быстро, не так ли?

Да, но как же правило про 6 подтверждений? 6 блоков, по 10 минут на каждый, итого — 1 час…

Bitcoinклиенты

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

Сервисы, которые принимают BTC в качестве оплаты, могут выставлять свои ограничения на количество блоков, нужных для подтверждения (7, 10, 45, 214 …).

BTC, которые генерируются сетью в качестве награды за нахождение блока, можно использовать только через 100 подтверждений, но классические биткоин-кошельки не будут отображать монеты, полученные за нахождение блока, пока не наберется 120 подтверждений.

Цифра «6» была выбрана не случайно. С каждым новым блоком, транзакция становится все менее уязвимой к подмене или изменению. Чтобы сделать что-то с уже подтвержденной транзакцией в блоке, нужно будет «переписать» все последующие блоки, а это требует очень огромных вычислительных мощностей и миллионных капиталовложений. И чем больше подтверждений получит транзакция, тем надежнее она будет защищена.

Но в таком мощном и устойчивом блокчейне, как у биткоина, это, скорее, требование получателя транзакции, а не правило протокола.

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

Связка «SegWit + RBF + использование неподтвержденных транзакций» позволяет выжать максимум скорости из блокчейна BTC, что немаловажно для некастодиальных сервисов.

Предвидя ваш вопрос, что за биткоин-кошелек используют Тони и Синди, ответим сразу — Trustee Wallet.

Заключение

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

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

Если у вас остались вопросы или появились предложения — будем рады видеть их в нашем Telegram чате!

Почему блокчейн долго не подтверждает транзакцию, как ускорить

Почему блокчейн долго не подтверждает транзакцию, как ускорит

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

Что значит неподтвержденная транзакция в блокчейне

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

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

confirmations1.jpg

Почему не подтверждается транзакция?

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

Даже при нормальном уровне комиссии продолжительность обработки платежа может быть долгой, если в сети слишком большая нагрузка. Это может быть связано с какими-либо внешними событиями, влияющими на активность пользователей в сети. Когда слишком много транзакций совершается ежеминутно, то задержки неизбежны.

Вам будет интересно  Обзор онлайн-кошелька: регистрация, комиссии, обмен криптовалюты

Сколько ждать подтверждения транзакции биткоин

Стандартное ожидание подтверждения биткоин-транзакции варьируется от 15 до 60 минут. Это зависит также от того, сколько подтверждений нужно для завершения перевода. Число по умолчанию – шесть, но некоторые сервисы могут и снижать его до 1-2. Не паникуйте, если средства не пришли в течение часа – при высокой загрузке блокчейна операция может занимать даже два часа.

Проверить, сколько подтверждений у вашей транзакции, можно на сайте blockchain.info, это обозреватель, содержащий информацию обо всех действующих в сети кошельках и операциях.

Чтобы получить нужную информацию, просто вставьте в поле поиска txid транзакции (предоставляется кошельком после отправки) и посмотрите статус перевода.

Как ускорить транзакцию

Теперь рассмотрим способы, как ускорить («протолкнуть») транзакцию, если она не подтверждается слишком долго.

Выборочная замена

Выборочная замена комиссии – Replace-by-Fee – подразумевает увеличение комиссионных сборов, чтобы сделать платеж более интересным для майнеров. Однако чтобы сделать такую операцию, необходимы некоторые навыки и высокий уровень внимательности – в противном случае блокчейн посчитает сделку попыткой двойной траты и забракует ее. А нужно сделать так, чтобы сеть увидела новый перевод, только с повышенными сборами, при этом сетевые узлы восприняли ее как замену старой и переместили в очереди.

Проблема в том, что с Replace-by-Fee работают не все майнеры, хотя, благодаря преимуществам этой функции, их число постепенно растет. Также, чтобы пользоваться опцией, нужен кошелек, который ее поддерживает (например, Bitcoin Core). Тогда, отправляя второй платеж, потребуется сначала включить в настройках кошелька параметр Opt-In RBF.

Двойная трата — «Double Spend»

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

Основные шаги по проведению double-spending на примере кошелька Bitcoin Core:

  • Подготовительные меры. Проверка транзакции на blockchain.info. Нужно убедиться, что ее статус действительно unconfirmed transaction и никаких подвижек нет.
  • Запуск кошелька строго из командной строки с добавлением команды zapwallettxes. При этом визуально в кошельке никаких платежей уже не будет (но в сети они есть).
  • Создание нового платежа с подходящим уровнем комиссии. Все остальные параметры должны строго совпадать с теми, которые указывались в предыдущий раз, включая сумму.
  • Отправка транзакции на обработку в стандартном порядке.

Если платеж не срочный, то можно не торопиться и подождать пару дней – вдруг старая операция подтвердится. Это вполне возможно. Но не следует ждать дольше 72 часов, это чревато потерей средств.

Child Pays for Parent

Child Pays for Parent («ребенок платит за родителя») – метод не бесплатный и поддерживается не всеми пулами, зато весьма эффективен. Важное условие – при этом на счету отправителя должен оставаться запас средств.

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

Использование ускорителей

Ускорители транзакций – это специальное ПО, с использованием которого можно протолкнуть зависший платеж. Пример – сервис ViaBTC.

confirmations2.jpg

Визуально процесс максимально прост. Пользователь должен указать txid проблемного платежа и ускорить ее либо бесплатно, либо платно (более эффективно). Сделки, которые помещены в ускоритель, гарантированно будут помещены в следующий блок, добытый пулом ViaBTC.

Как обезопасить себя от зависания транзакций?

Самое главное, на что нужно обращать внимание, чтобы обезопасить себя от зависания транзакций, это выставление правильного уровня комиссии. Некоторые кошельки ставят его самостоятельно, тогда пользователю не о чем беспокоиться. Некоторые же дают возможность регулировать комиссию – тогда следует выбирать вариант «приоритетная», который гарантированно даст оптимальное соотношение между затратами и скоростью проведения платежа.

Существует возможность отмены неподтвержденных транзакций через консоль Bitcoin Core. Эта процедура достаточно сложна и подходит для профессионалов. Включает в себя создание неформального ключа и пересоздание нового кошелька со старыми данными.

Заключение

Работа с нашим сервисом лишена перечисленных проблем. В рамках кошелька вы можете мгновенно отправлять или обменивать криптовалюту, а также фиатные деньги. Полная безопасность средств гарантируется. Обратите внимание на наличие выгодной реферальной программы – приглашайте знакомых и получайте финансовый бонус.

https://blog.trusteeglobal.com/ru/kak-ustroen-bitkoin/
https://matbea.com/articles/confirmations