Monday, December 18, 2017

Blockchain learning path for Enterprise Software colleagues

I wrote this post to document my learning path of blockchain concepts and Ethereum technologies while keeping my “new to blockchain” colleagues in mind. The ramp-up recommendations are based on my free-flow learning path, chronicled in the second part of this article. Use this as a guide to get started now, or bookmark and explore additional topics as blockchain conversations emerge with our clients.
Like many of you in the enterprise software development and integration business I filed away the concept of blockchain as either an R&D topic or associated it with dark web. An occasional curiosity was satisfied with a feed from headlines about the Silk Road and Mt.Gox Exchange.
I don’t remember the specific catalyst that got me hooked. Perhaps it was the trip to New York to see my friend’s initial buildout of the data science and cryptocurrency mining operation. Or perhaps it was the Microsoft Day at Booz Allen in May where they affirmed Microsoft ♥ Linux and demoed a 7-minute blockchain setup in Azure. As I learned, I shifted my focus on the Ethereum blockchain ecosystem and started viewing our world through a blockchain lens with the “what if?” and “why not?” questions. If you’re not convinced that this is the new Internet, read chapter 3 in The Industries of the Future.
The blockchain hype is in a bubble. The only profitable blockchain business, so far, are the cryptocurrency exchanges. But the paradigm is here to stay. The blockchain technology represents a form of a scientific breakthrough that addresses the problem of trust between two parties without involving a middleman. I see two immediate impacts for enterprise software. For the brownfield development, it’s the integration of Web 2.0 and legacy systems with blockchain distributed ledgers and applications (dApps). For the greenfield development, it’s a shift to a new architectural paradigm to achieve security and privacy requirements through decentralized data storage and transaction handling.
Cryptocurrencies are just the initial use case for the blockchain paradigm. The real power is in the smart contracts that facilitate trusted and binding transactions between two or more parties without an intermediary. Imagine going through this house purchase settlement process without third parties.

Your Learning Path

If you are starting from zero, consider relating the blockchain paradigm to concepts you understand. In essence, a blockchain is a decentralized database. Start with this Forbes “Unchained” episode hosted by Laura Shin. The episode’s guests, Amanda Gutterman(ConsenSys) and Jamie Smith (Bitfury), are professional communicators and explain key concepts in simple terms. Examples: think of a blockchain as a railroad track between two points. A blockchain token is a rail car carrying whatever goods you put on it. Another: think of blockchain security as storing fragments of your valuables in thousands of houses in your community. For a thief to steal your assets he would need to break into all the houses to collect all the pieces.
The Tim Ferris’ podcast with Nick Szabo, who, by the way, coined the term “Smart Contract”, does an excellent job neatly compartmentalizing and relating key blockchain concepts. The episode targets non-technical, but intellectually curious audience, and covers a lot of ground including Bitcoin, cryptocurrencies, Ethereum and how it’s different from the Bitcoin, Initial Coin Offerings (ICOs), etc. This is a “must listen” for everyone.
I highly recommend “Digital Gold” by Nathaniel Popper — the New York Times technology reporter. The book is riveting. Nathaniel tells a compelling story of the Bitcoin birth driven by a small group of cypherpunks. The transitions are smooth, and you get just the right level of detail to feel the sense of hope, danger, excitement, adventure, and technological breakthrough. I hear a newer book, “The Internet of Money”, by Andreas Antonopoulos, may be a good follow-up.
As a compliment to “Digital Gold” consider Netflix’s documentary “Banking on Bitcoin” (trailer). The story feels a bit choppy, almost as if the film was put together in haste, therefore I don’t recommend this as a starting point. The movie does a good job portraying the emotions of the Bitcoin pioneers and the agony of the early adopters.
The Bitcoin and Ethereum ecosystems, out of the box, offer limited value to the enterprise customers: the transactions on public blockchains are visible to all, plus the performance characteristics are not suitable. Enterprise customers need the ability to run private or hybrid blockchain solutions by establishing computational nodes within some trusted consortium shielded from public. I briefly examined Hyperledger Fabric(trailer) and sunk my teeth into the Quorum (trailer) open source enterprise blockchain solutions. For Quorum I recommend this deck as an overview and reading through the project Wiki. The exciting development in the Quorum implementation is the integration of a Zero Knowledge Security Layer (ZSL) initially used at scale by Zcash. The ZSL allows for a trusted transaction to take place, without a third party, while removing information (not just encrypting) about the sender, receiver, and the transaction amount. This reads like science fiction, and it’s eloquently explained here. I highly recommend this podcast with the CTO of Zcash, Nathan Wilcox, to understand how transactions can be verified without publicizing information using a zero-knowledge proof zk-SNARK.
This concludes the non-technical part of this post. If you have a technical thread in you, please read on. This is where it gets interesting. If you’re taking off, thanks for reading, high-five, and follow me on Twitter (iFirebrand) for updates.

