Skip to content
poketopaPublic

About

특허 출원 아이디어를 재설계한 디지털 제품 패스 프로젝트입니다.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

236 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

내산 디지털 제품 패스 서비스 표지

내산 (Naesan)

Backend CI Frontend CI

공동발명자로 참여한 특허 출원 발명 「블록체인을 기반으로 한 구매 영수증 관리 시스템 및 그 방법」에서 출발해, 제품 정보와 구매 증빙을 하나의 패스로 정리하고 필요한 정보만 공유하거나 새로운 보유자에게 이전할 수 있도록 만든 기록 서비스입니다.

프로젝트 아키텍처

image

프로젝트 배경

내산은 특허 출원 과정에서 탐구한 문제를 개인 프로젝트로 다시 설계하고 구현한 결과물입니다.

특허 명세서의 NFT, SNS 기반 지갑, IPFS, OCR 구성을 그대로 재현하지는 않았습니다. 대신 구매 증빙의 보존, 제한적 공유, 보유 이력과 등록 후 변경 여부 확인이라는 핵심 문제를 JWT 기반 웹 API, 비공개 객체 저장소, Transactional Outbox와 최소 온체인 commitment 구조로 재해석했습니다.

배포 환경 시연

배포 환경 랜딩 화면

내 패스 목록 외부 검증 완료 상세 공개 공유 패스
배포 환경의 내 패스 목록 배포 환경의 외부 검증 완료 패스 배포 환경의 공개 공유 패스

2026-08-07 실환경 시연에서 패스 발급 API는 1.43초에 접수됐고, Sepolia 2 confirmations 확인까지 약 31초가 걸렸습니다. 실제 트랜잭션은 Sepolia Etherscan에서 확인할 수 있습니다.

주요 화면

제품 기록과 패스 발급

등록할 정보 검토 패스 발급 완료
등록할 정보 최종 검토 패스 발급 완료

패스 조회와 제한된 공유

보유자 패스 상세 공개 공유 패스
보유자 패스 상세 공개 공유 패스

화면의 상품 이미지는 서비스 시연을 위해 생성한 샘플 이미지이며 실제 판매 상품이나 운영 데이터가 아닙니다.

구현한 기능

  • JWT access token과 회전 가능한 refresh token을 사용하는 회원가입·로그인·로그아웃
  • 제품 정보, 여섯 방향의 제품 사진과 구매 증빙 등록
  • 증빙 확정 및 패스 발급·목록·상세 조회
  • 공개 범위를 선택할 수 있는 7일 만료 공유 링크
  • 공유 링크 교체·중지와 등록 파일 일치 확인
  • 패스 이전 요청·수락·거절·취소 및 소유 이력 관리
  • 이전 완료 시 기존 공유 링크 자동 폐기
  • 내부 기록과 EVM 기술적 기록 상태 표시
  • Docker Compose 기반 전체 애플리케이션 실행
  • 백엔드·프론트엔드·스마트 컨트랙트·브라우저 테스트

전체 구조

flowchart LR
    U[사용자] --> F[React Frontend]
    F -->|Bearer access token + refresh cookie| B[Spring Boot API]
    B --> DB[(PostgreSQL)]
    B --> S3[(S3 비공개 저장소)]
    B --> O[(Proof Outbox)]
    O --> W[EVM Worker]
    W --> C[ProofCommitmentAnchor]
    P[공개 링크 방문자] --> F
Loading

기술 스택

Backend · Web3

Java, Spring, PostgreSQL, Hibernate, Solidity, Node.js, AWS, Docker, Gradle, Prometheus, GitHub Actions

Frontend

React, TypeScript, Vite, Node.js, CSS, Vitest, Nginx, Docker, GitHub Actions

Web3가 담당하는 범위

내산은 블록체인을 정품 판정 수단으로 표현하지 않습니다.

  • 증빙 원본과 개인정보는 온체인에 저장하지 않습니다.
  • salted bytes32 commitment와 최초 anchor 시점만 기록합니다.
  • 등록 이후 기록의 변경 여부를 확인하는 기술적 근거로 사용합니다.
  • 스마트 컨트랙트는 NFT를 발행하지 않습니다.
  • 외부 기관의 정품 판정이나 법적 소유권을 보증하지 않습니다.

장애 복구 실험과 속도·가스비 측정은 Web3 트러블슈팅 사례에 정리했습니다.

기술적 성과

  • JWT Bearer 인증과 refresh token 회전·폐기를 실제 API와 통합
  • S3 비공개 저장소를 사용하는 증빙 업로드·확정 흐름 구현
  • Transactional Outbox로 데이터베이스 트랜잭션과 EVM 제출 분리
  • RPC 실패, 중복 anchor, 전송 결과 불명확 상태와 confirmation 복구 처리
  • 패스 이전의 동시성 제어와 보유자 변경·이력·공유 폐기의 원자성 보장
  • 제한된 capability token을 사용하는 공개 공유와 파일 일치 확인
  • 반응형 UI, SPA fallback과 Nginx API reverse proxy 구성

저장소 구조

디렉터리 담당 영역
backend API, 도메인, 데이터베이스, 증빙 저장소, Web3, Docker Compose
frontend React UI, JWT·refresh token API 연결, 패스 생성·공유·이전 화면

About

특허 출원 아이디어를 재설계한 디지털 제품 패스 프로젝트입니다.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages