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

Автор:Маленькие мечты, Создано: 2017-01-19 18:30:04, Обновлено:

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

  • Биткоин

    Теперь давайте перейдем от Infocoin к настоящему протоколу биткоина.

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

    img

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

    img

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

    Теперь тот, кто готов заплатить, должен создать новую транзакцию. Давайте посмотрим на реальные данные транзакции, которые переходят в 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"}]}
    
    • Позвольте нам объяснить это строкой за строкой.

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

      Вторая строка, которая говорит нам, что эта транзакция использует первую версию протокола Биткоина.

      Строки 3 и 4 говорят нам, что у этой сделки есть вход и выход.

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

      Строка 6, которая говорит нам, сколько байтов в размер транзакции, но обратите внимание, что это не деньги транзакции.

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

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

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

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

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

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

      Не совсем понятно, что именно в 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"}]}
    
    • Как и ранее, мы объясняем по строкам, большинство из них одинаковые.

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

      Строка 2, версия протокола биткоина, первое издание.

      Строки 3, 4 - это три входа и два выхода в этой сделке.

      Строка 5, время блокировки (как и раньше) ‒

      Строка 6, размер байта транзакции.

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

      Строки 20 - 24, определяющие все выводы, первые выводы строки 21 и 22, как и ранее, строка 21 говорит, что в ней 0.01068 биткойнов. Строка 22 является языком скрипта биткойна. Строка e8c30622... является адресом получателя.

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

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

  • Заключение

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

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

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

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

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

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

    Если вам это поможет, рекомендую написать ТИП автору этой статьи, Майклу Нильсену, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ. Вы также можете следить за ним в Twitter.

    Также добро пожаловать на микроблог переводчика: 1015 Прошу прощения, если что-то не так.

Статья приведена из брошюры


Больше