A Bit More Technical

To really understand the guts of the blockchain protocols you need to read and understand the Bitcoin white paper and Ethereum white / yellow papers. This is not for everyone. Preethi Kasireddy digested the Ethereum white and yellow papers, along with some code, and wrote an outstanding piece on how Ethereum works. Read it, use it, then read it again.
Knowing is not enough; we must apply. Willing is not enough; we must do. — Johann Wolfgang von Goethe
To understand blockchains you must tinker and put theory to practice. This means setting up your own private blockchains using various clients that implement the Ethereum protocol (e.g., Paritygeth), playing around with various development environments (e.g., Ethereum StudioRemix), exploring tools (e.g., MetamaskTestRPC), wallets, and frameworks (e.g., Truffleweb3.js), creating and publishing your own smart contracts (e.g., in Solidity), and exploring the distributed applications (dApps) ecosystem (e.g., distributed DNS: ENS, distributed storage: Swarm).
To start learning with training wheels I recommend the Ethereum Blockchain Developer course on Udemy. I took it and learned enough to gain solid footing for further solo exploration. You can power through at 1.5x speed for hands-on exercises and 2x speed for lectures. At first I gave the course 2.5 stars due to some rough edges, but after seeing two other courses I reverted my rating to 4.5 stars. The course is already dated (e.g., the Truffle framework now has a debugger, integrated TestRPC, the Mist client is now called Ethereum Wallet, etc.). However, the fundamentals are still intact and will prepare you well for the tutorials.
Smart contracts facilitate transactions between parties. A classic analogy is a vending machine. Your money deposit is verified against a selection, a change is returned, and a product is dispensed. Sending a Bitcoin from person A to B is an example of a very simple smart contract. The official Ethereum tutorials are a good place to feel more complex code and tinker with smart contracts. I recommend these once you review the The Hitchhiker’s Guide to Smart Contracts in Ethereum by Manuel Araoz and learn how to interact with a test (e.g,. Ropsten network) or a private blockchain. In the first two tutorials, you will create your own cryptocurrency and a contract for crowdfunding. When you’re ready to integrate smart contracts with web apps consider this “building your first dApp” tutorial. This is enough to get you started. Use this guide to help you along the way. Next, is the narrative of how I drank from a firehose.

My Learning Path

