Skip to content

Instantly share code, notes, and snippets.

@jejuro
Last active December 15, 2018 01:50
Show Gist options
  • Save jejuro/41782daf3a27fe07c4998ecde0760cd4 to your computer and use it in GitHub Desktop.
Save jejuro/41782daf3a27fe07c4998ecde0760cd4 to your computer and use it in GitHub Desktop.

Table of Contents

Preface A New Horizon

  1. Openhash의 Hash 메커니즘
  2. Openhash Platform
  3. 거래 데이터
  4. Server Architecture
  5. Space Web: A Permissioned Network
  6. Mesh Network & Gossip Protocol

작성 중의 글입니다. 마감 예정일 2018-02-25, 작성자: 팀 주피터


Preface

흔히, 도구를 준비한 뒤, 건축을 시작한다. 다른 한편, 모든 도구는 건축 과정에서 만들어 졌다. OP는 아래 쓰임새를 위해 고안된 아키텍처이지만, 다양한 쓰임새를 거쳐 더욱 정련될 것이다. 쓰임새의 예는 다음과 같다. - 한국의 중앙은행과 시중은행 특수 은행 등을 하나의 무인 **자율운영 은행** 체계로 구현. - 한국의 차량과 도로를 조합하여, 하나의 무인 **자율운영 교통물류** 체계로 구현. - 한국의 병의원, 보건소, 건보공단을 하나의 체계로 통합하고, 진단과 처방의 일정 부분을 자동화한 **자율운영 보건의료** 체계를 구현. - 한국의 초중고 및 대학(원) 체계를 하나의 **자율운영 교육** 체계로 구현.

집 짓는 도구는 톱, 망치, 삽 등이다. Openhash Platform(또는 Onnuri Platform)은 사회와 산업 각 부문을 자율 운영 체계(Autonomous System)로 재현하는데 사용될 도구를 목표로 한다. 톱 망치 등과 달리, OP의 사용 방법은 익히기가 쉽지 않다. 게다가, OP가 적용되는 분야도 다양하므로, 다양한 분야의 사전 지식이 필요하다. 특히, 블록체인과 머신러닝은 모든 종류의 OP 프로젝트에 광범위하게 사용된다.

  • 필수 지식: OP의 적용 분야에 관계없이, 모든 OP사용자가 갖춰야 할 지식과 기술

    • 컴퓨터 과학, 블록체인, 프로그래밍, 수학, 프로토콜과 네트워킹, 그리고 인공지능 분야를 잘 이해해야 한다.
    • Cycle.js 패러다임과 Erlang 언어를 익혀야 한다.
    • XMPP eJabberd 서버 아키텍처에 능숙해야 한다.
  • 부문별 지식: OP를 적용할 분야 별로 추가적인 지식을 갖춰야 한다. 가령,

    • 금융: 금융 공학, 회계/세무, 경제학, 재무분석
    • 교통물류: 로보틱스, 경로 알고리즘
    • 의료: 로보틱스, 생명 공학
    • 교육: 교육 철학, 지능형 교수 시스템(Intelligent Tutoring System)
    • 제조: ERP(Enterprise Resource Planning), 공급 체인(Supply Chain), 품질 관리
    • 도시: 도시 공학, 인구학
    • 법률: 자연어 처리(Natural Language Processing), Knowledge-based AI

사용자가 (1) 프로그래밍 기술과 (2) 특정 부문에 고유한 전문 지식을 갖추었을 때, Openhash Platform의 효용은 빛날 것이다.


A New Horizon - Introduction to Openhash Platform

Openhash Platform은 4세대 블록체인, 머신러닝, FRP, XMPP 및 공간웹 아키텍처 Spaceweb Architecure에 기초한 응용 기술이며, 사회와 산업 제 분야를 자율(Autonomous) 시스템으로 구현하기 위한 토대이다.

특히,

  • 4세대 블록체인 Openhash를 이용하여, Trustless Network을 구현한다.
  • Machine Learning 기술을 활용하여, 종래의 기술로 구현할 수 없는 자동화(Autonomous)를 구현하다.
  • XMPP로 Shutdown되지 않는 Decentralized Network을 구성한다.
  • FRP(Functional Reactive Programming) 패러다임은 숙련된 프로그래머에게 높은 생산성을 보장한다. 본문에서, Front-end는 Cycle.js, Backend는 Erlang 언어를 사용한다.
  • 공간웹 아키텍처를 이용하여 Permissioned Network을 자동으로 구성할 수 있다.

공간웹 아키텍처는 보호된 웹 - Gardened WEB을 구현한다. OP는 현재의 웹과 분리된 또 하나의 웹 아키텍처를 전제한다.

  • 물리적 공간은 GPS 좌표로 표현된다. 공간웹은 GPS 좌표를 IPv6 Address에 Mapping한 또 하나의 웹 아키텍처이다.
  • IP 주소 그 자체로 개별 단말기가 접속해야 할 서버의 위치를 특정한다.
  • 컴퓨팅 단말기는 DNS 서버의 도움없이 자신이 위치한 지역을 관할하는 공간웹 서버에 곧바로 접속할 수 있다.

