Q3–4 개발 업데이트 사항과 코드를 GitHub에 공개합니다!

2018년 7월 이후 개발 업데이트 사항

지난 수개월간 에어블록 개발팀은 전체 네트워크 및 백엔드 기술 아키텍처의 기능과 관련된 수천 줄의 코드를 끊임없이 테스트하여 에어블록의 모든 기능이 제대로 상호 작용할 수 있도록 했습니다.

약 반 년 동안의 개발 및 프라이빗 테스트 후, 에어블록 코드를 에어블록 공식 깃헙에 공개합니다!

개발은 백엔드 기능 중심으로 이루어졌으며, 이는 다음과 같은 카테고리로 분류할 수 있습니다:

데이터 관리 및 저장 기능| 아이덴티티 데이터 관리 | 데이터 릴레이어, 거래 및 익스포트 기능 | 에어블록 웹 및 모바일 SDK | 에어블록 API | Aero 사이드체인 개발 | 에어블록 노드 개발 | Python에서 Golang으로의 개발 언어 이전

데이터 관리 및 저장 기능

  • Data Warehouse 기능 구현
  • 데이터 저장을 위한 Bundle 시스템 도입 : Bundle은 동일한 카테고리에 속하는 데이터들의 집합입니다. 에어블록의 데이터는 각자 따로 저장되는 것이 아니라, 하나의 Bundle로서 함께 등록되고 저장됩니다.
  • Data ID Representation 개선 : Data ID는 <Bundle ID>/<User ANID>로 표현되며, 이는 사용자 중심의 데이터 관리를 용이하게 합니다.
  • gRPC stream 을 통한 데이터 스트리밍 기능 지원 : 이를 통해 효율적인 데이터 등록(data ingestion)이 가능하며 추후에 실시간 데이터 파이프라인 등과 통합될 수 있습니다.
  • Batch 컨셉 도입을 통한 Bulk Data Management System 개선 : Batch는 캐시 가능한 데이터 ID 집합으로, Trie와 유사한 자료구조를 통해 보다 메모리 최적화된 데이터 처리를 가능하게 합니다.
  • Data Warehouse와 DataRegistry스마트 컨트랙트 통합
  • Data Warehouse와 에어블록 meta-database BigchainDB 통합
  • Amazon S3 스토리지 드라이버 및 프로토콜 구현 : 이는 에어브릿지의 백엔드 데이터 파이프라인과 에어블록을 통합하는 데 필수적입니다.

아이덴티티 데이터 관리

  • Account Management System 구현 : 이제 사용자는 본인의 프라이빗 키 혹은 비밀번호를 통해 에어블록을 사용 (ex. 본인 데이터 통제, ABL 보상 출금) 할 수 있습니다.
  • Proxy Accounts 도입 : 사용자는 지갑 애플리케이션이나 Metamask 대신 비밀번호를 통해 에어블록을 사용할 수 있게 되며, 트랜잭션 수수료를 타인에게 위임할 수 있습니다.
  • DAuth 데이터 수집 인증에 사용되는 Temporary Accounts 구현 : 사용자는 Metamask 혹은 프라이빗 키 없이도 에어블록에서 임시 계정을 생성할 수 있습니다.
  • Server-side와 Client-side에 DAuth 구현

데이터 릴레이어, 거래 및 익스포트 기능

  • 스마트 컨트랙트를 통한 추상화된 데이터 거래 시스템 설계 : 새로운 시스템은 데이터 소비자가 원하는 데이터 거래의 유형에 따라 임의의 스마트 컨트랙트를 제시할 수 있게 함으로써, 모든 유형의 데이터 거래를 지원하도록 설계되었습니다.
  • 데이터 거래 프로세스를 Order, OpenClose의 세 단계로 개선 : 스마트 컨트랙트를 통해 더욱 맞춤형 데이터 거래 프로세스가 이루어집니다.
  • Exchange 스마트 컨트랙트 구조 리팩토링
  • 리카르디안 컨트랙트 지원 : 현재 엔터프라이즈 수준의 데이터 거래를 위해 리카르디안 컨트랙트를 사용하는 방법을 연구하고 있으며, 곧 정식으로 구현될 예정입니다.
  • Data Export 기능 구현 : 데이터 소비자는 데이터에 대한 재암호화 키를 제공함으로써 구매된 데이터를 확인할 수 있습니다.

에어블록 웹 및 모바일 SDK

  • 에어블록 모바일 및 웹 SDK 첫 버전 구현 : 해당 SDK는 데이터 수집 인증 기능 (DAuth)을 포함하고 있으며, 에어브릿지의 데이터 파이프라인을 활용하여 다양한 유형의 데이터를 수집할 수 있습니다.
  • 모바일 및 웹을 위한 DAuth UI/UX 개발
  • 샘플 어플리케이션에서 에어블록 모바일 SDK 베타 테스트

에어블록 API

  • gRPCProtobuf 도입 : 저희는 에어블록 프로토콜에서 더 많은 언어를 지원하고 방대한 양의 데이터를 처리할 수 있도록 하기 위해서는 gRPC가 제일 적합하다고 판단했습니다.
  • 데이터 거래를 위한 필수적인 API 구현
  • User-side API와 Provider-and-Consumer-side API 분리를 통한 API 디자인 개선

Aero 사이드체인 개발

  • 플라즈마 캐시 proof of concept 구현 : 저희는 스마트 컨트랙트와 watchtower 노드(Validator, Operator)만을 사용하여 플라즈마 캐시를 프레임워크화하는 데 초점을 맞춰 개발했습니다.
  • 트리 데이터를 직렬화하고 캐시할 수 있는 Sparse Merkle Tree 구현체를 개발했습니다.

에어블록 노드 개발

  • Python에서 Go로 언어 이전 : 기존에는 에어블록 프로토콜을 Python으로 개발하고 있었지만, 빠른 성능과 동시성을 고려했을 때 Go가 대규모 데이터 거래 프로토콜에 적합하다고 판단했습니다.
  • LevelDB 에서 BadgerDB로 로컬 데이터베이스 전환 : BadgerDB는 Go로 구현된 임베디드 데이터베이스 시스템이며, 다른 임베디드 데이터베이스보다 약 2~3배 빠른 속도를 지닙니다.
  • libp2p을 통한 P2P 네트워킹 기능 추가 : Go로 이전했기에 최고의 P2P 네트워킹 스택을 사용하지 않을 이유가 없습니다 :)