졸업증명서 개발하기
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[홀더주소]로 내부에 저장된 값을 리턴한다.
'개발 일지 > 블록체인' 카테고리의 다른 글
내 프라이빗 블록체인에서 입출금 트랜잭션 데몬구현 (0) | 2022.02.19 |
---|---|
S4: EtherscanAPI로 Verify & publish 하는법 (0) | 2021.12.09 |
S4: Credential 발급/조회 + 추가기능 (0) | 2021.12.03 |
S4: Truffle과 openzeppelin, ganache로 배포하기 (0) | 2021.11.30 |
S4: Solidity 가위바위보 게임 (0) | 2021.11.25 |
댓글