Share
Sign In
공부 내용
hyperledger fabric
Y
yeji Kim
👍
용어 정리
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
참고 자료
Subscribe to '아무튼-작업일지'
Welcome to '아무튼-작업일지'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to '아무튼-작업일지'!
Subscribe
👍
Other posts in '공부 내용'See all
yeji Kim
도커, 쿠버 네티스
도커 도커는 가상 머신이 아닌 컨테이너 방식! 도커 컨테이너는 호스트 운영체제의 커널을 공유. 가볍게 격리된 환경을 생성. 이미지와 컨테이너 레이어를 사용하여 빠르게 생성되고, 실행 속도가 매우 빠름. 쿠버네티스 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크. 도커로 컨테이너 기반 배포가 보편화되자, 여러개의 도커 이미지를 오케스트레이션할 필요가 생김 → 쿠버네티스는 컨테이너 오케스트레이션 툴
yeji Kim
Hyperledger fabric blockchain network
.
yeji Kim
npm?? typescript?? js??
npm typescript js