전술한 공간웹의 특징은 Onnuri Platform 속에 자연스레 구현된다.

1. Openhash의 Hash 메커니즘

블록체인 기술의 발전 단계를 1~4세대로 나눌 수 있다.

  • 블록체인 1, 2세대 기술(Bitcoin, Ethereum)과 3, 4세대 Openhash 기술의 공통점은 Private, Public Key에 기초한 Locking 및 Unlocking 알고리즘이다. 그 외는 모두 다르다.
  • 블록체인 3세대 Hashgraph 기술과 4세대 Openhash 기술의 공통점은 하나의 Hash 속에 두 거래 당사자의 이전 거래를 표현하는 두 개의 Hash가 포함되는 점이다. 그 외는 모두 다르다.
  • Openhash Platform도 1세대 기술과 마찬가지로 범용 플랫폼(General-purpose platform)이며, 시범 프로젝트인 금융과 교통물류 뿐 아니라, 의료, 교육, 제조, 문화, 체육, 정치와 법률 등 사회와 산업의 각 부문에 수정(Customization)없이 적용될 수 있는 것을 목표로 한다.

1.1 블록체인 1~2세대 기술(Bitcoin, Ethereum)

초기 기술의 특징을 간략히 기술한다.

  • Blocks: 누구나 블록과 블록체인을 생산할 수 있지만, 확증된 블록체인에 편입되는 블록은 소수이다.
  • A block: 확증된 블록체인에 속하거나, 확증되지 않은 블록체인에 속하는 하나의 블록이다.
  • The blocks: 확증된 블록체인에 편입된 블록이다.

블록체인 1~2세대는 올림픽 경기와 유사하다. 올림픽이 열릴 때마다, 그리고 매 종목마다, 여러 선수들(Blocks) 중에서 단 한 명의 우승자(A block)를 뽑는다.

비트코인이라는 경기 종목의 경우, 이 게임을 10분마다 새로이 진행하며, 우승자들(The blocks)끼리 Hash라 불리는 기법으로 손을 맞잡는다. 그러므로, 블록체인이라 지칭한다. 우승하지 못한 선수들이 소멸하는 점에 주목할 필요가 있다. 경제학적 측면에서, 자본의 평균 이윤 수렴의 법칙에 의해, 채굴에 참여하는 선수들의 수는 선수단 전체의 운영 비용과 채굴로 인한 이익이 일치하는 지점에서 결정된다.

암호증표의 종류는 다양하지만, 주기적으로 새로운 선수들이 출전하며(물론, 이전의 출전 경험자가 또 출전할 수도 있다), 여러 선수들 중 한 명의 우승자를 뽑는 것은 같다. 비트코인, 이더리움, 리플 등의 차이점은 올림픽에서 경기 종목의 차이와 같다.

블록체인 1~2세대 기술은 올림픽의 4년을 10분으로 줄인 것이다.

  • 매 10분마다 새로운 후보 선수들이 다수 있어야 하고, 매 10분마다 선수단을 조직하고 운영하는데 막대한 비용 발생이 불가피하다. 이 비용은 채굴(Mining) 비용의 형태로 표현된다.
  • 가짜 경기(및 가짜 우승자)가 있을 수 있으며, 어느 한 경기가 진짜 경기인지 가짜 경기인지를 구별할 유일한 방법은 그 경기 이후로 손을 맞잡은 우승자들이 누가 더 많은 지를 보는 것이다. 아래 그림에서 점선으로 표현된 부분이 가짜 경기이다.

선수 각각을 Transaction Data 2,000(Tx0001 ~ Tx2000)개를 담고 있는 데이터 뭉치라 가정하자. 우승자도 선수들 중 한 명이므로, Transaction Data 2,000개를 담고 있을 것이며, 모든 선수가 동일한 데이터를 담고 있는 것은 아니다. 그러므로,

  • 내가 수행한 거래(Tx1002)가 다음 경기의 우승자A의 데이터 뭉치에 포함될 거라는 보장이 없다.
  • 포함되었다 하더라도, 우승자A의 데이터 뭉치가 진짜 우승자일 지 여부는 우승자A 뒤에 손잡고 늘어설 다른 우승자들(B, C, D…)의 줄이 다른 가짜 우승자A’ 뒤에 늘어 설 가짜 우승자들(B’, C’, D’ …) 보다 길어야 한다.
  • 따라서, 내 거래가 (1)진짜 거래인지 여부와 (2)블록체인에 기록될 지 여부는 한 참 지나야 알 수 있다.

1.2 Openhash vs. Hashgraph

Hashgraph의 기본 구조는 다음 그림과 같다.

Hash 생성 방식에 있어서, Openhash와 Hashgraph의 차이점은;

  • Hashgraph는 두 참여자 간 정보의 전달이 일방향인데 반해, Openhash는 양방향이다.
  • Hashgraph는 Hash를 생성하는 단위가 Event인데 반해, Openhash는 Transaction이다.
  • 개별 Event가 아니라, 개별 Transaction마다 Hash가 생성된다.
  • Hashgraph는 항상 거래 당사자(node)를 두 명으로 가정하지만(Gosship Protocol) 아니라, Openhash는 한 명 이상이다.
  • Hashgraph의 목표는 이벤트들 간의 시간적 전후 관계를 결정하는 것이지만, Openhash는 개별 Transaction의 위변조 여부를 판단하는 것이다.
  • Onnuri Platform에서 Transaction들 간의 시간적 전후 관계는 일련의 원자 시계들에 기초한다.

1.3 Openhash의 Trust 메커니즘

Openhash는 인체의 면역 시스템과 유사하다. 만약, 질병이나 감염이 발생하면 세포 단위부터 단계적으로 대응한다.

  • 하나의 세포가 감염되면, 해당 세포를 포함하는 조직을 분리한 뒤, 치료 뒤에 다시 이식한다.
  • 어느 한 조직 내의 다수의 세포가 감염되면, 해당 조직을 분리하여, 치료 뒤에 다시 이식한다.
  • 여러 조직들이 감염되면, 그 조직들을 포함하는 더 큰 단위의 조직을 분리하여, 치료 뒤에 다시 이식한다.
  • 조직은 세포에 대응하는 가지부터, 다양한 크기의 그루터기, 다수의 그루터기를 포함하는 수풀을 거쳐, 하나의 인체에 대응하는 온누리로 확장된다.

그러므로, 얼마나 신속하고 정확히 감염 부위를 특정해 낼 수 있는 지가 관건이다. Openhash는 백만분의 1초 내외에 감염을 감지하고, 조치할 수 있다.

올림픽에 비유하면, Openhash의 경우, 선수가 단 한 명뿐이다. 그 선수가 경기마다 혹은 종목마다 다른 선수로 바뀌는 것도 아니다. 4년마다 열리는 올림픽의 모든 종목에 오직 한 선수가 출전하며, 그 선수는 이전 올림픽에 출전했던 그 선수이며, 다음 올림픽에 출전할 그 선수이기도 하다.

한 명이 여러 종목에 출전한다는 표현은 하나의 Onnuri Platform이 금융 부문, 교통물류 부문, 건강의료 부문, 교육 부문, 문화 체육 부문, 산업생산 부문 등 사회와 산업의 모든 분야에 적용된다는 의미이다.

1.4 Openhash의 동작 메커니즘

Onnuri Platform의 네트워크 참여자 A, B, C, D, 그리고 그들 각각의 최종 거래 a, b, c, d를 상정한다. A와 B 간에 거래 e가 발생하면, 거래 e는 A의 최종 거래 a와 B의 최종 거래 b의 Hash를 포함하는 새로운 Transaction e를 생성한다. Transaction e는 거래 a에 포함된 Hash인 hash(a)와 거래 b에 포함된 Hash인 hash(b), 거래 내용인 TX(e) data, 이 모두에 대한 Hash인 hash(e)로 구성된 데이터이다.

Transaction(e)는 A와 B 각각의 장부로 복사된다.

B와 C 간에 새로운 거래(f)가 발생하면, 이전의 절차가 반복된다. Transaction(f)를 구성하는 데이터들을 자세히 살펴보길 바란다. a, b, c, d의 발생 시점이 동일하다고 가정하면, Transaction a, b, c, d, e, f 들 간의 시간적 전후 관계는 hash들의 관계로 명확히 드러난다.

지구 반대편에서 네트워크 참여자 L, M, N, O 사이에서도 유사한 과정이 진행되었다고 가정하자. 역시, Transaction l, m, n, o, p, q들 간의 시간적 전후 관계는 hash들의 관계로 명확히 드러난다.

그렇다면, Transaction a, b, c, d, e, f, l, m, n, o, p, q 들 간의 시간적 전후는 어떻게 판정될까? 3세대 Hashgraph는 특허 기술인 수학적 알고리즘을 이용한다. 이 방법의 특징은;

  • Gossip Protocol은 상당한 통신 자원을 소모한다.
  • 웹을 기반으로 동작하므로, 어떤 이유로든 웹이 통제되면 쓸 수 없다.
  • 모든 Full node가 끊임없이 알고리즘을 연산해야 하므로, 상당한 컴퓨팅 자원을 소모하다.
  • 위변조가 가능한 경우는 네트워크 참여자 ⅓ 이상이 담합할 때이다.

Openhash는 원자 시계로 전후 관계를 판단한다. 이 방법의 특징은;

  • IPv6와 같은 IP 프로토콜로 통신하므로, 통신 자원 소모가 현저히 적다.
  • 웹이 동작하면, Onnuri Platform도 동작한다.
  • 연산 과정이 없으므로, 컴퓨팅 자원의 소모가 현저히 적다.
  • 위변조가 가능한 경우는 원자 시계를 운용하는 국가들 중 ½ 이상이 담합할 때이다.

그렇다면, Onnuri Platform에서 Hash-chain을 구성하는 이유는 뭘까? 장부의 위변조 방지이다. 그림에서 보듯, 개별 네트워크 참여자 각각이 자신만의 블록체인을 구성하므로, 어느 한 장부 내용을 위조하려면, 그 이후에 이어지는 모든 장부를 위조해야 한다. 문제는 둘 이상의 거래 당사자들이 공동으로 장부를 생성하므로, 결국 네트워크 참여자들의 장부를 전부 위변조해야 한다.

