diff --git a/Cargo.toml b/Cargo.toml
index 98be14250..d450a32b1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -98,6 +98,7 @@ rand = "0.5.1"
rayon = "1.0.0"
reqwest = "0.9.0"
ring = "0.13.2"
+rocksdb = "0.10.1"
sha2 = "0.8.0"
serde = "1.0.27"
serde_cbor = "0.9.0"
diff --git a/ci/buildkite.yml b/ci/buildkite.yml
index fc5bbcb1a..9bb128d27 100644
--- a/ci/buildkite.yml
+++ b/ci/buildkite.yml
@@ -4,7 +4,7 @@ steps:
env:
CARGO_TARGET_CACHE_NAME: "stable"
timeout_in_minutes: 30
- - command: "ci/docker-run.sh solanalabs/rust-nightly:2018-10-04 ci/test-bench.sh"
+ - command: "ci/docker-run.sh solanalabs/rust-nightly:2018-11-07 ci/test-bench.sh"
name: "bench [public]"
env:
CARGO_TARGET_CACHE_NAME: "nightly"
@@ -12,7 +12,7 @@ steps:
- command: "ci/shellcheck.sh"
name: "shellcheck [public]"
timeout_in_minutes: 20
- - command: "ci/docker-run.sh solanalabs/rust-nightly:2018-10-04 ci/test-nightly.sh"
+ - command: "ci/docker-run.sh solanalabs/rust-nightly:2018-11-07 ci/test-nightly.sh"
name: "nightly [public]"
env:
CARGO_TARGET_CACHE_NAME: "nightly"
diff --git a/ci/docker-rust/Dockerfile b/ci/docker-rust/Dockerfile
index b3f6d0931..c96f76f8b 100644
--- a/ci/docker-rust/Dockerfile
+++ b/ci/docker-rust/Dockerfile
@@ -12,6 +12,7 @@ RUN set -x && \
apt update && \
apt install -y \
buildkite-agent \
+ clang-7 \
cmake \
lcov \
libclang-common-7-dev \
diff --git a/ci/version-check.sh b/ci/version-check.sh
index daad013d5..97eb6ffa2 100755
--- a/ci/version-check.sh
+++ b/ci/version-check.sh
@@ -19,8 +19,8 @@ require() {
case ${1:-stable} in
nightly)
- require rustc 1.31.[0-9]+-nightly
- require cargo 1.31.[0-9]+-nightly
+ require rustc 1.32.[0-9]+-nightly
+ require cargo 1.32.[0-9]+-nightly
;;
stable)
require rustc 1.30.[0-9]+
diff --git a/src/db_ledger.rs b/src/db_ledger.rs
new file mode 100644
index 000000000..da6065d5a
--- /dev/null
+++ b/src/db_ledger.rs
@@ -0,0 +1,534 @@
+//! The `ledger` module provides functions for parallel verification of the
+//! Proof of History ledger as well as iterative read, append write, and random
+//! access read to a persistent file-based ledger.
+
+use bincode::{deserialize, serialize};
+use byteorder::{ByteOrder, LittleEndian, ReadBytesExt};
+use packet::Blob;
+use result::{Error, Result};
+use rocksdb::{ColumnFamily, Options, WriteBatch, DB};
+use serde::de::DeserializeOwned;
+use serde::Serialize;
+use std::io;
+
+pub trait LedgerColumnFamily {
+ type ValueType: DeserializeOwned + Serialize;
+
+ fn get(&self, db: &DB, key: &[u8]) -> Result