저희는 EOS.IO 기술 백서에서 EOS.IO 소프트웨어를 블록체인 컴퓨팅의 새로운 시대를 여는 기술이라는 소개를 하였습니다. EOS.IO 개발팀은 지난 여름동안 정말 열심히 일했습니다. 여름이 끝난 지금, EOS.IO 소프트웨어의 개발 진행상황은 계획을 앞서나가고 있고 이제는 분산 네트워크 구성을 사용할 수 있습니다. 기쁜 마음으로 EOS.IO 소프트웨어 개발에 대해 공유드리고 싶은 여러가지 내용이 있으니 끝까지 읽어 주시길 바랍니다!
성능의 증명 (Proof of Performance)
이제 EOS.IO 소프트웨어는 분산 네트워크 구성을 사용할 수 있으므로 성능 측정을 할 수 있게 되었습니다. 저희 내부 테스팅 결과 현재 멀티 노드 (multi-node) 네트워크에서 1초에 10,000개가 넘는 싱글 스레드 (thread) 거래를 유지할 수 있었습니다. 이를통해 100개가 넘는 CPU 코어 (core) 시스템에서 일초당 1백만건 이상의 거래를 지원할 수 있게 됐습니다.
설계 (Design) 의 향상
개발자들은 저희의 최신 아키텍처 소프트웨어의 발전으로 인해 서로 소통할 수 있는 병렬 (parallel) 애플리케이션을 만들기가 더욱 쉬워졌다는 것에 기뻐할 것입니다.
데이터베이스 접근의 공유
저희는 이제 복잡한 비동기식 통신을 요구하지 않아도 한개의 애플리케이션이 다른 애플리케이션에 있는 데이터베이스의 상태를 조회하는게 가능해졌습니다. 저희는 조회하거나 기록해야하는 작업을 필요로 하는 스코프 (데이터 범위) 를 각각의 거래마다 정의하고 실행을 병렬로 허용하는 것이 가능해졌습니다. 블록 생산자들은 데이터간의 충돌이 없도록 예정된 거래를 할 것입니다.
애플리케이션 데이터를 위한 사용자의 로컬 저장소
계좌간의 읽는 권한을 지원하는 것 외에 이제는 애플리케이션을 통해 다른 계좌에 데이터를 저장 할 수 있습니다. 즉, 자체 범위가 아닌 각각의 사용자 계좌에 잔고 (balance)를 저장하도록 화폐 계약을 할 수 있습니다. 예를 들어 Alice 와 Bob 사이의 송금은 Alice 와 Bob 의 계좌의 범위에 대해서 읽고/쓰는 권한만 필요하고 (전체) 화폐 계약에는 영향이 없다는 말이 됩니다. 이로 인해 많은 종류의 애플리케이션이 단일 스레드 처리량 한계를 뛰어 넘고 손쉽게 병렬화 되어 화폐의 송금을 처리할 수 있습니다. 저희가 알고있는 한, 다른 블록 체인 설계는 병렬 소프트웨어 아키텍처를 개발하기 위해 확장 가능하도록 쉬운 접근법을 지원하지 않습니다.
이 방식은 다른 플랫폼들에서 사용되는 동기식 접근과는 다른 방식입니다. 현재 스레드 가 반환될 때까지 실행을 차단하는 동기식 메시지 전달은 예기치 못한 재진입성을 만들 위험이 있습니다. 재진입성은 개발자들이 동기식 호출 (call) 을 만들기 전에 자신의 컨트렉트가 일관된 상태인지를 보장하기 어렵기 때문에 많은 버그와 악용의 원인이 되었었습니다. 하지만 인라인 메시지 전달은 현재 거래 제어자 (handler) 가 끝이 날 때까지 실행을 미루기 때문에 개발자들은 마치 메세지가 성공적으로 보내졌다는 생각을 하고 메시지를 보낼 수 있게 됩니다. 만약 실패가 된다면 그 모든 거래는 위험한 부작용 없이 되돌아가게 됩니다. 즉, 이제는 메시지 제어자 (handler) 가 절대로 일관성을 손실하지 않게 된다는 말입니다.
인라인 메시지 전달 (Inline Message Passing)
이제는 그 어느 때보다 다른 애플리케이션으로 메시지를 보내기가 쉬워졌고 확신을 가지고 그 메시지가 보증이 되고 받아들여질 것임을 알 수 있습니다. 애플리케이션은 진행중인 거래의 끝에 첨부할 메시지를 원하는만큼 생성할 수 있습니다. 이렇게 생성된 메시지가 동일한 읽기/쓰기 범위를 공유하고, 할당된 시간내에 실행할 수 있는 한, 메시지 전체가 전달이 되거나 그렇지 않은 경우 거래 전체가 되돌려지게 됩니다.
이 방식은 다른 플랫폼들에서 사용되는 동기식 접근과는 다른 방식입니다. 현재 스레드 가 반환될 때까지 실행을 차단하는 동기식 메시지 전달은 예기치 못한 재진입성을 만들 위험이 있습니다. 재진입성은 개발자들이 동기식 호출 (call) 을 만들기 전에 자신의 컨트렉트가 일관된 상태인지를 보장하기 어렵기 때문에 많은 버그와 악용의 원인이 되었었습니다. 하지만 인라인 메시지 전달은 현재 거래 제어자 (handler) 가 끝이 날 때까지 실행을 미루기 때문에 개발자들은 마치 메세지가 성공적으로 보내졌다는 생각을 하고 메시지를 보낼 수 있게 됩니다. 만약 실패가 된다면 그 모든 거래는 위험한 부작용 없이 되돌아가게 됩니다. 이 말은 이젠 메시지 제어자 (handler) 가 절대로 일관성을 손실하지 않게 된다는 말입니다.
지연된 메시지 전달 (Deferred Message Passing)
저희는 가끔 메시지가 유효한지 또는 현재의 거래를 하기 위해 충분한 시간이 남아 있는지 잘 알지 못합니다. 어떤 경우에는 현 거래 외의 데이터에 접속하기 위해 메시지를 보내야 합니다. 이러한 상황에서 애플리케이션은 블록 생산자에게 메시지가 다음 주기 (Cycle) 나 이후 생성될 블록에 전달되도록 요청할 수 있습니다. 만약 검증이 된다면 본인의 애플리케이션에 통지를 받게 됩니다. 만약 검증이 되지 않는다면 예약이 되지 않고 본인의 애플리케이션은 타임아웃의 시간을 거친 후 정리가 될 예약이 됩니다.
무제한 수평적 확장
EOS.IO 소프트웨어의 가장 최신 버전의 발전은 바로 개발자들에게 높은 성능의 단독 머신을 제공할 수 있다는 점입니다. 이로 인해 보다 복잡한 비동기식 아키텍처를 필요로 하기 전에 1초에 백만건의 거래까지 확장 할 수 있습니다.
하지만, EOS.IO 소프트웨어는 상태를 공유 할 필요가없는 애플리케이션 그룹간에 비동기 메시지 전달도 계속 지원합니다. 비동기식 메시지 전달 (예를 들어 클러스터 (cluster) 지원) 방식은 여러 장점이 있지만 그 동시에 개발의 복잡성과 같은 큰 비용이 발생 됩니다. EOS.IO 소프트웨어는 일초에 몇백만개의 거래를 필요로하는 비즈니스를 지원하면서 그렇지 못하는 곳에도 간소화된 접근을 제공합니다.
차세대 네트워크 토폴로지 (Next Generation Network Topology)
EOS.IO 소프트웨어는 블록 생산자가 고성능 탈중앙화 인프라를 서비스로 제공 할 수 있도록 설계되었습니다. 애플리케이션 개발자는 거래를 연동하는 블록 생성자 외 더 많은 것들을 필요로 합니다: API 노드, 시드 노드 (Seed Node), 데이터베이스 인덱스, 저장소 및 호스팅 등이 필요합니다.
고성능 블록체인은 기존의 블록체인과는 매우 다른 요구 사항을 지니고 있는 고성능 네트워크 아키텍처를 필요로합니다. 초당 백만 건의 거래를 위해 각 노드는 연결 당 1초에 100메가 바이트 이상을 달성해야 합니다. 이는 대용량 데이터 센터에서는 아무것도 아니겠지만 사실 일반 사용자들에게는 상상도 할 수 없는 것입니다.
또한 고성능 블록체인은 일반 블록체인의 하위 집합을 실행하는 다른 여러 종류의 노드들로 구성되어 있으며 거래 기록을 정리할 수 있습니다. 이러한 점은 모든 노드가 동일하고 전체 내역을 볼 수 있는 예전의 블록체인과는 크게 다릅니다.
전통적인 블록체인의 메쉬 (mesh) 네트워크에서 임의로 연결된 노드의 집합으로 구성됩니다. 이들은 제한된 대역폭을 가진 일반 사용자들을 타겟으로 하고 있으며 NAT를 우회하고 네트워크에 노드를 동적으로 추가하도록 설계되었습니다
EOS.IO 소프트웨어는 모든 노드가 의도적으로 서로에게 연결되어있다는 가정을 토대로 시작합니다. 노드 운영자들은 네트워크 토폴로지가 안전하고, 설계가 튼튼하고 효율적으로 만들어질 수 있게 협력을 하고 있습니다. 이로인해 블록 생산자가 서로간의 직접적인 (그리고 안전한) 연결을 설립할 수 있게 되고 공격자들이 네트워크 토폴로지 전체를 스캔하면서 셧다운 시킬 노드를 찾는 행위도 방지할 수 있습니다.
블록 생성자는 누구나 원하는 거래 데이터의 하위 집합에 연결하고 이를 구독할 수 있는 엔드 포인트를 호스팅 합니다. 이는 블록 생성 하지 않고 운영하는 전체 노드에 대한 대역폭의 요구 사항을 최소화합니다. 단일 블록 생성자를 신뢰하지 않는 노드는 여러 소스에 가입하거나 블록 생성자의 ⅔ 시간까지 대기 (약 45초) 할 수 있습니다.
이러한 아키텍처의 장점은 새로운 노드가 블록 생산자가 제공하는 높은 대역폭 인프라에서 매우 빠른 속도로 연결하고 동기화할 수 있다는 점입니다. 또한 이런 아키텍처는 비효율적인 양방향 프로토콜보다는 효율적인 단방향 스트리밍을 가능하게 하기 위해 설계되었습니다.
규모면에서 블록 생성자는 EOS.IO 소프트웨어로 구동되는 새로운 인터넷 백본을 운영할 것입니다. 블록 생성자는 모든 지역에 걸쳐 전영 광섬유 연결을 사용하는 탑 타이어 (Tier-1)의 인터넷 제공 업체와 같을 것입니다. 해당 생성자는 Tier-2 가입자가 연결할 수 있는 데이터 센터를 운영할 것입니다. Tier-2에는 전체 또는 일부분의 노드 및 대규모 응용 프로그램을 실행하려는 사용자가 포함됩니다. 예를 들어 블록 탐색기나 웹 지갑 및 암호화 화폐의 교환과 같은 서비스는 블록 생성자의 Tier 2 가입자가 되는 것입니다. 우리는 이와 같은 의도적 협동 네트워크 구축의 아키텍처가 블록 생성자의 가상화폐 산업에서 고유한 서비스 품질을 제공할 수 있다고 생각합니다.
앞으로 나아갈 방향에 대해서
Block.one 에서 올해 9월 출시될 예정인 EOS.IO Dawn 1.0 버전은 누구나 본인의 테스트 네트워크를 구축하여 자신의 애플리케이션을 만들고 배포할 수 있을 정도로 안정되어있고 문서화되어 있을 것입니다. EOS.IO Dawn 1.0 버전은 저희 EOS.IO SDK (Software Development Kit) 의 첫번째 사전 릴리즈 (pre-release) 가 될 것입니다.
EOS.IO Roadmap을 지켜봐주신 분들은 저희가 일정보다 앞서나가고 있다는 점에 기뻐하실 것입니다. 단독 노드, 네이티브 계약, 가상 머신 API, RPC 인터페이스, 명령 입력 툴 (eosc), 그리고 기본 개발 문서등과 같은 “최소 실행 가능한 테스트 환경" 은 구축이 되었습니다. 저희는 “EOS.IO Dawn 1.0” 태그를 한 릴리즈를 할 것입니다. 이번 개발 단계는 원래 2017년 여름의 끝인 9월 22일을 목표로 하고 있었습니다.
저희는 이미 두 번째 단계인 “최소 실행가능한 테스트 네트워크” 의 절반을 작업하였습니다. 이번 단계는 2017년 가을에 끝날 예정이고 워킹 네트워크 코드, 가상 머신 샌드박싱, 자원 사용과 비율 제한, 제네시스 (genesis) 인포팅, 그리고 인터 블록체인 소통 등을 포함하고 있습니다. 이번에 저희는 작동이 되는 분산 네트워크와 가상 머신 샌드박싱은 구축이 되었습니다. 저희는 제 2단계를 일정에 맞추어 끝낼 수 있다는 자신이 있습니다. EOS.IO Dawn 2.0은 저희의 차기 중대 릴리즈이고 올해 말로 예정되어 있습니다. EOS.IO Dawn 2.0은 EOS.IO Dawn 1.0 에는 포함되지 않았었던 다음과 같은 몇개의 중대한 기능들이 포함될 것입니다:
- 자원 비율 한정 (스팸/남용 방지)
- 머클 트리 (Merkle Tree) 생성 (크로스 체인 소통을 위해)
- 운영과 관리 향상
- 더 안정적인(robust) SDK
- 구조적 향상
- ERC20 토큰 스냅샷의 예시
EOS.IO Dawn 2.0 버전의 목표는 라이브 블록체인을 실행시킬 수 있을 정도로 실용성입니다.
그리고 또 하나…
EOS.IO 저장소에 대해서!
개발자들은 처음으로 밴드위드 (bandwidth) 와 저장소 비용에 대한 걱정 없이, 그리고 심지어 본인이 서버를 호스트 할 필요 없이, 탈중앙화된 애플리케이션과 웹 인터페이스를 만들고 배포할 수 있을 것입니다.
연산 가능한 대역폭뿐만 아니라, 본래 EOS.IO 소프트웨어에 기반한 블록체인 토큰 소지자들은 이제 토큰을 소비하거나 보내지 않아도 무료로 클라우드 저장소, 호스팅, 그리고 IPFS/HTTPS 를 통해 대역폭을 다운받고 접근할 수 있게 됩니다.
이렇게 되기 위해선 블록 생산자들이사용자를 위해 IPFS/HTTPS를 통해 파일을 호스트할 것이고 사용자들에게 이 파일을 다운받을 수 있게할 것입니다. 저장 자원은 블록체인 배출을 통해 지불이 될 것이고 소유자에게 비례하여 토큰 보유자에게 제한될 것입니다. EOS.IO 대역폭 모델과 같이 저장소는 EOS.IO 소프트웨어에 기반한 블록체인 토큰을 소비하지 않고 토큰별 저장공간은 블록 생산자들이 하드웨어 업그레이드를 함에 따라 증가될 것입니다. 또한 EOS.IO 소프트웨어 저장소 해결방안은 토큰을 가지고 있지 않은 사람들도 공개적 호스팅을 지원할 수 있습니다. 이 내용에 곧 상해와 런던에서 진행될 블록체인 업계 이벤트에서 자세하게 다룰 예정입니다.
고지사항
Block.one은 소프트웨어 회사로서 EOS.IO 소프트웨어를 무료로 오픈소스 소프트웨어로서 제공하고 있습니다. 이 소프트웨어는 위에 언급된 기능을 내포한 블록체인이나 탈중앙화된 애플리케이션을 배포할 수 있게 할 수 있습니다. Block.one 은 EOS.IO 소프트웨어에 기반한 공개된 블록체인을 만들지 않을 것입니다. 제 3자와 커뮤니티 및 블록 생산자가 되려는 분들이 위에서 설명한 서비스의 기능을 구현하고 제공하려는 사람은로서 전적으로 책임이 있습니다. Block.one 은 누구나 그러한 기능을 구현하거나 그러한 서비스를 제공하거나 EOS.IO 소프트웨어가 어떤 식으로든 채택되고 배포될 것이라는 것에 대해 보장하지 않습니다. 이 문서에 나와있는 모든 진술은 역사적인 사실을 제외한 block.one 의 비즈니스 전략, 계획, 전망, 개발 및 목표에 관한 내용은 모두 미래 예측 진술입니다.
이 진술은 단지 예측일 뿐이며 미래에 발생할 수 있는 이벤트에 대한 block.one의 현재의 믿음과 기대를 반영하며 가정에 근거하며 언제든지 위험, 불확실성 및 변경의 영향을 받을 수 있습니다. 저희는 급변하는 환경에서 운영하고 있습니다. 새로운 위험요소는 수시로 발생합니다. 이런 위험요소와 불확실성을 고려했을 때, 이러한 미래 예측적 진술에 의존하지 않도록 주의가 필요합니다. 실제 결과, 실적, 또는 이벤트는 미래 예측적 진술에 포함된 내용과 실질적으로 다를 수 있습니다. 실제 결과, 실적 또는 이벤트가 본 문서에 포함 된 미래 예측적 진술과 실질적으로 다른 요인으로 작용할 수있는 것으로는 시장 변동성, 자본, 재원 및 인력의 지속적인 가용성; 제품 수용; 어떤 새로운 제품이나 기술의 상업적 성공; 경쟁; 정부 규제 및 법률; 일반 경제, 시장 또는 비즈니스 조건 등이 있을 수 있습니다. block.one이 만든 모든 미래 예측적 내용은 그것이 작성된 날짜에 대해서만 적용되며 새로운 정보, 후속 사건, 또는 기타 결과에 대해 block.one은 미래 예측 진술을 업데이트하거나 수정할 책임을 명시 적으로 부인합니다.
--
- 다음의 포스트를 번역하였습니다: https://steemit.com/eos/@eosio/the-dawn-of-eos-io
EOS.io Korea는 혁신적인 플랫폼 블록체인인 EOS에 대한 소식과 정보들을 한국의 개발자/투자자 커뮤니티에 소개하고 있습니다. EOS에 관심 많은 개발자와 투자자 분들의 많은 참여 부탁드립니다.
https://www.facebook.com/eos.io.korea/
https://steemit.com/@eos.io-korea/
https://twitter.com/eosio_korea
https://t.me/EOSIOKorea
(텔레그램 채널에는 EOS 소프트웨어 개발사인 block.one 팀이 직접 참여하고 있습니다)
Cheer Up!