Decentralized Identity (탈중앙화 신원 증명)
, 이전에 작성한 글을 참고하면 될 듯 하다. - DID
예시코드로 제공되어있는 졸업증명 DID를 참고하여, 백신시스템으로 변경해 보자.
OwnerHelper, 특정 함수를 관리자만 사용할 수 있도록 설정하는 기능을 가지고있는 컨트랙트
function transferOwnership()
: 관리자를 다른 address로 이전시키는 함수
IssuerHelper, 백신 증명서를 발급해줄수있는 기관을 추가/삭제/확인 할 수 있는 기능을 가지고있는 컨트랙트
function addIssuer()
: 백신 증명서를 발행할 수 있도록 인증기관을 추가하는 함수
function getIssuer()
: 해당 기관이 인증되어있는 확인할 수 있는 함수
function delIssuer()
: ↔️ addIssuer()
function claimCredential()
:
function getCredential()
:
gif를 통해서 컨트랙트 동작방식을 설명하고싶었으나 pending 때문에 원활히 진행이 안될것같아서 사진으로 첨부함
Ropsten 테스트넷으로 배포진행하였고 컨트랙트 주소(0x7703015Df9E56853bed5Db550b335259a5a9e6f3)를 통해 이더스캔 에서 확인가능하다. 전체 소스코드는 깃허브 에 올려두었다.
isIssuer
를 통해서 해당 기관이 인증되어있는 기관인지 확인해볼 수 있다.
최초 발행자인 owner
는 true로 갖고있으며, 인증이 되어있지 않으면 false 값을 갖고있다.
address 값 파라미터로 갖는 addIssuer
를 실행하면 true 로 바뀐것을 확인할 수 있다.
예제코드를 보면서 실습을 진행하였을 때는 간단하게 생각했었는데.... 막상 소스코드를 작성하다보니 그렇지않았음을 깨달았다. 지금까지 너무 복사붙혀넣기식의 진행을 했었나, 제대로 된 학습이 되지않았다고 생각한다.
위 기능말고 인증기관 추가, 백신타입 추가, 부작용으로 인한 미접종자 같은 추가하고싶은 기능들이 있었는데 코딩실력이 미치지않아서 진행하지 못했다는게 개인적으로 아쉬웠다.
꾸준히 공부해서 나중에 완벽하게 수정하도록 해야겠다.