区块链入门指南(全程干货)

2018-2-7 btc211com 入门

加密货币,ICO,神秘的互联网金融 - 这一切都是令人兴奋的,而你,想要加入这场浪潮。从哪里开始?

区块链发展的权威指南(全程干货)

我很高兴你对这个空间感到兴奋。我也是。但是你可能会发现目前还不清楚从哪里开始。区块链正在以极快的速度进化,但是目前还没有标准的知识来学习这些东西。(注:文中视频需要用梯子,观看前请自行搭建。)

自从我离开Airbnb去全职工作在区块链上以后,很多人向我询问,询问如何进入区块链空间。考虑一下如何进入区块链工程的权威性(而且是不可避免的)的指南。

本指南将分为十部分:

  1. 为什么要学习区块链发展?
  2. 先决条件
  3. 比特币的理论基础
  4. 建立一个区块链自己
  5. 以太坊和智能合约编程
  6. 智能合约安全
  7. 脱下训练轮
  8. 建立你自己的项目
  9. 浏览区块链社区
  10. 得到一份工作

为什么要学习区块链发展?

在回答这个问题之前,让我先注意一下:区块链是一个大量高估的空间。这些价格是不可持续的,肯定会出现崩溃。这一切都发生过,并可能再次发生。但是如果你长期在这个领域工作,你会学会摆脱价格。用Emin Gun Sirer的话来说 - 价格是加密货币中最不有趣的部分。这些是非常重要的技术,他们将不可改变地改变世界。

如果你不确定,我不能告诉你是否应该跳进去。但是我可以告诉你有五个理由说服我跳跃:

  1. 现在还早。

比特币是在10年前发明的,但是在过去的几年中,创新的速度只是发烧,特别是2015年以太坊的推出。这个领域的大多数新公司和创意都是建立在以太坊,这仍然是非常不成熟的。

即使你现在开始,你也可以在几年内成为世界级的专家。大多数人只是没有这么做,追赶起来也不难。从现在开始,将类似于21世纪后期开始研究这个主题的深度学习专家。

2. 这个空间没有强大的人才漏斗呢。

大多数最优秀和最聪明的学生都专注于机器学习,网络编程或游戏开发。当然,区块链在公共话语中变得越来越性感,但它们仍然是一个奇怪而颠覆性的话题,在这个话题上你的职业生涯将会发生。

早期的时候,区块链完全是cypherpunks,偏执狂和陌生人的境界。这只是最近才开始改变。只是作为一个好奇开放的开发者,你会为这个领域带来很多价值。

来自“简明英汉词典”大部分创新都是在学术界之外进行的

据我所知,中本聪不是一名学者。没有大学或机构提供连贯的区块链集中。这里的创新大部分是由爱好者,企业家和独立研究人员领导的。几乎所有你需要知道的东西都在白皮书,博客文章,公共Slack频道和开源软件中。所需要的就是卷起袖子,跳入战场。

4.对人才的需求远远超过供给。

在这个领域没有足够的开发人员,他们不能很快得到训练。每个人都在竞相聘请区块链人才,而项目正在感受人才的紧缩。许多最好的公司由于机会太多而无法足够支付。如果你掌握了一些技巧,就很容易找到工作。

加密货币真的很酷。

还有什么地方可以制作像密码保护,分散投资的科幻资料?现在是狂野的西部 - 这带来了好的和坏的。空间可以使用更多的透明度,监管最终会到来。但毫无疑问,加密货币是您现在可以开展工作的最具创新性的领域之一。

海军Ravikant 在最近的一次采访中说成功的关键是给社会一些它想要的东西,但是不知道如何独立。你不能去上学,如果可能的话,世界将会有稳定的供应。

所以建立一个没有人知道如何建立的东西。现在,区块链是全新的,还有很多东西需要弄清楚。如果你成功地建立了分散技术的未来,世界将会给你很大的回报。

所以说你想扔你的帽子。你进入戒指之前需要知道些什么?

先决条件

我建议在进一步下单前加强对基本面的理解。区块链建立在数十年的计算机科学,密码学和经济学研究之上。中本聪是一个叛徒,但他也很了解他之前的历史。为了理解区块链的工作原理,您需要了解它们的构建块 - 区块链之前发生了什么,以及为什么这些东西不起作用。

按照重要性,这里有一些熟悉的先决条件。

请注意,这些链接只是一个起点,您可能想要深入探讨这些主题。

计算机科学

数据结构

您需要熟悉主要数据结构的特征和复杂性保证:链接列表二叉查找树哈希映射(特别是在区块链中突出显示的有向无环图)。它有助于从头开始构建它们,以便更好地了解它们的工作方式和属性。

加密

密码学是加密货币的同名和基础。所有加密货币都使用公钥/私钥加密作为身份和身份验证的基础。我建议学习RSA(这很容易学习,不需要非常强大的数学背景),然后看看ECDSA椭圆曲线密码术需要更多的抽象数学 - 理解所有细节并不重要,但要知道这是大多数加密货币(包括比特币)中使用的密码术。

另一个重要的密码原语是密码哈希函数这些可以用来构建承诺计划,并且是Merkle树的构建块Merkle树使Merkle证明成为区块链用于可扩展性的关键优化之一。

分布式系统

在分布式系统上有几本很好的教科书,但是它是一个广泛和困难的学习领域。分布式系统对区块链的推理是绝对必要的,所以在开始区块链编程之前,你必须建立一个基础。

一旦你不再住在一台机器上,你必须开始推理一致性共识你会想知道线性化最终一致性模型之间的区别您还需要了解容错一致性算法(如PaxosRAFT)的保证了解在分布式系统中推理时间的困难欣赏安全与生存之间的权衡

在这样的背景下,您将能够理解拜占庭容错共识(即公共区块链的主要安全要求)的困难您将需要了解PBFT,这是第一个提供拜占庭式容错共识的可扩展算法之一。PBFT是许多非证明区块链共识算法的基础。再一次,你不需要了解PBFT是如何以及为什么是正确的细节,而是得到总体思路和安全保证。

理解分布式数据库传统方法(其核心,区块链毕竟是数据库)也是非常有用的了解分片(例如通过一致哈希),领导者跟随者复制基于法定人数的提交查看分布式哈希表(DHT),如ChordKademlia

联网

区块链的分散主要来源于其对等网络拓扑结构。因此,区块链是过去的P2P网络的直接后代。

要理解区块链通信模型,您需要了解计算机网络的基本知识:这意味着了解TCP vs UDP数据包模型,IP数据包的外观以及Internet路由的工作原理。

公共区块链倾向于通过使用泛滥的八卦协议传播消息了解Napster到GnutellaBitTorrentTorP2P网络设计的历史是有益的区块链有自己的位置,但他们吸取了这些网络的教训,以及它们是如何设计的。

经济学

加密货币本质上是多学科的 - 这是什么使他们如此迷人和激进的一部分。除了计算机科学,密码学和网络之外,它们也与经济学深度交织在一起。加密货币可以通过其经济结构获得许多安全属性,这通常被称为隐密经济学因此,经济学对理解加密货币至关重要。

博弈论

扮演加密货币的经济学中最重要的分支是博弈论,即多个代理人之间的收益和激励的研究。你不需要去非常深的位置,但你需要了解博弈论分析的基本工具,以及如何使用它们来分析一次性和重复的游戏奖励。

在您的曲目中,两个关键概念应该是纳什均衡谢林点,因为它们在隐含经济分析中占有突出的地位。

宏观经济学

加密货币不仅仅是协议,它们也是金钱的形式。因此,他们回应宏观经济法(如果他们可以被称为法律)。加密货币受到不同货币政策的影响,并对通货膨胀通货紧缩作出可预测的回应你应该了解这些过程以及它们对花费,储蓄等的影响

另一个有价值的经济概念是货币流通速度,特别是与货币估值相对应。

个体经济学

加密货币也与市场深层交织,这就需要了解微观经济学你需要一个强大的供求曲线直觉你应该能够推理竞争和机会成本(他们将经常应用于加密货币挖掘)。对于许多硬币分配和隐含经济系统,拍卖理论突出显着。

我希望你已经熟悉了其中的一些话题。如果你是,随时浏览或完全跳过它们。

好吧,现在你已经完成了基本面的工作(也许你跳过了一堆,谁在计算?),所以现在你已经掌握了你的理论,让我们开始区块链开发。

比特币的理论基础

