Skip to content
No description, website, or topics provided.
Branch: dev
Clone or download
bors and dzajkowski Merge #2408
2408: Remove trie delete action optimisation r=dzajkowski a=dzajkowski



Co-authored-by: Dominik Zajkowski <dzajkowski@invisibl.es>
Latest commit 2d7ee68 May 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
block-storage/src Use algebraic IO instead of unsafe Java IO for bonds/wallets reading May 17, 2019
casper Merge #2423 #2427 May 17, 2019
comm Change PacketHandler to just return F[Unit] May 14, 2019
crypto Simplify ordering instances for Array[Byte] and for PublicKey May 16, 2019
docker Add Zipkin to docker-compose Oct 1, 2018
docs Rename ApprovedBlockReceivedHandler to Running May 14, 2019
graphz/src Change the gRPC API for visualising a graph to stream the resulting vdag May 8, 2019
integration-tests raise exception when transfer fund fail in test May 16, 2019
models Remove obsolete MaybeBlockMessage May 13, 2019
nix Remove references to external libsodium Sep 22, 2018
node Use algebraic IO instead of unsafe Java IO for bonds/wallets reading May 17, 2019
project Bump plugin versions Apr 17, 2019
regex Enable scalafmt's `SortModifiers` rewrite Apr 17, 2019
rholang-tutorial rholang-tutorial: Update serve to 7.0.0 Sep 10, 2018
rholang Merge #2410 May 14, 2019
roscala Merge remote-tracking branch 'upstream/dev' into core-1150-new-beginning Sep 21, 2018
rosette Remove Ctxt export Jul 26, 2018
rspace-bench/src/test Enclose RSpace.toMap in F May 13, 2019
rspace Merge #2408 May 17, 2019
scripts Remove RHOC balance reporter Apr 17, 2019
shared/src Extract EngineCell May 14, 2019
.codecov.yml Don't measure coverage for files that flicker it without reason Sep 14, 2018
.drone.yml Add `slowcooker:compile` to CI Apr 23, 2019
.gitattributes Initial commit Aug 3, 2017
.gitignore Add .bloop to .gitignore May 15, 2019
.scalafmt.conf Enable scalafmt's `SortModifiers` rewrite Apr 17, 2019
CONTRIBUTING.md Adding requirement for a Travis account Aug 21, 2018
DEVELOPER.md Remove entry about Rosette Jan 21, 2019
LICENSE.TXT Create LICENSE.TXT (#108) Dec 22, 2017
README.md Add info about pubnet to the main readme May 15, 2019
bors.toml Make bors require two review approvals for every PR to dev Jan 9, 2019
build.sbt Bump version to v0.9.4 May 13, 2019
pull_request_template.md Make bors cheat-sheet more accurate Dec 10, 2018

README.md

RChain

Build Status codecov

The open-source RChain project is building a decentralized, economic, censorship-resistant, public compute infrastructure and blockchain. It will host and execute programs popularly referred to as “smart contracts”. It will be trustworthy, scalable, concurrent, with proof-of-stake consensus and content delivery.

RChain Developer features project-related tutorials and documentation, project planning information, events calendar, and information for how to engage with this project.

Use the public testnet

The RChain Cooperative maintains a public testnet running the latest version of RNode. Learn more at RChain public testnet information.

Installation

Docker

$ docker pull rnode/rnode

Debian/Ubuntu

  1. Download a .deb package from the releases page
  2. $ sudo apt install ./rnode_<VERSION>.deb, where <VERSION> is something like 0.8.3

RedHat/Fedora

  1. Download a .rpm package from the releases page
  2. $ sudo rpm -U ./rnode_<VERSION>.noarch.rpm, where <VERSION> is something like 0.8.3

macOS

  1. Install Homebrew by following steps at the Homebrew homepage
  2. $ brew install rchain/rchain/rnode

Running

Docker will be used in the examples port portability reasons, but running the node as a standalone process is very similar.

To fetch the latest version of RNode from the remote Docker hub and run it (exit with C-c):

$ docker run -v $HOME/tmp:/var/lib/rnode -ti -p 40400:40400 rchain/rnode:latest

In order to use both the peer-to-peer network and REPL capabilities of the node, you need to run more than one Docker Rnode on the same host, the containers need to be connected to one user-defined network bridge:

$ docker network create rnode-net

$ docker run -v $HOME/tmp:/var/lib/rnode -dit --name rnode0 --network rnode-net rchain/rnode:latest -s

$ docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
15aa78b45da4        rchain/rnode:latest        "/bin/main.sh -s"   3 seconds ago       Up 2 seconds                            rnode0

In a new terminal:

$ docker logs -f rnode0
[...]
08:38:11.460 [main] INFO  logger - Listening for traffic on rnode://ee00a5357f2f4cb58b08a8a4c949da1b@172.18.0.2:40400.
[...]

A repl instance can be invoked this way:

$ docker run -v $HOME/tmp:/var/lib/rnode -it --name rnode-repl --network rnode-net rchain/rnode:latest --grpc-host rnode0 -r
rholang $ 5
Storage Contents:
 for( x0 <= @{"stdout"} ) { Nil } | for( x0, x1 <= @{"stderrAck"} ) { Nil } | for( x0 <= @{"stderr"} ) { Nil } | for( x0, x1 <= @{"stdoutAck"} ) { Nil }

The above command should result in (rnode0 output):

[...]
08:38:11.463 [main] INFO  logger - Starting stand-alone node.

Evaluating:
5

A peer node can be started with the following command (note that --bootstrap takes the listening address of rnode0):

$ docker run -v $HOME/tmp:/var/lib/rnode -it --name rnode-client --network rnode-net rchain/rnode:latest --bootstrap rnode://ee00a5357f2f4cb58b08a8a4c949da1b@172.18.0.2:40400
[...]
08:58:36.267 [main] INFO  logger - Listening for traffic on rnode://29d77e8cfd924db49e715d4cf4eeb28d@172.18.0.4:40400.
08:58:36.279 [main] INFO  logger - Bootstrapping from #{PeerNode ee00a5357f2f4cb58b08a8a4c949da1b}.
08:58:36.294 [main] INFO  logger - Initialize first phase handshake (encryption handshake) to #{PeerNode ee00a5357f2f4cb58b08a8a4c949da1b}
08:58:36.816 [repl-io-29] INFO  logger - Initialize second phase handshake (protocol handshake) to #{PeerNode ee00a5357f2f4cb58b08a8a4c949da1b}
08:58:36.890 [repl-io-30] INFO  logger - Connected #{PeerNode ee00a5357f2f4cb58b08a8a4c949da1b}.
08:58:41.939 [repl-io-30] INFO  logger - Peers: 1.

The above command should result in (rnode0 output):

08:58:36.769 [repl-io-29] INFO  logger - Responded to encryption handshake request from #{PeerNode 29d77e8cfd924db49e715d4cf4eeb28d}.
08:58:36.882 [repl-io-29] INFO  logger - Responded to protocol handshake request from #{PeerNode 29d77e8cfd924db49e715d4cf4eeb28d}
08:58:37.211 [repl-io-35] INFO  logger - Peers: 1.

To get a full list of options rnode accepts, use the --help option: $ docker run -it rchain/rnode --help.

Configuration file

Most of the command line options can be specified in a configuration file rnode.conf.

The default location of the configuration file is the data directory. An alternative location can be specified with the command line option --config-file <path>.

The format of the configuration file is HOCON.

The reference.conf configuration file shows all options and default values.

Example configuration file:

rnode {
  server {
    host = localhost
    upnp = false
    port = 40400
    port-http = 40403
    port-kademlia = 40404
    send-timeout = 2 seconds
    standalone = false
    bootstrap = "rnode://de6eed5d00cf080fc587eeb412cb31a75fd10358@52.119.8.109?protocol=40400&discovery=40404"
    data-dir = "/var/lib/rnode"
    store-size = 1G
    map-size = 1G
    max-connections = 500
    max-message-size = 256K

    tls {
      certificate = /etc/ssl/node.certificate.pem"
      key = /etc/ssl/node.key.pem
    }

    metrics {
      prometheus = false
      influxdb = true
      zipkin = false
      sigar = false
    }
  }

  grpc {
    host = localhost
    port-external = 40401
    port-internal = 40402
  }

  casper {
    # validator-public-key =
    # validator-private-key-path =
    sig-algorithm = ed25519
    # bonds-file =
    # known-validators-file =
    validators = 5
   }
}

Development

Compile the project with:

$ sbt clean rholang/bnfc:clean rholang/bnfc:generate compile node/docker:publishLocal

Run the resulting binary with:

$ ./node/target/docker/stage/opt/docker/bin/rnode

For more detailed instructions, see the developer guide.

Caveats and filing issues

Caveats

During this pre-release phase of the RChain software, there are some known issues.

Filing Issues

File issues in our Public Jira Instance: File a bug

Acknowledgements

We use YourKit to profile rchain performance. YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

Licence information

To get summary of licenses being used by the RChain's dependencies, simply run sbt node/dumpLicenseReport. The report will be available under node/target/license-reports/rnode-licenses.html

You can’t perform that action at this time.