Reading:
Stoa와 상호작용할 TypeScript SDK 생성, BOSAGORA UN SDG 액션 어워즈 수상 등
Image

Stoa와 상호작용할 TypeScript SDK 생성, BOSAGORA UN SDG 액션 어워즈 수상 등

by Rooney
2020-08-13

2020년 7월 월간 리포트

개발

Image for post

7월은 쿼럼 밸런싱과 Stoa SDK/API 개발 작업을 진행하는데 집중했습니다. 쿼럼 밸런싱 개발 작업은 75%가량 마쳤으며, 9월 말 출시를 목표로 하고 있습니다. 현재 개발 중인 Stoa SDK/API는 지금부터 내년 5월 말까지 완료된 작업을 순차적으로 보여드릴 예정입니다.

현재 밸리데이터 개발을 완벽하게 끝내기 위해 모든 코어 개발자가 투입되어 작업 중이며, 이에, 세컨드 레이어 작업 일정은 조금 미뤄진 상황입니다. 반면, 코어 개발과 동시에, 로드맵 상 내년 상반기로 예정되어 있는 툴 개발 작업을 함께 진행하며 전체적인 개발 일정의 밸런스를 맞추어 메인넷 개발에 무리가 없도록 할 것입니다.

AGORA 개발의 효율적인 진행 및 완료를 위해 개발팀은 새 개발자를 2명 더 채용했고 곧 1명을 더 합류할 예정입니다. 아래는 지난달 개발 활동과 항목들을 요약한 것입니다.

7월의 핵심 개발사항:
월간 활동:
지난달 55개의 코드병합요청(풀리퀘스트)과 39개의 활성 이슈가 있었습니다. 그중:

  • 7개의 코드병합요청이 오픈되었고,
  • 55개의 코드병합요청이 통합되었으며,
  • 19개의 새로운 이슈가 있었고,
  • 20개의 이슈가 마감되었습니다.

개발된 기능:

#15 Stoa와 상호작용할 TypeScript SDK 생성

이 기능은 7월 초 마이클과 헨리가 개발했습니다. 이로써 개발팀은 Stoa와 상호작용할 TypeScript(TS) SDK를 만드는데 첫발을 내디뎠었습니다. TS SDK는 서드파티 개발자들이 AGORA와 상호작용할 툴을 만들 수 있도록 도와줍니다. 아래 기능들을 고려하여 해당 개발을 완료했습니다.

  1. bool verify(ubyte[] signature, ubyte[] message, PublicKey public_key): public_key로 만들어진 메시지의 서명이 유효한 서명인지 확인합니다. libsodium 라이브러리에 대한 바인딩을 사용해야 합니다.
  2. 기본적으로 다음과 같습니다: https://github.com/bpfkorea/agora/blob/93c31daa616e76011deee68a8645e1b86624ce3d/source/agora/common/crypto/Key.d#L226-L23
  3. bool isValidPreimage(Hash original_preimage, ulong original_preimage_height, Hash new_preimage, ulong new_preimage_height) → 만약 new_preimage_height < original_preimage_height이거나, (original_preimage_height — new_preimage_height)번 동안 해시된 original_preimage가 new_preimage와 같지 않은 경우 거짓값을 반환합니다.
  4. Validator[] getAllValidators(uint height | null) → /validators를 호출하고 결과를 반환합니다.
  5. Validator getValidator(PublicKey address, uint height | null) → /validator/{address}를 호출하고 결과를 반환하거나 그러한 검증자가 없는 경우 예외를 발생시킵니다.

마지막 두 가지 경우에서, 높이 파라미터는 선택적이므로 Null 값이 되거나 TS의 표준에 따라 값이 달라집니다.

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/boa-sdk-ts/issues/15

#28 Stoa와 풀노드를 묶을 도커 이미지 생성

이 기능은 마이클과 헨리가 개발했습니다. 이 역시 Stoa 개발의 일부입니다. 저희는 Stoa와 풀노드 코드를 묶는 이미지를 배포하기 위해 도커를 사용했습니다.

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/stoa/issues/28

#29 콜백, 블록, 거래 등의 유형 정의 추가

이 기능은 마이클과 헨리가 개발했습니다. 개발팀은 Stoa에서 ‘any’ 에 대한 사용을 제거할 수 있도록, 유형 정의가 있는 모듈을 가지는 게 옳다고 판단하였습니다.

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/stoa/issues/29

