본문 바로가기
개발 일지/블록체인

S4: 간단한 Credential 발급/조회

by StelthPark 2021. 12. 3.

졸업증명서 개발하기

 

claimCredential 으로 발행 => getCredential로 발행주소로부터 VC확인

 

struct Credential{
        uint256 id;
        address issuer;
        uint8 alumniType;
        string value;
    }

 

Credential 구조 {

id: index순서로 idCount;

issuer: 발급자로써 크리덴셜을 생성하고 보유자(holder)에게 전달;

alumniType: 졸업증명서 타입;

value: 크리덴셜에 포함되어야하는 정보, 서명 등 JSON 형태로 저장;

}

 

    function claimCredential(address _alumniAddress, uint8 _alumniType, string calldata _value) public returns(bool){
        require(issuerAddress == msg.sender, "Not Issuer");
				Credential storage credential = credentials[_alumniAddress];
        require(credential.id == 0);
        credential.id = idCount;
        credential.issuer = msg.sender;
        credential.alumniType = _alumniType;
        credential.value = _value;
        
        idCount += 1;

        return true;
    }

claimCredential 함수 {

issuerAddress가 메세지를 보낸사람, 즉 함수실행자가 맞는지 require로 확인한다.

credentials[홀더주소]의 key값으로 credential 변수명으로 지정하고 storage로 영구저장시킨다. 이 credential구조는 Credential struct을 따른다.

credential.id가 0으로 처음 작성되는지 require로 확인한 뒤

각각의 데이터를 할당하고 idCount를 1로 올린다.

 

getCredential 함수

    function getCredential(address _alumniAddress) public view returns (Credential memory){
        return credentials[_alumniAddress];
    }

홀더 주소를 받아서 credentials[홀더주소]로 내부에 저장된 값을 리턴한다.

 

댓글