Please describe your proposed solution.
In the Cardano community, there is a noticeable absence of shared design patterns and limited availability of practical examples and educational resources for scaling solutions using these patterns.
On-chain data is constrained by the ledger rules and transaction size limitations due to the nature of the blockchain. The ledger serves as a reliable proof of events rather than a full-fledged database or computation layer.
Utilizing specific data structures like Merkle trees, linked lists, and tries can provide efficient solutions within these constraints.
Merkle trees are valuable in proving the presence of arbitrary data within the tree structure. By carrying only the root hash in the script, an efficient and space-saving proof can be generated, ensuring data integrity and validity.
Linked list structures leverage the EUTXO model to enhancing scalability and throughput significantly. By linking multiple UTXOs together through a series of minting policies and validators, it can improve the user experience interacting with smart contract concurrently.
<https://github.com/Plutonomicon/plutonomicon/blob/main/assoc.md>
Tries or Stick Breaking Set are particularly useful in facilitating mutable data storage in scripts by leveraging the sharing of common prefixes. This approach optimizes storage efficiency and enables more extensive data manipulation within the constrained on-chain environment.
<https://github.com/Plutonomicon/plutonomicon/blob/main/stick-breaking-set.md>
We believe Cardano deserves a proper solution developed by experienced developers who care about the community to build the bridge between the pond -> the island -> the ocean.
https://www.youtube.com/watch?v=k8a6tX53YPs&t=433s
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
The most important impact we're aiming is to help other developers to learn about these design patterns and build impactful applications, and also we want encourage the community to use them.
We believe these tools will be used by many of the developers already in Cardano and it will also alleviate the burden of understanding the EUTXO scalability solutions for new developers.
These design patterns can be utilized in various scenarios, as follows:
Merkle trees
Can be utilized in conjunction with minting policies for NFT platforms. By employing Merkle trees, users can be granted permission to mint NFTs only if they can provide a verifiable proof of their presence within the tree. This integration with minting policies ensures that users are validated against the Merkle tree before the NFT minting process takes place. Once the user's presence is confirmed, the minting policy can proceed with minting the NFT.
Linked lists
Can be leveraged in smart contract applications where the order of inputs is not crucial, and multiple users can interact with the contracts simultaneously. For example, consider a decentralized voting system where users can cast their votes concurrently. A linked list data structure can be employed to store and manage the votes efficiently. Each user's vote can be represented as a node in the linked list, containing relevant information such as the user's address and their chosen candidate.
Tries or Stick Breaking Set
One possible smart contract application for tries is a decentralized name registry. The trie data structure can be used to store the registered names and their associated data efficiently. Each name can be represented as a key within the trie, and its corresponding metadata can be stored as the value associated with that key.
Real Use
Micah will be utilising the work done here as part of Lenfi's governance solutions.
How do you intend to measure the success of your project?
GitHub Stars:
Monitor the number of stars on the GitHub repository as an indicator of community interest and adoption.
Forks:
Track the number of forks of the repository, indicating the interest to explore the project.
Pull Requests and Contributions:
Monitor the number of pull requests received from users and developers, indicating active community collaboration.
Feedback and Discussions:
Monitor the number of feedbacks, discussions, and questions on the project's GitHub repository.
Please describe your plans to share the outputs and results of your project?
We're planning to share information about the project on a biweekly basis on every social media platform managed by Anastasia labs. Once the project is completely done we're planning to have a twitter space for Q&A.
We have a lot of expectation about this project because we do believe it can offer a great opportunity to continue pushing for excellence within the dev community, and also onboard new people.