DID를 활용한 백신증명서

CY·2022년 2월 9일
0

졸업증명서를 만드는 예시를 통해 배운 DID를 어디 다른 곳에 활용해보고 싶어 찾아보던 중
이제는 코로나로 인해 일상이 되어버린 백신증명서가 눈에 들어왔다.
COOV 앱을 사용해보며 어느정도 익숙해지기도 했기에
대략적으로나마 구성과 기능들을 머리 속에 그려가며 간단한 백신증명서를 만들어보기로 했다.

구성

  • Owner - 증명서의 발급기관
  • Issuer - 인증된 백신 접종기관(병원, 보건소 등)
  • User - 사용자

백신 증명서의 struct

기능

1. Owner

transferOwnership

Owner 권한을 이양하는 함수로 require를 통해 권한을 넘기는 address가 유효한지 검증 후 양도한다.


function을 실행하기 전 modifier를 통해 Owner 권한이 있는 사람만 양도할 수 있도록 제한한다.

add / del Issuer

증명서를 관리하는 기관으로써 인증된 기관을 추가하거나 제외하는 등의 기능이다

2. Issuer

claimCredential

첫 접종자들을 위해 백신증명서를 발급하는 함수이다.
Owner의 경우와 마찬가지로 Issuer의 권한이 필요한 함수는 modifier를 통해 권한을 체크한다.

updateCredential

추가 접종이나 부스터샷 등 접종 정보를 갱신하는 경우 사용되는 함수로 변경되는 내용들만 업데이트해준다.

각종 type 변경

add / del StatusType -> 접종 상태의 type을 변경
add VaccineType -> 추후 신종 백신이 개발되는 경우 추가
changeStatus -> 유효기간이 만료되는 등 접종 상태가 변하는 경우

3. user

getCredential

인증된 자신의 증명서를 발급받을 수 있다.

개발 회고

TIL

어설프지만 간단하게나마 컨트랙트를 만들어볼 수 있어서 좋았다. 확실히 공부하며 단순히 따라하는 것과 직접 뭐라도 만들어보는 것이 머리 속에 들어오는 차이가 꽤 있다고 느꼈다.

Problem

차수에 따른 접종 정보를 배열 뿐만아니라 mapping이나 다른 여러가지 구조로도 구현해보고 싶었는데 아직 solidity의 문법이 익숙하지 않아 하지 못했다.

Try

차수마다 변경되는 정보들만 모아 관리하고 싶었는데 입력된 정보가 nested 구조로는 return 받을 수 없다고 오류가 나서 아쉬웠다. 좀 더 공부해봐야 겠다.

Code

github - VaccineCredential

profile
CY's StudyRoom

0개의 댓글