BOSAGORA
Published in

BOSAGORA

/block_externalized endpoint does not need to be disclosed to the public, The Direction of BOSAGORA Development and the Achievements of the past year, etc.

Monthly Report September 2020

DEVELOPMENT

The team finished September strong by closing nearly three dozen Github issues. Over the last quarter the team made it a goal of ours to drastically increase our code coverage to ensure we’re delivering a best in class blockchain platform that will act as a foundation for the future. During September we split our development into four different delivery streams:

  • Validator
  • Stoa
  • Boa-sdk
  • Votera wallet (which we’ll talk about in more depth in the future).

The following is a summary of last months development activity and items that are currently still under development:

Core Development in August:
Monthly Activity:

Last month we had 50 Agora related pull-requests and 48 active issues. Of which:

  • 6 pull request were opened
  • 44 pull requests merged
  • 19 new issues
  • 29 issues closed

Functionality Developed:

/block_externalized endpoint does not need to be disclosed to the public. #76 (Stoa)

This piece of Stoa functionality was developed by Henry during the first part of September. Among the API lists released on the same port. The endpoint received from Agora in the PUT method should not be opened to the public. Additionally it can receive untrusted block data and it must be communicated from a trusted Agora node. The solution to this can be done by applying the request IP’s WhiteList. It can also divide Port if it has a firewall. The best way to do this would be to apply IP WhiteList to the target Route.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/stoa/issues/76

Implement secret key and seed for signature #28 (Boa-sdk)

This piece of boa-sdk functionality was developed by Michael during the first part of September. The functions below are needed.

  • It is necessary to create a Keypair including a public key, a secret key, and a seed.
  • It’s necessary to be able to sign.

Other additional functions should be implemented by referring to the Agora

Please refer to the Github link below for more information:
https://github.com/bpfkorea/boa-sdk-ts/issues/28

Implement a per-node request queue for gossiping #1149 (Agora)

This piece of functionality was developed by Drey during the first part of September. Issue #1145 revealed that there are numerous fibers spawned for every single gossiping request. This means in the example of 10 nodes gossiping 8 transactions would lead to the creation of 80 fibers. The ManyValidators test would spawn over 1600 fibers over the course of the run of the test.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/1149

Implement a lock on the caching directory #829 (Agora)

This piece of functionality was developed by Daniel during the first part of September. This enhancement was to fix the possibility of someone being able to create two separate instances of a node in the same working directory.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/829

When storing block data in a database, it is necessary to save storage space. #60 (Stoa)

This piece of Stoa functionality enhancement was developed by Michael during the first part of September. This functionality enhancement was to the standard Hash Signature data from string to BLOB.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/stoa/issues/60

Redefines the type of data as same as the block structure of the agora #81 (Stoa)

This piece of Stoa functionality was developed by Michael during the first part of September. The following was used to redefine data within Stoa:

  • Use an instance of the class Hash instead of a hash string.
  • Use an instance of the class Signature instead of a signature string.
  • Use an instance of the class PublicKey instead of a public key string.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/stoa/issues/81

Implement functions such as hashFull and hashPart in Agora #83 (Stoa)

This piece of Stoa functionality was developed by Michael during the first part of September. For this functionality it was necessary to calculate the hash of various data and to allow it to be used in various places.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/stoa/issues/83

Add the hash value of the current block header to the database. #84 (Stoa)

This Stoa functionality enhancement was developed by Chris during the first part of September. Previously, the hash value of the block did not exist in the database, so it was impossible to query data with the hash value. Now the block can be queried at the hash value. The hash value has been added to the database table and is now processed when entering data.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/stoa/issues/84

Implement synchronization of clocks across the network #1174 (Agora)

This piece of functionality was developed by Drey during the last part of September. Pull request #1100 implements time-based nomination. However it’s based on the node’s local clock, which can drift over time. The node itself uses the OS time which is synchronized via NTP under-the-hood. This functionality implementation was made to minimize the possibility of clock drift occurring within the network.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/1174

Logging should not expose any secret keys #719 (Agora)

This functionality enhancement was developed by Ku Chul during the last part of September. If someone was to find a bug in Agora they would have to submit a log dump. We wanted to make sure that these log dumps did not emit any private keys, rather than just removing its output, we considered several alternatives:

  • Emit a hashed version of the key. It may help with logging in case that key appears in multiple error messages.
  • Emit a shortened pretty-printed version of the key.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/719

Transition away from creating a block based on the number of transactions in the pool #1004 (Agora)

