Блок Genesis без чейнкода?

Я намерен воспроизвести приложение Marbles, демонстрацию Hyperledger. Используя инструкции из здесь, я смог настроить сеть Blockchain на моей виртуальной машине Ubuntu. Однако я не развернул чейнкод. Когда я вызвал API для чтения цепочки, я получил один блок; который, я думаю, является блоком генезиса. Был некоторый листинг журнала также о том же самом.

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

Итак, почему генезис-блок добывается без развернутого чейнкода?


person cogitoergosum    schedule 28.07.2016    source источник


Ответы (1)


Вы правы, блок генезиса автоматически создается как самый первый блок в леджере валидаторами. Он не содержит включенных транзакций и имеет уникальный формат. Пример:

{"nonHashData":{"localLedgerCommitTimestamp":{"seconds":1469225503,"nanos":346624842}}}

Как видите, в нем нет свойства «previousBlockHash». Вы можете настроить содержимое этого блока в файле core.yaml, используя ledger.blockchain.genesisBlock:

ledger:

  blockchain:

    # Define the genesis block
    genesisBlock:

      # Deploy chaincodes into the genesis block
      chaincode:
          path: github.com/hyperledger/fabric/core/example/chaincode/chaincode_example01
          type: GOLANG
          constructor:
            func: init
            args:
              - alice
              - "4"
              - bob
              - "10"  
person Sergey Balashevich    schedule 28.07.2016
comment
Спасибо. Как вы думаете, какие сценарии выиграют от настройки, в которой говорится, что в генезис-блоке должна быть хотя бы одна транзакция (которая заполняет генезис-блок)? - person cogitoergosum; 28.07.2016
comment
Первая транзакция может быть только «Развернуть» (ответ обновлен с примером). У нас просто есть выбор, хотим ли мы развернуть что-то при первом запуске или сделать это позже вручную. - person Sergey Balashevich; 28.07.2016