Ребята, вкатываюсь в тему блокчейна, возник ряд вопросов, гугление не очень помогло (либо не очень много времени этому уделил).
...
1) Нет, tx в блоке - это не хэш транзакции, а собственно сама транзакция. Вот пример транзакции в формате JSON, это фрагмент блока, хэш в ней прописан отдельно:
"tx":[
{
"hash":"71265d34dd2c20bb77a2dd336966573c0b127de18d777ada49061b185ea57914",
"ver":1,
"vin_sz":1,
"vout_sz":1,
"lock_time":0,
"size":144,
"in":[
{
"prev_out":{
"hash":"0000000000000000000000000000000000000000000000000000000000000000",
"n":4294967295
},
"coinbase":"030fea0300049c6731190400000000522cfabe6d6d000000000000165f00000450000048692066726f6d2035304254432e636f6d2039ac1eeeed88"
}
],
"out":[
{
"value":"25.08660007",
"scriptPubKey":"OP_DUP OP_HASH160 bfd9c318852ca57a563786e67bb4d0a20b1d8f67 OP_EQUALVERIFY OP_CHECKSIG"
}
]
},
2) В самой транзакции публичного ключа нет, только адрес. Проверка на валидность адреса майнерами при занесении в блок упрощённая. При создании транзакции её отправителем, если он знает публичный ключ, проверка может быть более полная. Всё зависит каким софтом вы пользуетесь при создании транзакции и по каким правилам её создаёте. Если вы, допустим, пересылаете данные самому себе и знаете даже закрытый ключ - вы можете сделать самую полную проверку.
3) Пул транзакций - условное понятие, собственно это некая "память" в сети узла IRC. Узел может удалить эту транзакцию, но она, к примеру, может опять туда прийти. В зависимости от настроек, конфигурации, время может различаться. Очень старые неподтверждённые транзакции в конце концов полностью "исчезают".
4) Хэш предыдущего блока - это ссылка на предыдущий блок. Собственно, с помощью хэшей на предыдущие блоки и создаётся цепочка блоков - блокчейн. По сути блокчейн - это односвязный список объектов данных (в биткойне такие объекты и называются блоками).
А хэш дерева Меркля - это контроль целостности данных внутри текущего блока. Дерево Меркля включает в себя хэши всех транзакций в текущем блоке, а также хэши всех промежуточных узлов дерева и хэш итогового узела, вершины дерева, его и называют hashMerkleRoot. Дерево Меркля используется только для контроля целостности транзакций (и только транзакций) внутри текущего блока.