Draft White Paper
Version 0.5 – April 2018
While many technical and financial enthusiasts have long been watching, debating, and experimenting with Blockchain in one form or another, it is only relatively recently that the topic has become so visible and commonplace in public and mainstream discourse. With numerous reports in the past 3 years predicting massive global impact and widespread adoption at a fundamental level, it is not hard to understand this upsurge in interest.[i] [ii] [iii]
Naturally, more and more individuals and organisations are turning their attention to the possibilities that this new technology might bring.
Blockchain, at its simplest, is a distributed ledger that can record transactions in a verifiable and permanent way. Data stored on the Blockchain is generally regarded as incorruptible[iv].
All data is stored in a decentralized manner, meaning that no single party controls the data. This also means that there is no single point of failure, and data manipulation by a single entity or actor becomes impossible.
A blockchain can really be seen as an append-only database, with integral time-stamping and notarisation.
However, there are several key issues with an open and public blockchain (such as is seen with Bitcoin, Ethereum, and other prominent cryptocurrencies), making the use thereof highly problematic in many business arenas.
- Limited Capacity – as an example, transactions on the Bitcoin blockchain are limited and effectively have a (current) maximum capacity estimated at between 3 and 7 transactions per second[v] [vi].
- Cost – every transaction on the Bitcoin blockchain incurs a cost, collected by the miner of the block in which that transaction gets confirmed. This cost is fairly significant, at a minimum of BTC 0.0001.
- Privacy [vii]– the very nature of a fully public blockchain means that every transaction is visible to the entire network. Additionally, anybody can participate in this network (see below). This global and open distribution may also have implications to compliancy to data privacy regulations.
- Openness – in a public blockchain, truly anybody can participate. It is impractical to ensure verifiable identity of all participants, as is often required to comply with legislation, industry or company policies or standards, and so on.
These have given rise to the notion of the permissioned blockchain. Here, the aim is to remove or mitigate the problematic elements listed above, while still retaining the core benefits of Blockchain such as decentralization, data-permanence, and trust[viii].
However, while there is an ever growing number of real and impactful applications of the technology beyond cryptocurrency-specific functions, and even more strong use case concepts[ix] yet to be proven en masse, many business and technical leaders have yet to decipher the practical and specific value they could achieve, without introducing unjustifiable risk, and without massive refactoring or reworking of existing processes and systems[x].
Furthermore, any new technology paradigm such as this carries with it two significant risks affecting investment costs. Firstly, there is the inevitable hype, muddying the waters and creating a breeding grounds for opportunism, not backed by any real pedigree of proven results, nor long term views. Secondly, its newness means the “shared consciousness” of the technical and business communities has yet to mature and grow. Compared to trusted technologies and patterns and concepts, the common knowledge pool is shallow, and there is unlikely to be trustworthy best practices or standards easily available to kick start or verify any efforts.
fuzoDNA aims to enable businesses in any sector to simply and quickly adopt the Blockchain to track and report on the journeys of objects. fuzoDNA is supported by 4 main pillars:
fuzoDNA acts as your “gateway” into the Blockchain, allowing you to create life journeys for your objects, to add events or stages, to bring multiple journeys together and “converge”, or even to “split” a journey into multiple new journeys.
While you always remain in complete control of the underlying Blockchain “node” at your business, we provide a simple, clean API to allow your IT team to focus on functional development, rather than needing to learn a whole new technology.
fuzoDNA provides you with three methods to track the life journeys of your objects. Firstly, retrieve any journey, or part thereof, through the API. Secondly, go to your web portal to view the progress of your journeys and the statistics for any time period. And thirdly, through the fuzoDNA mobile APP, your customers can scan a QR code to instantly view the DNA history of any of your objects on the Blockchain.
fuzoDNA provides integration with the most popular Business Intelligence tools in the market. The Blockchain, through fuzoDNA, provides full trust to your business and provides you with the ability to provide fully flexible reports to your executive team, operational processes as well as your customer base, all on trusted and verifiable data on the Blockchain
fuzoDNA provides your business with the Blockchain stamp of trust and security. Although your data is stored on the Blockchain through fuzoDNA, you’re always in complete control. You can even choose to host fuzoDNA, and it’s underlying Blockchain, in your own permissioned Blockchain network.
This trust is not only internal to your organization, of course, but can also be shared with your partners, suppliers, shareholders, and even consumers. The fundamental structure is a natural fit for product provenance, auditable records, immediate reconciliation, and creating trust between untrusting parties.
fuzoDNA comprises 3 major components:
At the lowest level, a permissioned Blockchain is used. The first supported Blockchain will be MultiChain[xi], which is derived from Bitcoin Core.
An API provides a simplified interface into the inner workings of the various fuzoDNA features. Initially, this will be a RESTful API, but additional surfaces will be created and exposed as necessary in future versions. The API enables both the writing of transaction data, as well as the extraction of reportable data in the correct formats.
Finally, a Web Portal exists to present quick views to the data journeys, administrative and configuration functions, and operational reporting.
Through fuzoDNA’s innovative use of Multichain’s “Streams” concept (which in turn is an innovative use of the ability to store metadata on Blockchain transactions), fuzoDNA makes it simple to create a trustworthy, permanent record of the “timeline” of your business objects.
Data records stored in traditional IT systems are often just snapshots of the current state (at the time of recording). As this singular approach is not sufficient in many cases, there are numerous design patterns and technologies to support the management of auditable, time-specific “trails”.
With fuzoDNA, your data exists as a natural time-series, providing this additional dimension in a verifiable, immutable manner.
As such, fuzoDNA introduces the concept of a “Strand”, which is the product of a series of StrandEntries. If a StrandEntry is an accurate snapshot of the state of something at a particular time, then the Strand is that same something’s entire lifespan, or “Journey”.
The last entry is therefore the current, or most up to date, view of the state.
A Strand contains any data you wish to store, whether it is a JSON or XML representation of data, a simple hash or identifier, an Image, or any binary information. fuzoDNA imposes no restrictions on, nor view into, the data you choose to store, allowing you to remain flexible.
Journeys become even more flexible through the ability to link strands to each other for the purposes of representing Converging or Diverging data. Put more simply, imagine an object’s Journey that ends when it is combined with another object….and together they form a new object. Perhaps this is representative of a manufacturing cycle, or a packaging process. We would then have 2 strands combining to form a 3rd strand.
The reverse is of course also possible. Perhaps an object (recorded in its own Strand) needs to diverge, or “split”, into multiple objects. Here, we allow you to link the new resulting Strands to the original “creator” strand.
With fuzoDNA, you can easily create the full hierarchy or tree of your business data objects.
In your fuzoDNA network, you would have multiple actor nodes all writing to the blockchain. The blockchain necessarily keeps track of exactly who has written what data, identified by their unique wallet address.
fuzoDNA applies a simple layer on top of this data to simplify the understanding, and make it more human-readable.
Simply, fuzoDNA nodes declare the necessary simple identifying information about themselves, and linked to their personal Blockchain address – this information is stored in the blockchain too. This allows for quicker and simpler identification of which organization, department, or individual, was involved with any particular transaction.
fuzoDNA keeps track of operational activity (primarily via the API) and presents this to relevant users in the Web Portal. In its first version, fuzoDNA will track simple statistics on data published to the blockchain (tracking volumes/times by stream and publisher), and data retrieved for reporting uses (again, tracking volumes/time, by stream and retriever)
fuzoDNA respects the need for complete security from unauthorized access, and so implements OAuth standards across all access points. Authentication industry best practices are observed on both the Client Portal and the API, and guidelines are provided and recommended for network node security. Multi-factor authentication is standard on the Client Portal.
Your data is only accessible and readable by nodes and users that you choose, and there is granular flexibility in this regard at the network, node, blockchain database, and stream levels.
The fuzoDNA network is predicated on a decentralized, distributed pattern, due in large part to Blockchain’s characteristics. Whether customer implementations make use of a cloud-hosted fuzoDNA network, or opt to install in a fully on premises manner, the basic principle remains the same: the greater the number of individual, atomic “nodes” in play, the greater the benefits to redundancy, performance, safety, and trust.
A node consists of the Blockchain database, the fuzoDNA API, and optionally the Client Portal. All nodes retain a full copy of the chain, and collectively add to the verifiability of the data, forming the fuzoDNA network.
For every independent actor in the broader ecosystem, a specific node should be implemented and added to the greater network. Each of these actors will maintain a private key (or set of keys) which is the most critical piece in establishing their respective identity, and therefore their rights, and data ownership.
Read-only nodes can also be of great value: these nodes support actors who do not add to the data, nor participate in block validation, but as they store a copy of the same data they are able to contribute to the consensus in a social and commercial sense.
A node should be considered for:
- Independent companies acting together in the processing or production of some common business goal (examples include suppliers, sub-contracting companies, logistics operators, and so on);
- Departments within an organization, operating with some degree of autonomy from each other, or where separation of ownership or role is important to keep clear;
- Facilities/branches within an organization, in different geographical locations;
- Independent organisations that need to have insight into, or oversight of, your internal operations, for auditing or regulatory purposes (examples here would include auditors, government agencies, industry bodies, and so on);
- Any other Entities that are desire a view of a verifiable lifecycle of the data (examples would often include retailers, to be able to reliably display a product’s provenance, but could even include suppliers, who must ensure “End Use” rules are adhered to)
As can be seen, the last two scenarios in particular would more often involve using Read Only nodes.
With fuzoDNA, any combination of the above examples is possible – no distinction is made when creating nodes, apart from the assignment of data access roles.
As has been stated, the nodes together form the greater fuzoDNA network for the given client. The greater the number of nodes in the network, the greater the redundancy and general benefit.
However, in terms of the individual node itself, fuzoDNA also allows for localized redundancy at each site, through the use of clustering of nodes. This provides for read redundancy, and also provides several options for write-redundancy, through either the application of simpler failover practices, or more advanced load-balancing options (to be included and expanded on in future versions of fuzoDNA).
Node implementations should follow strong network security standards, as well as simple guidelines fuzoDNA will provide through consultation. Additionally, fuzoDNA recommends that where feasible, sensitive data is encrypted before it reaches the fuzoDNA Blockchain. This is particularly important, for example, when dealing with personally identifiable information of individuals, where this information is subject to ever evolving laws in many jurisdictions. The permanency of the Blockchain data requires a new kind of foresight and care, when designing data storage.
Initially, fuzoDNA focuses entirely on simplicity of implementation, and supports a single RESTful API, and basic data exporting.
Particular improvements and enhancements will largely be driven by customer demand, but are likely to include (in no particular order):
- Further support for alternate Blockchains that become feasible (primarily permissioned, and public where use cases are strong enough)
- Direct, public access to partial Strand History (defined by rules and/or queries) delivered in a graphical manner via QR Codes
- Multiple BI tool integrations
- Additional API surfaces
- Customisable Rules Engine, that allows businesses to act and react in customisable ways to events directly from the Blockchain
- Additional options and customisation of Strand types and structures
- Generic data export options expanded
fuzoDNA is a product of Yellowtail Software (Pty) Ltd.
Yellowtail Software is a Cape Town based software development company, established in 2006. Formed as part of the Dutch Yellowtail Group of companies, they are the trusted technology partner for clients in Africa and Europe. Their focus and expertise lies in FinTech, Blockchain, and Retail solutions.
Kornelis Miske, MD Yellowtail Software, for his comments on product and concept vision.
Dr Gideon Greenspan, CEO Coin Sciences Ltd, for his technical comments and review.