Проверка биткоин транзакции на blockchain: Графики Биткоин

Содержание

Где проверить транзакцию биткоина по номеру кошелька

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

Содержание

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

                      Что такое биткоин-транзакция

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

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

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

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

                      Информация о получении криптомонет с другого кошелька включает такие типы данных:

                      1. Input (вход), то есть информация о биткоин-адресе отправителя.
                      2. Amount (сумма) – это то количество монет, которые поступили на счет кошелька.
                      3. Output (выход), то есть сведения о получателе перевода.

                      Как работают биткоин транзакции

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

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

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

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

                      Как долго ждать транзакцию

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

                      Компании BitPay или Coinbase оснащены мгновенным подтверждением транзакций. Однако следует принять во внимание повышенную комиссию за перевод криптомонет.

                      В целом, время проведения зависит от нескольких пунктов:

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

                      Как узнать, сколько подтверждений прошло?

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

                      Как увеличить скорость транзакции?

                      Существует несколько способов снижения времени транзакции:

                      • Увеличение объема переводимых средств. Чем больше криптовалют переводится, тем выше статус перевода.
                      • Увеличение комиссии за проведение транзакций. Если пользователи отдают за осуществление операций от 0,00002 ВТС, майнеры быстрее подтверждают платежи.
                      • Использование специальных сервисов типа Coinbase позволяет проводить транзакции мгновенно. На площадках сохраняются ключи продавца и покупателя, подтверждение происходит непосредственно через сервис.
                      • Возможно также использование криптокошельков с функционалом мультиподписи. Для совершения платежей на подобных сервисах нужно ввести лишь секретный ключ. Кошелек использует собственный ключ. Экономия времени и средств на лицо.

                      Почему сумма на входе и выходе может оказаться разной?

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

                      Комиссия

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

                      Как отменить транзакцию?

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

                      Тем не менее, в случае если транзакция зависла, то отменить ее можно. Нужно следовать следующим шагам:

                      1. Во-первых, нужно убедиться, что операция реально зависла. Для этого открываем программу Block Explorer и проверяем информацию о данной операции. Если деньги еще лежат на счету, то не все потеряно, отменить операцию вполне возможно. Это также реально, если появилось окошко «Неподтвержденная транзакция!»
                      2. В биткоин-кошельке нажить на окошко «Помощь», затем перейти в «Меню откладки», далее «Консоль».
                      3. Нужно получить доступ к кошельку с помощью команды passphase.
                      4. После этого получаем секретный ключ от адреса. Для этого необходимо указать в поле адреса тот, который был применен для отправки криптомонет.
                      5. После окончания экспорта ключей удаляем кошелек путем его перенесения в надежное место или переименования.
                      6. Запускаем клиент заново, импортируем полученный код. Это может занять несколько минут.
                      7. В конце отмены транзакции и запуска нового кошелька должен появиться счет с реальным положением дел. Все зависшие и неподтвержденные операции будут аннулированы.

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

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

                      В блокчейне первой криптовалюты образовалась очередь из неподтвержденных транзакций, а размер комиссии, взимаемой майнерами, увеличился в 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.com: инструкция по использованию | Начать

                      Одна из самых первых вещей, с которыми в столкнетесь при использовании Bitcoin Cash (BCH) или Bitcoin (BTC), — это обозреватель блоков или проводник. Эта статья поможет вам понять, как использовать Обозреватель блоков Bitcoin.com и что это такое, а также предложит вашему вниманию полезные советы и информацию, необходимые для понимания Bitcoin Cash, Bitcoin и блокчейна.

                      Учимся основам

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

                      Поиск по блокчейну может потребоваться вам по ряду причин, таких как проверка баланса адреса, просмотр истории транзакций, просмотр последних блоков и другие. Обозреватель блоков можно сравнить с поисковой системой, созданной специально для блокчейнов Bitcoin Cash и Bitcion.

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

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

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

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

                      На изображении в левом верхнем углу

                      • Вы можете переключаться между блокчейнами Bitcoin Cash и Bitcoin. Вы можете делать это в любом месте сайта и в любое время, чтобы переключаться между блокчейнами.
                      • Рядом с переключателем блокчейна вы увидите еще один, который позволяет переключаться между TestNet и MainNet.
                      • В правом верхнем углу находятся несколько инструментов, таких как QR-сканер для чтения QR-кодов, меню настроек и ссылка для просмотра всех блоков вместе со статистикой блокчейна. В меню настроек можно изменить отображение валюты, выбрать язык и переключиться с Cash-адресов на унаследованные (доступные только для обозревателя Bitcoin Cash).
                      • Кроме сканера QR-кодов и настроек здесь есть меню токенов, где можно искать токены SLP и просматривать основные показатели данных их производительности.
                      • Прямо по центру страницы находится средство поиска. Здесь вы чаще всего будете начинать с копирования биткойн-адреса или идентификатора транзакции и помещения их в текстовое поле для начала поиска.
                      • В самой нижней части страницы вы сможете просмотреть все и недавние блоки и данные транзакций, а кликнув по любой из ссылок — увидеть больше деталей.

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

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

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

                      Другие полезные советы Вот несколько советов, которые помогут вам освоить обозреватель блокчейна.

                      • При просмотре сведений о транзакции, как в приведенном выше примере, вы всегда можете увидеть, откуда происходит транзакция, посмотрев слева направо. Отправитель транзакции находится слева, а получатель (его адрес) — справа.
                      • Более опытные пользователи при просмотре информации о транзакции могут навести курсор на адреса и увидеть значок информации; нажмите на него, чтобы просмотреть OP_codes и скрипты транзакции.
                      • Для получения дополнительной информации о том, как работать с Транзакциями, прочитайте этот пост.

                      Посмотреть все блоки и транзакции блокчейна

                      Транзакции биткоин — как отследить и проверить 2021 году

                      Транзакции биткоин

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

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

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

                      Отправка и получение биткоинов

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

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

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

                      Как работают биткоин-транзакции

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

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

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

                      Пока транзакция биткоин находится в очереди на проверку она считается неподтвержденной. Включение в блок означает получение транзакцией 1 подтверждения.

                      ☝️

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

                      Исходя из того, что новые блоки в среднем создаются каждые 10 минут, стандартное количество подтверждений (6) занимает примерно час времени. Однако, криптовалютные биржи и разнообразные онлайн-сервисы для ускорения зачисления средств могут устанавливать свои правила, понижая минимально необходимое количество подтверждений до 2–4.

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

                      Комиссии за транзакции биткоин

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

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

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

                      В итоге время ожидания в некоторых случаях доходило до нескольких суток. А вот в разгар «криптозимы», когда стоимость биткоина консолидировалась чуть выше $3000, обработка майнерами одной транзакции биткоин оценивалась всего лишь в $0,20–0,40.

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

                      Проверка транзакции Bitcoin 

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

                      1. Скопируйте хеш транзакции. 
                      2. Откройте сайт любого обозревателя блоков биткоина. 
                      3. В поисковую строку вставьте скопированный в Шаг 1 хеш транзакции и нажмите Enter. 
                      4. Напротив подтвержденной тразакции будет стоять пометка confirmed и/или она будет выделена зеленым цветом; напротив неподтвержденной транзакции пользователь увидит пометку unconfirmed и/или выделение красным цветом.  

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

                      Поскольку сеть Bitcoin является публичной, все хранящиеся в ней данные общедоступны. Для просмотра истории уже завершенных транзакций или отслеживания состояния новых используются специализированные сервисы — обозреватели блоков (эксплореры). Самые популярные из них — Blockchain.com, BitInfoCharts, Blockchair, SoChain и BlockCypher.

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

                      Адреса отправителя и получателя.

                      Номер блока включения.

                      Статус подтверждения.

                      Дата и время включения в блок.

                      Вес транзакции.

                      Количество входов и выходов.

                      Сумма перевода.

                      Служебная информация (скрипты, подписи и т.п.).

                      Блок в сети биткоин

                      ☝️

                      Для проверки транзакции биткоин необязательно знать ее хеш — для этого вполне достаточно знать адрес хотя бы одного из участников сделки.

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

                      ☝️

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

                      Рассмотрим процесс проверки транзакции биткоин на примере одного из самых популярных обозревателей блоков Blockchain.com. 

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

                      Запуск биткоин-эксплорера на сайте Blockchain.com // Источник: Blockchain.com

                      В открывшемся окне обозревателя блоков необходимо ввести в соответствующее поле хеш транзакции (tx hash), убедиться, что в выпадающем списке выбран Bitcoin (сервис также поддерживает Ethereum и Bitcoin Cash) и нажать кнопку «Поиск».

                      Поиск транзакции по хешу через обозреватель блоков // Источник: Blockchain.com

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

                      Проверка транзакции Bitcoin в эксплорере // Источник: Blockchain.com

                      ☝️

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

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

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

                      Поиск транзакции путем просмотра кошелька через обозреватель блоков // Источник: Blockchain. com

                      Как это происходит на практике, вы можете посмотреть в видео ниже:

                      Как проверить транзакцию Bitcoin Ускорение тразакций биткоин

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

                      1. Шаг 1. Проверить статус транзакции в обозревателе блоков. 
                      2. Шаг 2. Выбрать способ ускорения транзакции.
                      3. Шаг 3. Отправить бесплатный запрос в майнинг-пул на ускорение транзакции или повысить комиссию в кошельке, через который данная транзакция создавалась. 
                      4. Шаг 4. Дождаться обработки транзакции майнерами. 

                      Ниже вы сможете прочитать подробности по каждому способу. 

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

                      За одну секунду в Visa или Mastercard проходит по несколько тысяч транзакций, у биткоина — всего 5–10 штук.

                      Сеть Bitcoin

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

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

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

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

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

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

                      ☝️

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

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

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

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

                      Название данного метода ускорения транзакций биткоин переводится как «ребенок платит за родителя». Он может быть применен только получателем зависшего перевода в случае поддержки его кошельком функции «Spend unconfirmed» (потратить неподтвержденные).

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

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

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

                      ☝️

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

                      Методы ускорения биткоин-транзакции

                      В некоторых кошельках, например Electrum, имеется функция Replace-by-fee, с помощью которой «зависшие» биткоин-транзакции могут быть заменены своими копиями с увеличенной комиссией, которая обеспечит ускорение ее подтверждения. Обязательное условие при этом — изначальная сделка должна быть с пометкой «replaceable» (устанавливается еще на этапе формирования).

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

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

                      Кошельки SegWit

                      Кроме использования увеличенной комиссии, для ускорения биткоин-транзакций можно дополнительно использовать кошелек с поддержкой сайдчейн-технологии Segregated Witness (SegWit). Благодаря ей, вместимость блоков в сети Bitcoin увеличивается вдвое и соответственно в столько же раз повышается пропускная способность при обработке переводов между SegWit-адресами.

                      Такую возможность предоставляют пользователям большинство популярных криптокошельков — Bitcoin Core, Exodus, Jaxx, Electrum, Green Address, Samourai Wallet и Coinbase Wallet. 

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

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

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

                      Анонимные транзакции в сети биткоин

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

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

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

                      Миксеры для биткоин-транзакций

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

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

                      ☝️

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

                      Криптовалютных миксеров, позволяющих сделать транзакции биткоин анонимными, существует достаточно много. Но поскольку всегда существует риск того, что малоизвестный сервис окажется мошенническим, следует использовать только проверенные многими пользователями варианты. Например — Blender, BitMix, Mixcoins, Bitcoin Mixer и SmartMix.

                      Кошелек Wasabi

                      Биткоин-кошелек Wasabi Wallet позволяет проводить конфиденциальные транзакции биткоин по схожему с миксерами принципу. Однако при этом речь идет не об обычном «перемешивании» монет между адресами, а об использовании анонимной сети Tor в комплексе с технологией CoinJoin и протоколом «слепых подписей» ZeroLink, разработанным компаниями Hidden Wallet и Samurai Wallet.

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

                      Этот кошелек является приложением с открытым исходным кодом и выпускается только в десктопной версии для Windows, Linux и MacOS.

                      Сайдчены в сети биткоин

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

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

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

                      Крупнейшая транзакция, рост «китов» и курса bitcoin – обзор положения криптовалюты

                      Цифровой актив продолжает бить рекорды нахождения выше уровня $10 тыс.

                      Большинство криптовалют из первой десятки рейтинга капитализации ресурса CoinMarketCap встретили вторник падением. По состоянию на 10:43 (МСК), 7 из 10 лидеров демонстрируют отрицательную динамику. Bitcoin не вошел в их число. На момент написания новости, криптовалюта торгуется по $13 116. За сутки цифровой актив подорожал на 0.15%, за неделю – на 11.53%.

                      Активнее других лидеров капитализации в течение 24 часов рос токен Polkadot (+8. 19%). Лучший результат позитивного движения за неделю при этом зафиксирован у одной из старейших криптовалют – Litecoin (+19.96%). Напомним, LTC реализовал рост на фоне включения его в список цифровых активов, работа с которыми будет доступна пользователям популярной платежной системы PayPal.

                      Данные: CoinMarketCap

                      Читайте Bloomchain через любимые соцсети: Telegram, VK, FB

                      Тем временем в сети bitcoin участники криптосообщества зафиксировали крупнейшую, по некоторым данным, за всю историю существования криптовалюты, транзакцию. Неизвестный перевел 88,857 (свыше $1 млрд, по текущему курсу) на неидентифицированный кошелек. При этом стоимость транзакции составила всего лишь $3.54.

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

                      Хэшрейт bitcoin. Данные: blockchain.com

                      Несмотря на это, как отметил экономист Джулиан Морено, цифровой актив продолжает бить рекорд нахождения выше отметки $10 тыс.

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

                      На фоне позитивного движения bitcoin и продолжительного удержания уровня $10 тыс., в сети криптовалюты значительно увеличилось количество «китов» – инвесторов, на балансе которых больше 1 тыс. BTC

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

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

                      Что такое блокчейн простыми словами.

                      Технология блокчейн

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


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

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

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

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

                      А – актив


                      Что-то ценное: например, деньги, имущество, ценные бумаги, информация. Активы могут существовать в реальном мире, как, например, квартира или автомобиль, а могут быть полностью цифровыми.

                      Т – транзакция


                      Когда люди передают активы друг другу, это называется транзакция.

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

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

                      И главное здесь – учет транзакций.

                      У – учет транзакций


                      Учет транзакций – это фиксация всех переходов актива или права на него от одного человека к другому. И здесь возникает ключевой вопрос: насколько механизм подтверждения передачи прав надежен и конфиденциален?

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

                      Представим теперь, что большая книга владельцев цветов в ботаническом саду пострадала от наводнения. Все записи исчезли. А почта или садовник потеряли открытку. Как теперь Маше доказать свои права собственности?

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

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

                      Р – распределенные реестры


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

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

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

                      К – консенсус

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

                      Что, если один из садовников намеренно или случайно внесет в свой блокнот неправильную запись? Например, что Петя отдал свой цветок не Маше, а Оле? Все просто: перед тем как записать следующую строчку, все садовники сверяют свои блокноты. Верным признается тот вариант, который зафиксирован у большинства.

                      В реальных блокчейн-сетях за определенный период времени происходит несколько транзакций. И записи о транзакциях включаются в один блок.

                      Б – блок


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


                      Все блоки последовательно соединяют в одну последовательную цепь.

                      Ц – цепь


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

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

                      Новые блоки в цепь добавляют майнеры.

                      М – майнеры

                      Майнеры выполняют в блокчейне несколько функций:

                      • хранят копии блокчейна и тем самым защищают информацию от потери или подделки;

                      • подтверждают транзакции;

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

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

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

                      Но что мотивирует майнеров регистрировать новые транзакции? За поддержание работы сети майнеры получают награду.

                      Н – награда

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

                      Зачем садовникам следить за порядком в своем блокчейн-саду? Ответ прост: садовник, который регистрирует транзакцию, получает за это награду. Например, новые луковицы тюльпанов. Их выдает ему ботанический сад, заинтересованный в «тюльпанной лихорадке».

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


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

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

                      З – задачи

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

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

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

                      К – кошелек

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

                      Чаще всего такие кошельки анонимны – они не позволяют узнать, кто именно принимает или отправляет с него активы.

                      В большинстве блокчейн-садов и садовники, и владельцы цветов играют в маскарад. Их истинные имена неизвестны. То есть никто не знает, что под маской льва скрывается именно Петя, а под костюмом бабочки – Маша.

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

                      Данные электронных кошельков и транзакции в блокчейне защищены шифрованием.

                      Ш – шифрование

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

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

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

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

                      Особенности технологии распределенных реестров

                      • Актив может быть любым: например, акции, цифровые токены, права на недвижимость, золото или книги.

                      • Транзакции проходят практически мгновенно, но на их подтверждение может потребоваться время. Какое именно – определяет алгоритм консенсуса конкретной блокчейн-сети.

                      • Сделки конфиденциальны и анонимны: покупатель указывает только номер своего криптокошелька.

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

                      • Права покупателей надежно защищены: отменить или изменить уже заключенные сделки невозможно. Если вы действительно приобрели что-то – например, луковицы тюльпанов или квартиру, – никакой мошенник не сможет доказать, что они принадлежат ему. Все сделки зафиксированы в цепочке блоков.

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

                      Что нужно знать о тестировании блокчейн-приложений

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

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

                      Прежде чем начать, вспомним, что означают термины, которые нам понадобятся

                      Блок (block) — единицы кода, которые выполняют функцию хранилища данных о каких-либо действиях, транзакциях.

                      Блокчейн (blockchain) – постоянно растущая цепочка блоков. Копии цепочек блоков хранятся на множестве различных компьютерах.

                      Криптовалюта – виртуальные деньги.

                      Биткоин (Bitcoin) – платежная система и самая популярная криптовалюта в мире.

                      Эфириум (Ethereum) – вторая по популярности криптовалюта.

                      Форк (fork) – разветвление цепочки блоков на две, которые начинают функционировать независимо друг от друга.

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

                      Комиссия (fee) – плата, которую майнеры получают за совершенные сделки.

                      Смарт-контракт (smart contract) – алгоритм, автоматизирующий процесс исполнения условий контрактов в блокчейне. Главное преимущество «умного» контракта – исключение расхождения толкований условий договора заключившими его сторонами.

                      Faucet-ресурсы – интернет-ресурсы, раздающие пользователям монеты криптовалюты бесплатно для использования в своих целях.

                      Что такое блокчейн с точки зрения тестировщика?

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

                      Какими особенностями обладает тестирование блокчейн-приложений?

                      1. Создание окружения для тестирования

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

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

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

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

                      1. Необратимость операций

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

                      Это накладывает максимальный уровень ответственности на команду по тестированию. Ведь пропущенный дефект почти всегда будет критическим.

                      1. Все транзакции платные

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

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

                      При работе с Ethereum расчет будет произведен в абстрактной величине Gas (валюта для расчетов внутри сети).

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

                      Какие виды тестирования актуальны для блокчейн-приложений?

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

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

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

                      Функциональное тестирование даст понять, были ли реализованы все функциональные требования.

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

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

                      Какие инструменты понадобятся для тестирования?

                      Приступая к тестированию, важно хорошо подготовиться. При тестировании понадобятся следующие инструменты:

                      • Индексер тестовой сети. Например, сайт Ropsten Etherscan позволяет увидеть актуальные балансы кошельков, детальную информацию по любой транзакции.
                      • Баг- и тест-трекинговые системы.
                      • Возможно, придется развернуть ноду (от англ. node – узел) для выбранного блокчейна локально. Для этого существует множество инструментов как с удобным UI, так и консольных.
                      • Инструменты для тестирования API (Postman или soapUI).
                      • Инструменты для просмотра информации в базах данных.
                      • Энкодеры и энкрипторы.

                      Возможна ли автоматизация тестирования блокчейн-приложений?

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

                      Как выбрать команду для тестирования?

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

                      Заключение

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

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

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

                      Поделиться статьей:

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

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

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

                      Биткойны существуют как записи биткойн-транзакций

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

                      — Сатоши Накамото, Белая книга биткойнов

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

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

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

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

                      Сумма: Это конкретная сумма BTC, которую Марк хочет отправить Джессике.

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

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

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

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

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

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

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

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

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

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

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

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

                      —Сатоши Накамото, Белая книга биткойнов

                      Помните, как BTC «существуют» только как записи транзакций в цепочке блоков ? Это означает, что иногда несколько транзакций в конечном итоге привязываются к определенному адресу биткойнов.Допустим, у вас в кошельке 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. Пользователи биткойнов не могут разделить транзакцию на меньшие суммы, и можно потратить только весь вывод транзакции. Итак, когда вы открываете свой кошелек и вводите «0,25» в поле сумма , технически происходит то, что одна из транзакций 0,5 BTC (от вашего щедрого друга Криса) будет полностью отправлена.Затем разница возвращается через новую транзакцию. Вот подробный технический процесс:

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

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

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

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

                      Сколько стоит комиссия за транзакцию биткойнов?

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

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

                      Как проверяются транзакции ?. Изобретательность сети Биткойн… | Блэр Маршалл

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

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

                      Так что же это за «математические задачи»? Давайте разберемся.

                      Блок и его хэш

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

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

                      Это вся концепция блокчейна. Возьмите два блока, A и B. Первый A добавляется в сеть. Майнеры собирают транзакции в блок A и хешируют всю эту дату, чтобы сгенерировать 256-битное число, однозначно идентифицирующее блок A. Назовите его хешем A. Затем майнеры работают над созданием блока B, чтобы добавить его поверх блока A. Майнеры собирают еще один набор транзакций и добавить хэш A в блок B. Затем майнеры хешируют новый набор транзакций + хеш A, чтобы получить хэш B.

                      Теперь, если злоумышленник вернется к транзакциям блока A и изменит даже мельчайшие детали , то хеш A полностью изменится, что, в свою очередь, изменит последующий хэш B, потому что вы только что изменили данные, хэшированные блоком B.А поскольку для создания блока и добавления его в сеть требуется много работы (вычислительные ресурсы), потребуется еще больше работы, чтобы изменить предыдущий блок, скажем, блок A, добавить его в сеть, а затем воссоздать блок B с помощью ваш новый хэш A и добавьте его в сеть до того, как остальная часть майнинговой сети перейдет в блоки C, D, E и далее.

                      Математическая задача

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

                      93ef6f358fbb998c60802496863052290d4c63735b7fe5bdaac821de96a53a9a

                      Это число может начинаться с любого числа 0–9 или буквы A-F, поэтому поиск хэша, который начинается, скажем, с 17 ведущих нулей, потребует много работы.

                      Nonce

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

                      Сложность

                      Неизбежно, как и в любом другом соревновании с денежным призом, будет расти спрос на попытки выиграть эти драгоценные биткойны. Это означает, что больше людей добавят свои вычислительные ресурсы в сеть в надежде, что они смогут выбрать одноразовый номер, который даст им хэш с правильными ведущими нулями. Единственный способ получить преимущество перед конкурентами — это использовать вычислительные ресурсы с более высокой скоростью хеширования (хешрейты в секунду), называемые мощностью хеширования. Чем больше мощности хэширования пытается решить головоломку, тем она неизбежно будет решаться все быстрее и быстрее. Вот где возникает Сложность или Цель. Протокол Биткойн имеет явную цель добавлять блок 6 раз в час или один раз каждые 10 минут в долгосрочной перспективе. Чтобы поддерживать этот упорядоченный формат, протокол имеет Сложность, которая регулируется вверх или вниз в зависимости от того, как быстро блоки добавляются в сеть.Каждые 2016 блоков (около 2 недель) протокол просматривает последние 2016 блоков и измеряет, сколько времени потребовалось для их решения, а затем соответствующим образом корректирует Сложность. Сложность просто заключается в том, сколько ведущих нулевых майнеров потребуется в их хэше, чтобы запросить действительный блок.

                      Вознаграждение и комиссии за блок

                      Стимулом для выделения вычислительных ресурсов сети и постоянного расхода энергии на проверку транзакций является вознаграждение за блок и комиссии за транзакции. За каждый блок, который майнер успешно выигрывает с соответствующим Nonce и соответствующим хешем, майнер получает биткойн в качестве компенсации. Вначале вознаграждение за блок составляло 50 BTC за блок, но каждые 4 года вознаграждение за блок уменьшается вдвое, пока вознаграждения за блок не исчезнут. Сегодня вознаграждение за блок уменьшилось вдвое, так что оно упало до 12,5 BTC за блок.

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

                      Индивидуальный майнинг против пула

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

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

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

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

                      Концепция проверки транзакций — Bitcoin Stack Exchange

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

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

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

                      10 минут — результат проверки работы алгоритма. Он перенаправляется каждые 2016 блоков, так что в среднем всей сети требуется 10 минут, чтобы построить блок, хэш которого меньше целевого значения (начинается с определенного количества нулей).Это не отдельная транзакция, для проверки которой требуется 10 минут, а построение всего блока транзакций с требуемым доказательством работы.

                      Как только блок с надлежащим доказательством работы найден, он транслируется в сеть, которая примет его, если блок соответствует всем критериям. После этого Боб может видеть, что транзакция с открытым ключом, который он предоставил Алисе, была включена в блок. Это называется «подтверждением». Как только другой блок добывается поверх этого блока, считается, что транзакция имеет 2 подтверждения, а на один блок позже — 3 подтверждения…и так далее.

                      Вот еще несколько ответов, которые вы, возможно, захотите прочитать:

                      Что такое майнинг?

                      Что такое доказательство работы?

                      Проверка

                      — Основные функции Bitcoin

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

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

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

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

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

                      Как валидация защищает ваши биткойны

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

                      Щелкните любую строку ниже, чтобы получить дополнительные сведения об этой атаке

                      Атака Банковский кошелек Кошелек SPV Ядро Биткойн
                      Прямая кража

                      Алиса кладет в банк 100 биткойнов.Example.com. На следующий день владельцы сайта исчезают вместе с деньгами Алисы.

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

                      • Легкий (SPV) кошелек пользователей и биткойнов Пользователи Core не уязвимы, потому что они контролируют свои собственные приватные ключи.

                      Прямая кража, вероятно, до сих пор является основной причиной кражи биткойнов.

                      Реальный пример

                      Биткойн-биржа Mt Gox, как сообщается, имела 650 000 биткойнов (на сумму 347 долларов). миллионов долларов США), украденных с их клиентских депозитов и собственных операционных средства. Они объявили о банкротстве 28 февраля 2014 года.

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

                      Подробнее: Обрушение горы Gox

                      Приманка и свитч

                      Алиса устанавливает Example Wallet, открытый исходный код которого был проверено.На следующий день авторы Example Wallet отправляют новый код в Устройство Алисы и украдите все ее биткойны.

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

                      • Легкий кошелек (SPV) пользователей уязвимы с большинство программного обеспечения, потому что аудиторы не могут легко проверить программное обеспечение, которое вы run (исполняемый файл) совпадает с исходным кодом программы и называется детерминированная сборка.Однако некоторые легкие кошельки переходят на детерминированные сборки.

                      • Bitcoin Core построен детерминированно. Криптографический подписи аудиторов сборки, многие из которых хорошо известны community — публикуются публично.

                      На странице

                      Bitcoin.org «Выберите свой кошелек» вы узнаете, сборки кошельков проверяются по шкале Transparency для каждого кошелька.

                      Реальный пример

                      В апреле 2013 года был взломан майнинг-пул OzCoin. Вор украл 923 биткойны (стоимостью 135000 долларов США), но модифицированный онлайн-кошелек StrongCoin код их кошелька, чтобы «украсть» 569 из этих биткойнов (83 000 долларов США) от одного из их пользователей, подозреваемого в краже.

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

                      Подробнее: OzCoin взломано, украденные средства захвачены и возвращены StrongCoin

                      сфабрикованные операции

                      Мэллори создает транзакцию, дающую Алисе 1000 биткойнов, поэтому Алиса дает Мэллори немного денег. Позже Алиса обнаруживает транзакцию Мэллори. Создано было подделкой.

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

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

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

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

                      Реальный пример

                      4 августа 2015 года веб-кошелек BlockChain.info начал показывать, что транзакция потратила первые добытые 250 биткойнов, монеты, которые некоторые люди считали, что они принадлежали создателю биткойнов Сатоши Накамото.

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

                      Подробнее: документация BitcoinJ о незавершенной транзакции безопасность

                      Угон цепи

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

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

                      • Легкий кошелек (SPV) пользователей принимают цепочку блоков они знают о большинстве доказательств работы. Это позволяет хешрейту Большинство майнеров заставляют пользователей кошельков SPV отказаться от биткойнов.

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

                      Предотвращение взлома цепочки — одна из важнейших задач Bitcoin Core. Альтернатива — позволить майнерам делать все, что они хотят.

                      Реальный пример

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

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

                      Считается, что виновные майнеры контролировали более 50% скорость хеширования сети, чтобы они могли продолжать обманывать кошельки SPV бесконечно. Это было только их желание оставаться совместимыми с Пользователи Bitcoin Core, которые вынудили их отказаться от доход от добычи.

                      Подробнее: Июль 2015 вилки цепи

                      Удержание операции

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

                      • Биткойн банк пользователей видят только транзакции банка выберите их показать.

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

                      • Пользователи Bitcoin Core видят все транзакции, включенные в полученные блоки.Если Bitcoin Core не получал блок слишком долго, он отображает догоняющую полосу прогресса в графическом интерфейсе пользователя интерфейс или предупреждающее сообщение в пользовательском интерфейсе командной строки / API интерфейс.

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

                      Реальный пример

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

                      Подробнее: Генеральный директор Chainalysis отрицает «атаку Сибиллы» на сеть Биткойн

                      Перезапись цепочки

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

                      Эта атака распространяется на всех биткойн-кошельков.

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

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

                      Реальный пример

                      В сентябре 2013 года кто-то использовал централизованный майнинг-пул GHash.io для украсть около 1000 биткойнов (на сумму 124000 долларов США) из азартных игр сайт BetCoin.

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

                      Таким образом, он получил биткойны от своих выигрышных ставок, не проигрывая. биткойны по его проигрышным ставкам.

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

                      Подробнее: GHash.IO и двойные траты против BetCoin Игральные кости

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

                      Помогите защитить децентрализацию

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

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

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

                      Пользователи биткойн-банков
                      Доверительные банкиры
                      Пользователи легких P2P-кошельков
                      Доверять майнерам
                      Пользователи легких клиентских кошельков
                      Доверяют «бесплатным» сервисам
                      Пользователи Bitcoin Core
                      Обеспечение соблюдения правил

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

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

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

                      Если вы считаете, что Биткойн должен оставаться децентрализованным, — лучшее, что вам нужно может подтвердить каждый полученный платеж, используя свой личный полный узел, такой как Bitcoin Core.

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

                      Вы подтверждаете свои транзакции?

                      Некоторые путают поддержку сети с помогает защитить децентрализацию Биткойна.

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

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

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

                      3. Используйте интерфейс CLI / API встроенного кошелька. Это предназначено для опытные пользователи, предприятия и программисты. На странице пользовательского интерфейса представлен обзор, установка инструкции могут помочь вам начать работу, и документация RPC может помочь вам найти конкретные команды.Если вы используете , получите новый адрес на создайте адреса приема, ваши полученные транзакции будут полностью подтверждено.

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

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

                      Упрощенная проверка платежей (SPV) кошельки легкие кошельки, которые могут проверить, является ли транзакция частью блока без загрузки цепочки блоков размером 340 ГБ.Тем не мение, они не могут проверить, действительно ли сделка действительна. (Это могут делать только узлы полной проверки, такие как Bitcoin Core.)

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

                      транзакций в биткойнах | CoinGeek

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

                      Фундаментальный компонент горного дела

                      Майнинг

                      Биткойн (BSV) спроектирован так, чтобы быть ресурсоемким и сложным, поэтому количество блоков, обнаруживаемых каждый день, остается постоянным. В процессе используется согласованный алгоритм, называемый Proof of Work или PoW.

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

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

                      Основным принципом, который контролирует неизменность и безопасность блокчейна Биткойн (BSV), является криптографическое хеширование. Доктор Крейг С. Райт, используя псевдоним Сатоши Накамото, использовал хеш-функцию SHA-256 при создании протоколов Биткойн (BSV). При хешировании выводится 256-битное число, представленное в 64-символьной шестнадцатеричной системе счисления для более естественного понимания человеком.

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

                      Как работает майнинг?

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

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

                      Что будет после?

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

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

                      Заголовок блока содержит следующее:

                      • Корневой хэш
                      • Хеш предыдущего блока
                      • Отметка времени
                      • Клиентское программное обеспечение версии
                      • Цель
                      • Случайное число, называемое nonce

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

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

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

                      Неудачные обновления блоков

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

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

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

                      Угроза безопасности

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

                      Proof of Work помогает защитить сеть Биткойн (BSV) от атак. Успешная атака потребует больших вычислительных мощностей в течение длительного периода, поскольку атака должна быть устойчивой, чтобы нанести какой-либо реальный ущерб.

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

                      Награды за блок

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

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

                      Определение майнинга биткойнов

                      Что такое биткойн-майнинг?

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

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

                      Ключевые выводы

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

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

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

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

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

                      Особые соображения

                      Награждение майнеров Биткойн

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

                      Количество новых биткойнов, выпущенных с каждым добытым блоком, называется «вознаграждением за блок». Вознаграждение за блок уменьшается вдвое каждые 210 000 блоков (или примерно каждые 4 года).В 2009 году было 50. В 2013 году было 25, в 2018 году — 12,5, а в мае 2020 года снизилось вдвое до 6,25.

                      Биткойн успешно сократил вознаграждение за майнинг вдвое — с 12,5 до 6,25 — в третий раз 11 мая 2020 года.

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

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

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

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

                      Во-вторых, чтобы добавить блок транзакций в цепочку блоков, майнеры должны решить сложную вычислительную математическую задачу, также называемую «доказательством работы». На самом деле они пытаются придумать 64-значное шестнадцатеричное число, называемое «хешем», которое меньше или равно целевому хешу.По сути, компьютер майнера выдает хеши с разной скоростью — мегахеши в секунду (MH / s), гигахеши в секунду (GH / s) или терахеши в секунду (TH / s) — в зависимости от устройства, угадывая все возможные 64- цифры, пока они не придут к решению. Другими словами, это авантюра.

                      Уровень сложности последнего блока по состоянию на август 2020 года составляет более 16 триллионов. То есть вероятность того, что компьютер создаст хеш-значение ниже целевого, составляет 1 из 16 триллионов. Для сравнения: у вас примерно в 44 500 раз больше шансов выиграть джекпот Powerball с помощью одного лотерейного билета, чем если бы вы выбрали правильный хеш с одной попытки.К счастью, компьютерные системы для майнинга предоставляют множество возможностей для хеширования. Тем не менее, майнинг биткойнов требует огромного количества энергии и сложных вычислительных операций.

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

                      Аналогия с майнингом биткойнов

                      Допустим, я говорю трем друзьям, что думаю о числе от 1 до 100, пишу это число на листе бумаги и запечатываю в конверт. Моим друзьям не нужно угадывать точное число, они просто должны быть первыми, кто угадывает любое число, которое меньше или равно числу, о котором я думаю. И нет предела тому, сколько догадок они получают.

                      Скажем, я думаю о числе 19. Если Друг А угадает 21, он проиграет, потому что 21> 19.Если друг B угадывает 16, а друг C — 12, то теоретически они оба пришли к жизнеспособным ответам, потому что 16 <19 и 12 <19. Друга Б не получил «дополнительной оценки», хотя ответ Б был ближе к целевому ответу, равному 19.

                      А теперь представьте, что я задаю вопрос «угадай, какое число я думаю», но я спрашиваю не только троих друзей, и я не думаю о числе от 1 до 100. Скорее, я задаю миллионы потенциальных майнеров, и я думаю о 64-значном шестнадцатеричном числе.Теперь вы видите, что угадать правильный ответ будет крайне сложно.

                      Биткойн-майнеры не только должны придумать правильный хеш, но и первыми сделать это.

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

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

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

                      Биткойн против традиционных валют

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

                      Даже цифровые платежи с использованием доллара США поддерживаются центральным органом. Например, когда вы совершаете онлайн-покупку с помощью дебетовой или кредитной карты, эта транзакция обрабатывается компанией, занимающейся обработкой платежей (такой как Mastercard или Visa).Помимо записи вашей истории транзакций, эти компании проверяют, не являются ли транзакции мошенническими, что является одной из причин, по которой ваша дебетовая или кредитная карта может быть приостановлена ​​во время путешествия.

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

                      История майнинга биткойнов

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

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

                      Эта проблема, лежащая в основе протокола биткойнов, известна как «масштабирование». Хотя майнеры биткойнов в целом согласны с тем, что необходимо что-то делать для решения проблемы масштабирования, единого мнения о том, как это сделать, нет.Было предложено два основных решения проблемы масштабирования. Разработчики предложили либо (1) создать для Биткойна вторичный «вне-цепной» уровень, который позволит более быстрые транзакции, которые позже могут быть проверены блокчейном, либо (2) увеличить количество транзакций, которые может хранить каждый блок. При меньшем количестве данных для проверки на каждый блок Решение 1 сделает транзакции более быстрыми и дешевыми для майнеров. Решение 2 касается масштабирования, позволяя обрабатывать больше информации каждые 10 минут за счет увеличения размера блока.

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

                      Программа, которую майнеры проголосовали за добавление к протоколу биткойнов, называется изолированным свидетелем или SegWit. Этот термин представляет собой объединение Segregated, что означает «разделять», и Witness, что означает «подписи в транзакции биткойнов». Таким образом, Segregated Witness означает отделение подписей транзакций от блока и присоединение их как расширенного блока.Хотя добавление одной программы к протоколу биткойнов может показаться не таким уж большим решением, данные подписи, по оценкам, составляют до 65% данных, обрабатываемых в каждом блоке транзакций.

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

                      Вместо этого они выбрали Решение 2. Получившаяся валюта, называемая «биткойн наличными», увеличила размер блока до 8 МБ, чтобы ускорить процесс проверки и обеспечить выполнение около 2 миллионов транзакций в день. 16 августа 2020 года Bitcoin Cash был оценен примерно в 302 доллара, а биткойн — примерно в 11 800 долларов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                      Указывает Указывает
                      Размер Поле Описание

                      4 байта

                      Версия

                      Версия

                      1–9 байт (VarInt)

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

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

                      Переменная

                      Входы

                      Входы

                      Один или несколько входов

                      1–9 байт (VarInt)

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

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

                      Переменная

                      Выходы

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

                      Lockt 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.

                      Tip

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

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

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

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

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

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

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

                      Биткойн03 биткойн)

                      9 Variable Скрипт

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

                      8 байт

                      Стоимость03

                      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": "76a9148c7e252f8d64b0b6e3139850fcfefcf4a2d88ac", # "значение": 8000000, # "value_hex": "7a1200", # "подтверждения": 28691 #}, #... #]} или = запросов . получить ( 'https://blockchain.info/unspent?active= % s ' % адрес ) utxo_set = json . загружает ( или . текст ) [ "unspent_outputs" ] для utxo в utxo_set : печать " % s : % d - % ld Satoshis" % ( utxo ' ' 90hash 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  ,   value  ): 
                                сам  .   tx_hash   =   tx_hash 
                                сам  .   tx_index   =   tx_index 
                                сам  .  значение   =   значение 
                      
                            def   __repr__   (  self  ): 
                                возврат   "< % s  :  % s   с  % s   Satoshis>"  %   (  self  . 90_603  self  . 90_603  само по себе  .   tx_index  , 
                                                                     сам  .  значение  ) 
                      
                        # Выбрать оптимальные выходы для отправки из списка неизрасходованных выходов. 
                        # Возвращает список вывода и оставшееся изменение для отправки на 
                        # изменить адрес. 
                        def   select_outputs_greedy   (  неизрасходовано  ,   min_value  ): 
                            # Ошибка, если пусто. 
                            если   нет   неизрасходованные  : 
                                возврат   Нет 
                            # Разделение на 2 списка.
                            лессеры   =   [  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   в   lessers  : 
                                счет  .  добавить   (  utxo  ) 
                                аккумулятор   + =   utxo  .   значение 
                                если   аккумулятор  > =   min_value  : 
                                    изменить   =   накопить   -   min_value 
                                    возврат   результат  ,   "Изменение:  % d   Satoshis"  %   изменение 
                            # Ничего не найдено.
                            возврат   Нет  ,   0 
                      
                        по умолчанию   основной   (): 
                            неизрасходованные   =   [
                                OutputInfo   (  "ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad62167"  ,   1  ,  60 8000000 9060
                                OutputInfo   (  "6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf"  ,   0  ,   16050000   

                      0000) OutputInfo ( "b2affea89ff82557c60d635a2a3137b8f88f12ecec85082f7d0a1f82ee203ac4" , 0 ,
                      10000) OutputInfo ( "7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1" , 0 ,
                      OutputInfo ( "55ea01bd7e9afd3d3ab97

                      e777d62a0709cf0725e80a7350fdb22d7b8ec6" , 17 , 9060 OutputInfo ( "12b6a7934c1df821945ee9ee3b3326d07ca7a65fd6416ea44ce8c3db0c078c64" , 0 , 10000) OutputInfo ( "7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818" , 0 , 16604000 ] если лен ( argv ) > 1 : целевой = длинный ( argv [ 1 ]) иначе : цель = 55000000 print "Для суммы транзакции % d Satoshis ( % f bitcoin) используйте:" % ( target , target /1060.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. Структура ввода транзакции

                      Транзакция Hash

                      4 быть потрачено

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

                      32 байта

                      Транзакция, содержащая хеш-код

                      4

                      4 байта

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

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

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

                      Размер скрипта разблокировки

                      Длина скрипта разблокировки в байтах, затем

                      9 Variable -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 выталкивает два элемента из стека и нажимает TRUE (TRUE представлено числом 1), если они равны, или FALSE (представлен нулем), если они не равны.Скрипты биткойн-транзакций обычно содержат условный оператор, поэтому они могут выдавать ИСТИННЫЙ результат, означающий действительную транзакцию.

                      На рис. 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

                      9322 9035

                      9322 9035 902 902 902 902 902 -5. Сложный скрипт как P2SH

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

                      2 PubKey1 PubKey2 PubKey3 PubKey4 PubKey5 5 OP_CHECKMULTISIG

                      9223 OP_EQUAL

                      Redeem Script> имеет скрипт Redeem

                      2 PubKey1 PubKey2 PubKey3 PubKey4 PubKey5 5 OP_CHECKMULTISIG

                      9_CHECKMULTISIG

                      9_CHECKMULTISIG

                      9_CHECKMULTISIG

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

                      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_HAS7BB07ec7e07e07e6e6e6e6e6e6e05e05e05e6e6e намного короче. Вместо «оплата этому сценарию с 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, если вы заблокируете вывод с помощью хэша недействительной транзакции, он будет обработан независимо. Однако вы не сможете их потратить, потому что транзакция расходования, которая включает сценарий погашения, не будет принята, поскольку это недопустимый сценарий.

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

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