2008年10月,中本聪(Satoshi Nakamoto)发表了一篇白皮书,其中描述了分散数字货币的协议。他把这个协议称为比特币。

在您了解区块链背后的重要思想之前,您必须从比特币开始,掌握Satoshi最初的洞察力。

首先,我建议建立你的直觉关于工作证明和分岔选择规则(也被称为Nakamoto共识)。从这里开始:

blockchain入门视频
我建议你观看一个以上的视频解说,让这个想法变成你的脑海:

加密货币概念

 现在您已经建立了自己的直觉,本文将对比特币的关键组成部分进行更深入的端到端的阐述。

建立一个区块链自己

现在您已经拥有了高层次的直觉,现在是时候构建您自己的基于工作区块链的证明。别担心,这比听起来容易。这里有一些很好的资源。

首先,我有一个视频讲座,在那里我将讲述如何在Ruby中做这个事情(即使你不是Ruby程序员,我也建议你看看):

建立一个自己的区块链

来源和幻灯片在这里。


还有其他的区块链实现,你可以找到,用各种编程语言编写。继续建立你自己的,并满足你自己,这是最主要的功能。

一旦你做到这一点,你应该很好地掌握如何在区块链(比特币)上面实现一个简单的支付应用程序。你现在也应该有足够的背景,你应该能够阅读和理解原来的比特币白皮书

要了解比特币挖掘的经济学和机制,我建议观看比特币和加密货币普林斯顿课程的比特币挖掘讲座

如果你已经得到这么多,你应该了解比特币,以便通过一个比特币块头,并了解每个组件的含义。您还应该可以玩一个比特币区块浏览器,并浏览原始比特币交易。

现在是研究比特币和加密货币历史的好时机。由加州大学伯克利分校提供的下面的视频给出了一个很好的概述。

加州大学伯克利分校加密货币研究视频

一些额外的信贷资源:


以太坊和智能合约编程

现在,您已经构建了区块链,了解比特币的动态,现在是研究以太坊的时候了。

您了解区块链和工作证明如何在对等网络内实现分布式拜占庭式容错共识。但支付网络只是一个应用程序,你可以在这样的区块链上运行。在2013年,以太坊的创始人Vitalik Buterin问道:如果您使用区块链实施分散式计算机,该怎么办?

ethereum以太坊

在以太坊,你付矿工在这个分布式的虚拟机上执行你的程序。这意味着您可以使用图灵完整编程语言(不同于比特币脚本)执行任意计算。显然,这包括与支付相关的应用程序,所以以太坊使比特币的功能超越,并创造了复兴的创新。

这将我们带到了智能合约 - 在这样的虚拟机上运行的程序的名称。智能合约可以根据程序的执行直接与区块链的数字货币进行交互。换句话说,您可以创建自动执行的金融合同。这是一个疯狂的想法,一旦你接受这个编程模型,你可以做的各种科幻未来的东西。

以太坊促成了ICO和开发商在区块链上建立的浪潮。它是比特币背后的第二大加密货币,拥有超过10倍的下一个最受欢迎平台的开发者,它拥有最强大的开发团队,最成熟的工具,以及大多数ICO和项目。它也有最多的行业支持,这有很长的路要走。很可能,如果你正在做区块链开发,你将会为Ethereum智能合约编写代码。(即使你不这样做,了解这个领域发生了什么也是至关重要的。)

首先,更详细的以太坊高层解释:

以太坊高层解释V神

以太坊背后的思想也催生了一个隐性经济学的创新浪潮你应该将自己的脚趾头浸入DAO的思想,以及所有他们暗示的科幻发烧的梦想。


好吧,这足够的幻想,让我们深入技术。

下面是在以太坊黄皮书和其内部的一个很好的概述,通过Preethi Kasireddy。以太坊使用账户模型而不是比特币的UTXO模型 - 您很快就会明白为什么这使得编写智能合约更容易。

与任何技术一样,了解以太坊的最好方法是建立一些小型项目。

以太坊的主要编程语言是Solidity,它是一种静态类型的JavaScript-esque语言。这是一种有很多疣的语言,以及许多可疑的设计选择。Viper这样的更强大的语言可以在生产就绪之后取代它,但是现在Solidity是智能合约编程的通用语言。这基本上是以太坊的JavaScript,所以你需要学习它(和它的陷阱)。