#789 노드의 검증자 등록 정보 복구

이 기능은 제이가 개발했습니다. 노드의 검증자 등록 정보를 관리하는 테이블은 제거될 수 있습니다. 테이블이 관리하는 모든 데이터는 여러 방식으로 복구될 수 있기 때문입니다. 데이터베이스 테이블을 사용하는 것은 복잡한 데이터가 많다는 것을 뜻하기에 효율적인 관리가 필요합니다. 현재, 테이블은 아직 적은 데이터를 관리하고 있습니다. 이 작업은 아래와 같이 몇 가지 할 일을 포함합니다.

완료 정의:

  • 노드에 의해서 등록을 등록하는데 사용한 검증자 등록 정보 복구
  • 검증자가 프리이미지를 노출해야 하는 블록 높이 복구
  • EnrollmentManager에서 ‘remove’를 제거
  • ‘ValidatorSet’의 ‘remove’를 프라이빗 함수로 변경

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/agora/issues/789

#900 블록 검증을 실패하게 할 지명과 등록 외부화 차단

이 기능은 제이가 개발했습니다. #899에서 지명 관련 몇 가지 이슈를 발견했습니다. #899 이슈는 임시방편에 불과하지만 등록을 지명하는 것(그리고 일반적인 지명)은 훨씬 많은 고민이 필요합니다.

아래 이슈들이 확인되고 수정되었습니다:

  • 비록 ValidatorSet에 있음에도 불구하고, 지명되기 위해 EnrollmentPool에 남아 있는 여분의 등록이 있습니다;
  • Ledger.prepareNominatingSet이 지명될 수 있는 결과에 대해 확인하지 않습니다;
  • 다른 노드들이 중복된 등록에 관해 합의를 달성했습니다 (!)

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/agora/issues/900

#1033 블록 수신으로 시작하여 아고라에 이벤트 알림 추가

이 기능은 마이클과 헨리가 개발했습니다. 이 이슈는 노드에서 발생하는 특정 이벤트들에 프로그래밍 방식으로 응답하기 위해 생성되었습니다. 향후, SSE로 전환할 수 있지만 초기 버전인 현재는 단순하게 유지하려고 합니다.

위 기능은 이벤트들을 위한 목록을 만들고, 각 이벤트마다 해당 이벤트가 발생할 때 구성 파일에 페이로드(HTTP POST)를 푸시 할 URL을 지정하는 섹션을 갖는 아이디어를 구현하기위해 개발되었습니다.

추천 이벤트:

  • 블록은 캐치업 혹은 직접 참여를 통해 외부화됩니다;
  • 유효한 프리이미지가 수신됩니다(스토아가 개발을 지속하기 위해 필요);

완료 정의:

  • 아래와 같이 YAML 섹션이 있습니다:

event_handlers:
block_externalized:
– http://abcdef.net/push
– 127.0.0.1:3333/push
preimage_received:
– SomeOtherURL

해당 이벤트가 발생하면 페이로드가 HTTP POST 요청을 통해 JSON 바디를 페이로드로 하여 URL로 전송됩니다. 구현 팁: 각 이벤트 핸들러를 단일 메소드 인터페이스로 구현하고 REST 코드 생성기를 사용하는 것을 추천합니다, 예를 들어:

interface BlockExternalizedHandler
{
@method(HTTPMethod.POST)
@path(“/push”)
// Using `/` for `@path` might be possible, in which case the path is passed to the `RestInterfaceClient`:
// scope client = new RestInterfaceClient!BlockExternalizedHandler(“http://127.0.0.1/push/“);
void push (Block block);
}

이와 같이 설정하면 테스트 케이스에서 의존성 주입이 쉽고, 테스트 시, 이를 사용하는 유틸리티를 만들 수도 있습니다.

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/agora/issues/1033

#42 스토아 API 서버에 HTTP 요청과 응답에 대한 테스트 구조 추가

이 기능은 마이클이 개발했습니다. 스토아 API 서버에 HTTP 요청과 응답을 테스트하기 위해 이 기능을 개발했고, 덕분에 제품을 고 품질로 유지관리할 수 있게 되었습니다.

완료 정의:

  • 스토아 서버가 테스트 코드에서 실행될 수 있음
  • 스토아 서버는 테스트 코드에서 중지될 수 있음
  • 테스트 코드는 스토아 서버에 요청을 보내 결과를 확인

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/stoa/issues/42

