Bitcoin Forum

Local => Новички => Topic started by: pifdec on February 20, 2019, 01:55:32 AM



Title: Деревья Меркла
Post by: pifdec on February 20, 2019, 01:55:32 AM
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?


Title: Re: Деревья Меркла
Post by: kzv on February 20, 2019, 03:05:15 AM
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?

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


Title: Re: Деревья Меркла
Post by: pifdec on February 20, 2019, 01:13:36 PM
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?

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

это вы про хэш блока (hashPrevBlock), а меня интересует хэш дерева меркла (hashMerkleRoot), который так же содержится в  block header

Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?

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

это вы про хэш блока (hashPrevBlock), а меня интересует хэш дерева меркла (hashMerkleRoot), который так же содержится в  block header

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


Title: Re: Деревья Меркла
Post by: kzv on February 21, 2019, 02:33:17 AM
Но все равно интересует какие данные используются для вычисления корня меркала. Я так понимаю для вычисления нужны только транзакции блока для которого вычисляем меркала

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


новый_блок = заголовок_блока + транзакции
заголовок_блока  = версия + хэш_предыдущего_блока + хэш_меркла + время + сложность + nonce
хэш_меркла = хитрый_хэш(транзакции)