ICON 2.0: 바탕, Go 기반의 새로운 블록체인 소프트웨어
ICONist 여러분들, 안녕하세요.
ICON 팀은 ICON의 새로운, 진보된 기술인 "ICON 2.0: 바탕"을 최초로 공개합니다. ICON 2.0은 Go 언어를 기반으로 만들어진 완전 새로운 블록체인 소프트웨어 아키텍처입니다. "바탕"은 우리가 모두 잘 알듯, 한국어로 뼈대, 기초를 의미합니다. ICON 2.0은 앞으로 빠르게 성장할 ICON 생태계의 토대가 되는, 좋은 기초가 될 것입니다. 우리는 한국어로 "바탕"을 ICON 2.0 네트워크의 첫 명칭으로 지었습니다.
현재 ICON Mainnet은 ICON팀이 처음에 만든 loopchain 구현체에 의해 완전히 Python을 기반으로 구동되고 있고, 오늘날 세계에서 최고의 블록체인 네트워크 중 하나가 되었습니다. 저희는 이 사실만으로 이미 충분히 자랑스럽지만, 지난 경험의 축적으로 더욱 나은 블록체인 소프트웨어를 만들 수 있다는 것을 알았습니다. 그래서 약 1년 전부터 ICON 코어 개발자들은 현재 loopchain 아키텍쳐를 완전히 새롭게 디자인한 ICON 2.0을 개발해왔습니다.
ICON 2.0는 기존 ICON 1.0의 핵심 기능을 그대로 가져오면서, 더욱 빠르고, 안정적이고, 높은 성능을 내는 새로운 블록체인 네트워크입니다. ICON 2.0은 출시때부터 상호운용성 관련 기능들을 탑재하여 cross-chain Defi가 지원할 것이며, 이에 필요한 스마트컨트랙트와 Relayer 노드들을 운영할 예정입니다.
ICON 2.0은 “Goloop”라는 완전히 새로운 블록체인 엔진을 사용해 기존 Python 기반의 loopchain보다 향상된 블록체인 경험을 제공합니다.
강조하고 싶은 점은 이 Goloop의 기업용 기본 모듈은 이미 완성이 되어, 다른 엔터프라이즈 블록체인 네트워크를 구축하는데 이미 활용이 되고 있다는 점입니다. 서울시를 포함해 다른 아이콘루프의 고객사들도 이미 이 Goloop 엔진을 사용하여 네트워크를 구축할 준비를 하고 있습니다.
따라서, 우리는 이 Goloop 엔진을 사용해 장기적으로 현존 ICON Network를 ICON 2.0 Network로 완전히 전환할 것입니다. 상세한 전환 계획은 추후 커뮤니티에 공유할 예정입니다.
ICON 2.0은 코어 부분에 많은 향상된 기능들을 갖추고 있습니다. 아래는 우리가 앞으로 ICON 2.0에 구축할 기능 목록들입니다. 몇몇 기능들은 P-Rep 및 커뮤니티와 토론을 하여 세부사항을 확정해야 할 것이며, 몇몇 기능들은 여전히 많은 연구와 개발이 필요합니다.
Python SCORE Executor는 합의 엔진과 별도의 프로세스에서 운영되는 순수한 Python 실행 환경을 제공합니다. 이미 배포 된 Python SCORE를 ICON 네트워크에있는 그대로 실행할 수 있습니다. 실행기 프로세스를 합의 엔진에서 분리하여 Python SCORE의 무한 루프 및 불안정 문제를 처리 할 수 있습니다.
이제 SCORE 개발자는 Java 프로그래밍 언어를 사용하여 프로그램을 작성할 수 있습니다. Java로 작성된 SCORE는 Java Virtual Machine에서 실행되므로 감사 프로세스 없이도 SCORE를 안전하고 안정적으로 실행할 수 있으며, 이는 현재 ICON 메인넷의 개발자에게 주요 골칫거리였습니다. Java SCORE는 감사가 필요하지 않으므로 향후 개발자가 Java SCORE를 사용하도록 권장 할 것입니다. 또한 Java SCORE는 inter-SCORE 호출을 통해 기존 Python SCORE와 상호 운용 할 수 있으므로 Java SCORE 환경으로 원활하게 전환 할 수 있습니다.
ICON 2.0에는 노드 간의 상태를 동기화하는 새로운 프로토콜이 탑재될 예정입니다. 새 노드는 가십 및 멀티 캐스트 프로토콜을 모두 사용하여 메시지를 전달합니다. 이를 위해서는 커뮤니티 구성원이 지원하는 구조화 된 네트워크가 필요합니다. 대부분의 경우 메시지는 중복 경로를 사용하는 멀티 캐스트 프로토콜을 통해 전달되지만 마지막 상태 검색, 누락 된 메시지 복구 등과 같은 예외적 인 경우에는 가십 프로토콜을 사용합니다.
일반적으로 노드는 합의에 참여하거나 마지막 상태를 쿼리하기 전에 모든 과거 블록 체인 데이터를 동기화해야합니다. 그러나 대부분의 사용자는 과거 데이터에 관심이 없습니다. 이러한 사용자를 위해 Fast Sync 기능을 지원할 계획입니다. 사용 설정하면 이전 트랜잭션 쿼리를 제외한 대부분의 서비스를 매우 짧은 시간에 제공 할 수 있습니다. 과거 데이터를 사용하는 DApp은이 기능을 사용하지 않습니다. 대표 노드는 빠른 시작을 위해이 기능을 사용할 수 있지만 모든 기록 데이터를 동기화해야합니다.
대부분의 머클 트리 구현은 항목을 추가 할 때 저장된 데이터의 해시를 계산합니다. 또한 바이트를 저장하는 인터페이스만 제공합니다. OMPT (Object Merkle Patricia Tree)는 필요할 때만 해시를 계산합니다. 그때까지 모든 데이터를 불변 객체로 관리합니다. 이 체계를 사용하면 블록의 모든 트랜잭션 실행이 끝날 때 해시를 계산합니다.
Python 구현에서는 GIL(Global Interpreter Lock) 때문에 다중 스레드를 사용하는 다중 코어를 활용하기가 어렵습니다. Go는 스레드를 효율적으로 관리 할 수있는 Gorutine을 제공합니다. 런타임은 Garbage Collection을 지원하지만 Garbage Collection에 대한 응답 지연은 크지 않습니다. 대부분의 사용자 요청을 처리 할 때 응답 시간을 줄이고 Python 구현에 비해 더 많은 사용자 요청을 동시에 처리 할 수 있습니다.
BTP는 범용 상호 운용성 프로토콜이지만, 특정 초기 사용 사례를 염두에 두고 ICON 2.0에서 표준으로 제공됩니다. 특히, 초반에는 크로스 체인 DeFi의 사용 사례를 만들기 위해 다른 Public Blockchain과의 상호 운용성을 지원할 것입니다. ICON 재단은 출시 시점에 필요한 모든 스마트 계약을 주요 블록체인에 배포하고 Relayer를 운영 할 예정이지만 개인 또는 그룹은 자체 수수료 시스템으로 개인 Relayer를 운영 할 수 있습니다.
추후 ICX 보유자는 완전히 분산된 Relayer Network를 준비하기 위해 Relayer를 사전 등록 할 기회를 갖게 됩니다. 사전 등록을 위한 최소 ICX 지분 요건이 있으며, 사전 등록 된 중계자는 중계자에게 할당 된 인플레이션과 그들이 보유한 ICX의 양에 따라 수수료를 받게됩니다. 획득한 수수료는 전송 된 자산으로 지급됩니다. 즉, 누군가 ETH를 ICON 블록 체인에 보내면 Relayers가 수수료로 ETH를 받게됩니다.
Vote Spreading은 DPoS 네트워크를 체계적으로 분산시키기 위한 새로운 솔루션으로, 오랫동안 활성화되지 않은 투표자들의 표는 모든 상위 100 개 P-Rep에게 강제로 분산됩니다. 이는 투표 무관심 문제를 해결하고 활동적인 ICX 보유자가 거버넌스에 가장 큰 영향을 미칠 수 있도록합니다. Vote Spreading 솔루션에 대한 자세한 내용은 별도의 게시물에서 공유되며 포럼에서 논의할 예정입니다.
ICON 2.0은 더 직관적이고, 이해하기 쉬운 경제 구조를 갖추고자 합니다. IISS 3.1의 기본 구조는 커뮤니티에서 이미 논의된 IISS 3.0의 구조를 따릅니다. 그러나, IISS 3.1 디자인은 단순히 인플레이션을 미리 정의 된 몇 가지 범주로 나눕니다. 예를 들면,
P-Reps: 17.5%
Relayers: 2.5%
Contribution Proposal Fund: 10%
Voters: 70%
ICON 2.0에는 P-Reps들이 이러한 인플레이션 할당을 조정할 수 있는 Network Proposal이 탑재될 예정입니다. IISS 3.1에 대한 자세한 내용은 별도의 게시물에서 공유되고 포럼에서 논의될 예정입니다.
Multi-channel은 ICON의 각 DApp이 Application-specific Channel을 쉽게 운영할 수 있는 솔루션입니다 (Cosmos SDK를 사용하는 애플리케이션 특정 체인의 예는 Band Protocol 및 Kava 참조). 각 채널은 기본적으로 ICON과는 완전히 별도로 분리된 독립적인 블록체인으로, DApp 개발자들은 플랫폼 위험을 줄이면서 자체 네트워크를 쉽게 구축할 수 있다는 강점이 있습니다.
결국, ICON은 장기적으로 ICON Nexus (P-Reps가 운영하는 기본 네트워크)가 되어, ICON Republic를 유지하는 보안, 불변성 및 거버넌스 레이어로 변환될 예정입니다. 그리고, 우리는 앞으로 DApp들이 각자 애플리케이션별 채널을 구축하는 Application-specific Channel을 통해 그들의 목적을 더욱 쉽고 빠르고, 분산된 네트워크가 될 수 있습니다. 각 채널 체인은 독립적인 Node에 의해 운영되어 높은 확장성을 담보할 수 있지만, BTP를 통해 메인 체인에 연결되어 신뢰성과 비가역성을 보장받을 수 있습니다.
우리는 개발 프로세스를 완전히 투명하게 만들고, 모든 진행 상황을 커뮤니티와 공유하기 위해 처음부터 Github에서 모든 개발 프로세스를 공유하기로 결정했습니다.
이 Github에서는 앞서 언급했듯이 1년 넘게 개발 한 Go를 기반으로 한 차세대 루프 체인의 소스 코드 인 "Goloop"를 볼 수 있습니다. 모든 커뮤니티 멤버들은 Github에서 ICON 팀의 코드와 기술을 쉽게 확인할 수 있습니다. 우리는 이 개발 방향이 커뮤니티가 장기적으로 ICON 2.0의 구조를 이해하는 데 도움이 될 것이라고 확신합니다.
Github 저장소:
https://github.com/icon-project/goloop
현재 저장소에는 두 개의 분기가 있습니다. "master"는 ICON 2.0의 개발 브랜치이고 "base"는 goloop의 소스 코드입니다. 따라서, 합의 부분에만 초점을 맞춘 업데이트는 "base" 브랜치에 커밋되고 경제 및 거버넌스 로직에 중점을 둔 업데이트는 "master" 브랜치에 커밋됩니다.
더 많은 기술 문서와 정보가 곧 Github에 업로드 될 것입니다.
우리는 중복된 작업을 없애고, ICON 2.0으로 빠르게 이전하기 위해, 현존 ICON Network에 신규 기능을 더 이상 추가하지는 않기로 결정했습니다. 원래 포럼에서 논의된 사항에 따라 IISS 3.0을 현존 ICON Network에 탑재하려고 했지만, 이 또한 ICON 2.0에 탑재될 예정입니다.
그러나, 당초에 예정되었던 기여제안시스템(Contribution Proposal System)은 스마트컨트랙트 수준에서 개발되어 배포는 진행될 예정입니다. 하지만, 원래 계획과 달리, 네트워크에서 자동적으로 블록 보상의 일부를 할당하는 것이 아닌, ICON 재단 혹은 다른 P-Rep과 협업하여 이 펀드를 충당할 계획입니다.
우리는 ICON 2.0을 출시해 또 다른 도약을 준비 중입니다. ICON 생태계는 여러분들의 많은 참여와 피드백을 기다리고 있습니다.
감사합니다.
ICON 팀 드림.