Skip to content

PH5555/zkwallet-custody-server

Repository files navigation

zkWallet + Custody

개발기간 : 2025.06 ~ 2025.07

📖 About The Project

이 프로젝트는 법인이 커스터디 업체를 통해 가상자산을 거래할 때, 영지식증명(Zero-Knowledge Proof)을 활용해 거래의 유효성을 증명하면서도 거래 당사자와 금액 등의 민감한 정보를 보호할 수 있도록 설계되었습니다. zkWallet을 기반으로 하여 송신자, 수신자, 금액을 숨긴 채로 거래가 유효하다는 사실만을 증명할 수 있습니다. 법인 계정 생성, wallet 생성, 트랜잭션 요청 등 법인의 거래 흐름 전반을 지원하며, 프라이버시를 해치지 않으면서도 감사 가능한 기능도 제공합니다.

🚀 시작 가이드

start with docker

$ docker run -d --memory=2g --name zkwallet-node -p 8545:8545 dongridong/zkwallet-hardhat-node

$ docker run --rm --network host dongridong/zkwallet-hardhat-node sh -c “npx hardhat run zkwallet/scripts/deploy.ts --network localhost”

$ docker run -d --name zkwallet-mysql -e MYSQL_ROOT_PASSWORD=zkwallet -e MYSQL_DATABASE=zkwallet -p 3306:3306 mysql:8.0

$ docker run -d --name zkwallet-backend --link zkwallet-mysql:mysql -e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/zkwallet?serverTimezone=Asia/Seoul" -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=zkwallet -p 8080:8080 dongridong/zkwallet-server

🎉 기술 스택

Backend

  • Java 21
  • Spring Boot 3.5.0
  • Spring Security + JWT
  • Spring Data JPA
  • MySQL 8.0
  • Swagger
  • JUnit 5
  • Web3j

DevOps

  • Docker

🔥 Trouble Shooting

프론트엔드의 스마트 컨트랙트 실행 결과를 백엔드와 연동하여 처리하는 시스템 구축

  • 문제: 프론트엔드에서 스마트 컨트랙트 실행 후 백엔드에 결과를 알리기 위해 API를 호출하는 구조에서는, 네트워크 오류나 사용자 종료 등의 이유로 API 호출이 누락될 수 있습니다. 이 경우 트랜잭션이 중복 처리되거나 상태가 불일치하는 문제가 발생할 수 있습니다.

  • 해결: 백엔드에서 블록체인 노드의 이벤트를 구독하여, 특정 스마트 컨트랙트 이벤트가 감지되었을 때만 후처리를 수행하도록 변경하였습니다.

  • 성과: 시스템 안정성과 신뢰성 향상, 프론트엔드-백엔드 간 연동 구조 단순화

https://velog.io/@lmkn5342/Flowable-%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%B2%98%EB%A6%AC

About

법인 가상자산 비밀거래 솔루션

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published