The initial flow of knowledge came from podcasts, newsletters, Flipboard blockchain keywords, some Reddit, Twitter (handles below), Hacker NewsStackExchangeboards, Quartz obsessionMeetup Groups, Booz Allen internal events, and 1:1 conversations with folks in the field. For about a week I got into cryptocurrency mining. Mining is the process for securing a blockchain by computing and “sealing” blocks containing the transactions. Without specialized hardware (ASICs) there was no chance for me to earn any rewards (i.e., Bitcoin, Ether) for my mining contribution (unlike these guys). In the process I downloaded and ran a full Bitcoin node, played with various mining software and contributed to mining pools for various currencies. Try this if you want to see how much heat your computer can generate when running at max capacity. These guys in Siberia warm their cottage with heat from their mining operation. As a side note, most major blockchains currently use a proof-of-work method to seal the blocks of transactions. Running proof-of-work is computationally intensive and generates lots of heat. The industry is shifting to energy-efficient consensus methods for verifying transactions (e.g., proof-of-stake or proof-of-trust).
I plowed through a number of YouTube videos. There are many explanations of blockchains, lots of pitches of get rich, but I found interviews with Vitalik Buterin helpful — especially on the more advanced topics such as Zero Knowledge Proofs.
The Udemy course I mentioned earlier helped me learn the basics of blockchain operations and deploying smart contracts on Ethereum. I started writing simple smart contracts using Solidityprogramming language. Solidity is somewhat based on JavaScript with many key differences (e.g., Solidity is statically typed) to enable it run on the Ethereum Virtual Machine. Last time I used JavaScript proficiently was between 1997 and 2000. This JavaScript Course helped me get up to speed quickly and understand the difference between Solidity and JavaScript. I also picked-up important language nuances, such as using promises to neatly handle failures in asynchronous operations. Along the way I stumbled upon a few great software engineering posts, such as Practical Functional Programming by Steven Heidel.
I initially used Remix IDE to write and experiment with contracts. Remix provides a Javascript Virtual Machine in browser or you can attach to an existing blockchain process via an Ethereum JavaScript API provider (web3.js). I deployed and tested smart contracts using a local geth(Ethereum) node and deployed via Mist (Ethereum Wallet). Using a client with a UI to deploy and call contract methods helped me visualize the flow. I incorporated command line deployments and executions later. For some tasks I started using TestRPC that simulates running a blockchain node without actually mining the blocks. Then I moved on to integrate the smart contract actions and responses into web pages using web3.js library with the Metamask add-on for Chrome. Metamask intercepts Ethereum “traffic” and enables you to interact with a blockchain (local or external) without actually running an Ethereum node. Along the way I discovered the Truffle Framework: a self-described “ethereum swiss-army knife”. The development framework contains an abstraction layer to facilitate interaction with a blockchain. It now has a (text based) transaction debugger, and the team just released a pretty sweet personal blockchain framework: Ganache. The Truffle framework has a set of “boxes”, when unpacked upon project initiation, they create a project structure with properly positioned development components (e.g., Webpack, React, Angular, etc.). This enables you to focus on writing blockchain related code. As an FYI, unpacking boxes overwrites all files in the target directory, so git commit often.
As you deepen your understanding of the blockchains you will inevitably start looking at the various implementations of the blockchain protocols. Protocol specifications are often documented in white and yellow papers and have a healthy dose of math. To get through some of these I had to pull out my books from grad school and refresh my knowledge on set theory, set operations, formal specification and formal logic, proofs, and the Turing machine (e.g., Ethereum is a distributed Turing-complete Machine). Thank you MSE/MSIT-SE at Carnegie Mellon for this core knowledge. As I was diving deep into the zk-SNARKs for Ethereum and for Quorum I had to rely on math to get the gist of thisthis, and this.
Upon a recommendation from a friend I dove into researching the J.P. Morgan’s permissioned implementation of Ethereum. This is a good example of a blockchain implementation suitable for enterprise customers that need transaction and contract privacy. The diagram is from this page on the Quorum wiki. The essence of the architecture is a separation of private contracts and public ledger visible to all consortium participants. The contracts are only visible to the parties participating in a transaction. The Quorum nodes contain blocks with transactions visible to all consortium particiapnts, but the contract’s state is encrypted with Enclave security mechanism and stored as a hash on the blockchain. Only parties privy to a transaction can decrypt the hash and take action on a transaction state. There is a proof of concept implementation underway to incorporate zk-SNARKs to completely shield transactions and address the double spend problem, which is currently mitigated at the application level instead of the protocol level.
If you get into this space I recommend building something to accelerate your learning process. In my case I’m building a dApp to faciliate peer-to-peer borrowing. This applies to any item that can be digitalized, but let’s imagine I have a set of children's books in Ukrainian that I’m willing to loan to other parents. A book owner establishes a smart contract with a borrower using an app. The borrower puts up a collateral and a fee for borrowing a book for a set period of time. The borrower can then return the book and get the collateral back, or transfer the responsibility for the book to another parent. When this transaction takes place, the original borrower gets their collateral back, plus gets paid a finder’s fee. The new borrower assumes the responsibility for the book by putting up the collateral and paying two fees: the borrower’s fee to the book owner and the finder’s fee. The cycle continues until the book is returned to the owner (and collateral is paid back to the last borrower) or there is an exception in the contract and the collateral is paid to the book owner. I recommend initial solo solutions with this level of complexity to get comfortable with writing and debugging Solidity contracts. The diagram above represents the state machine of the solution.
As a solutions architect in the distributed systems space, the blockchain design patterns interest me. This page for dApp design lists considerations and different design approaches. Here is a deck on some of the patterns and the associated talk (from DevCon One).
I also recommend buying some cryptocurrency just to experience the process. Figuring out how to use wallets and how to conduct transactions will be a lifeskill you will have to teach the younger generation. Or wait a couple of years and they will teach you. It can be Bitcoin or anything else. I used Gemini.
Along my learning journey, I was plummeted by ads for various Initial Coin Offerings (ICOs). That bubble is going to burst and lots of people will lose money. Sound investment advice: if you don’t understand it, don’t invest. Otherwise, you’ll end up HODLING something that has zero value.

Where to go next?

This is a rapidly evolving field. The blockchains are frequently splitting (i.e., forking) into sometimes incompatible branches to accommodate anticipated growing pains (e.g., to process transactions faster) or unanticipated forks (e.g., when a major cryptocurrency heist or a hack occurs). The development tools evolve quickly and even the terminology changes. For example, in a more recent Ethereum release the built-in function to remove a contract from the blockchain was renamed from suicide to self-destruct.
This post has a good source of additional links to follow and explore. I will modify the post to add additional sources. For now, I recommend the following Twitter accounts:
If you enjoyed reading leave a comment. Originally appeared on Medium.


Apsara G said...

You are doing a great job. You inspire me to write for other. Thank you very much. I would like to appreciate your work for good accuracy and got informative knowledge from here. Amazon Web Services Training in Chennai | Amazon Web Services Training Institute in Chennai

gowsalya said...

Thank you for this post. Thats all I are able to say. You most absolutely have built this blog website into something speciel. You clearly know what you are working on, youve insured so many corners.thanks
Digital Marketing Training in Chennai

Digital Marketing Training in Bangalore

digital marketing training in tambaram

digital marketing training in annanagar

johnsy sai said...

Great post! I am actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information you have Keep up the good work you are doing well.
Digital Marketing online training

full stack developer training in pune

full stack developer training in annanagar

full stack developer training in tambaram

sai said...

I have been meaning to write something like this on my website and you have given me an idea. Cheers.
python training institute in chennai
python training in Bangalore
python training in pune

ragini k said...

I always enjoy reading quality articles by an individual who is obviously knowledgeable on their chosen subject. Ill be watching this post with much interest. Keep up the great work, I will be back
Blueprism training in Pune

Blueprism online training

Blue Prism Training in Pune

nivatha said...

All are saying the same thing repeatedly, but in your blog I had a chance to get some useful and unique information, I love your writing style very much, I would like to suggest your blog in my dude circle, so keep on updates.
Data science training in tambaram
Data Science training in anna nagar
Data Science training in chennai
Data science training in Bangalore
Data Science training in marathahalli
Data Science training in btm

Unknown said...

You delivered such an impressive piece to read, giving every subject enlightenment for us to gain information. Thanks for sharing such information with us due to which my several concepts have been cleared. blockchain jobs

sudha P said...

I am really very happy to find this particular site. I just wanted to say thank you for this huge read!! I absolutely enjoying every petite bit of it and I have you bookmarked to test out new substance you post.
java training in chennai | java training in bangalore

java training in tambaram | java training in velachery

Revathy A said...

Really very nice blog information for this one and more technical skills are improve,i like that kind of post.

angularjs-Training in sholinganallur

angularjs-Training in velachery

angularjs Training in bangalore

angularjs Training in bangalore

angularjs Training in btm

ram ramky said...