Coded Korea

2. Openhash Platform

Openhash Platform은 Openhash 사상(idea), Deep Neural Network, Decentralized Server Cluster 및 FRP 패러다임을 융합한 것이다. 하나의 모형을 원형 그대로 다종 다양한 부문(또는 사회와 산업 제 분야)에 적용할 수 있는 범용(General purpose) 블록체인 메커니즘이다. 가령, 금융 부문에 적용하기 위해 개발된 어느 한 Onnuri Platform은 큰 수정없이 보건의료 시스템 혹은 문화체육 시스템으로도 전환될 수 있으며, 그 역도 같다.

2.1 용어

  • Openhash: 위변조 불가능한 Timestamp로 Ordering Task를 수행하고, Hashing으로 Validation Task를 수행하는 것을 특징으로 하는 블록체인 모델.
  • Onnuri Platform: Openhash, Cycle.js 및 Deep Neural Network를 특징으로 하는 개발 플랫폼.
  • Tx: 사람과 사람, 사람과 객체, 객체와 객체 간의 상호 확증적(Signed) 이벤트. 거래 또는 트랜잭션이라고도 표현.
  • Participants: Tx에 관여하는 사람 또는 객체.
  • Timestamp: 거래(Tx)가 발생한 시점.
  • Hash: 데이터 뭉치에서 도출된 256bit 데이터.
  • Hash Chain: Hash 하나 하나를 고리로 하는 Hash들 간의 연결 메커니즘. 어느 한 Hash 또는 고리의 위변조는 뒤에 이어지는 모든 Hash들 또는 고리들의 훼손으로 귀결된다.
  • Decentralized Server Cluster: XMPP 서버들로 구성된 또 하나의 웹이다.
  • Fault -tolerant Network: 어떤 경우에도 Shutdown되지 않는 네트워크이다.

2.2 Transaction(Tx 또는 트랜잭션)

Transaction 또는 Tx는 사람을 포함하는 두 오브젝트 간 상호 합의되고, 확증된 이벤트이다. 블록체인 기술의 핵심 사상은 확증된 이벤트는 수정할 수 없다는 것이다. 확증서명으로 표현된다.

Tx는 화폐와 관련된 것만이 아니다. Tx는 6하 원칙으로 표현된다.

  • 시각(When)
  • 참여자 또는 Participants(Who)
  • 장소(Where)
  • 거래 대상(What)
  • 거래 방법(How)
  • 거래 이유(Why)

2.2.1 참여자

사람은 자연인, 법인 및 대리인을 포함한다.

2.2.1.1 사람과 사람

통상적인 의미의 거래이다. 주로 화폐의 이동을 수반한다.

2.2.1.2 사람과 객체

자판기 이용자, 온라인 쇼핑몰 고객 등 우리 주변에서 흔히 볼 수 있는 장면은 물론, 미래에 보게 될 자율주행 차량과 이용자 간의 거래 등이 객체 간 거래 사례이다.

2.2.1.3 객체와 객체

오늘날 증권거래소의 시스템 트레이딩, 고속도로의 톨게이트 등은 물론, 미래의 자율주행차량과 도로 간의 정보 확증이 객체 간 거래에 해당한다.

2.2.2 시각 Timestamp

원자 시계 또는 광 시계를 보유한 Bookkeeper는 일정한 권역 내에 위치한 모든 컴퓨터 장치의 시각을 동기화(Synchronization)하고, 컴퓨터 장치 각각은 자신이 관여하는 거래의 발생 시각을 관련 Book keeper에게 보고한다.

세계 전역을 다수의 권역으로 나누고, 각 권역마다 Bookkeeper 역할을 담당할 컴퓨터 장치를 할당한다. 가령, 위도 경도 고도 좌표를 참조하여, 세계를 65,500개 권역으로 나눌 수 있다. image source: KAIST

  • 모든 Bookkeeper들은 일정한 주기로 상호 간의 시각을 동기화한다. 동기화에 참여하지 않은 Bookkeeper는 Onnuri Platform에서 퇴출되며, 퇴출 메커니즘은 Hash chain이 기초한다.
  • 거래에 참여한 컴퓨터는 거래 시각을 소속 권역의 Bookkeeper에게 보고한다. 시각의 위변조는 Hash chain에 의해 탐지되며, 탐지된 위변조자는 플랫폼에서 퇴출된다. Hash chain은 Timestamp와 별개로, 거래들 간의 전후 순위를 결정하는 논리적 메커니즘이며, Timestamp보다 우선한다.
    • 거래 A가 거래 B보다 앞 선다.
    • 거래 B가 거래 C보다 앞 선다.
    • 따라서, 거래 A는 거래 C보다 앞 선다.
  • 세계 전역에서 발생하는 모든 거래가 제각기 (1) 자신보다 앞선 거래에 대한 정보를 기록한다면, (2) 각각의 거래 정보를 둘 이상의 거래 참여자가 공유한다면, 세계의 모든 거래들을 시간적 전후 관계로 배열할 수 있다.
  • Timestamp는 산발적이며, 거래마다 독립적으로 지정되지만, Hash chain은 세계 전역의 모든 거래를 포괄하는 하나의 존재이다. 따라서, 특정 Timestamp와 Hash chain 간의 모순은 해당 Timestamp를 제거함으로써 해소된다.
  • Hash chain은 손상될 수 없으며, 오염된 Timestamp는 Hash chain을 손상하려는 시도로 간주된다.

