Post
Topic
Board Кодеры
Re: Серия вопросов по blockchain
by
kcaterpillar
on 22/07/2017, 23:00:22 UTC
т.е.  берем к примеру tx:  36cf28c4a2729c4826221949f10b36283019b758e431d1769c3265ab30022866
и это как-то можно развернуть до json-представления? А где можно с механизмом преобразования ознакомиться ?

Да, всё упаковывается согласно спецификации протокола. Транзакции в сеть передаются в двух случаях - при создании отдельной транзакции и при создании блока (submitblock), в этом случае они передаются в составе блока.

Ознакомиться можно в спецификации:
https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages
https://en.bitcoin.it/wiki/Transaction
https://en.bitcoin.it/wiki/Protocol_documentation#Transaction_Verification
и так далее, всё есть в документации.

Quote
т.е. на валидный адрес, но никому еще не принадлежащий транзакция может уйти? Получается, что в будущем кто-то может получить приватный ключ и адрес, на котором уже будут входы (положительный баланс)?

Да, в биткойне монеты запросто могут уйти "в никуда". Получить в будущем их теоретически кто-то может, но такая вероятность очень мала, поэтому скорей всего их никто никогда не получит.

Quote
3) Пул транзакций - условное понятие, собственно это некая "память" в сети узла IRC. Узел может удалить эту транзакцию, но она, к примеру, может опять туда прийти. В зависимости от настроек, конфигурации, время может различаться. Очень старые неподтверждённые транзакции в конце концов полностью "исчезают".
"Узел может удалить эту транзакцию" что под узлом имеется ввиду? Разве транзакции (в том числе неподтвержденные) не синхронизируются между всеми узлами?

Под узлом тут имеется ввиду узел сети IRC, обычно это один из серверов, с которым связаны клиенты. Синхронизируются, да, но система хоть и распределённая, но работает в итоге по правилам, которые определили для себя участники сети. По поводу неподтверждённых транзакций было много бурных обсуждений, и тут важно по какой причине она не была подтверждена, например, из-за недостаточной комиссии - в системе биткойн были введены правила, по которым транзакция может быть не включена майнерами в блок. И каждый узел сети имеет администратора, который рано или поздно удалит эту транзакцию. Всё делается конечно автоматически, но определяется правилами и настройками мемпула участниками сети. Вечно такие транзакции никто "хранить" не будет.

Quote
выходит, что по этому Мерклю нельзя отследить нахождение той или иной транзакции в блоке? Он только как итоговый такой хэш от всех tx-ов? Почему тогда именно "дерево Меркля" а не обычный двойной sha256?

Нет, по дереву Меркля как раз можно отследить расположение транзакции в блоке, и даже можно быстро найти некорректные данные, не перебирая все транзакции подряд. Потому что в блоке в составе этого дерева, как я уже написал, указывается хэш каждой транзакции, хэши промежуточных узлов дерева, и итоговый хэш, он же вершина дерева - hashMerkleRoot, который попадает в заголовок бока. Дерево Меркля для того и придумали, чтобы быстро контролировать целостность данных сложных структурированных древовидных объектов, например каталогов с файлами. И в системе биткойн такая возможность быстрого поиска некорректной транзакции изначально предусматривалась. Для этого и использовали дерево Меркля.