Reading:
Create a TypeScript SDK to interact with Stoa, BOSAGORA wins UN SDG Action Awards, etc.
Image

Create a TypeScript SDK to interact with Stoa, BOSAGORA wins UN SDG Action Awards, etc.

by Rooney
2020-08-13

Monthly Report July 2020

Image for post

In July the team was hard at work making progress on quorum balancing and Stoa SDK/API development. The team is around 75% of the way through quorum balancing development and is targeting a release date sometime around the end of September. The Stoa SDK/API work that is currently in development will be an ongoing project that we expect to deliver incrementally from now until sometime around the end of May 2021.

Since the development team is mainly focusing on Validator development, we have decided not to start development on the second layer quite yet. There is great news though, we’ve started to begin development on our various tool integrations in parallel with core developments, which was originally planned to begin early next year. We as a team did this to keep the balance and momentum of the development roadmap for BOSAGORA project.

In addition to developing AGORA the team is in the middle of onboarding two new developers and a third will be joining us shortly.

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

Core Development in July:

Monthly Activity:
Last month we had 55 pull-requests and 39 active issues. Of which:

  • 7 pull request were opened
  • 55 pull requests merged
  • 19 new issues
  • 20 issues closed

Functionality Developed:

Create a TypeScript SDK to interact with Stoa #15

This piece of functionality was developed by both Michael and Henry during the first part of July and it was the first step the team took in creating a TypeScript (TS) SDK to interact with Stoa. This TS SDK will allow third-party developers to build tools to interact with AGORA.

The following functions were taken into consideration during development:

  1. bool verify(ubyte[] signature, ubyte[] message, PublicKey public_key): Should return whether or not signature is a valid signature for message made with public_key. This requires to use the libsodium bindings.

Basically this: https://github.com/bpfkorea/agora/blob/93c31daa616e76011deee68a8645e1b86624ce3d/source/agora/common/crypto/Key.d#L226-L235

  1. bool isValidPreimage(Hash original_preimage, ulong original_preimage_height, Hash new_preimage, ulong new_preimage_height) => Returns false if new_preimage_height < original_preimage_height, or if original_preimage hashed original_preimage_height — new_preimage_height times is not equal to new_preimage.
  2. Validator[] getAllValidators(uint height | null) => Call /validators and return its result
  3. Validator getValidator(PublicKey address, uint height | null) => Call /validator/{address} and return its result or throws an exception if there is no such validator.

In the last two cases, the height parameter is optional, so it can be either null or? depending on what is the norm in TS.

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

Create a Docker image to bundle both Stoa and a Full Node #28

This piece of Stoa functionality was developed by both Michael and Henry during the first part of July. This was implemented to give us the ability to use Docker to deploy an image bundling both Stoa and Full Node code.

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

Add type definitions for callback, block, transaction, etc #29

This piece of functionality was developed by both Michael and Henry during the first part of July. The team decided it would be better if we had a module with types definition so we can remove the main usages of ‘any’ in Stoa

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

Add the ability to restore the enrollment information of a node #789

This feature was developed by Jay during the last part of July. The table managing the enrollment information of the node can be removed because all the data it manages can be restored in many ways. The use of a database table means that there is a lot of complex data so it should be managed efficiently but the table manages very little data now. This task contains a few things to do as follows in the Definition of Done.

Definition of Done:

  • Restoring enrollment information used in registering an enrollment by a node
  • Restoring a block height in which a validator should reveal its pre-image
  • Remove ‘remove’ from EnrollmentManager
  • Change the modifier of ‘remove’ of ‘ValidatorSet’ into private.

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

Avoid nominating and externalizing Enrollments that will fail Block validation #900

This feature was developed by Jay during the last part of July. There were several issues with nomination discovered in #899. Issue #899 was just a stopgap measure but nominating enrollment (and nomination in general) needs to be much more thought out.

The following issues were identified and corrected:

  • There were leftover Enrollment in the EnrollmentPool which were picked up to be nominated, although they were also in the ValidatorSet;
  • There is no check that the result of Ledger.prepareNominatingSet can be nominated;
  • Other nodes achieved consensus on duplicated Enrollments (!)

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

