Пятница , 19 апреля 2024
Бизнес-Новости
Разное / Проверка блоков биткоин: Blockchain Explorer — Search the Blockchain | BTC | ETH

Проверка блоков биткоин: Blockchain Explorer — Search the Blockchain | BTC | ETH

Содержание

Аномалия в сети биткоина помогла инвестору дважды потратить свои монеты :: РБК.Крипто

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

В сети биткоина произошел сбой на незначительную сумму. Исследовательский отдел деривативной платформы BitMEX Research сообщил, что вчера, 20 января, в блокчейне криптовалюты на блоке 666833 была обнаружена двойная трата — дважды была учтена одна транзакция на перевод 0,00062063 BTC. По текущему курсу это около $21.

Исследователи объяснили, что на блоке 666833 произошел конфликт между двумя майнинг-пулами SlushPool и F2Pool. В результате образовалось две цепочки блоков. Одна из них зафиксировала перевод на 0,00062063 BTC на кошелек 1D6aebVY5DbS1v7rNTnX2xeYcfWM3os1va. В другой сумма перевода также составила 0,00062063 BTC, но до получателя дошло только 0,00014499 BTC, остаток был потрачен на комиссию.

«Похоже, была обнаружена небольшая двойная трата… В одной цепочке было отправлено 0,00062063 BTC. В другой цепочке — израсходовано столько же монет, но ушло только 0,00014499 BTC», — написали аналитики.

В конфликте майнинг-пулов победил SlushPool, так как найденная им цепочка блоков оказалось длиннее цепочки конкурента, уточнили в BitMEX. Таким образом в сети биткоина считается действительным только перевод 0,00014499 BTC. Вторая транзакция на 0,00062063 BTC считается недействительной.

Это подтверждают данные обозревателя блокчейна blockchain.com. Сведения по транзакции на 0,00014499 BTC сервис отображает корректно. Если проверить операцию на 0,00062063 BTC, то обозреватель показывает эту транзакцию, как недействительную.

Позже исследователи BitMEX в своем Twitter-аккаунте написали, что причиной произошедшего могла стать атака replace-by-fee (RBF). Речь идет о манипуляции, когда злоумышленник пытается получить доступ к кошельку с криптовалютой, перехватив транзакцию отправителя путем уплаты более высокой комиссии.

Двойной тратой называется ситуация, когда случайному пользователю или злоумышленнику удается дважды потратить одну и ту же сумму. Например, дважды отправить между кошельками 1 BTC, в результате чего на конечный адрес придет две монеты. Похожее произошло в августе в сети Ethereum classiс. Тогда неизвестный совершил две «атаки 51%» на блокчейн альткоина. Во время первой он применил принцип двойной траты и, удвоив изначальное количество ETC, присвоил $5,6 млн.

— Биткоин оказался под угрозой уничтожения из-за бага

— Трейдер превратил $13 тыс. в $160 тыс. за одну сделку с криптовалютой

— Инвестор снова заплатил $2,5 млн за перевод Ethereum. Что происходит

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Автор

Дмитрий Фомин

Сеть биткоина перегружена. О чем это может говорить :: РБК.Крипто

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

После халвинга в сети биткоина произошел резкий рост количества неподтвержденных транзакций. Согласно данным blockchain.com, к текущему моменту этот показатель достиг 72 МБ, в моменте поднимаясь до 98 МБ. С начала года он колебался в диапазоне от 0,3 до 15 МБ, изредка превышая это значение.

Мемпул сети Bitcoin (Фото: Blockchain.com)

Текущий показатель в 72 МБ является вторым по величине с декабря 2017 г. и говорит о перегруженности сети монеты, то есть о переполнении мемпула. Сформировалась очередь из пользователей, желающих перевести биткоины. Но текущего количества майнеров недостаточно, чтобы удовлетворить спрос.

Это предположение подтверждается двумя другими метриками. Во-первых, упал хешрейт в сети первой криптовалюты. Он снизился на 40% после халвинга и теперь составляет 86 EH/s. Во-вторых, выросла средняя величина комиссии, которую берут майнеры за подтверждение транзакций. В апреле этот показатель варьировался до $0,4 до $0,9, сейчас достиг $6,6. Это говорит о том, что пользователи готовы платить больше, чтобы их средства перевели раньше других. Данные предоставлены сервисом bitinfocharts.com.

Перегруженность сети биткоина может говорить в пользу роста его стоимости. Например, 26 марта 2019 г. количество неподтвержденных транзакций в сети BTC в течение 10 дней взлетело на 24 500%, достигнув 43 МБ. Одновременно с этим начался рост стоимости первой криптовалюты, и за три месяца она подорожала с $4000 до $14 000.

Аналогичное переполнение сети произошло в начале ноября 2017 года. После этого курс главного цифрового актива в течение месяца вырос с $6000 до $20 000. Однако есть исключения. Например, последняя перегрузка блокчейна BTC случилась 15 ноября прошлого года. За ней ралли криптовалюты не последовало. Причиной переполнения мемпула мог быть сбой в системе сервиса Blockchain.com или же атака на блокчейн монеты сторонниками Bitcoin SV. Эта дата считается днем независимости проекта, так как тогда произошел хардфорк Bitcoin Cash, после которого появился альткоин BSV.

Другой причиной текущей перегрузки сети могло стать то, что часть майнинг-ферм в китайской провинции Сычуань отключила оборудование из-за нехватки электричества. С начала месяца нагрузка на сети региона выросла на 22%, в то же время объем воды в реках снизился на 20%, что привело к дефициту гидроэлектроэнергии. Это привело к падению хешрейта биткоина, а затем к заполнению мемпула.

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

— За 10 часов до халвинга. Комиссии за перевод биткоина увеличились на 300%

— «Грядет капитуляция майнеров». В каком случае обрушится цена биткоина

— «Все запретить, всех наказать». О чем говорят поправки в закон «О ЦФА»

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Автор

Дмитрий Фомин

Как осуществляются биткойн-транзакции | Начало работы с биткоином

Биткойн существует в форме записей о биткойн-транзакциях

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

– Сатоши Накамото, Руководство по Биткойну

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

Пример биткойн-транзакции

Марк хочет отправить биткойны Джессике. В сущности транзакция с BTC состоит из трех частей:

Ввод: Это запись адреса BTC, с которого Марк изначально получил биткойны, которые хочет отправить Джессике.

Количество: Это конкретное количество BTC, которое Марк хочет отправить Джессике.

Вывод: Это открытый ключ Джессики, также известный как ее биткойн-адрес.

Как работает биткойн-транзакция?

Отправка BTC требует доступа к открытым и закрытым ключам, связанным с требуемым количеством биткойнов. Когда мы говорим, что у кого-то есть биткойны, на самом деле мы имеем в виду, что этот человек обладает доступом к паре ключей, состоящей из:

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

Открытые ключи, также называемые биткойн-адресами, представляют собой случайную последовательность букв и цифр, которая работает так же, как адрес электронной почты или имя пользователя в социальной сети. Они публичные, так что вы можете без опасений делиться ими с другими. На самом деле вы должны давать свой адрес Bitcoin другим, когда хотите, чтобы они прислали вам BTC. Закрытый ключ — это еще одна последовательность букв и цифр. Однако закрытые ключи, как и пароли к электронной почте или другим аккаунтам, должны храниться в секрете.

Никогда не делитесь своим закрытым ключом с кем-либо, если вы на 100% не уверены, что этот человек никогда не украдет ваши средства. Также не забудьте сделать резервную копию закрытых ключей, записав их ручкой на бумаге, и храните их в безопасном месте. Ваш адрес Bitcoin по сути является прозрачным сейфом. Другие могут видеть, что внутри, но только те, у кого есть закрытый ключ, могут разблокировать сейф и получить доступ к средствам внутри. В нашем примере транзакции выше Марк хочет отправить BTC Джессике. Для этого он использует свой закрытый ключ, чтобы подписать сообщение с деталями транзакции. Затем в блокчейн отправляется это сообщение, содержащее:

  • ввод: исходная операция с монетами, ранее отправленными по адресу Марка
  • сумма: количество BTC, которое нужно отправить от Марка Джессике
  • вывод: Публичный адрес Джессики.

Затем эта транзакция транслируется в сеть Bitcoin, где майнеры подтверждают, что ключи Марка имеют доступ к источникам (т. е. к адресам, с которых он ранее получал BTC), которые, по его словам, он контролирует. Этот процесс подтверждения известен как майнинг, потому что он требует ресурсоемкого вычислительного труда и вознаграждения майнеров в BTC за каждый разрешенный блок. Это также процесс, посредством которого «создаются» новые биткойны.

Почему подтверждения некоторых биткойн-транзакций занимают так много времени?

Все транзакции Bitcoin должны быть проверены майнерами блокчейна. Обратите внимание, что майнеры не занимаются отдельными транзакциями. Они майнят блоки, которые являются группами транзакций. Иногда ваша транзакция не попадает в текущий блок и встает в очередь до тех пор, пока не будет собран следующий блок. Протокол Bitcoin динамически регулирует требования, чтобы каждый блок занимал примерно 10 минут. Другая причина для длинного периода подтверждения заключается в том, что размер блока ограничен 1 Мбайтом текущим протоколом Bitcoin . Этот произвольный лимит может быть увеличен, но на данный момент он ограничивает количество транзакций, которые могут войти в блок, что по сути замедляет время подтверждения и, как следствие, всю сеть Bitcoin.

Подробнее о входах и выходах биткойн-транзакций

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

— Сатоши Накамото, Руководство по Биткойну

