Distributed ledger technology (DLT) for fair play in a globalized world. A
distributed ledger is a database for processing transactions and storing data in
a way that makes them useful for solving today’s complex economic challenges. A
distributed ledger has three core distinguishing ideas:
Everywhere is the same.
The record is permanent.
No one is in charge.
These three properties allow us to build self-reconciling processes that empower
trustless participants to construct complex agreements and reconciliation
workflows between each other, with assurance on the integrity and provenance of
Distributed ledgers can also run programs called contracts, which model
workflows across the entire network involving other DLT participants to
read and write to shared processes and assets.
The key problem with today’s enterprise data solutions is that they consist of a
network of ad-hoc data silos that are synchronized via a manual set of processes
across many counterparties’ databases. By constructing a single
self-synchronizing shared database that binds data and reconciliation logic into
its fabric, we eliminate an entire class of workflows around integrating and
By moving to a shared distributed database, businesses and institutions can
eliminate cost and data inconsistencies and redundancy involved in traditional
In this section we show how to install Uplink on Linux and MacOS. Note that any
terminal command you may need to run are given with an initial $ which
represents the prompt. Only type the text following the prompt, not the prompt
Follow the install directions specified in the README or graphical installer to
install the Uplink binary. It will be available on on the system command line as
uplink. To query the possible commands run uplink--help:
$ uplink --help
Usage: uplink COMMAND
-h,--help Show this help text
chain Manage and setup blockchains.
keys Manage keypairs.
scripts Manage smart contract scripts.
data Manage ledger data and oracle services.
console Connect to a node and issue transactions.
repl Connect to a node and simulate a contract.
version Version info
To initialize and uplink node with a new database, the following command must
$ uplink chain init
This command assumes that no database currently exists in the storage.backend
path denoted in the config file (default config/node.config). If a database
is found to exist at the supplied URI, the uplink node will fail to boot.
To run an uplink node with an existing database, use the following command:
$ uplink chain
This command will assume an existing database using the URI in the
storage.backend field found in the node.config file.
When an uplink node is run, an RPC server is launched on port 8545 (default),
and a P2P server is launched on port 8001 (default).
To create a network, first run a validating node as described above. This will
allow the network to accept transactions and create blocks comprised of those
transactions. Any node in the network can issue transactions, but only
validating nodes can create and broadcast blocks to the network. Once a
validating node is running, other validating or non-validating nodes can be run,
with the ability to issue transactions to the network. To run two non validating
In a different console window, run the same command as above, but without
pointing to a validator node private key and with differing P2P and RPC ports
specified as command line arguments:
A console program is provided to interact with the running uplink node with the
ability to issue network transactions and to query the state of the database.
Commands can be issued to the console to interact with the ledger by invoking
$ uplink console
Extensive documentation for how to use the uplinkconsole program can be found
on the console documentation page: Console.
The Uplink Explorer is a basic application to interact with the Uplink ledger
to view assets, accounts, contracts and blocks as well as creating the
associated transactions. The github repository for Uplink Explorer can be found
here. To build locally: