12. 외부 의존성

라이브러리

용도

라이선스

비고

OpenSSL 3.x

RSA, SHA, HMAC, 난수

Apache 2.0

EVP API

liburing

io_uring 시스템 인터페이스

MIT / LGPL 2.1

Linux 5.19+

libevent

이벤트 루프, 신호-슬롯, HTTP 서버, OS 시그널, 타이머

BSD 3-Clause

Qt/Boost 전면 대체

DB

영구 KV 저장소

BSD 3-Clause

Bloom filter

jsoncpp

JSON 파싱

MIT

fmt

포맷 출력

MIT

zlib

압축/해제

zlib License

libcurl

HTTP 클라이언트

MIT/X inspired

FCM 알림용

12.1 라이선스 독립성 — 깨끗한 의존성 구조

블록체인 프로젝트에서 라이선스 문제는 간과하기 쉽지만, 상용화 단계에서 치명적인 장벽이 된다. 실제로 적지 않은 오픈소스 블록체인 프로젝트가 GPL, AGPL, SSPL 등 전염성(copyleft) 라이선스를 가진 라이브러리를 무분별하게 끌어다 쓰면서 라이선스 누더기가 되어 있다. 이 경우 프로젝트 전체가 해당 라이선스 조건에 종속되며, 상용 배포, 독점 라이선스 전환, 기술 라이선싱이 법적으로 불가능하거나 극도로 복잡해진다.

UBMS의 외부 의존성은 전부 허용적 라이선스(permissive license)로 구성:

Apache 2.0       상용 이용 자유, 특허 허가 포함
BSD 3-Clause      상용 이용 자유, 재배포 시 저작권 고지만 필요
MIT               사실상 무제한 사용
zlib License      거의 무제한, 출처 허위 표시만 금지

이 구성이 의미하는 것:

  • 상용 배포 자유 — 소스 공개 의무 없이 바이너리 배포 가능

  • 독점 라이선스 전환 가능 — 프로젝트 전체를 독점 소프트웨어로 전환 가능

  • 기술 라이선싱 자유 — 특허 기술(격자 라우팅 등)을 제3자에게 라이선싱할 때 의존성 라이선스가 장애가 되지 않음

  • 포크 위험 최소화 — GPL 전염에 의한 강제 소스 공개 위험 없다

특히 주목할 점은 Qt(LGPL/GPL/상용)와 Boost(BSL-1.0)를 의존성에서 완전히 제거한 것. Qt는 LGPL 조건에서 동적 링킹 의무와 사용자 재링크 보장 등 까다로운 조건이 붙고, 상용 라이선스는 연간 수천 달러의 비용이 발생. UBMS는 libevent(BSD) 하나로 Qt의 시그널/슬롯과 이벤트 루프를 대체함으로써 이 라이선스 부담을 원천적으로 회피했다.

9개 외부 의존성 전부가 허용적 라이선스라는 것은 우연이 아니라 의도적 설계. 이는 프로젝트의 법적 자유도를 최대화하며, 투자자나 파트너에게 라이선스 실사(due diligence) 부담이 없는 깨끗한 코드베이스를 제시할 수 있음을 의미.

12.2 범용 라이브러리로의 성장 가능성

UBMS 프로젝트는 블록체인 노드를 만드는 과정에서 부산물로 독립적 가치를 가진 범용 라이브러리를 여럿 생산했다. 이 라이브러리들은 블록체인과 무관한 일반 서버 애플리케이션에도 그대로 사용할 수 있으며, ubmsnotify(독립 실행 FCM 푸시 알림 서버)가 이를 실증.

독립 배포 가능한 라이브러리:

libubmsio_uring.so   io_uring 기반 고성능 네트워크 서버/클라이언트 프레임워크
                     Server, Client, WebSocket, WebSocketClient, SafeCurl 포함
                     채팅 서버, IoT 게이트웨이, 게임 서버 등에 즉시 적용 가능

