New Lectures Repository


#1

Hello!

I’ve been trying to figure out how best to optimize the lecture production process. So far I’ve been creating all of the outlines, slides, and animations myself. Although for Chapter 2 at least I didn’t have to do the video editing as well thanks to @K-Ho :heart:

Anyway, we’ve got to get Cryptoeconomics.study to a point where we can all take the lecture series from start to finish using the book as reference material, and this should happen sooner rather than later! Also, it important there isn’t important material that get’s left out! So I’ve been pondering how best to do this and I’ve come up with…

CES Lectures Repo!

I created a GitHub repository here: https://github.com/cryptoeconomics-study/lectures which contains some basic information regarding the different chapters & a process which I’ve been using to create the lectures thus far. It’s pretty barebones at the moment, but I am going to start posting everything that I work on there while it’s still WIP in order to get live feedback from yall.

Contributions that would be super useful:

  • Contributions to the chapter outlines.
  • Suggestions regarding subject material.
  • Diagrams for each of the topics.
  • Animation work on the slides (take the diagrams and explain the topic end to end with an animation).
  • Suggestions regarding my creative process (I’ve gotten roasted multiple times for not using any animation tools).

Anyway, hope you’ve been doing well and looking forward to jamming on all of this!
:heart:


What happened to Jing and Karl?
#2

Regarding the overall process:

  • is the plan to do the lecture videos, then build out the English documentation, then the code, and then put them all together in one integrated GitBook?
  • Or are the lectures, code, and blog posts kind of their own projects that loosely follows the same progression but don’t sync up exactly?

Asking because currently the Overview and Book chapters don’t really sync up. Also there’s code in the repo, and to me that’s the most exciting part, but I haven’t seen it talked about much.


Regarding cryptoeconomics:

  • I’m interested in exploring cryptoeconomic analysis (currently ch6 in the book?). Is your intention for that chapter to focus on protocol level security and incentives in plasma and/or PoS, or more general mechanisms that get people to do stuff that would otherwise languish in the tragic commons?

Regarding recommended resources:

  • It would be dope af to list recommended resources for the topics covered in each chapter. For crypto stuff that could be wikipedia, production libraries that show how these things are implemented IRL, or other papers and blog posts describing their mechanics in more detail. For broader stuff like cryptoeconomics and consensus mechanisms that could be links to specific token engineering resources and/or projects actually using these mechanisms. Regardless of the content, I think that if something is presented it should also be backed up and support by other sources so that people can easily learn more and/or get different perspectives.
  • Also, at the end of the book or on a separate page on the website it would be great to have a rolling list of FOSS blockchain resources for learning, developing, and engaging with the broader community so that once someone learns the basics here they can actually go out and build/do stuff with real people IRL.

#3
  • is the plan to do the lecture videos, then build out the English documentation, then the code, and then put them all together in one integrated GitBook?

Yes this is the overall mission. @K-Ho actually came up with some really interesting designs where on one website you can take the lecture, read the relevant sections of the book, and then code up the example yourself. That’s for sure the ideal workflow, but any approximation of that would already be great.

Right now there isn’t a single outline which covers both the lecture series and the book. We should probably make sure that both the lectures repo and the book repo include up-to-date outlines and identify exactly where they overlap and where they don’t. The general intutions that I’ve been running with thus far is that the lecture series will have tighter scope which focuses heavily on learning exactly what is needed for the coding project, and then the book covers a bunch of topics in details which the lecture series didn’t have a chance to cover.

Either way, we should update the master overview to include what we’ve learned over the past couple months.

focus on protocol level security and incentives in plasma and/or PoS, or more general mechanisms that get people to do stuff that would otherwise languish in the tragic commons?

My area of expertise is certainly PoS / Plasma-type designs and so at least it’s easier for me to cover those topics. That said, I’m interested in cover as much interesting material as is helpful. There are a couple other mechanisms which are self-contained and clear cut that are good candidates (eg. Uniswap). That said, I feel many of the exciting mechanisms (sharing economy, mesh-nets, decentralized turing tests, etc) are going to have subtleties which are only exposed during a deep dive on the topics. So if I were to cover one of those big ones now I feel it will only be at a surface level so I hesitate to cover it in the core lecture material.

That said, happy to be convinced otherwise! :smiley:

It would be dope af to list recommended resources for the topics covered in each chapter

