1

私の意図は、Hyperledger デモであるMarbles アプリケーションを複製することです。hereの手順を使用して、Ubuntu VM にブロックチェーン ネットワークをセットアップできました。ただし、チェーンコードをデプロイしていませんでした。API を呼び出してチェーンを読み取ると、ブロックが 1 つ取得されました。これがジェネシスブロックだと思います。ほぼ同じログリストもいくつかありました。

私の質問は次のとおりです。ブロックチェーンを実行する目的が分散アプリケーション (Marbles など) を起動することである場合、チェーンコードがデプロイされていないのに、なぜジェネシス ブロックがマイニングされるのでしょうか? チェーンコードがデプロイされていない場合、ブロックチェーン ネットワークはトランザクションを処理できません。したがって、トランザクションはブロック内に存在できません (存在すべきではありません)。

では、チェーンコードがデプロイされていないのにジェネシス ブロックがマイニングされるのはなぜでしょうか?

4

1 に答える 1

2

そうです、ジェネシスブロックは、検証ピアによって台帳の最初のブロックとして自動的に作成されます。トランザクションは含まれておらず、独自の形式を持っています。例は次のとおりです。

{"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"  
于 2016-07-28T08:33:30.593 に答える