[GENERAL] Name and surname of main applicant
Piyush Thapa
[GENERAL] Are you delivering this project as an individual or as an entity (whether formally incorporated or not)
Entity (Not Incorporated)
[GENERAL] Co-proposers and additional applicants
- Aayush Thapa (https://github.com/aathapa)
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
10
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language
No
[GENERAL] Summarize your solution to the problem (200-character limit including spaces)
SDK empowers developers to harness the power of Cardano blockchain within their Elixir projects. This SDK provides a comprehensive suite of tools enabling easy integration with Plutus & Cardano.
[GENERAL] Does your project have any dependencies on other organizations, technical or otherwise?
No
[GENERAL] If YES, please describe what the dependency is and why you believe it is essential for your project’s delivery. If NO, please write “No dependencies.”
No dependencies
[GENERAL] Will your project’s output/s be fully open source?
Yes
[GENERAL] Please provide here more information on the open source status of your project outputs
The project will be open-sourced under MIT License
[METADATA] Horizons
Developer Tools
[SOLUTION] Please describe your proposed solution
The Cardano SDK for Elixir enables developers to seamlessly integrate the power of the Cardano blockchain into their Elixir projects. This open-source SDK offers a full suite of tools and libraries, making it easy to leverage Cardano's security, transparency, and efficiency for building robust and scalable blockchain solutions. With a user-friendly API and comprehensive documentation, developers can quickly and efficiently create innovative blockchain applications, harnessing the full potential of Cardano within their Elixir-based systems.
Transactions built with Elixir can harness the power of the Erlang Virtual Machine (BEAM), benefiting from its ability to handle high concurrency, fault tolerance, and scalability, ensuring efficient and reliable performance.
- Fault tolerance: Transactions built with this solution will incorporate a supervision tree, ensuring that if an error occurs, the transaction will automatically restart and recover to its previous working state, providing greater fault tolerance and reliability.
- Scalable Realtime System: This solution enables developers to use Phoenix Channels to update client states in real time. Phoenix Channels can efficiently handle over 2 million concurrent connections on a single machine, ensuring high scalability and performance. Ref: https://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections
- Code Generator: On top of the current SDK, we will develop a code generator in the future that reads Plutus blueprint files and automatically generates boilerplate code for APIs and off-chain types. This would streamline development and reduce manual coding efforts.
- Test Coverage: The SDK will support both Emulator Test and Private Network Test, allowing developers to easily write tests using Elixir's built-in ExUnit framework. This enhances the testing process and ensures robust application development. Ref: https://hexdocs.pm/ex_unit/ExUnit.html
- Rich UX with LiveView: The SDK supports LiveView for creating rich, real-time user experiences. With LiveView, developers can build real-time web applications that are rendered entirely from the backend (Elixir), enhancing interactivity and performance.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
With the proposed SDK solution, developers will be able to write off-chain transactions in Elixir and easily generate APIs to interact with Cardano wallet APIs. The SDK will also provide APIs for real-time message broadcasting using Phoenix Channels.
Additionally, the SDK will pave the way for a code generator, allowing users to run
mix sutra.gen.offchain /path/to/plutus.json to automatically generate boilerplate code for types, API endpoints, and even basic user interfaces. This streamlined process will significantly enhance development efficiency and accelerate the creation of applications.
The positive impact that the proposed solution will have on the wider Cardano Community are as follows:
- The project will attract developers familiar with Elixir, broadening the pool of talent contributing to the Cardano ecosystem.
- With easy integration and boilerplate code generation, the proposed solution will simplify the process of building applications on the Cardano blockchain.
- This SDK will boost Cardano adoption among businesses and startups by enabling robust, scalable applications. Its real-time capabilities and ease of use will empower developers to create practical applications, enhancing the blockchain’s relevance.
- The integration of Phoenix Channels for real-time messaging allows developers to build dApps that provide immediate feedback to users, which will foster the creation of innovative applications that enhance user engagement and satisfaction within the Cardano ecosystem.
- With built-in support for testing through ExUnit and supervision trees for fault tolerance, applications developed with this SDK will be more reliable and robust. This will enhance trust in Cardano applications and improve overall user experience.
- The open-source nature of the SDK encourages community contributions, leading to a collaborative development environment. This can spark discussions, improvements, and innovations within the Cardano community.
In summary, this project will significantly enhance the Cardano community by attracting new developers, simplifying application development, promoting real-time capabilities, and increasing the reliability and adoption of Cardano-based solutions.
[CAPABILITY & FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?
One of the proposers, Piyush Thapa, has been actively contributing to the Cardano ecosystem, particularly in blockchain development, since 2020. His notable projects include GeniusYield, where he contributed to the Atlas PAB (Plutus Application Backend) (geniusyield.co), a platform that optimizes yield for cryptocurrency investors. He also worked on the Maestro Haskell SDK (gomaestro.org), which simplifies application development on Cardano. Additionally, Piyush has contributed to IAGON, a decentralized cloud storage platform (iagon.com). His efforts have significantly advanced the Cardano ecosystem and its applications.
Another proposer, Aayush Thapa is a skilled Elixir developer with a strong focus on blockchain technology and software development. He has made significant contributions to scalable applications and decentralized solutions, demonstrating his commitment to advancing the industry while working at Enthuziastic [https://www.linkedin.com/company/enthuziastic/]. Known for his collaborative approach, Aayush effectively works with diverse teams to drive projects to successful completion.
The proposers have a supportive team of Elixir developers who can provide assistance as needed throughout the project. This collaborative resource ensures that the team can leverage specialized knowledge and expertise, facilitating smoother development processes and timely problem-solving.
The validation of the feasibility of the development approach will be done in following steps:
- Developing a MVP
- Performance testing
- Code reviews and collaborations
- Documentations and resources
- Feedback loop
- Code audits in later phases
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
Design API Spec, Types & Encoding / Decoding of Types to Plutus Data (60% completed)
- Develop Macro to define custom Types.
- Auto generate from_plutus/1 & to_ plutus/1 function based on data Definition
- Outputs
- defdata, defenum & field function available to represent Datum & Redeemer
- Deliverables/Acceptance Criteria:
- Documentation to define Data Types
- Represent Some Aiken Stdlib using defdata & defEnum macro
- Evidence of Milestone completion:
- Clear Test Code to encode & decode some aiken stdlib types. (OutputReference, Address, Datum, Output, Input)
Transaction Builder
- Allow encode / decode Transaction
- Allow building Transaction
- Outputs
- Function to create Transaction Body
- Functions to add/remove witnesses
- Support Metadata
- Deliverables / Acceptance Criteria
- Test cases to parse Transaction CBOR
- Test cases to build Transaction
- Evidence of Milestone completion:
- Mix Script Files which uses Transaction Builder function to create sample Transaction.
Provider & Chain Indexer Integration
- Allows querying UTXO & Submit Transaction
- Define Protocol to inject custom provider easily
- Output
- Definition of protocol to integrate custom Provider easily.
- support basic function query utxos at address, utxoRef, fetch Transaction Detail, Submit Transaction etc.
- Deliverables / Acceptance Criteria
- Define callback function which will be used when integrating providers
- Integrate BlockFrost Provider
- Evidence of Milestone completion:
- Use provider and query utxos & submit TX built using Transaction Bullder in Milestone 2 script files.
Plutus Blueprint Support
- Support CIP-0057 Blueprint file
- Output
- Should be able to support plutus blueprint file.
- Deliverables/ Acceptance Criteria
- There will be cli and we will be able to generate common function to define Datum, Redeemer, Script from plutus blueprint file generated by aiken
- Evidence of Milestone completion
- Create Video showcasing CLI to generate code for datums, redeemer & script.
Testing Library Emulator / Privnet
- Allows testing using emulator as unit test cases for offchain code.
- Privnet allows integration Test by running custom private node, we will be using Kupo as chain indexer for private node.
- Output
- Should be able to write test cases and run test using Elixir ExUnit
- Deliverables / Acceptance Criteria
- Testing library to Test with emulator
- Testing library to Test with Privnet
- Evidence of Milestone completion
- There will be sample project which will have example of test cases written using emulator & Privnet.
- Proper Docs will be provided on setting up privnet & running them
Prepare final Report & Video
- Library & documentation will be deployed to Hex
- Video showcasing how to use library and giving demo with creating & submitting simple Transaction
[RESOURCES] Who is in the project team and what are their roles?
- Piyush Thapa (Developer) - https://www.linkedin.com/in/piyush-thapa/
- Aayush Thapa (Developer) - https://www.linkedin.com/in/aayushth/
- Elixir developers - peers of Aayush and Piyush when needed
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
Milestone 1: 1 Month: Piyush & Aayush - 18,750 ADA
Milestone 2: 3 Month: Piyush, Aayush & 1 Elixir Dev - 56,250
Milestone 3: 1 Month: Piyush & Aayush - 18,750 ADA
Milestone 4: 2 Month: Piyush, Aayush & 1 Elixir Dev - 37,500
Milestone 5: 2.5 Month: Piyush, Aayush & 1 Elixir Dev - 46,875
Milestone 6: 2 Weeks: Piyush - 4,687
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The cost of 1 developer per month of work is at around 9,375 ada ~ 3,465 USD which is very much reasonable in the context of the current market.
The cost of the project represents significant value for money for the Cardano ecosystem in several ways:
- Reduced development time - By providing a robust SDK that simplifies the development process, the project enables developers to build applications more quickly and efficiently.
- Enhanced capabilities - The SDK's features, such as real-time messaging with Phoenix Channels and automatic boilerplate code generation, enhance the overall capabilities of Cardano applications.
- Increased adoption and usage - By facilitating the development of practical applications, the project can drive greater adoption of the Cardano blockchain among businesses and startups.
- Community engagement and collaboration - The open-source nature of the SDK encourages community contributions, fostering collaboration and shared resources.
- Long-term sustainability - As more developers adopt the SDK and build successful applications, the overall value of the Cardano network increases, providing sustained benefits to all stakeholders involved.
- Attracting Elixir developers - The introduction of an Elixir-based SDK will attract developers from other ecosystems who are familiar with Elixir, broadening the talent pool and leading to innovative projects that contribute to the Cardano ecosystem's growth.
- Supporting diverse use-cases - The SDK enables the development of a wide range of applications, from finance to gaming and real-time services. This diversity increases Cardano's relevance across different sectors, ensuring its sustainability and growth potential.
The cost of the project represents a strong value for money for the Cardano ecosystem by reducing development time, enhancing capabilities, driving adoption, fostering community collaboration, and supporting diverse use cases. These factors will collectively contribute to the long-term growth and sustainability of the Cardano blockchain, ultimately benefiting all stakeholders involved.