#37 sqlite3의 ‘Statement’를 사용하여 간단한 변화를 만들 능력 추가

이 기능은 마이클이 개발했습니다. 다중 기록을 데이터베이스에 삽입할 때, 기존의 복잡한 순환문은 ‘Statement’를 사용해 간단히 변경됩니다:

ex)
var stmt = db.prepare(“INSERT INTO users VALUES (?,?)”);
for (var i = 0; i < 10; i++) {
stmt.run(“user “ + i, “email “ + i);
}
stmt.finalize();

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/stoa/issues/37

#13 https://www.npmjs.com/에 ‘npm 패키지’ 형식으로 SDK 발행

이 기능은 마이클이 개발했습니다. 이 기능은 단순히 SDK를 패키지로 게시하기 위한 것입니다.

완료 정의:

  • /src 폴더 안의 TypeScript를 lib/ 폴더로 컴파일하기
  • 어떻게 라이브러리를 설치하고 사용할지에 대한 설명서를 제공
  • ‘npmjs’에 계정을 만든 후 조직을 만들고 조직에 팀원들을 초대
  • 조직의 소유권으로 BOA-SDK를 발행

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/boa-sdk-ts/issues/13

#14 브라우저에서 사용될 수 있는 라이브러리 필요

이 기능은 마이클과 헨리가 개발했습니다. 다양한 웹 응용프로그램을 개발하려면 브라우저에서 작동하는 형태로 패키지 해야 합니다. 이것은 여러 파일을 압축한 자바 스크립트 호환 버전이어야 합니다.

완료 정의:

  • 여러 파일을 함께 묶고 크기를 최소화합니다
  • 자바스크립트에서 사용 가능합니다
  • 테스트 사이트를 개발합니다

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/boa-sdk-ts/issues/14

#821 setGenesisBlock / genesis config를 하드코딩된 블록으로 교체

이 기능은 마티아스가 개발했습니다. 개발팀은 사용자가 구성할 수 있는 제네시스 블록에 대한 대안이 필요하여 이 기능을 개발했는데, 처음에는, 이 솔루션을 사용하여 단위 테스트/ 통합 테스트/ 테스트넷/ 코인넷에 다른 제네시스 블록을 사용할 수 있었습니다.

하지만, 구성 파일이 손상되었거나 사용자 오타로도 노드가 다른 제네시스 블록을 사용할 수 있다는 문제가 있었습니다.

한 가지 대안으로 ‘version()’ 블록을 사용하고 ‘-version=CoinNet’, ‘-version=TestNet’으로 아고라를 만드는 것이 있지만, 여러 바이너리를 배포해야 하므로 또 문제가 되었습니다.

더 나은 대안은 몇 가지 사전 구성된 제네시스 블록 사이에서 런타임 선택을 갖는 것입니다.

따라서 ‘config.genesis_block’ 대신 ./agora — mode=coinnet | ./agora ‘ — mode=unittest’ 또는 그러한 효과를 가진 다른 것을 가지게 됩니다. 구성 옵션이 될 수도 있지만 요점은 블록에 대한 헥사 덤프가 아니라 사전 구성된 제한된 수의 옵션이 있는 선택입니다.

더 많은 정보를 보시려면 아래 깃허브 링크를 참고하세요:
https://github.com/bpfkorea/agora/issues/821

진행 중인 검증자 개발:

  • 풀에 있는 거래 수에 기반해 블록을 생성하는 것으로부터 변경 진행#1004
  • 노드 환경설정과 블록 스토리지에 대한 일관성이 확인되지 않음 #1006
  • 연결되지 않은 노드에 “Invalid pre-image data”가 나타남 #1062
  • /preimage_received API Endpoint 구현 #52
  • 최근 PR이 통합될 때 자동적으로 생성될 SDK 문서가 있는 웹 페이지를 추가 #22
  • 통합 테스트가 요청을 ‘0.0.0.0’ IP로 보냄 #1051
  • 블록에 모든 데이터가 저장되지 않으면, 원래 상태로 복귀 #51
  • 통합 테스트는 스택 추적을 갖지 않음 #1061
  • 안전하지 않은 헤더인 “User-Agent” 세팅 거절 #23
  • JSON 데이터를 확인하기 위한 JASON-Schema 사용 #55
  • Agora에서 없어진 블록들을 요청하고 되찾는 능력 구현 #45
  • 쿼럼이 주기적으로 뒤섞이도록 하는 기능 #1069

