Interoperability
Guidance around MSquared's network and interoperability mechanisms
Last updated
Guidance around MSquared's network and interoperability mechanisms
Last updated
MSquared, besides being a platform for building high-density virtual world experiences, also features object interoperability as a first-class feature. This enables users to take their virtual possessions between many worlds with minimal work from you as a developer.
This interoperability is achieved through a combination of on-chain NFT records, an omnichain blockchain indexer, MML for interoperable object definition, and a mechanism for permissioned object storage and content moderation.
This guide explains in more detail how this mechanism works, and the current and in-development capabilities.
NFTs don't neccesarily need to be owned and custodied by users in a financially tradeable way - the same standard can be used for more traditional digital "entitlements" by using a mechanism called Soulbound Tokens
MSquared wants to help grow a network of interconnected experiences which the whole is greater than the sum of the parts - enabling free movement of users and their possessions between metaverses.
Part of the terms of using MSquared's platform is the commitment to this interoperability for at least user's appearance - their Characters, Clothing, Accessories and Emotes, given they pass your moderation policy.
Below are currently planned types of interoperable objects, and their current implementation status
๐ผ๏ธ๐ท Image
Typical picture-based NFTs - could be used as profile pictures or placing in world into photo frames etc
Reading the image
field on the NFT metadata
๐๐บ Character
Humanoid characters that can be used as the player's avatar, or used for non-player characters
Reading the mml
field on the NFT metadata linking to an MML <m-character>
- see MML Avatars
๐ชฉ๐ช Dynamic Object
Spawnable items that may be static or interactable - a chair, a jukebox, a quiz machine, etc
Reading the mml
field for a wss://
to a live MML object - see https://mml.io
๐๐ฉ Accessory
Static 3D models attached to particular part of a Character such as hats, glasses, backpacks, etc
Currently supported as part of a Character
๐๐ Clothing
Skeletal meshes layered on top of a base Character
Currently supported as part of a Character
๐ฅณ๐ Emotes
Short animations that can be played to express emotions or interact
Currently in exploration
Ownership between different metaverses is established by associating one or many web3 wallets with a particular user.
MSquared supports users linking self-owned web3 wallets such as MetaMask out of the box. Enterprise customers can request more bespoke integrations if they have existing web3 identity systems.
Delegation is a method for NFTs (often high value ones) to be non-permanently granted in a read-only manner to another "hot" wallet which is used for more day-to-day interaction. MSquared supports both
https://warm.xyz/ and https://delegate.xyz/ (v1 and v2) mechanisms.
While delegation protocols technically support concurrent delegation of an NFT to multiple wallets, the following logic is in place to prevent scenarios where an NFT being used for access gating could be used to allow large numbers of people to share the same "ticket":
For any wallet, it can only be linked to one user account at a time
For any token, it can only be delegated to one wallet a time
If there are multiple delegations, the most recent delegation is prioritized
This is true across all supported delegation methods (eg- a recent warm.xyz delegation would take priority over a less recent delegate.xyz delegation)
Successfully imported interoperable objects will be visible in the user's Collection , which combines both "foreign" interoperable objects across multiple blockchains with "native" off-chain digital goods for your metaverse.
We currently support ERC-721 and ERC-1155 tokens
Delegation of ERC-1155 balances is not currently supported
The following fields within an ERC-721/ERC-1155 metadata JSON are respected.
Field
Usage
name
The canonical name of the object in a userโs collection
description
The additional descriptive text for a user, used in the collections frontend react components
image
Used as a preview image for any collection item, and allows its usage as a profile picture
mml
The URL to a static MML document containing an <m-character>. Allows the user to use it as a default avatar
โฆ.
Other fields are imported, and available for querying in Unreal and Web APIs
While the interoperable network is in Early Access, interoperable objects are currently restricted to those approved by MSquared directly, rather than being moderated - the wider moderated network will be launching later in 2024
Some types of interoperable objects may not be suitable for your particular experience. All objects within the interoperable network will be subject to a classification process, resulting in tags being applied to the object.
Metaverses will be able to define your interoperable object import policy based upon these tags.
While many NFT projects host their interoperable object content in a publicly accessible location, for many projects this many be unwanted or impractical.
Permissioned Storage is a mechanism where interoperable object content URLs can be placed on-chain, but the underlying asset is not publicly available for download. The service ensures any reader owns the underlying NFT to get access to the content.
Permissioned objects are currently in early access with our Enterprise partners - please reach out via support if you are interested
While the interoperability network is in early access weโre interested in any interoperable content, starting with Avatars and Accessories.
If you have an NFT collection youโd like to be part of the network please reach out on Discord!