Помните, что биткоины «существуют» только в виде записей транзакций в блокчейне? Это означает, что иногда несколько транзакций заканчиваются прикреплением к определённому адресу Bitcoin. Допустим, у вас в кошельке 2 BTC. Эти 2 BTC пришли от четырех разных друзей, каждый из которых прислал вам 0,5 BTC на ваш день рождения. Для удобства интерфейс вашего кошелька будет отображать ваши сбережения как «2 BTC». Но внутри вашего кошелька эти доходы по 0,5 BTC не «складываются» в 2 BTC. Скорее ваш кошелек просто отслеживает четыре транзакции по 0,5 BTC по отдельности, и в сумме они составляют 2 BTC. Когда вы хотите купить что-то за BTC, ваш кошелек использует записи транзакций различных сумм, которые в сумме составляют сумму биткойнов, которую вы хотите потратить. Предположим, это число составляет 0,25 BTC, и вы хотите использовать эту сумму для покупки одежды у продавца. Основываясь на информации о ваших сбережениях выше, мы знаем, что у вас нет ни одной транзакции ровно на 0,25 BTC. Пользователи Bitcoin не могут разбить транзакцию на меньшие суммы, и потратить можно только всю транзакцию целиком. Поэтому когда вы открываете свой кошелек и набираете «.25» в поле количество, технически происходит так: одна из транзакций на 0,5 BTC (от вашего щедрого друга Криса) будет отправлена целиком. Затем разница вернется вам через новую транзакцию. Вот технический процесс по шагам:

  • Количество, которое вы должны за вашу одежду, составляет 0,25 BTC
  • Вы «отправляете» в магазин ввод на 0,5 BTC. (Помните, что вводы должны быть потрачены целиком).
  • Биткойн-адрес магазина одежды — это вывод

Но фактически ваш кошелек создает для этой транзакции два вывода:

  1. 0,25 BTC продавцу одежды
  2. 0,25 BTC на новый адрес, созданный вашим кошельком, чтобы получить от продавца «сдачу».

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

Каковы комиссионные сборы за биткойн-транзакции?

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

Как отследить противозаконные сделки при помощи блокчейна на примере обвинительного заключения Мюллера

В последние годы мы все чаще слышим об использовании криптовалюты, включая биткойн, в противозаконных целях. Таким образом террористы собирают деньги для финансирования своей деятельности, авторитарные режимы нарушают права своих граждан, а агенты ГРУ организуют кибератаки на Национальный комитет Демократической партии США и предвыборную кампанию Хиллари Клинтон.

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

К счастью, полностью гарантировать анонимность это не может, и вот почему.

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

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

Что вам понадобится и что нужно делать

Для работы вам понадобится обозреватель блокчейна. Больше ничего. Лично мне нравится работать с обозревателем блоков Blockchain.com.

Разберем схему работы на примере обвинительного заключения Мюллера, обнародованного в июле 2018 года, в отношении 12 российских агентов ГРУ. Открываем страницу 22 документа и видим, что приблизительно 1 февраля 2016 года на неизвестный адрес была отправлена сумма размером ровно 0,026043 биткойна. Для нас этой информации достаточно, чтобы найти эту сделку и, возможно, даже узнать, что именно и где покупали агенты ГРУ.

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

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

В таких случаях я обычно начинаю с больших значений. Например, ниже вы увидите скриншот 100000-го блока в блокчейне биткойна. Он был создан 29 декабря 2010 года в 11:57:43. Таким образом мы понимаем, что чтобы найти сделки от 2016 года, нужно двигаться в сторону повышения на несколько сотен тысяч вперед.

Чтобы сэкономить время, продолжим угадывать высоту блока и попробуем набрать 400000. Так мы попадаем на 25 февраля 2016 года. Теперь мы знаем, что нужно выбрать меньшую высоту. Таким образом, мы продолжаем вводить разные значения высоты, пока не дойдем до первого блока, созданного 1 февраля 2016 года, то есть блока 396049.

См. видео 1.

Теперь, когда у нас есть первый блок, созданный 1 февраля 2016 года, нам предстоит пройтись по всем сделкам, совершенным за день, пока мы не найдем все операции на сумму 0,026043 биткойна.

Для этого нажимаем на хэш блока 396049, затем Ctrl+F, чтобы посмотреть, есть ли в этом блоке сделки на сумму 0,026043 биткойна. Если сделок с такой суммой не найдено, переходим к следующему блоку и ищем эту же сумму здесь. Просматривая блоки, записывайте все сделки с суммой 0,026043 биткойна, так как таких сделок может быть несколько.

См. видео 2.

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

Продолжаем просматривать каждый блок в поисках необходимой суммы, пока не дойдем до первого блока, созданного 2 февраля 2016 года. Это может занять достаточно много времени, так как каждый час появляется множество блоков.

В конце концов, мы находим два блока за этот день, в которых имеется сумма, равная или почти равная 0,026043 биткойна, — это блоки 396060 и 396123. Как видно из видео ниже, в блоке 396123 записана сделка на сумму ровно 0,026043 биткойна, а в блоке 396060 — на сумму 0,02604322.

См. видео 3.

См. видео 4.

Открываем детали сделки из блока 396123. В 11:13:42 с адреса 1LQv8aKtQoiY5M5zkaG8RWL7LMwNzVaVqR были отправлены две разные суммы на два адреса: 0,026043 биткойна на 1NZ4MSeYcDKFiPRt8h7VK6XMhShwzhCzCp и 4,54325747 биткойна на 1AK79g9gpvZ8jn2C9MsWQpijMFA5JaTdqP (нажмите на изображение, чтобы увеличить его).

Так как с адреса 1LQv8aKtQoiY5M5zkaG8RWL7LMwNzVaVqR на адрес 1NZ4MSeYcDKFiPRt8h7VK6XMhShwzhCzCp была отправлена точная искомая сумма, полагаю, что именно эта сделка с большей долей вероятности и связана с российскими хакерами, а не сделка из блока 396060.

Чтобы проверить, точно ли это та сделка, о которой идет речь в обвинительном заключении Мюллера, я повторила те же действия для 31 января и 2 февраля и проверила, не были ли совершены сделки на ту же сумму 0,026043 биткойна в эти дни. Так как других сделок на ту же сумму не было, я уверена в том, что в 2016 году агентами ГРУ использовался именно этот адрес — 1LQv8aKtQoiY5M5zkaG8RWL7LMwNzVaVqR.

Итак, мы рассмотрели методику, позволяющую отслеживать биткойн-адреса при помощи обозревателя блоков биткойна. А теперь попробуйте самостоятельно повторить эти шаги и найти другую сделку, указанную во втором обвинительном заключении Мюллера в отношении агентов ГРУ.

Ответы публикуйте в комментариях или отправляйте мне в Twitter: @bsmith_1853.

Возобновляемые источники энергии повысят ценность биткоина » Мнения экспертов

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

Альфан Гогус, региональный директор Huobi Global в СНГ рассказал: «Технологии блокчейна и криптовалют показывают, что им отведена важная роль в будущем нашей финансовой системы. В последнее время одной из самых освещаемых в прессе тем является потребление энергии для получения биткоина. Поскольку блокчейн и криптовалюты — это будущее финансов, лучшим способом для обеспечения устойчивости системы должен стать поиск возможностей использования возобновляемой энергии в процессе майнинга. Создание устойчивой системы является базовой необходимостью, поскольку мы движемся в будущее».

Почему при майнинге биткоина потребляется много энергии?

Для надежной и безопасной записи и проверки транзакций в сети блокчейн используются «алгоритмы консенсуса» для достижения согласия между несвязанными сторонами в сети. Алгоритм консенсуса Proof-of-Work, используемый биткойном, имеет такой существенный недостаток, как высокий уровень потребления энергии.

Для того, чтобы транзакции, совершенные в сети Bitcoin, были подтверждены, они должны быть майнерами добавлены в блоки, после чего проверенная версия публикуется по сети. Большое количество транзакций, совершенных на этом этапе, объединяется в пул. Криптографическая проблема, необходимая для создания блока, решается в среднем за 10 минут, блок распространяется среди всех заинтересованных сторон и добавляется в цепочку посредством предоставления доказательств того, что проблема решена всей сетью. Таким образом и майнеры зарабатывают биткоины в обмен на созданные ими блоки.

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

Сколько электроэнергии тратится на биткоин?

Годовое потребление электроэнергии по всему миру, расходуемой на майнинг биткоина, составляет 61,76 ТВт (Тераватт), что равно 0,28% от общего потребления электроэнергии.

Может показаться, что количество энергии, потребляемой при майнинге BTC, довольно высокое. Но если этот показатель сравнить с потреблением энергии, необходимой для функционирования традиционной финансовой системы, то картина сразу поменяется. Традиционному финансовому сектору необходимо примерно 140 ТВт энергии для работы серверов, банковских отделений и банкоматов по всему миру. Другими словами, в 4 раза больше, чем годовое энергопотребление биткоина.

Мировой подход к майнингу биткоина

До недавнего времени большинство мировых майнеров биткоина находились в пределах Китая. Однако китайское правительство ввело строгий контроль, запретив майнинговую деятельность в стране. После такого разворота другие страны заявили о своем желании разместить майнинг биткоина у себя. Среди этих стран — США, соседний Китаю Казахстан, страны Центральной Азии и Восточной Европы. Иран, запретивший майнинг биткоина до 22 сентября 2021 года из-за нехватки электроэнергии, при этом претендует на то, чтобы интегрировать биткоин в каналы своей внешней торговли.

Решение — в возобновляемой энергии

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

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

Илон Маск, некогда активно показывавший свой интерес к криптоиндустрии, подтвердил, что компания Tesla снова будет принимать оплату в биткоинах, когда майнинг начнет использовать 50% возобновляемой энергии. Этот пример показывает нам, что использование чистой энергии положительно повлияет не только на окружающую среду, но и на интерес инвесторов к биткойну.

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

Всё о транзакциях в блокчейне Биткоин

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

Важно понимать:

  • Как устроена платежная инфраструктура Bitcoin;

  • Как награда майнеру определяет скорость.

  • Что такое проблемы с масштабируемостью и как их решить без убытков.

  • Как появляются висящие транзакции в блокчейне.

  • Как разобраться в соотношении скорости и издержки.

Общие принципы

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

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

Скорость расширения— 6 блоков в час (1 блок за 10 минут). Размер блока цепи — 1 мегабайт или 1 048 576 байт.  Объем средней транзакции равен 226 байтам. В блокчейне идёт запись адресов кошельков и сумм передаваемых BTC. За десять минут проходит примерно 4500 операций.

Ограничение объема записываемых транзакций в блок создано с расчетом на потенциальные Ddos атаки. 1 мегабайта хватало для проведения любых операций моментально.С ростом коммьюнити количество записей выросло экспоненциально. Большое количество пользователей и транзакций создало очереди, что повлекло за собой комиссионную дефляцию.

Оплата перемещения и скорость

Все финансовые операции вносятся в общую очередь. Какие из переводов попадут в цепь, решают майнеры.

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

Приоритет попадания операций в новый блок следующий:

  • Персональные операции владельцев пула.

  • Распределение прибыли на кошельки майнеров.

  • Коммерческие операции.

Минимальная допустимая цена — 500 сатоши на байт переданной информации. Размер транзакции составляет 226 байт, а размер уравновешенной комиссии — 113 000 сатоши (около 15$).

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

Как посчитать стоимость операции на текущий момент

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

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

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

  1. Нижнюю граничную цену.

  2. Высшую стоимость транзакции.

  3. Объем транзакций по средневзвешенной цене.

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

Дополнительные задержки

Помимо стандартных задержек на оплату комиссии майнеру существуют “внешние задержки”:

  1. Задержка и комиссия фиатной платежной системы.

  2. Задержка и комиссия обменного сервиса.

Обменные сервисы — простой и удобный способ обмена криптовалют на фиатные средства. За это сервис взимает дополнительную комиссию.

Кроме того, обменник может установить “скрытую” комиссию майнеру. Непрозрачные условия влекут дополнительные издержки со стороны пользователя.

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

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

Быстрее через биржу

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

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

Перевод через альткоины

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

Итоги

Размер блока — камень преткновения Bitcoin. Комьюнити разрабатывает альтернативные протоколы Segwit2x, которые должны увеличить объем блока в мегабайтах. Разрастающиеся споры об устойчивости криптовалюты с большим блоком привели к разделению сообщества и созданию Litecoin и BitcoinCash.

Чем сложней вычисления, тем дороже обходятся финоперации. Нужно понимать, что основная проблема — стоимость Bitcoin по отношению к фиатным валютам. Чем дороже монета, тем дороже транзакция вне зависимости от ее внутренней комиссии в сатоши.

Как отслеживаются транзакции в сети биткоина?

В январе 2018 года компания Bitfury Group (один из крупнейших в мире разработчиков и провайдеров блокчейн-решений) представила финансовым учреждениям и правоохранительным органам инструмент Crystal, который создала специально для проведения расследований, связанных с биткоином.

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

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

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

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

В пример эффективности Crystal его создатели приводят расследование по вирусу-вымогателю WannaCry. В мае 2017 года за 4 дня он нанес своим жертвам урон почти на $1 млрд, от него пострадали Государственная служба здравоохранения Великобритании, крупнейшая телеком-компания Испании Telefónica, американский логистический гигант FedEx и пользователи из 150 стран мира. Воспользовавшись своим инструментом, создатели Crystal за три часа отследили движение средств с биткоин-кошельков злоумышленников (до точек вывода через криптобиржи Changelly и ShapeShift) и определили, кто стоит за атаками.

В Bitfury также провели расследование по взлому в сентябре 2018 года японской биткоин-биржи Zaif, которая потеряла в результате действий хакеров $60 млн в криптоактивах, включая 6000 биткоинов.

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

Bitcoin Block Explorer | BlockCypher

Последние блоки

Высота Возраст транзакции Всего отправлено Итого Размер блока (в байтах)
703561 2021-10-04T20: 47: 27.837Z 2 911 8 074,994 BTC 0,066 BTC 1,455,165
703560 2021-10-04T20: 44: 57.307Z 3 027 93 553.957 BTC 0,216 BTC 1,461,829
703559 2021-10-04T20: 12: 20.872Z 2 627 1,361,537 BTC 0,05 BTC 1 479 632
703558 2021-10-04T20: 10: 32.337Z 2 918 16 189,222 BTC 0,134 BTC 1,498,927
703557 2021-10-04T19: 53: 59.212Z 3 391 75 349.533 BTC 0,211 BTC 1,462,299
Высокий приоритет (1-2 блока) Средний приоритет (3-6 блоков) Низкий приоритет (7+ блоков)
0,00015 BTC / КБ 0,00005 BTC / КБ 0,00003 BTC / КБ

Оценка вознаграждения основана на скользящем средневзвешенном значении.

Последние транзакции

Хэш транзакции BTC Время Предпочтение майнера
f91cc6777b80 … 0,00316361 BTC низкий
0aed3791db38 … 0,13746115 BTC низкий
ed0b4dc5d09d … 0,00013413 BTC низкий
a093febafab7 … 0,00025 BTC низкий
ef63fde47df9 … 0,00393591 BTC низкий
c5210d2bb17d … 0,00837515 BTC низкий
d1adf1ac3d59 … 0,00471214 BTC низкий
5689473c4da2 … 0.20556809 BTC низкий
cefb14017a20 … 0,00278698 BTC низкий
bf476ce35541 … 1,51365828 BTC низкий

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

Руководство

Blockchain Explorer | CoinMarketCap

08

Биткойн-блоки

Чтобы просмотреть биткойн-блоки, нажмите «Просмотреть блок».Перейдя на страницу блоков биткойнов, вы увидите обзор цепочки биткойнов, включая самые последние рыночные данные и детали блоков.

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

Большинство показателей блокчейна на этой странице были объяснены ранее, за исключением двух новых терминов: ожидающие транзакции и сложность. Ожидающие транзакции — это транзакции, которые были запущены, но еще не подтверждены майнерами. Это может происходить по разным причинам, например, когда в сети наблюдаются большие объемы трафика или когда плата за эту транзакцию была слишком низкой. Комиссия за транзакцию стимулирует майнеров обрабатывать транзакцию, поэтому более низкая комиссия может замедлить скорость добавления транзакции в блок. Сложность относится к к измерению сложности добычи блока. В Биткойне сложность периодически корректируется в зависимости от того, какая мощность хэширования была развернута сетью майнеров. Доминирование BTC вводится в рыночные данные, которые определяются CoinMarketCap как индекс, сравнивающий рыночную капитализацию Биткойна с общей рыночной капитализацией всех других существующих криптовалют.

Начиная с первого столбца в разделе «Просмотр блоков», «Высота блока» перечисляет недавно созданные блоки и общую сумму транзакций в каждом блоке, представленную в BTC и долларах США, оцененную на момент проверки транзакции.За ним следует уникальный блок Hash ID, — криптографический код, сгенерированный для сокрытия ввода данных и защиты их от изменения. Столбец «Транзакции» показывает, сколько транзакций было успешно размещено в этом блоке, а последний столбец записывает дату и время его завершения (в формате ГГГГ-ММ-ДД).

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

В качестве примера мы щелкнули блок 575853, чтобы получить дополнительную информацию. Первая часть показывает заголовок блока и его сводку. В подзаголовке «Транзакции» ниже иногда отправитель или получатель могут иметь идентифицируемое имя (например, Coinbase, F2Pool), если владелец адреса решил публично идентифицировать себя. В противном случае будут указаны буквенно-цифровые адреса кошельков. Первая транзакция в блоке Биткойн и Лайткойн — это вознаграждение за блок, отправленное майнинговому пулу или группе майнеров, которые объединяют свои вычислительные мощности для коллективного решения криптографических головоломок Proof-of-Work.Иногда в транзакциях можно увидеть «невозможно декодировать» и «0 BTC». Это просто означает, что транзакция не соответствует стандартному сценарию вывода транзакции. Возможно, отправитель использует цепочку блоков как способ хранения информации и создания записи данных.

5. Транзакции — освоение биткойнов [Книга]

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

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

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

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

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

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

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

Трансляция транзакций в сеть Биткойн

Во-первых, транзакция должна быть доставлена ​​в сеть Биткойн, чтобы ее можно было распространить и включить в цепочку блоков.По сути, биткойн-транзакция — это всего лишь от 300 до 400 байтов данных и должна достигнуть любого из десятков тысяч биткойн-узлов. Отправителям не нужно доверять узлам, которые они используют для широковещательной рассылки транзакции, если они используют более одного, чтобы гарантировать ее распространение. Узлам не нужно доверять отправителю или устанавливать «личность» отправителя. Поскольку транзакция подписана и не содержит конфиденциальной информации, закрытых ключей или учетных данных, ее можно публично транслировать с использованием любого удобного базового сетевого транспорта.В отличие, например, от транзакций по кредитным картам, которые содержат конфиденциальную информацию и могут быть переданы только в зашифрованных сетях, транзакция с биткойнами может быть отправлена ​​по любой сети. Пока транзакция может достичь узла биткойнов, который распространит ее в сеть биткойнов, не имеет значения, как она передается на первый узел.

Биткойн-транзакции могут быть переданы в биткойн-сеть через небезопасные сети, такие как WiFi, Bluetooth, NFC, Chirp, штрих-коды или путем копирования и вставки в веб-форму.В крайних случаях транзакция биткойнов может быть передана по пакетной радиосвязи, спутниковой ретрансляции или коротковолновой передаче с использованием пакетной передачи, расширенного спектра или скачкообразной перестройки частоты, чтобы избежать обнаружения и глушения. Биткойн-транзакцию можно даже закодировать в виде смайлов (смайликов) и опубликовать на общедоступном форуме или отправить в виде текстового сообщения или сообщения в чате Skype. Биткойн превратил деньги в структуру данных, что сделало практически невозможным остановить кого-либо от создания и выполнения транзакции биткойнов.

