Skip to content

indianaPoly/blockchain-vaccination_medicalHistory

Repository files navigation

자녀 의료 기록을 위한 블록체인 기반 스마트 컨트랙트

자녀 의료 기록을 위한 블록체인 기반 스마트 컨트랙트는 학부 캡스톤 디자인 종합 프로젝트의 일환으로 개발된 스마트 컨트랙트 솔루션으로, 자녀의 민감한 의료 데이터를 블록체인에 안전하고 투명하게 저장하고 관리할 수 있도록 설계되었습니다.

중앙화된 시스템의 한계를 극복하고, 부모가 자녀의 건강 기록에 대한 주권을 가질 수 있는 새로운 패러다임을 제시합니다.

⌘ 주요 기능

PAWPAW는 자녀의 건강 관리에 필수적인 다음 기능을 제공합니다:

  1. 필수 예방접종 관리 (생후 144개월까지)

    • 새로운 백신 접종 기록 추가
    • 기존 백신 접종 정보 업데이트
    • 자녀의 예방접종 상태 조회
    • 자녀 주소를 통한 예방접종 기록 통합 관리
  2. 진료 내역 관리

    • 병원/약국별 진료 내역 추가
    • 동일 진료 내역의 중복 등록 방지
    • 자녀의 모든 진료 기록 조회
  3. 부모의 자녀 정보 동시 관리

    • 자녀의 블록체인 주소를 기반으로 부모의 주소로 자녀의 의료 데이터에 동시 접근 및 관리

⌘ 기술 스택 및 개발 상세 내용

1. 블록체인 기술

  • Solidity: 이더리움 가상머신(EVM)에서 실행되는 스마트 컨트랙트 개발 언어로 사용되었습니다.
  • 네트워크: Sepolia 테스트넷에 배포되어 테스트 및 검증을 진행했습니다.

의료 데이터의 특성을 고려하여 블록체인 기술을 채택한 주요 이유는 다음과 같습니다:

  • 데이터 무결성 및 투명성 보장: 모든 기록이 블록체인에 투명하게 기록되어 위변조가 불가능합니다.
  • 탈중앙화된 데이터 소유권: 데이터가 특정 기관이 아닌 개인에게 귀속되어 자율적인 관리가 가능합니다.
  • 불변성: 한번 기록된 의료 기록은 변경할 수 없어 데이터의 신뢰성이 극대화됩니다.
  • 스마트 컨트랙트를 통한 자동화된 접근 권한 관리: 프로그래밍된 로직에 따라 접근 권한이 자동 부여 및 제어됩니다.

2. 개발 환경 및 도구 (Hardhat)

  • Hardhat: 이더리움 개발 프레임워크를 활용하여 개발 효율성을 높였습니다.

Hardhat을 선택한 이유는 다음과 같습니다:

  • 빠른 개발 및 디버깅: 로컬 블록체인 환경에서 신속한 테스트와 디버깅이 가능합니다.
  • 자동화된 테스트: 자동화된 테스트 스크립트 작성을 통해 컨트랙트의 안정성을 확보했습니다.
  • 다양한 네트워크 배포: 여러 이더리움 네트워크에 대한 배포 설정을 효과적으로 관리할 수 있습니다.
  • 가스 최적화 및 컨트랙트 크기 분석: 효율적인 컨트랙트 개발을 위한 도구를 제공합니다.

3. 보안 및 표준 구현 (EIP-712)

  • EIP-712 표준: 구조화된 데이터 서명 표준을 구현하여 보안과 사용자 경험을 강화했습니다.

EIP-712를 적용한 주요 이유는 다음과 같습니다:

  • 가스비 절약: 오프체인 서명을 통해 사용자가 블록체인 상의 트랜잭션 비용을 절감합니다.
  • 사용자 친화적인 서명 인터페이스: MetaMask와 같은 지갑에서 구조화된 메시지를 표시하여 사용자가 서명 내용을 명확하게 이해할 수 있도록 돕습니다.
  • 서명 데이터의 가독성 향상: 복잡한 데이터도 사람이 읽기 쉬운 형태로 표시됩니다.
  • 피싱 공격 방지: 도메인별 서명 구분을 통해 피싱 공격의 위험을 줄입니다.
  • 추가 보안 계층 제공: 민감한 의료 데이터의 보안을 더욱 강화합니다.

⌘ 로컬 개발 및 실행

1) 환경 변수 설정

루트 디렉터리에 .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=8081
  • DOMAIN_NAME을 지정하면 LetsEncrypt 인증서를 읽어 HTTPS 서버를 시작합니다.
  • HTTP_PORTHTTPS_PORT는 미지정 시 각각 8080/8081 포트를 사용합니다.

2) 의존성 설치

npm install

3) 서버 실행

npm start

기본적으로 http://localhost:8080/contract 경로에서 API를 제공합니다.

⌘ 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는 기존 중앙 집중식 의료 데이터 관리 시스템의 한계를 극복하고, 개인이 자신의 의료 데이터를 안전하게 소유하고 관리할 수 있는 새로운 패러다임을 제시하는 데 큰 의의를 둡니다. 특히, 자녀의 필수 예방접종 및 진료 기록을 부모가 투명하고 안전하게 관리할 수 있는 솔루션을 블록체인 기술로 구현함으로써, 미래 의료 시스템의 가능성을 탐구했습니다.

About

백신 및 의료기관 방문을 기록하는 스마트컨트랙트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors