Skip to main content

Ledger Operations

This section discusses the ledger operations that are possible with Fluree.

Creating a New Ledger#

You can create a new ledger through the user interface, or through the APIs.

See the section for creating a new ledger in the Reference Docs.

Deleting a Ledger#

You can delete a ledger through the user interface or APIs. This will delete the ledger and all associated files from all the servers in a network.

See the section for deleting a ledger in the Reference Docs.

In-Memory Fluree#

You can run Fluree in memory for testing purposes. To do so, simply specify fdb-consensus-type as in-memory and fdb-storage-type as memory. At this time, you can only run a single, centralized ledger in memory.

Setting Your Own Private Key#

To use your own private key, first please see the section on public and private keys to see what is and isn't valid as a private key.

If you have a valid private key, encoded with Base58Check Encoding, then you can add your private key to a default_private_key.txt. You can also change the name of the file that holds the private key by changing the fdb-group-private-key-file config option (see below).

You can also run ./fluree_start.sh :keygen to generate a public key, private key, and account id. This will not start Fluree, it will just return those three pieces of information.

Setting Up a Transactor Group#

Currently, transactor groups only support the Raft consensus algorithm to agree on a shared state for a network of ledgers. With Raft, a total of n servers can support f failures: n = 2f + 1. This means that anything less than 3 servers can sustain no failures, 5 servers can sustain two failures.

You can test a decentralized Fluree on a single computer (different ports) or on multiple computers. Each member of Fluree needs to have its own folder containing fluree-ledger.standalone.jar, fluree_sample.properties, and fluree_start.sh.

Before starting any of the servers, make sure to set fdb-group-servers and fdb-group-this-server.

All the members of the transactor group need to have the same fdb-group-servers. All of the servers participating in ledger-group should be listed in the format of server-id@host:port, for example to run them all on one machine, you would list:

fdb-group-servers=myserver1@localhost:9790,myserver2@localhost:9791,myserver3@localhost:9792

Each server should have a different fdb-group-this-server, which should be the server-id (from fdb-group-servers).

Other configuration options that are relevant to setting up a transactor group are:

fdb-group-timeout, fdb-group-heartbeat, fdb-group-log-directory, fdb-group-snapshot-threshhold, fdb-group-log-history.

See the full explanation for those settings in config options.