如何才能成为年薪百万的区块链技术大牛?

294 阅读9分钟
2018年的那股区块链热潮也着实让区块链开发人员火了一把,他们(她们)拿着几十万,甚至是上百万的年薪,头顶着耀眼的光环,成了大家心目中的男神。

  你有没有想过,要成为一名内行的区块链开发者?其实区块链开发并没有想象中的那么遥不可及。今天就跟着营长一步一步,系统地了解从事区块链开发需要掌握哪些知识,以及如何进行实操吧!

  首先声明,成为一个真正的区块链开发者,需要足够的决心。你需要花费大把的时间学习区块链技术。其次,欲速则不达,千万不要急于求成!

  STEP 1:熟悉、理解基本术语

  不管是区块链技术,还是任何其他新的革命性的技术,掌握这些技术首先需要跨越的就是这些技术所包含的基础概念。如果你连基本术语都不了解,还谈何进一步的使用和开发?需要理解的基本概念如下。

区块链:是由很多区块组成的链,每个区块都由数值数据组成,且没有任何中央监督。从密码学上来讲,区块链是安全且不可篡改的。

去中心化:由于区块链并不接受任何中央机构监督,因此,区块链是一种去中心化的技术。

共识机制:去中心化网络在某些事项上需要达成共识的机制。

矿工:使用计算力挖掘区块链区块的用户。

  不过,你也不要以为知道这几个术语就能轻松进阶成为一名开发者了。这还远远不够,你还得自行查阅更多更全面的区块链词汇表,你会发现还有更多你需要了解的术语,例如共识、DAO、ASIC、EVM等。

  不要轻视这些基本术语,如果你不下功夫,在后续的学习中就会特别容易迷失方向。

  大致了解了区块链的基本术语,下一步就可以学习更多关于区块链技术方面的知识了。

  如果对区块链上金融方面的应用程序感兴趣的话,建议你学习下“加密经济学”。在现实中,大部分开发人员通常都精通于技术中的“加密”部分,但是“经济”方面的知识真的很匮乏。

  这种知识上的差异在你研究ICO时就凸显了,很多ICO项目失败的原因,就在于他们对于经济学知识的欠缺。因此,了解一些经济学知识对掌握区块链技术大有裨益。

  除此之外,在进行系统的学习区块链技术之前,我还建议你最好研究下比特币的工作原理。比特币是最早、应用最广泛、最棒的区块链技术应用之一。当你了解比特币以后,你就明白,比特币之所以会成为区块链技术的经典,究其原因就是比特币的影响力之深远。

  那么,应该如何全面的了解比特币呢?中本聪的比特币白皮书是你的最佳选择:https://bitcoin.org/bitcoin.pdf

  总结一下就是,在开始区块链技术开发之前,你需要先理解以下知识:

熟悉区块链各类术语和词汇;

阅读更多区块链技术方面的文章;

