Bitcoin Forum
December 26, 2024, 05:49:10 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Деревья Меркла  (Read 176 times)
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
February 20, 2019, 01:55:32 AM
 #1

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

Activity: 1722
Merit: 1287

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
February 20, 2019, 03:05:15 AM
 #2

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

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

OpenTrade - Open Source Cryptocurrency Exchange
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
February 20, 2019, 01:13:36 PM
Last edit: August 18, 2021, 11:13:52 AM by xandry
 #3

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

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

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

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

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

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

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

Activity: 1722
Merit: 1287

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
February 21, 2019, 02:33:17 AM
Merited by xandry (3)
 #4

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

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


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

OpenTrade - Open Source Cryptocurrency Exchange
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!