High Level Architecture
The Nevermined App is composed by different applications separated in different layers. In each of them resides different responsibilities of the application, from the core business logic placed in the Smart Contract to the frontend applications.
Taking into account the above image, the architecture can be explained from top to bottom:
Nevermined App
The frontend applications bringing utility to the users. They are built on top of the Core Protocol and interact with the micro-services to provide all the functionality.
The Nevermined App is separated into 2 applications, the web site and the widgets. The web site is the main contact point with the application, is the one users can use to register, search & discover stuff. And the widgets are small HTML applications that can be embedded into users personal websites.
The Nevermined App uses the Marketplace API is "database" of all the assets registered into the network. There is also a default deployment of a Node and a Proxy, making data and web services available. But that doesn't mean users need to use them. In further phases we want to incentivize users and/or organizations run their own Nevermined Nodes and Proxies in such a way the network is not centralized on Nevermined organization.
Core Protocol
Smart Contracts
The Nevermined Smart Contracts implement the main business logic of all the Nevermined use cases that allow the trustless interaction between users for building digital assets ecosystems.
The Smart Contracts are Open Source software built in Solidity, allowing to be deployed in any EVM compatible network.
The Smart Contracts provide the following functionality:
- DID Registry - Nevermined uses W3C Decentralized Identifiers (DID) to identify and register assets in the platform. The DID Registry allows the registering and resolving capabilities of assets across multiple Metadata providers.
- NFT Factories - Nevermined allows the management of different kind of ERC-721 and ERC-1155 based NFTs
- Service Execution Agreements (SEAs) - The core engine of the platform. They allow us to define on-chain condition pipelines enabling the users to define complex use cases. The SEAs orchestrate the execution of the Data Access and Data Computation use cases of Nevermined.
- Conditions - Small modules that can be plugged into the SEAs allowing to add validations logic
- Contract Templates - Pre-defined contract templates implementing some basic use cases
- ERC20 Token - Utility token used within the platform allowing to build all the payment mechanisms used across the system.
- Configuration interface - Allowing to configure dynamically some of the internal parameters of Nevermined (for example via a DAO)
- Dispenser - Contract that allows to dispense token under request
- Libraries - Utility libraries used across the contracts
All the previous contracts are Open Source software and provide the core of the Nevermined network.
Nevermined Node
In the Nevermined ecosystem, the Nevermined Node is the technical component executed by the Publishers allowing them to provide extended data services (e.g. storage and compute).
Nevermined Node, as part of the Publisher ecosystem, includes the credentials to interact with the infrastructure (initially cloud, but could be on-premise).
Typically the Node works in the frontier between off-chain data and services and the rest of the world, and facilitate the delivery of data or services to the consumers that go through the service agreements.
Proxy
The Nevermined Proxy allows the access to private HTTP web services for users holding a valid Nevermined access token. This access token is generated by Nevermined platform when users demonstrate they are NFT holders. The proxy is a web2 component that protect access to web2 web services using subscription NFTs as access control mechanism.
Marketplace API
The Nevermined Marketplace API is an Open Source micro-service that allows to manage all the typical metadata required to build a marketplace or application requiring to store data about assets, their users and some of their interactions.
The Marketplace API is an off-chain repository having the main responsibility of manage digital assets Metadata.
The Marketplace API stores all the data in ElasticSearch. And exposes the functionality for searching any data stored via a HTTP REST API using multiple filters and parameters.
The Metadata API is typically the backend used for Data Marketplaces for storing all the Metadata of a specific Marketplace.
Network & Storage
Nevermined core business logic is implemented on the Smart Contracts. They are Solidity based and can be deployed on any Ethereum compatible network (EVM compatible). The main environment of the Nevermined App is using Polygon network, but is part of our plans to have a fully functional Nevermined App deployment in different networks.
In addition to that Nevermined facilitates the sharing of data assets between users. The platform is agnostic of the storage so we use centralized or decentralized storage depending on the necessity. For the Nevermined App the content of assets of the users are stored on Google Cloud and IPFS.