결식아동을 위한 Ethereum 기반 후원 커머스 APP
어미새가 아기새[Bird]에게 먹이[Meal]를 주다.
결식아동 급식비 횡령, 적은 사용처, 적은 사용금액 문제를 해결하기 위해 시작된 프로젝트 입니다.
블록체인 기술을 활용하여 투명한 후원금 관리가 가능합니다.
자체적으로 커머스를 만들어 다양한 사용처를 제공합니다.
주단위로 지원금을 지급하며 주 10만원의 넉넉한 금액을 제공합니다.
NFT를 활용하여 결식아동과 기부자의 소통창구를 마련합니다.
지갑
- 메타마스크를 통해 지갑을 연동할 수 있습니다.
상품 관리
- 상품을 등록/수정/삭제 할 수 있다.
- 등록한 상품의 배송 정보를 입력할 수 있습니다.
지갑
- 이더리움 기반 지갑을 생성할 수 있습니다.
- 개인키를 통해 지갑을 불러올 수 있습니다.
토큰
- ELN 토큰을 결제하여 충전할 수 있습니다.
- NFC 쿠폰 태깅을 통해 토큰을 충전할 수 있습니다.
기부
- 기부를 할 수 있습니다.
- 전체 기부 내역과 아이들이 사용한 기부금 내역을 볼 수 있습니다.
마켓
- 마켓에서 물건을 구매할 수 있습니다.
- 장바구니에 물건을 담고 수량을 조절할 수 있습니다.
- 토큰을 통해 결제를 할 수 있습니다.
- 물건을 구매하면 3%만큼 기부를 할 수 있습니다.
- 구매 확정을 하면 컨트랙트에서 판매자에게 토큰을 전송하게 됩니다.
감사 카드
- 한 달에 10만원 이상 기부할 시 결식아동이 제작한 감사카드를 NFT로 민팅하여 받을 수 있습니다.
결식아동 인증
- 결식아동 카드 OCR 인증을 통해 결식아동임을 인증할 수 있습니다.
기부금 수령
- 일주일에 1번씩 전체 기부금에서 10만 ELN 토큰을 받을 수 있습니다.
마켓
- 일반 사용자와 똑같이 토큰을 이용하여 물건을 구매할 수 있습니다.
감사 카드
- 캔버스를 이용하여 감사카드를 제작할 수 있습니다.
-
로그인 화면
-
지갑 생성 화면
-
엘레나 토큰 충전 화면(NFC 태깅)
-
엘레나 토큰 충전 화면(PG사 결제)
-
장바구니 화면(담기 / 수정 / 삭제)
-
상품 주문 화면
-
기부 화면
-
포토카드 NFT 생성 화면
-
포토카드 NFT 수령 화면
-
판매자 홈 화면
- 판매자 내 상품 보기
- 판매자 주문 목록
- 판매자 주문 상세보기
회원, 마켓,기부 기능이 유기적으로 연결되어있고,
그를 효율적으로 활용하기 위해 ERD를 작성했습니다.
프로젝트에서 사용된 기술들입니다.
Spring boot를 활용해 서버를 구축하고,
Besu를 활용해 프라이빗 블록체인 네트워크를 구축하였습니다.
판매자는 상품 등록을 하면, 상품 컨트랙트를 배포하게 되고
결식 아동, 일반 사용자가 이용하는 기부, 마켓, NFT 관련 기능들은
모두 스마트 컨트랙트와 상호작용 하게 되고, 모든 기록이 남게 됩니다.
블록체인 네트워크에서 정보를 불러오는 속도를 개선하기 위해
모든 히스토리는 백엔드에 동일하게 저장하여
빠르게 히스토리를 불러오도록 처리하였습니다.
- 와이어프레임
- 피그마를 사용하여 제작된 와이어프레임
- API Documentation
- RESTful 서버의 API 문서입니다.
Package | Version | Comment |
---|---|---|
Dagger Hilt | 2.40.5 | 의존성 주입 라이브러리 |
Retrofit | 2.9.0 | HTTP 통신 라이브러리 |
Coroutines | 1.5.1 | 비동기 처리 라이브러리 |
Coroutine Flow | 0.27.2 | 비동기 처리 데이터 스트림 라이브러리 |
Navigation | 2.3.5 | 화면 이동 라이브러리 |
web3.j | 4.8.7 | 스마트 컨트랙트 연결을 위해 사용 |
Glide | 4.11.0 | 이미지 로딩 라이브러리 |
Room | 2.3.0 | SQLite 로컬 DB 라이브러리 |
BootPay | + 최신버전 | PG사 테스트 결제 오픈 API |
Package | Version | Comment |
---|---|---|
vue-router | 3.2.0 | 요청 URL에 따라 브라우저에서 돔을 변경 |
pinia | 2.0.21 | 전역 상태관리를 위해 사용 |
vite | 3.0.9 | |
axios | 0.27.2 | REST API 서버로부터 데이터를 받아오기 위해 사용 |
vuetify | 3.0.0 | UI 구성을 위해 사용 |
web3.js | 1.8.0 | 스마트 컨트랙트 연결을 위해 사용 |
vue3-google-login | 2.0.12 | 구글 Oauth를 위해 사용 |
MetaMask | - | 지갑구현을 위해 사용 |
기술 스택 | Version | Comment |
---|---|---|
OpenJDK | 11 | Java vendor 사용 |
SpringBoot | 2.7.3 | Rest API 웹 애플리케이션 개발 |
Gradle | 7.5 | 프로젝트를 빌드하고 라이브러리를 관리 도구 |
MySQL | 8.0.30 | DB |
JPA | 2.7.3 | 서버와 DB의 연동을 위해 사용 |
JWT | - | 로그인 유저 인증을 위해 토큰 사용 |
Spring Security | 2.7.3 | 손쉬운 보안 관리를 위해 사용 |
Swagger | 2.9.2 | API 문서화를 위해 사용 |
Ubuntu | 20.04 LTS | 서비스 제공을 위해 리눅스 서버 구축 |
Docker | latest | 컨테이너화 된 애플리케이션 관리 |
Jenkins | latest | 자동화 배포 및 빌드 |
Nginx | latest | Vue 클라이언트 웹 서버 사용 |
solidity | Version | Comment |
---|---|---|
solidity | 0.7.0 <0.9.0 | 스마트컨트랙트 작성을 위해 사용 |
web3j | 1.4.1 | 래퍼클래스 작성을 위해 사용 |
ERC20 | openzeppelin 오픈소스 활용 | |
ERC721 | openzeppelin 오픈소스 활용 |
- 최시령 - Infra, Web
- 강태웅 - Android
- 김지수 - Backend, Web
- 배혜연 - Backend, Android
- 심세현 - Android
- 이건희 - SmartContract, Web