Code Monkey home page Code Monkey logo

architecture-docs's Introduction

RChain Architecture

The RChain platform architecture description provides a high-level blueprint to build a decentralized, economically sustainable public compute infrastructure. The RChain design is inspired by that of earlier blockchains; it unifies decades of research across the fields of concurrent and distributed computation, formal semantics, and programming language design. The RChain platform boasts a modular, end-to-end design that commits to correct-by-construction software and industrial extensibility.

GETTING STARTED

This project uses Sphinx (http://www.sphinx-doc.org/en/stable/index.html) to build html that is published to Read the Docs. To run this documentation on your computer, you should do the following:

Prerequisites

  • Python 2.6 or later
  • git

Install Sphinx, etc

For OSX/Linux users (based on instructions here: https://read-the-docs.readthedocs.org/en/latest/getting_started.html)

  • From command line: sudo pip install sphinx sphinxcontrib-bibtex

For Windows users:

Get source code

Build and view html

  • In a terminal window, go to your architecture-docs directory.
  • make html
  • cd build/html
  • open index.html (open in web browser)
  • Tip: each time you run make html, just reload your browser to view changes

architecture-docs's People

Contributors

9rb avatar abnerzheng avatar akhs13 avatar dckc avatar desaperados avatar drbloom avatar edeykholt avatar ericforgy avatar jbassiri avatar joshorndorff avatar kayvank avatar kirkwood avatar linsheng9731 avatar qelentium avatar rjl493456442 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

architecture-docs's Issues

"industrial extensibility"? (abstract)

@JoshyOrndorff writes October 27 12:16 AM:

Last sentence in the abstract "The platform includes a modular, end-to-end design that commits to correct-by-construction software and industrial extensibility." <- What is industrial extensibility?

Good question.

correct by construction engineering approach: footnote?

I wonder if some sort of footnote is appropriate for the Mercury time-frame:

Since the contract language and its VM are build [sic] from the formal specifications of provable mathematics, and since the compiler pipeline and engineering approach is correct by construction, we expect the platform will be regarded as trustworthy.

I see some K framework stuff for Rholang has been started, but for the VM, we have thousands of lines of code before anyone even attempted to state the correctness theorem, yes?

invalid sample code

sample code dosn't compile against the RHolang specs 0.2
Below is execution script and generated errors:

➜ src git:(master) ✗ docker run -it --mount type=bind,source="$(pwd)",target=/tmp rchain/rnode --eval /tmp/cell.rho
Syntax Error, trying to recover and continue parse... for input symbol "" spanning from unknown:3/10(57) to unknown:3/13(60)
Exception in thread "main" java.lang.Exception: Unrecoverable Syntax Error
at coop.rchain.rholang.syntax.rholang_mercury.parser.unrecovered_syntax_error(parser.java:744)
at java_cup.runtime.lr_parser.parse(lr_parser.java:731)
at coop.rchain.rholang.syntax.rholang_mercury.parser.pProc(parser.java:731)
at coop.rchain.node.Main$.buildAST(main.scala:213)
at coop.rchain.node.Main$.buildNormalizedTerm(main.scala:203)
at coop.rchain.node.Main$.main(main.scala:122)
at coop.rchain.node.Main.main(main.scala)

how Rho calculus and Rholang are connected

I just saw this question in #rholang. The good news is: the published docs have reasonable answers.

You know where you can get a high level overview over how things are connected here, like how is Rho calc and Rholang connected, and if I go through the Rholang tutorial do I learn much about Rho calc, and how far is this implemented in RChain etc.?

The information about how Rho calc and Rholang are connected belongs in RChain Architecture document... ah... good news: there is a section on The Formalism: Rho-Calculus. Some of the material there is somewhat aspirational; for example, rnode doesn't have any static behavioral type checking yet.

There are two Rholang tutorials cited from developer.rchain.coop; both of them cover all the basics of rho calculus: Nil, input, output, parallel composition, and dereference (reflection). If you're interested in the theory, look at the citations from the arch doc.

To learn more, see the RChain Community Calendar for events such as the weekly Rholang office hours on Thursdays.

Comparison Table TPS Statement

RE: https://github.com/rchain/architecture-docs/blob/master/introduction/comparison-of-blockchains.rst

In the "Scalability/Transaction Throughput" row, I think a better distinction should be made between what a "COMM" event is and what a "transaction" is. At RCon3 there was a clarification over the network throughput for test net. It was stated that the aim of RChain was 40K+ COMM events/second - not transactions. I think it's important to distinguish between these two things, as COMM events are atomic. It's important to note that [Single COMM Event != Single Token Transaction].

casper: betting on propositions? Mercury design footnote?

Are we betting on propositions in Mercury? Here's hoping for time to pore over the code and find relevant specs:

Unlike Ethereum’s betting on a whole blocks, RChain’s betting is on logical propositions. A proposition is a set of statements about the blockchain, for example: which transactions (i.e. proposed state transitions) must be included, in which order, which transactions should not be included, or other properties. A concrete example of a proposition is: “transaction t should occur before transaction s” and “transaction r should not be included”. For more information, see the draft specification Logic for Betting – On Betting on Propositions.

https://rchain-architecture.readthedocs.io/en/latest/execution_model/consensus_protocol.html

Broken link to Github

In the last sentence of this page.

For more details join the #rhovm channel on the RChain Slack here. Compiler work can be seen on GitHub.

The provided link in the word GitHub is broken

RhoVM cardinalities in intro

The high-level architecture diagram seems more up-to-date than the text around it:

The RChain Network implements direct node-to-node communication, where each node runs the RChain platform and a set of dApps on the top of it.

A node runs a set of dApps? I wonder what that means, exactly.

The diagram shows:

  1. Each node runs a set of "Node-local Contracts" (is that terminology preferred over "system contracts"? I suppose it's more clear.)
  2. On-chain contracts on top of the Casper consensus protocol.

The heart of an RChain is the Rho Virtual Machine (RhoVM) Execution Environment, which runs multiple RhoVMs that are each executing a smart contract. These execute concurrently and are multi-threaded.

Each RhoVM executes one smart contract? That would be a strange way to define "smart contract". I suppose each shard / namespace has an independent distributed RhoVM, but each of those RhoVMs runs many contracts in parallel, no?

This concurrency, which is designed around on the formal models of mobile process calculi, along with an application of compositional namespaces, allows for what are in effect multiple blockchains per node.

A node can participate in multiple shards or regions, but "multiple blockchains per node" seems passe.

This multi-chain, independently executing virtual machine instances is in sharp contrast to a “global compute” design which constrains transactions to be executed sequentially, on a single virtual machine.

There's still a "global compute" design to RChain, yes? i.e. the distributed RhoVM that results from the Casper protocol. It's just that the RhoVM isn't sequential.

In addition, each node can be configured to subscribe to and process the namespaces (blockchains) in which it is interested.

Wait... that's in addition? Now I'm really lost.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.