開源日報 每天推薦一個 GitHub 優質開源項目和一篇精選英文科技或編程文章原文,堅持閱讀《開源日報》,保持每日學習的好習慣。
今日推薦開源項目:《點子王 app-ideas》
今日推薦英文原文:《What it takes to become a blockchain developer》

今日推薦開源項目:《點子王 app-ideas》傳送門:GitHub鏈接
推薦理由:想要寫點東西當作練習卻不知道寫什麼?這個項目可以很好的解決這個問題——它是一個收集各種應用 idea 的合集,可以很好的用來訓練編碼能力和嘗試學到的新技術。如果你也知道一些符合這些條件的應用 idea 的話,也可以通過 issue 貢獻出去,或者貢獻你根據這些 idea 完成的項目,縱使是相同的項目,不同的人也可能做出完全不同的效果……有些詫異會讓其他人大吃一驚。
今日推薦英文原文:《What it takes to become a blockchain developer》作者:Joseph Mugo
原文鏈接:https://opensource.com/article/19/4/blockchain-career-developer
推薦理由:轉職為稀有的區塊鏈開發者需要的一些條件

What it takes to become a blockchain developer

The past decade has been an interesting time for the development of decentralized technologies. Before 2009, the progress was slow and without any clear direction until Satoshi Nakamoto created and deployed Bitcoin. That brought blockchain, the record-keeping technology behind Bitcoin, into the limelight. Since then, we've seen blockchain revolutionize various concepts that we used to take for granted, such as monitoring supply chains, creating digital identities, tracking jewelry, and managing shipping systems. Companies such as IBM and Samsung are at the forefront of blockchain as the underlying infrastructure for the next wave of tech innovation. There is no doubt that blockchain's role will grow in the years to come. Thus, it's no surprise that there's a high demand for blockchain developers. LinkedIn put "blockchain developers" at the top of its 2018 emerging jobs report with an expected 33-fold growth. The freelancing site Upwork also released a report showing that blockchain was one of the fastest growing skills out of more than 5,000 in its index. Describing the internet in 2003, Jeff Bezos said, "we are at the 1908 Hurley washing machine stage." The same can be said about blockchain today. The industry is busy building its foundation. If you've been considering a career as a blockchain developer, the time to get your foot in the door is now. However, you may not know where to start. It can be frustrating to go through countless blog posts and white papers or messy Slack channels when trying to find your footing. This article is a report on what I learned when contemplating whether I should become a blockchain developer. I'll approach it from the basics, with resources for each topic you need to master to be industry-ready.

Technical fundamentals

Although you're won't be expected to build a blockchain from scratch, you need to be skilled enough to handle the duties of blockchain development. A bachelor's degree in computer science or information security is required. You also need to have some fundamentals in data structures, cryptography, and networking and distributed systems.

Data structures

The complexity of blockchain requires a solid understanding of data structures. At the core, a distributed ledger is like a network of replicated databases, only it stores information in blocks rather than tables. The blocks are also cryptographically secured to ensure their integrity every time a block is added. For this reason, you have to know how common data structures, such as binary search trees, hash maps, graphs, and linked lists, work. It's even better if you can build them from scratch. This GitHub repository contains all information newbies need to learn data structures and algorithms. Common languages such as Python, Java, Scala, C, C-Sharp, and C++ are featured.

Cryptography

Cryptography is the foundation of blockchain; it is what makes cryptocurrencies work. The Bitcoin blockchain employs public-key cryptography to create digital signatures and hash functions. You might be discouraged if you don't have a strong math background, but Stanford offers a free course that's perfect for newbies. You'll learn about authenticated encryption, message integrity, and block ciphers. You should also study RSA, which doesn't require a strong background in mathematics, and look at ECDSA (elliptic curve cryptography). And don't forget cryptographic hash functions. They are the equations that enable most forms of encryptions on the internet. They keep payments secure on e-commerce sites and are the core mechanism behind the HTTPS protocol. There's extensive use of cryptographic hash functions in blockchain.

Networking and distributed systems

Build a good foundation in understanding how distributed ledgers work. Also understand how peer-to-peer networks work, which translates to a good foundation in computer networks, from networking topologies to routing. In blockchain, the processing power is harnessed from connected computers. For seamless recording and interchange of information between these devices, you need to understand about Byzantine fault-tolerant consensus, which is a key security feature in blockchain. You don't need to know everything; an understanding of how distributed systems work is good enough. Stanford has a free, self-paced course on computer networking if you need to start from scratch. You can also consult this list of awesome material on distributed systems.

Cryptonomics

We've covered some of the most important technical bits. It's time to talk about the economics of this industry. Although cryptocurrencies don't have central banks to monitor the money supply or keep crypto companies in check, it's essential to understand the economic structures woven around them. You'll need to understand game theory, the ideal mathematical framework for modeling scenarios in which conflicts of interest exist among involved parties. Take a look at Michael Karnjanaprakorn's Beginner's Guide to Game Theory. It's lucid and well explained. You also need to understand what affects currency valuation and the various monetary policies that affect cryptocurrencies. Here are some books you can refer to:
  • The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology by William Mougayar
  • Blockchain: Blueprint for the New Economy by Melanie Swan
  • Blockchain: The Blockchain For Beginners Guide to Blockchain Technology and Leveraging Blockchain Programming by Josh Thompsons