libubmsevent.so      libevent 기반 이벤트 엔진 + 비동기 신호-슬롯 + OS 시그널 통합
                     Qt/Boost 없이 이벤트 구동 애플리케이션 구축 가능

libubmstype.so       독자 직렬화 엔진 (describe() 하나로 JSON + 바이너리 자동 생성)
                     protobuf/flatbuffers 대체, 외부 코드 생성 도구 불필요

libubmshttp.so       REST API + 리버스 프록시 + 리다이렉트 + 레이트 리미팅
                     nginx 없이 애플리케이션 레벨에서 HTTP 서비스 구축 가능

libubmscrypto.so     RSA-4096, SHA-256, RIPEMD-160, Base58, HMAC, zlib 통합
                     OpenSSL EVP API 래퍼로 암호화 기능 간편 사용

이 라이브러리들의 라이선스 의존성이 전부 허용적(permissive)이므로, Ubuntu/Debian 패키지(apt)로 배포하거나, vcpkg/Conan 같은 C++ 패키지 매니저에 등록하는 데 법적 장벽이 전혀 없다.

전망:

  • C++ 서버 개발 생태계 기여 — io_uring + libevent 조합의 프로덕션급 프레임워크는 오픈소스 시장에서 희소

  • 프로젝트 브랜드 확장 — 블록체인 프로젝트가 범용 인프라 도구를 배포하면, 개발자 커뮤니티 신뢰와 프로젝트 인지도가 동시에 상승

  • 기술 수익화 경로 — 라이브러리 자체의 상용 지원/컨설팅, 또는 라이브러리를 매개로 한 기술 파트너십 가능

  • 인재 유입 — 범용 오픈소스 라이브러리는 외부 기여자를 유인하는 가장 효과적인 수단이며, 이는 블록체인 본체의 품질 향상으로 순환


13. 블록 검증 흐름

UBMS::Chain::addBlock(target)
  |
  +--> UBMS::Chain::m_mutex.lock()
  |
  +--> UBMS::InspectManager::validateBlock()
  |     +--> 해시 검증
  |     +--> 이전 해시 검증
  |     +--> 머클루트 검증
  |     +--> 난이도 검증
  |     +--> 타임스탬프 검증
  |
  +--> UBMS::InspectManager::validateBlockTxSignatures()
  |     +--> 각 TX 서명 검증
  |
  +--> UBMS::InspectManager::validateBlockInputsNotSpent()
  |     +--> 입력 UTXO 소비 여부 검사
  |
  +--> UBMS::CacheManager::addBlock()
  |     +--> makeDelta() (UTXO 변경분 추출)
  |     +--> volatile.pushBack(delta)
  |     +--> confirmed.updateNodeInfo()
  |     +--> confirmed.addReferral()
  |     +--> 오버플로우 시 DB 커밋
  |
  +--> BlockMetaFullCache 업데이트
  +--> BlockCurrent 교체
  +--> BlockPool에서 제거
  |
  +--> Chain::m_mutex.unlock()

14. 결론

UBMS(UTXO-Based Metadata Smart Chain)는 100% 독자 개발된 블록체인 풀노드 시스템으로, "끊임없는 발전: 정지되지 않는 블록체인"을 지향. 수백 개의 헤더/구현 파일, 11개 라이브러리 모듈 + 데몬 + 독립 알림 서버로 구성되며, 외부 프레임워크(Qt, Boost) 없이 표준 C++과 최소한의 허용적 라이선스 라이브러리만으로 전체를 구축했다.

이하는 본 보고서에서 분석한 전체 기술 영역의 요약.

합의 설계 (3항, 5항)

  • PoW + PoS + PoB 삼중 합의로 보안성과 공정성을 동시에 달성

  • 비콘 체인 없는 완전 분산형 합의 (최소 9노드)

  • Shifted Sigmoid 알고리즘으로 대형 스테이커 독식 방지: R(x)=11+e−zR(x)=1+ez1​

  • 2단계 반감기 스케줄 (초반 540블록 급감소 + 후반 210,240블록 4년 주기), 총발행량 약 21,012,500 UBMS

  • InspectManager 기반 블록 검증 파이프라인: 해시, 이전 해시, 머클루트, 난이도, 타임스탬프, TX 서명, UTXO 소비 여부를 순차 검증 (13항)