This piece of functionality was developed by Jay during the last part of September. Previously, When we would attempt to nominate a set of transactions as soon as there were 8 available transactions. What we wanted was to create blocks at a regular interval, regardless of the number of transactions. We wanted this to be able to use the block height as a measure of time. Our previous thinking based on our whitepaper targets an interval of 10 minutes between blocks, but this should be configurable through ConsensusParams so we can write tests.

Questions we tried to answer:

  • How do we take into account the time it takes to nominate a block?
  • How long before the “deadline” should nomination start?
  • What timeout strategy do we use for nomination?
  • How do we ensure the network is always live?

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/1004

Implement a VirtualClock to make tests more efficient and reliable #389 (Agora)

This piece of functionality was developed by Drey during the last part of September. We already use something similar for our BanManager tests, where we override the BanManager’s clock routine to return a “fake” clock time. Stellar-core does something similar for its entire test-suite, and especially for the SCP tests. With a virtual clock we can make tests more efficient, and we can simulate arbitrary delays without having to physically wait for the wall clock time to advance.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/389

Split off keypair from Config and into a separate ValidatorConfig #816 (Agora)

This piece of functionality was developed by Ku Chul during the last part of September. Previously, the keypair was in the main Config, but it didn’t make sense for FullNodes. Keeping it here would cause bugs, because code will assume the keypair is always valid.

Please refer to the Github link below for more information:
https://github.com/bpfkorea/agora/issues/816

Ongoing Validator Development:

MARKETING

BOSAGORA development direction and achievements in the past year

BOSAGORA has disclosed to the community the development achievements of the past year and developments currently in progress to build a deliberative and democratic decision-making platform. It shed light on the core technologies that have been developed, from the completion of the full node basic structure for the integrity of the network, the development of a validator to prevent double payment, to the development of quorum balancing, and shared the latest news about node operation admin under progress and slashing function which will get rid of a malicious node.

We will continue to share the latest development news from the development team with the community through Github, Sprint Updates, and Monthly Report.

Read more: https://bit.ly/3iLKwfj

UN #Act4SDGs Turn it Around Campaign

BOSAGORA participated in the #ACT4SDGs World Week’s #TurnitAround campaign to create a ‘turning point to bring our daily life back from the corona era’. The #TurnitAround campaign is a global campaign where 42 million people from 870 cities of 160 countries and 700 organizations worldwide participated.

To encourage active participation of the community, BOSAGORA held an event which asked community members to retweet the campaign and tag friends, and received a great response from the community, as evidenced by the event link shared by BOSAGORA being exposed a total of 22,000 times and retweeted 170 times

BOSAGORA will continue to do its best in technology development, and not lose sight of our neighbors and society while unfolding various activities for the realization of our vision ‘making a better world’

Read more: https://bit.ly/3lB9PCH

Partnership with ARK

In early September, BOSAGORA formed a partnership with ARK, which provides a cryptocurrency and blockchain-based development platform. ARK provides a marketsquare service that helps users find projects, blockchains, apps, and key stakeholders easily in the cryptocurrency industry, and BOSAGORA was selected as one of the first five cryptocurrency projects registered in the service. It is expected that BOSAGORA will be widely exposed to the cryptocurrency community.

Furthermore, unlike the existing public announcement service, which provides only limited information, marketsquare provides real-time news and information BOSAGORA wants to share with the community fast and accurately.

Read more: https://bit.ly/3jRGjIz

Conducted AMA

In the AMA held with ZTH Crypto in September, we received relatively detailed and specific questions about recent development and democratic platform, such as those about completion of quorum balancing development, how to implement deliberative democracy, etc. Even in the future, we will continue to deepen the understanding of community members on project direction by holding AMA at the right time and right place when news about new development or partnership is updated.

Tech Trends for September

Tech Trends is a column of BOSAGORA that looks at the technology and trends of the blockchain industry, and episodes 11 and 12 were published in September. Please check the following link for details.

#11 Breaking Free From Censorship: https://bit.ly/34QWQpA
#12 Overcoming the Censorship Plague with Blockchain: https://bit.ly/3109xh0

개발

9월 한 달 동안 아고라 팀은 36개의 깃허브 이슈를 마무리했습니다. 지난 분기 동안 팀은 가장 진보적인 블록체인 플랫폼을 만들고자 코드 커버리지를 대폭 늘리는 것을 목표로 하여 개발에 임하였고, 개발 방향성을 크게 네 가지로 구분하였습니다:

  • 검증자
  • Stoa
  • BOA-SDK
  • Votera 지갑(향후 더 자세히 설명할 예정)