2.2.3 장소 Location

Onnuri Platform에서 거래 발생 장소는 두 가지 의미를 갖는다.

  • 어떤 Bookkeeper가 해당 거래를 기록할 지 결정한다.
  • 거래 참여자의 위치 정보는 이후에 발생할 IP 또는 peer-to-peer 통신에 활용된다.

가령, 한국인 A와 중국인 B가 한국 제주도 제주시 한경면에서 상호 서명한 거래를 확정했다면, 해당 거래는 한경면을 관할하는 Bookkeeper에 의해 기록되고, A와 B의 위치 정보는 향후 A 또는 B를 향한 peer-to-peer 또는 IPv6 통신의 주소를 검색하는 데 이용될 수 있다.

위치 정보는 종래의 GPS 위도 경도 및 고도로 표현되거나, 정밀한 위치 측정을 위한 별도의 시스템으로 표현될 수도 있다. 가령, 자율주행차량은 오차 범위 1cm 내외의 초고정밀 GPS 좌표로 위치를 표현할 수 있다.

2.2.4 대상 What

유무형 자산이며, 참여자의 장부에 기록된다. 이하, 3. Tx Data을 참조.

2.2.5 방법 How

거래가 이행되는 구체적인 조건과 방법을 규정하며, Smart Contracts로 표현된다. Onnuri Platform의 Smart Contracts는 아래 도구를 이용한다.

  • Frontend

    • JavaScript
    • Cycle.js Framework
  • Backend

    • Erlang
    • eJabberd

3. 거래 데이터(Tx Data)

장부 Ledger는 참여자 간의 교환을 기록한다.

Input과 Output 중에서 Output만 Bookkeeper과 거래 참여자 각각에게 전달된다.

  • Input: 거래 참여자가 제공하는 자산이다.
  • Output: 거래 참여자 간의 자산 배분이다.

가령, A의 표준화폐 100과 B의 건물을 교환한다면, Input과 Output은;

Input A: 100 | B: 건물

Output A: 건물 | B: 100

사람과 사람 간의 거래뿐 아니라, 모든 Tx는 Ledger를 통해, Bookkeeper와 거래 당사자의 장부에 기록된다. 가령, 자율주행 차량A가 유료 도로B의 톨게이트를 지나갈 때도 거래가 발생한다. 가령, 도로이용료가 10이라면,

Input A: 10 | B: 도로

Output A: 도로 | B: 10

결과적으로, 도로의 가치 중 10이 A에게 이전된 것이며, A는 도로의 지분 전체 중 10만큼 소유하는 것이다. 그런데, 도로이용료가 도로 소유권으로 바뀌는 것은 상식과 모순된다. 만약, 오늘 내가 경부 고속도로를 이용한다면, 지불한 통행료만큼 도로 소유권을 갖게 될까? 그러하다.

4. Server Architecture

블록체인은 서버없이 구동될 수 없다. Openhash의 서버 아키텍처는 Decentralized Hierarchical Fault Tolerant Server Cluster이다.

4.1 Hierarchical Server Cluster

UN 192개 국가 각각에 하나의 Virtual Machine(VM)을 할당하고, 후술하는 XMPP 서버를 설치한다. 이 서버를 수풀 서버라 지칭하며, 수풀 Supul은 하나의 수풀 서버가 관할하는 지리적 영역이다.

이들 192개 국가급 XMPP 서버들 간의 통신을 중개하고, 그 내용을 기록할 하나의 온누리 Onnuri 서버를 설치한다.

이어서, 개별 국가의 영역과 인구에 따라 다음 단계를 달리 진행한다.

  • 하나의 국가를 구성하는 주(State)에 하나의 VM을 할당하고, 역시 XMPP 서버를 설치한다. 이를 L1 수풀 Supul이라 지칭한다.
  • 하나의 주(State)를 광역시, 도 단위로 분할한 뒤, 재차 XMPP 서버를 할당한다. 이를 L2 수풀이라 지칭한다.
  • 하나의 광역시 등을 시군구 단위로 분할한 뒤, 재차 XMPP 서버를 할당한다. 이를 L3 수풀 이라 지칭한다.
  • 하나의 읍면동에 소재한 대규모 시설에 재차 XMPP 서버를 할당한다. 이를 그루터기 서버라 지칭한다.
  • 하나의 가족, 기업, 단체, 조직을 나무 Namu라 지칭하며, 사람과 기계를 포함하는 모든 시장 참여자 각각은 가지 Gaji라 지칭한다.
  • 가지는 나무를 통해, 나무는 그루터기를 통해, 수풀을 통해, 수풀은 온누리를 통해 상호 소통한다.

