Blo-my Blo-my는 Blockchain Army의 약자로 블록체인을 활용한 국방 데이터 유통 프로젝트입니다.
블록체인의 위,변조 불가는 무결성과 책임 추적성이 중요한 분야에서 활용이 용이하다. 국방 분야의 군수, 방산 계약, 공문서 관리 등과 같은 분야에 블록체인을 도입한다면 데이터에 대한 신뢰도가 향상되고, 탈중앙화된 데이터 관리와 개인 키를 통한 암호화로 인해 높은 책임 추적성을 보장할 수 있다.
Blo-my는 블록체인의 이러한 특성들을 국방 데이터에 어떤식으로 활용할 수 있는 지를 보여주는 오픈 소스 프로젝트이다. 현재에는 총기수불, 부식 작전 데이터 다루는 프로젝트지만, Blo-my 데이터 유통의 원리만 활용한다면 다양한 국방데이터를 블록체인에 접목시킬 수 있다. 또, Blo-my의 발전은 다양한 컨트리뷰터들에 의해서 이루어지므로 별도의 국방 예산 없이 발전이 이루어질 수 있다.
- Blo-my
- 📚 목차
- 📖 프로젝트 소개
- 🔌 컴퓨터 구성 / 필수 조건 안내 (Prerequisites)
- 🔧 사용 기술 (Technique)
- 💾 설치 & 시작 안내 (Installation Process & Getting Start)
- 💻 제공 기능 (Service)
- GitHub 폴더 내용
- 👪 팀 정보 (Team Information)
- 🔍 저작권 및 사용권 정보 (Copyleft / End User License)
문제 상황 | 해결 방안 |
---|---|
💾로컬 데이터 - 인트라넷에서 유통되기 전, PC에서 local파일로 총기수불대장이 존재할 때, PC에 오류가 생기면 기존의 모든 데이터가 삭제됨 | ☁️클라우드 - 데이터가 생성되는 즉시 프라이빗 인트라넷에 등록하여 PC문제로 데이터가 삭제되는 상황을 예방 |
😈변조 위험 - 인트라넷이 해킹될 경우 데이터 변조가 쉬움 | 🔗블록체인 - 블록체인을 활용하여 변조 불가능한 데이터 유통 |
📵접근성 - 예하부대는 자신의 상급부대에서 부식이 어떤식으로 유통되고 있는 지 현 상황을 확인하기가 힘듦 | 💻서비스 - 블록체인 네트워크를 활용하여 각 식자재에 대한 유통 과정을 확인할 수 있도록 함 |
- 🔐무결성
- 🔍책임 추적성
- 📂오픈 소스 프로젝트
- ECMAScript 6 지원 브라우저 사용
- 권장: Google Chrome 버젼 77 이상
Docker |
Hyperledger-fabric | nodeJS |
SQLite | CouchDB |
django |
React | TypeScript |
- 하이퍼레저 패브릭이란
- 허가형 프라이빗 블록체인 - 누구나 자유롭게 참여할 수 있는 기존의 블록체인과는 다르게 자체 인증 시스템에 의해 허가된 사용자만이 블록체인 네트워크에 참여할 수 있다.
- 별도의 원장 생성 가능 - 기존의 블록체인은 블록체인 네트워크에 참여한 모든 참여자가 모든 정보에 대한 원장을 가지고 있었다. 하지만 하이퍼레저에서는 채널을 이용해 해당 정보를 공유하고자하는 노드 간에만 별도의 원장을 생성하는 것이 가능하다.
- 왜 하이퍼레저 패브릭인가
- 국방 데이터의 기밀성 - 기존의 블록체인으로는 국방 데이터의 특성인 '기밀성'을 보장할 수 없다. 하이퍼레저는 허가된 사용자만 블록체인 네트워크에 참여할 수 있기때문에 군 외부로의 정보 유출을 방지할 수 있다.
- 국방 데이터의 보안성 - 모든 국방 데이터가 같은 보안 등급을 가진 것은 아니다. 3급 기밀, 2급 기밀 등 정보의 보안 등급에 차이가 있고, 이러한 경우 모든 장병이 같은 장부를 가지게 하는 것이 제한된다. 하이퍼레저에서 제공하는 채널을 사용해 이러한 문제를 쉽게 해결할 수 있다.
- 플랫폼의 완성도 - 자체적인 네트워크를 개발하면 예상치 못한 버그, 네트워크 보안성 문제 등의 문제가 발생할 수 있다. 이미 검증된 오픈소스 프로젝트인 하이퍼레저 패브릭을 사용함으로써 블록체인 네트워크 구조의 완성도를 높일 수 있다.
git clone https://github.com/osamhack2021/CLOUD_WEB_Blo-my_Byzantium.git
Hyperledger-fabric 서버 실행부터 front-end-실행 실행까지 명령어는 start.sh에 함축되어있다. 아래 명령어를 실행하면 별도의 명령어 없이 Blo-my를 설치/실행 할 수 있다.
./start.sh
- 하이퍼레져 도커 이미지 및 바이너리 설치, 새로운 환경일때마다 실행해야함.
curl -sSL https://bit.ly/2ysbOFE | bash -s
- nodejs dependency 설치
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/blomy/javascript
npm install
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/chaincode/blomy/javascript
npm install
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/chaincode/blomyfood/javascript
npm install
- 블록체인 네트워크 실행(총기 채널 자동 실행됨)
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/blomy
. startFabric.sh javascript
- 부식 채널 실행
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/test-network
./networkFood.sh up createChannel -ca -s couchdb
./networkFood.sh deployCC -ccn blomyfood -ccv 1 -cci initLedger -ccl javascript -ccp ../chaincode/blomyfood/javascript
- admin 생성 후 app유저 생성
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/blomy/javascript
node enrollAdmin.js
node registerUser.js
- 새로운 asset 생성
node invoke.js
node invokefood.js
- Hyperledger-fabric rest 서버 실행
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/CLOUD\(BE\)/fabric-samples/blomy/javascript
node rest.js
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/WEB\(BE\)/backend
sudo apt-get install pkg-config
sudo apt-get install libcairo2-dev
pip install -r requirements.txt
pip3 install requests --force-reinstall
pip install lxml
python manage.py runserver
cd /workspaces/CLOUD_WEB_Blo-my_Byzantium/WEB\(FE\)/frontend
yarn
yarn build
yarn start
FE
/workspaces/CLOUD_WEB_Blo-my_Byzantium/WEB(FE)/src/utils/api.ts
baseUrl의 값을 backend url의 실제값으로 변경해준다.
BE
/workspaces/CLOUD_WEB_Blo-my_Byzantium/WEB(BE)/blo_web/settings.py
frontend url을 CORS_ALLOWED_ORIGINS에 추가한다.
데이터 조회 | 데이터 생성 | 최종 승인 | |
---|---|---|---|
용사 | ✔️ | ✔️ | ❌ |
간부 | ✔️ | ✔️ | ✔️ |
Blo-my에서는 용사와 간부로 유저 계층을 나누어 서비스를 제공한다. 계층별로 제공되는 서비스는 위와 같다.
▲총기 검색 페이지 | ▲총기 업데이트 | ▲총기 목록 조회 |
▲부식 작전 페이지 | ▲부식 작전 내역 검색 | ▲부식 작전 목록 조회 |
▲간부 권한의 데이터 승인 페이지 |
▲네트워크 모니터링 | ▲Hyperledger explorer | ▲CouchDB 데이터 확인 |
hyperledger-fabric을 이용한 블록체인 네트워크
hyperledger-fabric explorer
WEB back-end
WEB front-end
readme.md 작성에 필요한 이미지 파일들과 발표자료
name | role | GitHub | Division | Rank |
---|---|---|---|---|
박한성 | Hyperledger-fabric | 육군 | 一² 일병 | |
송문경 | Front-end | 육군 | 一³ 상병 | |
오동재 | leader | 육군 | 一³ 상병 | |
정현구 | Hyperledger-fabric | 육군 | 一⁴ 병장 | |
홍범순 | Back-end | 육군 | 一³ 상병 |
- Apache-2.0(IBM corp all rights reserved)