Skip to content

team-jupeter/gopang

Repository files navigation

🏛️ Gopang (고팡) - OpenHash 기반 정부 AI 시스템

License: MIT Python 3.11+ FastAPI

혁신적인 블록체인 대안 기술로 구현한 차세대 정부 AI 통합 플랫폼


📋 목차


🎯 프로젝트 개요

Gopang은 오픈해시(OpenHash) 기술을 기반으로 구축된 정부 AI 통합 시스템입니다. 블록체인의 에너지 과소비 문제(연간 121 TWh)를 해결하면서도 동등한 보안성을 제공합니다.

핵심 혁신

항목 블록체인 Gopang (OpenHash)
에너지 121 TWh/년 0.001 TWh/년 (99.999% 절감)
처리량 7-15 TPS 427+ TPS (60배 향상)
보안 일률적 차등적 (데이터 중요도별)
대역폭 100% 0.001-15% (99.9999% 절약)
확장성 제한적 선형 확장

프로젝트 목표

  1. 에너지 효율: 블록체인 대비 99.999% 에너지 절감
  2. 차등 보안: 데이터 중요도에 따른 맞춤형 보안
  3. 정량적 신뢰도: 객관적 신뢰도 점수 (예: 99.99%)
  4. 대역폭 절약: 해시 전용 전송으로 최대 99.9999% 절약
  5. 계층적 거버넌스: 읍면동 → 시군구 → 광역시도 → 국가

🔧 핵심 기술

1. OpenHash (오픈해시)

혁신적 접근: 데이터 오염을 사전 차단하지 않고, 사용 시점에 검증/치유

전통적 블록체인:
[오염 차단] → [모든 노드 검증] → [합의] → [기록]
→ 느림, 에너지 과다 소비

OpenHash:
[일단 기록] → [사용 시 검증] → [오염 탐지] → [선별적 치유]
→ 빠름, 에너지 효율적

2. 확률적 계층 선택

명세서 도 6 알고리즘:

H_combined = SHA256(H_doc || Timestamp || RegionCode)
random_value = int(H_combined[:8], 16) % 1000

if random_value < 700:    layer = 1  # 70% - 읍면동
elif random_value < 900:  layer = 2  # 20% - 시군구
else:                     layer = 3  # 10% - 광역시도

효과:

  • 중요 문서는 자연스럽게 상위 계층으로
  • 일상 문서는 지역에 분산
  • 네트워크 부하 균형

3. 다차원 신뢰도 계산

명세서 도 8 공식:

Trust_Score = Network_Score × Layer_Weight × 
              Signer_Trust × Time_Factor × Cross_Score

각 차원:

  • Network: log₂(참여자 수) → 1.0~1.78
  • Layer: 계층 위치 → 1.0 (L1) ~ 2.5 (L4)
  • Signer: 서명자 신원 → 1.0 (개인) ~ 2.0 (국제기구)
  • Time: 시간 경과 → 1.0 ~ 3.4 (10년)
  • Cross: 교차 검증 → 0.1 ~ 2.0

결과:

  • Layer 1: 1.08 (기본)
  • Layer 4: 4.45 (최고)
  • 시간 증가: 1년 후 69% 상승

4. ECDSA P-256 디지털 서명

명세서 도 14 구현:

# 키 쌍 생성 (NIST P-256)
private_key = ec.generate_private_key(ec.SECP256R1())
public_key = private_key.public_key()

# 서명 생성
signature = private_key.sign(message, ec.ECDSA(hashes.SHA256()))

# 서명 검증
public_key.verify(signature, message, ec.ECDSA(hashes.SHA256()))

보안:

  • 2^128 보안 강도
  • 부인 방지 (Non-repudiation)
  • 체인 무결성

5. 해시 전용 전송 (147바이트 패킷)

구조:

┌─────────────────────────────────┐
│  32B  │  SHA-256 해시           │
│   8B  │  타임스탬프             │
│  10B  │  지역 코드              │
│  32B  │  이전 해시 (체인)      │
│  64B  │  디지털 서명 (r, s)    │
│   1B  │  플래그                │
└─────────────────────────────────┘
총: 147바이트