为了让你第一次接触到Solidity开发,我建议通过所有的CryptoZombies教程这是一个令人愉快和高品质的Codecademy-esque教程,将教你Solidity编程的基础知识。

现在你已经开始食欲了,是时候自己开发了。

以太坊的“hello world”正在构建一个兼容ERC-20的令牌我推荐这本指南作为第一个教程来引导你完成整个过程。

Remix是一个浏览器中的Solidity编辑器和编译器 - 它基本上是以太坊开发的训练轮,所以我建议您在Remix中练习其余的练习。但也值得设置一个本地区块链,并了解以太坊工具。本教程很好地介绍了一个端到端的区块链堆栈,并解释了这些堆栈。

接下来,我建议建立一个投票系统。我会称之为以太坊的Todo应用程序。卡尔Floersch有一个伟大的教程,他走过了如何建立一个安全的提交显示投票系统。

很好,现在是你的中期考试:建立一个安全的投币游戏,两个玩家可以安全地投注硬币翻转。这次没有教程,自己动手。想想可能的攻击 - 玩家怎么会作弊?你能确保他们真的玩吗?这里有一些提示

智能合约安全

对于区块链开发来说,安全是绝对必要的。智能合约一直困扰着灾难性的黑客攻击,包括DAO hackParity Wallet黑客攻击,以及名为Parity Wallet hack 2(现在拥有自己的T恤衫)。如果你打算编写生产智能合约,你绝对必须阅读所有这三个黑客的分析。

事实是,聪明的合同是非常难以正确的虽然编程工具链会改进以使这些确切的攻击更难,但最终都是由于程序员的错误。智能合约编程也会产生许多微妙的错误,例如先行安全的随机生成

作为一名智能合同开发人员,您必须把安全视为最重要的。在智能合约编程中没有“快速移动和破坏事物”。这意味着,处理的资金流入显著的任何代码,应通过静态分析仪等运行OyenteSecurify,彻底的测试,然后由经验丰富的智能合约核数师审计。您还应该尝试依靠预审的组件,如OpenZeppelin的开源合同

为了加强安全性,我建议您通过OpenZeppelin的Ethernaut进行工作,在这个游戏中您可以找到并攻击智能合约中的漏洞。他们中的许多人会复制对野外发生的智能合约的真正攻击。

Phil Daian还拥有一套出色的合约黑客挑战,叫做Hack This Contract

一旦过去了,我强烈建议阅读由ConsenSys编制的“ 智能合同最佳实践”希望在你的智能合约编程生涯中多次重温这个文档。书目也值得探索安全专家进一步阅读。

脱下训练轮

如果你已经做到了这一点,你现在应该准备好通过Remix,并开始使用严重的Solidity开发堆栈。

大多数开发人员推荐使用VSCode或Atom作为文本编辑器,因为它们具有相当好的Solidity插件。为了与本地区块链进行交互,你需要使用Ganache(以前称为TestRPC),并且你需要为你的(基于JS的)测试使用Truffle框架并配置你的构建管道。

现在是研究IPFS的好时机,您可以以比以太坊区块链更便宜的成本将其用作完全分散的文件存储。以下是创始人Juan Benet的简短说明:

IPFS简介

为了与Ethereum和IPFS完整节点交互Infura是大多数开发人员推荐的。EtherscanETH加油站在以太坊网络上提供有用的实时统计。


完成Web3堆栈设置后,尝试部署一个端到端的Dapp(分散式应用程序)。本教程提供了一个使用Node和Postgres作为后端的完整堆栈概览,本教程将向您展示如何使用IPFS作为持久层来创建完全分散的应用程序。

建立你自己的项目

您现在应该对大部分技术感到满意 - 剩下的就是开始构建东西,并深入区块链社区。

首先,开始建立自己的项目。如果有一些很棒的想法让你兴奋,那就去建立它,然后说服其他人跟你一起攻击!如果您还没有一个想法,或者不舒服,那么有很多高质量的开源项目欢迎捐款。OpenZeppelin可能是启动智能合约的好地方。

更好的是,我建议从找到一个你热衷的开发项目开始。获取他们的Slack或Rocketchat - 开发人员通常很容易访问。告诉他们你想贡献一些小任务(或者在他们的Github上发现未解决的问题)。