따라서, 세계 전역을 관할하는 하나의 온누리 서버가 192개 수풀 서버들을 중재하고, 하나의 수풀 서버가 재차 계층적으로 조직된 그루터기 서버들을 중재하는 계층적 서버 클러스터가 조직된다. 60억 인구와 각종 하드웨어 장치 및 소프트웨어 프로그램를 포함하는 참여자(Paticipants)들은 최하위 그루터기 서버를 통해 상호 소통하며, 여타 서버들은 서버들 간의 소통을 중재한다.

4.2 IP Address

Onnuri Platform의 통신 프로토콜은 XMPP와 HTTP이며, 각각의 단말기 및 서버는 고유한 IP 주소를 가진다. 디폴트 주소 형식은 IPv6 포맷이다(An IPv6 address is 128 bits in length and consists of eight, 16-bit fields, with each field bounded by a colon.)

세번 째 필드의 마지막 두 자리(8-bits)에 192개 국가 코드를 할당하고, Subnet ID에 최대 65,536개의 종목을 표현한다.

Subnet ID 영역의 16-bits는 종목코드로써, 업종 대분류, 중분류, 소분류 및 세(세)분류를 표현한다. 이를테면, <30013. 컴퓨터 입·출력장치 및 기타주변기기 제조업>은 o 대분류 : D. 제조업 o 중분류 : 30. 컴퓨터 및 사무용 기기 제조업 o 소분류 : 300. 컴퓨터 및 사무용 기기 제조업 o 세세분류 : 3001. 컴퓨터 및 그 주변기기 제조업으로 표현된다.

4.3 HTTP vs. XMPP

HTTP는 Client(Browser etc.)의 요청(request)이 있을 때만, Server가 응답(response)한다. HTTP의 WebSocket 기술은 양방향 호출을 지원하지만, XMPP는 애초 프로토콜 설계 시점부터 클라이언트와 서버 모두 상대방을 호출할 수 있다는 점이 HTTP와 기본적으로 다르다.

Onnuri Platform은 전 세계에 산재한 XMPP 서버들로 하나의 Decentralized Server Cluster(또는 Server Federation)를 구성한다.

하나의 XMPP 서버는 하나의 그루터기를 담당하며, 일정 영역 내에 위치한 참여자들 간의 소통을 중재하고, 그 내용을 기록하며, 다른 서버로 메시지를 전파한다.

하나의 XMPP 서버는 다수의 기능 모듈을 포함한다. 이를테면, 참여자들 간의 채팅 서비스, 결제 서비스, 교통물류 서비스, 의료보건 서비스 등이 하나의 서버 안에서 제각기 별도의 모듈로 구동된다.

4.4 Domain Name Service

Spaceweb(다음 섹션에서 상세히 기술한다)을 구성하는 세계 전역의 XMPP 서버들과 참여자들은 고유한 ID를 가진다. 특징 중 하나는 서버 명칭(= 서버 주소)을 누구나 쉽게 알 수 있다는 점이다.

  • 서버 주소는 x:지명.국가 약칭 구조이다. 가령, 서울특별시를 관할하는 수풀 서버의 주소는 x:seoul.kr이고, 강남구를 관할하는 수풀 서버의 주소는 x:gangnam.kr이다.
  • 수풀 서버의 계층 구조에 따라, 서울시 강남구 삼성동은 서울시에 할당된 수풀 서버, 강남구에 할당된 수풀 서버, 및 삼성동에 할당된 수풀 서버에 각기 매핑된다.
  • 서버 명칭은 광역시, 도, 시군구, 읍면동의 구글 Maps 표기 또는 표준 영문 명칭이며, 명칭은 중복되지 않아야 한다. 가령, 제주시 한경면에 할당된 서버 명칭은 hankyung.kr이다. 참여자는 스마트폰 등으로 자신의 위치 정보를 획득하고, 구글 Maps API를 통해, 해당 지역의 명칭 및 해당 명칭의 서버를 특정할 수 있다. 만약 지명이 중복되는 경우, 인구가 적은 곳을 새로이 명명한다.
  • 클라이언트 주소는 ID@공식 지명.국가 약칭의 구조이다. user@domain.tld
  • 참여자 각각의 고유한 ID는 아이디와 주소지 서버 명칭을 @으로 결합한 것이다. 가령, 한경면을 주소지로 하는 사람 참여자의 아이디는 superman@hankyung.kr일수 있다.
  • Resources는 슬러시(/)로 표현된다. 가령, 위 사람의 스마트폰, 컴퓨터, 태블릿은 각기 다음과 같은 주소 형식으로 표현될 수 있다.

4.5 참여자 ID

참여자는 두 종류의 고유한 ID를 가진다.

  • IPv6 주소: 전술한 바와 같이, Subnet ID 영역으로 참여자의 종류 - 사람, 자동차, 프로그램 etc를 표현하고, Interface 영역으로 URI를 표현한다. 넓게 보면, Subnet ID와 Interface 영역이 합쳐져 참여자 각각의 URI를 구성한다.
  • Jabber ID: XMPP 서버의 클라이언트가 갖는 기본적인 URI이다.

