Crown Platform Development Update: October 31st, 2018

Scrumban methodology, v0.12.5.2 release, Platform development, CRW address prefixes, Proof of Stake testnet

Crown community fan art

After the September iteration was finished we decided to change some details of our development processes. We are working in conditions where developers have to work on the building of the blockchain platform, and at the same time deal with urgent bugs and network instability. It’s hard to concentrate on delivering the end result when you lose the context all the time. We have been trying and experimenting with different techniques so far, some of them worked for us, and others did not. I crafted a draft of a new guidelines document for the developers in the Core Team. This is an attempt to adapt the Scrumban methodology (combination of Scrum and Kanban) to the Crown Platform realities. As always with agile methodologies — it’s experimental and should be analyzed afterwards. I also would like to expand it and include not only guidelines for the Core Team (or other development teams working on the Crown Core), but also for solo developers who want to participate in the Crown Platform development.

This iteration started on the 8th of October and will finish on the 2nd of November. The November superblock payment is intended to cover a part of this iteration (another part is covered by donations from the team and the community). I believe that this is the correct way to work with the governance system: create a proposal and start working on it before it passes. Of course, it involves some risks, but an alternative approach involves different risks — people could create proposals, receive CRW and not deliver much. We have seen this happen a few times so far, and not only in the Crown project. At a later stage, this story can be implemented to divide the payment and mitigate both risks mentioned before.

v0.12.5.2 Release

At the end of the previous milestone the deadlock around the superblock payment was fixed (see previous report). Between these two iterations, two new critical issues were found. One of them caused a split on the 30st of September. The team quickly mitigated the fork menace and localized the problem. A huge amount of Instant-Send transactions flooded the network and caused an out-of-memory error on many nodes. The network fragmented because of that. We suppose that the Crown network was DDoS-ed by outdated instant transactions. The Instant-Send feature was temporarily disabled, the issue for this vulnerability was created and fixed (MR). Another critical bug that was localized is the crash around the superblock payment. We have been receiving reports about such behaviour but we could not reproduce it. Ashot was able to spot it (245), and Volodymyr fixed it. Since we have lost one of our valuable resources (QA) in September, the developers concentrated on testing the v0.12.5.2 patch. The testing for developers was planned into the development iteration. According to the estimate the bugfix and testing had to take around 30% of the dev resources. It looks like it took more — close to 40%. During the previous week, the team concentrated on stabilizing the testnet network, setting up the nodes, governance, instant-send and wallet regression testing. Special thanks to @walkjivefly and @defunctec for testing new builds and localizing new issues. The critical issues were closed and we are finishing testing of the v0.12.5.2 RC. Some new issues were opened but they are not blockers and some of them might be relevant only to the testnet. We plan to release v0.12.5.2 as soon as possible, ideally this week, but the team is at the Malta Blockchain Summit so it may be postponed to next week.

October iteration board status

Crown Platform Development

During the platform development, it became clear that we need to finish the implementation of a technical story: testnet sandboxes. The feedback pipeline for new code is so long that it takes an unreasonable amount of time for a developer to test out an implemented solution. We wanted to implement that feature for almost a year now but could not prioritize it since it’s a technical story. Volodymyr concentrated on that during the first 2 weeks of this iteration and coded it up.

I continued working on the core platform code. As I mentioned in the previous report, the protocol we are working on can be used to register/issue non-fungible tokens (NFTs) on the Crown blockchain, and later transfer it, update, unregister etc. A couple of words on NFTs — they are the essence of creating value using distributed ledger technology (DLT). NFTs are digital representations of any unique asset. These tokens are non-fungible, it means that one token is not equal to another token and cannot be exchanged 1-to-1 like cryptocurrency tokens or ERC-20 tokens. Any NFT has unique properties and can represent diffferent real-world assets or new digital assets. I have divided original tasks to multiple user stories and concentrated on delivering the simple concept of NFT registration and timestamping. I concentrated on the implementation during the first 2 weeks, like Volodymyr. After that, all the developers switched to work on the v0.12.5.2 patch testing and bugfix.

Migration of Crown Addresses

The new address prefixes were implemented in the Crown Core code during the previous iteration, a converter command was implemented in this iteration. The code is just waiting its turn to be tested since the v0.12.5.2 is deployed on the testnet right now. Zhan, the Javascript developer is finishing the new prefixes integration into the bitcore code. Another Python contract developer has integrated the prefix changes into the Crown Electrum wallet and is awaiting its turn to be tested on the testnet.

Crown MN PoS Protocol

The MN PoS testnet was launched in the beginning of October and is available for public testing now. Tom (@presstab) and his team are finishing work on the 4th stage: Hardening of software design and security. They have fixed some critical bugs in the new PoS and are going to relaunch a new clean chain this week. Feel free to join the MN PoS public testing channel: The new build will be available soon.

Kernel stake modifier

MN PoS is a new Proof-of-Stake mechanism that utilizes the network of Crown Masternodes and Systemnodes. Anyone who owns a Systemnode or a Masternode will be able to automatically take part in the consensus protocol by fair staking rules. We expect it will make the Crown network more decentralized and secure, and simplify the staking process for the node holders.


The Crown Development Team.