아래는 지난달 개발 활동과 현재 아직 개발중인 내용에 대해 요약한 것입니다.

8월의 핵심 개발사항:
월별 활동:

지난 달 50개의 Agora 관련된 풀리퀘스트와 48개의 활성 이슈가 있었습니다. 그 중에서:

  • 6개의 풀리퀘스트가 열렸습니다
  • 44개의 풀리퀘스트가 통합되었습니다
  • 19개의 새로운 이슈가 생겼습니다
  • 29개의 이슈가 마감되었습니다

개발된 기능

/block_externalized 엔드포인트는 일반에게 공개될 필요 없음 #76

이 Stoa 기능은 9월 초 헨리가 개발했습니다. 같은 포트 상 노출된 API 리스트 중, PUT을 사용하여 아고라로부터 받은 엔드포인트는 일반에게 공개할 경우, 신뢰할 수 없는 블록 데이터를 받을 가능성이 높아지므로 공개해서는 안 됩니다. 모든 커뮤니케이션은 신뢰할 수 있는 아고라 노드로부터 제공되어야 하고, 이는 요청된 IP의 화이트리스트를 사용하여 수행할 수 있습니다. 또한 방화벽이 있는 경우, 대상 경로에 IP 화이트리스트를 사용하여 포트를 나눌 수 있습니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/stoa/issues/76

서명을 위해 비밀 키와 시드를 구현 #28

이 BOA-SDK 기능은 9월 초에 마이클이 개발했습니다. 아래 기능들이 필요합니다.

  • 퍼블릭키, 비밀키, 그리고 시드를 포함한 키페어 생성
  • 서명할 수 있는 능력

다른 기능들은 아고라를 참고하여 구현합니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/boa-sdk-ts/issues/28

가십핑을 위해 노드 당 요청 대기열 구현 #1149

이 기능은 9월 초 드레이가 개발했습니다. 이슈 #1145는 모든 가십핑 요청에는 수많은 파이버가 있다는 것을 밝혀냈습니다. 이는 10개의 노드가 8개의 거래를 가십핑하면 80개의 파이버가 생기는 것을 의미합니다. ManyValidators 테스트는 테스트가 진행되는 동안 1,600개의 파이버를 생성합니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/1149

캐칭 디렉토리에 잠금(락)을 구현 #829

이 기능은 9월 초 다니엘이 개발했습니다. 동일한 워킹 디렉토리에서 두 개의 인스턴스를 시작하면서 실수로 데이터를 훼손할 가능성이 매우 높고, 이를 조사하려면 몇 시간도 걸릴 수 있기 때문에 디렉토리에 잠금장치를 구현하였습니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/829

데이터베이스에 블록 데이터를 저장 시, 저장 공간을 절약 필요 #60

이 Stoa 기능 향상은 9월 초 마이클이 개발했습니다. 이를 위해 해시 서명이 문자열에서 BLOB로 부뀌었습니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/stoa/issues/60

아고라의 블록 구조와 같이 데이터 타입을 재정의 #81

이 Stoa 기능은 9월 초 마이클이 개발했습니다. Stoa에 있는 데이터를 재정의하기 위해 아래사항이 필요했습니다.

  • 해시 일련 대신 해시 클래스의 인스턴스를 사용합니다.
  • 서명 일련 대신 서명 클래스의 인스턴스를 사용합니다.
  • 퍼블릭키 일련 대신 퍼블릭키 클래스의 인스턴스를 사용합니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/stoa/issues/81

아고라에 hashFull이나 hashPart 같은 기능을 구현 #83

이 Stoa 기능은 9월 초 마이클이 개발했습니다. 해당 특징을 위해 다양한 데이터의 해시를 계산했습니다. 이 데이터는 다양한 장소에서 사용될 것입니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/stoa/issues/83

현재 블록 헤더의 해시 값을 데이터베이스에 추가 #84

이 Stoa 기능 향상은 9월 초 크리스가 개발했습니다. 이전에는, 데이터베이스에 블록의 해시 값이 존재하지 않았으므로, 해시 값으로 데이터를 조회하는 것이 불가능했습니다. 이 해시값은 데이터베이스 표에 추가되고 데이터를 입력할 때 처리됩니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/stoa/issues/84

네트워크 전반에 클럭 동기화 구현 #1174

이 기능은 9월 초 드레이가 개발했습니다. Pull request #1100이 클럭 기반 노미네이션(블록제안)을 구현하는 반면, #1174는 시간이 다르게 흘러갈 수 있는 노드의 로컬 시계를 기반으로 합니다. 노드 자체는 NTP 내부를 통해 동기화되는 OS 시간을 사용합니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/1174

