Please describe your proposed solution.
This open-source instructional book uses a theoretical and practical approach and requires no prerequisites. Mathematical foundations will be introduced first, followed by an introduction to programming with an emphasis on functional programming in order to proceed to Haskell and its type system. This puts the reader in the position to be able to learn Blockchain and the technologies that revolve around the Cardano ecosystem (Plutus, Plutarch, etc.).
The content of the book aims to unify the fundamentals for the reader so that they are able to successfully enter the Cardano ecosystem, and without much confusion. On the other hand, this book will be open source (MIT license), so that anyone in the community may modify it. This is an instructional book written specifically for the Cardano community.
Please describe how your proposed solution will address the Challenge that you have submitted it in.
This book will serve as a resource for working in the Cardano blockchain. It will create comprehensive online instruction, accessible to all. This will increase developer productivity (knowledge base & documentation) as well as raise the technical competency of the community (without the need for prerequisites), fulfilling the goals of the fund.
Why is it important?
Creating an awesome experience that incentives developers, will lead to increased developer adoption, productivity, and creativity.
¿Does it have a prerequisite?
No, it is assumed that the reader has no experience in programming or in the world of Blockchain. That is to say, it is a self-contained book that progresses as each chapter progresses.
General outline:
Subject Index:
- (Mathematical foundations) Fundamentos matemáticos
- (Propositional logic and first-order logic) Lógica proposicional y de primer orden
- (Functions) Funciones
- (Boolean algebra) Álgebra de Boole
- (Set theory) Teoría de conjunto
- (proof) Demostración en matemática
- (Introduction to programming) Introducción a la programación
- (Turing machine) Máquina de Turing
- (Basic operations) Operaciones básicas
- (State machines) Máquina de estados
- (Lambda calculus) Cálculo Lambda0
- (Operations and variables) Operaciones y variables 0
- (Abstraction) Abstracción
- (Application) Aplicación
- (Reduction) Reducción
- Alfa
- Beta
- Eta
- (Examples) Ejemplos
- (Arithmetic) Aritmética
- (Conditional) Condicionales
- (Tuples and lists) Tuplas y listas
- (Introduction to Typed Lambda calculus) Introducción al cálculo lambda tipado
- (Introduction to functional programming and Haskell) Introducción a la programación funcional y a Haskell
- (Functional programming) Programación funcional
- (Basic concepts) Conceptos elementales
- (Pure functions) Funciones puras
- Higher-order functions
- Pattern matching
- Lazy evaluation
- (Referential transparency) Transparencia referencial
- (Immutability) Inmutabilidad
- Haskell
- (Prerequisites) Requisitos previos
- (Install) Instalación
- (Development environment, editor, IDE) Entorno de desarrollo
- (Lists) Listas
- (Type and Type Class) Tipos y tipos de clases
- Pattern matching
- (Recursivity) Recursividad
- Higher-order functions
- (Modules and composition) Módulos y composición
- (Functors and monoids) Funtores y Monoides
- (Monads) Monadas
- (Introduction to Blockchain) Introducción a Blockchain
- (Cryptographic fundamentals) Fundamentos criptográficos
- (Numbering system) Sistema de numeración
- (hash) Funciones de resumen
- (Electronic signatures) Firmas electrónicas
- (Protocols) Protocolos
- (Hash pointer and Merkle tree) Punteros hash y árboles de Merkle
- (Introduction to Bitcoin) Introducción a Bitcoin
- (History - Whitepaper) Orígenes
- (ECDSA protocol) Protocolo ECDSA
- (Transactions) Transacciones
- (Distributed consensus protocol) Protocolo de consenso distribuido
- (Limitations) Limitaciones
- (Security problems) Problemas de seguridad
- (Scalability) Escalabilidad
- (Governance) Gobernanza
- (Smart contracts) Contratos inteligentes
- (DeX) Intercambio descentralizado
- (DeFi) Finanzas descentralizadas
- (Use cases and limitations) Casos de uso y limitaciones
- (Privacity) Privacidad
- (Scalability) Escalabilidad
- (Performance) Rendimiento
- (Key management) Gestión de claves
- (Introduction to Plutus) Introducción a Plutus
- (Introduction to Cardano) Introducción a Cardano
- (System architecture) Arquitectura del sistema
- (Why Plutus?) ¿Por qué Plutus?
- (Smart contract: the model (E)UTxO) Contrato inteligente: el modelo (E)UTxO
- (How does it differ from the UTxO model?) ¿En qué se diferencia con el modelo UTxO?
- Playground
- (Using Plutus Tx) Usando Plutus Tx
- (How can you build your first smart contract?) ¿Cómo construir tu primer contrato inteligente?
- (Validators) Validadores
- (Type) Tipado
- (Free type) Libre de tipos
- (Exercises) Ejercicios
- (Scripts validation) Validación de scripts
- (Context) Contexto
- (vesting contracts) Contratos de adquisición de derechos
- (time sensitive contracts) Contratos con límite de tiempo
- (parameterized contracts) Contratos parametrizados
- Cardano CLI
- (Monads) Monadas
- EmulatorTrace
- (Monad contract) Mónada de Contrato
- (Policy) Políticas
- (Value) Valores
- (minting policy) Política de acuñación
- NFT
- (Deployment of contracts) Despliegue de contratos
- (mint tokens) Tokens de acuñación
- CLI
- (Scenarios) Escenarios
- (Plutus Application Backend) PAB
- (State machines) Máquinas de estados
- Staking & Testnet
- (Vulnerabilities) Vulnerabilidades
- (Common problems) Problemas comunes
- (Plutus. Domain Specific Languages) Más allá de Plutus: lenguajes de dominio específico
- (Why use a language other than Plutus?) ¿Por qué usar otro lenguaje distinto de Plutus?
- Plutarch
- (Introduction) Introducción
- (How to write on-chain scripts?) ¿Cómo escribir un on-chain scripts?
- (Examples) Ejemplos
- Marlowe
- (Introduction) Introducción a Marlowe Playground
- (How to write a smart contract?) ¿Cómo escribir un smart contracts?
- (Examples) Ejemplos
- (Integration with other languages) Integración con otros lenguajes
- (Glossary) Glosario de términos
- (References) Referencias
- (Index)· Índice alfabético
What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?
Risks:
The project may be a risk in the sense that there is no official, complete, updated documentation of each of the Cardano ecosystem tools. Rather the information is dispersed throughout different places and formats. Therefore, the risk is the research, and being able to separate the wheat from the chaff.
Opportunities:
Some potential opportunities:
- The book introduces the necessary foundations for any Blockchain in its first chapters and therefore will take longer to become outdated, despite ever-changing technology. Publishing a later update of the book is more feasible for this reason, as it would not be necessary to rewrite the first chapters’ content.
- Another opportunity lies in the potential to create audiovisual courses (on a website) or other types of courses based on the book's content. In this case, the book would be the reference for the course.
- The book will be open source under the MIT license. https://choosealicense.com/licenses/mit/
Some possible objections:
- ¿Why in Spanish?
- Currently, there are limited written and audiovisual resources that offer a comprehensive technical introduction to the Cardano ecosystem and there is no such educational resource currently available in Spanish. Creating this resource will help to expand the platform's technical community of developers and, in particular, advance opportunities for Spanish-speaking and novice developers.
- ¿Why a Book?
- A book allows for greater depth, breadth and detail of the topics to be covered, which, in another format, might not go sufficiently in-depth.
- This is not a book solely on Plutus, in fact the content is created for readers with no background in mathematics or programming; that is what makes this a noteworthy book. Even the current courses available in English assume a previous knowledge of either mathematics, logic or of Haskell.
Preliminary references to be used in the book:
- Mathematical foundations and introduction to programming:
- Chacón Sartori, Camilo. Principios de Programación, Marcombo.
- Functional programming and Haskell:
- Chacón Sartori, Camilo, Computación y programación funcional, Marcombo, 2021.
- http://learnyouahaskell.com
- <https://haskell.mooc.fi/part1>
- <https://typeclasses.com/beginner-crash-course>
- Cryptography, Bitcoin and Blockchain:
- Paar, Christof, 1963-. Understanding Cryptography : a Textbook for Students and Practitioners. Berlin ; London :Springer, 2009.
- Tanwar, Sudeep. n.d. Blockchain Technology. Springer Nature Singapore. Accessed June 5, 2022.
- Svensson, Conor. The Blockchain Innovator's Handbook: A leader’s guide to understanding, adopting and succeeding with this disruptive technology, 2021.
- Arroyo Guardeño, David; Diaz Vico, Jesús; Hernández Encinas, Luis. ¿Qué sabemos de? Blockchain, 2019.
- Bitcoin and Cryptocurrency Technologies, 2017. http://bitcoinbook.cs.princeton.edu
- Casino, Fran & Dasaklis, Thomas & Patsakis, Constantinos. (2018). A systematic literature review of blockchain-based applications: Current status, classification and open issues. Telematics and Informatics. 36. 10.1016/j.tele.2018.11.006.
- Cardano and Plutus:
- Research papers: <https://iohk.io/en/research/library/>
- Brünjes, Lars; Vinogradova, Polina. Plutus: Writing reliable smart contracts, 2019.
- <https://github.com/input-output-hk/plutus-pioneer-program>
- Beyond Plutus. DSL (Domain Specific Languages):
- Plutarch. <https://github.com/Plutonomicon/plutarch/blob/master/docs/README.md>
- Marlowe. <https://docs.cardano.org/marlowe/learn-about-marlowe>