Pull request Compare This branch is 34 commits ahead, 489 commits behind dev.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
src Do not pass replays as parameter Oct 9, 2018
README.md

README.md

rspace

The RChain Tuple Space

Overview

rspace is a Scala library that has been designed to provide a disk-backed tuple space to the Rholang interpreter. It is based on an earlier, in-memory implementation written in the Rosette Base Language (RBL) found here.

Traditionally, a key-value store provides two main functions for interacting with a given store: put, which persists a piece of data at a given key, and get, which retrieves the data stored at a particular key.

rspace departs from this model and provides a novel approach to storing and retrieving data.

Here are some key differences:

  • Rather than associating a piece of data with a particular key, in rspace, a piece of data is associated with a channel. Roughly speaking, in rspace, a channel can be any Scala type that can be serialized to and deserialized from an Array[Byte].

  • In addition to storing data, rspace can also store continuations, which represent actions to carry out once the data is retrieved. Roughly speaking, in rspace, a continuation can be any Scala type that can be serialized to and deserialized from anArray[Byte].

  • A continuation is associated with a list of channels and a list of patterns. Like channels and continuations, patterns can be any Scala type that can be serialized to and deserialized from an Array[Byte]. Users of rspace provide their own custom match function for matching patterns against data.

  • The two main functions for interacting with a given store are:

    • consume, which searches the store for data matching a given list of patterns at a given list channels; and

    • produce, which, given a piece data at a given channel, searches the store for matching continuation, using existing data in the store to help satisfy the match.

For more information and detailed instructions on using rspace, see the tutorial here.

Prerequisites

  • Java Development Kit (JDK), version 8
    • We recommend using the OpenJDK which can be installed using most common package managers.
    • Alternatively, the Oracle JDK is available here.
  • sbt

Usage

To use rspace in a Scala project, add the following coordinates your build:

coop.rchain %% rspace % "0.1.1"

Issues

Bug reports are welcome! Please report any issues you have with rspace here.

License

This project is licensed under The Apache 2.0 License.