로깅은 비밀키를 노출해서는 안됨 #719

이 기능은 보안 향상 관련해 9월 말 구철이 개발했습니다. 누군가 Agora에서 버그를 발견하고, 이를 신고하고 싶다면 저희에게 로그 덤프를 제공할 수 있습니다. 로그는 프라이빗 키를 내보내지 않아야 합니다.

결과물을 제거하는 대신, 대안을 준비했습니다:

  • 해시된 버전의 키 내보내기(키가 여러 오류 메시지에 나타나는 경우, 로깅에 도움이 될 수 있음)
  • 축약된(포맷화된) 인쇄 버전의 키 내보내기

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/719

트랜잭션 풀의 거래 숫자에 기반해 블록을 생성하는 것으로부터 전환 #1004

이 기능은 9월 말 제이가 개발했습니다. 이전에는 사용 가능한 트랜잭션 8개가 발생하는 즉시, 일련의 트랜잭션 세트를 노미네이션(제안)했습니다. 아고라 팀이 원하는 것은 거래 수에 관계없이 규칙적인 간격으로 블록을 만드는 것이고, 이를 통해 블록 높이를 시간의 척도로 사용하길 기대하고 있습니다. 블록당 10분 간격이 목표이며, 이는 테스트를 작성할 수 있도록 ConsensusParamas를 통해 구성될 수 있어야 합니다.

기존 질문:

  • 블록을 지정하는데 걸리는 시간을 어떻게 고려할지?
  • “마감” 전, 지명 시작을 위해 시간이 얼마나 필요한지?
  • 노미네이션(블록제안)을 위해 어떤 타임아웃 전략을 사용하는지?
  • 어떻게 네트워크가 항상 활성 상태가 되도록 할 것인지?

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/1004

VirtualClock을 구현하여 테스트를 보다 효율적이고 안정적으로 만듦 #389

이 기능은 9월 말 드레이가 개발했습니다.아고라 팀은 이미 BanManager 테스트에 유사한 것을 사용 중이며, BanManager에서 임시 클럭을 반환하기 위해 클럭 루틴을 오버라이드하고 있습니다. Stellar-core는 전체 테스트 스위트, 특히 SCP 테스트에 대해 유사한 작업을 수행합니다. 가상 클럭을 사용하면, 테스트를 보다 효율적으로 수행할 수 있으며 물리적인 시간을 기다릴 필요 없이 임의의 지연을 시뮬레이션 할 수 있습니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/389

#816 설정에서 키 페어를 별도의 ValidatorConfig로 분리

이 기능은 9월 말 구철이 개발했습니다.기존 키페어는 메인 설정에 있었고, FullNode와 관련이 없었습니다. 코드는 키 페어가 항상 유효하다고 가정하므로, 여기에 이를 보관하면 버그가 발생할 수 있기에 별도의 ValidatorConfig로 분리했습니다.

더 많은 정보는 아래 깃허브 링크를 참고해주세요:
https://github.com/bpfkorea/agora/issues/816

진행 중인 검증자 개발

  • 해시함수 추상화에 대한 SCP 변경을 업스트림 #1220
  • 테스트 블록으로 시작할 수 있도록 하는 testsuite 리팩터링 #1176
  • 값으로 전달된 스마트 포인터에 대한 테스트 추가 #1240
  • 지속적으로 트랜잭션을 생성하고 이를 Agora 노드로 전송하는 기능 구현 #1230
  • 사용할 제네시스 블록 생성을 가리키는 열거(enum)값 기반 배포 기능 구현#1244
  • 실행에 필요한 다양한 설정을 구성 파일로 분리 #85
  • 연락할 Agora 주소를 전달하는 CLI 옵션을 추가 #106
  • 토론: 노드가 동일한 주소로 여러번 검증자 등록가능한지에 대한 부분 #849
  • Agora 네트워크에서 활동을 시뮬레이션 하기 위한 도구 구축(또는 agora-cli 확장) #1227
  • 블록에 데이터를 저장하는 방법 추가 #1214
  • QR 코드 생성 개념 증명 구현 #1229

마케팅

BOSAGORA 개발 방향과 지난 1년 간의 진행 성과

