_images/world.png

Design

Uplink was designed from the ground up to be a simple, small, portable distributed ledger that provides an easy entry point for building applications for a wide variety of use cases and industries.

Uplink combines all the software you need out of the box, with a simple easy to follow guide that will have you running your first network in 5 minutes.

Components

The three core structures that comprise a distributed ledger are:

Accounts Assets Contracts
_images/account.png _images/investment.png _images/combine.png

Accounts

An account is an identity that a person, entity, division, desk or group of people hold that identifies their interactions with the ledger. An account is associated with a unique identifier called an address that identifies this account with all participants. `

Assets

An asset is a fungible set of symbolic assets that can be traded standing for a currency, commodity, service, invoice or abstract unit of value traded on the network. It is a pool of value issued by a single party and can be owned and exchanged by parties who posses cryptographic evidence that they own a portion of the allocated pool. An owned asset can be always be transferred to another party. A swap is a transfer of two owned assets between two counterparties at given exchange rate.

Contracts

A contract (or smart contract) is a sequence of actions and logic that mediate the transfer of value and data between accounts and the assets they control. The logic of the contract is run independently of the parties involved such that the results are tamper-proof and cryptographically audited so that all irrefutably parties agree on it’s state and terms.

Transactions

Updates to the ledger consist of transactions which modify the state by applying authorized transactions submitted by accounts on the network. The transactions are submitted and checked for their signature integrity and data integrity before being aggregated and sequenced in a block.

Ledger

A ledger is a set of transactions that operate over the three core components of the ledger. The current state of a distributed ledger is called it’s world state. A ledger is modified by participants submitting transactions to the network which are validated, collected into discrete blocks, and then applied cryptographically appended to produce an updated world state.

Digital Signatures

All transactions on the ledger are digitally signed by the owner of an account on the network. This provides three key properties of the ledger that differs from traditional network traffic:

  • Authentication : A malicious party can’t masquerade as someone else.
  • Non-repudiation : Participants can’t claim that the transaction did not happen after the fact.
  • Integrity : The transaction receipt can’t be modified after the fact.
  • Non-malleability : Any changes to the transaction in transit invalidate the signature of the issuer, making the transaction invalid.

Data Privacy

Global

Global data is data which is stored on-ledger that all participants in the network agree at a point in time. The data is a permanent fixture of the history of the ledger and provides an irrefutable audit trail.

Local

Local data is data that is stored off-ledger which smart contracts mediate the alteration of without publishing the data itself.

Consensus

A network is a collection of computers running the ledger client to participate in synchronization, transaction creation and mediation of the ledger state via a consensus protocol. Consensus is the mechanism by which blocks of transactions are constructed, ordered, and proposed to the network.

Authorities

An authority is a entity in the ledger that is responsible for ordering transactions, proposing blocks, and signing proposed blocks as part of the consensus algorithm that maintains ledger state.

Internal Architecture

Uplink consists of several parallel running threads. Each thread provides a service to other parts of uplink. Mainly, these are the RPC, P2P, and Consensus service.

The RPC service accepts commands from one on the SDKs. These commands are either querying to the Node State or Node Config such as GetAccounts and GetBlock or submit transactions to the P2P service after validating them.

The P2P service handles connections to peers as well as distributing messages to them. When a new peer connects, node configuration information are exchanged which are used to accept or reject connections.

The Consensus service signs and validates newly created or received blocks.

_images/network-diagram.png