마케팅

BOSAGORA UN SDG Solidarity Action Awards 수상

Image for post

BOSAGORA가 ‘케어 프로젝트(Project Care)’의 지역 사회 기여를 인정받아 UN의 SDG Solidarity Action Awards를 수상했습니다. UN은 매년, 전 세계를 대상으로 지역 사회와 이웃에 도움이 되는 프로젝트를 선별하여 SDG Solidarity Action Awards 수여해왔습니다. 올해는 코로나로 모두가 고통받는 시기에 의료진 및 이웃을 돕는 전 세계 수백 건의 프로젝트를 모집했고, 그중, Top 50개 사례를 뽑아 시상했습니다.

유럽 연합 외교 안보 위원회 부회장, UN 재단의 부사장 등 총 26명의 글로벌 기관, 기업의 전문가들이 심사한 이번 UN SDG Solidarity Action Awards는, 한국 블록체인 업계는 물론, 한국 기업 최초로 BOSAGORA가 수상했고, 글로벌 블록체인 업계에서는 IBM 블록체인과 함께 수상의 영광을 나누었습니다.

BOSAGORA는 앞으로도 프로젝트의 개발에 열중함은 물론, ‘더 나은 세상’을 추구하는 프로젝트로써의 비전을 실천하겠습니다.

자세한 내용은 아래 링크에서 확인하세요.
https://medium.com/bosagora/bosagora-won-un-sdg-action-awards-116539ffe238

UN SDG Solidarity Action Awards 수상 공유 이벤트

Image for post

이후, BOSAGORA 트위터에서 UN SDG Solidarity Action Awards 공유 이벤트를 실시했습니다.

이벤트에는 여러 국가의 커뮤니티에서 많은 분들이 참여해 주셨고, BOSAGORA의 수상 내용을 널리 알리는데 기여한 ‘가장 많은 RT(retweeted)’와 ‘가장 많은 태그 활동’을 해주신 두 분을 뽑아 보상했습니다.

중국 수해민 돕기 Jia You 기부 캠페인

Image for post

최근 중국 내, 몇 주 간 쏟아진 엄청난 비로 인해, 한국의 인구수에 맞먹는 5,000만 명의 수해민들이 생기며 이들의 집과 삶이 파괴되었습니다. 이에, 저희는 중국 현지에 있는 기업인 현대 LCD와 함께 ‘중국 수해민 돕기 Jia You 기부 캠페인(Jia You Donation Campaign)’을 통해 중국의 적십자사에 기부금을 전달했습니다.

보아 토큰의 첫 공식 기부 활용 사례인 이번 캠페인은 BOSAGORA 측에서 모금된 총 36,225 BOA(18,300 yuan)와 현대 LCD의 기부금을 모아 공동 모금으로 진행했는데, 덕분에 환전 수수료 및 기타 중간 비용이 없었고, 모금 시작 후 3일 만에 기부금을 중국 적십자로 빠르게 전달하는 등 파트너십의 중요성 또한 느낄 수 있었습니다. 모금된 기부금은 우한 지역 홍수 재난 기금으로 사용될 예정입니다.

Image for post

저희는 앞으로도 BOSAGORA의 기술력과 플랫폼을 활용하여 다양한 캠페인 및 이벤트 활동으로 좋은 선례를 만들며 ‘더 나은 세상’을 만들어나가겠습니다.

자세한 내용은 아래의 링크에서 확인하세요.

BPF 재단명 변경

Image for post

보스아고라의 사업 운영 주체인 BPF(BOS Platform Foundation)의 재단명이 BOSAGORA 재단(BOSAGORA Foundation)으로 변경되었습니다. 재단은 BOSAGORA라는 새로운 프로젝트로 명맥을 이어감에 따라, 보다 통일감 있는 브랜드 구축 및 파트너들과의 원활한 관계 형성을 위해 재단명 역시 프로젝트명으로 통일하게 되었습니다.

앞으로 BOSAGORA 재단은 약속한 개발을 마무리 짓고 추가적인 파트너십과 마케팅을 통해 전 세계 더 많은 사람들에게 BOSAGORA 프로젝트를 알리며 커뮤니티와 함께 발전하도록 꾸준히 노력하겠습니다.

