블록체인 자습서 Fabric1.0 소스 코드 분석 Ledger(장부)
Fabric 1.0 소스 코드 노트의 Ledger(장부)
1. Ledger 개요
Ledger, 즉 장부 데이터베이스입니다.Fabric 장부에는 네 가지 데이터베이스가 있는데 그것이 바로 idStore(ledgerID 데이터베이스),blkstorage(block 파일 저장),statedb(상태 데이터베이스),historydb(역사 데이터베이스)이다.그 중에서 idStore,historydb는 leveldb를 사용하고 statedb는 leveldb나couchDB를 선택할 수 있습니다.blkstorage에서 index 부분은 leveldb를 사용하고 실제 블록체인 데이터 저장은 파일을 사용합니다.
4
Ledger 관련 코드는common/ledger,core/ledger,protos/ledger 디렉터리에 분포되어 있습니다.디렉토리 구조는 다음과 같습니다.
4
* blkstorage 디렉토리, blkstorage 관련 인터페이스 및 구현* util/leveldbelper 디렉토리, LeveldB 데이터베이스 작업의 캡슐화.
4
* kvledger 디렉터리, 현재PeerLedgerProvider,PeerLedger 등 인터페이스는 오직 하나의 실현: kvledger입니다. * kv_ledger_provider.go, PeerLedgerProvider 인터페이스, 즉Provider 구조체와 그 방법, 그리고 idStore 구조체와 방법을 실현한다. * kv_ledger.go, PeerLedger 인터페이스, 즉 kvLedger 구조체와 방법을 실현한다.* txmgmt 카탈로그, 거래 관리*statedb 디렉터리,statedb 관련 인터페이스 및 실현.*history/historydb 디렉터리,historydb 관련 인터페이스 및 실현. * ledgermgmt/ledger_mgmt.go, Ledger 관리 관련 함수 구현. * ledgerconfig/ledger_config.go, Ledger 구성 관련 함수 구현.* util 디렉토리, Ledger 도구 관련 함수
3. 핵심 인터페이스 정의
PeerLedgerProvider 인터페이스 정의:PeerLedger 실례handle을 제공합니다.
type PeerLedgerProvider interface {
Create(genesisBlock *common.Block) (PeerLedger, error) // Ledger
Open(ledgerID string) (PeerLedger, error) // Ledger
Exists(ledgerID string) (bool, error) // ledgerID Ledger
List() ([]string, error) // ledgerID
Close() // PeerLedgerProvider
}
// core/ledger/ledger_interface.go
PeerLedger 인터페이스 정의:PeerLedger와OrdererLedger의 다른 점은PeerLedger 로컬 유지보수 비트 마스크로 유효한 거래와 무효한 거래를 구분하는 데 사용됩니다.
type PeerLedger interface {
commonledger.Ledger // common/ledger/Ledger
GetTransactionByID(txID string) (*peer.ProcessedTransaction, error) // txID
GetBlockByHash(blockHash []byte) (*common.Block, error) // blockHash Block
GetBlockByTxID(txID string) (*common.Block, error) // txID Block
GetTxValidationCodeByTxID(txID string) (peer.TxValidationCode, error) //
NewTxSimulator() (TxSimulator, error) // , "TxSimulator"
NewQueryExecutor() (QueryExecutor, error) // , 'QueryExecutor'
NewHistoryQueryExecutor() (HistoryQueryExecutor, error) // , 'HistoryQueryExecutor'
Prune(policy commonledger.PrunePolicy) error //
}
// core/ledger/ledger_interface.go
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure Blockchain Service를 사용해보십시오.2(컨트랙트 배포)에서는 Azure Blockchain Service를 사용하여 블록체인을 구축할 때까지 했습니다. 이번 기사에서는 구축한 블록체인에 대해 계약(이번에는 ERC20의 토큰 계약)을 배포합니다. Azure Blockch...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.