Cardano end-to-end dApp and tutorial
We built a simple dApp example with a complete tutorial, explaining every development step. It provides guidance for developers who want to implement a complete dApp from scratch.
Smart contract development in Cardano differs significantly from other existing blockchains, such as Ethereum. The support of smart contracts arrived with the Goguen era in late 2021, introducing the Extended UTxO model, which extends the well-known UTxO model on which Bitcoin is based.
This novel model has incredible properties and benefits, but at the same time, its adoption by the existing dev community is not easy. The most important difference is the way of thinking about a smart contract, which is completely different from EVM-based blockchains. Even terminology is not the same, being more proper to speak about programmable on-chain validators together with the off-chain code needed for building the corresponding transactions. An interesting discussion about this can be found here.
Given the short time since smart contracts appeared on Cardano, the existence of tools is limited. Moreover, most of them are still in an early stage and there are no clearly established standards. Nevertheless, the last couple of years were really interesting, with considerable growth in the community. With the recent development of initial steps towards dev frameworks, the future looks promising.
The need for an end-to-end example and tutorial
The first steps regarding tooling and education for Cardano development were done by IOG.The nice Plutus Pioneer Program (PPP) received good attention and it’s a great starting point for learning about Plutus validators and developing examples in a reduced environment such as blockchain simulators. In addition to that, the plutus-apps libraries seemed promising trying to unify in a single framework off-chain and on-chain development, including testing (especially the powerful property-based testing, built on top of the QuickCheck library). In this approach, core aspects of a dApp are implemented in Haskell, with the great benefit of sharing off-chain and on-chain code.
However, as far as we know, there are no resources about how to develop a complete end-to-end Cardano dApp following this original and promising approach. Here is where Plank wanted to contribute, so we worked on improving some aspects of plutus-apps libs, together with the development of complementary tools, for completing the flow and being able to easily develop end-to-end dApps.
In order to share all the work we did and to help on growing Cardano community, we built a simple dApp example with a complete tutorial, explaining every development step. It provides guidance for developers who want to implement a complete dApp from scratch.
The expected audience should have some preliminary knowledge of Cardano and Plutus, such as a good understanding of concepts thought in the PPP.
The tutorial is publicly available here and an introductory video here.
In addition, you can clone the repo with the e2e example and tutorial source code: https://github.com/joinplank/cardano-e2e-example.
The cardano-pab-client library source code is available here: https://github.com/joinplank/cardano-pab-client https://www.npmjs.com/package/cardano-pab-client
The working escrow dApp e2e example is hosted here if you want to try it out.