What is held in State¶
SETL’s state is organised as a collection of Merkle trees. The data, such as balances, are held in the ‘leaf nodes’.
A Merkle tree is a tree of hashes in which the leaves are hashes of data blocks in, for instance, a file or set of files. Nodes further up in the tree are the hashes of their respective children. For example, in the picture hash 0 is the result of hashing the concatenation of hash 0-0 and hash 0-1. That is, hash 0 = hash( hash 0-0 + hash 0-1 ) where + denotes concatenation.
Usually, a cryptographic hash function such as SHA-2 is used for the hashing.
In the top of a hash tree there is a root hash. When the root hash is available, the elements of the Merkle tree can be independently proved against the trusted root hash. Any damaged or faked data will not be provable against the root hash and will, therefore, be immediately apparent
Each of the following is held within a separate Merkle tree within SETL’s state.
The right to contribute to the validation process is held within state. Such rights are held against public keys and any exercise of that right must be signed using the associated private key. Each Validation node knows of the existence and the rights of all other Validation nodes.
Issuers and Instruments¶
SETL recognises the concept of an issuer and of instruments – being an obligation of the issuer. Details of those issuers and their instruments or obligations are held within state. Both issuers and instruments are recorded against public keys and can only be amended with transactions which are signed using the associated private key.
A balance is held against a public key. The balance is the amount of an instrument which is held (or issued from) a particular public key. Balances can only change in response to an authorised transaction. Unlike simple crypto-currency blockchains, financial assets balances can change in complex ways – in response to authorised transfers, corporate actions, settlements, margin movements and many other ways. Additionally, the authority over balances can be complex with standard financial functionalities having delegated or fundamental rights to change or alter balances – such as custodians, brokers and administrators.
Key to financial services is the ability to immobilise balances for collateral, margin and settlement purposes. Encumbrances can be complex with beneficiaries and administrators having different abilities to release or perfect pledged assets.
Powers of Attorney¶
The administration of wholesale financial services depends upon being able to delegate certain functions to other parties – frequently on a time limited basis. In a simple settlement process, the owner may delegate to a broker, to an exchange, to a clearing member, to a settlement agent and to a settlement bank. SETL maintains a complex set of delegated authorities that allow agents to complete well-defined transactions on behalf of the owner without the owner having to give away full access or authority in respect of their assets.
SETL records contracts in state. Contracts are arbitrarily complex warranties to complete actions (e.g. move assets) subject to conditions, data and documents. SETL provides a flexible framework into which users can define the actions to be taken (which can be formulaic), the data required to compute those actions, the authorities required for each action, overall authorities required and documents that must be evidenced. Contracts change in state as elements are completed with each state change triggering an evaluation and potentially an action.
Objects and Data¶
SETL provides for arbitrary data object to be held and updated in state subject to defined schemas and permissioning structures. These objects can be used for messaging, authenticated data structures such as corporate actions or any scheme which would benefit from an immutable recording schema.
Identity and Permissions¶
SETL has developed a membership system under which a user’s details, authentication requirements and permissions are recorded in a High Availability datastore. SETL’s protocol is for this information to remain separate from the balance and transaction information so that there is no direct connection, on the blockchain, between accounts, balances, transactions, permissions and identities in order to preserve privacy.
The link between public keys and identities is maintained in a wallet. Each wallet belongs unequivocally to a legal entity – i.e. the legal entity that has control over the assets recorded against that key on the blockchain. The wallet records some information about the legal entity such as its LEI, name and address details and the collection of public keys that it controls.
Users are people or entities that control wallets. A user is authenticated before access is granted to a SETL blockchain. A user can be assigned roles which confer certain rights and abilities within the blockchain environment and also within the Membership environment. For example, a user may be given read-only access to certain parts of the blockchain (Transactional rights) and rights to create new users (Membership rights).
Users access the blockchain through a Wallet Node. Users do not communicate directly with Validation nodes. Wallet nodes authenticate each user and curate their activity into the blockchain environment. Each request to access the blockchain is checked against roles and permissions by the Wallet Node.