아무튼-작업일지
Sign In
공부 내용
hyperledger fabric
Y
yeji Kim
Aug 4, 2024
2y ago
Fabric Contract APIs and Application APIs — Hyperledger Fabric Docs main documentation
hyperledger-fabric.readthedocs.io
How Fabric networks are structured — Hyperledger Fabric Docs main documentation
hyperledger-fabric.readthedocs.io
•
코드
◦
cd $HOME/go/src/
github.com/yejikim02
yejikim02 - Overview
yejikim02 has 6 repositories available. Follow their code on GitHub.
github.com
용어 정리
[BlockChain/하이퍼레저 패브릭으로 배우는 블록체인] 2장 정리
ㅋㅋ 요즘 떠오르는 블록체인 공부해보자고~(캡디 주제임ㅋㅋ ㅠ) 기본 용어 먼저 정리. peer에 분산원장과 체인코드를 저장하고 설치된다. 따라서 하이퍼레저 패브릭의 참여자는 분산원장과 체인코드에 peer를 통해서만 접근할 수 있다. peer는 여러 개의 체인코드와 분
velog.io
•
peer
◦
여러개의 분산 원장과 체인 코드를 저장하고 설치함. 분산 원장과 체인 코드는 peer 를 통해서만 접근 가능.
•
chain code
◦
데이터를 분산 원장에 쓰거나 읽기 위해서는 체인 코드가 필요함. 비즈니스 모델에 맞는 분산 앱과 함께 개발되어 사용됨.
◦
하이퍼레저 패브릭에는 시스템 레벨에서 수행되는 시스템 체인코드라는 특수 체인코드가 잇음.
▪
QSCC(read), CSCC(채널 설정), LSCC(체인코드 설치부터 인스턴스화)는 CLI로
▪
ESCC(보증), VSCC(검증)은 endorsing peer와 committing peer에 의해 실행.
•
DApp
◦
비즈니스 모델에 알맞은 분산 앱. 분산 환경에서 비즈니스 거래를 편하게 제공하기 위해. 사용자가 DApp을 통해 peer 네트워크의 체인 코드를 실행함.
•
Endorsement policy
◦
보증 정책은 트랜잭션을 만드는 클라이언트(DApp)와 peer 간에 작용함. 블록에 트랜잭션이 포함되기 위해서는 보증 정책에 지정된 peer의 허가를 받아야 함.
◦
보증 정책은 모든/부분/하나의 peer 의 허락 등을 설정할 수 있음
•
organization
◦
이해 관계가 같은 다수의 기관이나 기업 등 조직이 구축하는 프라이빗 블록체인.
•
channel
◦
분산 원장은 채널 당 하나씩 존재하여 채널에 소속된 peer 간 공유함.
•
ledger (분산 원장)
◦
현재 상태를 나타내는 world state와 원장 생성부터 현재까지 사용 기록을 저장하는 블록체인으로 구분됨.
◦
world state
▪
블록 체인에 포함되기 전에는 체인 코드를 통해 조회/변경/삭제 가능
▪
분산 원장의 현재 값.
▪
모든 거래 기록 저장.
▪
데이터 베이스 형태 : level DB(key-value 저장 방식)와 json format의 couchDB 중 선택
▪
블록 체인과 분리되어 구축
◦
블록 체인
▪
절대 수정 불가능. append-only.
▪
블록 : 정해진 용량 또는 일정 시간 동안 발생한 트랜잭션.
•
각 블록마다 header, data, metadata 필드 존재.
▪
블록 체인 : 생성된 블록들이 합의 과정 후 암호학적 기법을 통해 만들어진 순서대로 연결되어 저장.
◦
gossip
▪
peer는 계속 브로드캐스트 메시지를 생성해 동일 채널에 있는 peer 상태 확인.
▪
peer는 동일 채널 내 peer 들을 임의로 선택해서 분산 원장 전송.
◦
identity
▪
노드는 서로의 신원을 확인할 때 PKI 기반 디지털 인증서로 확인함.
▪
PKI의 핵심 구성 요소 - 디지털 인증서, 공개키와 비밀키, CA(인증 노드), CRL(폐기된 인증서 목록)
▪
cryptogen과 febric_CA 등을 활용해 다음의 디지털 인증서 생성
•
pki 기반 peer, orderer, client를 위한 인증서
◦
MSP
▪
MSP를 통해 orderer, peer, fabric CA, admin 등의 역할, 권한, 소속 등을 정의함. local MSP와 channel MSP로 구분.
▪
local MSP : 노드 역할 부여, 모든 네트워크 노드는 하나 이상의 local MSP 정의
▪
channel MSP : 채널 구성원들에게 멤버십 정의, 권한 부여.
◦
orderer
▪
트랜잭션 제출 : DApp이 endorsing peer에게 트랜잭션 제출~체인코드 실행
▪
블록 패키징 : orderer가 트랜잭션 수집 후 정렬하여 최신 블록 생성
▪
검증 : 생성한 최신 블록을 각 조직의 peer에게 전달 후, peer은 해당 블록 검증.
▪
오더링 서비스
•
kafka 분산 메세징 시스템을 통해 구현되어 있음.
•
kafka : pub-sub 모델, producer로부터 consumer가 topic 단위로 구분된 메세지를 받는 분산 메세징 시스템.
스마트 컨트랙트와 체인 코드
•
스마트 컨트랙트
◦
핵심은 transaction 정의.
◦
스마트 컨트랙트 : 실행 가능한 코드에서 서로 다른 조직의 규칙을 정의
▪
world state에 포함되는 비즈니스 객체의 생명 주기를 컨트롤하는 트랜잭션을 정의
•
get(검색), put(수정 or 생성), delete
▪
체인 코드로 정의됨
▪
다중 스마트 컨트랙트들은 같은 체인 코드 내에서 정의될 수 있음.
▪
체인 코드가 배포될 때, 모든 스마트 컨트랙트들은 어플리케이션에서 실행 가능.
◦
어플리케이션 : 원장에 기록되는 트랜잭션을 생성하는 스마트 컨트랙트를 호출함.
◦
블록체인 네트워크 : 위 컨트랙트를 실행 가능한 프로그램으로 전환함.
•
endorsement
◦
모든 스마트 컨트랙트에는 관련된 보증 정책이 있음.
◦
트랜잭션을 validation하기 전에, 스마트 컨트랙트로 생성된 트랜잭션을 승인해야 하는 조직 식별.
◦
트랜잭션은 네트워크에서 신뢰할 수 있는 조직에 의해 검증됨.
◦
원장 질의, 업데이트 / 참가자 추가, 제거 등을 위한 사람 식별을 위해 다른 정책 정의 가능.
◦
정책이 확정되지 않았더라도 조직 컨소시엄에서 사전에 합의해야 함.
•
valid transaction
◦
스마트 컨트랙트는 블록체인 네트워크 조직이 소유한 피어노드에서 실행됨.
◦
컨트랙트는 transaction proposal이라는 일련의 입력 매개변수를 사용. 이를 프로그램 로직과 함꼐 사용하여 원장을 읽고 씀.
◦
world state에 대한 변경 사항은 '원래 상태', '트랜잭션이 유효할 경우 기록될 새 상태' 세트의 응답으로 캡쳐됨.
◦
컨트랙트가 실행될 때 world state가 업데이트 되진 않음. 유효한 거래만 world state에 기여.
◦
모든 트랜잭션에는 서명한 식별자, 제안 및 응답이 있음.
•
channels
◦
조직이 채널을 통해 여러 개의 개별 블록체인 네트워크에 동시 참여 가능.
◦
채널은 데이터 및 통신 프라이버시를 유지하며 효율적인 인프라 공유를 제공
◦
조직이 서로 다른 상대방과 작업 트래픽을 분리하는 데 도움이 될 만큼 충분히 독립적. + 필요할 때 독립 활동을 조절할 수 있을 정도로 충분히 통합됨.
◦
체인 코드 정의가 채널에 커밋될 때, 체인 코드 내 모든 컨트랙트는 해당 채널 앱에서 사용 가능.
◦
체인코드 정의 - 매개변수를 포함한 구조체 (이름, 버전, 보증 정책)
•
intercommunication
◦
컨트랙트는 동일 or 다른 채널의 컨트랙트 호출 가능.
•
시스템 체인 코드
◦
LSCC - 수명 주기, CSCC - 구성, QSCC - 쿼리, ESCC - 보증, VSCC - 유효성 검사
•
자주 나오는 용어들
◦
orderer
◦
peer
▪
store blockchain ledger
▪
validate transactions before commiting to the ledger
▪
run smart contracts
◦
ordering service
▪
peer가 transaction를 검증하고 blocks of transactions을 ledger에 넣는 동안
▪
Raft consensus algorithm
◦
channel
▪
Org1, Org2 사이의 transaction Fabric channel
▪
private layer of communication between specific network members
◦
fabric chaincode lifecycle
◦
peer lifecycle chaincode commands
◦
MSP(membership service provider)
▪
PKI(public key infrastructure) - identities의 목록을 제공
▪
MSP - 목록 중 네트워크에 참여하는 특정 조직의 구성원을 알려줌
•
Peer CLI - asset-transfer (basic) chaincode to the channel
1.
package the smart contract
2.
install the chaincode package
3.
approve a chaincode definition
4.
committing the chaincode definition to the channel
•
logspout - troubleshooting chaincode
•
commands
◦
peer lifecycle chaincode commit
◦
peer lifecycle chaincode querycomitted
◦
peer lifecycle chaincode checkcommitreadiness
◦
peer lifecycle chaincode approveformyorg
◦
peer lifecycle chaincode queryinstalled
◦
peer chaincode invoke
◦
./monitordocker.sh fabric_test
trouble shooting
error when reading core config file: Config File “core“ Not Found in_fatal error when initializing core config : error -CSDN博客
文章浏览阅读1.9k次。建立chaincode包出错解决方法:peer的可执行二级制文件在fabric-sample的bin文件夹中。使用如下命令添加Peer到CLI命令路径中还需要设置指向fabric-samples中core.yaml的FABRIC_CFG_PATH然后再次执行该语句运行结果:这次没有报错..._fatal error when initializing core config : error when reading core config f
blog.csdn.net
참고 자료
GitHub - wowlsh93/hyperledger-fabric-400-gossip: hyperledger fabric block propagation in less than 700 lines of Go
hyperledger fabric block propagation in less than 700 lines of Go - wowlsh93/hyperledger-fabric-400-gossip
github.com
Subscribe to '아무튼-작업일지'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to '아무튼-작업일지'!
Subscribe