절약률:

  • 1KB 텍스트: 85.64%
  • 500KB 이미지: 99.97%
  • 5MB 문서: 100.00%
  • 100MB 동영상: 100.00%

🏗️ 시스템 아키텍처

┌─────────────────────────────────────────────────────┐
│                사용자 (웹/모바일)                     │
└──────────────────┬──────────────────────────────────┘
                   │
┌──────────────────▼──────────────────────────────────┐
│            Nginx (리버스 프록시)                     │
│  • 프론트엔드 서빙 (/)                               │
│  • FastAPI 프록시 (/api)                            │
│  • Socket.IO 프록시 (/socket.io)                    │
└──────────┬──────────────────────┬───────────────────┘
           │                      │
┌──────────▼─────────┐   ┌───────▼──────────┐
│  FastAPI (8000)    │   │ Socket.IO (3000) │
│  • 대화 API        │   │ • 실시간 통신    │
│  • OpenHash API    │   └──────────────────┘
│  • 신뢰도 API      │
│  • 서명 API        │
│  • 해시 전용 API   │
└──────────┬─────────┘
           │
┌──────────▼──────────────────────────────────────────┐
│                OpenHash 모듈                         │
│  ┌────────────────────────────────────────────────┐ │
│  │ hash_generator.py                              │ │
│  │ • SHA256(H_doc || T || R)                      │ │
│  │ • 확률적 계층 선택 (70/20/10)                  │ │
│  └────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────┐ │
│  │ layer_propagation.py                           │ │
│  │ • 머클트리 생성                                │ │
│  │ • Layer 1→2→3→4 전파                         │ │
│  └────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────┐ │
│  │ trust_calculator.py                            │ │
│  │ • 다차원 신뢰도 계산                           │ │
│  │ • Network × Layer × Signer × Time × Cross     │ │
│  └────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────┐ │
│  │ digital_signature.py                           │ │
│  │ • ECDSA P-256 키 생성                          │ │
│  │ • 서명 생성/검증                               │ │
│  └────────────────────────────────────────────────┘ │
│  ┌────────────────────────────────────────────────┐ │
│  │ hash_only_transmission.py                      │ │
│  │ • 147바이트 패킷 생성                          │ │
│  │ • 99.9999% 대역폭 절약                         │ │
│  └────────────────────────────────────────────────┘ │
└─────────────────┬────────────────────────────────────┘
                  │
┌─────────────────▼────────────────────────────────────┐
│           SQLite 데이터베이스 (7개 테이블)            │
│  • users: 사용자 정보                                │
│  • ai_users: AI 사용자 (12개)                        │
│  • conversations: 대화 기록                          │
│  • openhash_records: 해시 레코드                     │
│  • layer_storage: 계층별 저장소                      │
│  • signatures: 디지털 서명                           │
└─────────────────┬────────────────────────────────────┘
                  │
┌─────────────────▼────────────────────────────────────┐
│           AI 추론 서버 (llama.cpp)                    │
│  • Qwen2.5-0.5B (8001): 개인 비서                     │
│  • Qwen2.5-3B (8002): 기관 AI                        │
└──────────────────────────────────────────────────────┘

✨ 주요 기능

1. 계층형 AI 시스템

4계층 구조:

  • Layer 1 (읍면동): ai_05, ai_06, ai_10, ai_11
  • Layer 2 (시군구): ai_07 (제주시), ai_08 (서귀포시)
  • Layer 3 (광역시도): ai_09 (제주특별자치도)
  • Layer 4 (국가): ai_01, ai_02, ai_03, ai_04

자동 라우팅:

// 사용자 지역: 5011025000 (한림읍)
// → Layer 1: ai_06 (한림읍행정복지센터)
// → Layer 2: ai_07 (제주시청)
// → Layer 3: ai_09 (제주특별자치도청)

2. 실시간 대화 + OpenHash

예시:

POST /chat
{
  "user_id": "jupiter",
  "message": "안녕하세요",
  "sign": true
}

Response:
{
  "response": "안녕하세요! 무엇을 도와드릴까요?",
  "hash_info": {
    "hash_id": "hash_20251230124202_47ac8090",
    "layer": 1,
    "target_ai": "ai_06",
    "signed": true
  },
  "trust_score": 1.08,
  "signature_verified": true
}