请注意,尽管我一直专注于协议和智能合约开发,但区块链公司需要Web开发人员来构建其核心功能。这些角色通常需要与区块链进行交互,所以关于区块链是如何工作的,必须要有一个好的心智模型 - 但是对于区块链初创公司的许多工程师来说,你的大部分工作将是构建一个Python web服务器,或者设计一个React前端,与区块链互动可能只是这项工作的一小部分。您不必专注于智能合约开发 - 实际上,这只是工作区块链的一部分。

除开源贡献之外,还有许多区块链黑客软件不断涌现。大多数项目都有一个免费的公共Slack,你可以加入,还有一个非常活跃的Ethereum的Gitter频道,这里有很多开发者闲逛。当你深入到这个空间时,你最终会发现你的同伴组,不论是在Slack频道,Telegram组,还是Gitter频道。无论在哪里,找到你的人,继续学习。

浏览区块链社区

真正理解区块链世界的最好方法就是沉浸其中。阅读和聆听最聪明的人,尤其是他们过去写过的东西。这一直是我尝试学习一个新领域时的策略,对我来说也是有利可图的。

有很多好的区块链内容,但也有很多废话。这是我推荐的信息饮食。

媒体

我推荐的三个梦幻般的播客是软件工程每日区块链访谈,为许多主题和加密货币提供了良好的技术指导。从那里我建议震中解开  - 你会想要回去听很多旧的情节。另一个有趣的即将到来的技术播客是Conspiratus我建议订阅每个这些。

有几个很好的Youtube频道(尽管Youtube上有很多垃圾)。订阅以太坊基金会并观看Devcon3演示文稿。伯克利的区块链记录了他们的许多讲座,其中大部分都是优秀的技术概述。Decypher Media还发布会谈,白皮书评论和教程。杰克逊·帕尔默(Jackson Palmer)每周都会进行一些综述,这些都是技术层面较差但呈现得非常均匀。

在线阅读

对于实时区块链喋喋不休,它主要住在两个地方:Reddit和Twitter。对于Reddit来说,大多数次级品质都是非常低的质量,并且受噪音的影响。以太坊是一贯质量不错(对于特定的加密货币,还有一些好的分支)。尽管大多数次级债券主要是由投机者主导,并不能很好地利用你的注意力。远离比特币相关的子目录。比特币臭名昭着地是毒性最严重的社区之一,而Reddit只是放大了这一点。

Twitter更是一个混合包。无论好坏,大多数区块链人都生活在Twitter上。首先,区块链Twitter对我来说有点神秘,但最终我开发了一个Twitter区块链人的非正式本体论。根据我的经验,区块链人士有五种类型:建设者,企业家,记者,交易者和“思想领袖”。

避免像“瘟疫”这样的“思想领袖”。企业家可以没事,虽然他们大多是炒作男人或者推特自己的项目。投资者大多在推销价格和炒作项目,所以如果这是你的事情,那就是你的事情。记者倾向于推特当天的主要新闻,我建议你不要离开,除非你需要实时分析,你可能不需要。如果你是一个活跃的交易者,这可能是重要的,但如果你想在区块链上建立,大多数实时的东西是一个分心。

最关注建设者。他们是现在最重要的人,并且正在推动技术的发展。

每个类别的一些代表(如果你想填写你的Twitter的饲料做这些人跟随谁的广度优先搜索):

建设者

企业家

投资者

记者

(你也应该跟着我,虽然我绝对不属于这个名单。)

所有这一切,我建议最大限度地减少你的Twitter和Reddit的曝光。如果你不是一个记者或一个日间交易,可能是,你不需要实时交谈的流水。重要信息会以异步方式向您显示。有几个好消息摘要将总结一天/一周中最重要的消息,你可以在自己的时间消费,而不受关注市场的摆布。

我建议订阅比特币内的最重要的加密新闻片(它不仅仅是比特币)的日常摘要。对于令牌项目,“ 令牌经济”拥有出色的每周报告,而“以太坊”周刊对以太坊生态系统中以开发人员为重点的事件进行了精辟的摘要。

除此之外,您可能不需要监控实时新闻。专注于建设和学习。

