2016-07-28 4 views
1

내 의도는 Hyperledger 데모 인 Marbles application을 복제하는 것입니다. here의 지침을 사용하여 Ubuntu VM에서 Blockchain 네트워크를 설정할 수있었습니다. 그러나 체인 코드를 배포하지 않았습니다. 체인을 읽기 위해 API를 호출하면 하나의 블록이 생겼습니다. 제 생각에는 진화론입니다 같은 로그 목록도있었습니다.체인 코드가없는 Genesis 블록?

제 질문은 다음과 같습니다. 블록 체인을 운영하려는 의도가 분산 응용 프로그램 (예 : Marbles)을 시작하는 것이라면 체인 코드를 배포하지 않고 왜 기생 블록을 채굴합니까? 체인 코드가 배포되지 않으면 블록 체인 네트워크는 트랜잭션을 처리 할 수 ​​없으므로 블록에 트랜잭션이 존재할 수 없습니다.

따라서 체인 코드가 배포되지 않은 채 기생 블록이 채굴되는 이유는 무엇입니까?

답변

2

당신이 맞습니다. 기원 블록은 유효성 검사 피어에 의해 자동으로 원장의 첫 번째 블록으로 만들어집니다. 포함 된 트랜잭션이 없으며 고유 한 형식을가집니다. 예를 들면 다음과 같습니다.

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

"previousBlockHash"속성이 없음을 알 수 있습니다. 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" 
+0

감사합니다. 어떤 시나리오에서 기원 블록은 적어도 하나의 트랜잭션 (기원 블록을 시드)을 가져야한다고 말하는 설정의 이점이 있습니까? – cogitoergosum

+0

첫 번째 트랜잭션은 "배포"만 가능합니다 (예를 들어 응답이 업데이트 됨). 처음 시작했을 때 무언가를 배포하고 싶다면 나중에 선택할 수 있습니다. –

+0

많은 설명에 감사드립니다! – cogitoergosum

관련 문제