경제 설계 (3항)

  • 채굴자 5% + 스테이커 95% 온체인 자동 분배

  • PoB 5단계 유통인 수수료 분배 (60/20/10/7/3%)로 네트워크 성장 인센티브

  • 동적 수수료: F=1,000×v/10,000×CFF=1,000×v/10,000​×CF

  • 소각 메커니즘: PoS 분배율=max⁡(0.01,min⁡(1,N/10,000))PoS 분배율=max(0.01,min(1,N/10,000))으로 공급 자동 조절

  • UTXO 기반 메타데이터 스마트 컨트랙트 (VM 없이 네이티브 C++ 실행, TTL/조건부 실행 지원)

네트워크 설계 — PSAN (4항, 6.5항)

  • 역할 다형성 자율 조정 네트워크(PSAN)로 메시지 플러딩 방지

  • 결정론적 2D 격자 + 아핀 편향 3경로 라우팅으로 전통 가십 대비 1/1000 대역 절감 (특허 기술)

  • 지향성 가십: 경로 전파 336 vs 전통 가십 399,000 (N=10,000)

  • log⁡2(N)log2​(N) 기반 BP 자동 산출: R=max⁡(3,⌊log⁡2(N)/2⌋×2+1)R=max(3,⌊log2​(N)/2⌋×2+1), V=max⁡(5,⌊log⁡2(N)/1.2⌋×2+1)V=max(5,⌊log2​(N)/1.2⌋×2+1)

  • 독자 DHT(아웃바운드 전용, SHA-256 XOR 거리): Kademlia와 이름만 같을 뿐 근본적으로 다른 독자 설계

  • 토폴로지 3초마다 재계산으로 네트워크 적응성

캐시 및 데이터 설계 (3항, 10항, 11항)

  • 3계층 캐시(VolatileCache + ConfirmedCache + DB) + TX풀을 단일 잠금로 통합하여 원자적 상태 검사 보장

  • 블록차분으로 변경분만 격리하여 롤백이 O(1) (차분 popBack 한 번)

  • 확정 데이터 커밋은 10블록마다 일괄 처리로 DB 쓰기 증폭 최소화

  • owner/miner/txaddr 3종 인덱스로 주소별 조회 최적화

  • txid 타임스탬프 prefix로 별도 시간 인덱스 없이 최신순 조회 가능

  • UTXO 모델로 잔액 계산이 명확하고 검증이 용이

기반 라이브러리 (6항)

  • io_uring (libubmsio_uring.so) — Multishot Accept/Recv, Zero-Copy Send, Provided Buffer Ring, Fixed FD, Batch Submit, Backpressure 제어. 세대 번호(gen)로 stale CQE 안전 무시

  • 이벤트 아키텍처 (libubmsevent.so) — libevent 하나로 Qt 시그널/슬롯, Boost.Asio 이벤트 루프, Boost.Signals2 옵저버 패턴을 전면 대체. event_new + timeval{0,0} 즉시 비동기 디스패치, COW 슬롯 스냅샷, 3-상태 CAS(Alive/Marked/Cleaning) 수명 관리

  • HTTP 서버 (libubmshttp.so) — Router(메서드+URI 라우팅) + Forwarder(리버스 프록시, ROUNDROBIN) + Redirector(301/307/308) + Abuse(LRU 레이트 리미팅). nginx 없이 애플리케이션 레벨 HTTP 서비스 구축

  • 직렬화 엔진 (libubmstype.so) — describe() 하나로 JSON + 리틀엔디안 바이너리 이중 포맷 자동 생성. 벡터 크기 상한, 버퍼 경계 검사, enum fallback 등 안전 역직렬화 설계

  • 암호화 (libubmscrypto.so) — RSA-4096, SHA-256, RIPEMD-160(독립 구현), Base58Check, AES-GCM, HMAC-SHA256, zlib(Zip Bomb 방어 64MB)