Add event notification to Agora, starting with block reception #1033

This piece of functionality was developed by both Michael and Henry during the last part of July. This issue was created out of a need to be able to programmatically respond to certain events happening in the node. For the initial version of this, we wanted to have it simply part of the configuration. In the future, we might switch to SSE but for the moment we wanted to keep it simple.

The idea was to come up with a list of events, and for each of them, have a section in the config file that specifies a URL to push the payload (HTTP POST) when said event happens.

Suggested events:

  • A block is externalized, either via catch-up or direct participation;
  • A valid pre-image is received (needed for stoa to continue development);

Definition of Done:

  • There is a YAML section for as follows:

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

When the corresponding event happens, the payload is sent to the URL via an HTTP POST request, with the payload as JSON body. Implementation tip: I would recommend implementing each event handler as a single-method interface and use the REST generator, e.g.:

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);
}

Settings things up this way will allow for easy dependency injection in the test-suite, and could even build some utilities to use this for testing.

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

Add the ability to test HTTP requests and responses in the Stoa API Server #42

This enhancement was done by Michael during the last part of July. We added the ability to test data requests and responses from the Stoa API server so that products of higher quality can be maintained.

Definition of Done:

  • The Stoa server can be run in the test code.
  • The Stoa server can be stopped in the test code.
  • The test code sends the request to the Stoa server and checks the result

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

Add the ability to make simple changes using `Statement` of sqlite3 #37

This code refactor was done by Michael during the last part of July. When inserting multiple records into a database, the existing complex circular statement is simply changed using ‘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();

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

Publish SDK in the form of `npm package` at https://www.npmjs.com/ #13

This enhancement was done by Michael during the last part of July and it was simply to publish the SDK as a package.

Definition of Done:

  • Compile the TypeScript inside the folder /src into the folder lib/
  • Provide documentation on how to install and use the library.
  • Create an account in ‘npmjs’ and create an organization. and invite team members to the organization.
  • Publish BOA-SDK as the ownership of an organization.

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

We need a library that can be used in browser #14

This piece of functionality was developed by both Michael and Henry during the last part of July. In order to develop a variety of Web Apps, it is necessary to package them in a form that works in browsers.

This should be in a JavaScript compatible format, compressing multiple files together.

Definition of Done:

  • Pack several files together and reduce its size to a minimum.
  • Available in JavaScript.
  • Develop a test site.

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

Replace setGenesisBlock / genesis config with hard coded blocks #821

This code refactor was done by Mathias during the last part of July. We needed to come up with an alternative to user-configurable genesis blocks. Initially, we went with this solution to allow having a different genesis block for unittests / integration tests / testnet / coinnet.

The problem was that a corrupt config file or just a user typo could cause the node to use a different genesis block.

One alternative was to use ‘version()’ blocks and then build Agora with ‘-version=CoinNet’, ‘-version=TestNet’, but that is problematic because we then need to ship multiple binaries.

A better alternative that was suggested is to have a runtime choice between several pre-configured genesis blocks.

So instead of having ‘config.genesis_block’, we have ./agora — mode=coinnet | ./agora ‘ — mode=unittest’ or something to that effect. It could also be a config option, but the point is that it’s not a hex dump of a block but a choice with a limited pre-configured number of options.

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

Ongoing Validator Development:


MARKETING

BOSAGORA receives UN SDG Solidarity Action Awards

Image for post

BOSAGORA was recognized for its contribution to local society with ‘Project Care’ and received SDG Solidarity Awards from the UN. Every year, the UN selects the projects benefitting local societies and neighbors around the world. This year, the UN gathered stories of projects supporting medical staff and neighbors at a time when everyone is suffering from COVID19 and select Top 50 to honor them with the awards.

This UN SDG Solidarity Action Awards was evaluated by total 26 experts from global institutes and companies including vice president of EU diplomacy and security committee, vice president of the UN Foundation. BOSAGORA won this award not only as of the first in Korean blockchain circle but also as the first in Korea across all industries. There was only one more project, IBM blockchain, which received this award with BOSAGORA in the global blockchain circle.

BOSAGORA will keep dedicating itself in the development of the project and realizing its vision of ‘making a better world’.

For further information, check the link below.
https://medium.com/bosagora/bosagora-won-un-sdg-action-awards-116539ffe238

Event spreading the news of receiving UN SDG Solidarity Action Awards

Image for post

Afterward, we held an event in which people were asked to spread the news of BOSAGORA having received UN SDG Solidarity Action Awards on Twitter. Many around the world have participated, and we selected two members who retweeted it the most and who tagged it the most and provided rewards to them.

Jia You Donation Campaign to Support Chinese flood victims

Image for post

In recent weeks, heavy rains poured in China have resulted in 50 million flood victims equal to the population of Korea with destroyed homes and lives. In response, BOSAGORA held ‘Jia You Donation Campaign’ to support Chinese flood victims with the local company Hyundai LCD and delivered the combined donation to Chinese Red Cross.

This campaign marked the first official use case BOA token in donation, and the donation was jointly collected with Hyundai LCD in which BOSAGORA accounted for a total 36,225 BOA(18,300 yuan). Thanks to such a partnership, we did not need to spend exchange fees or other mediate expenses and could deliver the donation quickly within just 3 days to Red Cross. The donations raised will be contributed to flooding disaster funds in the Wuhan region.

Image for post

We will continue ‘making a better world’ with good practices involving various campaign and event which utilize our technology and platform.

For further information, check the link below.

BPF Changes Its Foundation Name

Image for post

The name of the BPF(BOS Platform Foundation), which operates the business of BOSAGORA has been changed to the BOSAGORA Foundation. Following the launching of the new project, BOSAGORA, the foundation decided it’s better to unify the name of the project and foundation in order to establish a more unified brand and smooth relationship with partners.

BOSAGORA Foundation will finish development promised to the community and continue growing with it while promoting BOSAGORA project to more people around the world through additional partnership and marketing.

‘Join BOSAGORA Campaign’ held twice in Indonesia and India

Image for post

We held ‘Join BOSAGORA campaign’ with global communities we worked together in BOSAGORA introduction video contents project early this year.

This campaign was jointly held with communities in Indonesia and India in which members were requested to subscribe BOSAGORA newsletter, join the Telegram chatting room and explore BOSAGORA contents in Medium to expose BOSAGORA by retweeting them to friends. As a result, the number of subscribers to the newsletter, participants in Telegram and Twitter, and views of our contents have soared high and liveliness was infused into the community.

Conducted AMA

Image for post

Recently, news about BOSAGORA such as receiving UN SDG Solidarity Action Awards and Jia You campaign to support flood victims in China were widely known outside arousing many related questions and in response, we held various AMAs to answer them. Many people in the community showed great interest in our effort to make BOSAGORA sustainable project and among the questions were what our official objective is and business plan after main net release besides those about development and ecosystem.

BOSAGORA will become a global project realizing SDG through humanitarian activities alongside numerous partnerships within BOSAGORA platform while upholding our vision of ‘making a better world’

For further information, check the link below.

Bitboy: BOSAGORA contents for July

Image for post

Bitboy mentioned BOSAGORA while introducing rising projects expanding their clouts in the cryptocurrency circle at his July Youtube contents.

Bitboy referred to the news of BOSAGORA like ‘Project Care’, receiving ‘UN SDG Solidarity Action Awards’ and signing blockchain bill of rights, and introduced BOSAGORA as a project which not only develops blockchain but also being pursuant to its motto ‘make a better world’. For further information, check the link below.

Bitboy contents: https://bit.ly/308fBUv

Tech Trends for July: BOSAGORA technology & trend column

Image for post

Tech Trends is a column which overlooks technology and trends in the blockchain industry and its 7th and 8th contribution was issued for July. For further information, check the link below.

#7 Future-Proofing Smart Contract Blockchains
https://bit.ly/2DtMMtn

#8 What cryptocurrency investors are waiting for?
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

Leave a Reply

Related Stories

Arrow-up