Comment on page
Off-chain services - Deep Dive
The below services are designed to be solutions to some of the practical problems that emerge when trying to:
- Create metaverses that support interoperable content
- Create objects that are able to be used in multiple metaverses
These problems become more complex when moving from ad-hoc experiences to larger-scale experiences run by larger businesses, which have their own responsibilities and obligations to fulfill.
These services will be made generally available for use. However, for publishing Metaversal Objects to metaverses powered by Morpheus, they will be a requirement. This is due to the high-performance requirements of these spaces, and also due to the permissive interoperability between experiences requiring strong assurances around classification and moderation.
Each service is designed for independent use but can also be combined to create comprehensive solutions for specific projects.
When creating a Metaversal Object, its content (3D assets, MML definitions, images, etc) needs to be stored somewhere publicly accessible to be read by metaverse experiences. This is usually achieved through a CDN, IPFS, or a web server, which is then directly pointed to via NFT token metadata.
While a valid approach, it removes all ability for the object creator to decide in what contexts an object is consumed. This can range from the "right click save" problem to real legal issues for larger brands that have obligations around where their IP can be used.
Additionally, with these approaches, there is no guarantee from the object owner that their object will outlive the metaverse in which it was created.
Rather than directly linking the address of object content onto the blockchain, the hash of content can be placed on-chain. This creates a record of what is specifically owned without disclosing the content itself. This content could then be hosted in any environment, including a service with more permissioned storage.
A Permissioned Storage service would grant object creators much finer control over what parts of their content can be used in which environments.
- Who can access specific parts of the content - for example, the owner of the object may be able to access the source assets, where others cannot
This allows content creators to make deeper choices around where their content is used. For object owners, this service will also be developed in a fashion where they can have assurances that their objects will be available beyond the lifetime of a specific metaverse.
When making a metaverse that supports interoperable content, a simple approach would be to allow users to spawn objects that reference content that can live anywhere on the public internet. For example, a 3D model could be spawned at a URL owned by a particular creator.
While a valid approach, this leads to security and privacy implications - users clients may directly call out to that web address, disclosing information such as IP addresses and other details. This is, at the very least, undesirable and, at worst, a compliance issue for larger businesses that need to operate and have assurances over their end users' data.
Additionally, there are no guarantees that this URL can handle the load profile of potentially thousands of users downloading it simultaneously, which could result in a degraded experience.
As this solution is relatively stateless, it could be developed to be ran in a federated manner.
A metaverse supporting Metaversal Objects aims to support content from as wide a range of creators as possible. However, user-generated content can encounter issues when being directly ingested, such as:
- Unoptimized content, such as very high texture sizes and polygon counts
- Unsupported content file formats
- Unsupported skeletons in the case of avatars
- Incorrect scaling
- Potentially deliberately malicious corrupted or altered content
- Intermediate representations such as missing mesh and texture LODs
This can result in issues ranging from objects not loading correctly to performance problems and even crashes due to loading incompatible content.
An Optimization service would allow for on-demand optimization and conversion of any interoperable content to appropriate formats and representations. This would allow a metaverse to load in objects with much higher variance in optimization quality and formats.
Examples of tasks the optimizer would perform
- Converting 3D models to standard file formats (FBX, GLB, etc)
- Mesh reduction and optimization (remeshing, decimation)
- Image reduction and optimization (reducing resolution, changing formats)
- Generation of LODs (levels of detail)
- Generation of collisions geometry
- Compression (DRACO, other algorithms)
Similarly to the content proxy, this is a relatively stateless service to could be run in a federated manner. If the processes applied are deterministic from some known process, it would also be possible to validate the correctness of optimizations performed.
While a Metaversal Object may technically be suitable for loading into a metaverse experience, there might be other reasons why it isn't suitable, such as:
- Mature content in an environment where that is not allowed
- IP infringing materials
- Other commercial restrictions for a particular space
This can pose a significant risk to metaverse environments in ensuring content is appropriate for their space, especially for larger projects. The challenge lies in classifying (determining what types of content are being loaded) and moderating (applying a policy for what classified content to allow) content which may range from images, 3D models, animations, and videos, to text content and dynamic MML objects.
Classification & Moderation will require a combination of approaches. While some metaverse environments may be comfortable utilizing machine learning approaches, others may require explicit human-in-loop moderation steps due to the nature of their environment.
An automated classifier would perform tasks such as:
- Rendering 3D models to images from various angles to feed into AI-based image classification systems
- Feeding videos and audio into existing classification systems
- Rendering MML objects to static 2D images to appropriately classify them
As there are many approaches to this problem, it is suitable for a federated system whereby metaverses can choose the appropriate means for classifying content. Validating the classification is non-trivial and likely to result in mechanisms around the trust and reputation of classification providers.
Metaversal Markup Language objects are a powerful way of creating Metaversal Objects that can be used in many environments. However, for dynamic MML objects that execute code, it is challenging to host them securely and reliably. The challenges include:
- Sandboxing the execution of objects for security reasons
- Intelligently scaling up and down as appropriate to handle objects being started up and down
- Handling varying levels of read load on objects, especially when used in high-scale environments where many thousands of viewers may connect in a short period of time
- Potentially handling sensitive data such as environment variables or private keys for interacting with blockchains
Due to the nature of this problem, it is challenging to federate, but there will likely be other providers outside of the MSquared network that will provide similar services for different contexts.