Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


“The most that Bitcoin can do on a good day is 10 transactions a second,” says Greg Heuss, an adviser helping RChain with its fundraising. “Visa can do 40,000 transactions in the same time.”
https://www.geekwire.com/2017/seattle-based-rchain-takes-bitcoin-ethereum-new-blockchain-tech/

...

4.  System Architecture

The storage layer has two parts:  a unifier and two Lmdbjava databases.  The diagram below indicates that each lmdbjava interface wraps an lmdb instance, which is written in C.  Further, each lmdb instance makes use of two database files:  data.mdb and lock.mdb.

...

Lmdbjava is a Java package and Java does not have native unsigned types and as a consequence the storage layer does not offer unsigned types in its interface.  There are Java packages that simulate unsigned types that we can add to address this deficiency.

4.2.2 Lmdb contrains the size of a key

The biggest key that lmdb accepts is 511 bytes.

4.2.3 Lmdb constrains the size of MDB_DUPSORT values

If lmdb is configured with MDB_DUPSORT then the size of a value associated with a key cannot exceed 511 bytes.  See lmdb C code in mdb.c.

4.2.

...

A key can be associated with multiple large keys


Greg, Mike, and I discussed the storage layer requirements in a call on September 11, 2017.  Greg mentioned that each key may be associated with multiple blobs.  Neither Mike nor I asked Greg if this requirement is a necessity.  Further, on November 7, 2017, Kent confirmed that Rholang contracts require that a key be associated with multiple keys.

...


“LMDBJAVA SMALL-VALUES” is keyDb.“LMDBJAVA BIG-VALUE” is valueKeyDb
“SMALL-VALUES” is plural because… while “BIG-VALUE” is singular because …

4.2.

...

5  Uses Cases

Example of use of unification in Rholang code from Kent

Contents of Key-Value Store

key | value

anything | rholang-0 // Channel points to ptrn
rholang-0@ | [ rholang-1, rholang-2, rholang-3 ] // ptrn points to the unification_ptr
[ rholang-1, rholang-2, rholang-3 ] | P1, P2, P3 // unification_ptrn points to the actual continuation

GRIFF:
* What does '@' mean at the end of the key "rholang-0@"?
* Will the key array [ rholang-1, rholang-2, rholang-3 ] be represented as a blob?

tree (GRIFF: trie?)

a
n
y
t
h
i
n
g
(rholang-0)


anything!([1, 2, 3 ])
|
for (rholang-0@[ rholang-1, rholang-2, rholang-3 ] <- anything) {
    print(rholang-1, rholang-2, rholang-3)
}
|
for (rholang-0@[ rholang-1, rholang-2, rholang-3 ] <- anything) {
     print(rholang-1, rholang-2, rholang-3)
}
|
for (rholang-0@[ rholang-1, rholang-2, rholang-3 ] <- anything) {
    print(rholang-1, rholang-2, rholang-3)
}

4.3  Unification and Lmdbjava

...