https://taeyonghwang.github.io/project/hyperledger-indy/
indy-node 프로젝트
- 블록에 대한 합의를 수행하지 않고 트랜잭션 에 대한 합의를 수행하기 때문에, 블록 단위가 아닌 트랜잭션 단위로 저장된다.
(트랜잭션 - 거래 단위로 저장)
- DID document 구성 요소를 JSON 형태로 보관하지 않고 각각 따로 저장하며,
DID resolver를 통해 데이터를 취합하여 DID document 형태로 반환한다.
두 가지 종류의 노드로 운영
장애 처리에 이점을 가지며, request를 분산하여 처리함으로써 노드의 부하를 줄일 수 있다.
Validator Node (검증자 노드) : Write request를 처리하며, RBFT 합의 알고리즘을 구동하는 노드
(기존 PBFT 계열의 합의 알고리즘에서 발생하는 view-change 실행 시 성능 저하 문제를 해결하기 위해 개발된 합의 알고리즘
RBFT 는 BFT의 기능이 추가된버젼 2/3 가 합의하면 합의가 된것
참고 : https://seongjin08.tistory.com/118 )
Observer Node(관찰자 노드) : 사용자의 Raed request를 처리하며, Validator에 장애 발생 시 언제든 Validator가 될 수 있도록 대기 상태 유지
합의 알고리즘
indy-node 에서는 PBFT 계열의 합의 알고리즘인 RBFT(Redundant Byzantine Fault Tolerance)를 사용
완벽한 합의 알고리즘은 세 가지 특성을 모두 만족해야 한다.
Termination-종료(Liveness-생동감) : 합의에 참여하는 모든 노드는 언젠가는 값을 결정해야 한다.
Agreement-합의(Safety-안전) : 모든 노드는 동일한 값을 결정해야 한다.
Validity-타당성(Safety-안전) : 결정된 값은 어떠한 과정을 통해 결정되어야만 한다.
FLP Impossibility : 비동기 네트워크에서는 위의 3가지 특성 중 최대 2가지까지만 만족할 수 있다.
블록체인은 Liveness(실시간성) 과 Safety(안정성) 의 두 가지 특성으로 다시 분류될 수 있다.
Liveness : 비트코인, 이더리움 등
Safety : indy-node
네 가지 종류의 원장을 통해 데이터를 저장
Domain ledger
Config ledger
Pool ledger
Audit ledger
Domain ledger
DID와 같이 사용자의 신원 인증과 관련된 데이터를 저장
Schema : 신원 증명 양식 중 사용자 속성에 대한 항목을 정의한 데이터
Credential definition : issuer가 Schema가 포함된 Credential definition에 사용자 ID 속성값을 채운 뒤 추가적인 필드와 함께 사용자에게 신원증명을 발행한다.
NYM 트랜잭션
사용자의 DID document 관련 정보와 사용자를 어떤 권한을 가진 그룹으로 분류하는지에 대한 정보가 담겨 있다.
dest 항목의 DID가 이미 저장되어 있는 경우는 업데이트, 저장되어 있지 않은 경우는 신규 사용자 등록으로 간주
SCHEMA 트랜잭션
사용자 속성에 대한 항목이 정의
VC를 발급하고자 할 경우, SCHEMA를 가져와서 양식에 맞게 채운 후 발급해줄 수 있다.
이 외에도 ATTRIBN, CLAIM_DEF, REVOC_REG_DEF 등의 트랜잭션 존재
Config ledger
사용자 권한 정보 저장 (Public-Permissioned 구조이므로)
블록체인 네트워크에 대한 다양한 설정 정보 저장
Pool ledger
블록체인 노드의 IP/port 등의 정보 저장
최초 블록체인 구동 시 사용하는 __Genesis Transaction__에 최초의 블록체인 노드 정보가 포함되어 있다.
NODE 트랜잭션
해당 트랜잭션을 전송하여 노드 CRUD 작업 수행이 가능
dest 항목의 DID가 존재하는 경우 기존 노드 정보를 수정하며, 저장되어 있지 않은 경우 새로운 노드를 추가
Audit ledger
앞의 3가지 원장에서 발생하는 트랜잭션을 모두 순서대로 취합하여 저장 (각 트랜잭션은 서로에게 의존성이 있기 때문)
서로 다른 원장 간의 동기화와 추가되거나 장애로부터 복구된 노드 업데이트를 위해 사용
CI /CD 란?
CI (Continuous Integration) 지속적인 통합
새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어
공유 레포지토리에 통합히는 것을 의미
CD (Continuous Delivery & Continuous Deployment)
지속적인 서비스 제공 혹은 지속적인 배포
개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것
https://artist-developer.tistory.com/24
파이프라인이란?
프로세서에서 성능을 높이기 위해서 명령어 처리 과정으로 명령어 처리를 여러 단계로 나누어 단계별로 동시에
수행 하여 병렬화를 시키는 것을 말한다.
https://doitnow-man.tistory.com/72
'citylabs-study' 카테고리의 다른 글
10일차 study(Membership Service Provider (MSP)) (0) | 2022.01.21 |
---|---|
9일차 스터디 (hyperldeger fabric - ledger , gitlab ssh key 등록) (0) | 2022.01.20 |
7일차 study (hyperledger indy) (0) | 2022.01.18 |
6일차 study(용어 및 스터디 내용 점검) (0) | 2022.01.17 |
5일차 study(hyperledger fabric - identity) (0) | 2022.01.14 |