Zenflows is a tool to leverage commons-based peer production by documenting and monitoring the life cycle of products. The goal is that of enabling a federated network of organizations to bundle, systematize and share data, information and knowledge about physical artifacts.
- Most validations are provable (and sealed by means of cryptography) using Zenroom as core crypto component, including support for advanced Digital Product Passport schemes like REFLOW Portable Crypto Functions.
- The Valueflows vocabulary is adopted to govern a Resource Event Agent accounting model and facilitate the development and execution of business logics built on top of it.
- The PosgreSQL database backend is used as battle-tested data-storage solution well compatible with established enterprise standards in system administration, on top of it a GraphQL interface is developed based on the well performant Elixir language framework.
- The actors performing operations in the products and services stored in the DPP, are described using the W3C-DID method based on Zenroom, making the resolution of the actors interoperable, verifiable and private.
- The Digital Product Passport along with the W3C-DID is anchored on blockchain, making it tamper-proof. It’s generation and storage can be triggered by smart-contracts. The DPP is stored as a JSON object and can be easily adapted or translated to other file formats.
- End-to-end crypto: each operation performed by a user is signed cryptographically and verified, before the query is process by the backend.
- Creative Flows: activities can be rewarded with a token, using independet microservices to manage the wallets and the transaction.
DPP modelisation and interoperability
Such a power and flexibility, come with an inherently high level of complexity: in order to tackle complexity and minimize uncertainties in the development, we implemented a workflow to prototype complex GraphQL queries and flows using Jupyter Notebook:
Our DPP data structure is based on the ValueFlows ontology and is produced by the Zenflows back-end, which is programmable in GraphQL. ValueFlows is flexible enough to accommodate most *economic flows, actors, processes and events.
This allows us and third party developers to accelerate development and:
- Visualize complex data structures, see the interactive example below:
- Extract data from Zenflows, to be imported into different data structures and systems
- Inject data into Zenflows, from an ERP, an IoT device, a mobile application
Zenflows is written in Elixir (with some Erlang), and uses Zenroom for all the cryptography. Zenfow also uses components from the Zenroom ecosystem and a set of microservices (written mostly in Golang) for various functions:
- W3C-DID method: a DID document is created for each user at sign-up.
- Portable end-to-end cryptography: each user operation is signed cryptographically, using the easy-to-integrate Zenroom base library Zenflows-crypto
- Front-end: built in GraphQL query capabilities, end-to-end cryptography, TypeScript based.
- Internal messaging system: the notification si system is based on a custom email-service component, running as a microservice.
- Wallet and bank: microservices powering Creative Flows, allowing activities to be rewarded with a token, using independet microservices to manage the wallets and the transactions.
- Jupiter Notebook: tool for rapid prototyping of DPPs and interoperability with the platform
- Git import: microservice to clone and analyze git repositories
- Losh importer: custom importer for the LOSH aggregator.
- Custom Proxy: connecting front-end and back-end with all the above services