멀티스레드 안전성 (7항)

  • 9개 컴포넌트별 잠금 전략 체계화: 공유 잠금, 원자적 공유 포인터 + COW, 배타적 잠금 직렬화

  • TOCTOU 회피: checkDoubleSpendWithPool 등 원자적 검사 함수 6종으로 이중지불을 구조적으로 차단

  • TX풀 4단 충돌 검사: TX 내부 중복, 주소별 예약 풀, 전역 크로스-주소(전역 소비키), 출력 인덱스 중복

  • 원자적 공유 포인터로 잠금 없는 읽기 (현재 블록, 블록 메타 전체캐시, 블록풀)

  • 잠금 계층 설계: 체인 배타적 잠금 이후 캐시매니저 공유 잠금 이후 내부 잠금 순서로만 취득, 역순 불가 (교착 원천 차단)

성능 (8항)

  • io_uring 실측 벤치마크: multishot, zero-copy, provided buffers로 I/O 극대화

  • 조회: 최신 TX는 메모리에서 즉시, referral O(1) 해시맵, UTXO 소비 확인 O(10) 최대

  • 네트워크: zlib 압축, 메시지 ID 중복 제거, 공개키 LRU 캐싱, sendmsg 배치 전송

보안 설계 (9항)

  • 빌드 레벨: FORTIFY_SOURCE, Stack Canary, Stack Clash Protection, CFI, Full RELRO, ASLR(fPIC), noexecstack

  • 암호화: RSA-4096, SHA-256 이중 해싱, HMAC-SHA256, Base58Check, Zip Bomb 방어

  • 런타임: Arith 오버플로 검사, 서명 중복 검사(윈도우 기반), TOCTOU 원자적 해소, 전역 소비키 크로스-주소 차단

라이선스 독립성 및 범용성 (12항)

  • 9개 외부 의존성 전부 허용적 라이선스(Apache 2.0, BSD 3-Clause, MIT, zlib): 소스 공개 의무 없이 상용 배포, 독점 라이선스 전환, 기술 라이선싱 자유

  • Qt(LGPL/GPL/상용)와 Boost를 의존성에서 완전 제거하여 라이선스 부담 원천 회피

  • libubmsio_uring.so, libubmsevent.so, libubmstype.so, libubmshttp.so, libubmscrypto.so가 블록체인과 무관한 독립 라이브러리로 배포 가능

  • ubmsnotify(독립 실행 FCM 푸시 알림 서버)가 라이브러리 범용성을 실증

  • Ubuntu/Debian apt 패키지, vcpkg/Conan 등록에 법적 장벽 없다

UBMS는 블록체인 노드를 만드는 과정에서 합의, 네트워크, 캐시, I/O, 이벤트, 직렬화, 보안의 모든 계층을 외부 프레임워크 없이 독자 설계했으며, 그 과정에서 생산된 라이브러리들은 블록체인을 넘어 범용 서버 인프라로서의 가치를 갖는다.

15. 개발 연대표

15.1 구상기 (2022 ~ 2024.10)

  • 2022년 — UBMS 구상 시작. UTXO 기반 메타데이터 스마트 체인 콘셉트 확립, 설계 문서 작성, 합의 모델 및 경제 구조 설계, 개발 환경 조성

  • 2024.11 — 본격 개발 착수. C++ 표준 라이브러리 + 최소 외부 의존성 원칙 수립