You did well on inspiring writers like me. Please keep on doing such content.

Selenium Training in Chennai
software testing selenium training
ios developer course in chennai
Digital Marketing Course in Chennai
dot net course
dot net coaching centers in chennai
dot net courses in chennai
Selenium Interview Questions and Answers

for IT the said...

Great Article
Blockchain Computer Science Projects
Final Year Project Domains for CSE

Raj said...

Thanks for Sharing!!
Java Training in Chennai
Python Training in Chennai
IOT Training in Chennai
Selenium Training in Chennai
Data Science Training in Chennai
FSD Training in Chennai
MEAN Stack Training in Chennai

Anbarasan14 said...

Thanks for sharing this information. This is really useful. Keep doing more.

Franchise Business In India
Education Franchise
Computer Education Franchise
Education Franchise India
Computer Education Franchise In India
Language Education Franchise
Spoken English Franchise In India

sandhiya arav said...

I am really enjoying reading your well written articles.
It looks like you spend a lot of effort and time on your blog.Keep Doing.
data analytics training in bangalore
Data Science Courses in Bangalore
Best Data Science Courses in Bangalore
data analytics courses in bangalore
big data analytics training in bangalore

Vicky Ram said...

nice post thanks for sharing


Sadhana Rathore said...

Informative post, thanks for taking time to share this page.
AWS Training in Chennai
AWS course in Chennai
AWS Certification in Chennai
DevOps Training in Chennai
DevOps course in Chennai
R Programming Training in Chennai

velraj said...

the article is very useful for me.thanks for this session.i got lot of things after i read this.
ccna Training institute in Chennai
ccna institute in Chennai
Python Classes in Chennai
Python Training Institute in Chennai
Data Analytics Courses in Chennai
Big Data Analytics Courses in Chennai

vijaykumar said...

The article is very useful for me and also more knowledge gain from this article.thanks to author for useful information.
Python Training in Chennai
Python course in Chennai
ccna Training in Chennai
ccna course in Chennai
R Training in Chennai
Python Training in Anna Nagar
Python course in T Nagar

alex said...

I play a lot and win, what are you capable of? best online casino games with us Play, win or be defeated.

jaya devan said...

Very Clear Explanation. Thank you to share this
Data Science Course In Chennai
Data Science Course Training
Data Science Training in Chennai
Data Science Certification Course

Joe said...

Thanks for sharing this wonderful article. Your article is very interesting to read. Looking forward to read ur future post.
Node JS Training in Chennai
Node JS Course in Chennai
Node JS Course
Node JS Training in T Nagar
Photoshop Classes in Chennai
Photoshop Course in Chennai
Hadoop Admin Training in Chennai
Hadoop Administration Training in Chennai

Ada Smith said...

what about your finances not bad but everything is just gorgeous Do you want to share with you how to make money sitting on the Internet come here crackajack video poker machines I wish you good luck earning head

Belago said...

Знаю где продается отличная rgb лента, покупал у них недавно, нареканий нет, компания называется Ekodio

priya said...

Nice post. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated posts…
Microsoft Azure online training
Selenium online training
Java online training
Java Script online training
Share Point online training

jenifer irene said...

Such an excellent and interesting blog, do post like this more with more information, This was very useful, Thank you.
Aviation Academy in Chennai
Air hostess training in Chennai
Airport management courses in Chennai
Ground staff training in Chennai

tamizh said...

Thanks for the informative article. This is one of the best resources I have found in quite some time. Nicely written and great info. I really cannot thank you enough for sharing.
devops online training

aws online training

data science with python online training

data science online training

rpa online training

janakikrishnan said...

I am inspired by this blog that a lot of information is shared and thank you for it.
Computer Education Franchise in India
Franchise in Education Sector
Franchise Opportunities in India with Low Investment
Franchise Business in India
Franchise in India with Low Investment
Top 10 Franchise Business in India

Kayal m said...