阅读比特币白皮书。

  STEP 2:了解加密货币的交易过程

  你可以问问身边的人,很多自称‘区块链开发者’的人根本没有任何现实世界的加密货币买卖经验。试想一下,如果你都没有使用过任何一个加密平台,又谈何基于这个平台做进一步的创新和改进呢?

  所以,从现在开始,你需要熟悉这些平台。那么,应该从何下手呢?

  首先,你可以登录Coinbase或者任何一个加密货币平台,使用一个基本的在线钱包,买入一些加密货币。你不需要考虑是不是要创建一个高回报率的投资组合,因为你不是来做风险投资的,而是来了解加密货币的买卖过程,你只需要拿出一点钱买几个加密货币体验一下即可。

  在线钱包是所有加密钱包中最简单的一种,并且创建方式非常简单,因为你可以在任何交易所创建。另外,只要有网络,你就可以在世界上任何一个地方访问并使用你的在线钱包。话虽如此,但是,在线钱包有一个很大的缺陷:你的私钥保是存在另外一台服务器上,也就是说,这就相当于你把密钥直接暴露在黑客面前了。因此,千万不要在在线钱包中存大量的资金,这真的相当危险,最后只能是哑巴吃黄连,有苦说不出。

  说点题外话,如果你想创建一个高收益率的投资组合,一定要学会如何使用冷钱包存储你的资产,冷钱包相对来说就安全很多。

  STEP 3:编写代码

  了解了加密货币交易过程之后,我们就可以进行编码,创建一个真正的区块链了。但是,你要做好准备,因为你将会面临巨大的挑战——创建和维护一个公有区块链相当不容易,原因如下。

  挑战1:安全性的挑战

  区块链是一个壁垒。首先,区块链技术的代码是完全开源的,任何人都可以查阅代码,检查错误和漏洞。不像其他开源代码那样,区块链代码漏洞一旦被发现,它的负面影响将会非常大,因为这里边都是钱啊!任何程序员都可以黑进系统,这样数百万甚至数千万美元的资金就会面临巨大的风险。因此,安全性让区块链面临着巨大的挑战。

  挑战2:资源管理方面的挑战

  作为一个与网络有密切联系的技术,跟上网络的步伐非常重要。落后太多,或者跟不上网络需求,这可就摊上大事了。另外,你还得能很好的处理远程和本地请求。

  挑战3:性能方面的挑战

  区块链必须拥有高效处理事务的能力,但事实上,有些任务是可以在区块链上并行实现的,而有些则不能。

  区块链“可并行化”任务最好的案例就是数字签名验证。你只需要拥有密钥、交易和签名,就可以以并行的方式进行验证。

  然而,并不是所有的功能都要并行实现,这得考虑事务本身的情况。有些事务并不能并行执行,而是一次只能执行一个事务,以避免出现“双重消费”的失误。另外,有些编程语言比较擅长于并行操作,但是有些则不适用。

  挑战4:隔离性

  什么是确定性行为?如果a+b=c,那么无论在什么情况下,a+b总是等于c,这就是所谓的确定性行为。

  哈希函数就是一个确定性行为,这就意味着a的哈希值总是H(a)。

  我们知道,在区块链的开发过程中,所有的事务和操作都必须是确定性的,你不能让一个事务今天以这种方式运行,明天又以另外一种方式运行。同理,你也不能再两台不同的服务器上运行两种不同的智能合约。

  决绝这一问题的唯一办法就是隔离性。也就是说,将智能合约和交易完全隔离开来。这样,有些编程语言就可以满足这些要求了。

  如果你想要成为一名合格的区块链开发者,那么你一定要掌握一些C++和JavaScript的基本知识。

  虽然C++看起来比较过时,很多开发人员都不再使用了,但是对于以上的这些要求,C++完全满足,是一个非常完美的编程语言。并且,你要知道,大名鼎鼎的中本聪就是用C++编写的比特币源代码。

  和HTML、CSS一样,JavaScript也是网络开发的三大核心技术之一,通常用于创建高度交互的的网页。

  创建一个区块

  下面,我们就来看看如何使用JavaScript创建一个简易区块链吧!在这里,我们将它称为‘BlockGeeksCoin’。

  一个简单的区块应该由什么组成?通常来说,每个区块所包含的信息如下:

索引:区块的索引号。

时间戳:创建区块所用的时间。

数据:区块中的数据。

前项哈希值:前一个区块的哈希值。

  在创建BlockGeeksCoin之前,我们需要了解程序中使用的这些术语:

this:函数内部调用“this”关键字,就可以访问调用特定函数的特定对象的内部值。

构造器(Constructor()):构造器是一个特殊的函数,也叫构造函数,可以帮助开发人员创建和初始化类中的对象,一个类只能有一个构造函数。

  OK,准备工作完成,让我们开始创建一个简单的区块吧!代码如下:

  我们来分析下上述代码。在代码的第1行调用了一个 crypto-js库,因为在JavaScript中,不能直接使用SHA256哈希函数。

  接下来第4行代码,我们在类中使用了一个构造函数Constructor,来调用某些对象的值。

  最后,我们使用了calculateHash()函数。在每个区块中,我们获取到所有的内容,并对其进行哈希处理,得到特定区块的哈希值,在这里,我们使用JSON.stringify()函数将区块中的数据转换为字符串,以便对其进行哈希处理。

  现在,我们就可以把这些区块连接起来,形成区块链了。