Jabber ID는 user@domain 형식이며, IPv6는 126-bits이다. ID만으로도, 클라이언트-서버 간 메시지 송수신마다 상당량의 데이터를 추가하는 셈이다. 따라서, 그루터기 서버는 자신을 주소지로 하는 참여자의 수에 따라, 14-bytes(= 832 bits) 코드로 각 참여자의 그루터기 ID를 생성한다. 그루터기 ID는 특정 그루터기가 자신을 주소지로 하는 참여자를 식별하는 해당 그루터기만의 식별 코드이다.

  • 참여자의 IPv6 주소와 Jabber ID를 입력 데이터로 하여, 일정한 크기(8 ~ 32 bits)의 Hash를 생성한다.
  • 그루터기 내부의 소통, 즉, 특정 그루터기를 공통의 주소지 서버로 하는 참여자들 간의 소통은 그루터기 ID를 이용한다.
  • 그루터기 내외부 간의 소통, 즉, 주소지 그루터기가 다른 참여자들 간의 소통은 다음과 같이 진행한다.
    • 첫 소통은 참여자 각각의 IPv6 주소와 Jabber ID를 주고 받는다.
    • 이어지는 소통은 두 그루터기 간의 약칭으로 각 참여자를 지칭한다.

5. Space Web: A Permissioned Network

Onnuri Platform은 (1) 사람의 생명과 (2) 생명같은 돈을 다루는 Private Network이다. Onnuri Platform은 국가 의료체계, 진단과 처방 시스템, 고속 교통물류 시스템 및 국가 방위 체계와 같은 Critical Mission을 구성할 수 있는 범용 플랫폼이다. 따라서, 허가되지 않은 서버나 참여자의 플랫폼 진입을 구조적으로 차단할 메커니즘이 필수적이다.

차단은 먼저, IP 주소 메커니즘으로 구현된다. 허가되지 않은 서버가 네트워크를 교란하고, 참여자를 Phishing하는 것을 막는 1차 방어 수단은 서버에 IP 주소를 할당하는 특별한 메커니즘이다. 그를 설명한다.

5.1  가지

가지(Gaji)는 고유한 IP 주소를 갖는 최종 단말기이다. IPv6 주소의 경우, 인터페이스 영역 64bit 중 최종 48bit로 표현할 수 있다. IPv6 표준에서, 개별 장치의 IP 주소는 MAC Address로 자동 할당되므로, 인위적으로 URI를 지정할 필요는 없다.

가지는 사람일 수도 있고, 스마트폰, PC, 자동차, 냉장고 등 하드웨어일 수도 있으며, 프로그램일 수도 있다.

5.2 나무

나무(Namu)는 일련의 가지들로 구성된 Set이다. Set의 Element는 유동적이다. 그러나, 어느 한 element가 어느 한 set에 머무르는 기간은 Openhash Platform이 적용되는 인프라에 따라 크고 작은 차이가 있다.

  • 가족이나 직장은 새로운 Element의 진입(이를테면, 출산, 결혼 등)과 퇴장(이를테면, 분가, 독립 등) Interval이 길다.
  • 하나의 도로가 나무(Set)라면, 도로 위를 주행하는 차량들은 제각기 특정 나무의 element이며, 진입과 퇴장 Interval이 상대적으로 짧다.

5.3 그루터기 서버

그루터기 서버의 IP 주소는 Global Routing Prefix의 마지막 16-bits(국가번호) 중 미사용 영역과 Subnet ID에 특정 지역의 위도와 경도의 단위를 매핑하여 표현한다.

가령, 국가번호로 표현할 수 있는 국가의 수는 256개이며, UN에 등록된 국가는 192개이다. 따라서, 64개 또는 6-bits의 미사용 수가 있으며, 그 중 2-bits를 위도 경도(+/-)를 표현하고, 3-bits로 서버의 종류(그루터기, 수풀, 온누리 등)를 표현할 수 있다.

예를 들어, 서울 시청의 위도 경도 좌표는 37°33'58.87" N 126°58이다. 따라서, 사람 등의 참여자는 자신의 지리적 위치 좌표로부터 해당 지역을 관할하는 그루터기 서버의 주소를 계산하고, WiFi 등의 라우터를 통해 접속할 수 있다.

주소지 서버 사람 등의 시장 참여자는 특정 그루터기 서버를 자신의 주소지 서버로 지정한다. 사람의 경우, 주민등본에 기재된 주소이며, 자동차나 토지의 경우, 차량등록사업소나 법원 등기부서에 등록된 주소이다.

5.4 수풀 서버

수풀 서버는 그루터기 서버들 중에서 선출되며(elected), 주소지 서버가 상이한 두 시장 참여자의 거래를 중재하고, 기록한다.

수풀 서버의 IP 주소는 그루터기 서버의 경우와 동일한 메커니즘으로 계산된다. 따라서, 그루터기 서버는 자신이 속한 수풀의 서버 주소를 간단히 계산하고, 접속할 수 있다.

