[GENERAL] Name and Surname of Main Applicant
Mitch Turner
[GENERAL] Email address of Main Applicant
james.mitchell.turner@gmail.com
Additional Applicants
N/A
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
6
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language.
No
[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.” in this field.
No dependencies.
[GENERAL] Will your project outputs be fully Open Source?
Yes
[GENERAL] If NO, please describe which outputs are not going to be open source. If YES, please write “Project will be fully open source.” in this field.
Project will be fully open source.
[METADATA] Category of Proposal
Dev Tools, API or Library
[IMPACT] Please describe your proposed solution.
The Naumachia Toolkit includes:
- A test-centric smart contract off-chain framework: Naumachia provides the means to test your scripts, your contract as a whole, and applications built around your contract. Deploying to a blockchain can be scary. You are working with your own and others’ money. Feedback is slow. No one is there to hold your hand. Testing gives developers confidence in their Smart Contracts. Naumachia includes a suite of mock blockchains to make testing as easy as possible.
- A fool-proof API for transaction building: Smart Contracts are hard. Naumachia takes advantage of Rust’s strong typing to guide developers into maintainable solutions. Developers can specify behavior declaratively and let the framework deal with complicated transaction-level logic.
- A Swiss-army-knife command line app + wallet for managing your contracts and environments: Naumachia was created in parallel with a simple wallet app to make Smart Contract development easier. The app includes a tailored set of commands to make spinning up and switching environments easy. It also includes a minimal set of tools to manage the wallets in those environments.
[IMPACT] How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Naumachia is the framework we wish we had after going through the Plutus Pioneer Program. It allows developers to hit the ground running and sandbox ideas quickly.
Naumachia will be beneficial to the Cardano ecosystem because it will attract Rust developers and will retain developers that would have been scared away by the Haskell tools.
Naumachia aims to become the standard for client-side dApps in a truly decentralized Cardano dApp ecosystem! In contrast to frameworks like Lucid which is great for Web applications, most existing Naumachia dApps are CLI (command line interface) applications. We see this expanding naturally to include GUIs and eventually be portable as Web Assembly packages.
[IMPACT] How do you intend to measure the success of your project?
We want many projects to be built using Naumachia! There are already projects using Naumachia for a variety of use-cases. Eventually Naumachia can be a suite of tools that many projects use for their full-stack or partial stack.
It’s hard to measure this directly, but correlative metrics include:
- Number of projects that are using Naumachia on GitHub
- Number of contributors to the Naumachia repository on GitHub
[IMPACT] Please describe your plans to share the outputs and results of your project?
We will use social media, such as Twitter, to post regular development updates as well as highlight projects that are using the product.
We also have regular discussions on the TxPipe Discord Channel.
[CAPABILITY/ FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability?
We already have a proven track-record. The project is already in a usable (albeit, incomplete) state! This represents hundreds of engineering hours of work with no compensation.
[CAPABILITY/ FEASIBILITY] What are the main goals for the project and how will you validate if your approach is feasible?
We already have working Smart Contracts! The main goal at this point is finishing up the features and making it the best framework available.
It is very important that we continue to get feedback and criticism. Users can contact the developers of Naumachia via the GitHub page as well as the TxPipe Discord channel.
[CAPABILITY/ FEASIBILITY] Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.
- Full features for TxActions (2 months)
- Naumachia abstracts the transactions construction as "TxActions". Not all transaction fields are currently supported. Completion will be measured by parity with PAB and similar products like Lucid.
- All the TxActions should have robust testing and example code to prove intended behavior.
- Code Generation for Aiken Integration (2 months)
- Naumachia will integrate seemlessly with the Aiken Smart Contract Language. There are already numerous example contracts using Aiken in the repository. However, it is still painful to write PlutusData types in Rust. It should be easy to take your types written in Aiken and generate Rust types with valid conversions to PlutusData.
- Additional Ergonomic Improvements (1 month)
- Development of Naumachia has focused on good design patterns, but still suffers from being verbose in a few places. We intend to make numerous improvements to ergonomics including:
- Improved TxContext and Mock-Chain generation for Unit Testing
- Simplified error handling in Smart Contract implementation code
- Macros for reducing boilerplate
- Thorough Documentation (1 month)
- Code documentation
- Tutorials
- Example Code
Stretch Goals:
- Automated UI generation, i.e. CLI and Web apps
- WebAssemply Compilation target
- This will enable Naumachia dApps to be portable to different environments, such as browser or mobile. It would also enable a package manager and dApp store for Naumachia contracts so you could manage all your dApps in one location.
[CAPABILITY/ FEASIBILITY] Please describe the deliverables, outputs and intended outcomes of each milestone.
Stable releases of Naumachia available on GitHub and crates.io.
We will also provide detailed documentation, tutorials, and examples code written with Naumachia. There already exists simple tutorials and example code, but we intend to make those as friendly as possible!
[RESOURCES & VALUE FOR MONEY] Please provide a detailed budget breakdown of the proposed work and resources.
6 months, part time (~40 hrs/month) @ $60/hr = $14,400 (roughly ₳49,000 at current price)
[RESOURCES & VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The project already represents hundreds of engineering hours of work. If funded, the grant would go towards subsidizing ongoing work and validating the work that has already been completed.
[IMPORTANT NOTE] The Applicant agreed to Fund10 rules and also that data in the Submission Form and other data provided by the project team during the course of the project will be publicly available.
I Accept