Post
Topic
Board Кодеры
Re: Серия вопросов по blockchain
by
kcaterpillar
on 22/07/2017, 12:25:27 UTC
Ребята, вкатываюсь в тему блокчейна, возник ряд вопросов, гугление не очень помогло (либо не очень много времени этому уделил).
...

1) Нет, tx в блоке - это не хэш транзакции, а собственно сама транзакция. Вот пример транзакции в формате JSON, это фрагмент блока, хэш в ней прописан отдельно:

Code:
  "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. Дерево Меркля используется только для контроля целостности транзакций (и только транзакций) внутри текущего блока.