Запутался в хэше на диаграмме Сатоши Накамото

На диаграмме Сатоши Накамото:

введите описание изображения здесь

Рассмотрим блок Hash в первом блоке транзакции выше:

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

Спасибо.

Ответы (1)

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

Как это рассчитывается?

Выполняя транзакцию дважды SHA256.

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

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

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

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

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

Руководство разработчика Bitcoin.org объясняет большинство деталей Биткойн.


Исходит ли стрелка из открытого ключа владельца, говорящая о том, что хэш зашифрован открытым ключом владельца?

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

В протоколе Биткойн нет шифрования. Ничего не зашифровано.

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

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


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

Поправьте меня, если я ошибаюсь, но я не говорю о блоках в блокчейне — я знаю разницу между этим блоком и блоком транзакции. Я говорю о блоках транзакций в цепочке хэшей транзакций, которые отслеживают цифровой актив от генезиса до всех владельцев. Разве каждое звено (объект данных) в этой цепочке транзакций нельзя назвать «блоком транзакций»?
Я прочитал руководство разработчика и думаю, что наша разобщенность заключается в том, что Биткойн на самом деле не создает и не обсуждает хеш-цепочку транзакций. Это скорее абстракция структуры данных, которую можно создать из хэшей транзакций. Поэтому не думаю, что здесь уместно обсуждать номенклатуру таких «блоков транзакций»…
Вопрос отредактирован для ясности. Меня интересуют первое и последующие значения Hash в цепочке владения транзакциями.
Я думаю, что я действительно испортил, как я задал свой вопрос. Вместо того, чтобы публиковать новый вопрос, я решил сократить его до того, что я действительно пытаюсь задать, и уменьшить весь беспорядок в моем первоначальном вопросе. Примите мои извинения и новые разъяснения. Я действительно пытаюсь понять это. Руководство для разработчиков не помогло мне с конкретным вопросом, который я задаю.
Нет, это не блок транзакций. Это просто сделка. Называя их блоками или блоками транзакций, вы только создадите больше путаницы. Просто назовите это транзакцией. Кроме того, Биткойн создает цепочки транзакций. Ввод транзакции напрямую ссылается на txid (также известный как хэш) предыдущей транзакции.
Я не пытаюсь понять биткойн по диаграмме. Я пытаюсь выяснить, что обычно делается в таких цепочках транзакций. Меня даже не волнует, будет ли это Ripple, Ethereum или Bitcoin. Я пытаюсь понять, каково было намерение, потому что я хотел бы иметь возможность преподавать идею, лежащую в основе цепочки транзакций. Я просто помешан на Хэше. Я не могу понять, имеют ли транзакции два значения хэша — одно для отслеживаемого цифрового актива, а другое для блока транзакции, чтобы он мог ссылаться на предыдущий блок... Если есть только один хэш , это поможет узнать...
Каждая транзакция имеет свой хэш. Этот хэш не является частью самой транзакции, поскольку он вычисляется непосредственно из транзакции. Каждая транзакция (за исключением транзакций coinbase) также содержит хэш предыдущей транзакции. На диаграмме показанный хеш каждый раз является другим хэшем, это хеш предыдущей транзакции.
Хорошо спасибо. Последнее уточнение: я не говорил о пунктирной стрелке из открытого ключа владельца — я понимаю, что она используется для проверки. Я говорил о сплошной стрелке, указывающей на хэш. Что это говорит?
Сплошная стрелка означает, что открытый ключ И предыдущая транзакция хешируются вместе. Обратите внимание, что Биткойн (или любая другая монета, о которой я знаю) работает не так, и в этом нет никакой необходимости.
Я думаю, что вы только что ПРИГВОЗИЛИ мое замешательство - спасибо! Таким образом, открытый ключ просто находится в транзакции — он не делает ничего, кроме помощи в проверке подписи для следующей транзакции... Верно? :)
Да. Открытый ключ находится в транзакции только для проверки подписи.
Весь этот разговор только для того, чтобы узнать один простой факт? Шиш! :) :) :) Вы сделали мой день. Спасибо!
«В протоколе Биткойн нет шифрования. Ничего не зашифровано». Если это семантическая проблема, то хорошо, но разве «подписание закрытым ключом» не является формой цифрового шифрования? Я хочу узнать, что правильно - я вижу, что "шифрование" используется все время, когда речь идет о PKC...
Цифровая подпись — это не то же самое, что шифрование. Шифрование запутывает сообщение, так что никто, кроме предполагаемых получателей, не может его прочитать. С цифровой подписью сообщение не запутывается. Скорее сообщение представляет собой открытый текст, а подпись служит доказательством того, что владелец открытого ключа создал сообщение и подтверждает подлинность сообщения (т. е. оно не было подделано).
Спасибо, Эндрю, но я думал, что цифровая подпись шифрует хэш сообщения, а затем сообщение и зашифрованный хэш вместе отправляются получателю. Я думал, что получатель использует открытый ключ для проверки, расшифровывая хэш, а затем повторно вычисляя хэш против сообщения, чтобы обеспечить совпадение. Теперь, если мы говорим то же самое, хорошо. В противном случае мне любопытно, где я ошибся в своем понимании. Я понимаю, что само сообщение не зашифровано, но разве не хэш? А если дело только в хэше, то, наверное, нехорошо говорить о шифровании вообще bcse, сообщение не зашифровано.
Это может быть так для некоторых алгоритмов цифровой подписи, но Биткойн использует ECDSA, который этого не делает. Хэш сообщения никак не восстанавливается, его необходимо пересчитать из сообщения, чтобы выполнить проверку подписи.