BOSAGORA는 숙의 민주적인 의사결정 플랫폼 구축을 위해 달려온 지난 1년간의 개발 성과와 현재 진행 중인 개발 내용을 커뮤니티에 공개했습니다. 네트워크의 무결성을 위한 풀노드 기본 구조 완성, 이중 지불 방지를 위한 밸리데이터(validator) 개발 및 BOSAGORA 네트워크 신뢰의 핵심인 쿼럼 밸런싱 개발 등 개발 완료된 핵심 기술부터, 현재 개발 중인 노드 운영 관리 기능 (Admin), 악의적인 노드 제거를 위한 슬래싱 기능 등 BOSAGORA 개발팀의 최신 소식을 전달했습니다.

앞으로도 꾸준히 깃허브, 스프린트 업데이트 및 월간 리포트를 통해 개발팀의 최신 개발 소식을 커뮤니티와 공유하겠습니다.

자세한 내용 확인하기: https://bit.ly/3iLKwfj

UN #Act4SDGs 턴잇어라운드 캠페인

BOSAGORA는 ‘코로나 시대로부터 다시 우리의 일상을 되찾는 전환점’을 만들기 위한 #ACT4SDGs 세계 주간의 #TurnitAround 캠페인에 참여하였습니다. #TurnitAround 캠페인은 전 세계 160개국, 870개 도시, 700여 개 단체에 속한 4,200만 명이 참여한 글로벌 캠페인입니다.

BOSAGORA는 커뮤니티의 적극적인 참여를 독려하기 위해 해당 캠페인을 리트윗하고 친구를 태그 하는 이벤트를 진행했고, 그 결과, BOSAGORA가 공유한 이벤트 링크가 총 22,000번 노출되고 170번 리트윗되는 등 커뮤니티의 적극적인 호응을 이끌어 냈습니다.

BOSAGORA는 기술 개발에 전력을 다하고, 비즈니스를 확장하는 동안에도 이웃과 사회에 대한 관심을 잃지 않고 다양한 활동을 지속하며 ‘더 나은 세상’의 비전을 실천하도록 하겠습니다.

자세한 내용 확인하기: https://bit.ly/3lB9PCH

ARK 파트너십

9월 초, BOSAGORA는 암호화폐 및 블록체인 기반 개발 플랫폼을 제공하는 ARK와 파트너십을 맺었습니다. ARK는 유저들이 암호화폐 업계 내의 프로젝트, 블록체인, 앱 그리고 주요 관계자들을 찾기 쉽게 도와주는 마켓 스퀘어 (marketsquare) 서비스를 제공하는데, BOSAGORA는 해당 서비스에 등록되는 최초 5개 암호화폐 프로젝트 중 하나로 선정되며 ARK 커뮤니티는 물론 암호화폐 커뮤니티들에 널리 노출될 것으로 기대됩니다.

나아가, 마켓스퀘어는 제한적인 정보만을 제공하던 기존 공시 서비스와는 달리, BOSAGORA가 원하는 뉴스, 정보 등을 실시간으로 업데이트할 수 있어, 더 빠르고 정확한 프로젝트 소식을 전할 수 있습니다.

자세한 내용 확인하기: https://bit.ly/3jRGjIz

AMA 실시

9월, ZTH Crypto와 실시한 AMA에서는 쿼럼 밸런싱 개발 완료 질문, 숙의민주주의 구현 방법 등 최근 개발 현황 및 민주주의 플랫폼에 대한 질문 등 비교적 상세하고 구체적인 질문을 주셨습니다. 앞으로도 파트너십과 신규 개발 관련 소식이 업데이트될 때, 적재적소에 필요한 AMA를 통해 커뮤니티의 궁금증을 해소하며 프로젝트의 방향성에 대한 이해도를 높이도록 하겠습니다.

9월 테크 트렌즈

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

#11 과연 우리는 검열로부터 자유로운가: https://bit.ly/34QWQpA
#12 블록체인, 검열 극복을 위한 열쇠: https://bit.ly/3109xh0

--

--

--

Contribute to making a better world with blockchain technology as a project enabler

Recommended from Medium

[RECAP] AMA: ATLANTIS METAVERSE x WEEHODL

Beginners NumPy

Build new repository in Github

How to Rate Limit Your API

What is UIActionSheet in iOS Swift ?

A Step-By-Step Guide to Test Chef Using Test Kitchen with Docker

Control the Flow of Your Program In Python

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
BOSAGORA

BOSAGORA

BOA

More from Medium

ArenaCFx Market Insights Report for April 2022 — ArenaCFx

Forge Token One Month in

Florida governor wants to accept bitcoin for taxes, Dalio’s hedgefund to invest in cryptomarket, 3.5

Crypto Bull and Bear Seasons.