It's excellent work! The admin written style is a very superb and very likeable post. Well done and Thank you for giving the quality post.
Spark Training in Chennai
Spark Training
Excel Training in Chennai
Corporate Training in Chennai
Linux Training in Chennai
Pega Training in Chennai
Tableau Training in Chennai
Power BI Training in Chennai
Social Media Marketing Courses in Chennai
Spark Training Fees in Chennai

htop said...

thank you so much for sharing to information
best hadoop training in chennai
best hadoop training in omr
best java training in chennai
best python training in chennai
selenium training in chennai
selenium training in omr
best python training in sholinganallur

Priyanka said...

Attend The Python Training in Bangalore From ExcelR. Practical Python Training in Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python Training in Bangalore.

cynthiawilliams said...

I feel happy to see your webpage and looking forward for more updates.
Blue Prism Training in Chennai
Blue Prism Training Institute in Chennai
RPA Training in Chennai
RPA course in Chennai
RPA Training Institute in Chennai
UiPath Training in Chennai
RPA Training in Tambaram
RPA Training in Anna Nagar

Aditi Ray said...

Home Mart is a site about Home Improvement, Furniture, Home Appliances and many more.
Check out the best
home office desks nz
coffee table nz

Priyanka said...

Attend The Digital Marketing courses in bangalore From ExcelR. Practical Digital Marketing courses in bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Digital Marketing courses in bangalore.
Digital Marketing Courses in Bangalore

Sadhana Rathore said...

Fabulous post admin, it was too good and helpful. Waiting for more updates.
AngularJS Training in Chennai
AngularJS Training institute in Chennai
Angular 7 Training in Chennai
Angular 4 Training in Chennai
ccna Training in Chennai
ReactJS Training in Chennai
PHP Training in Chennai
Tally course in Chennai
ui ux design course in Chennai
AngularJS Training in Velachery

saketh said...

Easily, the article is actually the best topic on this registry related issue. I fit in with your Python training in pune conclusions and will eagerly look forward to your next updates.

Raga Designers said...

I have read your excellent post. Thanks for sharing

aws training in chennai
big data training in chennai
iot training in chennai
data science training in chennai
blockchain training in chennai
rpa training in chennai
security testing training in chennai

iictchennai said...

Great Post with lots of useful informations. Excellent blog very much interesting...
SAP Training in Chennai | AWS Training in Chennai | SAP Training | AWS Training

Unknown said...

Good job & thank you very much for the new information, i learned something new. Very well written. It was sooo good to read and usefull to improve knowledge. Who want to learn this information most helpful. One who wanted to learn this technology IT employees will always suggest you take data science course training bangalore. Because data science course in Bangalore is one of the best that one can do while choosing the course.

SkolarSolutions said...

Thank you for sharing wonderful post. Looking more informative.
Mbbs in Russia
Mbbs in UK
Mbbs in Malaysia

Priyanka said...

Attend The Data Analytics Course in Bangalore with Placement From ExcelR. Practical Data Analytics Course in Bangalore with Placement Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Course in Bangalore with Placement.
ExcelR Data Analytics Course in Bangalore with Placement

Pallavi said...

I learned World's Trending Technology from certified experts for free of cost. I Got a job in decent Top MNC Company with handsome 14 LPA salary, I

have learned the World's Trending Technology from python training in btm experts who know advanced concepts which can help to solve any type of Real-time issues in the field of Python. Really worth trying

ExcelR Solutions said...

The article is very interesting, it helps me and can be used for reference.Hopefully successful admin always. Keep good work!!Machine Learning Course Bangalore

Tanika Co Valda said...

Great Article
Final Year Projects Blockchain Domain for CSE

JavaScript Training in Chennai

Project Centers in Chennai

JavaScript Training in Chennai

Vijiaajith said...


Vijiaajith said...

Keep posting





IT said...

As I read the blog I felt a tug on the heartstrings. it exhibits how much effort has been put into this.
Final Year Project Domains for CSE

Spring Training in Chennai

Project Centers in Chennai for CSE

Spring Framework Corporate TRaining

Blockchain learning path for Enterprise Software colleagues

I wrote this post to document my learning path of blockchain concepts and Ethereum technologies while keeping my “new to blockchain” collea...