Version: current

Architecture

The Qredo Network consists of computers that are categorized as nodes or services, working together to process transactions and create blocks. The Qredo Network is different from other cryptoasset networks where all nodes run the same client software. The computers are deployed in Tier-4 data centers within global financial capitals on a highly-secure hardware infrastructure running on a low-latency network. Each node or service has a dedicated function as summarized in this diagram:

architecture

User and App#

A Qredo user adds data to the Qredo Signing App, e.g., for a transaction. For example, a principal enters options to transfer cryptoassets to another user. Custodians, using the Qredo Signing App on their phones, approve or reject the transaction. The approval or rejection unlocks digital signatures in the app.

Qredo Server#

The Qredo server processes the signatures from the transactions.

Blockchain Validator#

The blockchain validator node creates blocks on the Qredo blockchain from incoming transactions. The node keeps a copy of the Qredo blockchain. As of June 2020, the Qredo Network has six blockchain validators of which >2/3 (subject to voting weight) must verify and authorize every new block.

Watcher#

The watcher mediates between the blockchain validator, MPC cluster, and cryptoasset network nodes. The service is designed to prevent theft if compromised. The watcher plays a key role when a new wallet is created, when cryptoassets are deposited to a user’s account, and when a settlement is made.

Crypto Currency#

The node, residing on an external cryptoasset network, keeps a copy of the underlying chain (such as the Bitcoin blockchain). The node allows the monitoring of payments in and out of Qredo. The watcher can connect to multiple nodes to increase certainty on the state of the external network. Future versions will include nodes that support other currencies.

MPC Cluster#

The MPC cluster is a set of nodes that work together to generate a signed public key by applying the MPC protocol. The protocol, through its use of mathematics behind the scenes, alleviates the need for a private key in order to sign transactions that are added to the Qredo blockchain. More information on the MPC is described in Security & Cryptography.

The MPC cluster works with both the watcher and the MPC validator. When adding funds, an MPC node verifies the validity of a request against either a proof supplied with the transaction or by querying the Qredo blockchain validator. Any resultant MPC transaction can be transferred back to the Qredo blockchain through the watcher. The validity of the transaction can be checked by verifying the signatures against the public keys of the MPC cluster.

MPC Validator#

The MPC Validator accesses data on the Qredo blockchain on request of the MPC cluster through an independent connection to the blockchain validator nodes. The MPC validator is needed for highly sensitive processes such as a withdrawal.

Transaction Flows#

Transaction flows require nodes and services to perform various functions on the Qredo Network, including when a user:

  • joins Qredo
  • deposits cryptoassets
  • transfers cryptoassets
  • withdraws cryptoassets

The nodes and services used depend on the complexity of the transaction. For example, withdrawing cryptoassets uses more nodes and services than when a user joins Qredo.

info

The above transaction flows do not apply to the process of becoming a trusted party for another user. The user that is becoming a trusted party already has their own IDDoc.

Joining Qredo#

These steps exist when a user joins Qredo. An IDDoc is generated by the app for identification.

  1. User joins Qredo from the Qredo Web App.
  2. The app generates an IDDoc containing a public key for the new user.
  3. The user signs the IDDoc with their private key.
  4. The Qredo server processes the IDDoc.
  5. The blockchain validator checks that the IDDoc is unique.
  6. The blockchain validator writes the IDDoc to the Qredo blockchain.

Depositing Cryptoassets#

For depositing cryptoassets, Alice creates a wallet using the app. Various nodes and services are used as summarized:

architecture

Blockchain Validator Updates#

The blockchain validator records these events:

  • the wallet Alice has created on Qredo with her IDDoc.
  • details of the deposit transaction to a wallet address.

Watcher and MPC#

The watcher informs the MPC to generate an address for those that are incoming on the Qredo transaction. This is also known as a peg-in transaction.

The watcher adds the address as a watch-only address on the Crypto Currency node. This allows the node to see changes in the wallet for the cryptoassets coming in. When Anne deposits cryptoassets for Alice in the address, the watcher periodically (every minute) requests wallet changes from its Crypto Currency node. When the node is queried periodically, the node can provide full UTXO details, together with proof of existence on the underlying chain.

info

When the node is queried periodically, the node can provide full UTXO details, together with proof of existence on the underlying chain.

Mapping Address and Amounts#

The Qredo blockchain uses consensus rules to map the cryptoasset address to Alice’s wallet through the MPC. The amount of cryptoassets deposited into the address is added to the balance in Alice’s wallet. The balance is a value in the consensus database with the key “Wallet_Alice.balance”. The balance in the database key increases as more funds are added.

Transferring Cryptoassets#

When transferring cryptoassets, the participants update the user interface. The transactions are signed by the Qredo server, and the blockchain validator node updates the Qredo blockchain.

  1. Alice and Bob are both on the Qredo Network.
  2. Bob arranges to send cryptoassets to Alice.
  3. Bob creates an updated wallet which is based on his original one, but also contains a transfer of funds to Alice’s wallet. This transaction needs to be signed by Bob and either Alice or Charlie before it is valid. The signing ensures it is accepted by the consensus rules and entered onto the Qredo blockchain.
  4. As the wallet update is committed to the Qredo blockchain, the consensus rules ensure that an action is triggered to transfer an amount from the wallet balance of Alice's to Bob’s.

Withdrawing Cryptoassets#

For withdrawing cryptoassets or a settlement, it is transferred back out of the Qredo Network to an external address. To ensure that a valid wallet is put forward, various nodes and services are used as summarized:

settle funds

Alice updates a wallet using the app. The custodians in the network need to sign the transaction.

During the transaction, the wallet is locked to prevent any further updates. The wallet is unlocked when the transaction ends.

Blockchain Validator Updates#

The blockchain validator records:

  • the transaction and the signatures.
  • the completed transaction which allows change from the settlement to released back in to Qredo.

Watcher and MPC#

The watcher informs the MPC nodes to sign a peg-out transaction, which authorizes cryptoassets to go out of Qredo, and generate an external address. The watcher works with the MPC to generate an external address for the unspent funds, which is used by the Crypto Currency node for monitoring funds going out of Qredo.

MPC Validator#

To keep the Qredo Network secure when funds leave the network, the MPC validator double-checks the funds during a settlement. The MPC validator accesses the Qredo blockchain on request by the MPC cluster, and uses an independent connection.

Broadcasting a Transaction#

To allow external blockchains to have a record of a settlement transaction, the watcher service broadcasts the transaction to the external blockchains. There is also a corresponding transaction on the Qredo blockchain, which releases the change from the settlement back into Qredo.

A crystalization process (see the section below) is also performed on the Qredo blockchain to build an unsigned transaction.

Crystalization#

At the end of every transaction is the crystalization process to ensure that the amounts in each wallet are correct for all Qredo users. To ensure solvency for the system, the process also proves that all coins locked onto the Qredo blockchain system are spendable.

For each user, the process ensures that the amounts are mapped to a UTXO on an external address. For example, if a wallet has 30 Bitcoin between Bob and Alice, the crystalization process will:

  • map the wallet to Alice's UTXO containing 12 Bitcoin
  • map the wallet to Bob's UTXO containing 18 Bitcoin

The allocations made during crystalization are used when a user requests settlement. Their crystalized funds minus any fees are transferred out of the Qredo Network, and any change is returned back.