4
Подписаться
1271
Подписчики

Как работает протокол Bitcoin (часть 2)

Создано: 2017-01-19 18:30:04, Обновлено:
comments   0
hits   1831

Как работает протокол Bitcoin (часть 2)

  • #### Биткойн

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

Чтобы использовать биткойн, сначала вы должны установить кошелек на свой компьютер. Для лучшего понимания, ниже представлен скриншот кошелька под названием Multibit. Вы можете видеть в верхнем левом углу остатки биткойнов, которые составляют 0.06555555 биткойнов, что составляет почти 70 долларов США по цене сделки в то время.

Как работает протокол Bitcoin (часть 2)

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

Как работает протокол Bitcoin (часть 2)

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

Теперь человеку, который готов заплатить, нужно создать новую транзакцию. Давайте посмотрим на реальные данные транзакции, переведенные в 0,319 биткойнов. Ниже приведены почти исходные данные, измененные в трех местах: 1) данные не последовательны; 2) добавлены номера строк для лучшего понимания; 3) удалена длинная строка данных хэша, сохранены только первые 6 цифр.

  1.  {"hash":"7c4025...",
  2.  "ver":1,
  3.  "vin_sz":1,
  4.  "vout_sz":1,
  5.  "lock_time":0,
  6.  "size":224,
  7.  "in":[
  8.    {"prev_out":
  9.      {"hash":"2007ae...",
  10.      "n":0},
  11.    "scriptSig":"304502... 042b2d..."}],
  12. "out":[
  13.   {"value":"0.31900000",
  14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Давайте объясним это по строчкам.

    Первая строка, хэш-значение сделки ((16), является единственным знаком, используемым для представления этой сделки.

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

    Строки 3 и 4 показывают, что у сделки есть один вход и один выход.

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

    В строке 6 указывается, сколько байт (байтов) в данной транзакции, но, обратите внимание, это не деньги на транзакции.

    Строки 7-11 определяют входную часть этой сделки, точнее, строки 8-10 говорят нам, что входная часть, по которой мы переводим деньги, была получена из выходной части предыдущей сделки. 2007ae… это 16-значный хэш-значение предыдущей сделки, используемый для указания на одну сделку.

    Примечательно, что в вводе не говорится, сколько биткоинов из предыдущей транзакции будет переведено в следующую. Фактически, все биткоины из вывода n = 0 в предыдущей транзакции были переведены. Например, если в первом выводе из предыдущей транзакции (n = 0) было 2 биткоина, то эти два биткоина будут потрачены в новой транзакции.

    Строки 12-14 определяют вывод сделки. В частности, строка 13 говорит нам о количестве выпущенных денег, здесь 0.319 биткоинов. Строка 14 более сложная, следует отметить, что строка a7db6f… является адресом для получения биткойнов.

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

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

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

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

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

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

  1. {"hash":"993830...",
  2. "ver":1,
  3. "vin_sz":3,
  4.  "vout_sz":2,
  5.  "lock_time":0,
  6.  "size":552,
  7.  "in":[
  8.    {"prev_out":{
  9.      "hash":"3beabc...",
  10.        "n":0},
  11.     "scriptSig":"304402... 04c7d2..."},
  12.    {"prev_out":{
  13.        "hash":"fdae9b...",
  14.        "n":0},
  15.      "scriptSig":"304502... 026e15..."},
  16.    {"prev_out":{
  17.        "hash":"20c86b...",
  18.        "n":1},
  19.      "scriptSig":"304402... 038a52..."}],
  20.  "out":[
  21.    {"value":"0.01068000",
  22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
  23.    {"value":"4.00000000",
  24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Как и в предыдущие разъяснения, большинство из них совпадает с тем, что было сказано ранее.

    Первая строка, хэш-значение сделки, используется в качестве единственного знака этой сделки.

    Вторая строка, версия протокола биткоина, первая версия.

    В строках 3 и 4 говорится, что в этой сделке есть 3 входа и 2 выхода.

    Пятая строка, время блокировки (как и прежде) [2].

    В шестой строке указаны объемы транзакций в битах.

    Строки с 7 по 19 определяют все входы, каждый из которых соответствует выводу из предыдущей сделки. Первый вход - строки с 8 по 11. Форма его содержания такая же, как и предыдущая. Второй вход - строки с 12 по 15, третий - с 16 по 19.

    Строки с 20 по 24 определяют все выходы, первые выходы - это строки 21 и 22, и, как и прежде, строка 21 говорит о том, что в ней содержатся 0,01068 биткойнов.

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

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

  • Заключение

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

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

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

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

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

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

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

Если что-то пойдет не так, прошу прощения.

(Смотрите иллюстрацию в начале статьи.)