자녀 의료 기록을 위한 블록체인 기반 스마트 컨트랙트는 학부 캡스톤 디자인 종합 프로젝트의 일환으로 개발된 스마트 컨트랙트 솔루션으로, 자녀의 민감한 의료 데이터를 블록체인에 안전하고 투명하게 저장하고 관리할 수 있도록 설계되었습니다.
중앙화된 시스템의 한계를 극복하고, 부모가 자녀의 건강 기록에 대한 주권을 가질 수 있는 새로운 패러다임을 제시합니다.
PAWPAW는 자녀의 건강 관리에 필수적인 다음 기능을 제공합니다:
-
필수 예방접종 관리 (생후 144개월까지)
- 새로운 백신 접종 기록 추가
- 기존 백신 접종 정보 업데이트
- 자녀의 예방접종 상태 조회
- 자녀 주소를 통한 예방접종 기록 통합 관리
-
진료 내역 관리
- 병원/약국별 진료 내역 추가
- 동일 진료 내역의 중복 등록 방지
- 자녀의 모든 진료 기록 조회
-
부모의 자녀 정보 동시 관리
- 자녀의 블록체인 주소를 기반으로 부모의 주소로 자녀의 의료 데이터에 동시 접근 및 관리
- Solidity: 이더리움 가상머신(EVM)에서 실행되는 스마트 컨트랙트 개발 언어로 사용되었습니다.
- 네트워크: Sepolia 테스트넷에 배포되어 테스트 및 검증을 진행했습니다.
의료 데이터의 특성을 고려하여 블록체인 기술을 채택한 주요 이유는 다음과 같습니다:
- 데이터 무결성 및 투명성 보장: 모든 기록이 블록체인에 투명하게 기록되어 위변조가 불가능합니다.
- 탈중앙화된 데이터 소유권: 데이터가 특정 기관이 아닌 개인에게 귀속되어 자율적인 관리가 가능합니다.
- 불변성: 한번 기록된 의료 기록은 변경할 수 없어 데이터의 신뢰성이 극대화됩니다.
- 스마트 컨트랙트를 통한 자동화된 접근 권한 관리: 프로그래밍된 로직에 따라 접근 권한이 자동 부여 및 제어됩니다.
- Hardhat: 이더리움 개발 프레임워크를 활용하여 개발 효율성을 높였습니다.
Hardhat을 선택한 이유는 다음과 같습니다:
- 빠른 개발 및 디버깅: 로컬 블록체인 환경에서 신속한 테스트와 디버깅이 가능합니다.
- 자동화된 테스트: 자동화된 테스트 스크립트 작성을 통해 컨트랙트의 안정성을 확보했습니다.
- 다양한 네트워크 배포: 여러 이더리움 네트워크에 대한 배포 설정을 효과적으로 관리할 수 있습니다.
- 가스 최적화 및 컨트랙트 크기 분석: 효율적인 컨트랙트 개발을 위한 도구를 제공합니다.
- EIP-712 표준: 구조화된 데이터 서명 표준을 구현하여 보안과 사용자 경험을 강화했습니다.
EIP-712를 적용한 주요 이유는 다음과 같습니다:
- 가스비 절약: 오프체인 서명을 통해 사용자가 블록체인 상의 트랜잭션 비용을 절감합니다.
- 사용자 친화적인 서명 인터페이스: MetaMask와 같은 지갑에서 구조화된 메시지를 표시하여 사용자가 서명 내용을 명확하게 이해할 수 있도록 돕습니다.
- 서명 데이터의 가독성 향상: 복잡한 데이터도 사람이 읽기 쉬운 형태로 표시됩니다.
- 피싱 공격 방지: 도메인별 서명 구분을 통해 피싱 공격의 위험을 줄입니다.
- 추가 보안 계층 제공: 민감한 의료 데이터의 보안을 더욱 강화합니다.
루트 디렉터리에 .env 파일을 생성하고 아래 값을 설정합니다:
INFURA_API_KEY=your_infura_key
PRIVATE_KEY=your_private_key
PARENT_CHILD_RELATIONSHIP_ADDRESS=0x...
DOMAIN_NAME=your.domain
HTTP_PORT=8080
HTTPS_PORT=8081DOMAIN_NAME을 지정하면 LetsEncrypt 인증서를 읽어 HTTPS 서버를 시작합니다.HTTP_PORT와HTTPS_PORT는 미지정 시 각각 8080/8081 포트를 사용합니다.
npm installnpm start기본적으로 http://localhost:8080/contract 경로에서 API를 제공합니다.
모든 API는 JSON 요청/응답을 사용합니다.
| Method | Endpoint | 설명 |
|---|---|---|
| GET | /contract/test |
서버 연결 테스트 |
| POST | /contract/create |
자녀 생성 메타 트랜잭션 |
| POST | /contract/health/update |
키/몸무게 갱신 메타 트랜잭션 |
| POST | /contract/medical/add |
진료 기록 추가 메타 트랜잭션 |
| POST | /contract/vaccination/update |
예방접종 갱신 메타 트랜잭션 |
| POST | /contract/vaccination/updateMulti |
예방접종 일괄 갱신 메타 트랜잭션 |
{
"parent": "0x...",
"childAddress": "0x...",
"medicalType": 0,
"visitedName": "OO병원",
"timestamp": 1700000000,
"doctorName": "홍길동",
"symptoms": "기침",
"diagnosisDetails": "감기",
"signature": "0x..."
}PAWPAW 프로젝트의 동작을 다음 데모 영상에서 확인하실 수 있습니다:
[프로젝트 데모 영상 링크] https://youtu.be/Xl2nIOAJ4r0
PAWPAW는 기존 중앙 집중식 의료 데이터 관리 시스템의 한계를 극복하고, 개인이 자신의 의료 데이터를 안전하게 소유하고 관리할 수 있는 새로운 패러다임을 제시하는 데 큰 의의를 둡니다. 특히, 자녀의 필수 예방접종 및 진료 기록을 부모가 투명하고 안전하게 관리할 수 있는 솔루션을 블록체인 기술로 구현함으로써, 미래 의료 시스템의 가능성을 탐구했습니다.