Depending on how skilled you are, you won't need to go through all those materials. But once you're done, you'll understand the fundamentals of blockchain. Then you can dive into the good stuff.

Smart contracts

A smart contract is a program that runs on the blockchain once a transaction is complete to enhance blockchain's capabilities. Unlike traditional judicial systems, smart contracts are enforced automatically and impartially. There are also no middlemen, so you don't need a lawyer to oversee a transaction. As smart contracts get more complex, they become harder to secure. You need to be aware of every possible way a smart contract can be executed and ensure that it does what is expected. At the moment, not many developers can properly optimize and audit smart contracts.

Decentralized applications

Decentralized applications (DApps) are software built on blockchains. As a blockchain developer, there are several platforms where you can build a DApp. Here are some of them: Ethereum Ethereum is Vitalik Buterin's brainchild. It went live in 2015 and is one of the most popular development platforms. Ether is the cryptocurrency that fuels the Ethereum. It has its own language called Solidity, which is similar to C++ and JavaScript. If you've got any experience with either, you'll pick it up easily. One thing that makes Solidity unique is that it is smart-contract oriented.

NEO

Originally known as Antshares, NEO was founded by Erik Zhang and Da Hongfei in 2014. It became NEO in 2017. Unlike Ethereum, it's not limited to one language. You can use different programming languages to build your DApps on NEO, including C# and Java. Experienced users can easily start building DApps on NEO. It's focused on providing platforms for future digital businesses. Consider NEO if you have applications that will need to process lots of transactions per second. However, it works closely with the Chinese government and follows Chinese business regulations.

EOS

EOS blockchain aims to be a decentralized operating system that can support industrial-scale applications. It's basically like Ethereum, but with faster transaction speeds and more scalable.

Hyperledger

Hyperledger is an open source collaborative platform that was created to develop cross-industry blockchain technologies. The Linux Foundation hosts Hyperledger as a hub for open industrial blockchain development.

Learning resources

Here are some courses and other resources that'll help make you an industry-ready blockchain developer.
  • The University of Buffalo and The State University of New York have a blockchain specialization course that also teaches smart contracts. You can complete it in two months if you put in 10 hours per week. You'll learn about designing and implementing smart contracts and various methods for developing decentralized applications on blockchain.
  • DApps for Beginners offers tutorials and other information to get you started on creating decentralized apps on the Ethereum blockchain. You'll need to know JavaScript, and knowledge of C++ is an added advantage.
  • IBM also offers Blockchain for Developers, where you'll work with IBM's private blockchain and build smart contracts using the Hyperledger Fabric.
  • For $3,500 you can enroll in MIT's online Blockchain Technologies: Business Innovation and Application program, which examines blockchain from an economic perspective. You need deep pockets for this one; it's meant for executives who want to know how blockchain can be used in their organizations.
  • If you're willing to commit 10 hours per week, Udacity's Blockchain Developer Nanodegree can prepare you to become an industry-ready blockchain developer in six months. Before enrolling, you should have some experience in object-oriented programming. You should also have developed the frontend and backend of a web application with JavaScript. And you're required to have used a remote API to create and consume data. You'll work with Bitcoin and Ethereum protocols to build projects for real-world applications.
  • If you need to shore up your foundations, you may be interested in the Open Source Society University's wildly popular and free computer science curriculum.
  • You can read a variety of articles about blockchain in open source on Opensource.com.

Types of blockchain development

What does a blockchain developer really do? It doesn't involve building a blockchain from scratch. Depending on the organization you work for, here are some of the categories that blockchain developers fall under. Backend developers In this case, the developer is responsible for:
  • Designing and developing APIs for blockchain integration
  • Doing performance testing and deployment
  • Gathering requirements and working side-by-side with other developers and designers to design software
  • Providing technical support

Blockchain-specific

Blockchain developers and project managers fall under this category. Their main roles include:
  • Developing and maintaining decentralized applications
  • Supervising and planning blockchain projects
  • Advising companies on how to structure initial coin offerings (ICOs)
  • Understanding what a company needs and creating apps that address those needs
  • For project managers, organizing training for employees

Smart-contract engineers

This type of developer is required to know a smart-contract language like Solidity, Python, or Go. Their main roles include:
  • Auditing and developing smart contracts
  • Meeting with users and buyers
  • Understanding business flow and security to ensure there are no loopholes in smart contracts
  • Doing end-to-end business process testing

The state of the industry

There's a wide base of knowledge to help you become a blockchain developer. If you're interested in joining the field, it's an opportunity for you to make a difference by pioneering the next wave of tech innovations. It pays very well and is in high demand. There's also a wide community you can join to help you gain entry as an actual developer, including Ethereum Stack Exchange and meetup events around the world. The banking sector, the insurance industry, governments, and retail industries are some of the sectors where blockchain developers can work. If you're willing to work for it, being a blockchain developer is an excellent career choice. Currently, the need outpaces available talent by far.
下載開源日報APP:https://openingsource.org/2579/
加入我們:https://openingsource.org/about/join/
關注我們:https://openingsource.org/about/love/