Распространение транзакций в сети Биткойн

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

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

Биткойн-сеть предназначена для распространения транзакций и блоков на все узлы эффективным и отказоустойчивым способом, устойчивым к атакам.Чтобы предотвратить рассылку спама, атаки типа «отказ в обслуживании» или другие неприятные атаки на систему биткойнов, каждый узел независимо проверяет каждую транзакцию перед ее дальнейшим распространением. Деформированная транзакция не выйдет за пределы одного узла. Правила, по которым проверяются транзакции, более подробно описаны в разделе «Независимая проверка транзакций».

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

Таблица 5-1. Структура транзакции

901

1–9 байт (VarInt)

900 4 байта

Размер Поле Описание

4 байта

Версия

Задает правила

1–9 байт (VarInt)

Счетчик входов

Сколько входов включено

Переменная

Входы

Один или несколько входов транзакций

Счетчик выходов

Сколько выходов включено

Переменная

Выходы

Один или несколько выходов транзакций

Локт ime

Временная метка Unix или номер блока

Выходы и входы транзакций

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

Совет

В биткойнах нет счетов или остатков; есть только неизрасходованных выходов транзакций (UTXO), разбросанных по блокчейну.

UTXO может иметь произвольное значение, кратное сатоши. Точно так же, как доллары можно разделить до двух знаков после запятой как центы, биткойны можно разделить до восьми знаков после запятой как сатоши.Хотя UTXO может иметь любое произвольное значение, однажды созданное оно неделимо, как монета, которую нельзя разрезать пополам. Если UTXO больше, чем желаемое значение транзакции, он все равно должен быть использован полностью, и в транзакции должны быть сгенерированы изменения. Другими словами, если у вас есть 20 биткойнов UTXO и вы хотите заплатить 1 биткойн, ваша транзакция должна потреблять все 20 биткойнов UTXO и давать два результата: один платит 1 биткойн вашему желаемому получателю, а другой платит 19 биткойнов в обмен на ваш кошелек.В результате большинство транзакций с биткойнами приведет к изменениям.

Представьте себе покупателя, который покупает напиток за 1,50 доллара, залезает в бумажник и пытается найти комбинацию монет и банкнот, чтобы покрыть стоимость 1,50 доллара. Покупатель выберет точную сдачу, если таковая имеется (долларовая банкнота и две четверти), или комбинацию меньшего достоинства (шесть четвертей), или, если необходимо, более крупную денежную единицу, такую ​​как пятидолларовая банкнота. Если она отдаст владельцу магазина слишком много денег, скажем 5 долларов, она будет ожидать 3 доллара.50 сдач, которые она вернет в свой кошелек и будет доступна для будущих транзакций.

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

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

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

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

Совет

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

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

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

Выходы транзакции состоят из двух частей:

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

Язык сценариев транзакций, используемый в сценарии блокировки, упомянутом ранее, подробно обсуждается в разделе «Сценарии транзакций и язык сценариев».Таблица 5-2 показывает структуру вывода транзакции.

Таблица 5-2. Структура вывода транзакции

Размер Поле Описание

8 байт

Сумма

Биткойн 905 в сатоши (10 биткойн)

1-9 байтов (VarInt)

Размер сценария блокировки

Длина сценария блокировки в байтах, чтобы следовать

Переменная

Сценарий

Сценарий, определяющий условия, необходимые для расходования вывода

В примере 5-1 мы используем цепочку блоков.info API для поиска неизрасходованных выходов (UTXO) определенного адреса.

Пример 5-1. Скрипт, который вызывает API blockchain.info, чтобы найти UTXO, связанный с адресом

  # получить неизрасходованные выходные данные из API блокчейна 

  импорт   json 
  импорт   запросов 

  # пример адреса 
  адрес   =   '1Dorian4RoXcnBv9hnQ4Y2C1an6NJ4UrjX' 

  # URL-адрес API: https://blockchain.info/unspent?active= 
# Возвращает объект JSON со списком "unspent_outputs", содержащим UTXO, например: # {"unspent_outputs": [ # { # "tx_hash": "ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad62167", # "tx_index": 51

7, # "tx_output_n": 1, # "script": "76a9148c7e252f8d64b0b6e313985

0fcfefcf4a2d88ac", # "значение": 8000000, # "value_hex": "7a1200", # "подтверждения": 28691 #}, #... #]} или = запросов . получить ( 'https://blockchain.info/unspent?active= % s ' % адрес ) utxo_set = json . загружает ( или . текст ) [ "unspent_outputs" ] для utxo дюйм utxo_set : print " % s : % d - % ld Satoshis" % ( utxo ' ' ' ' ' ' utxo [ 'tx_output_n' ], utxo [ 'значение' ])

Запустив скрипт, мы видим список идентификаторов транзакций, двоеточие, номер индекса конкретный неизрасходованный выход транзакции (UTXO) и значение этого UTXO в сатоши.Сценарий блокировки не показан в выходных данных примера 5-2.

Пример 5-2. Запуск сценария get-utxo.py

  $  python get-utxo.py
ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad62167: 1 - 8000000 сатоши
6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf: 0 - 16050000 сатоши
74d788804e2aae10891d72753d1520da1206e6f4f20481cc1555b7f2cb44aca0: 0 - 5000000 Сатоши
b2affea89ff82557c60d635a2a3137b8f88f12ecec85082f7d0a1f82ee203ac4: 0 - 10000000 сатоши
... 

Условия расходов (обременения)

Выходные данные транзакции связывают определенную сумму (в сатоши) с конкретным обременением или сценарием блокировки, который определяет условие, которое должно быть выполнено, чтобы потратить эту сумму. В большинстве случаев сценарий блокировки блокирует вывод на конкретный биткойн-адрес, тем самым передавая право собственности на эту сумму новому владельцу. Когда Алиса заплатила Bob’s Cafe за чашку кофе, ее транзакция создала 0,015 биткойнов, на выходе , обремененных или привязанных к биткойн-адресу кафе.Эти 0,015 биткойнов были записаны в блокчейне и стали частью набора неизрасходованных транзакций, то есть отображались в кошельке Боба как часть доступного баланса. Когда Боб решает потратить эту сумму, его транзакция снимает обременение, разблокируя выход, предоставляя сценарий разблокировки, содержащий подпись из закрытого ключа Боба.

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

Когда пользователи производят платеж, их кошелек создает транзакцию, выбирая из доступного UTXO. Например, для совершения платежа в биткойнах 0,015 приложение кошелька может выбрать UTXO 0,01 и UTXO 0,005, используя их оба для добавления к желаемой сумме платежа.

В примере 5-3 мы показываем использование «жадного» алгоритма для выбора из доступных UTXO, чтобы произвести определенную сумму платежа. В этом примере доступный UTXO предоставляется в виде постоянного массива, но в действительности доступный UTXO будет извлекаться с помощью вызова RPC к Bitcoin Core или к стороннему API, как показано в Примере 5-1.

