기술 · SDK

프로토콜 정의 라이브러리

GProtocol은 동일한 프로토콜 정의를 다섯 가지 언어로 유지합니다. 액션 상수, 메시지 구조, 오류 key, 버전 번호입니다. Go가 기준 원본이며 나머지 언어는 항목별로 이에 맞춥니다.

언어패키지 이름내용상태
Gogather-gprotocol/go상수, 메시지 구조, 버전 판단, 서명 원문 조립 같은 보조 함수노드에서 사용 중
Dartgather_protocol상수와 타입(JSON 직렬화 포함)앱에서 사용 중
Javatop.gather.protocol상수와 타입정의만 있음
JavaScript@gather-network/gather-protocol상수, 타입, 메시지 팩토리 함수정의만 있음
Pythongather_protocol액션과 상수. Go 버전에서 자동 생성정의만 있음

다섯 언어의 일관성을 유지하는 방법

  • 커밋 전에 각 언어의 액션 목록, 라우트 유형 표기, 버전 번호를 자동으로 비교합니다.
  • Python 바인딩은 스크립트로 Go에서 생성하며, 생성 결과가 수작업으로 고쳐지지 않았는지 검증합니다.
  • 암호화와 관련된 형식(메일함, 그룹, 파일 자격 증명, 백업, 노드 디렉터리)에는 공유 테스트 벡터가 있으며, Go, Dart, Python 세 곳에서 바이트 단위로 비교합니다.

참조 구현

메일함, 그룹, 파일 자격 증명, 백업 네 부분의 암호화 형식에는 테스트 벡터를 생성하고 검증하는 데 쓰는 Python 참조 구현이 따로 있습니다. 각 언어의 프로토콜 라이브러리 자체에는 암호화, 네트워크, 클라이언트 구현이 포함되어 있지 않습니다.

개발자에게 공개

프로토콜 정의 라이브러리와 서드파티 개발 문서는 현재 아직 공개되지 않았습니다. 공개 계획이 정해지면 입수 방법과 문서를 여기에서 안내하겠습니다.