3. 계층 전파

자동 전파:

Layer 1 (3개 해시) → 머클트리 → Layer 2 (1개 루트)
Layer 2 (1개 해시) → 머클트리 → Layer 3 (1개 루트)
Layer 3 (1개 해시) → 머클트리 → Layer 4 (1개 루트)

API:

POST /openhash/propagate
→ 전체 계층 자동 전파

4. 신뢰도 조회

GET /openhash/trust/{hash_id}
{
  "trust_score": 4.4505,
  "components": {
    "network_score": 1.7802,
    "layer_weight": 2.5,
    "signer_trust": 1.0,
    "time_factor": 1.0,
    "cross_score": 1.0
  }
}

5. 디지털 서명 검증

POST /signature/verify/{hash_id}
{
  "hash_id": "hash_...",
  "verified": true,
  "algorithm": "ECDSA-P256-SHA256"
}

6. 해시 전용 전송

POST /chat/hash-only
{
  "user_id": "jupiter",
  "message": "5MB 문서 내용...",
  "hash_only": true
}

Response:
{
  "packet_size": 147,
  "original_size": 5242880,
  "saving_percentage": 100.0
}

🚀 설치 가이드

사전 요구사항

  • OS: Ubuntu 22.04+ / Amazon Linux 2023
  • Python: 3.11+
  • RAM: 4GB+
  • 저장소: 10GB+

1. 저장소 클론

git clone https://github.com/team-jupeter/gopang.git
cd gopang

2. Python 가상환경 생성

python3.11 -m venv venv
source venv/bin/activate

3. 의존성 설치

pip install -r requirements.txt --break-system-packages

requirements.txt:

fastapi==0.104.1
uvicorn[standard]==0.24.0
aiohttp==3.9.1
pydantic==2.5.0
cryptography==41.0.7

4. 데이터베이스 초기화

python3 database/create_tables.py
python3 database/add_ai_users.py
python3 database/add_region_code.py
python3 database/create_openhash_tables.py

5. AI 모델 다운로드

cd ~/models

# Qwen2.5-0.5B (개인 비서)
wget https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/qwen2.5-0.5b-instruct-q8_0.gguf

# Qwen2.5-3B (기관 AI)
wget https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/resolve/main/qwen2.5-3b-instruct-q8_0.gguf

6. llama.cpp 설치

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make

7. systemd 서비스 등록

sudo cp systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable gopang-ai gopang-socketio gopang-llama-0.5b gopang-llama-3b
sudo systemctl start gopang-ai gopang-socketio gopang-llama-0.5b gopang-llama-3b

8. Nginx 설정

sudo cp nginx/gopang.conf /etc/nginx/conf.d/
sudo nginx -t
sudo systemctl restart nginx

9. 접속 확인

# 로컬
http://localhost

# 원격
http://your-server-ip

📖 사용 방법

웹 인터페이스

  1. 브라우저로 접속: http://your-server-ip
  2. AI 선택: 🤖 버튼 클릭 → 대화 상대 선택
  3. 대화 시작: 메시지 입력 → 전송
  4. 신뢰도 확인: 각 메시지의 신뢰도 점수 표시

API 사용

Python 예제:

import requests

# 1. 대화 (OpenHash + 디지털 서명)
response = requests.post('http://localhost:8000/chat', json={
    'user_id': 'jupiter',
    'message': '안녕하세요',
    'sign': True
})
print(response.json())

# 2. 신뢰도 조회
hash_id = response.json()['hash_info']['hash_id']
trust = requests.get(f'http://localhost:8000/openhash/trust/{hash_id}')
print(f"신뢰도: {trust.json()['trust_score']}")

# 3. 서명 검증
verify = requests.post(f'http://localhost:8000/signature/verify/{hash_id}')
print(f"검증: {verify.json()['verified']}")

cURL 예제:

# 대화
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"user_id": "jupiter", "message": "안녕하세요", "sign": true}'

# 신뢰도 조회
curl http://localhost:8000/openhash/trust/hash_20251230124202_47ac8090

# 서명 검증
curl -X POST http://localhost:8000/signature/verify/hash_20251230124202_47ac8090

