Please describe your proposed solution.
<u>Onchain</u>
We started this project as part of our Open Science NFT Marketplace because we needed to give our users the ability to mint, buy, sell and close (delist) NFTs using smart-contracts. We also needed to thoroughly test these smart-contracts to ensure our user's funds would not be at risk. To that end, we based our Buy/Sell Plutus smart contracts on MartifyLabs’s martify.contracts repo, modified them to fit our needs and added a full testing module on top. The testing module, written in Haskell, uses concepts from IOHK's plutus-contract library to implement unit tests crucial for a unique onchain smart-contract.
<u>Offchain</u>
To interact with these contracts, we created another standalone GitHub repo for the backend. As you can already tell, we are big fans of composability! For that end, we built a REST API using PyCardano, Flask and a Blockfrost connection. This in itself made the code reusable and independent of any specific dApp. But we didn't stop there; we went further and accessorized this backend with a React frontend that interacts with the Nami wallet (with more wallet support coming soon) that we deployed on cardanoops.intellart.ca for anyone to test.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Open-sourcing the above toolset will allow any new Cardano project to fully benefit from the work that we've done until now.
As is notoriously known in the ecosystem, writing smart-contracts in Haskell and Plutus is challenging. New smart contract programming languages such as Aiken are making strides in simplifying code complexity, but these are still new and, more importantly, they don't abstract rigorous testing implementations. Case-in-point, testing these smart-contracts has proven to be a tremendous hurdle as we have performed this work throughout June, July and August of 2022, during which period the old Cardano testnet was experiencing issues, the Vasil hard-fork was bringing in new paradigms, the Cardano node was experience syncing problems and older tools such as the PAB were becoming obsolete.
By having this open-source library with testable functionalities and a constant maintenance from our team, we ensure that, should similar circumstances arise, Cardano developers and projects will have a toolset ready to be used, letting them focus on building and focusing on their own products.
How do you intend to measure the success of your project?
By adoption this open-source library, and/or using the GUI that ships with it, Cardano projects will:
- Save a tremendous amount of time and effort. (Note that we have already spent more than 30k $USD building this project alone.)
- Significantly reduce risks associated with using smart-contracts with no or limited testing functionality.
- Be incentivized to want to build on Cardano knowing that a culture of open-source and extensive dev tooling already exists.
Please describe your plans to share the outputs and results of your project?
After we receive the funding, our first priority would be to clean the codebase, add documentation and open-source the whole thing. Everyone would then be able to follow along by viewing the project's GitHub activity and hopefully participating as well.