예를 들어, 특정 지역에서 거래하는 두 사람의 주소지 서버가 상이하다면, 해당 지역을 관할하는 그루터기 서버는 자신이 속한 수풀 서버에 해당 거래의 기록을 위임한다.

5.5 온누리 서버

6. Mesh Network & Gossip Protocol

국가 통신망이 마비되면, 그루터기 서버는 Mesh Network를 구성한다.

  • 각 단말기는 그루터기 서버의 IP 주소로부터 이 서버의 GPS 좌표를 계산한다.
  • 단말기가 기지국을 겸한다.
  • 단말기들 간의 소통은 기하급수적 전파를 특징으로 하는 Gossip Protocol에 의한다. 각 단말기의 위치, 곧, 기지국의 위치를 표현한 map을 작성한다.
  • 각각의 단말기는 그루터기 서버에 이르는 최적 경로를 계산한다.

동일한 메커니즘으로, 그루터기 서버들도 수풀 서버의 GPS 좌표를 파악하고, 어느 한 수풀 내 그루터기 서버들의 위치를 표현한 map을 작성한다.

동일한 메커니즘으로, 수풀 서버들도 온누리 서버의 GPS 좌표를 파악하고, 세계 전역의 수풀 서버들의 위치를 표현한 map을 작성한다

어떤 경우에도, 온누리 플랫폼은 셧다운되지 않는다.

7. 시장 참여자 또는 거래 당사자

OP에서 발생하는 모든 거래는 반드시 둘 이상의 거래 당사자를 전제하며, 그 중 하나는 국가이다. 가령, 자연인 A가 법인 B로부터 냉장고를 구매하였다면, 거래 당사자는 A, B 및 국가이다. 앞의 교환 이벤트에서 A는 화폐를, B는 냉장고를, 국가는 시장 경제를 제공한다.

  • A는 냉장고를 갖는다. 이 냉장고의 효용은 A가 해당 화폐를 구매할 수 있는 여타 재화의 효용보다 크다.
  • B는 화폐를 갖는다. 그 액수는 B가 냉장고를 생산하는데 소비한 금액보다 크다.
  • 국가는 세금을 갖는다. 그 액수는 국가가 없을 때, A와 B가 지불해야 할 비용보다 적다.
  • 국가가 교환에 제공하는 재화는 국가 그 자체이며, 자산 항목없이, 오직 비용 항목으로 기록된다.
  • 국세청은 국가를 대리한다.

가령, 거래 금액에서 부가세 10%를, 소비세 1%를 차지한다면, 거래 전 - A 100 - B 냉장고 - 국가 국가

거래 후 - A 냉장고 - B 89 - 국가 11

그러므로, 어느 한 국가의 효용은 해당 국가의 시민 모두가 지불하는 총 비용과 같다. 관련 프로젝트는 국가 회계 체계이다.

8. Presence

일반적인 XMPP 메시징 서비스와 달리, OP의 모든 참여자는 항상 Present 상태이다. 마치, 휴대폰이나 일반 전화가 항상 대기 모드인 것과 같다.

따라서, roaster는 없으며, 모든 거래는 Directed Presence에 의한다.

8.1 현위치 서버 Presence Server

모든 참여자는 어느 한 시점에 반드시 하나의, 꼭 하나의 Presence Server를 가지면, 그 서버는 해당 참여자가 위치한 장소를 관할하는 그루터기 서버이다. 가령, 제주도 한경면에 할당된 그루터기 서버A를 주소지 서버로 하는 시민A가 서울 시청을 방문할 경우, A의 Presence Server는 서울 시청의 그루터기 서버B가 된다. 서버B는 즉시 서버A에게 그 위치를 알리고, 서버A는 시민A를 향한 시민B의 메시지를 서버B로 Relay할 수 있게 된다.

8.2 Transmit Priority

어느 한 사용자가 다수의 산재된 단말기를 사용할 때, 이들 단말기들에게 메시지가 전달되는 우선순위는 -127 ~ +127의 숫자로 지정되며, 높은 숫자의 기기부터 우선적으로 메시지가 전달되며, 마이너스 숫자를 할당받은 기기는 명시적으로 지정되지 않는 한 메시지가 전달되지 않는다. 사용자의 기본 ID, 이를테면, user@domain.tld과 같은 주소를 bare JID라 하고, 각 단말기의 주소는 user@domain.tld/resource 형식으로 표현된다.

서버 자신이 1순위이다. 모든 Tx Data는 먼저 서버의 Tx DB로 전송되고, 이어서 거래 당사 참여자 각각에게 전달된다. 그러므로, 참여자가 Tx Data를 전달받았다는 것은 서버 DB에 해당 Tx이 기록되었음을 의미한다.

https://goo.gl/Dj5cVh

메시지가 전달되는 두 번째 순위의 단말기는 Tx 데이터를 생성한 단말기이다. 가령, A는 스마트폰으로 거래에 참여하고, B는 웹서버로 거래에 참여했다면, Tx Data는 각기 스마트폰과 웹서버로 전달된다.


Copyright (C) <2017> <주피터> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment