Please describe your proposed solution
Note that we already have a working prototype where all the features that have been indicated as completed can be experienced by the community on the preprod network in our UAT environment.
Quick start:
- Get tADA on the preprod network into your wallet.
- Connect your Web3 wallet to the enigmi UAT site above.
- Buy some random puzzle pieces from the sample collections.
- Bring along a couple of friends to do the same, as you will only be able to experience the trading with other players currently online.
Here is a quick video and screenshare where Jacques (myself), and Piro talk a little bit about what enigmi is.
<https://www.youtube.com/embed/Y5yqrxfztmk?si=AwfEnEx8rEK77yca>enigmi will engage 3 distinct groups of people; 2 relating to the general ecosystem and community, and 1 technical; the developer community:
- General Cardano Ecosystem:
- NFT Creators: This would include any person or project that creates NFTs in their own right, like art, or for any other reason such as utility or value add for a project, system, or game.
- NFT Enthusiasts: This would include collectors, traders, web3 gamers, etc.
- Cardano Technical:
- Developer community; particularly, those who work in the .Net stack.
Below, we provide a brief overview from these different perspectives. If you do not have technical software interests, you are welcome to skip the technical sections.
For NFT Creators
This engaging and immersive platform aims to solve the problems of suboptimal user experiences and limited options for NFT minting and distribution in a fun and interactive way. enigmi provides an exciting launch experience for NFT mints or distributions, encouraging their communities to trade and interact with one another in a real-time online environment during and after the primary mint.
For NFT Enthusiasts
From the player’s perspective, enigmi is a unique and engaging NFT minting experience built on the Cardano blockchain, designed to gamify and enhance the user experience in the NFT space. By using puzzle mechanics, enigmi allows users to buy random puzzle pieces from various collections, trade them with other players, and collect the necessary pieces to complete a specific puzzle. Once all the pieces are collected, users can burn these individual puzzle piece NFTs in a single transaction, minting a unique, final NFT in the process.
Thus, for the general end user community, the enigmi solution is unique as it offers a new way to mint and distribute NFTs while fostering engagement across the Cardano community. By providing a fun, interactive, and scalable platform, enigmi aims to attract a wide range of users, benefiting artists, collectors, and the Cardano ecosystem as a whole.
A substantial part of our focus is on the real-time online interactive aspects of the platform. We believe there is room for such an experience in the Cardano space. We would like enigmi to become a hub of activity, where players come to hang out, mint, chat, and trade with others in real-time.
For Cardano Technical Community
While the Cardano software developer community is healthy and passionate, there is a very lean representation of .Net developers.
With our many, many decades of cumulative experiences building enterprise grade systems and systems that can scale, and having a deep love for trying to solve complex problems in the simplest way possible, we believe developing the enigmi opensource project will bring value to the Cardano developer echo system as a whole, showcasing what can be done in .Net and Cardano, and helping to open the door for the millions of .Net developers in the world. It will serve as a fully functional use case of combining a set of carefully selected technologies into a thoughtful and robust architecture for a platform that aims to bring the following to Cardano:
- Gamified NFT minting experiences
- Multi-player, web3, real time and live social trading
- Ability to scale to 10s of thousands of concurrent users.
- A showcase and reference project of how a solution of this nature and scale can be implemented.
Aspects that will be showcased in this project:
- Fully functional, vertically integrated real-time system, from front-end development and web3, to backend multiplayer constructs, and persistence and storage.
- Software best practices and principals.
- Comprehensive, automated integration tests.
- How to build on MS Orleans, a virtual actor-based framework.
- How to combine DDD (domain driven design) in the context of a virtual actor-based system.
- How to build nontrivial front-ends in MS Blazor.
- How to orchestrate real-time messages pushed to specific or many users via websockets and SignalR for a live and interactive user experience.
- How to build for Cardano using .Net and the CardanoSharp library.
- Minting NFTs
- Burning NFTs
- Atomic swaps requiring multi-party transactions
- How to build a scalable and robust multi-party trading capability against Cardano without using any smart contracts and without taking any custody of any user’s asset, not even into the custody of a smart contract.
- How to track and manage off-chain UTXO reservations to reduce invalid transactions, while saving on blockchain transaction fees.
- How to manage UTXO outputs to allow for optimal parallelization.
- How to build, submit, and monitor nontrivial transactions.
We are hosting the platform on MS Azure, and it is functional on the preproduction network.
We will also deploy the platform to mainnet in a beta release.
We have elected to build enigmi on Microsoft Orleans for it’s robust and foundational support for complex, concurrent systems.
Microsoft Orleans is a proven, cross-platform framework designed to simplify the creation of distributed applications - software that runs across multiple processes, often stretching across hardware boundaries using peer-to-peer communication. It works by enabling these applications to scale elastically, ranging from a single server to thousands of servers distributed across cloud-based platforms.
In simpler terms, think of Orleans as a toolbox for building scalable software that is split across different servers and systems, which allows the applications to be very resilient and easily adaptable to changing loads, like a website handling sudden spikes in visitors.
Orleans uses something called the Virtual Actor Model, a programming concept where "actors" are individual, lightweight objects that hold a piece of data and the rules for managing that data. These actors, referred to as "grains" in Orleans, interact with one another through asynchronous messages. A crucial feature of these grains is their 'virtual' existence, meaning they always exist and can always be called upon, regardless of whether the server they're on fails. This unique feature brings a level of resilience to applications that isn't common in typical software development.
These grains can be considered as the basic building blocks of an Orleans application. Each grain has a stable identity, behaviour, and state that is defined by the user. The identity of a grain is a user-defined key that makes it always available for invocation, whereas behavior is the specific operations the grain can perform. State refers to the data a grain holds, which can be temporarily volatile or persistently stored. Grains are stored in 'silos', another Orleans term for hosting entities.
Orleans has a diverse set of uses, from gaming and banking to chat apps and GPS tracking. Some parts of popular Microsoft services like Azure, Xbox, Skype, and Halo are built using the Orleans framework.
Orleans also offers features like persistence, timers, and reminders. Persistence ensures the data is available and consistent before processing a request. Timers and reminders provide scheduling mechanisms to execute certain actions at future points, adding yet another layer of reliability to applications built with Orleans.
The combination of scalability, fault tolerance, and simplicity is the reason we decided to build enigmi on Orleans.
A couple of useful links to Orleans’ benefits, philosophy, and approaches, for those more technically minded:
<https://learn.microsoft.com/en-us/dotnet/orleans/benefits>
<https://learn.microsoft.com/en-us/dotnet/orleans/overview>
<https://learn.microsoft.com/en-us/dotnet/orleans/>