혁신적인 블록체인 대안 기술로 구현한 차세대 정부 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% 절약) |
| 확장성 | 제한적 | 선형 확장 |
- ✅ 에너지 효율: 블록체인 대비 99.999% 에너지 절감
- ✅ 차등 보안: 데이터 중요도에 따른 맞춤형 보안
- ✅ 정량적 신뢰도: 객관적 신뢰도 점수 (예: 99.99%)
- ✅ 대역폭 절약: 해시 전용 전송으로 최대 99.9999% 절약
- ✅ 계층적 거버넌스: 읍면동 → 시군구 → 광역시도 → 국가
혁신적 접근: 데이터 오염을 사전 차단하지 않고, 사용 시점에 검증/치유
전통적 블록체인:
[오염 차단] → [모든 노드 검증] → [합의] → [기록]
→ 느림, 에너지 과다 소비
OpenHash:
[일단 기록] → [사용 시 검증] → [오염 탐지] → [선별적 치유]
→ 빠름, 에너지 효율적
명세서 도 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% - 광역시도효과:
- 중요 문서는 자연스럽게 상위 계층으로
- 일상 문서는 지역에 분산
- 네트워크 부하 균형
명세서 도 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% 상승
명세서 도 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)
- 체인 무결성
구조:
┌─────────────────────────────────┐
│ 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 │
└──────────────────────────────────────────────────────┘
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 (제주특별자치도청)예시:
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
}자동 전파:
Layer 1 (3개 해시) → 머클트리 → Layer 2 (1개 루트)
Layer 2 (1개 해시) → 머클트리 → Layer 3 (1개 루트)
Layer 3 (1개 해시) → 머클트리 → Layer 4 (1개 루트)
API:
POST /openhash/propagate
→ 전체 계층 자동 전파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
}
}POST /signature/verify/{hash_id}
{
"hash_id": "hash_...",
"verified": true,
"algorithm": "ECDSA-P256-SHA256"
}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+
git clone https://github.com/team-jupeter/gopang.git
cd gopangpython3.11 -m venv venv
source venv/bin/activatepip install -r requirements.txt --break-system-packagesrequirements.txt:
fastapi==0.104.1
uvicorn[standard]==0.24.0
aiohttp==3.9.1
pydantic==2.5.0
cryptography==41.0.7
python3 database/create_tables.py
python3 database/add_ai_users.py
python3 database/add_region_code.py
python3 database/create_openhash_tables.pycd ~/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.ggufgit clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
makesudo 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-3bsudo cp nginx/gopang.conf /etc/nginx/conf.d/
sudo nginx -t
sudo systemctl restart nginx# 로컬
http://localhost
# 원격
http://your-server-ip- 브라우저로 접속:
http://your-server-ip - AI 선택: 🤖 버튼 클릭 → 대화 상대 선택
- 대화 시작: 메시지 입력 → 전송
- 신뢰도 확인: 각 메시지의 신뢰도 점수 표시
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| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
| 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
- 입력 검증
기여를 환영합니다! 다음 절차를 따라주세요:
- Fork 프로젝트
- Feature 브랜치 생성 (
git checkout -b feature/AmazingFeature) - 변경사항 커밋 (
git commit -m 'Add some AmazingFeature') - 브랜치에 Push (
git push origin feature/AmazingFeature) - Pull Request 생성
- 코드 스타일: PEP 8
- 커밋 메시지: Conventional Commits
- 테스트: pytest (커버리지 80%+)
- 문서: Docstring 필수
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
- 개발자: Team Jupeter
- GitHub: https://github.com/team-jupeter/gopang
- 이슈: https://github.com/team-jupeter/gopang/issues
- Anthropic: Claude AI
- llama.cpp: GGML 추론 엔진
- Qwen: Qwen2.5 언어 모델
- FastAPI: 현대적 Python 웹 프레임워크
- cryptography: Python 암호화 라이브러리
- EC2 인프라 구축
- AI 서버 통합
- 프론트엔드 개발
- OpenHash 프로토타입
- 신뢰도 계산
- ECDSA 디지털 서명
- 해시 전용 전송
- AI 오염 탐지 (CNN + LSTM)
- 선별적 치유 메커니즘
- HTTPS 설정
- JWT 인증
- 모니터링 대시보드
- 다국어 지원
- 모바일 앱
- 블록체인 브릿지
- 국제 표준화
⭐ Star를 눌러 프로젝트를 응원해주세요!
Made with ❤️ by Team Jupeter