Пример 5-3. Скрипт для расчета общего количества выпущенных биткойнов

  # Выбирает выходные данные из списка UTXO, используя жадный алгоритм.

  из   sys   импорт   argv 

  класс   OutputInfo  : 

      def   __init__   (  self  ,   tx_hash  ,   tx_index  ,  значение   ): 
          сам  .   tx_hash   =   tx_hash 
          сам  .   tx_index   =   tx_index 
          сам  .  значение   =   значение 

      def   __repr__   (  self  ): 
          возврат   "< % s  :  % s   с  % s   Satoshis>"  %   (  self  .   self  .   tel  .   tx_index  , 
                                               сам  .  значение  ) 

  # Выбрать оптимальные выходы для отправки из списка неизрасходованных выходов. 
  # Возвращает список вывода и оставшееся изменение для отправки на 
  # изменить адрес. 
  def   select_outputs_greedy   (  неизрасходовано  ,   min_value  ): 
      # Ошибка, если пусто. 
      если   не   неизрасходованные  : 
          возврат   Нет 
      # Разделение на 2 списка.
      lessers   =   [  utxo   для   utxo   in   неизрасходовано   if   utxo  .   значение   <  min_value  ] 
      больше   =   [  utxo   для   utxo   in   неизрасходовано   if   utxo  .   значение  > =   min_value  ] 
      key_func   =   лямбда   utxo  :   utxo  .  значение 
      если   больше  : 
          # Не пусто. Найдите наименьшее большее. 
          min_greater   =   min   (  больше  ) 
          изменить   =   min_greater  .   значение  -  min_value 
          возврат   [  min_greater  ],   изменение 
      # Не встречается в больших.Вместо этого попробуйте несколько лессеров. 
      # Переставьте их в порядке убывания. Мы хотим использовать как минимум 
      # Максимальное количество входов. 
      лессеры  .   сортировка   (  ключ   =   key_func  ,   обратный   =   True  ) 
      результат   =   [] 
      накоп   =   0 
      для   utxo   in   lessers  : 
          счет  .  добавить   (  utxo  ) 
          аккумулятор   + =   utxo  .   значение 
          если   накоп  > =   min_value  : 
              изменить   =   накопить  -  min_value 
              возврат   результат  ,   "Изменение:  % d   Satoshis"  %   изменение 
      # Ничего не найдено.
      возврат   Нет  ,   0 

  по умолчанию   основной   (): 
      неизрасходованные   =   [
          OutputInfo   (  "ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad62167"  ,   1  ,   8000000 9058,   8000000 9058
          OutputInfo   (  "6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf"  ,   0  ,   16058000)  80 16058000 90
          OutputInfo   (  "b2affea89ff82557c60d635a2a3137b8f88f12ecec85082f7d0a1f82ee203ac4"  ,   0  ,  5 10000)  5
          OutputInfo   (  "7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1"  ,   0  ,  
          OutputInfo   (  "55ea01bd7e9afd3d3ab97e777d62a0709cf0725e80a7350fdb22d7b8ec6"  ,   17   54701 905 905
          OutputInfo   (  "12b6a7934c1df821945ee9ee3b3326d07ca7a65fd6416ea44ce8c3db0c078c64"  ,   0  ,  5 10000)  5
          OutputInfo   (  "7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818"  ,   0  ,   1610080000)  
     ] 

      если   лен   (  argv  )  >   1  : 
          целевой   =   длинный   (  argv   [  1  ]) 
      иначе  : 
          цель   =   55000000 

      print   "Для суммы транзакции  % d   Satoshis ( % f   биткойн) используйте:"  %   (  target  ,   target  /1058.0   **   8  ) 
      печать   select_outputs_greedy   (  неизрасходованные  ,   цель  ) 

 , если   __name__   ==   "__main__"  : 
      main   ()  

Если мы запустим сценарий select-utxo.py без параметра, он попытается создать набор UTXO (и изменений) для выплаты 55000000 сатоши (0.55 биткойн). Если вы укажете целевую сумму платежа в качестве параметра, сценарий выберет UTXO для выполнения этой целевой суммы платежа. В примере 5-4 мы запускаем скрипт, пытаясь произвести платеж в размере 0,5 биткойна или 50 000 000 сатоши.

Пример 5-4. Запуск сценария select-utxo.py

 $ python select-utxo.py 50000000
Для суммы транзакции 50000000 сатоши (0.500000 биткойнов) используйте:
([<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1: 0 с 25000000 Satoshis>, <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818: 0 с 16100000 Satoshis>, <6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf: 0 с 16050000 Satoshis>], 'Изменение: 7150000 Satoshis') 

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

Таблица 5-3. Структура ввода транзакции

Размер Поле Описание

32 байта

Хеш транзакции

, содержащий указатель на транзакцию быть потрачено

4 байта

Индекс вывода

Номер индекса UTXO, который должен быть потрачен; первый - 0

1-9 байтов (VarInt)

Размер сценария разблокировки

Длина сценария разблокировки в байтах, чтобы следовать

Переменная

-Script

Сценарий, который выполняет условия сценария блокировки UTXO.

4 байта

Порядковый номер

В настоящее время отключена функция замены Tx, установлена ​​на 0xFFFFFFFF

Примечание

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

Большинство транзакций включают комиссию за транзакцию, которая компенсирует майнерам биткойнов защиту сети. Майнинг, а также сборы и вознаграждения, собираемые майнерами, более подробно обсуждаются в главе 8. В этом разделе рассматривается, как транзакционные комиссии включаются в типичную транзакцию. Большинство кошельков автоматически рассчитывают и включают комиссию за транзакцию.Однако, если вы создаете транзакции программно или с помощью интерфейса командной строки, вы должны вручную учитывать и включать эти комиссии.

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

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

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

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

Добавление комиссий к транзакциям

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

Комиссия за транзакцию подразумевается как превышение входов минус выходы:

 Сборы = Сумма (Входы) - Сумма (Выходы) 

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

Например, если вы потребляете UTXO на 20 биткойнов для совершения платежа в 1 биткойн, вы должны включить вывод сдачи 19 биткойнов обратно в свой кошелек. В противном случае «оставшиеся» 19 биткойнов будут считаться комиссией за транзакцию и будут собраны майнером, который майнит вашу транзакцию в блоке. Хотя вы получите приоритетную обработку и сделаете майнера очень счастливым, это, вероятно, не то, что вы планировали.

Предупреждение

Если вы забудете добавить выход изменения в транзакцию, созданную вручную, вы оплатите это изменение как комиссию за транзакцию. "Сдачи не надо!" может быть не тем, что вы хотели.

Давайте посмотрим, как это работает на практике, еще раз посмотрев на покупку кофе Алисой. Алиса хочет потратить 0,015 биткойна на оплату кофе. Чтобы обеспечить своевременную обработку этой транзакции, она захочет включить комиссию за транзакцию, скажем, 0,001. Это будет означать, что общая стоимость транзакции будет равна 0.016. Следовательно, ее кошелек должен быть источником набора UTXO, который в сумме составляет 0,016 биткойна или более, и, при необходимости, вносить изменения. Допустим, в ее кошельке есть UTXO на 0,2 биткойна. Следовательно, ему необходимо будет использовать этот UTXO, создать один выход для Bob’s Cafe за 0,015 и второй выход с 0,184 биткойна в обмен на свой собственный кошелек, оставив 0,001 биткойна нераспределенным в качестве неявной комиссии за транзакцию.

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

Поскольку приложение кошелька Евгении пытается создать одну большую платежную транзакцию, оно должно исходить из доступного набора UTXO, который состоит из множества меньших сумм. Это означает, что результирующая транзакция будет исходить из более чем сотни мелких UTXO в качестве входных данных и только из одного выхода, оплачиваемого издателем книги.Транзакция с таким количеством входов будет больше одного килобайта, возможно, от 2 до 3 килобайт. В результате потребуется более высокая комиссия, чем минимальная сетевая плата в 0,0001 биткойн.

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

Сцепление транзакций и потерянные транзакции

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

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

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

Сценарии транзакций и язык сценариев

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

Сегодня большинство транзакций, обрабатываемых через сеть биткойнов, имеют форму «Алиса платит Бобу» и основаны на том же сценарии, который называется сценарием Pay-to-Public-Key-Hash.Однако использование сценариев для блокировки выходов и разблокировки входов означает, что благодаря использованию языка программирования транзакции могут содержать бесконечное количество условий. Биткойн-транзакции не ограничиваются формой и шаблоном «Алиса платит Бобу».

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

Подсказка

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

Построение сценария (блокировка + разблокировка)

Механизм проверки транзакций Биткойн полагается на два типа сценариев для проверки транзакций: сценарий блокировки и сценарий разблокировки.

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

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

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

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

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

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

Рисунок 5-1. Комбинирование scriptSig и scriptPubKey для оценки сценария транзакции

Язык сценария транзакции биткойнов, называемый Script , представляет собой язык исполнения на основе стека обратной полировки нотации типа Форт. Если это звучит как тарабарщина, вы, вероятно, не изучали языки программирования 1960-х годов. Сценарий - это очень простой язык, который был разработан с учетом ограничений по объему и выполняемого на ряде аппаратных средств, возможно, таких же простых, как встроенное устройство, такое как карманный калькулятор.Он требует минимальной обработки и не может делать многие из фантастических вещей, которые могут делать современные языки программирования. В случае программируемых денег это преднамеренная функция безопасности.

Язык сценариев Биткойна называется языком на основе стека, потому что он использует структуру данных, называемую стеком . Стек - это очень простая структура данных, которую можно визуализировать как стопку карточек. Стек позволяет две операции: push и pop. Push добавляет элемент в верхнюю часть стека. Pop удаляет верхний элемент из стека.

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

Условные операторы оценивают условие, выдавая логический результат ИСТИНА или ЛОЖЬ. Например, OP_EQUAL выталкивает два элемента из стека и нажимает ИСТИНА (ИСТИНА представлено числом 1), если они равны, или ЛОЖЬ (представлено нулем), если они не равны.Скрипты биткойн-транзакций обычно содержат условный оператор, поэтому они могут выдавать ИСТИННЫЙ результат, обозначающий действительную транзакцию.

На рисунке 5-2 сценарий 2 3 OP_ADD 5 OP_EQUAL демонстрирует оператор арифметического сложения OP_ADD , складывающий два числа и помещающий результат в стек, за которым следует условный оператор OP_EQUAL , который проверяет, что Итоговая сумма равна 5 . Для краткости префикс OP_ в пошаговом примере опущен.

Ниже приведен немного более сложный сценарий, который вычисляет 2 + 7 - 3 + 1 . Обратите внимание, что когда сценарий содержит несколько операторов подряд, стек позволяет выполнять действия одного оператора следующему оператору:

 2 7 OP_ADD 3 OP_SUB 1 OP_ADD 7 OP_EQUAL 

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

Хотя большинство сценариев блокировки ссылаются на адрес биткойна или открытый ключ, что требует подтверждения права собственности на использование средств, сценарий не должен быть таким сложным.Допустима любая комбинация сценариев блокировки и разблокировки, которая приводит к значению ИСТИНА. Простая арифметика, которую мы использовали в качестве примера языка сценариев, также является допустимым сценарием блокировки, который можно использовать для блокировки вывода транзакции.

Используйте часть сценария арифметического примера в качестве сценария блокировки:

 3 OP_ADD 5 OP_EQUAL 

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

 2 

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

 2 3 OP_ADD 5 OP_EQUAL 

Как мы видели в пошаговом примере на рисунке 5-2, когда этот сценарий выполняется, результатом будет OP_TRUE , что делает транзакцию действительной. .Это не только действительный сценарий блокировки вывода транзакции, но и получившийся UTXO может быть использован любым, кто обладает арифметическими навыками, чтобы знать, что число 2 удовлетворяет сценарию.

Рисунок 5-2. Проверка сценария Биткойна с помощью простых вычислений

Совет

Транзакции действительны, если верхний результат в стеке ИСТИНА (обозначен как {0x01} ), любое другое ненулевое значение или если стек пуст после выполнения сценария. Транзакции недействительны, если верхним значением в стеке является FALSE (пустое значение нулевой длины, обозначенное как {} ) или если выполнение скрипта явно останавливается оператором, таким как OP_VERIFY, OP_RETURN, или условным ограничителем, например OP_ENDIF.См. Подробности в Приложении A.

Язык сценария транзакции биткойнов содержит множество операторов, но намеренно ограничен одним важным способом - нет никаких циклов или сложных возможностей управления потоком, кроме условного управления потоком. Это гарантирует, что язык не Turing Complete , а это означает, что скрипты имеют ограниченную сложность и предсказуемое время выполнения. Скрипт не является языком общего назначения. Эти ограничения гарантируют, что язык не может быть использован для создания бесконечного цикла или другой формы «логической бомбы», которая может быть встроена в транзакцию таким образом, чтобы вызвать атаку отказа в обслуживании против сети биткойнов.Помните, что каждая транзакция проверяется каждым полным узлом сети биткойнов. Ограниченный язык предотвращает использование механизма проверки транзакции в качестве уязвимости.

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

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

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

Пять стандартных типов сценариев транзакций: хэш-код с оплатой по общему ключу (P2PKH), с открытым ключом, с несколькими подписями (до 15 ключей), хеш с оплатой по сценарию (P2SH) и с данными. output (OP_RETURN), которые более подробно описаны в следующих разделах.

Pay-to-Public-Key-Hash (P2PKH)

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

Например, давайте еще раз посмотрим на платеж Алисы в адрес Bob’s Cafe. Алиса перевела 0,015 биткойна на биткойн-адрес кафе. Этот вывод транзакции будет иметь сценарий блокировки вида:

 OP_DUP OP_HASh260 <Хеш открытого ключа кафе> OP_EQUAL OP_CHECKSIG 

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

Предыдущий сценарий блокировки может быть удовлетворен сценарием разблокировки в форме:

 <Подпись кафе> <Открытый ключ кафе> 

Два сценария вместе образуют следующий комбинированный сценарий проверки:

 <Подпись кафе> <Кафе Открытый ключ> OP_DUP OP_HASh260
<Хэш открытого ключа Cafe> OP_EQUAL OP_CHECKSIG 

При выполнении этот комбинированный сценарий будет оцениваться как TRUE, если и только если сценарий разблокировки соответствует условиям, установленным сценарием блокировки.Другими словами, результатом будет ИСТИНА, если сценарий разблокировки имеет действительную подпись из закрытого ключа кафе, которая соответствует хешу открытого ключа, установленному в качестве обременения.

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

Рисунок 5-3. Оценка скрипта для транзакции P2PKH (часть 1 из 2)

Pay-to-public-key - более простая форма биткойн-платежа, чем pay-to-public-key-hash.В этой форме сценария сам открытый ключ хранится в сценарии блокировки, а не в хэше открытого ключа, как в случае с P2PKH ранее, который намного короче. Pay-to-public-key-hash был изобретен Сатоши, чтобы сделать биткойн-адреса короче для простоты использования. Плата за открытый ключ теперь чаще всего встречается в транзакциях с базой монет, генерируемых старым программным обеспечением для майнинга, которое не было обновлено для использования P2PKH.

Сценарий блокировки с оплатой по общему ключу выглядит следующим образом:

 <Открытый ключ A> OP_CHECKSIG 

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

 <Подпись из закрытого ключа A> 

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

 <Подпись из закрытого ключа A> <Открытый ключ A> OP_CHECKSIG 

Этот сценарий представляет собой простой вызов Оператор CHECKSIG , который проверяет подпись как принадлежащую правильному ключу и возвращает TRUE в стеке.

Рисунок 5-4. Оценка сценария для транзакции P2PKH (Часть 2 из 2)

Сценарии с несколькими подписями устанавливают условие, при котором N открытых ключей записываются в сценарий, и по крайней мере M из них должны предоставлять подписи для освобождения от обременения. Это также известно как схема M-of-N, где N - общее количество ключей, а M - порог подписей, необходимых для проверки. Например, мульти-подпись 2-из-3 - это та, в которой три открытых ключа указаны в качестве потенциальных подписывающих лиц, и по крайней мере два из них должны использоваться для создания подписей для действительной транзакции для расходования средств.В настоящее время стандартные сценарии с несколькими подписями ограничены максимум 15 перечисленными открытыми ключами, что означает, что вы можете делать что угодно, от 1-из-1 до мульти-подписи 15-из-15 или любую комбинацию в этом диапазоне. Ограничение до 15 перечисленных ключей может быть снято к моменту публикации этой книги, поэтому проверьте функцию isStandard () , чтобы узнать, что в настоящее время принимается сетью.

Общая форма сценария блокировки, устанавливающего условие множественной подписи M-of-N:

 M <Открытый ключ 1> <Открытый ключ 2>... <Открытый ключ N> N OP_CHECKMULTISIG 

где N - общее количество перечисленных открытых ключей, а M - порог необходимых подписей для использования вывода.

Сценарий блокировки, устанавливающий условие множественной подписи 2 из 3, выглядит следующим образом:

 2 <Открытый ключ A> <Открытый ключ B> <Открытый ключ C> 3 OP_CHECKMULTISIG 

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

 OP_0 <Подпись B> <Подпись C> 

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

Примечание

Префикс OP_0 необходим из-за ошибки в исходной реализации CHECKMULTISIG , когда из стека выскакивает слишком много элементов. Он игнорируется CHECKMULTISIG и является просто заполнителем.

Два сценария вместе образуют объединенный сценарий проверки:

 OP_0 <Подпись B> <Подпись C> 2 <Открытый ключ A> <Открытый ключ B> <Открытый ключ C> 3 OP_CHECKMULTISIG 

При выполнении этот объединенный сценарий будет оцениваться как ИСТИНА, если и только если скрипт разблокировки соответствует условиям, установленным скриптом блокировки.В этом случае условием является наличие у сценария разблокировки действительной подписи из двух закрытых ключей, которые соответствуют двум из трех открытых ключей, установленных в качестве обременения.

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

Использование цепочки блоков биткойнов для хранения данных, не связанных с платежами в биткойнах, является спорной темой. Многие разработчики считают такое использование оскорбительным и не одобряют его.Другие рассматривают это как демонстрацию мощных возможностей технологии блокчейн и хотят поощрять такие эксперименты. Те, кто возражает против включения данных о неплатежах, утверждают, что это вызывает «раздувание блокчейна», обременяя тех, кто использует полные биткойн-узлы, несут расходы на дисковое хранилище для данных, которые блокчейн не предназначен для передачи. Более того, такие транзакции создают UTXO, которые нельзя потратить, используя биткойн-адрес назначения в виде 20-байтового поля произвольной формы. Поскольку адрес используется для данных, он не соответствует закрытому ключу, и результирующий UTXO не может быть потрачен , а никогда не будут потрачены; это поддельный платеж.Эта практика приводит к увеличению размера установленного UTXO в памяти, и, следовательно, эти транзакции, которые никогда не могут быть потрачены, никогда не удаляются, вынуждая узлы биткойнов нести их навсегда в ОЗУ, что намного дороже.

В версии 0.9 клиента Bitcoin Core компромисс был достигнут с введением оператора OP_RETURN . OP_RETURN позволяет разработчикам добавлять 40 байтов данных о неплатежах к выходным данным транзакции. Однако, в отличие от использования «фальшивого» UTXO, оператор OP_RETURN создает явно доказуемо непригодный выход для , который не нужно сохранять в наборе UTXO. OP_RETURN Выходные данные записываются в блокчейн, поэтому они занимают дисковое пространство и способствуют увеличению размера блокчейна, но они не хранятся в наборе UTXO и, следовательно, не раздувают пул памяти UTXO и не обременяют полные узлы затратами. более дорогой оперативной памяти.

OP_RETURN скрипты выглядят следующим образом:

 OP_RETURN  

Часть данных ограничена 40 байтами и чаще всего представляет собой хэш, например результат алгоритма SHA256 (32 байта).Многие приложения ставят перед данными префикс, чтобы помочь идентифицировать приложение. Например, в службе цифрового нотариального удостоверения «Доказательство существования» используется 8-байтовый префикс «DOCPROOF», который имеет кодировку ASCII как 44f4350524f4f46 в шестнадцатеричном формате.

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

Стандартная транзакция (та, которая соответствует проверкам isStandard () ) может иметь только один выход OP_RETURN .Однако один выход OP_RETURN может быть объединен в транзакции с выходами любого другого типа.

Pay-to-Script-Hash (P2SH)

Pay-to-script-hash (P2SH) был представлен в 2012 году как мощный новый тип транзакции, который значительно упрощает использование сложных сценариев транзакций. Чтобы объяснить необходимость P2SH, давайте рассмотрим практический пример.

В главе 1 мы представили Мохаммеда, импортера электроники из Дубая. Компания Мохаммеда широко использует функцию мультиподписи биткойнов для своих корпоративных счетов.Сценарии с несколькими подписями - одно из наиболее распространенных применений расширенных возможностей сценариев Биткойна и очень мощная функция. Компания Мохаммеда использует сценарий с несколькими подписями для всех платежей клиентов, известный в бухгалтерском учете как «дебиторская задолженность» или AR. При использовании схемы с несколькими подписями любые платежи, производимые клиентами, блокируются таким образом, что для их выпуска требуется как минимум две подписи, от Мохаммеда и одного из его партнеров или от его поверенного, у которого есть резервный ключ. Подобная схема с несколькими подписями обеспечивает контроль корпоративного управления и защищает от краж, растраты или потери.

Результирующий сценарий довольно длинный и выглядит следующим образом:

 2 <Открытый ключ Мохаммеда> <Открытый ключ партнера1> <Открытый ключ партнера2> <Открытый ключ партнера3> <Открытый ключ поверенного> 5 OP_CHECKMULTISIG 

Хотя сценарии с несколькими подписями мощная функция, они громоздки в использовании. Учитывая предыдущий сценарий, Мохаммед должен был передать этот сценарий каждому покупателю до оплаты. Каждый клиент должен будет использовать специальное программное обеспечение биткойн-кошелька с возможностью создания пользовательских скриптов транзакций, и каждый клиент должен будет понимать, как создать транзакцию с использованием пользовательских скриптов.Более того, итоговая транзакция будет примерно в пять раз больше, чем простая платежная транзакция, потому что этот сценарий содержит очень длинные открытые ключи. Бремя этой сверхкрупной транзакции ляжет на плечи клиента в виде комиссионных. Наконец, такой большой сценарий транзакции будет переноситься в UTXO, установленном в ОЗУ на каждом полном узле, до тех пор, пока он не будет израсходован. Все эти проблемы затрудняют использование сложных сценариев вывода на практике.

Pay-to-script-hash (P2SH) был разработан для решения этих практических трудностей и для упрощения использования сложных скриптов, как оплата на биткойн-адрес.В платежах P2SH сложный сценарий блокировки заменяется его цифровым отпечатком - криптографическим хешем. Когда транзакция, пытающаяся потратить UTXO, представляется позже, она должна содержать сценарий, соответствующий хэшу, в дополнение к сценарию разблокировки. Проще говоря, P2SH означает «заплатить скрипту, соответствующему этому хешу, скрипту, который будет представлен позже, когда эти выходные данные будут потрачены».

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

Таблица 5-4. Сложный скрипт без P2SH

Скрипт блокировки

2 PubKey1 PubKey2 PubKey3 PubKey4 PubKey5 5 OP_CHECKMULTISIG

1717
17 Сценарий снятия блокировки -5. Сложный скрипт как P2SH

Redeem Script

2 PubKey1 PubKey2 PubKey3 PubKey4 PubKey5 5 OP_CHECKMULTISIG

OP_CHECKMULTISIG

0

OP_EQUAL

Сценарий разблокировки

Sig1 Сценарий погашения Sig2

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

Давайте посмотрим на компанию Мохаммеда, сложный сценарий с несколькими подписями и полученные сценарии P2SH.

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

 2 <Открытый ключ Мохаммеда> <Открытый ключ партнера1> <Открытый ключ партнера2> <Открытый ключ партнера3> <Открытый ключ поверенного> 5 OP_CHECKMULTISIG 

Если заполнители заменены фактическими открытыми ключами (показаны здесь как 520-битные числа, начинающиеся с 04), вы увидите, что этот сценарий становится очень длинным:

 2
04C16B8698A9ABF84250A7C3EA7EEDEF9897D1C8C6ADF47F06CF73370D74DCCA01CDCA79DCC5C395D7EEC6984D83F1F50C900A24DD47F569FD4193AF5DE762C58704A2192968D8655D6A935BEAF2CA23E3FB87A3495E7AF308EDF08DAC3C1FCBFC2C75B4B0F4D0B1B70CD2423657738C0C2B1D5CE65C97D78D0E34224858008E8B49047E63248B75DB7379BE9CDA8CE5751D16485F431E46117B9D0C1837C9D5737812F393DA7D4420D7E1A9162F0279CFC10F1E8E8F3020DECDBC3C0DD389D99779650421D65CBD7149B255382ED7F78E946580657EE6FDA162A187543A9D85BAAA93A4AB3A8F044DADA618D087227440645ABE8A35DA8C5B73997AD343BE5C2AFD94A5043752580AFA1ECED3C68D446BCAB69AC0BA7DF50D56231BE0AABF1FDEEC78A6A45E394BA29A1EDF518C022DD618DA774D207D137AAB59E0B000EB7ED238F4D800 5 OP_CHECKMULTISIG 

Этот сценарий может вместо этого быть представлена ​​20-байтовой криптографический хэш, сначала путем применения алгоритма хэширования SHA256, а затем применения алгоритма ripemd160 на результат.20-байтовый хэш предыдущего сценария:

 54c557e07dde5bb6cb791c7a540e0a4796f5e97e 

Транзакция P2SH блокирует вывод в этот хеш вместо более длинного сценария, используя сценарий блокировки:

 OP_HAS7QU7B07ec7e07e08e05e08e05e05e05e05e05e6e05e6e6e намного короче. Вместо того, чтобы «заплатить этому скрипту с несколькими подписями с 5 ключами», эквивалентная транзакция P2SH - «заплатить скрипту с этим хешем». Клиенту, производящему платеж компании Мохаммеда, нужно только включить этот гораздо более короткий скрипт блокировки в свой платеж.Когда Мохаммед хочет потратить этот UTXO, он должен представить исходный скрипт погашения (тот, чей хэш заблокировал UTXO) и подписи, необходимые для его разблокировки, например: 

   <2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG> 

Два сценария объединяются в два этапа. Сначала скрипт погашения сравнивается со скриптом блокировки, чтобы убедиться, что хеш-код совпадает:

 <2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG> OP_HASh260  OP_EQUAL 

Если хэш скрипта погашения совпадает, скрипт разблокировки выполняется самостоятельно, чтобы разблокировать скрипт погашения:

   2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG 

Pay-to-script-hash address

Другой важной частью функции P2SH является возможность для кодирования хэша сценария как адреса, как определено в BIP0013.Адреса P2SH представляют собой кодировки Base58Check 20-байтового хэша скрипта, точно так же, как адреса биткойнов представляют собой кодировки Base58Check 20-байтового хеша открытого ключа. Адреса P2SH используют префикс версии «5», в результате чего адреса в кодировке Base58Check начинаются с «3». Например, сложный сценарий Мохаммеда, хешированный и закодированный Base58Check как адрес P2SH, становится 39RF6JqABiHdYHkfChV6USGMe6Nsr66Gzw . Теперь Мохаммед может дать этот «адрес» своим клиентам, и они могут использовать практически любой биткойн-кошелек для простой оплаты, как если бы это был биткойн-адрес.Префикс 3 подсказывает им, что это особый тип адреса, соответствующий скрипту, а не публичному ключу, но в остальном он работает точно так же, как платеж на биткойн-адрес.

P2SH-адреса скрывают всю сложность, так что человек, производящий платеж, не видит скрипт.

Преимущества хеширования pay-to-script

Функция pay-to-script-hash предлагает следующие преимущества по сравнению с прямым использованием сложных сценариев для блокировки выходов:

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

Сценарий погашения и проверка isStandard

До версии 0.9.2 клиента Bitcoin Core хеширование pay-to-script было ограничено стандартными типами сценариев транзакций биткойнов функцией isStandard () . Это означает, что сценарий погашения, представленный в транзакции расходования, может быть только одного из стандартных типов: P2PK, P2PKH или с несколькими подписями, за исключением OP_RETURN и самого P2SH.

Начиная с версии 0.9.2 клиента Bitcoin Core, транзакции P2SH могут содержать любой допустимый сценарий, что делает стандарт P2SH гораздо более гибким и позволяет экспериментировать со многими новыми и сложными типами транзакций.

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

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

Предупреждение

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

Что такое технология блокчейн? Как это работает?

Криптовалюты: начало технологического роста блокчейна

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

Как работает криптовалюта?

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

На сегодняшний день в мире насчитывается около 6700 криптовалют с общей рыночной капитализацией около 1,6 триллиона долларов, при этом биткойн составляет большую часть стоимости. Эти токены стали невероятно популярными за последние несколько лет: один биткойн стоит 60 000 долларов. Вот некоторые из основных причин, по которым все внезапно обращают внимание на криптовалюты:

  • Безопасность блокчейна значительно усложняет кражу, поскольку каждая криптовалюта имеет свой неопровержимый идентифицируемый номер, который привязан к одному владельцу.
  • Crypto снижает потребность в индивидуализированных валютах и ​​центральных банках - с помощью блокчейна криптовалюту можно отправлять в любую точку мира без необходимости обмена валюты или без вмешательства центральных банков.
  • Криптовалюты могут сделать некоторых людей богатыми - Спекулянты взвинчивают цены на криптовалюту, особенно биткойн, помогая некоторым из первых последователей стать миллиардерами. Еще предстоит увидеть, действительно ли это положительно, поскольку некоторые ретракторы считают, что спекулянты не имеют в виду долгосрочные преимущества криптовалюты.
  • Все больше и больше крупных корпораций приходят к идее создания цифровой валюты на основе блокчейна для платежей. В феврале 2021 года Tesla объявила, что инвестирует 1,5 миллиарда долларов в биткойны и примет их в качестве оплаты за свои автомобили.

Конечно, есть много законных аргументов против цифровых валют на основе блокчейнов. Во-первых, рынок криптовалют не очень регулируется. Многие правительства поспешили перейти к криптовалюте, но немногие из них имеют устойчивый набор кодифицированных законов в отношении этого.Кроме того, криптовалюта невероятно нестабильна из-за вышеупомянутых спекулянтов. В 2016 году биткойн стоил около 450 долларов за токен. Затем он подскочил примерно до 16000 долларов за токен в 2018 году, упал примерно до 3100 долларов, а затем с тех пор вырос до более чем 60000 долларов. Отсутствие стабильности привело к тому, что некоторые люди стали очень богатыми, в то время как большинство все еще потеряло тысячи.

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

За пределами биткойна: блокчейн Ethereum

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

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

Блокчейн

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

жетонов

Программисты

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

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

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

Блокчейн

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

Приложения блокчейна

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

Как читать историю транзакций блокчейна

Эксперт 11 сен 2020 · Читать 5 мин.

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

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

Не доверяйте, проверяйте: транзакции доступны всем

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

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

Что это значит для вас? Помимо возможности увидеть, насколько другие могут быть богаче вас, это на самом деле служит очень ценной цели: вы можете проверить каждую транзакцию, которую вы когда-либо отправляли или получали .Если вам кажется, что используемый вами сервис не показывает правильное количество биткойнов, вы можете сами проверить, совпадает ли оно. Кроме того, если ваш друг «пообещал, что уже совершил транзакцию», даже если вы ее не получили, вы можете проверить действительность его претензии непосредственно в самой цепочке блоков. Как гласит известная поговорка: « Не доверяй, проверяй» - с помощью криптовалют можно проверить все, что касается транзакций. Итак, как вы можете проверить всю историю блокчейна?

Исследователи блоков: открытие всей истории блокчейна

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

Есть много разных исследователей блоков, что имеет смысл: есть также много разных криптовалют. Чаще всего обозреватель блоков обслуживает только один криптоактив. Некоторые распространенные исследователи блоков включают в себя:
- Биткойн: blockchain.com и поток блоков
- Токены Ethereum и ERC20: Etherscan и Ethplorer
- XRP: Bithomp и графики XRP

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

Как читать транзакцию криптовалюты в обозревателе блоков

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

1. Идентификатор хэша транзакции

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

2. Адрес (а) отправителя

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

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

В этом примере на вашем адресе баланс 1 BTC. Вы хотите отправить 0,1 BTC своему другу. Когда вы создаете транзакцию, вы отправляете весь баланс своего адреса. Конечно, не все это достается вашему другу. Они получают 0,1 BTC, как и предполагалось. Оставшиеся 0,9 BTC отправляются на ваш адрес изменения. Этот адрес полностью находится в вашем контроле . Это уникально для Биткойна и его производных - например, Ethereum и XRP не отправляли бы весь баланс адреса.

3. Сборы

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

4. Адрес (а) получения

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

5. Статус операции

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

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

Ledger Live и Обозреватели блоков

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

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

С Ledger Live мы даем вам возможность легко просматривать свои балансы - даже когда вы не используете свой аппаратный кошелек.И он может делать гораздо больше - узнайте больше о его мощных функциях здесь.

Как работает блокчейн? Руководство для начинающих по технологии блокчейн

Блокчейн Биткойн представляет собой объединение Биткойна (BTC) и блокчейна. Человек или группа людей, известные как Сатоши Накамото, создали протокол Биткойн в 2008 году, чтобы децентрализовать контроль над деньгами, когда централизованные организации обанкротились. В публикации под названием «Белая книга Биткойна» изложен набор вычислительных правил, определяющих новый тип распределенной базы данных: цепочку блоков.Сеть была запущена в январе 2009 года.

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

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

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

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

Блокчейн Биткойн также децентрализован, то есть он не хранится на одном главном компьютере и не контролируется одной компанией. Он распространяется на многих компьютерах, находящихся в сети.

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

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

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

Краткая история блокчейна Биткойн

Идея технологии блокчейн была представлена ​​в 1991 году Стюартом Хабером и У.Скотт Сторнетта в своей статье «Как поставить отметку времени на цифровом документе». В этой статье они объяснили использование непрерывной цепочки временных меток для безопасной записи информации.

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

Технология Биткойн использует одноранговые (P2P) транзакции, что позволяет работать без какого-либо банка или третьей стороны для управления каждым финансовым движением.Он позволяет отправлять онлайн-платежи напрямую от одной стороны к другой, минуя какое-либо финансовое учреждение.

Связано: История Биткойна: Когда появился Биткойн?

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

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

Что нужно, чтобы блокчейн Биткойн работал?

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

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

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

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

Эта распределенная база данных управляется несколькими участниками с использованием технологии, называемой технологией распределенного реестра (DLT). Блокчейн - это тип DLT, в котором транзакции записываются с использованием неизменяемой криптографической подписи, известной как хэш.Затем транзакции объединяются в блоки. Каждый новый блок включает в себя хэш предыдущего, эффективно связывая их вместе, поэтому распределенные реестры обычно называют блокчейнами.

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

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

Как работает блокчейн Биткойн?

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

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

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

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

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

Снижение рисков

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

Но что, если один из компьютеров в сети совершит вычислительную ошибку? Ошибка будет только в одной копии блокчейна. Для его распространения по крайней мере 51% сети должна иметь такую ​​же ошибку, что очень маловероятно.

Еще одно преимущество состоит в том, что блокчейн устраняет необходимость в сторонних верификаторах.Любой участник сети Биткойн может проверить и подтвердить блокчейн в любое время.

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

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

Блокчейн и банки

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

Другие различия заключаются в том, что скорость транзакций составляет от 15 минут до часа, в зависимости от загруженности сети. При этом оплата картой и внесение чеков может занять от 24 до 72 часов.

Блокчейн Биткойн имеет переменные комиссии, обычно от 0 до 50 долларов. Хотя комиссия не связана с переводимой суммой, она определяется текущими сетевыми условиями и размером данных транзакции. Поскольку блок в цепочке блоков биткойнов может содержать только один мегабайт (МБ) данных, количество транзакций, включенных в один блок, ограничено.

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

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

Ограничения цепочки блоков

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

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

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

Технические достижения

Сеть Lightning

Сеть Lightning (LN) позволяет участникам передавать BTC между собой без каких-либо комиссий, используя свои цифровые кошельки. К сети Биткойн добавляется второй уровень, позволяющий проводить транзакции между сторонами вне блокчейна, что называется транзакциями вне цепочки.Второй уровень увеличивает пропускную способность без ущерба для каких-либо функций децентрализации или безопасности исходной цепочки блоков.

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

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

Однако исследователи предупреждают, что по мере роста Lightning Network она станет более привлекательной целью для злоумышленников. Биткойн в развивающейся платежной сети может быть украден, если пользователи не будут осторожны, и может быть трудно обеспечить безопасность активов в будущем.

По мнению экспертов из Еврейского университета Иерусалима, биткойн, который в настоящее время заблокирован в платежном канале Lightning Network, который в настоящее время составляет примерно 9 миллионов долларов в биткойнах, может быть разграблен злоумышленниками.Хотя недостаток может быть серьезным, исследователи оптимистично настроены в том, что в конечном итоге его можно исправить.

SegWit

Segregated Witness, или SegWit, относится к изменению процесса в том, как Биткойн поддерживает данные транзакций в цепочке блоков. Разделить означает разделить, а свидетелями являются подписи транзакции. Он был создан, чтобы обновить способ хранения данных в блокчейне Биткойна. Это позволяет сети хранить больше транзакций в одном блоке, увеличивая пропускную способность транзакций.SegWit стал активным на Биткойне в августе 2017 года после того, как код для обновления был выпущен в 2015 году.

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

SegWit не только улучшил скорость обработки транзакций Биткойна, но и устранил уязвимость в протоколе, которая позволяла узлам вмешиваться в проблемы податливости транзакций (TXID) в сети.Удалив так называемые «данные подписи» или «данные свидетеля» из поля ввода блока, Segwit увеличил количество транзакций, которые могли поместиться в блок, и устранил недостаток гибкости транзакций.

В сети Биткойн обновление SegWit было представлено в виде софт-форка в августе 2017 года. Софт-форк - это обратно совместимое обновление, которое позволяет обновленным узлам взаимодействовать с не модернизированными узлами. Софт-форк обычно включает новое правило, которое не конфликтует с существующими.Однако из-за высокой стоимости эксплуатации узла (особенно в развивающихся странах) обновление было приостановлено 8 ноября 2017 года.

Taproot

Разработчик Bitcoin Core Грег Максвелл предложил усовершенствовать Taproot в январе 2018 года. Критерий процента блоков, добытых с помощью сигнала поддержки от майнеров, был соблюден через три года, 12 июня 2021 года. Это означает, что 1815 из 2016 блоков, добытых в течение двухнедельного периода, имели некоторые закодированные данные, оставленные майнерами, чтобы продемонстрировать свою поддержку обновление.

Taproot - это софт-форк, который улучшает скрипты Биткойна для повышения конфиденциальности и анонимности в сети. Когда пользователь не использует Taproot, любой может обнаружить транзакции. При использовании Taproot они могут «скрывать» свои транзакции. Taproot даже позволяет скрыть запуск сценария Биткойн. По состоянию на октябрь 2020 года Taproot объединен с библиотекой Bitcoin Core.

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

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

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

Мелкое погружение в блокчейн Биткойна, Часть 2 - Транзакции | by Andreas Lymbouras

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

  1. Ваш кошелек - это приложение, которое служит пользовательским интерфейсом. Он показывает ваш баланс и запрашивает ваше разрешение при отправке денег.Для этого он отслеживает ваши входящие и исходящие транзакции, суммирует ваши расходуемые деньги, а также создает и подписывает транзакции от вашего имени.
  2. Вы начинаете с указания суммы и адреса назначения владельца биткойна. На основе этой информации ваш кошелек создает транзакцию (в соответствии с протоколом Биткойн) и подписывает ее вашим закрытым ключом.
  3. Ваш кошелек начинает транслировать вашу новую транзакцию (содержащую детали транзакции, подпись и открытый ключ) в сеть Биткойн через своих непосредственных партнеров, которые передают ее своим партнерам и т. Д.За несколько секунд вся сеть проверила и передала вашу транзакцию всем остальным узлам сети Биткойн.
Распространение транзакции

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

5. Транзакции с комиссией менее minrelaytxfee (0,00001 биткойн) считаются бесплатными и ретранслируются только при наличии свободного места в мемпуле; в противном случае они отбрасываются. Если прилагаемая комиссия меньше средней комиссии за конкурирующие транзакции (обычно рассчитывается вашим кошельком, но вы также можете указать комиссию), майнеры / пулы для майнинга будут отдавать вашей транзакции более низкий приоритет при создании блока.

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

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

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

Check Also

Н хилл: Наполеон Хилл — Новинки книг 2020 – скачать или читать онлайн

Содержание Наполеон Хилл «Десять законов процветания» Наполеон Хилл «Десять законов процветания» Читать «Закон успеха» — …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *