Community Update 163
- Rao Bhamidipati
Owned by Rao Bhamidipati
Mar 17, 2021
10 min read
Loading data...
General
- Release
- We are in epoch 3.
- All main net nodes (validators as well as observer nodes) are running the Last Finalized State version 0.10.0. https://github.com/rchain/rchain/releases/tag/v0.10.0 We will soon be updating all main net nodes to 0.10.1 which mainly contains PRs https://github.com/rchain/rchain/pull/3295 and https://github.com/rchain/rchain/pull/3328 and some dependencies. This fix reduces the memory usage substantially.
- Main net has 30 nodes, with a few large configuration machines running 5 nodes each.
- All test net nodes (validators as well as observer nodes) are running the Last Finalized State Version 0.10.1 https://github.com/rchain/rchain/releases/tag/v0.10.1 We will soon be moving the updated block merge alpha version https://github.com/rchain/rchain/releases/tag/v0.11.0-alpha onto the test net . Will is working an update to the propose script, so we can move this on to the test net.
- Tomislav has resolved the memory leak issue on the main net that we had been highlighting the last few weeks. https://github.com/rchain/rchain/pull/3353
- We continue to work on improvements to the block merge version.
- Core development tasks can be tracked in this project Core team (github.com)
- We're noticing a slower daily degradation in deploys per day on the main net - we are investigating this issue. Restarting the nodes alleviates the issue, we suspect some incomplete garbage collection or such.
- Main difference between testing on Observer nodes vs. Validator nodes: When we test on the observer node, a large part of the code base is executed. The Block creation code runs only on the validator nodes. As a part of that, the portion of the Runtime Manager that plays the deploy is run on the validator node but not on the observer node.
- Sprint 79 in progress
- Main Focus is to continue Block merge, resolve any identified bugs, prepare for hard fork 1 to eliminate the slashed validator, harden the main net, improve performance. Current PR list is at https://github.com/rchain/rchain/pulls .
- Current Work In Progress
- Good progress on block merge.
- The first version of block merge v0.11.0-alpha works with synchrony constraint 0.99. It was easier to do it this way to identify and analyze bugs and take corrective action. The focus here is to just make sure the algorithm is correct and works well. For now, we will simply kick out the unmerged deploys back to the user. In future, we will see if there is a better way to handle this.
- Lot more block merge work to be done
- In process - Merge the block merge feature branch code into dev branch and make sure that everything works as intended, while block merge feature is turned off. We may release this as 0.10.x
- ToDo: Resolve conflict detection bug (https://github.com/rchain/rchain/issues/3349). We need to first create some debugging tools for this. Tomislav is just about to start on this.
- ToDo: Optimize block merge - Make conflict detection during merging more parallel (https://github.com/rchain/rchain/issues/3347)
- ToDo: Optimize block merge - Optimize or eliminate channels map to improve concurrency in block validation (https://github.com/rchain/rchain/issues/3346) . Note that eliminating the channels map needs a hard fork - so this will be coordinated with the second hard fork that many changes including PoS update. Note: Full block merge performance will be visible only after the second hard fork. Until then we may have the block merge code on the main net as part of the testing process, to observe any interactions with current behavior, but with the feature itself turned off.
- Handle rejected deploys in block merge (https://github.com/rchain/rchain/pull/3304)
- In Process - Write and execute Unit tests and integration tests for block merge.
- Modify DAG representation to support block merge (to validate the merging) (https://github.com/rchain/rchain/issues/3350)
- ToDo: The next version of block merge with synchrony constraint 0.67 entails identifying and resolving any bugs discovered in the earlier code - Casper etc.
- This is a partial list of what needs to be fixed as part of the block merge delivery https://github.com/rchain/rchain/milestone/4 We will add more issues as we discover them.
- Planning has begun for more decentralization of the network, initially with more decentralized nodes on the test net, where the private keys are controlled by members of the community and not the coop. Once we work through this process for a few weeks to a couple of months, we will extend that process to the main net.
- Tomislav is identifying opportunities to improve / optimize the current version of block merge, as well as to plan and keep track of additional tasks needed for the full block merge version. There will be further testing, optimization, fixing bugs and creating necessary enhancements after that. Note that block merge speeds up certain areas that may reveal bottlenecks in other areas (disk io, disk storage capacity, memory etc.). So we need to get the right monitoring instrumentation in place and test this for a while before it's ready for the main net. Also the branches need to be merged, so we can make sure everything is working well with block merge and also do future branches off this new version.
- Will has been working on clarifying the processes and creating the documentation to bring new exchanges online. We have a new exchange added in the last week and another one is getting ready to come online.
- Will has completed the code to get balances https://github.com/rchain/rchain/pull/3331 in preparation for the hard fork. We want the community to be able to inspect the code and also the results a few times, so that the hard fork is as smooth as possible. We also want to practice the hard fork a coupe of times. The first hard fork is to remove the slashed validator from the bonds map, which is stored inside the POS contract and possibly, reduce the validator funds quarantine period (currently too long).
- SRE :
Completed - Tomislav is analyzing what appears to be a memory leak issue on the main net.
Completed - Nutzipper has improved Jaeger spans to quickly identify problem areas.
ToDo: Gurinder will be implementing this one one or more main net nodes, along with VisualVM to understand Java memory usage. - Planning for a couple of hard forks after block-merge is on the main net: One fork is to clear the slashed validator node from the main net, update bonds file and carry over the balances from the current main net to the new fork. This will be looked at as a practice/trial run of a hard fork. Second fork is to correct some bugs and other configuration items. An initial partial list of issues to be addressed in this fork is at https://github.com/rchain/rchain/issues/3315 . This list is likely to grow. Together, these should prepare us for the POS update and external validators. The rholang v1.1 update of system contracts and enabling rholang v1.1 broadly will likely be separate events, even though it is currently on that list. Rholang v1.1 should be a soft fork however.
- Tomislav has started projects to track current development https://github.com/rchain/rchain/projects/4 as well as documentation work needed https://github.com/rchain/rchain/projects/5. We could use help from the community members on the documentation tasks.
- Tobi has created a nice Rholang focused documentation page <https://rchain-community.github.io/>
- Rholang v1.1 (complete for now) : Joe has completed the implementation of the full source to source translation of the Rholang v1.1 syntax into current Rholang. He's resolving the last few review comments. He added tests and they're passing. The feature branch is at https://github.com/rchain/rchain/tree/feature/rholang-1.1 I encourage the community to test these releases early and often so that Joe gets the necessary testing feedback and we can move it towards deployment sooner than later. You can run a version of the node locally with this. dckc pointed out that this can be a neat developer tool meanwhile - i.e. write your contracts in rholang v1.1 to generate the rholang v1.0 code. rholang v1.1 is much more compact and is the future. So this should be practiced by the community and developers as much as possible.
- Quite a lot of work needs to be done before we get Rholang v1.1 into production on the main net. We are currently planning the steps and will have some milestone updates after this planning process is complete. A fuzzer to substantially increase the testing and identify performance optimization areas is one of the immediate steps.
- Rholang v1.1 spec is at https://drive.google.com/file/d/1FvPuiPm7ytGyklex_PEmVyJ8XgbTdIEg/view Most of these changes will need extensive testing when the system contracts etc. are re-written using the Rholang1.1 syntax. These changes will be in a separate feature branch and we will likely run a separate network eventually, to thoroughly test this implementation. We also need to create documentation to help end users verify their existing code and/or how to modify it to use the new syntax. The expectation is that the new syntax will make the learning curve a lot easier for people familiar with other languages. Separately, we need to update the IDE level tools to work with the new syntax. We will run much of this through the RCHIP and Tech Governance process.
- Ongoing - Fix additional identified bugs
- API and usability improvements focused on Developer adoption (no change this week) - in conjunction with the community
- Tomislav is beginning to review the best practices, frameworks, widgets and code snippets being made available by other projects to make things easy for developers, so we can adopt those best practices for RChain. The platform-adoption channel is now open in pub-RChain Discord, to enable announcements and community feedback in this area.
- Tobi has made a Rholang template available on codesandbox.io that allows one to execute rholang code on the RChain network in real time. codesandbox.io claim some 2 M monthly developer users and that 10 M apps have been developed on the platform. Tomislav had talked about enabling something similar on repl.it, which is a similar 'code and collaborate in the browser' platform.
- We continue to consider partnerships for enterprise developers as well as engage with small developer teams that are already engaging in blockchain proposals and pilots.
- In Process - Will has mostly completed the OpenAPI/Swagger documentation of the RNode API https://github.com/rchain/rchain/pull/3128 He's will try to resolve the reviewer comments after he's done with block merge work or as time permits. Familiarity with Swagger and the available swagger tools should make it easy for developers to use our API.
- Future - Also in the thinking stage is an improvement to revdefine.io or elsewhere, a graph representation of payments / transfers on the network, with perhaps date+time and amount on the arcs.
- Release 0.11.0 - Block merge
- In Process - conflict resolution and block merging gist under development at https://gist.github.com/tgrospic/33b5729404bb5e098e89453453208415
- In Process - conflict resolution among deploys within a block and/or maximal feasible concurrency during creation and block processing
- Release 0.12.0 and beyond
- Tentative Near term road map is
- 2021Q1 - block merge,
- 2021Q2 - updating PoS contract to enable external validators,
- 2021Q3 - Rholang v1.1 operationalization,
- 2021Q4 - sharding and name spaces, in that order.
- Milestone dates have been revised based on our current estimates. There will be further updates as we revise the plans.
- Creating a design spec and the code for how to update contracts on the main net. This will enable addressing some of the pressing issues such as faster epoch times, and other issues listed below
- Fix Rewards calculation bugs https://github.com/rchain/rchain/issues/2956
- Ongoing: Finish dependency updates and plugin updates
- To Do: Improve error logging, debugging and monitoring infrastructure. This will help improve developer productivity, both on the core team as well as dApp developers
- Completed for now - Rholang v1.1, Refactor Run Time Manager. We may need more refactoring in future, but we want to do this incrementally, as needed.
- Protection from 'too much free work' attack, policy to reject deploys when user doesn't provide sufficient phlo or does not have sufficient REV in the wallet to cover the phlo etc - https://github.com/rchain/rchain/issues/2997 and https://github.com/rchain/rchain/issues/2976
- Implement On-chain configuration and Shard configuration https://github.com/rchain/rchain/pull/2986
- Tentative Near term road map is
- Explanation for last finalized state (released in 0.10.0): The scope of this work enables (a) faster catchup by new nodes - you can start from the last finalized state - this is a differentiator for RChain (b) offloading older data, differentiated storage and retrieval strategies for the same (c) allows for a leaner / less bloated node. This change touches most parts of the code base. Having to pick between refactoring and work-arounds in various parts. Tomislav implemented a mostly modular and future-beneficial approach.
- Developer + Researcher engagement and Hackathon
- Completed - Greg, Steve Ross-Talbot and the Dev team will be participating in half-day workshops with some Process Algebra folks in UK on Feb 4 2021. Follow up session was requested by some participants but not set up yet.
- Next hackathon tentatively scheduled for some time in March.
- We need to make building the developer ecosystem an ongoing task, just like development. Ian, Steve Henley and team are actively reaching out to as many universities and groups as possible. Please promote the much improved hackathon page at https://rchain.coop/hackathon.html to all the groups you are part of.
- Ongoing - We need to further increase and properly size the Problem Statements, brief sessions on tips and tricks during the hackathon, and office hours during the hackathon. We will keep adding to the problem statements.
- Ongoing - Learning examples, links to and improvement of documentation. Dan (dckc) has substantially improved the Rholang learning resources. Current plan is to make https://rholang.github.io/ the hub of all learning materials. dckc has been making substantial improvements to the learning materials as well as the API tools. The community is requested to contribute to any or all of these.
- CI/CD:
- Ongoing - We are slowly moving from Jira to Github for the development team, started publishing release notes in Github with release 0.9.25. New issues are entered only in github. For a while, we will maintain in both Jira and Github. Looking to open up Github discussions and project management in the next few months.
- TechGovernance:
- Thursday 10 AM Eastern. Meets alternate weeks. Last meeting focused on how to implement and manage shard configuration. Meeting notes are at https://docs.google.com/document/d/1fvxMC6Bt5XwbVaLzYPy6ZPB8KzJvASO2sKRC6ZCPwpI Discussions and work on a model of economics to ensure network security is proceeding. Most recent discussion was about ensuring some amount of stake beyond a 4 month window, spreading out stake over a longer time and how to incentivize that, while ensuring that everyone pays for network security.
- ToDo - There were questions from the community regarding enabling privacy and zero knowledge proofs on the chain - this is in active discussion. Greg will create a position statement on this and likely discuss the current state of the art, use cases and potential approaches in an RCast session. Same with sharding and cross-chain operation.
- In progress - Excel Model for 'economics of sustainable network security and decentralization' to enable community understanding of the inter-relationships and community conversation around these issues. Will be releasing the initial version soon. May have multiple releases.
- dApp Development:
- Looking for developers to help make progress on the RChat effort using zulip. SRT and possibly Will to add 'Rchain to zulip' functionality. Invite any community members with the expertise to help in this.
- Current Backlog (partial)
- Improve merging in system deploys
- Improve Casper by enabling more tests and resolving identified code issues
- Improve BlockMerge
- Improve multi-parent Casper enablement
- Resolve slashing bugs, including additional refactoring of RunTimeManager
- Implement sharding capabilities
- Improve logging to be able to learn what API calls are being used, so they can be related to resource use and performance etc
- Operationalize Rholang 1.1 on the main net to improve syntax and user experience / learning curve
- Tuesday TeachOuts by Tomislav (Tuesday 10 AM Eastern, 7 Am pacific) in Jimscarver's zoom room https://zoom.us/j/6853551826
Tech-Governance meetings on Thursdays 10 AM Eastern, 7 Am Pacific
Mercury requirements and acceptance criteria
Details on the acceptance criteria: Mercury acceptance criteria
Please see the documentation at https://github.com/rchain/rchain/blob/dev/docs/features.md.
Testnet status
Please see RChain public testnet information to learn more about public testnet as well as a FAQ.
Tech Governance + Community testing
Thursdays at 14:00 UTC. Please see RChain community RNode testing for more information.
Blockers to Mainnet
NA
Risks to code completion for Mercury
Developer website
Date |
---|