Author

Topic: Деревья Меркла (Read 175 times)

newbie
Activity: 9
Merit: 1
February 20, 2019, 09:58:52 PM
#6
Но все равно интересует какие данные используются для вычисления корня меркала. Я так понимаю для вычисления нужны только транзакции блока для которого вычисляем меркала

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


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


спасибо за ответ, это то что нужно!)
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
February 20, 2019, 09:33:17 PM
#4
Но все равно интересует какие данные используются для вычисления корня меркала. Я так понимаю для вычисления нужны только транзакции блока для которого вычисляем меркала

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


новый_блок = заголовок_блока + транзакции
заголовок_блока  = версия + хэш_предыдущего_блока + хэш_меркла + время + сложность + nonce
хэш_меркла = хитрый_хэш(транзакции)
newbie
Activity: 9
Merit: 1
February 20, 2019, 08:13:36 AM
#3
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?

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

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

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

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

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

я понял вас. Но все равно интересует какие данные используются для вычисления корня меркала. Я так понимаю для вычисления нужны только транзакции блока для которого вычисляем меркала
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
February 19, 2019, 10:05:15 PM
#2
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?

Хедер блока хэшируется и этот хэш является частью хэша следующего хедера следующего блока.
Поменяете один байт в транзакции - изменится хэш всех заголовков над этой транзакцией.
newbie
Activity: 9
Merit: 1
February 19, 2019, 08:55:32 PM
#1
Какие аргументы необходимы для вычисления hashMerkleRoot в хедере блока? Я правильно понимаю, что нам нужны хэши транзакций только одного блока?
То есть hashMerkleRoot блока n+1 никак не связан с hashMerkleRoot  блока n, верно?
Jump to: