Day 30: Blockchain Developer Nanodegree
An update from one month into the nanodegree

by Valentijn v/den Hout
It has been 30 days now since I got started with the Blockchain Developer Nanodegree from Udacity and I can say that I am very happy I did. Initially, I felt the little programming experience I had was not enough to work through the program but thus far — not without a day or two of plainly staring at my laptop — I managed to get through it quite consistently. So, here is just a little up date on what we have covered so far.
I will not being going into detail on what exactly is covered content wise (e.g. what are all the components of blockchain technology, what kind of information do transaction scripts hold, how to operate the Bitcoin core client, etc.) but will just give a brief overview. If you are really looking for a place to learn the details of the technology, there are many fantastic articles and courses out there. In the near future I might write my own “what is a blockchain”-summary but for now, here is just an overview of what we have covered in the nanodegree. Also, I will most likely skip over some aspects or leave some out (intentionally or not).
Blockchain and its components
A big part of the beginning of the program is, unsurprisingly, allocated on understanding what a blockchain is and what the components are of the surrounding technology. Here we get a brief introduction as to why blockchains are such an interesting new approach to storing data and a high-level overview of how they operate. We get a broad but detailed walk through of things like addresses, transactions, consensus models, hashing, and more, giving us a great structure to start learning on top off.
The first in-depth content is allocated to the blockchain identity. More specifically, we are taught about what constitutes identity on the blockchain, what wallets are and which types are currently used (deterministic and non-deterministic), and what roles private keys play. This then comes together into a first, small project that shows us how we can manage our own identity.
The blockchain data model
After having had our solid introduction to blockchain technology, we move onto the data model. Topics covered here concern how blockchains store data, what the differences are between a traditional data model and a blockchain and when one might chose one or the other, the different type of blockchains (public, private, and hybrid), and more.
Following this, we get to work with the Bitcoin core client where we obtain faucet coins to work with on the testnet and learn how to operate the client using commands in the debug console. It gives us insight into how to interact with the bitcoin blockchain and how we can use this information to do so computationally later in the nanodegree when building our own blockchains and web API’s.
Before getting to our Private Blockchain project, more attention is given to the transactions that are stored on the blockchain. Here, we learn how transactions are encoded into the data that is included in a block. Most importantly, we learn that transactions on the bitcoin blockchain consist of input transaction and output transactions, and get insight into how unlocking and locking scripts are used to release and authorize transaction spending by wallet holders. Also, we walk through the process of generating a raw transaction that stores all this information.
Building a private blockchain
Exciting! This is our first big project where we actually get to do some coding (and apply the NodeJS and OOP knowledge) and get to work on some inner workings of blockchain technology. Even though it is an incredibly slimmed down version, we get to write the private blockchain from scratch, allowing initiation of the chain and creation of a genesis block, adding blocks to the chain while maintaining correct hash linking, and other functionality like getting block data by block height, validating block hashes, and validating the entire chain. This all while persisting our data using the LevelDB npm module. For anybody that is interested in seeing what this looks like in code, here is my git repository: https://github.com/vvdhout/blockchain-udacity-clean
I rewrote the blockchain two times in order to nail the process and clean it up (only added async/await syntax since a few days ago).
Adding API functionality
This part is not necessarily native to the blockchain technology given that in essence we create a simple web API. However, it does allow us to set up endpoints that can be used to communicate with out private blockchain from outside the command prompt, something I had never done before. Using the Express npm module, we easily set up a localhost that allows us to get block data from the chain and add blocks to the chain containing custom data whether via the browser or via a service such as Postman.
Upcoming: building out our private blockchain to function as a notary service. This is the biggest and likely the most difficult project yet, while being incredibly exciting. After this, once the section of the program will be opened, it is finally time to start to learn, work with, and build smart contracts on the Ethereum blockchain.
At this point I am already much further than I expected to have been after only 30 days of the nanodegree, actually writing my own private blockchain and having a solid grasp of the low-level details of what constitutes blockchain technology. I am getting more excited by the day and it becomes harder — if not impossible— to envision a future where cryptocurrencies and blockchain driven data solutions do not exist. It feels like I am working in the future and I cannot feel more privileged to learn about this fantastic technology and experience the genuine enthusiasm and passion of my new peers.
The upcoming weeks I will write some pieces here on Medium. A few topics that I am considering:
- Specialization in the world of blockchain
- Current scalability solutions in blockchain technology
- Satoshi Nakamoto’s Bitcoin Whitepaper: A walk through
- The current crypto custodians and which is the best for you
Hopefully, you enjoyed reading over this post. If so, I’d love to hear from you in the comments below. Also, if you have any pointers, criticism, or feedback, feel free to let me know. Lastly, if you’re looking to discuss anything I presented above, or anything related to blockchains, DLT, and cryptocurrencies, I would love to make time.
Thanks for taking the time out to read through this article. If you enjoyed it, claps and comments are much appreciated. 🙏🏼
All the best,
Valentijn
Twitter: @vvdhout — https://twitter.com/vvdhout
