transact 0.4.1

Transact is a transaction execution platform designed to be used as a library or component when implementing distributed ledgers, including blockchains.
Documentation
# Copyright 2018-2019 Bitwise IO, Inc.
# Copyright 2019-2021 Cargill Incorporated
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[package]
name = "transact"
version = "0.4.1"
authors = ["Bitwise IO, Inc.", "Cargill Incorporated"]
edition = "2018"
license = "Apache-2.0"
readme = "../README.md"
description = """\
    Transact is a transaction execution platform designed to be used as \
    a library or component when implementing distributed ledgers, including \
    blockchains.
"""
repository = "http://github.com/hyperledger/transact"

[dependencies]
bzip2 = { version = "0.4", optional = true }
cbor-codec = { version = "0.7", optional = true }
chrono = { version = "0.4", optional = true }
cylinder = { version = "0.2", optional = true }
diesel = { version = "~1.4.7", features = ["r2d2"], optional = true }
diesel_migrations = { version = "1.4", optional = true }
glob = { version = "0.3", optional = true }
hex = "0.4"
lazy_static = { version = "1.4.0", optional = true }
libc = ">=0.2.35"
lmdb-zero = { version = ">=0.4.1", optional = true }
log = { version = "0.4", optional = true, features = ["std"] }
protobuf = "2.23"
rand = { version = "0.8", optional = true }
reqwest = { version = "0.11", features = ["blocking", "json"], optional = true}
sabre-sdk = { version ="0.7.1", optional = true }
sawtooth-sdk = { version = "0.5", optional = true }
semver = { version = "1", optional = true }
serde = { version = "1.0", optional = true }
serde_derive = { version = "1.0", optional = true }
serde_json = { version = "1", optional = true }
serde_yaml = { version = "0.8", optional = true }
sha2 = "0.9"
tar = { version = "0.4", optional = true }
uuid = { version = "0.8", optional = true, features = ["v4"] }
yaml-rust =  { version = "0.4", optional = true }

[dev-dependencies]
rusty-fork = "0.3"
sawtooth-xo = "0.5"
serial_test = "0.5"
tempdir = "0.3"

[build-dependencies]
protoc-rust = "2.14"

[features]
default = [
    "context",
    "database-lmdb",
    "execution",
    "handler",
    "protocol-batch",
    "protocol-batch-builder",
    "protocol-transaction",
    "protocol-transaction-builder",
    "scheduler",
    "state-merkle",
]

stable = [
    # The stable feature extends default:
    "default",
    # The following features are stable:
    "contract-archive",
    "family-command",
    "family-command-workload",
    "family-smallbank",
    "postgres",
    "protocol-sabre",
    "sqlite",
    "state-merkle-sql",
    "workload",
    "workload-batch-gen",
    "workload-runner"
]

experimental = [
    # The experimental feature extends stable:
    "stable",
    # The following features are experimental:
    "contract",
    "contract-address",
    "contract-address-double-key-hash",
    "contract-address-key-hash",
    "contract-address-triple-key-hash",
    "contract-context",
    "contract-context-key-value",
    "family-smallbank-workload",
    "family-xo",
    "key-value-state"
]

# stable features in support of wasm
wasm = [
    # The following features are stable:
    "sabre-compat",
]

wasm-experimental = [
    # The experimental feature extends stable:
    "wasm",
    # The following features are experimental:
]

nightly = []

context = ["uuid"]
contract = []
contract-address = ["contract"]
contract-address-key-hash = ["contract-address"]
contract-address-double-key-hash = ["contract-address"]
contract-address-triple-key-hash = ["contract-address"]
contract-archive = ["bzip2", "contract", "glob", "semver", "serde", "serde_derive", "serde_yaml", "tar"]
contract-context = ["contract", "contract-address"]
contract-context-key-value = ["contract-context", "key-value-state"]
database-lmdb = ["lmdb-zero"]
execution = ["context", "handler", "log", "protocol-transaction", "scheduler"]
family-command = ["handler"]
family-command-workload = [
    "cylinder",
    "family-command",
    "protocol-sabre",
    "protocol-transaction-builder",
    "workload",
]
family-smallbank = ["handler"]
family-smallbank-workload = [
    "family-smallbank",
    "protocol-sabre",
    "rand",
    "yaml-rust",
    "workload",
    "workload-runner"
]
family-xo = ["handler", "workload"]
handler = ["protocol-transaction"]
key-value-state = []
postgres = ["diesel/postgres"]
protocol-batch = ["protocol-transaction"]
protocol-batch-builder = ["cylinder", "protocol-batch"]
protocol-transaction = []
protocol-transaction-builder = ["cylinder", "protocol-transaction", "protocol-batch-builder", "rand"]
protocol-sabre = []
sabre-compat = ["sabre-sdk"]
sawtooth-compat = ["sawtooth-sdk"]
scheduler = ["context", "log", "protocol-batch"]
sqlite = ["diesel/sqlite", "serde", "serde_derive", "serde_json"]
state-merkle = ["cbor-codec", "log"]
state-merkle-sql = ["diesel", "diesel_migrations"]
# This feature must be enabled to run tests using a postgres db it is not
# enabled by default, due to its requirement of an external postgres db
# instance.
state-merkle-sql-postgres-tests = ["postgres", "lazy_static"]
workload = []
workload-batch-gen = ["workload"]
workload-runner = [
    "chrono",
    "reqwest",
    "serde",
    "serde_derive"
]

[package.metadata.docs.rs]
features = [
    "default",
    "nightly",
    "experimental",
    "sawtooth-compat",
    "stable",
]