你会想要跟随最好的博客。长型内容往往是最好的回报。我建议遵循以下这些:

  • Vitalik Buterin提供卓越的区块链和密码经济分析(阅读所有他以前的博客文章,Vitalik被广泛认为是一代人的思想家)
  • 黑客,由康奈尔大学研究人员进行区块链安全分析
  • 未枚举,尼克·萨博的杰出人物博客有关cryptocurrencies在社会中的角色挑战性和不拘一格的文章
  • 资金来源:马特•莱文(Matt Levine)的布隆伯格银行集团(Bloomberg Syndication),以切入点和深刻分析触及市场,金融和区块链新闻
  • Vlad Zamfir对状态和公共区块链进行了温和谨慎的观察
  • Chris Burniske撰写了一系列关于如何评估加密资产的优秀博客文章
  • 詹姆森·洛普Jameson Lopp)区块链生态系统软件工程师的角度出发,撰写了一系列伟大的技术文章
  • 蒂姆·斯旺森(Tim Swanson)对数字长城的区块链躁狂症进行了清醒而毫不松懈的解构,特别是在企业空间

你也应该阅读我的博客,虽然我再也不属于这个名单。)

书籍和课程

如果你想要一个更加结构化的方法来学习这种材料,那里有一些高质量的书籍和课程(和许多低质量的)。

区块链最好的总体教科书是比特币和Cryptocurrency Technologies(伴随普林斯顿Coursera课程)。在这个领域我唯一推荐的其他书籍是Andreas Antonopoulos 掌握比特币,以及由Ethereum联合创始人Gavin Wood(O'Reilly出版)共同撰写的即将到来的Mastering Ethereum我推荐的一本非技术书是纳撒尼尔·波普尔的“ 数字黄金”几乎所有值得阅读的东西都是在博客上,而不是在书本上 - 这个空间正在飞速发展,最重要的人物很少有时间写书,而且书本在发行时经常过时。

如果你想要一个更加结构化的方法来学习这种材料,那里有一些高质量的课程(和许多低质量的课程)。我已经联系了普林斯顿Coursera课程(这些视频也在Youtube上)和加州大学伯克利分校的一些讲座对于那些想要进入智能合约开发的人们,我也听说了Consensys Academy的消息

我还在SF的布拉德菲尔德计算机科学学院为软件开发人员教授为期4周的加密货币研讨会本课程仅面向SF,座位有限,因为它是一个小型而深入的研讨会式的课程。但是如果你是SF的软件工程师,想要了解更多关于加密货币背后的理论和实践的知识,那么可能对你很合适。

得到一份工作

正如我之前所说的,区块链初创公司正在招人如痴如狂。如果你真的得到了这么多,甚至完成了我所建议的一半事情,那么你可能已经在这个领域有所作为了。AngelList 在如何在密码空间找到工作做了一个很好的写作

有几个很好的聚合器区块链相关的工作发布:

我知道一些特别有前途的区块链初创公司是招聘开发者:

加密开发者市场上还有一些大公司:

  • Coinbase,加密的Google总是疯狂招聘
  • 恒星波纹,如果你想直接工作在更多的企业友好的加密货币
  • Square已经整合了一些区块链,但不知道他们是否在外部招聘
  • IBMVisaJP摩根,如果你想踢它的老派

(请注意,这个具体的公司名单是以超级湾区域为中心的,因为这是我住的地方,所以你的里程可能会有所不同。

但就我而言,参与公司的最佳方式是找到一个你感到兴奋的项目,并直接与他们联系。大多数区块链团队愿意为合适的人才远程招聘。许多开发者可以通过Twitter,Github或公共Slack渠道轻松访问。如果你有一个坚实的投资组合,并可以展示技术印章,大多数人会留下深刻的印象,如果你表现出一些主动权。

这就是我为你所得到的。如果你已经完成了上述所有的工作,就应该设定好,而且你不久以后可能会比我更远。

兔虫洞

我向你展示的仅仅是开始。加密货币仍然处于起步阶段,我真的相信这是一个可以开展工作的最迅速发展的领域。我相信这个指南在一年之内就会过时,而且我还没有那么多令人惊叹的项目有机会谈论。但是如果你进入这个空间,你会在适当的时候找到它们。

继续探索。继续变好。保持学习。

我希望看到你加入我们。

Haseeb

标签: 以太坊 区块链 Blockchain Cryptocurrency ethereum

Powered by emlog 手机版 导航

  

支付与波纹