AERGO Chain Alpha와 AERGO Pre-Testnet을 공개합니다.

BFT 콘센서스와 AERGOSQL, 클라이언트 프레임워크, Browser Wallet등 다양한 개발도구가 포함된 알파 코드베이스를 공개합니다. 여기를 클릭해 네트워크 상태를 직접 보실 수 있습니다.

Han Kim
Aergo blog
12 min readNov 1, 2018

--

Translated by the AERGO team. English version found here.

지난 몇 달 간은 AERGO팀에게 아주 흥분되는 시간이었습니다. AERGO 토큰 생성 이벤트(TGE)에 앞서 퍼블릭 토큰 분배 이벤트(RewarDrop)를 성공적으로 마무리했을뿐만 아니라, LiteTree(branching 기능을 갖춘, 고성능 데이터베이스 엔진)와 State Trie(최상의 호환성을 갖춘 희소 머클 트리)를 오픈소스로 공개했습니다. 이를 통해 AERGO 프로젝트의 근간을 이루는, 핵심적이고 근본적인 오픈소스 가치를 살짝 보여드릴 수 있었습니다.

우리는 오늘, AERGO Chain Alpha와 AERGO Pre-Testnet를 공식적으로 공개할 수 있어 매우 기쁘게 생각합니다. 과부하(high-load) 상황에서 메모리 활용과 관련한 몇 가지 버그를 수정하기 위해 Alpha 공개를 조금 미뤄야 했습니다. 지연을 메꾸기 위해 우리는 기존 계획대로 이번 분기 말에 테스트넷을 오픈하는 대신, Pre-testnet 형태로 네트워크를 공개하게 됩니다. 또한, Chain Alpha 이후에 선보이고자 했던 몇 가지 추가 기능들을 함께 공개하고자 합니다. Pre-testnet은 블록 익스플로러(aergoscan.io)와 함께 출시되며, 이를 통해 네트워크의 행동과 성능을 확인하실 수 있습니다.

개요 ( GitHub aergoio에서 Alpha 코드베이스를 확인하세요)

9월 AERGO Chain Alpha와 함께 공개될 예정이었던 기능은 다음과 같습니다.

  • Simple dPOS
  • AERGO SQL smart contract (LLVM)
  • Basic client framework and development environment (other repositories)

이번에 AERGO Chain Alpha와 함께 공개된 기능들은 다음과 같습니다.

  • BFT-dPOS (consensus): 투표 기능 미적용. dPOS에서 발생할 수 있는 다양한 문제를 해결해 비잔틴 장애 허용(Byzantine fault-tolerance) 준수
  • AERGOSQL (Lua-jit): 데이터베이스 관련 기능을 제공하는 강력한 스마트 컨트랙트 언어
  • Client Ship: 클라이언트 프레임워크와 개발 환경을 포괄하며, npm과 유사한 패키지 관리와 테스트 환경을 제공(상세한 사용법에 대한 글이 곧 공개됩니다)
  • Client SDK: heraj (Java), herajs (JavaScript), herapy (Python)
  • Client CLI: AERGO 네트워크의 노드와 상호동작하는 커맨트라인 인터페이스 도구인 aergocli
  • Browser Wallet (1–2 주 후 공개): 메타마스트와 유사한 크롬 확장프로그램(extension)으로 자산 전송이 가능한 지갑
  • LiteTree (subproject): 장부에 기록된 데이터를 DB 특성으로 이용할 수 있도록 진보된 SQLite가 사용됨. LMDB를 적용하는 것 보다 높은 성능 제공
  • Sparse Merkle Tree (subproject): 빠르고 공간을 절약하는 희소 머클 트리
  • Pre-Testnet: 블록 익스플로러(https://aergoscan.io)를 이용해 성능을 모니터링 할 수 있는 pre-testnet 제공

BFT-dPOS (합의)

BFT-dPOS(Byzantine Fault-Tolerant Delegated Proof-of-Stake)는 서비스 품질과 성능을 위해 선택된, 빠르고 믿을 수 있는 합의 알고리즘입니다. 두 가지 핵심 항목으로 이뤄져 있습니다.

  • 블록 생성 방법: 보유자(Staker)는 블록 생성자(BP) 노드를 선택하고, 각 BP는 미리 정해진 순서대로 블록을 만듭니다.
  • 블록의 결정성을 보장하기 위한 최종 비가역 블록(Last Irreversible Block, LIB): 만약 특정 블록 뒤에 2/3 이상의 BP가 새로운 블록을 생성한다면, 그 블록은 LIB로 제안됩니다(1단계). 만약 2/3의 BP가 그 블록을 연결시키면 그 블록은 LIB로 확정되며(2단계), 이 블록과 이전 모든 블록은 최종적으로 선언됩니다.

두 단계를 통해 LIB를 결정하는 개념은 Bitshares나 Steem에서 사용되지 않은 dPOS 합의 방법입니다. 이는 최근에서야 EOS가 채택한 방법입니다. 기존 LIB 결정 방법론이 많은 문제를 일으킬 수 있다는 사실이 밝혀졌기 때문입니다.

  • 현재 BP의 숫자는 23개이며, 블록 생성 주기는 1초입니다 (프라이빗 체인 환경에서는 변경이 가능합니다).
  • 스테이킹을 통한 투표 기능이 적용됩니다. 코드와 aergocli 툴을 통해 이용할 수 있습니다.
  • 이번 alpha 버전에서는 BP 선정과 관련된 투표 기능은 포함되지 않습니다. (빠른 시일 내에 추가될 예정입니다.)

AERGOSQL

AERGOSQL은 Lua 기반의 정규 스마트 컨트랙트 엔진이며, SQL을 지원하는 스마트 컨트랙트 개발이 가능합니다. Lua에서 제공하는 기초 구문과 모듈을 사용할 수 있고, 블록체인 상호작용 및 SQL 이용을 위한 추가적인 모듈 뿐 아니라 스마트 컨트랙트를 위해 확장된 구문도 이용하실 수 있습니다. 상태 값은 key/value나 SQL 문법을 이용해 저장, 확인, 변경이 가능합니다. 실시간 컴파일러(JIT) 기술이 적용돼 성능을 개선하고, 컨트랙트 실행을 위한 컴퓨터 리소스에 비용을 매겨 블록체인 네트워크에 대한 공격을 예방합니다.

SQL을 지원하는 2개 언어가 제공될 예정이며, 이는 call-based SQL 통합 언어입니다. grammar-based SQL 통합 언어 역시 추후에 공개됩니다.

먼저, Lua 컨트랙트 언어가 알파 태그(0.8.0)에 포함되며, SQL (DB 기능)은 0.8.1에 출시됩니다.

Ship ( 클라이언트 개발 프레임워크)

Ship은 Lua 스마트 컨트랙트를 작성하기 위한 도구입니다. Ship을 통해 편리하고 쉽게 스마트 컨트랙트를 개발할 수 있습니다.

Ship은 다음과 같은 기능을 제공합니다:

  • 프로젝트 셋업: 간단하게 개발 준비를 완료할 수 있습니다.
  • 원격 저장소에서 패키지 설치: GitHub에 있는 패키지들을 로컬 저장소에 설치할 수 있습니다.
  • 빌드: 프로젝트 안의 소스를 전처리(결합)해 배포를 위한 준비사항을 생성할 수 있습니다.
  • 유닛 테스트: 네트워크에 업로드하기 전, 기능이 원하는 대로 동작하는지 확인할 수 있습니다.
  • 로컬 저장소 배치: 개발된 프로젝트를 로컬 저장소에 설치하여 다른 프로젝트에서 참조할 수 있도록 합니다.

Client SDK (heraj, herajs, herapy)

SDK는 개발자들이 AERGO 네트워크와 상호작용하고, 소프트웨어를 개발하기 위한 도구입니다.

Client SDK 프로젝트 이름은 hera로 시작합니다. 현재 Java(heraj), JavaScript(herajs), Python(herapy)을 지원하는 SDK를 제공합니다. Client SDK는 AERGO Chain과의 grpc communication을 통해 블록 및 블록체인, 트랜젝션 정보를 조회할 수 있습니다. 계정 생성, 서명 및 트랜젝션 커밋 역시 가능합니다. 또한, Lua로 작성된 스마트 컨트랙트를 위한 aergoluac 컴파일러를 이용해 payload 형태의 스마트 컨트랙트를 정의할 수 있으며, 이렇게 정의된 스마트 컨트랙트를 조회하고 실행할 수 있습니다.

Client CLI (aergocli)

aergocli는 커맨드 라인 인터페이스 도구입니다. 개발자들이 AERGO 네트워크를 이루는 노드와 상호작용 할 수 있습니다. 예를 들면, 노드가 알고 있는 블록에 대한 정보 확인, 계정 생성, 트랜잭션 전송, 스마트 컨트랙트 실행 등이 가능합니다.

Browser Wallet

메타마스크와 유사한, 브라우저 확장 프로그램으로 이용 가능한 간단한 지갑을 개발하고 있습니다. 이것은 이미 계정 생성과 AERGO 토큰 전송 및 수신을 지원합니다. 조만간 다른 종류의 토큰을 지원하는 것은 물론, 웹사이트와의 상호작용 역시 가능해질 예정입니다. 스마트 컨트랙트를 활용하는 경험을 최대한 안전하고 ,사용자 친화적으로 만들고자 합니다. 이는 다양한 기준과 프라이버시에 대한 고민을 필요로 하며, 안전한 보안 프로토콜을 초기 버전부터 탑재하게 됩니다.

Browser Wallet은 추후에 공개될 예정입니다.

LiteTree

LiteTree는 블록체인에서 데이터베이스 기능을 활용하기 위한 필수적인 요소입니다. 이는 branching이 가능한 개선된 SQLite 엔진으로, 개발자 커뮤니티에서 많은 관심을 모으기도 했습니다. 더 자세한 내용은 여기에서 확인하실 수 있습니다.

Sparse Merkle Tree

개선된 희소 머클 트리(SMT)가 AERGO 상태 데이터 인증에 이용됩니다. 초기에 깃헙 aergoio/SMT에 공개된 표준 SMT를 적용했지만, AERGO의 상태 저장소에 맞춰 최적화 과정을 거쳐 수정되었습니다. 상태 데이터 인증은 라이트 클라이언트 상태 인증과 머클 증명을 이용하는 자동화된 사이드 체인 자산 이동에 필수적입니다. 자세한 정보는 여기에서 확인하실 수 있습니다.

AERGO Pre-Testnet

우리는 공식적으로 AERGO pre-testnet을 출시했습니다. 이는 올해 말에 공개 예정이었던 실제 testnet과 동일한 방식으로 동작합니다. pre-testnet은 클로스드 베타와 비슷한 개념입니다.

Pre-testnet를 먼저 공개한 이유는 다음과 같습니다.

  • 파트너, 고객사 및 미래 고객에게 AERGO 개발 진행 과정을 선보이는 것,
  • AERGO 네트워크의 현재 성능과 확장성을 선보이는 것,
  • PoC나 네트워크 테스트를 원하는 개발자 혹은 고객이 네트워크에 접속할 수 있도록 하는 것.

Pre-testnet이 안정된 이후, 관심 있는 개발자들이 무료 pre-testnet AERGO token을 발급받을 수 있는 faucet을 출시할 예정입니다. 이렇게 지급된 토큰은 pre-testnet에서만 이용 가능하며, 이후 AERGO 토큰으로 변경되지 않습니다. 관련된 정보는 몇 주 안에 추가로 공개됩니다.

만약 네트워크 테스트에 관심이 있다면, 개발자 라이센스 획득을 위해 tech@aergo.io로 연락해주시기 바랍니다.

네트워크는 개발 진행 상황에 따라 개발팀에 의해 초기화되거나 하드포크될 수 있음에 주의하시기 바랍니다.

aergoscan

https://aergoscan.io

AERGO 블록 익스플로러는 다음 기능을 제공합니다.

  • 대시보드
  • 트랜잭션, 블록에 대한 실시간 정보
  • 초/분/시간 당 트랜젝션에 대한 실시간 계산 결과
  • 블록, 트랜잭션, 주소 디테일에 관한 세부사항
  • 트랜잭션 기록

대시보드의 통계자료를 이용하여 네트워크의 현재 상태와 성능을 확인할 수 있습니다. 또한 Developers 탭을 이용해 AERGO네트워크 사용과 관련된 정보를 받을 수도 있습니다.

aergoscan: Pre-Testnet scanner

What’s next?

AERGO Testnet은 2018년 4분기 말에 가동될 예정입니다. 테스트넷은 BP 선택을 위한 다양한 정책과 다양한 기능을 포함할 예정입니다. 지금까지 조용하게 작업해오던 결과물들을 선보일 수 있어 아주 기쁘게 생각합니다. 메인넷은 2019년 초에 공개됩니다.

AERGO Chain Alpha와 pre-testnet 공개는 프로젝트의 주요한 마일스톤입니다. 미래 고객들과 개발자 커뮤니티는 가동되는 네트워크와 정교한 개발 도구들을 활용해 AERGO 플랫폼 위에서 실질적인 개발을 시작할 수 있게 됐습니다.

이번 공개 발표는 아주 특별한 출발점입니다. 이를 통해 다양한 기업과 스타트업에 새로운 기회를 제공하는 글로벌 네트워크를 구축하려는 우리의 비전에 한 걸음 더 가까워졌습니다. 고객은 새로운 신뢰 역학을 활용하고, 서비스를 개선하고, 새로운 비즈니스 모델을 설계하고, 다양한 상업적인 사례에 적합한 안정적인 분산 네트워크 프로토콜을 이용할 수 있습니다.

AERGO는 이 여정에 함께하길 원하는 모든 분을 환영합니다. 우리는 개발자, 파트너, 기술 공급자 및 서포터가 어느 때보다도 필요합니다. 만약 관심 있으시다면 hello@aergo.io로 이메일을 부탁드립니다 (개발자는 tech@aergo.io로 연락주세요).

아래 AERGO 공식 채널에 참여해주세요.

--

--