over budget

Mobile Plutus and Marlowe Dev Tools

$20,800.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Addresses Challenge
Feasibility
Auditability
Impact
Solution

A touch-optimized web-based interface to allow people to construct and learn about Plutus and Marlowe code visually w/ enforced type safety.

Problem:

Many in nations like Malawi already have smartphones. Laptops can cost 2-3 months' wages. Cardano development could be more mobile friendly.

Yes Votes:
₳ 61,300,744
No Votes:
₳ 53,278,973
Votes Cast:
482

  • Video cover image

Open Source: All the code for this tool will be provided under the same open source license as most of the Cardano code and will be posted to my GitHub page. Any documentation or media I produce related to this project will be provided under a creative commons "copyleft" license.

 

Budget and Goals: 400 dollars/week × 52 weeks = 20,800 dollars (That's 83% of minimum wage where I currently live for a 40-hour work week)

 

Though, $400 a week is a low wage where I'm currently living, I'm leaving for Malawi in June, where that amount will take me a lot further as well as help me continue to supplement the income of the four members of my team who I'm going to be training over there.

 

I'd be happy to take payments on a weekly basis or whatever strategy makes the most sense… as my code will be openly available on GitHub, it will be easy to track my progress. When I'm in Malawi, my friends and I are planning to continue the podcast we started in December, and I plan on sharing my progress on this project as part of that.

 

My main goal for this project is to better understand Marlowe and Plutus Core and to work on ways to visualize their semantic structures and how they relate to each other as well as the workings of the Cardano blockchain. I want this tool to make it easy to build and test contracts with an interface that's optimized for touch-based input, so that there isn't a burden on my initial students to buy devices they don't already own. Lowering the financial barrier to entry will also increase the possible scalability of training.

 

Timeline and Deliverables:

Current Progress: During Fund2, I started working on an alternative way to visualize Marlowe, and I've also been studying the Marlowe and Plutus code written in Haskell and Purescript as well as the Plutus Core Specification. I've bought my ticket to Malawi, and I'm currently going through the process of deciding what I'm going to pack to take with me and what I'm going to leave behind. I've also bought some sound equipment for the podcast my friends and I will be working on once I'm in Africa. May: I'll continue whittling down on my belongings until it will fit into my two check-in boxes and one carry-on. If everything I need doesn't fit, I have a friend who can help me get a good deal on mailing stuff if I need to. I've got a lot of books that would be useful for my research and teaching. Digitizing notebooks, financial preparations, going through all the Plutus and Marlowe content on the internet, integrating work I've got split up into different projects that will be useful for this project into a single codebase, etc… June: During the first week, I'll be finishing up my preparations to leave. I'll be traveling and getting situated during the second week. After that, I'll begin to work with my team to teach them about functional programming, Cardano, the Catalyst Project, Marlowe, and Plutus. The process of teaching them will help me refine my ideas for this project as my goal is to use it primarily as a teaching tool that people can use on devices they already have. Q3 of 2021: Within this timeframe, I should have a graphical touch-based interface for working with Marlowe ASTs that doesn't rely on drag-and-drop, and that only shows you valid sub-expressions to be placed in a hole at any given context. Blockly has some shortcomings that hinder productivity if you're trying to use it to build smart contracts. One of these is the lack of abstractions such as named expressions that can be used multiple times in a contract. It should be fairly easy to get to the place where you can at least build Marlowe contracts in a way where impossible states are not representable save the possibility of type holes. When all the type holes are gone, you should at least be able to export the data structure as a chunk of Haskell code and paste it into the Playground, if not being able to simulate it with a visualization of the timeline and, possibly, its different permutations. Q4 of 2021: My primary focus for this project will shift from Marlowe to Plutus. For the near future, I'm going to avoid the high-level Haskell code in this project and focus on the low-level semantics of Plutus Core. It's a fairly simple language with some interesting features like simply typed lambda calculus at the type level, kinds, and reduction to normal form at both the term and type levels. During this quarter I plan on extending the interface I'll build for Marlowe to work with Plutus Core as well including visualization of types and kinds. Q1 of 2022 and beyond (if not sooner): There are many ways to add value to this project, and some will be ongoing areas of research. I want to make an interactive implementation of the Plutus Core Spec that allows you to normalize or evaluate code examples in the document, as well as the Environment (Γ) and how it tracks variable assignment and type correctness. I also want to work on ways to make it easier to learn the symbolic expressions found in programming language research papers… Visualization of smart contract operation in the context of the blockchain as well as native tokens and their minting policies… Exploration of the way that Plutus Core is generated from Haskell and Marlowe, as well as how they relate to the system space of all possible Plutus Core applications… Exploration of different abstractions that can be built on Plutus core and how they relate to the semantic properties of various other programming languages such as Elm, Pony, the Pie language from The Little Typer, μKanren, and the K Framework… I may also still consider working on a way to use this interface for Plutus-based game scripting.

Community Reviews (1)

Comments

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    d. 3 se. 24
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    d. 4 se. 3
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    d. 3 se. 48
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    d. 2 se. 16
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    d. 3 se. 14
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    d. 3 se. 19
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    d. 4 se. 59
    Darlington Kofa
0:00
/
~0:00