2022/블록체인

[Hyperledger / Aries] 자기주권증명 블록체인 공부자료 정리

코드아키택트 2021. 11. 30. 00:55
반응형

안녕하세요 갈아만든쌀 입니다. 학교 프로젝트로 인해 뭐빠지게 증명서 발급 블록체인을 하고 있습니다. 그 중에서도 Hyperledger Indy와 Aries를 중심으로 하고있습니다. 오늘 누군가 질문을 던지셔서 내용을 정리해봅니다.

어떻게 배워야 할까?

책으로 이론 그리고 계란으로 바위치며 코딩 병행

 저는 edx의 Aries developer 내용을 보며 공부했습니다. 근데 사실 영어라 잘 들어오지도 않고, 영상도 없다보니 이해하기 굉장히 버겁습니다. 최근 팀플을 하며 책을 보니 많이 이해가 되서 <자기주권 신원증명 구조 분석서> 라는 책을 이론서로 추천합니다. 이 책과 코딩을 같이한다면 이해가 잘 될것입니다.

Hypereldger 증명서 발급 삼형제 : Aries, Indy, Ursa

 블록체인이란게 뭔가 별거 아닌거 같지만 이해하기가 쉽지 않습니다. 그중에서도 특히, 증명서 발급 관련 블록체인은 쩌리짱이다보니 자료도 찾기 힘듭니다. 오늘 글에선 Hyperledger중심으로 이야기를 해보겠습니다.

 우선 블록체인을 한다고 할 때, 블록체인이란걸 하나부터 열까지 설계하고 디자인 해야한다고 생각하시는 분들이 많은 것 같습니다. 그렇게 한다면 충분히 가치있는 일이지만 현실적으로 가져다가 잘 쓰는것만 해도 중간 이상이라고 봅니다. 그런 관점에서 위의 Ursa, Indy, Aries중 우리는 선택을 해야합니다.

 Ursa는 암호학 라이브러리 입니다. Indy 와  Aries가 가져다 쓰는 정도로만 이해하면 됩니다.

 Indy는 블록체인을 담당합니다. 블록체인과 직접적인 소통을 할때 쓴다고 보면 됩니다.

 Aries는 DIDComm이라는 통신과, 블록체인과 소통을 원활하게 하는 역할을 합니다. 컴퓨터 용어로는 블록체인과 관련된 기능을 abstraction을 통해 사용자는 그 안에서 무슨일이 일어나는지 크게 알 필요 없이 할 수 있게 만든 것 입니다.

 제가 제대로 봤다면 Hyperledger의 큰 흐름은 Aries중심으로 무게를 옮기고 있습니다.

Aries는 P2P통신이다

근본적인 질문 : 모든 거래가 장부에 저장될 필요가 있는가?

 저는 블록체인을 Aries 관련 내용부터 시작했습니다. 그래서 거의 3달간은 뭐가 뭔지 하나도 이해를 못했습니다. Aries가 해결하고자 하는 것은 기존 증명서 발급 과정의 문제들 입니다. 기억나는 대로 쓰자면 다음과 같습니다.

  1. 남들은 신경쓰지 않는 거래내역도 있는데 그런것도 장부에 저장되어야 하는가?(흥정)
  2. 어떻게 하면 장부에 기록되는 횟수를 줄여 거래비용을 줄일 것인가?
  3. 발급된 증명서가 인증된 기관이 발급한 사실과 내용이 위변조 되지 않은게 중요한 것 아닌가?

 대략 이정도로 정리할 수 있을 것 같습니다. Aries는 이러한 문제를 P2P여기서는 DIDComm이라는 방식을 통해 해결하려고 합니다. 기존 블록체인이 발급이력과, 발급을 위해 서로간 통신 방식이 블록체인에 저장되었다면, Aries에서는 증명서의 Schema와 발급기관의 DID만 장부에 저장됩니다. 그리고 발급이력은 로컬 저장소에 저장되도록 되어있습니다.

 이로인해, 장부에 저장되는 내용이 적어지며 비용절감과 효율성 증대등이 있습니다. 위변조에 대한 부분은 암호학적으로 해결했다고 하는데, 이부분은 제가 제대로 아는 부분은 아니니 넘어가도록 하겠습니다. 어쩃든 이론이 많이 나오는데 요점은 이것입니다. 장부에 접근하는 횟수가 줄어들었다

그래서 개발은 무엇으로?

정말 자료가 없다

사실 정말 인터넷에 자료찾기가 힘듭니다. 거의 공식 Repo를 참조해야하며, DID 관련 열심히 하는 해외 블로거들의 내용을 참조할 수 있습니다. 오늘은 주제가 조금 광범위한 관계로 어떤 사이트들이 있는지 소개만 하도록 하겠습니다.

 

관련 링크

DID Comm 장점 - https://youtu.be/EKH7vjp_P9o

신원증명 지갑 React-native-App https://github.com/hyperledger/aries-mobile-agent-react-native

CLI 또는 OpenAPI 형식으로 Aries 관련 시나리오 실행(반드시 해볼 것) - https://github.com/hyperledger/aries-cloudagent-python/tree/main/demo

Indy Aries 개발자 Medium - https://kctheservant.medium.com/exploring-agent-demonstration-in-hyperledger-indy-3e1e8278b3d1

Credential Schema 변경 사례(위의 개발자 프로젝트 중 하나) - https://kctheservant.medium.com/demonstration-of-hyperledger-aries-cloud-agent-6e476a5426b0

공식 Aries 개발 과정(개인적으로 비추) - https://www.edx.org/course/becoming-a-hyperledger-aries-developer

 

필요 스킬

그냥 쳐다보니 이런게 필요해보이더라

링크는 저 위의 예제들과, 관련 유투브정도가 될것 같습니다. ACA-PY만 해도 이해하기 쉽지 않았으니 충분히 넉넉한 자료라고 생각합니다. 위의 것들을 하다보니 필요한 스킬도 어느정도 보입니다. 아래 써보면 다음과 같습니다.

  • Go(Go 기반 프레임워크가 눈에 띔)
  • React-native
  • Docker
  • Python(ACA-PY는 파이썬 기반임)
  • Linux / macOS
  • OpenAPI

위 중에서 몇개만 꼽으라면 저는 Docker, Linux, OpenAPI를 꼽겠습니다. 프로그래밍은 서로서로 통하는 내용이 있다지만, Docker와 같은 가상환경 API를 정리해놓는 방법인 OpenAPI 그리고 왠만하면 잘 쓰지않는 Linux환경은 아주 인생의 참맛을 느끼게 해줍니다. 특히 이번에 프로젝트를 해보니, linux의 중요성을 깨달았습니다.

 

끝맺으며

 오늘은 갑작스레 쿠다다ㅏ당 글을 써봤습니다. 모든 스킬은 목구멍까지 물이 차오를 정도로 급해졌을때 수준이 급 상승하기 마련입니다. 저도 아직 배우는 중이지만 프로젝트를 직접 구현해보신다면 정말 많이 배우실 수 있을 겁니다.

반응형