[스티밋 공지] 커뮤니티/하이브마인드 개발 진행 상황

스티밋 공식계정에서 올린 소식입니다.
@steemitblog/update-communities-hivemind


하이브마인드는 새로운 API와 커뮤니티 기능을 탑재한 백엔드 서비스 입니다.
하이브마인드 개발을 담당하고 있는 @roadscape 가 올린 소식입니다.

하이브마인드는 스팀 블록체인 윗단에 올릴 데이터베이스 레이어 입니다. 기존의 미니멀한(=사용하기 불편한) API 때문에 고생할 필요 없도록 개발자를 위해 편리하게 만들고 있습니다. 커뮤니티 기능은 하이브마인드를 이용한 하나의 use case 일 뿐, 하이브마인드의 활용범위는 더욱 넓습니다.

하이브는 개발자 친화적

기존에 쓰이는 스팀 API 는 steemd 노드에서 직접적으로 트렌딩 글목록이나 계정 프로필 정보, 명성점수, 댓글, 팔로워 등등을 가져와 써야 했습니다.
기존에는

  1. C++로 짜여진 steemd 노드 단에서 직접 rate limit 를 조절해야 했고
  2. 코드 수정이 필요할 때 컨센서스 레이어와 너무 가까운 부분을 건드려야 했기에
    애플리케이션 개발자(융통성/간단성)와 블록체인 개발자(보안/안정성)를 분리해야만 했었습니다.

앱 개발자들이 원하는 정보는 대부분 컨센서스쪽과 거리가 먼 것들이라서, 블록체인 노드에 들어있어야 할 이유도 없고 블록체인 노드에 직접 액세스 하는 것도 좋지 않습니다.
모든 관련 정보들을 블록체인이 아닌 데이터베이스에 담아서 항상 블록체인상의 최신 데이터와 동기화를 시켜놓고 로직과 기능을 추가해서 레이어를 올렸습니다. 이것이 하이브 입니다. 파이썬으로 짰기 때문에 개발자들이 API 의 behavior 를 변경해 보고 실험해보기가 쉽습니다.

확실함에 대한 보장

하이브는 컨센서스 부분이랑은 관계가 없으므로 정확한 최신의 정보를 제공해야 한다는 점이 중요합니다. 포크 발생시 어떻게 해결할지가 어려운 부분입니다. 증인 노드에서 메모리상의 Undo 를 하긴 하지만 증인노드 바깥에서는 그것을 바로 알기가 쉽지 않습니다. 최신의 되돌릴수 없는 블록(last irreversible block)은 45초나 지난 정보입니다.
하이브는 이 문제를 개선해서 6초 전의 정보 까지 따라잡습니다. 증인 노드 바깥에서 최신의, 포크 없이 정확한 정보를 얻으려면 추가적인 메카니즘이 들어가야 하고 가끔씩 하이브가 2블록이 넘도록 포크가 날 경우에 복구하는 기능까지 구현했습니다. 앱 개발자는 하이브를 0초 딜레이로 설정해서 쓸 수도 있고(이 경우 포크된 정보를 바로잡는 부분까지 다뤄줘야 함) 완전한 안전성을 위해서는 딜레이를 100블록(5분 정도)으로 설정하면 됩니다.

하이브는 특정한 정보만을 구체적으로 제공합니다

  • 글 : 특정 계정이 쓴 지난 글, 트렌딩, 핫, 최신글 등
  • 커뮤니티 : 관리자의 역할과 액션, 커뮤니티 멤버, 커뮤니티 피드 (스펙 참조)
  • 계정 : 정규화된 프로필 데이터와 명성점수
  • 피드 : 팔로우/언팔로우, 리스팀/리스팀 취소 (네, 리스팀 취소 기능 생깁니다!)

하이브는 블록체인 정보중에 일부만 담게 됩니다. 지갑, 내부마켓거래주문, 에스크로, 등등에 대해서는 하이브 말고 SBDS 나 steemd 에서 가져와야 합니다.

창의성

하이브를 이용해서 창의적인 시도를 해볼 수 있습니다.

  • 리액션, 즐겨찾기
  • 리스팀에 대한 댓글
  • indexing of custom profile data
  • 지난 글들을 카테고리로 분류하기, 지난 글들을 필터링 검색하기
  • 투표/설문조사 (무료투표, 유료투표, 참여시 일정 금액을 소각 시켜야 하는 방식의 투표)
  • 차단 (스팸, 어뷰즈, 성격에 맞지 않는 컨텐츠)
  • crowdsourced metadata
  • mentions indexing
  • 풀 텍스트 검색
  • 통계
  • 팔로우 목록
  • 봇 추적
  • 미니 게임
  • 커뮤니티 봇

이외에도 여러가지 창의적인 시도가 가능합니다.

현재 개발 진행 상황 : 알파

하이브 1.0 : 코어

1.0 버전은 get_state API 와 글목록 가져오기 API 만 돌아가도록 해서 steemit.com 의 condenser 에서 사용해보면서 테스트 합니다.
기존의 steemd API 부분을 하이브마인드로 대체하는 것이 목표입니다.
진행은 거의 완료되었습니다
현재는 프로덕션 런칭과 퍼포먼스 튜닝에 주력하고 있습니다. 그러고 나면 API 테스트를 해봅니다. 테스트가 성공하고 나면 condenser는 하이브를 사용하도록 합니다.
이 과정에 아무 문제가 없다면 사용자들은 아무런 변화도 못느낍니다.

프로덕션 버전의 블록체인을 리인덱스 해서 첫 테스트한 결과를 보면 최신 블록에서 쿼리해오는 시간이 0.03초가 걸렸습니다. 복잡성이 증가하면서 앞으로는 이보다 느려지긴 할겁니다.

현존하는 블록체인중에서 이정도로 큰 용량의 공개 소셜 데이터는 또 없습니다. 스팀은 20,900,000 개 이상의 블록을 생성했으며 285,000,000 개 이상의 트랜잭션을 처리했습니다.
하이브가 가지고 있는 더 큰 잠재력에 대해서는 API 가 확정 되고 나서 포스팅할 예정입니다.

하이브 1.5 : 커뮤니티

어려운 부분이 다 되고나면 하이브 1.5 에서 재미있는 부분이 시작됩니다. 커뮤니티 기능 이후로는 스팀 블록체인 위에서 완전히 새로운 형태의 상호작용이 이루어 집니다. 비슷한 사람들끼리 쉽게 어울리며 큐레이션 하고, 결속을 다지게 될 때
스팀 생태계가 어떻게 진화할지 흥미롭습니다. 태양아래 모든 것에 대해 이야기 나눌 바로 그곳이 스팀 블록체인이 될 것으로 봅니다.

여러분들이 커뮤니티 기능을 기다리고 있다는 것을 알고 있습니다. 아직 커뮤니티 기능을 100% 완료시키기 까지는 할일이 좀 남았지만 현재 1.0 완료 까지는 매우 가까웠습니다.

Stay tuned!

@roadscape, Team Steemit

H2
H3
H4
3 columns
2 columns
1 column
46 Comments