인도네시아 & 인도 커뮤니티와 BOSAGORA 참여 캠페인 1, 2차례

Image for post

올 초 글로벌 유튜버들의 BOSAGORA 소개 영상 콘텐츠 프로젝트를 진행하며 관계를 형성한 글로벌 커뮤니티들과 함께 해당 커뮤니티에 BOSAGORA를 알리는 캠페인을 진행했습니다.

인도네시아 및 인도 커뮤니티와 함께한 이번 캠페인은, 참여자들이 BOSAGORA의 뉴스레터를 구독하고 텔레그램 멤버가 된 뒤, 미디엄 내 BOSAGORA의 콘텐츠를 체험하며 이를 트위터에서 리트윗을 통해 친구들에게 알려 더 많은 사람들에게 BOSAGORA가 노출되도록 설계하여 진행했습니다. 이후 BOSAGORA의 뉴스레터 구독자 및 텔레그램, 트위터 참여자 수가 크게 늘었고 콘텐츠 조회 수도 많아지는 등 커뮤니티에 활기를 불어넣었습니다.

AMA 실시

Image for post

최근 UN SDG Solidarity Action Awards 수상 및 중국 수해민 돕기 Jia You 기부 캠페인 등의 BOSAGORA 소식이 외부에 널리 알려지며 이에 대한 질문을 받았고 이에 답하기 위해 다양한 AMA를 진행했습니다. 커뮤니티 내 많은 사람들이 개발 및 생태계에 대한 질문은 물론, 프로젝트가 공식적으로 지향하는 목표와 메인넷 이후의 비즈니스 등 BOSAGORA를 지속 가능한 프로젝트로 만들기 위한 우리의 노력에 많은 관심을 보여주었습니다.

‘더 나은 세상’을 비전으로 삼고 있는 BOSAGORA는 플랫폼 내 수많은 파트너십은 물론, 인도적인 활동을 펼치며 SDG를 실현하는 글로벌 블록체인 프로젝트가 되겠습니다.

자세한 내용은 아래의 링크에서 확인하세요.

Bitboy: BOSAGORA contents for July

Image for post

비트보이는 7월 유튜브 콘텐츠에서 암호화폐 업계에 많은 영향력을 끼치고 있는 떠오르는 프로젝트를 소개하며 BOSAGORA를 언급했습니다.

BOSAGORA의 프로젝트 케어부터 UN SDG Solidarity Action Awards 수상, 그리고 블록체인 권리장전 지지 서명까지 언급한 비트보이는, BOSAGORA는 단순히, 개발만 진행하는 프로젝트가 아닌, 이웃과 더불어 살아가는 ‘더 나은 세상’을 지향하는 프로젝트라고 소개했습니다. 자세한 콘텐츠 내용은 하단의 링크에서 확인하시기 바랍니다.

비트 보이 콘텐츠 보기: https://bit.ly/308fBUv

7월의 테크 트렌즈: BOSAGORA 기술 & 트렌드 칼럼

Image for post

테크 트렌즈는 블록체인 업계의 기술 및 트렌드를 조망하는 BOSAGORA의 칼럼으로 7월에는 7, 8화가 발행되었습니다. 상세한 내용은 링크에서 확인하시기 바랍니다.

#7 미래를 대비하는 스마트 컨트랙트 블록체인
https://bit.ly/2DtMMtn

#8 암호화폐 투자자, 그들은 무엇을 기다리나?
https://bit.ly/2PG3XtT


Please join our communication channels as follows!

Website(Kor): https://bosagora.io/ko
Website(Eng): https://bosagora.io
Telegram(Kor): https://t.me/bpf_korea
Telegram(Eng): https://t.me/bpf_eng
BOSAGORA Official Announcement: https://t.me/boa_announcement
Medium: medium.com/bosagora
Twitter: https://twitter.com/BOSAGORA1
Reddit: https://www.reddit.com/r/BOSAGORA_BOA/
Facebook: https://www.facebook.com/BOSAGORA/
Linkedin: https://www.linkedin.com/company/bpf-korea/
Youtube: http://bit.ly/2YFpd5r
Github: https://github.com/bpfkorea

BOSAGORA TEAM


0 Comments

댓글 남기기

Related Stories

2020-05-20

BOSAGORA 설립 1주년

by
Arrow-up