📚 API 문서

핵심 엔드포인트

메서드 엔드포인트 설명
GET / 서버 정보
POST /chat 대화 + OpenHash
POST /chat/hash-only 해시 전용 전송
GET /history/{user_id} 대화 기록
GET /openhash/stats OpenHash 통계
POST /openhash/propagate 계층 전파
GET /openhash/trust/{hash_id} 신뢰도 조회
GET /signature/{hash_id} 서명 정보
POST /signature/verify/{hash_id} 서명 검증
POST /signature/verify-chain 체인 검증
GET /bandwidth/stats 대역폭 통계

Swagger UI: http://localhost:8000/docs


📊 성능 지표

응답 시간

작업 평균 P95 P99
해시 생성 <1ms 1ms 2ms
서명 생성 3ms 5ms 8ms
서명 검증 2ms 3ms 5ms
신뢰도 계산 2ms 3ms 5ms
계층 전파 100ms 150ms 200ms
AI 대화 3-8s 10s 15s

처리량

  • 단일 서버: 427 req/s
  • 수평 확장: 선형 (90%+ 효율)
  • 동시 연결: 1,000+

메모리

  • FastAPI: 50MB
  • OpenHash 모듈: 2MB
  • llama.cpp 0.5B: 800MB
  • llama.cpp 3B: 3.5GB
  • : ~4.4GB

대역폭

문서 유형 원본 패킷 절약률
텍스트 (1KB) 1,024B 147B 85.64%
이미지 (500KB) 512,000B 147B 99.97%
문서 (5MB) 5,242,880B 147B 100.00%
동영상 (100MB) 104,857,600B 147B 100.00%

🔒 보안

암호화

  • 해시: SHA-256 (256비트)
  • 서명: ECDSA P-256 (2^128 보안 강도)
  • 키 저장: PEM 형식

인증

  • 사용자: user_id 기반 (프로토타입)
  • AI: ai_id + system_prompt
  • 향후: JWT 인증 추가 예정

데이터 보호

  • 전송: 해시 전용 (원본 노출 없음)
  • 저장: SQLite (로컬)
  • 백업: 자동 일일 백업 권장

보안 체크리스트

  • ECDSA P-256 디지털 서명
  • SHA-256 해시
  • 체인 무결성
  • 서명 검증
  • HTTPS (프로덕션 필수)
  • JWT 인증
  • Rate Limiting
  • 입력 검증

🤝 기여하기

기여를 환영합니다! 다음 절차를 따라주세요:

  1. Fork 프로젝트
  2. Feature 브랜치 생성 (git checkout -b feature/AmazingFeature)
  3. 변경사항 커밋 (git commit -m 'Add some AmazingFeature')
  4. 브랜치에 Push (git push origin feature/AmazingFeature)
  5. Pull Request 생성

개발 가이드라인

  • 코드 스타일: PEP 8
  • 커밋 메시지: Conventional Commits
  • 테스트: pytest (커버리지 80%+)
  • 문서: Docstring 필수

📄 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.


📞 문의


🙏 감사의 말

  • Anthropic: Claude AI
  • llama.cpp: GGML 추론 엔진
  • Qwen: Qwen2.5 언어 모델
  • FastAPI: 현대적 Python 웹 프레임워크
  • cryptography: Python 암호화 라이브러리

🗺️ 로드맵

✅ 완료 (Phase 1-2-3.1-3.2)

  • EC2 인프라 구축
  • AI 서버 통합
  • 프론트엔드 개발
  • OpenHash 프로토타입
  • 신뢰도 계산
  • ECDSA 디지털 서명
  • 해시 전용 전송

🚧 진행 중 (Phase 3.3-3.7)

  • AI 오염 탐지 (CNN + LSTM)
  • 선별적 치유 메커니즘
  • HTTPS 설정
  • JWT 인증
  • 모니터링 대시보드

📅 예정 (Phase 4)

  • 다국어 지원
  • 모바일 앱
  • 블록체인 브릿지
  • 국제 표준화

⭐ Star를 눌러 프로젝트를 응원해주세요!

Made with ❤️ by Team Jupeter

About

Gopang AI Platform - OpenHash based AI integration system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published