Skip to content

(Local | Global) fungible assets in Multi VM #97

@conr2d

Description

@conr2d

Description

Fungible assets in Noir can be classified as Local and Global assets.

Definitions

  1. Local Assets:
    Fungible assets whose states are entirely managed within a single VM's context. These assets are designed to operate independently, with no shared state across other VMs.

  2. Global Assets:
    Assets where the primary state transitions are managed by the engine itself while exposing interfaces for operations within individual VMs. Advantages of Global assets:

  • Lower costs: Key operations are centralized in the engine, reducing VM-specific overhead.
  • Shared state access: The engine allows multiple VMs to interact with the same asset state seamlessly through exposed interfaces.

However, Global assets come with a significant caveat: contracts must transition their state to use our contract SDK (instead of managing state independently), requiring developers to modify their contracts to comply with this approach. This introduces a learning curve and a proprietary workflow, which might not align with our protocol’s goal of simplicity and broad compatibility.

Alternative Approach: Cross-VM Asset Management

Instead of Global assets, we could explore a mechanism where Local assets remain fully managed within their respective VMs but are made accessible across VMs through an adapter layer.

The adapter would:

  • Maintain metadata about the asset's state location (i.e., which VM manages the asset) and provide instructions for accessing it.
  • Facilitate cross-VM calls to interact with the asset, ensuring that even non-native VMs can recognize and work with these assets.

For example:

  • A standard ERC-20 contract could be deployed on the EVM.
  • To interact with this asset from another VM, the engine would require registration (or upgrade) of the asset's metadata.
  • This process would enable the engine to coordinate interactions while maintaining compatibility with existing contracts and minimizing modifications.

Metadata

Metadata

Assignees

Labels

K:multiCross-protocol featuresP:mediumPriority: Medium

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions