스마트 이코노미(Smart Economy)를 위한 분산된 네트워크
네오의 설계 목표는 스마트 이코노미를 이루기 위해 분산된 네트워크를 통한 자율 관리되는 디지털 자산에 대한 스마트 계약의 활용과 자산의 디지털화를 위한 디지털 증명과 블록체인 기술의 활용에 있습니다.
디지털 자산은 전자 정보 상으로 존재하는 프로그램 가능한 자산입니다. 블록체인 기술을 통해 디지털 자산들은 탈 중앙화될 수 있으며 중계인, 비 신뢰성, 타인에 의한 추적 여부로부터 자유로우며 높은 수준의 투명성을 확보할 수 있습니다. 네오는 기저 레벨에서부터 다양한 디지털 형태의 디지털 자산을 지원합니다. 사용자들은 자신들의 자산을 네오 블록체인상에 등록할 수 있으며 자유롭게 거래 및 순환시킬 수 있고 디지털 증명을 통해 물리적 자산과의 연결관계를 증명할 수 있습니다. 사용자들에 의해 등록된 자산들은 확인된 디지털 증명을 통해 법적으로 보호를 받습니다.
네오는 두 가지 형태의 디지털 자산을 가지고 있습니다. 글로벌 자산과 계약 자산입니다. 글로벌 자산은 시스템 내부에 저장될 수 있으며 모든 스마트 계약 (Smart Contract) 과 클라이언트들에 의해 증명될 수 있습니다. 계약 자산은 스마트 계약의 개인 공간 안에 저장될 수 있으며 이들을 인식하기 위해선 호환되는 클라이언트가 필요합니다. 계약 자산은 대부분의 클라이언트와의 호환성을 위해서 특정 기준을 고수할 수 있습니다.
디지털 증명은 전자 형태로 존재하는 개인, 기관 그리고 다른 단체의 정보를 증명하는 데 사용됩니다. 보다 더 높은 수준의 디지털 증명은 PKI (공개 키 기반구조 Public Key infrastructure) X.509 기준을 기반으로 하는데 네오는 일련의 X.509와 호환되는 디지털 증명 기준이 가지고 있습니다. 이 일련의 X.509호환 디지털 증명 기준은 X.509레벨 증명 배포 모델과 호환성을 제공하는 동시에 Web of Trust point-to-point 증명 배포 모델을 지원할 예정입니다. 디지털 증명의 이용이나 배포 시 네오의 증명 확인 방식은 안면인식. 지문, 음성, SMS와 다른 여러 형태의 인증 방식을 포함합니다. 동시에 X.509 증명 폐지 리스트 (X.509 CRL, Certificate Revocation List)의 저장 및 관리를 위한 온라인 증명 상태 프로토콜 (OCSP, Online Certificate Status Protocol)을 대체하기 위해 블록체인을 사용할 예정입니다.
월드 와이드 웹(WWW)가 만들어진 지 5년 뒤인 1994년에 암호학자 닉 스자보(Nick Szabo)가 최초로 스마트 계약을 제안했습니다. 스자보의 정의에 의하면 미리 프로그램 된 조건이 발동될 때, 스마트 계약은 상응하는 계약 조건들을 수행합니다. 블록체인 기술은 스마트 계약에 매우 도움이 되는 탈 중앙화되고, 변경이 불가능한, 그리고 매우 신뢰성 있는 시스템을 제공합니다. 네오는 독립적인 스마트 계약 시스템을 갖추고 있는데 이를 네오컨트랙트(NeoContract)라 부릅니다.
네오컨트랙트 시스템의 가장 큰 장점은 현존하는 개발자 생태계의 어려움 없이 통합하는 데 있습니다. 개발자들은 스마트 계약 작성 및 컴파일, 디버깅하기 위해 새로운 프로그래밍 언어를 배울 필요 없이 C#, 자바. 또는 그들에게 친숙한 IDE 환경 안에서 (비주얼 스튜디오, 이클립스등) 다른 메인스트림 언어를 사용할 수 있습니다. 네오의 범용적인 라이트웨이트(lightweight) 가상 머신, NeoVM은 고도의 확실성과 병행성 그리고 확장성에 그 장점이 있습니다. 네오컨트랙트의 스마트 계약 시스템은 전 세계 수백만 개발자들이 최단시간에 스마트 계약의 개발을 수행할 수 있도록 지원합니다. 네오컨트랙트를 위해 상세 사항을 기술하는 별도의 백서를 참조하시기 바랍니다.
생태계 (ecosystem)는 오픈 소스 커뮤니티에 있어서 제일 중요한 요소입니다. 지능적 경제 네트워크 (Intelligent Economic Network) 달성이라는 목표를 위해 네오는 수준 높은 개발 툴 제공과 문서 개발의 향상 그리고 금융 지원, 조직적인 교육 및 훈련 프로그램의 제공을 통해 해당되는 생태계의 개발에 전념할 것입니다. 아래의 네오 기반의 어플리케이션들은 설계 경험 향상을 보답(reward)으로 하는 생태(ecology)를 지원할 계획을 가지고 있습니다.
🔹 노드 프로그램
-
모든 기능을 다 갖추고 있는 풀 노드 PC 프로그램
-
향상된 user experience 를 갖추고 있는 라이트 노드 PC 프로그램
-
블록체인과 싱크할 필요 없는 웹/안드로이드/iOS 클라이언트
-
하드웨어 지갑
🔹 블록체인 익스플로러
🔹 SDK 개발자 Kit
- Java/Kotlin, NET C#/VB, JavaScript/Type Script, Python, Go 를 지원
🔹 스마트 계약 컴파일러와 IDE 플러그인
-
C#/VB.NET /F#, Visual Studio
-
Java/Kotlin, Eclipse
-
C / C++ / GO
-
JavaScript/ TypeScript
-
Python / Ruby
🔹 탈 중앙화된 어플리케이션
-
스마트 펀드
-
AI 보조의 법률 스마트 계약
-
소셜 네트워킹
-
자동화 토큰 유동성 제공자
-
탈 중앙화된 거래소
-
안전한 커뮤니케이션 프로토콜 (secure communication protocol)
-
지능적인 자산 거래 시장 (intellectual property trading market)
-
예보 시장
-
광고 시장
-
해쉬파워 시장
-
네오가스(NeoGas) 시장
네오는 두 가지 네이티브 토큰을 가지고 있습니다. NEO(약자로 NEO)와 NeoGas (약자로 GAS). NEO는 총 일 억 개의 토큰을 가지고 있으며 네트워크를 관리할 수 있는 권한을 지닙니다. 관리 권한에는 북키핑(bookkeeping)을 위한 투표권과 NEO 네트워크 파라미터 변경 등이 포함되어 있으며 NEO의 최소 수량은 1인데 토큰들은 더 작은 단위로 나뉘어질 수 없습니다. GAS는 최대 1억개의 토큰을 가지고 있으며 NEO 네트워크 자원 조절의 구현을 위한 수수료로 쓰일 수 있는 토큰입니다. NEO 네트워크는 운영 및 토큰과 스마트 계약의 저장에 대해 요금이 부과되는데, 그렇게 함으로써 북키퍼 들에게 경제적 인센티브를 제공하고 자원의 남용을 막습니다. GAS의 최소 단위는 0.00000001입니다.
NEO 네트워크의 형성에 있어 현재까지 일 억 개의 NEO가 생성되었으며 GAS는 아직 생성되지 않았습니다. NEO의 소유에 맞춰 약 22년 동안 1억개의 NEO에 해당하는 GAS가 붕괴 알고리즘을 통해 총 1억개 생성될 예정이며, 이렇게 만들어지는 GAS는 네오를 소유하고 있는 주소에서 보관될 것입니다.
NEO네트워크는 특정 양의 전송과 사용자 experience를 향상을 위한 스마트 계약 운영으로부터 GAS를 면제하는 투표권을 가지는 영역을 설정수 있습니다. 많은 양의 스팸 전송이 발생 시, 충분한 자격이 있는 스마트 계약 과 전송의 우선권 설정을 위해 NeoID가 사용 될 수 있으며 충분한 자격이 없는 디지털 ID로부터의 전성 및 스마트 계약의 우선권 확보를 위해 GAS가 사용되게 할 수 있습니다.
네오 배포:
네오의 일 억 개 토큰은 두 부분으로 나뉘어 집니다. 첫 번째 5천만개는 크라우드펀딩을 통해 네오 서포터들에게 투자자금에 비례해서 배포되었습니다. 두 번 째 5천만개는 NEO의 장기적 개발 및 운영과 생태계를 지원하는 NEO위원회에서 관리합니다. 이 NEO 토큰들은 일 년 동안 잠겨있을 예정이며 2017-10-16 이후에 풀릴 것입니다. 이 토큰들은 거래소에 유입되지 않을 것이며 오직 네오프로젝트의 장기적 지원을 위해 존재할 것인데, 해당 계획은 아래와 같습니다.
🔹 천 만개(10%)의 토큰은 네오 개발자와 네오 위원회를 위해 사용된다.
🔹 천 만개(10%)의 토큰은 네오 생태계의 개발자들을 위해 사용된다.
🔹 천오백 만개(15%)의 토큰은 다른 블록체인 프로젝트의 상호 투자를 위해 사용되며, 네오위원회가 소유하고 네오 프로젝트를 위해 사용될 것이다.
🔹 천오백 만개(15%) 임시 부대 비용으로 보관된다.
🔹 기본적으로 연간 네오의 사용은 천오백 만개를 넘으면 안 된다.
GAS 분배:
GAS는 새로운 블록과 함께 생성됩니다. 초기 GAS의 총량은 0입니다. 새로운 블록의 생성 율이 늘어감에 따라 22년 동안 총 1억개의 GAS가 생성될 예정이며 각 블록 생성의 간격은 15-20초, 일년에 2백만개의 블록이 생성됩니다.
최초 일 년 동안 (실제로 0-2백만개의 블록), 각 새로운 블록은 8개의 새로운 GAS를 생성합니다 : 두 번째 해 (실제로 2-4백만개의 블록)에는 각 새로운 블록은 7개의 새로운 GAS를 생성하는 식으로 진행됩니다. 처음 8년동안 블록이 증가할 때마다 매해 1개의 GAS가 감소될 것인데 이러한 방식으로 22년동안 GAS가 만들어질 것이며, 4천4백만번째의 블록 이후로는 GAS의 총량은 1억개가 될 것이고 이후로는 GAS는 생성되지 않습니다.
이 배출 공식에 따르면 첫해에는 16%의 GAS가 만들어지며, 첫 4년동안 52%, 첫 12년 동안 80%가 생성됩니다. 이러한 GAS들은 NEO소유 분량에 맞춰 적절히 배포되며 해당되는 주소에 보관됩니다. NEO를 소유하는 사람들은 언제든지 자신들의 주소에 대해 GAS 토큰과 전송을 요구할 수 있습니다.
체인 지배 : NEO토큰을 소유한 사람들이 네트워크의 주인이며 관리자들입니다. 네트워크상에서 투표를 통해 관리하며 NEO에 의해 생성된 GAS를 사용함으로써 네트워크의 기능을 활용하게 합니다. NEO토큰은 양도 가능합니다.
오프 체인 지배 : 네오 위원회는 경영 부서, 기술 부서 그리고 비서과의 감독 하에 네오 프로젝트의 창립자들로 구성되며, 전략적 결정권권한, 기술적 결정권 그리고 특정 기능 추가에 대한 책임을 집니다. 네오 위원회는 네오 커뮤니티를 위한 프로모션에 대해 책임이 있으며 네오 생태계 개발을 최우선 목표로 하고 있습니다.
DBFT는 위임된 비잔틴 과실 내성 (Delegated Byzantine Fault Tolerant)라 불리며 위임된 비잔틴 과실 내성은 대리 투표를 통한 대규모 참여의 협의를 가능케 합니다. NEO 소유자들은 투표를 통해 지원하는 북키퍼(Bookkeeper)를 선택합니다. BFT 알고리즘을 통해 선택된 북키퍼들은 협의를 통해 새로운 블록들을 생성시킵니다. NEO 네트워크상에서의 투표는 일정시간 동안만 가능한 게 아니라 실시간으로 진행됩니다.
DBFT는 n개의 협의체 노드로 구성된 협의 체계 안에서 과실 공차를 f=L(n-1)/3수준으로 제공합니다. 이러한 과실 공차는 보안상과 가용성 둘 다 포함하고 있으며 일반적인 비잔틴 오류에 대해 내성을 가지게 되면서 모든 네트워크에 적합하게 되어 있습니다. DBFT는 훌륭한 최종 결정성을 지니고 있는데 이는 확인 된 사항은 최종적이며, 해당 블록이 두 갈래로 갈라지지 않게 하며 한번 발생한 전송은 취소되거나 되돌아가지 못하게 합니다.
NEO DBFT 협의 체계 안에서 블록을 생성시키는 데는 15-20초가 소요되며 전송 처리량은 대략 1000TPS로 측정되며 이는 공개 블록체인에 있어서 매우 뛰어난 성능을 가지고 있음을 의미합니다. 적절한 최적화를 통해 이 수치는 잠재적으로 10000TPS까지 도달할 수 있으며 이렇게 함으로써 대규모의 상업적 어플리케이션을 지원할 수 있습니다.
DBFT는 디지털 인증 기술 결합될 수 있는데 이는 북키퍼 들이 해당 개인이나 기관의 실제 이름이 될 수 있음을 의미합니다. 이렇게 함으로써, DBFT는 이들에 대해 동결시키거나 취소/상속 회수 그리고 사법적 판단을 가능하게 합니다. 이 기술은 NEO 네트워크 상에 유순한 금융 자산(compliant financial asset)의 등록을 가능합니다. NEO 네트워크는 필요 시 이러한 운영을 지원할 계획을 가지고 있습니다.
네오의 스마트 계약은 아래의 세 부분으로 이루어져 있습니다:
NeoVM – 범용적인 블록체인 가상 머신 (Universal Blockchain Virtual Machine) :
NeoVM은 가볍고 범용적인 가상 머신으로 그 설계구조는 JVM과 .Net 런타임과 매우 유사하며, 명령 운영의 기능성과 논리 운영에 기반을 두고 명령을 계약 사항에 맞춰 순차적으로 읽고 실행하는 가상 CPU가 프로세스를 수행하는 것과 유사합니다. 시동속도가 빠르고 다재다능하며 스마트 계약과 같은 작은 프로그램에 적당하며, 상황에 맞게 넌 블록체인(non-blockchain)에 포팅되거나 최적 개발 체험 제공을 위한 IDE 에 통합될 수 있습니다. NeoVM의 기능성은 JIT(real-time complier) 의 도입 등을 통해 확장될 수 있으며 이를 통해 적용의 효율을 높일 수 있습니다.
인터옵서비스 (InteropService - Interoperable Services) :
블록체인 원부, 디지털 자산, 디지털 증명, 지속석인 저장 영역 그리고 다른 기초적인 서비스들을 로드(load)하는 데 사용됩니다. 이들은 상위 기능성 확보를 위한 런타임상에서 이러한 서비스들에 접근할 수 있는 스마트 계약을 가능하게 해주는 가상 머신을 제공하는 가상 CPU와 유사합니다. 이러한 저 결합성(low coupling)의 디자인을 통해 NeoVM은 스마트 계약의 활용 성을 높이기 위해 어떠한 블록체인이나 심지어 넌 블록체인 시스템에도 포팅될 수 있습니다.
데브팩 (DevPack – Compiler and IDE Plugin) (컴파일러 와 IDE 플러그인) :
데브팩은 고수준의 프로그래밍 언어 컴퍼일러와 IDE 플러그인을 포함하고 있습니다. NeoVM의 기본구조가 JVM과 .NET Runtime 에 매우 가깝기 때문에 데브팩의 컴파일러는 자바 바이트 코드와 .NET MSIL을 NeoVM 명령어 셋(instruction set)안에 컴파일 할 수 있습니다. Java / Kotlin, C# 개발자들은 새로운 언어를 배울 필요 없이 VS, Eclipse 와 다른 친숙한 IDE 환경하에서 바로 스마트 계약의 개발을 시작할 수 있습니다. 이는 스마트 계약을 개발하는 데 필요한 학습시간을 획기적으로 줄여주며 우리는 데브펙을 통해 사용자들에게 NeoContract 을 위한 활발한 커뮤니티를 손쉽게 만들 수 있도록 지원합니다.
NeoContract는 스마트 계약의 실행 전에 정적인 분석을 통해 스마트 계약 콜 트리 (smart contract call tree)를 만들 수 있습니다. 이 결정론 적인 콜 트리를 통해 네오 노드는 이론상 무한한 확장 성을 가지기 위해 스마트 계약을 동적으로 세분화 할 수 있는데 이렇게 함으로써 다른 블록 체인의 정적인 세분화에서 초래하는 재밍 현상(jamming effect)을 극복할 수 있습니다.
NeoX는 크로스 체인 상호 운영성을 도입하는 프로토콜입니다. NeoX는 두 부분으로 나뉘어 집니다 : 크로스 체인 자산 거래 프로토콜과 크로스 체인 분산 전송 프로토콜.
크로스 체인 자산 거래 협정
NeoX는 여러 종류의 참가가 들이 각기 다른 체인상에서 자산을 거래하고 전체적인 전송 프로세스의 성공/실폐 확인 여부를 각 단계에서 보증함으로써 이중 나선 구조의 극소한 자산 거래(double stranded atomic assets)의 존재까지 확장이 가능합니다. 이 기능을 가지기 위해 NeoContract 의 기능을 이용해서 각 참여자 별로 계약 계정(contract account)을 만들 필요가 있습니다. 만약 다른 블록체인이 Neocontract와 호환되지 않을 경우, 해당 블록체인이 단순 스마트 계약 기능을 제공하는 한 NeoX와 호환될 수 있습니다.
크로스 체인 배포 전송 프로토콜 (Cross Chain Distributed Transaction Protocol)
크로스 체인 배포 전성은 다양한 블록체인상에 흩어져 있는 전송의 여러 단계 과정과 전체 전송의 정합성이 확보되는 것을 의미합니다. 이는 크로스 체인 자산 거래의 확장된 기능이며 임의 양식과 자산의 상호 거래까지 확장 될 수 있습니다. 레이맨의 협정(layman’s terms)하에서 NeoX는 다양한 체인 상의 서로 다른 파트들을 수행할 수 있는 스마트 계약이 가능할 때 크로스 체인 스마트 계약을 적용되게 할 수 있습니다. 이는 크로스 체인 협업에 있어 아주 훌륭한 가능성을 제공하며 이를 위해 우리는 크로스 체인 스마트 계약 어플리케이션 시나리오를 조사하고 있습니다.
NeoFS는 분산 해쉬 테이블 기술을 사용하는 분산 저장 프로토콜입니다. NeoFS 는 파일 경로 (URI)사 아니라 파일 내용 (Hash)를 통해 해당 정보를 색인 합니다. 대용량의 파일은 정해진 크기의 데이터 블록으로 나뉘어 지며 여러 다양한 노드에 분산되어 저장됩니다.
이러한 시스템의 주요 문제점은 중복과 신뢰성의 균형에 있습니다. NeoFS는 이러한 문제를 토큰 인센티브와 백본 노드(Backbone Nodes)의 형성을 통해 해결하고자 합니다. 사용자는 해당 파일의 신뢰성 요구수준을 선택할 수 있습니다. 신뢰성 요구 수준이 낮은 파일들은 무료 또는 거의 무료로 저장 및 접근이 가능합니다. 백본 노드는 아주 높은 수준의 신뢰성을 제공합니다.
NeoFS는 블록체인상의 대용량 파일의 저장 및 접근을 위한 스마트 계약을 가능하게 하는NeoContract 시스템 하의 인터옵 서비스 중의 하나로써 운영될 것이며 디지털 증명과 결합이 되어 중앙 서버 없이 디지털 인증의 지정, 전송, 폐기 등을 가능하게 할 수 있게 합니다. 미래에는 오래된 블록 데이터들은 NeoFS에 저장될 수 있으며 이렇게 함으로써 대부분의 풀 노드들은 오래된 데이터들을 방출함으로써 과거 데이터의 보전과 효율적인 확장성을 동시에 달성 할 수 있게 됩니다.
양자 컴퓨터의 출현은 RSA와 ECC 기반의 암호 체계에 큰 위협이 되고 있습니다. 양자 컴퓨터는 많은 수의 해제(decomposition) 문제(RSA가 의존하는)를 풀 수 있으며 타원형 곡선의 이산된 로가리즘(ECC가 의존하는)을 아주 짧은 시간에 풀 수 있습니다. NeoQS(QuantumSafe)는 격자 구조의 암호구조입니다. 현재 양자 컴퓨터는 SVP(Shortest Vector Problem)와 CVP(Closest Vector Problem)을 풀 수 없는데 이 두 방식은 현재 양자 컴퓨터에 대응하는 가장 확실한 알로리즘(algorithm)입니다.
NEO는 디지털 자산, 디지털 증명 그리고 스마트 계약을 결합한 분산된 네트워크입니다. NEO시스템은 또한 DBFT, NeoX, NeoFS, NeoQS와 많은 수의 독자적인 기술을 사용함으로써 미래에 지능 경제를 위한 기반구조를 제공할 것입니다.