15.2 프로토타입기 (2025.2 ~ 2025.4)

  • 2025.2 — PSAN(역할 다형성 자율 조정 네트워크) 구상 공개. 결정론적 2D 격자 위에 역할 기반 라우팅을 결합한 독자 토폴로지 설계. PoB(Proof of Behavior) 5단계 유통인 분배 메커니즘 확정. 오픈베타 일정 예고

  • 2025.3 — PSAN 실제 작동 증명. 노드 간 격자 좌표 할당, 아핀 편향 3경로 라우팅, 지향성 가십이 설계대로 동작함을 확인. 국내 주요 거래소(업비트) 상장 코인들의 코드베이스를 조사하여 UBMS 독자성 검증

15.3 공개 테스트기 (2025.5 ~ 2025.7)

  • 2025.5 — 로드맵 공개. 백서 초판 완성. 오픈테스트 시작으로 외부 노드 참여 개시

  • 2025.6 — Shifted Sigmoid 보상 알고리즘 발견 및 적용. 개발자의 RNN/GRU 기반 AI 개발 경험에서 시그모이드 함수의 특성을 보상 곡선에 응용한 것으로, 기존 블록체인에서 사용하지 않던 독창적 접근. R(x)=11+e−zR(x)=1+ez1​, z=((x+T×0.2)/T−0.5)×10z=((x+T×0.2)/T−0.5)×10. 공개 베타테스트 반응이 예상보다 좋아 iOS 지갑 앱 외주 개발 결정. TLS 적용, P2P 프로토콜 안정화 패치

  • 2025.7 — PSAN 셔플 편향성 개선. 기존 SHA-256 + XOR 방식에서 HMAC-SHA256 + XOR 방식으로 전환하여 노드 분배 편향을 ±8%에서 ±1~2%로 개선

15.4 가운영기 (2025.8 ~ 현재)

  • 2025.8 — 가운영 준비 완료. ubmsdaemon(풀노드), ubmsmine(채굴기), ubmsmine_and(안드로이드 지갑), ubmscli(CLI), ubmsnotify(알림 서버) 등 5개 프로그램 완성. 로드밸런서 시연으로 다중 노드 운영 체계 검증

  • 2025.9 — 가운영 시작. 라이트노드 완성으로 모바일 참여 확대. Shifted Sigmoid 기울기 계수를 10에서 7로 보정하여 소규모 스테이커 보상 곡선 최적화. 가운영 3일차에 노드당 스테이크 1개 제한 정책 도입 — 다중 스테이크로 보상을 독점하는 시나리오를 실운영에서 발견하고 즉시 대응한 사례

  • 2025.10 — 결정론적 2D 격자 라우팅 기술 특허 출원

  • 2025.12 — 대규모 아키텍처 업데이트. 토폴로지 전면 재설계, 지향성 가십 최적화, 3계층 캐싱 구조 고도화. 이 시점에서 현재의 캐시 + 블록차분 + 롤백 아키텍처가 확립

  • 2026.1 — 서버 인프라 업데이트. 롤백 메커니즘 설계 검증 및 보완

  • 2026.2백서 v1.9 발행. 소각 기준을 스테이커 수에서 노드 수로 변경하여 네트워크 참여 기반 경제 모델로 전환. 3D 격자 확장 구상 공개 — 기존 2D 격자(8이웃)를 3D(26이웃)로 확장하여 SNN(Spiking Neural Network) 기반 AI 모델과 결합하는 연구 방향 제시

  • 2026.3 — iOS 지갑 앱 출시. 안드로이드/iOS 양대 플랫폼 지갑 완성

15.5 현재 네트워크 현황

  • 활성 노드: 148개

  • 블록 높이: #29,431

  • 채굴량: 9.67%

  • 소각량: 5.11%

  • 유통량: 4.56% (채굴량 9.67% - 소각량 5.11%)


유비엠에스 주식회사 (UBMS Co., Ltd.)
대표 한혁진 · 사업자등록번호 409-86-55201
경기도 안산시 상록구 해안로 705, 지원편의동 402호 (경기테크노파크)
개업일 2021.01.26 · bokkamsun@gmail.com

UBMS - 독립적 코드베이스 블록체인

PoW + PoS + PoB 하이브리드 합의 | PSAN 네트워크