WebWallet - Graphstore

A microservice for transaction clearing using a graph-oriented database with support for ACID transactions.

Purpose

WebWallet Graphstore is meant to deal with concurrent requests to modify highly related data under boundary conditions and uniqueness constraints. Its name comes from the fact that it stores transactions and the relationships between them as nodes and arcs in a graph. Since Hashtable stores the actual contents of transaction documents, Graphstore only handles identifiers.

Features

  • Unspent outputs modeling Graphstore models transaction output spending by creating relationships between transaction nodes, where an index property specifies the output being spent. Unspent outputs are therefore determined by the absence of such spending relationships, and double-spending is prevented by ensuring the uniqueness of the index property among the existing ones.
  • ACID transaction clearing In order to ensure that the transaction graph is always in a consistent state, and that clearing operations are performed atomically, it is crucial that the database supports ACID transactions. This enables the execution of relatively complex queries in single roundtrips to the database, with just one additional trip for commit or rollback after validation.
  • Transaction history traversal Given that nodes and arcs are native concepts in a graph database, traversing the graph to retrieve the transaction history is also supported by default. However, since Graphstore can only return transaction identifiers and the relationships between them, the actual contents have to be subsequently retrieved from the Hashtable service.

results matching ""

    No results matching ""