Great point.

  • Also, at the end of the book or on a separate page on the website it would be great to have a rolling list of FOSS blockchain resources for learning, developing, and engaging with the broader community so that once someone learns the basics here they can actually go out and build/do stuff with real people IRL.

Yes! I was thinking that once we all go through the course material as a group, that at the end there will be projects which people can pick up & hopefully new teams that can form. Would love to see this happen so please let me know if you have any ideas of how I can help facilitate.


#4

Ok cool. I’ve started doing the same thing in my Rust version. The whole thing is constantly evolving, but you can check out a rough sample of the template on this page or really anywhere in ch1:


Where can I see/explore this?


This is really important, and in my experience contributing to open source projects, that direction can only come from the people who have ownership of the project (write access to the repos). Otherwise people just spin in circles talking, but it creates more noise than signal. One idea might be for the book to follow the code/lectures, but then also have additional sections going into more detail. That way it’s a similar flow and users can easily approach concepts form different perspectives. Personally I’d like to see it all integrated as one big book, but again, it’s not up to me lol


As I’ve been rolling my own book from scratch, many lessons have been learned the hard way trying to find the best flow to go from centralized operator => P2P PoW => better P2P PoS. A few things that came to light:

  • there are core concepts that centralized operators and distributed systems all share and care about like state, accounts, and transactions. Maybe good to introduce those first and then upgrade them to a P2P system?
  • With that in mind, introducing digital signatures in the context of a central operator is non intuitive because central operators don’t have digital signatures or user controlled accounts and that’s why they suck. Might be better to start the central operator with a centralized database and then upgrade that to a cryptographically generated user controlled public key system in the next chapter?
  • the videos are already made though, and that’s another thing I’ve found having gone through 4-5 different iterations of storylines/tutorials, is that it’s easy to build the result and work backwards to decompose it and present it as modular parts, but if you create parts and then realize they don’t fit into the overall plan then it’s a pain in the ass to rewrite the whole thing from the beginning (kind of like a PoW chain). Again why that direction and master overview needs to be solid before people can really contribute.

Maybe this isn’t super important since your process is a little more of a hydra than a single headed leviathan, and you’re using external libraries anyways, but building a singular book from scratch it’s something I’ve been wrestling with.


Agreed. They’re cool though and I wasn’t sure if establishing best practices/tools to think and reason about these systems is worth covering here, or elsewhere. If you’re looking for practicality though probably best to stick with established libraries and protocols.


It would be helpful if you had a section of the book where any resources/references used in the course could be aggregated. Then people can submit PRs if they add stuff, or find stuff that’s related, or just look through it if they’re curious. I’ve done this in my book and started breaking it down based on usecase because in the blockchain world the noise to signal ratio is just too damn high! Aint nobody got time to go searching through all the amateur blogger’s Feynman technique style learning essays to find stuff that’s actually useful and actionable (it’s funny because that’s me):


This sounds awesome :slight_smile:


#5

Also, do you have the CSS you used to create the logo? (assuming that’s what you did)


#6

Hey @burrrata! Here’s a screenshare of me walking through a mockup of how we could bring the lectures, book, and coding project into one cohesive course website. I think we can take a lot of inspiration from Cryptozombies in how we can structure the course website, track progress, and allow in-browser coding.

I’m working full-time on extending the coding project.
I apologize for the lack of transparency on the coding project - we’re spending the next month cleaning up the code and building out the framework for the project before actively seeking contributors. If you or anyone else is interested in contributing to the coding project please DM me on Twitter!

The general vision as outlined in the video above is to go from having just code snippets to having a coding project consisting of assignments and network visualizations.

The coding assignments will include:

  1. Clear writeups
  2. Starter code
  3. Robust unit tests.

The network visualizations will serve to let students actually run the protocols and attacks that they’ve implemented in a realistic network simulation. Here’s a demo.

Github Repo

I think it’d be so cool to expand the coding assignments to other languages like Rust.


#7

That’s actually REALLY cool. I like how it’s entirely browser based and includes an interactive visual component as well.


I’m intrigued… but Twitter blocked my account within 5min of creating it (not sure if it was the cheese, the plate, or the tomatoes in my profile pic), and then I remembered… oh yeah! centralized social networks suck. So I’m not on Twitter. Also, when it comes to FOSS I think it’s hella important to make everything as transparent as possible and thus I try to avoid DMs as much as possible. Happy to chat here if you want though :slight_smile:


The interactivity of the attacks would be amazing. Have you thought about creating “bounties” (stickers or real cash) for people who find ways to exploit the network?


I agree! Currently I’m rolling my own book because there doesn’t seem to be any way to plug in atm, but if that changes and you want help rolling Rust versions of the assignments hmu


Concise Research Topics
#8

Yes, totally agree - currently working on re-organizing the coding project repo to be more clear/transparent so someone can just start contributing with just the documentation. Most of the work we’re trying to tackle right now is re-factoring the network visualization (d3 + react) and building the all-in-one course site with in-browser IDE, testing, progress tracking, user accounts, etc. LMK if any of that sounds interesting to you!

Yeah! Another idea is letting students complete extra credit projects extending protocols or implementing new attacks. The students with the most impressive protocols or attacks could be highlighted and offered research positions at places like the Ethereum Foundation.


Concise Research Topics
#9

That sounds interesting to me. I think that the tools we use and the mediums we work with greatly shape the things we build and the ideas we have, so creating better ways to share and process information is something I really care about. I’ve explored GitBook in the past because it’s simple and looks great out of the box, but lately have been exploring Rust books because in addition to that they also allow you to easily drop live code into the mix. I don’t have any experience with d3 or react though, so I dunno if I would be much help there. Is the plan to move the whole thing from GitBook to a custom built d3/react site/app, or is it more to create a framework that visualizes arbitrary solidity or web3js code and then use that to visualize the code you’re rolling using standard ethereum libraries?


That would be amazing: a live sandbox where people can experiment and explore, but with real incentives beyond academic/theoretical accomplishments or rubber stamps. I think there’s a yuge gap in the ecosystem right now where there’s hand wavey high level tutorials and hard core cs research/dev, but very little in between to help people go from 0 => hero. Speaking of, how does one get involved with the Ethereum Foundation?


#10

To be honest, this is still up for discussion. Long term it’d be nice to have a custom-built react site that has built in progress tracking, accounts, grading, etc. Right now, for version 1, it seems like it’ll be easiest to just let students clone a github repo and build/test assignments locally. They can then locally run the network visualizations using the client code they write in the assignments. Then, all we need to add for progress tracking is a way for students to submit assignments to our server (probably through a CLI) and possibly log in to check their grades. (This is is how exercism.io works)
It’d be nice to do everything in Gitbook, but there’s no built in functionality to track progress and to let users code within a Gitbook and have that code saved to their account.
If you know of any other alternatives please let me know!

Yeah! It’d be the blockchain/consensus algorithm version of bl.ocks.org or https://codepen.io/


Using Chainshot for Coding Project
#11

It would be cool if it was a library you could use to visualize arbitrary web3js or solidity code. Kind of like how TensorFlow’s Tensorboard/Dataflow visualizes the graph in machine learning models, you could visualize the graph for a cryptoeconomic mechanism or a solidity contract. Bonus points if you create a “model zoo” of prebuilt cryptoeconomic mechanisms that have been created using best practices

Not familiar with exercism.io, but it looks cool. Didn’t feel like signing up to get past the home page tho lol. With that in mind, I liked FreeCodeCamp and CryptoZombies because you could just open it up and start working right away, and IF you wanted to save your progress you could create an account and login, but you didn’t have to so there was literally 0 barriers to entry. It just worked :slight_smile:

In my experience CLI project submission is frustrating because it requires the user to set up a dev environment, go through the steps for a project submission, and then wait for feedback from that submission whereas an end-to-end browser based interface is fast which helps make learning more fun because you can iterate quickly and get in flow.

  • That being said, if you had a constraint bug testing system set up for various mechanisms/modules that students develop, that would be a great asset to incorporate into a testing/building sandbox. Maybe kind of like how Rust compiles your code and finds errors for you before you’re even allowed to run it, but in a blockchain constraint system?

That’s the dream. I’m currently refactoring my Rust tutorial so that the entire architecture is modular and you can plug in different modules without rewriting the others: pluggable consensus, key creation, hash functions, etc… The goal is to move towards a system where people can mix and match different cryptoeconomic mechanisms to see how they create or defend against various vulnerabilities and the trade-offs between various design decisions. Because the system is fully modular this would ideally allow the user to test stuff out in a sandbox, and then just swap the fast toy components for production ready modules and off they go. Would love to jam on ideas on how to make that possible if you have a roadmap sketched out as to how you’re thinking about getting there :slight_smile: