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 хэш_меркла = хитрый_хэш(транзакции) |