1. 프로그램 개요
UBMS(UTXO-Based Metadata Smart Chain)는 C++20 표준으로 100% 독자 개발한 한국형 블록체인 풀노드 시스템이다. 비트코인이나 이더리움을 포크하지 않았고 UTXO 모델 위에 메타데이터 기반 스마트 컨트랙트를 구현한다. 핵심 특징은 PoW + PoS + PoB 하이브리드 합의, PSAN(역할 다형성 자율 조정 네트워크), Shifted Sigmoid 스테이킹 보상 분배, 결정론적 2D 격자 기반 다중경로 라우팅(특허 출원), Linux io_uring 기반 고성능 비동기 I/O, 3계층 캐시, 비콘체인 없는 완전 분산형 합의다. 총 발행량 약 21,012,500 UBMS, 소수점 8자리(1 UBMS = 100,000,000 mensch), 블록 보상은 채굴자 5% + 스테이커 95% 온체인 자동 분배다.
2. 모듈 구조
libubmstype(타입 정의와 JSON/바이너리 직렬화 엔진), libubmslog(파일 로깅), libubmsutil(Worker 템플릿, QueueSafe 스레드 안전 큐, Arith 산술 오버플로 방지, Convert 변환 유틸), libubmscrypto(암호화와 zlib 압축), libubmsio_uring(io_uring 서버/클라이언트, WebSocket, 세션 관리), libubmsevent(libevent 이벤트 엔진, 신호-슬롯, OS 시그널), libubmstopol(결정론적 2D 격자, 3경로 라우팅, 지향성 가십, 독자 DHT), libubmshttp(REST API, 리버스 프록시, 리다이렉트, 레이트 리미팅), libubmscoin(블록, TX, UTXO, 캐시, DB), ubmsinspect(검증 전용 라이브러리), ubmsdaemon(데몬과 P2P 허브), ubmsnotify(독립 실행 FCM 푸시 알림 서버)로 구성된다.
3. 3계층 캐시와 TX풀 통합 아키텍처
CacheManager 가 VolatileCache(최근 10블록의 BlockDelta 리스트), ConfirmedCache(리퍼럴 맵, 채굴자 통계, 최근 100블록 채굴 시간), DB(영구 KV 저장소, Bloom filter 로 미존재 키 빠른 제외)와 TX풀(TxCurrent, 주소별 예약 풀 UtxoPool, 전역 소비키 m_globalSpentKeys)을 단일 잠금으로 통합 제어한다. 블록 하나가 BlockDelta 하나(addedUtxo, spentKeys, spentUtxoInfo, transactions, addedReferrals, mineAddress, reward)로 변환되며, 롤백은 델타 popBack 한 번으로 끝나 O(1)이다. 비트코인 DisconnectBlock 의 O(TX수) 역재계산과 대비된다. 휘발성 10블록을 넘으면 가장 오래된 델타를 WriteBatch 로 원자 커밋하고(TX, UTXO, owner/miner/txaddr 인덱스, 리퍼럴, committedHeight 를 한 배치), 소비 UTXO 의 owner 와 minerAddress 를 사전 수집해 DB 조회 실패 시에도 인덱스를 안전하게 삭제하여 인덱스 고아를 원천 방지한다. 조회 우선순위는 volatile spentKeys, volatile addedUtxo, DB 순이며 잔액은 DB owner 인덱스 접두어 스캔 + volatile 가감으로, 채굴자별 위임 스테이크(getStakeToMine)는 DB miner 인덱스 접두어 스캔 + volatile 의 LOCK 이면서 minerAddress 일치분으로, 주소별 TX 이력(getTx)은 DB 주소 인덱스 접두어 스캔 + volatile m_transactions 로 계산한다. makeDelta 는 같은 블록에서 추가와 소비가 겹친 키를 삭제 우선으로 정리한다. txid 가 타임스탬프 접두어를 가져 별도 시간 인덱스 없이 최신순 조회가 된다.
4. 독자 설계 UTXO 모델과 타입 시스템
비트코인 Script 바이트코드와 인터프리터를 쓰지 않는다. S_UTXO 는 index, amount, timestamp, owner, txid 에 더해 S_STAKE(NONE, LOCK, UNLOCK 상태 머신과 위임 채굴자 minerAddress)와 S_UBMS(온체인 JSON 메타데이터, TTL 유효기간, 조건부 실행 규칙)를 내장한다. S_REFERRAL 은 5단계 유통인 체인, S_REWARD[] 는 채굴 5% + 스테이킹 95% 분배, S_BLOCK_MINI 는 검증자에게 보내는 경량 블록이다. 모든 자료구조는 독자 Serializable 프레임워크를 상속하며 describe() 한 곳의 reg, regEnum, regStruct, regVec, regSet, regRawTail, regPtrStatus 등록으로 toJson/fromJson 과 serialize/deserialize 가 자동 생성되고 REG_JSON_ONLY/REG_BIN_ONLY 로 포맷별 필드를 분리한다. 타입 계층은 S_UBMS, S_STAKE, S_INPUT(txid, index, amount, stake, ubms), S_OUTPUT(to, amount, index, stake, ubms), S_REFERRAL, S_REFERRAL_TREE(name, level, children 재귀 구조), S_REWARD(owner, amount, reward, txid), S_TRANSACTION(type NONE/LOCK/UNLOCK/REFERRAL, txid, address, signature, publicKey, in[], out[], referral), S_BLOCK(hash, previousHash, merkleHash, height, nonce, difficulty, transaction[], stakeReward[]), S_BLOCK_META(fileName, fileOffset, dataSize), S_BLOCK_MINI, S_HEIGHT, S_MINE_INFO(stakers[], transactions[], height), S_WALLET(address, balance, publicKey), S_MESSAGE(header, path[], avoid{ }, payload 와 setPayload/getPayload 범용 페이로드), 독립 직렬화 컨테이너 S_INPUT_LIST, S_BLOCK_LIST, S_TRANSACTION_LIST 로 이루어진다.
5. Shifted Sigmoid 보상과 소각
스테이커 보상 가중치 R(x) = 1/(1+e^-z), z = ((x + 0.2T)/T - 0.5) * k 이며 x 는 스테이커 지분, T 는 전체 지분 합, 좌측 시프트 20% 다. 정규화 후 전체 보상 총합이 유지되고 대지분 독식이 구조적으로 억제되며 소지분 참여자가 보정된다. 개발자의 RNN/GRU 기반 AI 개발 경험에서 시그모이드 특성을 보상 곡선에 응용한 독창적 접근이며 가운영에서 기울기 계수를 10 에서 7 로 보정했다. 소각 메커니즘은 PoS 분배율 = max(0.01, min(1, N/10,000)) 로 노드 수 N 이 적을 때 공급을 자동 제한한다. 노드 100개 이하는 1% 분배 99% 소각, 1,000개는 10%, 5,000개는 50%, 10,000개 이상은 전액 분배다.
6. 반감기 스케줄
초반 구간은 2,160블록(10초 블록 6시간 기준)을 540블록마다 반감하여 1,000, 500, 250, 125 UBMS 로 총 1,012,500 UBMS 를 채굴한다. 후반 구간은 10분 블록 기준 4년마다(210,240블록) 반감하며 초기 48 UBMS 부터 24, 12, 6, 3, 1.5, 0.75 로 줄어 약 20,000,000 UBMS 를 채굴한다. 총 발행 약 21,012,500 UBMS 이며 PoS 소각분을 빼면 실제 유통량은 더 적다.
7. PoB 행위증명과 동적 수수료
PoB(Proof of Behavior)는 거래 수수료를 5단계 유통인(Distributor) 체인에 60%, 20%, 10%, 7%, 3% 로 온체인 자동 분배하는 수수료 채굴이며 리퍼럴 관계는 ConfirmedCache 메모리에 상주해 O(1) 조회된다. 수수료는 F = B x EF x CF = 1,000원 x sqrt(v / 10,000) x CF 로 계산한다. v 는 외부 가격 공시에서 수신한 1 UBMS 시장가, 기준 시장가 10,000원, 기저 수수료 1,000원, CF 는 최근 250개 블록 혼잡도를 반영한 혼잡팩터(기본 1.0)다. 시장가 10,000원이면 1,000원, 100,000,000원이면 100,000원으로 거래 규모에 비례한다.
8. UTXO 기반 메타데이터 스마트 컨트랙트
이더리움 계정 모델이 아닌 UTXO 확장 방식으로 S_UTXO.ubms 필드에 메타데이터, TTL(만료 시 자동 소멸), 조건부 잠금/해제를 실어 VM 없이 네이티브 C++ 로 실행한다. 조건 실행, TTL, 메타데이터 저장은 온체인, 복잡한 연산은 오프체인에서 처리 후 결과만 기록하는 혼합 실행 모델이다.
9. PSAN 네트워크 아키텍처
PSAN(Role-Polymorphic Self-Adjusting Network)은 하나의 노드가 릴레이, 투표자, 채굴자 역할을 동적으로 수행하고 네트워크 규모에 따라 BP(Blueprint)를 자동 산출한다. 릴레이 R = max(3, floor(log2(N)/2) x 2 + 1), 투표자 V = max(5, floor(log2(N)/1.2) x 2 + 1) 로 항상 홀수이며 N=100 이면 R3 V11, N=1,000 이면 R5 V21, N=10,000 이면 R7 V51, N=100,000 이면 R11 V101 이다. 릴레이 3, 투표자 5, 채굴자 1 의 최소 9노드로 비콘체인이나 중앙 코디네이터 없이 합의한다. 스레딩은 메인 스레드의 EventBase 와 P2P 허브, CPU 코어 수만큼의 UringPool, ServerBinP2P(인바운드 P2P), ServerWeb(웹소켓), 독립 큐를 가진 DecodeWorker, SendWorker, NodeWorker, ChainWorker, TxWorker, HttpWorker 로 구성된다. P2P 메시지 S_MESSAGE 는 messageId(32바이트 해시), header(REQUEST_INIT, VOTE_BLOCK, ADD_BLOCK 같은 명령 식별자), type, payload, ttl(기본 5), priority, path 로 구성된다. 수신은 ServerBinP2P::onRead(UringPool 스레드)에서 DecodeWorker 큐로 넘겨 32바이트 메시지 ID 중복을 확인하고 평문 해제나 복호화 후 p2p::execPlain/execCrypto 가 NodeWorker, ChainWorker, TxWorker 큐로 라우팅한다. 전송은 SendWorker::sendToOutbound 가 직렬화와 압축 또는 암호화, 32바이트 메시지 ID 생성 후 ClientBinP2P::sendMessageBinary 로 보낸다. 핸드셰이크는 평문 REQUEST_INIT/RESPONSE_INIT 후 암호 REQUEST_PEER_LIST/RESPONSE_PEER_LIST 로 진행된다. 가십은 GOSSIP(무작위 5피어, TTL 5, XOR 모듈러2 거리), GOSSIP_PATH(경로 내장 3경로 전달, 루프 구조적 차단), GOSSIP_DIR(지향성 가십, 방향 벡터 내장, 전방 이웃만, 팬아웃 3) 세 모드다. 합의는 RESET, REQUEST_MINE_INFO, MINE(PoW), DISTRIBUTE_BLOCK(PSAN 경로), VOTE_BLOCK(PoS 검증자 투표), VOTE_BLOCK_AGREE(70% 이상, BFT 2/3 + 안전 여유), ADD_BLOCK(채굴자 5%, 스테이커 95% Shifted Sigmoid, 수수료 PoB 5단계) 순으로 흐른다. 블록이 부족하면 REQUEST_BLOCK, RESPONSE_BLOCK, ACCEPT_RESPONSE_BLOCK 으로 따라잡은 뒤 정상 모드로 전환한다.
10. 검증 체계
InspectManager 가 InspectTx, InspectUtxo, InspectBlock(해시, 이전 해시, 머클루트, 난이도, 타임스탬프), InspectInput, InspectSpent, InspectStake, InspectReferral, InspectBalance, InspectSignature 9개 검증기를 통합 관리하고 최근 서명을 윈도우 기반으로 추적해 중복을 막는다. Inspector 감사 도구는 주소별 UTXO 스냅샷과 DB 일치성, 마이닝 보상 테이블, 전체 블록 리플레이 시뮬레이션, 이중 지불 탐지를 수행한다. 블록 수용 흐름은 Chain::addBlock 이 Chain::m_mutex 를 잠근 뒤 InspectManager::validateBlock(해시, 이전 해시, 머클루트, 난이도, 타임스탬프), validateBlockTxSignatures(각 TX 서명), validateBlockInputsNotSpent(입력 UTXO 소비 여부)를 거쳐 CacheManager::addBlock(makeDelta, volatile pushBack, confirmed updateNodeInfo 와 addReferral, 오버플로 시 DB 커밋)을 수행하고 BlockMetaFullCache 갱신, BlockCurrent 교체, BlockPool 제거 후 잠금을 푸는 순서다.
11. io_uring 비동기 I/O 엔진
libubmsio_uring 은 Linux io_uring 을 직접 래핑해 libevent bufferevent 를 대체한다. Multishot Accept/Recv(SQE 재등록 없는 연속 수신), Zero-Copy Send(커널 직접 버퍼 참조), Provided Buffer Ring(커널 관리 버퍼 풀), Fixed FD(fd 사전 등록), Batch Submit(SQE 일괄 제출), Backpressure(큐 크기 제한)를 조합하고 세대 번호(gen)로 stale CQE 를 안전하게 무시하며 UringSession 이 참조 카운팅으로 per-fd 상태를 관리한다.
12. libevent 기반 이벤트 아키텍처
Qt 시그널/슬롯, Boost.Asio 이벤트 루프, Boost.Signals2 옵저버 패턴을 libevent 하나로 전부 대체했다. EventBase 는 EVLOOP_NO_EXIT_ON_EMPTY 로 상주하고 evthread_use_pthreads 로 멀티스레드 안전하다. 신호-슬롯은 emit 시 COW 슬롯 스냅샷을 잡고 EmitEvent 구조체(인자, 슬롯 스냅샷, 인스턴스)를 만들어 event_new(base, -1, EV_TIMEOUT, cb_emit) 와 timeval{0,0} 즉시 발화로 이벤트 루프 스레드가 cb_emit 을 실행하는 비동기 디스패치이며 weak_ptr 캡처(UAF 방지), COW 슬롯 벡터(락프리 읽기), Alive/Marked/Cleaning 3단계 CAS 상태 머신(재진입 방지), m_cbCount 원자 카운터(소멸자가 진행 중 콜백 완료 대기), event_base_once 지연 해제의 5중 방어를 갖춘다. MOC 같은 코드 생성기 없이 순수 C++ 템플릿으로 타입 안전하고 type_index 레지스트리로 모듈 간 느슨한 결합을 이룬다. HTTP 서버는 evhttp 기반으로 자체 EventBase 를 소유한 독립 스레드에서 돌고 런타임 재바인딩(rebind)을 지원하며 Router(메서드+URI 라우팅, addRoute 외부, addLocal 로컬 전용), Forwarder(리버스 프록시 FIXED/ROUNDROBIN, path 와 query 유지, 로컬 요청 제외, prefix 필터링), Redirector(301/302/307/308, 브라우저 캐시를 고려한 307 임시와 308 영구 선택, ROUNDROBIN 분산), Abuse(IP+URI 별 LRU 레이트 리미팅), onPreRoute 훅 파이프라인을 제공해 nginx 없이 노드 자체가 REST API, 리버스 프록시, 리다이렉트, 레이트 리미팅을 수행한다. OS 시그널은 evsignal_new 로 이벤트 루프에 통합되고 이벤트 루프 풀은 io_uring 풀과 대칭인 이중 이벤트 엔진을 이룬다. Qt 약 50MB, Boost 약 150MB 헤더 대신 libevent 약 1MB 로 이벤트 루프 엔진(Boost.Asio 대체), 비동기 신호-슬롯(Qt signal/slot, Boost.Signals2 대체), HTTP REST 서버(nginx, Express, Flask 대체), 리버스 프록시(nginx proxy_pass 대체), OS 시그널 통합, 타이머와 주기 이벤트(event_add + EV_PERSIST, 별도 타이머 라이브러 대체) 6가지 역할을 수행한다.
13. ubmsnotify 라이브러 범용성 실증
ubmsnotify 는 ubmsdaemon 과 별도 프로세스로 동작하는 독립 실행 FCM 푸시 알림 서버다. EventBase 와 SignalHandler(libubmsevent), UringPool 과 WebSocket 서버 및 WebSocketClient(libubmsio_uring), 단일 워커 WorkQueue, Google FCM HTTP v1 FcmSender, 터미널 대시보드 ConsoleView 로 구성되어 모바일 앱 접속 수신, 블록 구독, 주소 매칭, 푸시 전송, 토큰 자동 갱신과 제거, 자동 재접속을 수행한다. 이는 두 라이브러리가 블록체인 전용이 아니라 채팅 서버, IoT 게이트웨이, 실시간 모니터링 서버에 그대로 쓸 수 있는 범용 서버 프레임워크임을 실증한다.
14. 암호화와 직렬화 안전성
암호 계층은 OpenSSL 3.x EVP API 위에 SHA-256, RIPEMD-160(독립 구현), Base58Check, HMAC-SHA256, AES-GCM, zlib(Zip Bomb 방어 64MB 제한)을 제공하며 이후 양자내성 전환에서 공개키 암호를 ML-DSA-87 과 ML-KEM-1024 로 전량 교체했다. 직렬화 계층은 Serial::writeUInt64/readUInt64(8바이트 리틀엔디안), writeString/readString(길이 접두 문자열), writeVector/readVector(템플릿 특수화 벡터) 코덱에 벡터 크기 상한(OOM 방어), 남은 버퍼 검사(오버리드 방지), 버퍼 경계 초과 시 부분 객체 안전 생성, enum fallback, JSON 타입 불일치 무시를 갖춰 P2P 악의적 패킷을 전제로 설계되었고 수동 파싱 코드를 없애 개발자 실수를 원천 차단한다.
15. 토폴로지: 결정론적 2D 격자와 지향성 가십 (특허 출원)
모든 피어를 같은 시드로 같은 바둑판에 배치한다. 각 피어의 IP 와 시드로 HMAC-SHA256 을 계산하고 해시를 4등분 XOR 로 합쳐 임계값을 만든 뒤 (임계값, IP) 오름차순으로 S x S 격자(S = ceil(sqrt(N)))에 순차 배치한다. 최단 경로는 격자 특성에 맞춘 직진 우선 BFS(Straight-First BFS)로 8이웃 무가중 그래프에서 축 정렬 이웃과 진입 방향 연속 이웃을 우선 탐색해 지그재그 대신 직선 경로를 얻으며 체비셰프 거리 max(|dr|, |dc|)로 홉 수가 결정되어 100 x 100 격자 10,000노드에서 최악 99홉, 평균 약 66홉이며 시간과 공간 복잡도가 O(N)이다. 3경로 라우팅은 최단 경로 P0 에 더해 진행 방향의 90% 지점을 법선 방향으로 알파 = k x L x 0.2 만큼 밀어낸 중간점을 아핀 변환(역회전으로 진행축 정렬, 법선 방향 휨, 정회전, 시작점 평행이동, snapClamp 격자 스냅과 경계 클램프, 빈 셀이면 반경 3 이내 가장 가까운 유효 셀 채택)으로 만들어 좌우 편향 경로 P+, P- 를 합성하여 부채꼴로 독립성을 확보한다. 변환 순서는 OpenGL 의 SRT(Shear, Rotate, Translate) 행렬곱 순서와 같으며 순서가 바뀌면 중간점이 격자 밖으로 벗어난다. 지향성 가십은 방향 벡터 u 를 메시지에 내장하고 이동 벡터와의 내적이 양수인 전방 이웃만 팬아웃 최대 3 으로 전달하며 TTL = max(3, floor(0.8 x D + 0.5)), D = sqrt((S-1)^2 + (S-1)^2) 다. N=10,000, S=100 기준 최단경로 전파 약 100건, 3경로 전파 약 336건, 지향성 가십 약 30,000건, 전통 가십 약 399,000건이며 앞의 셋은 O(sqrt N) 결정론적, 전통 가십은 O(log N) 비결정적이다. 지향성 가십은 전통 가십 대비 전송량이 약 1/13, 3경로 라우팅은 약 1/1000 대역으로 줄어든다. 평시에는 3경로로 전역 신호를 전달하고 장애 시 지향성 가십을 보조 활성화한다. 셔플 편향은 SHA-256 XOR 에서 HMAC-SHA256 XOR 로 전환해 노드 분배 편향을 ±8% 에서 ±1~2% 로 개선했고 토폴로지는 3초마다 재계산된다. 이 기술은 2025년 10월 특허 출원되었다.
16. 독자 DHT 피어 관리
Kademlia 가 아닌 완전한 독자 설계다. SHA256(ip1) XOR SHA256(ip2) 상위 64비트 거리, log2 구간 기반 고정 개수 버킷, 아웃바운드 전용 용도, Kademlia k=20 대비 대폭 확장된 버킷 용량, XOR 거리 오름차순 정렬, 가장 먼 피어 교체 정책, atomic shared_ptr COW 스냅샷 갱신, Near/Far/Storage 3종 회전 엣지 20~30% 주기 갱신, 해시셋 + FIFO 큐 가십 중복 제거를 갖춘다. Kademlia 의 FIND_NODE/STORE 프로토콜 대신 격자 + 가십 + 회전 엣지 조합, 핑-퐁 활성 확인 대신 client 유효성 직접 검사이며 버킷 수와 용량은 상수라 네트워크 규모에 따라 조정할 수 있다. 격자 라우팅과 지향성 가십이 전파의 핵심이고 DHT 는 피어 발견 보조에 한정된다.
17. 멀티스레드 안전성
CacheManager, VolatileCache, ConfirmedCache, TxCurrent 는 shared_mutex 로 읽기 다중화, Chain 은 mutex 로 addBlock/rollBack 직렬화, BlockCurrent, BlockMetaFullCache, BlockPool 은 atomic shared_ptr + COW 로 잠금 없는 읽기다. TOCTOU 는 checkDoubleSpendWithPool, isNotSpentKeyWithPool, getUTXOWithPool, getInputWithPool, getBalanceAvailableWithPool, getStakeWithPool 6종 원자 검사 함수로 해소하고, 락 계층은 Chain, CacheManager, 내부 캐시 순으로만 취득해 교착을 원천 차단한다. TX풀은 TX 내부 입력 중복, 주소별 예약 풀 이중 소비, 전역 크로스 주소 이중 소비(O(1) unordered_set), 출력 인덱스 중복의 4단 충돌 검사를 수행하고 블록 확정 후 sync, removeConflicting, cleanupByHeight 3단계로 정리한다. Worker 템플릿은 push 와 process 의 큐 기반 워커 패턴에 promise/future 기반 callSync 와 60초 타임아웃, QueueSafe 는 condition_variable 기반 스레드 안전 큐, Arith 는 uint128 중간값 mulDiv 로 오버플로를 막는다.
18. 성능 실측
잔액 조회 O(UTXO 수), UTXO 소비 확인 최대 O(10), referral O(1), 블록 추가 O(TX수 + UTXO수), DB 커밋 10블록마다 배치, 롤백 O(1). io_uring 벤치마크(AMD Ryzen 7 2700X 2018년 CPU, 싱글스레드 1코어, 3초, localhost): 텍스트 프로토콜 1클라이언트 32B 1,195,757 msg/s, 256B 883,132 msg/s, 1KB 801,805 msg/s, 4KB 320,268 msg/s, 10클라이언트 32B 10,132,692 msg/s, 256B 4,284,165 msg/s, 1KB 1,628,376 msg/s, 4KB 205,166 msg/s. 바이너리 프로토콜 1클라이언트 32B 1,431,783 msg/s, 256B 1,231,194 msg/s, 1KB 627,774 msg/s, 4KB 509,816 msg/s, 10클라이언트 32B 9,755,885 msg/s, 256B 5,260,272 msg/s, 1KB 1,709,745 msg/s, 4KB 447,800 msg/s. 64B echo 왕복 지연 1,000회 반복 평균 32.0us, p50 32.0us, p99 38.1us, 최소 28.1us, 최대 40.6us. 연결 속도 12,419 conn/s(1,000건 0.08초). 동일 세대 Ryzen 9 3900X 싱글코어에서 30% 이상, 멀티코어에서 20% 이상 추가 향상을 확인했고 벤치마크 바이너리 ubmsio_uring_benchmark 가 빌드 산출물에 포함되어 누구나 재현할 수 있다. 정상 상태 메모리는 VolatileCache 약 50MB, ConfirmedCache 약 10MB, TxCurrent 약 100MB, BlockPool 약 100MB 로 합계 약 260MB 다. 네트워크 최적화는 zlib 압축, 메시지 ID 해싱 윈도우 중복 제거, 공개키 LRU 캐싱, sendmsg 배치 전송이다.
19. 보안 설계
빌드 보안은 최상위 스크립트에서 11개 모듈 전체에 자동 적용된다. FORTIFY_SOURCE 버퍼 오버플로 런타임 탐지, 스택 카나리 strong, Stack Clash 방지, Intel CET(Shadow Stack + IBT) 제어 흐름 무결성, PIC/ASLR, 포맷 스트링 보안을 컴파일 에러로, STL 컨테이너 범위 검사, Full RELRO, 스택 실행 방지, 텍스트 재배치 차단, 심볼 하이재킹 경고, 릴리즈 디버그 심볼 제거, 상대 경로 RPATH 다. 런타임 보안은 Arith 오버플로 검사, 윈도우 기반 서명 중복 검사, TOCTOU 원자 해소, globalSpentKeys 크로스 주소 이중소비 차단이다. GTest 기반 모듈별 단위 테스트가 약 5,800줄 존재한다.
20. 라이선스 독립성과 범용 라이브러리
외부 의존성 9개(OpenSSL Apache 2.0, liburing MIT/LGPL 2.1, libevent BSD 3-Clause, 영구 KV 저장소 BSD 3-Clause, jsoncpp MIT, fmt MIT, zlib, libcurl)가 전부 허용적 라이선스이며 Qt(LGPL/GPL/상용)와 Boost 를 의존성에서 완전히 제거했다. 소스 공개 의무 없는 상용 배포, 독점 라이선스 전환, 특허 기술 라이선싱, 포크 위험 최소화가 보장되고 투자자와 파트너에게 라이선스 실사 부담이 없다. libubmsio_uring(서버, 클라이언트, WebSocket, SafeCurl), libubmsevent, libubmstype(protobuf/flatbuffers 대체), libubmshttp(nginx 없는 HTTP 서비스), libubmscrypto 는 독립 배포 가능하며 Ubuntu/Debian apt, vcpkg, Conan 등록에 법적 장벽이 없다.
21. 개발 연대표
2022년 구상 시작, 2024년 11월 본격 개발 착수(C++ 표준 + 최소 외부 의존성 원칙), 2025년 2월 PSAN 구상 공개와 PoB 5단계 확정, 2025년 3월 PSAN 실제 작동 증명(격자 좌표 할당, 아핀 편향 3경로, 지향성 가십)과 국내 상장 코인 코드베이스 조사로 독자성 검증, 2025년 5월 로드맵과 백서 초판 공개 및 오픈테스트, 2025년 6월 Shifted Sigmoid 발견 적용과 TLS, 2025년 7월 HMAC-SHA256 셔플 편향 개선, 2025년 8월 ubmsdaemon, ubmsmine, ubmsmine_and, ubmscli, ubmsnotify 5개 프로그램 완성과 로드밸런서 다중 노드 시연, 2025년 9월 가운영 시작과 라이트노드 완성(모바일 참여) 및 노드당 스테이크 1개 정책, 2025년 10월 결정론적 2D 격자 라우팅 특허 출원, 2025년 12월 토폴로지 전면 재설계와 캐시 + 블록차분 + 롤백 아키텍처 확립, 2026년 1월 롤백 메커니즘 검증, 2026년 2월 백서 v1.9(소각 기준을 노드 수로)와 3D 격자 26이웃 SNN 결합 구상, 2026년 3월 iOS 지갑 출시로 안드로이드와 iOS 양대 플랫폼 완성.




