스마트 계약 개발 절차
개발은 보통 요구사항 정의, 분석, 설계, 개발 및 테스트로 진행된다. 요구사항 정의 시 사용되는 방법 중 하나가 유스케이스 분석이다. 유스케이스 분석을 통해, 실제 사용 사례와 시나리오를 정리한다.
유스케이스 정의
BIM의 경우 제일 큰 이슈 중 하나가 디지털 모델 변경이 다수 관계자간에 진행되어, 모델의 신뢰성 보장이 어렵다는 것이다. 신뢰성 보장을 위해서는 모델에 대한 이슈 발생과 처리 시 과정을 추적할 수 있어야 한다. 이슈 관리 이력을 분산원장(블록체인)에 저장해, 모델 변경 이력을 추적할 수 있도록 하고, 모델에 대한 신뢰성을 확보한다. 그래서, 유스케이스를 BIM 협업 상황에서 모델 변경 관련된 모델링 이슈 이력 관리로 한다. 모델 변경 시 관련 트랜잭션 정보는 다음과 같이 가정한다.
1. BIM file URL = resource_type://address+directory
2. Issue No = IS###
3. Issue reason = enum {element_collision, element_missing, invalid_data, etc}
4. Sender = email
5. Receiver = email
6. Date = YYYY/MM/DD
7. State = enum {open, progress, solved, close}
구현해 보기
앞의 유스케이스를 스마트 계약으로 구현해 보면 다음과 같다.
pragma solidity ^0.4.0;
contract BIM_modeling_issue {
struct Issue {
uint no;
string url;
uint reason;
string sender, receiver;
string date;
uint state;
};
Issue[] issues;
/// Create a issue
function BIM_modeling_issue(uint8 num) public {
issues.length = num;
}
function findIssueBySender(string sender) public Issue returns (Issue _is) {
for(uint8 i = 0; i < issues.length; i++)
{
if(issues[i].sender == sender) {
_is = issues[i];
}
}
}
}
BIM 모델링 이슈 데이터를 관리하는 Issue 구조체를 정의하고, issues 배열을 만든다. sender가 생성한 issue를 찾는 findIssueBySender라는 간단한 함수를 만들어 보았다. 이 스크립트는 Solidity 계약 개발을 지원하는 REMIX등에서 실행할 수 있다.
레퍼런스
Welcome to Remix documentation!
Create Your First Smart Contract In Ethereum With Ganache And Remix IDE
Build Your First Ethereum Smart Contract with Solidity — Tutorial
레퍼런스
Welcome to Remix documentation!
Create Your First Smart Contract In Ethereum With Ganache And Remix IDE
Build Your First Ethereum Smart Contract with Solidity — Tutorial
댓글 없음:
댓글 쓰기