2016-07-28 49 views
1

我的意圖是複製一個Hyperledger演示Marbles application。使用here的說明,我可以在我的Ubuntu VM上設置區塊鏈網絡。但是,我沒有部署鏈碼。當我調用API讀取鏈時,我得到了一個塊;我認爲這是起始塊。還有一些關於同樣的日誌列表。創世紀塊沒有chaincode?

我的問題如下。如果我運行區塊鏈的意圖是啓動分佈式應用程序(例如Marbles),那麼,如果沒有部署鏈代碼,爲什麼要開發一個生成塊?在沒有鏈代碼的情況下,區塊鏈網絡不能處理任何交易,因此,區塊中不能存在(應該)交易。

那麼,爲什麼在沒有鏈碼的情況下開採塊會被開採呢?

回答

2

您是對的,創世區塊是由驗證對象自動創建爲分類帳中的第一個區塊。 它不包含任何包含的交易和具有獨特的格式。一個例子是:

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

正如你可以看到它沒有「previousBlockHash」屬性。您可以使用ledger.blockchain.genesisBlock在core.yaml文件中自定義此塊的內容:

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" 
+0

謝謝。你認爲哪些場景會受益於一個環境,即創世區塊應該至少有一個交易(即爲創世區塊種下種子)? – cogitoergosum

+0

第一筆交易只能是「部署」(答案以示例更新)。如果我們想在第一次啓動時部署某些內容,或者稍後手動進行部署,則我們可以選擇。 –

+0

非常感謝您的解釋! – cogitoergosum

相關問題