Please describe your proposed solution.
While the Cardano software developer community is healthy and passionate, there is a very lean representation of .Net developers.
Having a deep love for trying to solve complex problems in the most simple way possible, we believe developing the enigmi opensource project will bring value to the Cardano developer echo system as a whole. 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 and an actor-based architecture.
- How to combine DDD (domain driven design) in the context of an 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 will host the platform on MS Azure to be functional on the preproduction network for a minimum of 6 months.
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 robust, 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 "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, behavior, 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. A User Wallet, Order, Trade, Puzzle Build etc are all examples of things that will be represented as grains in enigmi. 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.
This 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/>
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.
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 users to trade and interact with one another.
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.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Serve as a benchmark and reference implementation for the Cardano developer community of a interactive, multi-player platform that Is designed from the ground up to have a scalable architecture.
Draw in new .Net developers.
There is an estimated 7 to 8 million .Net developers globally. <https://www.griddynamics.com/global-team-blog/number-software-developers-world>
Even though projects like CardanoSharp (<https://www.cardanosharp.com/>), to which we have contributed, opened the door to the .Net community, the .Net representation and exposure within the Cardano ecosystem is still relatively tiny.
Making available a project of this scope and quality will make it very interesting for exploring developers to look into what is possible on Cardano.
In future, if we successfully launch this as a commercial product, we also hope to bring in some mainstream brands into the Cardano space. (Not in scope for this phase of enigmi)
How do you intend to measure the success of your project?
The success of the Enigmi project can be measured by its ability to attract and engage .NET developers within the Cardano ecosystem, ultimately enabling them to create solutions that benefit the entire Cardano community.
One key measure of success is the increase in the number of .NET developers actively participating in the Cardano ecosystem as a result of the Enigmi project. This can be tracked through community engagement, developer forum activity, and the number of contributions to the Enigmi code base from the .NET community. By drawing more .NET developers into the ecosystem, Enigmi will contribute to the growth and diversity of the Cardano developer community. While it is unlikely that we will solely be responsible for the growth of the .NET community, Enigmi has the potential to significantly support developers by offering a robust bootstrap and enabling the creation of more sophisticated solutions.
Additionally, the success of Enigmi can be evaluated by assessing the ease of understanding, running, and utilizing the project. A successful implementation should provide well-structured code, an easy way to execute the project, and an intuitive user interface. These factors will ensure that .NET developers can quickly grasp the concepts and mechanics of the Cardano ecosystem, allowing them to hit the ground running and start creating valuable solutions.
In the short term, Enigmi's impact on Cardano's productivity and growth lies in its ability to attract a new wave of developers, fostering innovation and expanding the range of applications being built on the platform. By providing an accessible and user-friendly entry point for .NET developers, Enigmi can accelerate the development of diverse and impactful projects within the Cardano ecosystem.
In the long term, the successful adoption of Enigmi by .NET developers will contribute to the overall growth and sustainability of Cardano. It will lead to a wider range of applications, increased network usage, and a thriving ecosystem. As more developers join and leverage Enigmi as a starting point for their projects, Cardano's productivity and growth potential will continue to expand, fostering long-term success for the platform as a whole.
Please describe your plans to share the outputs and results of your project?
The entire code base of Enigmi will be made available on the Enigmi Github repository. This decision reflects our commitment to transparency and collaboration within the developer community. Furthermore, to showcase the functionality and usability of Enigmi's features, we will host a live version of the game on enigmi.io.
With our experienced team, who have already contributed to the success of various projects within the Cardano ecosystem, we are confident in our ability to deliver the proposed features within the designated timeframe. By open sourcing Enigmi, we aim to provide a valuable resource for other developers, enabling them to accelerate the development of their own projects.
Looking ahead, our vision for Enigmi extends beyond its current state. We plan to evolve it into a commercial product, catering to a wider audience. In fact, several Cardano projects have already expressed interest in partnering with us to utilize Enigmi as a means of distributing their collections in an innovative manner. This collaboration will further establish Enigmi as a versatile platform within the Cardano community, providing new opportunities for both developers and users alike.