반려동물 산업이 성장하는 이면에는 여전히 매년 10만 마리 이상의 유기견이 발생하고, 그중 약 2만여 마리(18.5%)가 안락사 되는 현실이 있습니다.
- 신원 미등록: 유기동물은 고유한 식별번호 없이 '기록되지 않은 존재'로 남음
- 높은 입양 진입장벽: 제한적인 정보와 불편한 입양 절차
- 보호소 재정 부족: 수용 한계와 관리 비용 문제로 인한 안락사
멍멍Paw는 DID(Decentralized Identifier) 기술과 블록체인을 활용하여:
- 유기견 비문을 통한 고유 신원 부여
- 실시간 채팅과 입양 후기로 입양 접근성 향상
- 자체 화폐(뼈다귀)를 통한 충전식 후원 시스템
- 비문(코 지문) 인식을 통한 고유 DID 생성
- 블록체인에 영구 기록되는 투명한 신원 시스템
- Self-Sovereign Identity 방식의 VC/VP 관리
- 실시간 채팅을 통한 입양 상담
- 스토리 기능으로 유기견 일상 공유
- 블록체인 기반 투명한 소유권 이전
- 자체 화폐 '뼈다귀' (1뼈다귀 = 1,000원)
- 토스 페이먼츠 연동 간편 결제
- 후원자 내역 익명 공개
- 입양 완료 후 입양 후기 경험 공유
- 일상 콘텐츠를 통한 유대감 형성
- 커뮤니티 기반 소통
- 마이크로서비스 아키텍처: 각 도메인별 독립적인 서비스 구성
- gRPC 통신: 서비스 간 고성능 통신으로 응답 속도 향상
- 프라이빗 블록체인: 3-node QBFT 합의 알고리즘 기반 Hyperledger Besu
- CI/CD 자동화: NCP SourcePipeline 기반 자동 빌드 및 배포
- dogdogpaw Ingress: 프론트엔드(/) 및 API Gateway(/api) 라우팅
- besu Ingress: 블록체인 노드 RPC 로드밸런싱
- 모든 클라이언트 요청의 단일 진입점
- JWT 토큰 관리 및 DID 검증
- gRPC ↔ HTTP 프로토콜 변환
- 서비스 간 라우팅 및 인증/인가
| 서비스 | 기술 스택 | 역할 |
|---|---|---|
| Domain Service | Spring Boot | 입양, 후원, 채팅 등 핵심 비즈니스 로직 |
| VC Service | NestJS | DID/VC 발급, 검증 및 관리 |
| Indexer Service | Golang | 블록체인 이벤트 수집 및 동기화 |
| ML Service | FastAPI | 비문 특징벡터 추출 및 유사도 판별 |
| Faucet Service | NestJS | 테스트 토큰 발급 |
- Hyperledger Besu: 프라이빗 네트워크
- 합의 알고리즘: QBFT (Byzantine Fault Tolerant)
- 노드 구성: 3-node 클러스터
- 스마트 컨트랙트:
PetDID Contract: 반려동물 DID 관리Guardian Contract: 보호자-반려동물 관계 관리
- MySQL: 도메인 데이터 (입양, 후원, 채팅 등)
- PostgreSQL: DID/VC 데이터, 블록체인 이벤트
- Redis: JWT 토큰, 캐시, Pub/Sub 메시지큐
회원가입 프로세스:
- MetaMask 지갑 연결 및 주소 획득
- 이메일 인증
- 개인정보 입력 후 MetaMask 서명
- 개인정보 해시 + 지갑주소 블록체인 등록
- 사용자 DID 생성 완료
로그인 프로세스:
- MetaMask 지갑 연결
- 지갑 주소로 사용자 조회
- VP(Verifiable Presentation) 생성 요청
- MetaMask 서명 후 VP 발급 (JWT 형식)
- JWT 토큰 저장 (1 VP = 1 Session)
펫 등록 프로세스:
- 로그인 상태 확인 (JWT 토큰)
- 펫 기본 정보 입력
- 비문 사진 촬영 및 업로드
- AI 모델로 특징벡터 추출 (Siamese Network)
- 기존 비문 중복 체크
- 특징벡터 해시로 DID 생성
- MetaMask 서명 후 VC 발급
- 블록체인에 트랜잭션 기록
- Indexer가 이벤트 수집 및 DB 동기화
입양 프로세스:
sequenceDiagram
actor Adopter as 입양자
actor Adoptee as 피입양자
participant Frontend
participant Gateway as API Gateway
participant Spring as Domain Service
participant Chat as Chat Service
participant ML as ML Service
participant VC as VC Service
participant Blockchain
Note over Adopter,Spring: 1단계: 입양 공고 및 상담
Adoptee->>Frontend: 입양 공고 작성
Frontend->>Spring: 공고 저장
Adopter->>Frontend: 입양 공고 조회
Adopter->>Frontend: "입양 상담하기" 클릭
Frontend->>Spring: 채팅방 생성 요청
Spring-->>Chat: 1:1 채팅방 생성
Adopter<<->>Adoptee: 실시간 채팅 상담
Note over Adopter,Blockchain: 2단계: 입양자 서명
Adopter->>Frontend: "입양 신청하기" 클릭
Frontend->>Gateway: 입양 신청 요청
Gateway->>Adopter: 서명 요청 (MetaMask)
Adopter->>Gateway: 서명 완료
Gateway->>Spring: 입양 신청 상태 저장
Spring-->>Adoptee: 알림 전송
Note over Adopter,Blockchain: 3단계: 비문 검증
Adoptee->>Frontend: 입양 절차 시작
Frontend->>Adoptee: 비문 사진 촬영 요청
Adoptee->>Frontend: 비문 사진 업로드
Frontend->>Gateway: 비문 검증 요청
Gateway->>ML: 특징벡터 추출
ML-->>Gateway: 특징벡터 반환
Gateway->>Spring: 기존 비문과 유사도 비교
Spring->>Spring: 유사도 계산
alt 유사도 >= 85%
Spring-->>Gateway: 검증 성공
Note over Adopter,Blockchain: 4단계: 소유권 이전
Gateway->>Adoptee: 서명 요청 (MetaMask)
Adoptee->>Gateway: 서명 완료
Gateway->>VC: VC 업데이트 요청
VC->>Blockchain: Guardian 변경 트랜잭션<br/>(Adoptee → Adopter)
Blockchain-->>VC: 트랜잭션 완료
VC-->>Gateway: VC 이전 완료
Gateway->>Spring: 입양 완료 상태 저장
Spring-->>Frontend: 입양 완료
Frontend->>Chat: 입양 완료 알림 전송
Frontend-->>Adopter: 입양 완료 메시지
Frontend-->>Adoptee: 입양 완료 메시지
else 유사도 < 85%
Spring-->>Gateway: 검증 실패
Gateway-->>Frontend: 비문 불일치
Frontend-->>Adoptee: 재촬영 요청
end
| 이름 | 역할 | 소속 | 이메일 | GitHub |
|---|---|---|---|---|
| 모진영 | 팀장, 풀스택 개발 | 상명대학교 | [email protected] | @ahwlsqja |
| 신윤진 | 백엔드 개발 | 상명대학교 | [email protected] | @nomad1jin |
| 박수현 | 프론트엔드 개발 | 상명대학교 | [email protected] | @onion-0 |
- 제9회 K-PaaS 활용 공모전 - 서비스 개발 부문 출품 (2025.10.31)
프로젝트에 대한 문의사항이 있으시면 아래로 연락주세요:
- Email: [email protected]
- Website: http://puppypaw.site/
Made with by Team 더워멍냥



