An asset is a named quantity that once issued, is a fixed supply of immutably issued “units” of value. Units can be held by other addresses in the network. They can also be transferred from one address to another. Asset are divisible and fungible, meaning they can be indistinguishably traded and can be divided up to a fixed precision specified on issuance.

Unlike in public ledger technologies, assets in private ledger technologies are on-ledger representations of financial quantities and represent an interpretation of an obligation or ownership which is ultimately settled off-chain. The ledger simply acts as a decentralized bookkeeping system for counterparties to trade and transact on these representations and share the ledger.

An asset is defined by the set of metadata created by its issuer:

  • Address of asset

  • Name of asset

  • Issuer

  • Timestamp

  • Total supply

  • Holdings map

  • Reference unit

  • Asset type

Asset Types

An asset is a quantity of units of value. The smallest non-zero amount unit is 0.0000001 represented as an integer value of one. The largest amount unit possible is \(((2^{63})-1)/(10^7)\) (derived from max int64 scaled down) which is \(922,337,203,685.4775807\).

In Uplink, the underlying value of an asset is represented by one of three types:

  • Discrete (Integers) : 1, 2, 3

  • Fractional (Fixed Point) : 1.23, 34.234, 12.501

  • Binary (Boolean) : held, not held


Assets which are indivisible and can only be transferred in integral quantities. Discrete asset holdings are represented in terms of integers.


Assets divisible into fractional amounts, used to model real-world currencies. Fractional asset holdings are represented in terms of fixed precision numbers ranging from 1 to 6 decimal places, specified on asset creation by the issuer.


Assets either held or not-held and represent a fixed pool or rights or obligations that is held by a ledger participant. Sometimes Binary asset holdings are represented in binary values– either the holder holds the asset, or does not.

Asset References

Asset references describe the token of value the asset represents, agreed upon by the issuer and holders of the asset.




US Dollars


British Pounds




Swiss Francs


An abstract token


A security

Example Asset

  "name": "Gold",
  "issuer": "fwBVDsVh8SYQy98CzYpNPcbyTRczVUZ96HszhNRB8Ve",
  "issuedOn: 2323414523,
  "supply": 5000,
  "holdings": {
                "fwBVDsVh8SYQy98CzYpNPcbyTRczVUZ96HszhNRB8Ve": 5000
  "type": "Discrete",
  "reference": "Token",
  "address": "CLqWumx4t8S2VyxuhVa8CMrhFUSbCaPgYbm7cNPo11Mp"


Holdings are a ledger consisting of the percentage of the asset held by individual accounts. Each asset in Uplink maintains a mapping of addresses to holdings that can be modified by Transfer transactions.


This is represented internally as a mapping from account addresses to balances of the asset. The issuer of an asset initializes (allocates) the initial pool of the supply and then can transfer subsets of this balance to themselves (supply -> issuer holdings) or from their holdings to other addresses, distributing the asset into circulation. When a holder recieves an amount of an asset, they are then authorized to “spend” or transfer their holdings to other addresses. The holdings of an asset are always checked before a “spend transaction” is issued to the network and consensus protocol (transaction validation) requires that all spend transactions maintain the internal integrity of the holdings ledger.


The supply of an asset is the maximum amount of the asset that can be in circulation, and before any account in the system can obtain or issue “spend transactions”, an asset supply must be brought into circulation. The notion of circulating an asset refers to the idea that before any amount of an asset can be transferred between two holders the asset issuer must deposit some of the supply into their own holdings. In Uplink, this is implemented with the Circulate transaction.

Before the asset issuer can issue a Transfer transaction and transfer an amount of the asset to another account in the network, they must issue a Circulate transaction, moving some amount of the supply of the asset into their own holdings. Only then can the asset issuer issue a transfer transaction and transfer some of their holdings of the asset to another account in the system.

The process of the asset issuer allocating some holdings to another account in the system is described below:

1. An asset is issued by an account on the network via the CreateAsset transaction, and is know as the asset issuer.

2. The asset issuer issues a Circulate transaction to circulate some of the supply to their own holdings of the asset.

3. The asset issuer then issues a Transfer transaction to transfer some of their holdings to another account in the network.

Through this process, asset issuers have fine-grained control over how much of the total supply of an asset is in circulation, and which accounts in the network receive holdings of that asset.


Asset addresses are derived from the unique transaction that was issued to create the asset, as described in the documentation about Transactions. The addresses are represented as base58 encoded byte strings within Uplink.

\[\text{address}_{\small \rm \text{ASSET}} \ = \ \texttt{base58}(\texttt{sha3}(\texttt{base16}(\texttt{sha3}(\text{transaction}))))\]


The issuer of the asset has the ability to rescind the existence of this asset, but cannot modify the amounts transferred or held once another account has domain over it.