티스토리 뷰
[Hyperledger Indy] Hyperledger Indy Agent Demonstration(hyperledger/education) 실행
miiingo 2019. 11. 27. 16:11
원본 사이트 : Github - hyperledger/education (https://github.com/hyperledger/education/tree/master/LFS171x/indy-material/nodejs)
■■■■■■■■■■ 프로젝트 설치 및 실행 ■■■■■■■■■■
● Dependencies
프로젝트 실행을 위해 다음과 같은 프로그램이 필요합니다.
- Docker
- Docker Compose
- Git
# 버전 확인
docker --version
docker-compose --version
git --version
● Installing
git을 이용해 프로젝트를 다운로드하고, 실행 경로로 이동합니다.
# 프로젝트 설치
cd /opt/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/education/
cd education/LFS171x/indy-material/nodejs
● Running
다음 명령을 이용해 프로젝트를 실행합니다.
# 빌드
./manage build
# 실행
./manage up
총 10개의 컨테이너가 실행됩니다.
Ctrl+c를 누르면 로그 출력이 중지됩니다. 로그를 다시 출력하고 싶은 경우에는 다음 명령을 실행합니다.
# 로그 확인
./manage logs
■■■■■■■■■■ 데모 시연 ■■■■■■■■■■
● 웹 페이지 접속
각 웹 페이지에 접속합니다.
- Alice : http://localhost:3000
- Faber College : http://localhost:3002
- Acme Corporation : http://localhost:3003
- Blockchain Ledger Explorer : http://localhost:9000
- Bob : http://localhost:3001
- Thrift Bank : http://localhost:3004
● Step 1: 기본 설명(Looking Around)
각각 관계(Relationships)나 메시지(Messages)가 없습니다.
각각은 정부로부터 하나의 자격 증명을 가지고 있으며, 신원의 공식 "이름"(Alice, Faber 등)을 가지고 있습니다.
각각의 Proof Requests와 Issuing(증명 요청 및 발급)에는 몇 가지 사항이 있습니다. 나중에 살펴 보겠습니다.
화면 하단에 각 사용자의 DID Endpoint가 있음을 알 수 있습니다. 이를 이용해 Agent를 연결하여 메시지를 교환할 수 있습니다.
● Step 2: Faber 설정(Setting up Faber)
(자격증명 규격 관리 단계!!!!!)
Faber 페이지(http://localhost:3002)에서 Issuing 탭을 클릭합니다.
Hyperledger Indy Ledger에 성적증명서(Transcript) Schema 게시.
-> Faber가 졸업생에게 발급할 성적증명서 Credentials에 포함되어야 할 필드들(claims)의 public definition.
Hyperledger Indy Ledger에 특정 자격증명 발급자(이 경우, Faber)와 연결되는 Indy 구성요소인 "Credential Definition"을 스키마, 선택적 해지 레지스트리(사용하지는 않을 예정) 및 자격증명의 신원정보(Claim) 암호화 및 서명에 사용되는 일련의 Key로 게시.
-> 이 public 데이터를 통해 Faber는 Alice에게 성적증명서 Credential을 발행하여 나중에 Acme에 이를 증명할 수 있습니다.
Faber는 credential을 발행할 수 있는 Hyperledger Indy Agent를 설정했습니다. Faber의 가장 훌륭한 성적증명서 관리인인 John Academic은 일을 처리해야 합니다. 이를 위해서는 Indy Ledger에 Schema 및 Credential Definition을 작성해야 합니다. 조금 복잡하지만 John Academin이 처리할 것은 없습니다.
1. 아직 수행하지 않은 경우, Faber Agent 탭으로 이동하여 Issuing을 클릭하십시오.
2. Schema에 이름, 버전 및 속성 목록을 제공하십시오. 예를 들어 이름, 학위, 상태, 연도, 평균 및 사회보장번호(ssn)가 있는 Transcript 1.3이 있습니다.
Name of Schema: Transcript
Schema Version: 1.3
Please supply a JSON array ofattributes: [ "name", "degree", "status", "year", "average", "ssn" ]
3. Submit 버튼을 클릭합니다.
이것은 Faber(및 다른 사람들)가 Schema를 사용할 수 있도록 Ledger에 쓰는 작업입니다.
4. Credential Definition 창에서 Schema(Transcript 1.3)를 선택하고, 태그를 지정한 후 Submit 버튼을 클릭해 작업이 완료될 때까지 기다립니다. (시간이 약간 소요됨)
John은 credential에 MyTranscript라는 태그를 지정합니다. - 이 데모에서는 이대로 사용합니다.
Credential Difinition을 생성하는 프로세스는 Credential Definition이 안전하고 Faber만 사용할 수 있도록 Indy가 암호화 키를 생성하므로 약간의 시간이 소요됩니다.
● Step 3: 관계 형성(Establishing Relationships)
Alice가 alma 교인인 Faber College에서 성적 증명서를 받으려면 Alice는 Faber와 디지털 관계를 맺어야 합니다. Alice는 Faber용 Endpoint DID를 사용하여 연결 요청을 전송해 이를 수행합니다. 이 데모에서는 각 Agent의 고유한 DID가 Agent 창의 맨 아래에 표시되어 있습니다.
새로운 관계를 생성하려면 다음과 같은 단계가 필요합니다.
1. Alice Agent 탭에서 Send New Connection Request 버튼을 클릭하십시오.
2. Faber Agent 탭에서 Faber의 Endpoint DID를 복사해 Alice Agent 탭에서 "Send Connection Request" 팝업창에 붙여넣고 Send Connection Request 버튼을 클릭하십시오.
이것은 Alice와 Faber 사이의 관계를 생성해줍니다. 두 Agent에서 "Relationships" 메뉴 항목을 클릭하면 관계가 표시됩니다. - 그렇지 않은 경우, 새로고침 버튼을 클릭하면 관계가 나타납니다. 또한 DID가 여전히 표시되어 있음을 알 수 있습니다. 이것은 그다지 친절하지 않습니다. 실제 Agent 세계에서 우리는 DID를 보고 싶지 않습니다. 각 관계에 대해 사용자 이름을 입력할 수 있지만 상대방이 우리에게 이름을 말하면 더 쉽지 않을까요?
하지만 여기에는 문제가 있습니다. 만약 그들이 우리에게 거짓말을 한다면? 그들이 그녀의 악의적인 공격자일 때, 그들이 Alice라고 말했습니까? 우리가 원하는 것은 상대방의 이름을 얻는 신뢰할 수 있는 방법입니다. 검증 가능한 Credentials가 제공됩니다.
연결이 설정되자마자 Alice와 Faber는 자동으로 이미 보유하고 있는 "Government ID" credential을 사용하여 서로에게 상대방의 이름을 요청하는 Proof Request를 보냅니다. Credential은 Holder가 소유하므로 Agent 소프트웨어는 사용자에게 요청된 정보를 공유할 것인지 묻는 메시지를 표시합니다.
Alice는 자신의 Message를 확인하고 (새로고침 클릭 필요), Faber가 자신의 이름을 요청하는 Proof Request를 확인합니다.
3. Messages 메뉴를 클릭한 후, Accept 버튼을 클릭하십시오.
한편, Faber College에서도 Alice로부터 "이름" Proof Request(새로고침 클릭 필요)에 대한 Message를 받았으며, 요청을 수락한 결과로 Alice는 Government ID에 따라 대학교의 공식 이름인 "Faber"를 얻게 되었습니다. 최신 데이터를 보려면 브라우저 탭을 새로 고쳐야 합니다.
● Step 4: 자격증명에 관한 모든 것(It's All About Your Credentials)
Alice는 Acme에 일자리를 지원하려면 성적증명서가 필요합니다. Alice와 Faber는 관계를 맺고 있으므로 계속해서 성적증명서를 요청할 수 있습니다. 우리는 이 데모에서 그 일이 어떻게 일어나는지 보여주지는 않지만, Alice가 그렇게 했다고 가정해봅시다.
Alice가 자신의 성적증명서를 원한다는 것을 알고 있는 Faber는 프로세스를 시작합니다. John Academin이 다시 일을 시작할 때입니다. Faber 브라우저 탭으로 이동하여 Issuing 메뉴 항목을 클릭하십시오.
1. Send Credential Offer 창에서 관계(Alice)를 선택한 후 Credential Definition(MyTranscript)를 선택하고 Submit을 클릭하십시오.
Alice 브라우저 탭(브라우저 탭 새로고침 필요)으로 돌아가면 Message에 Faber로부터 새로운 Credential 요청이 온 것을 확인할 수 있습니다. Accept 버튼을 클릭합니다.
2. Credentials 메뉴를 클릭합니다.
Alice는 이제 Government ID와 성적증명서(Transcript) 두 가지 Credential을 갖습니다. 성적증명서를 클릭하면 GPA가 얼마나 멋진 지 알 수 있습니다!
● Step 5: 구직 신청(Applying for the Job)
Alice는 Faber로부터 자신의 성적증명서를 받았습니다. 이제 그녀가 해야할 일은 직업을 갖는 것입니다! 그녀는 성공적으로 인터뷰를 했고 (또는 그렇게 생각하고) 모든 것이 그녀의 성적증명서에 달려 있습니다. 부담 없이. Faber와 마찬가지로 Alice는 먼저 Acme와 관계를 맺어야 합니다.
1. Send New Connection Request를 클릭하십시오.
2. Acme의 Endpoint DID를 복사해서 붙여넣고 Send Connection Request 버튼을 클릭합니다.
연결이 설정되었습니다! Alice-Faber 연결과 마찬가지로 연결이 설정되자마자 각자가 보유하고 있는 Government Credential에서 정보를 얻기 위해 상대방에게 Proof Request를 보냅니다.
Alice는 Messages를 확인하고(브라우저 새로고침 필요) "이름" 속성에 대한 Acme의 Proof Request가 있는지 확인합니다.
3. Messages 메뉴를 클릭한 후, Accept 버튼을 클릭하십시오.
Acme도 동일한 작업을 수행합니다. Messages 메뉴에서 Proof Request를 확인한 다음 Accept 버튼을 클릭합니다. 이제 관계가 설정되었습니다!
이제 Acme는 Alice의 성적증명서를 얻기 위해 Proof Request를 보냅니다. 여기서 우리는 이 데모를 위해 시나리오를 작동시키기 위해 약간의 hack을 사용해야 합니다. 이것이 실제 앱에서 작동하는 방식은 아니지만 아이디어를 얻는 데 충분합니다.
이 데모에서 지금까지 Proof Request는 바로 발생했습니다. 즉, 연결이 설정되면 두 당사자가 서로에게 Proof Request를 보냅니다. 이 경우에 Acme가 Proof Request를 보내는 단계에 대해 안내합니다. 데모의 문제점은 무엇입니까? 불행하게도, 이 데모에서 Acme는 성적증명서의 Proof Request를 구성하는 정보를 알지 못하므로 Faber로부터 정보를 얻어야합니다. 더 나쁜 것은 복사 및 붙여넣기를 사용하여 해당 정보를 얻는 것입니다. 실제 앱에서 작동하는 다른 방법이 있지만 지금은 이 방법을 사용하겠습니다.
Faber 브라우저 탭에서 이 단계를 시작하십시오. Proof Requests 메뉴를 클릭합니다. Proof Request 선택 드롭다운에서 "Transcript-Data"를 선택하십시오. 오른쪽 상자의 텍스트(JSON 구조)는 "name": "Transcript-Data"로 시작하도록 업데이트됩니다. 해당 텍스트 상자의 모든 데이터를 복사하십시오. (오른쪽 클릭 후 "copy" 선택) 다음으로 Acme로 가서 성적증명서를 요청하십시오.
Acme 브라우저 탭에서 실행:
1. Proof Requests 메뉴 클릭
2. Relationship: Alice 선택
3. Select a Proof Request: Other (Paste Proof Request Here) --> 선택
4. Faber 탭에서 복사한 텍스트 붙여넣기 (해킹이야...!)
5. Submit 버튼 클릭
Alice 브라우저 탭으로 돌아가서 Messages 메뉴를 클릭하십시오. Alice는 Proof에 대한 성적증명서 속성("claims")을 제공하는 것에 동의합니다.
Alice가 성적증명서 요청을 수락하면 Acme의 Relationships 메뉴 아래에서 Alice와의 연결을 클릭해 Transcript-Data에 대한 새로운 Proof를 볼 수 있습니다.
Alice는 다음과 같은 내용을 증명하기 위해 Transcript-Data의 유효성을 검사합니다.
- Faber College의 claims
- Alice에 의해 제공된 claims
- 무단으로 변경되지 않은 claims
Acme는 이제 Alice가 2015년에 학사 학위를 받았으면 일자리를 얻었음을 알고 있습니다!
■■■■■■■■■■ 프로그램 종료 ■■■■■■■■■■
● Stopping
# 중지
./manage down
'Blockchain > Blockchain 네트워크 구성' 카테고리의 다른 글
[Blockchain 네트워크 구성] peer channel fetch 명령을 통한 블록 파일 fetch (0) | 2019.12.18 |
---|---|
[Blockchain 네트워크 구성] Hyperledger Fabric v1.4: CouchDB admin 계정 로그인 오류 해결 방법 (0) | 2019.12.10 |
[Chaincode_NodeJS] invokeChaincode() 함수를 이용한 다른 체인코드 호출 (0) | 2019.11.27 |
[blockchain-explorer] Fabric v1.4 네트워크에 blockchain-explorer v0.3.9.1 연동 (0) | 2019.06.20 |
[fabric-rest] nginx를 이용한 fabric-rest Load Balancing (0) | 2019.05.10 |
- Total
- Today
- Yesterday
- ambrosus
- 빅데이터 기초
- 암브로셔스
- javascript
- codility
- 빅데이터 교육
- DOCs
- Hyperledger Fabric v1.2
- Hyperledger Fabric v1.1
- 코딜리티
- 하이퍼레저 패브릭
- 기초 of 기초 데이터 개념
- ubuntu
- Private Data
- 어서와 데이터는 처음이지
- 빅데이터
- 코테
- docker
- 코딩테스트
- 빅데이터 강의
- 알고리즘
- 직딩잇템
- 하이퍼레저 페브릭
- Hyperledger Indy
- 블록체인
- 블록 체인
- Hyperledger Fabric
- 문제풀이
- 하이퍼레저 인디
- Blockchain
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |