Plan Author

Nathaniel Weeks, 2019

Outside Evaluator

Elliot Anders, Green River Data Analysis

Overview

This plan is an exploration of computer science and web development on different platforms. It looks at the power of data and the potentially disruptive influence of the blockchain in today’s world. My primary plan project is an exploration of the practicality of creating a decentralized application utilizing Ethereum smart contracts as a judge for a game engine and for peer-to-peer cryptocurrency transactions. Another component of my plan is a Content Management System for high school students to edit and share assignments deployed to the Web as well as a paper discussing my experience teaching Computer Science in a high school setting. The final components of this plan are two exams demonstrating competency in computer algorithms and Web technology.

Excerpts

In a blockchain, a bunch of transactions are gathered together by a miner (more on this later) and stored in a block. Within that block, all the transactions are stored in a Merkle tree. A Merkle tree is a binary tree in which each parent node stores the hash of the data from both of its child nodes. In the case of bitcoin, thousands of transactions are recorded per block and each transaction is stored at the leaf nodes at the bottom of the tree. The hashes of each transaction are added together and hashed to create the entry stored in their parent node, and each parent is hashed with a neighboring parent so that the hash of the data percolates all the way up to the root node at the top of the tree. This makes the verification of each transaction very simple, because any change to the data stored anywhere in the merkle tree will alter the root hash, as well as any parent nodes of that transaction.

Etherium is built on all the same protocols as bitcoin. It stores transactions on a blockchain, has a global network of decentralized nodes, makes heavy use of merkel trees to validate data and uses a similar proof of work algorithm. The primary difference is that Ethereum nodes also process code in a turing-complete language utilizing the Ethereum Virtual Machine. This opens up a world of possibilities and adds a boatload of complication to the Ethereum network.

I wanted to make this app as a proof of concept and demonstrate my understanding of a basic MVC architecture with user authentication and conditional rendering. If I had more time I would add in a lot more css in the stylesheets folder, all I did was style the navbar to make it a little navbarry. I would also include some rspec unit tests for my models and capybara acceptance tests for my views. Developing with Rails in a stable environment was a pleasure. It’s amazing how much smoother the process was than trying to develop an app with Ethereum. I hope the tooling gets there someday for Dapps but right now building things the traditional way with is maybe 10 times easier.

Reflections

One of the most memorable things about my Plan was solving a bug in one of my deployments minutes before my orals. I enjoyed exploring blockchain technologies and Ethereum. There was a lot of in-development technologies to dig through and it was interesting to figure out. I hope to work in the computer science industry as a web developer.

  • A diagram of a Model View Controller.
  • A diagram of a block chain.
  • A simplified Bitcoin block chain.