Community Update 150

General

  • Release
    • Rnode v0.9.26-rc Last Finalized State version is released. https://github.com/rchain/rchain/releases/tag/v0.9.26-rc Gurinder is updating the test net nodes to use it. He will also be starting new observer nodes on the main net using the LFS version.
    • Tomislav has added a few more tests for LFS, the final integration test is being added. This will be the final Rnode 0.9.26 Last Finalized State (LFS) release.  
    • Main net all nodes are running release 0.9.25.7, which is a bug fix release with fixes for the occasional data corruption errors in the lmdb database
    • With 0.9.26-lfs-Pre-release, node catch up is now much improved. This release also includes many bug fixes including for the slashing /tuple space mismatch bug reported earlier.  gRPC behaviour is improved with per validator grpc channel.   
    • Main net has 20 nodes running plus observer nodes and exchange nodes.
    • 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 72 in progress
    • Main Focus is enabling 0.9.26 on the main net, continue Block merge work, Rholang v1.1, resolve any identified bugs, hardening the main net, improve performance. Most major library dependencies are updated to the latest feasible versions. Current PR list is at https://github.com/rchain/rchain/pulls . We are preparing for the epoch change. We plan to add 5 to 10 more nodes.
    • Current Work In Progress
      • Last finalized State: Will and Tomislav are adding the integration tests for LFS. Tomislav is also adding a fix to one of a bug related to synchrony constraint calculation https://github.com/rchain/rchain/pull/3269 . With this fix, we are now ready to deploy LFS on the validator nodes.
      • Good progress on block merge - Tomislav has joined Will in working on the block conflict resolution in a formulaic manner (i.e. check for race-free condition). Will and nutzipper continue work on their respective parts of block merge. Will is working on conflict resolution and tests, runtime manager refactoring.
      • nutzipper is working on additional refactoring needed for block merge, currently refactoring the hot store (i.e. the in-memory tuple space), in an attempt to fix the 'invalid tuplespace mismatch' issue. https://github.com/rchain/rchain/pull/3270 and https://github.com/rchain/rchain/pull/3271
      • nutzipper has begun to merge the two streams of work and also to merge this work with the LFS version of the code base. We anticipate discovering some issues in this process and resolving those. We are making good progress on block merge.
      • A test related to timestamps was failing in nutzipper's block merge code. The test needs to be fixed for now. In future, we might want to include block pre-state hash as part of the random seed for unforgeable names, so that there is no possibility of duplicate seeds and collision.   
      • nutzipper is investigating what seems to be a peek bug. Looks like making peek reads atomic (i.e. implement READ as 'get a lock + consume + produce + release lock') may solve this bug. Currently peek has more in scope than this. This should simplify peek semantics, but we have to test this extensively to make sure the rest of the system works as intended.
      • Plan is to release block merge in small releases, into the feature branch. We will demo once the block merge branch is ready.
      • Dependencies - more have been updated: Significant updates to the dependencies are completed, a few more underway.  The next round of dependencies will be handled when we improve the monitoring framework - kamon, zipkin, influxdb etc. 
      • Rholang v1.1 : Joe has completed the implementation of Let syntax including tests and also synchronous reads. His first PR is at https://github.com/rchain/rchain/pull/3262. He will be focusing on completing the syntax surface first and then the implementation.  We will put out some release candidates on this branch when ready. 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. 
      • His initial focus is on completing the send, receive, and let syntax portions of the spec at https://drive.google.com/file/d/1FvPuiPm7ytGyklex_PEmVyJ8XgbTdIEg/view  and then the for comprehension.   First implementation will be a source to source translation of the new syntax into existing syntax. He is also creating tests as part of the effort. 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 - in conjunction with the community
        • Tomislav added https://github.com/rchain/rchain/pull/3267

          This PR adds conversion for Rholang Set to JSON in WebAPI. Already Par, Tuple and List, and now Set, are converted to JSN list.

          Also type of keys in the Map are extended to primitive types Int, Boolean and Uri, converted to string representation and unforgeable names converted to hex string.

        • 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.9.27 - Block merge
      • Release 0.9.28 and beyond
        • Near term road map is last finalized state (soon), block merge, updating PoS contract, sharding, name spaces, Rholang v1.1. Milestone dates have been revised based on our current estimates.
        • 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
        • In process: Finish dependency updates and plugin updates
        • In process: Improve error logging, debugging and monitoring infrastructure. This will help improve developer productivity, both on the core team as well as dApp developers
        • Ongoing, mostly done - 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
      • Explanation for last finalized state (released in 0.9.26): 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.
      • Hackathon Next hackathon tentatively scheduled for Jan 9-10, 2021. 
        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. 
        • In process - 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. 
      • 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
        • Rholang 1.1 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

https://developer.rchain.coop 

Date