集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > C++ >

成都区块链开发:适合零基础区块链开发者学习手册

发布者: 区块链开发     浏览次数:     发布时间:2018-07-18 10:57:16

成都区块链开发:在回答这个问题之前,我先给大家提个醒:区块链现在是一个被过分高估的领域。这样的价格不可持续,这一切都发生过,并可能再次发生。但是如果你长期在这个领...

  成都区块链开发:适合零基础区块链开发者学习手册

  为什么要学区块链开发?

  在回答这个问题之前,我先给大家提个醒:区块链现在是一个被过分高估的领域。这样的价格不可持续,这一切都发生过,并可能再次发生。但是如果你长期在这个领域工作,你得学会排除价格的干扰。区块链是非常重要的技术,且毫无疑问将改变世界。

  先决条件

  我建议在你在深入这个领域之前了解一些基础知识。区块链建立在数十年的计算机科学、密码学和经济学研究之上,中本聪是一个叛徒,但即使是他也很了解区块链的历史。为了理解区块链的工作原理,您需要了解它们的构建块——区块链出现之前还出现过那些东西,以及为什么这些东西不起作用。

  以下是我们需要熟悉的先决条件,按照重要性依序排列。

  请注意,这些链接只是一个起点,这些话题你还需要做进一步的了解。

  计算机科学 数据结构

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

  加密

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

  另一个重要的密码原语是密码哈希函数(cryptographic hash function)。这些可以用来构建承诺协议(Commitment scheme),这是建立 Merkle 树的构建块。 Merkle 树使 Merkle 证明(Merkle proofs)成为区块链用于可扩展性的关键优化之一。

  分布式系统

  这里是几本讲解分布式系统的很好的教科书,但它涉及范围广泛,也很难学。分布式系统对区块链的推理至关重要,所以在开始区块链编程之前,你必须有一点这方面的基础知识。

  当你的工作不仅在一台机器上进行时,你必须开始推理一致性和共识。你需要了解线性化( linearizable)和最终一致性(eventual consistency)模型之间的区别,容错一致性算法(如 Paxos 和 RAFT)的保证,以及分布式系统中推理时间上的难题,和安全与生存之间的权衡。

  在这些背景知识的帮助下,你才能够理解拜占庭容错共识(Byzantine fault-tolerant consensus,公共区块链的基本安全要求)方面的困难。您还需要了解 PBFT,这是第一个提供拜占庭式容错共识的可扩展算法之一。PBFT 是许多非证明区块链共识算法的基础。同样地,你不需要了解 PBFT 正确性的细节,只需要了解总体思路和安全保证即可。

  理解分布式数据库的传统方法(核心,因为区块链毕竟是数据库)也是非常有用的。你还需要了解一下分片(例如通过一致性哈希,Consistent hashing),leader-follower replication 和基于法定人数的提交(quorum-based commits),以及分布式哈希表(DHT),如 Chord 或 Kademlia。

  网络

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

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

  公共区块链通常使用 Flooding 八卦协议来传播消息。了解从 Napster 到 Gnutella,BitTorrent 和 Tor 等 P2P 网络设计的历史对你来说是有益的。区块链有自己的地位,但吸取了这些网络的设计经验。

  经济学

  加密货币本质上是跨学科的,这也它之所以迷人的一部分原因。除了计算机科学、密码学和网络之外,它们还与经济学有着千丝万缕的关系。加密货币可以通过其经济结构获得许多安全属性,通常被称为隐密经济学(cryptoeconomics)。因此,经济学对理解加密货币来说至关重要。

  博弈论

  博弈论在加密货币经济学中扮演着最重要的角色,即对多个代理人之间的收益和激励的研究。你不需要对此有深入了解,但需要了解博弈论分析的基本工具,以及如何使用它们来分析一次和迭代游戏中的激励。

  关于博弈论,您需要了解两个关键概念,即纳什均衡(Nash equilibria )和谢林点(Schelling points),因为它们在隐含经济分析中占有突出的作用。

  宏观经济学

  加密货币不仅仅是协议,其也是一种货币形式。因此,它会受到宏观经济法(如果可以称之为法律)的限制。加密货币受到不同货币政策的影响,并会对通货膨胀和通货紧缩作出可预测的回应。你应该了解这些过程,以及它们对消费、储蓄等方面的影响。

  另一个有价值的经济学概念是货币流通速度,因为其会影响货币价值。

  个体经济学

  加密货币也与市场息息相关,这就需要了解微观经济学。你需要对供求曲线有非常敏锐的直觉,并具备推理竞争和机会成本(经常被用于加密货币挖掘)的能力。对于许多硬币分配和隐含经济系统,拍卖理论(auction theory)尤其重要。

  现在,你已经掌握了基本理论,开始进入区块链开发吧。

  比特币的理论基础

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

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

  首先,我建议您对工作证明(proof-of-work)和 fork choice rule(也被称为中本聪共识)有所了解,从这里开始

  有了对于区块链的直觉之后,本文将对比特币的关键组成部分进行更深入的端到端的阐述。

  建立一个自己的区块链

  现在是时候构建您自己的基于工作量证明的区块链了。别担心,其实听起来难做起来容易,这里是一些很好的资源。

  在这里你还可以找到其他用各种编程语言编写的区块链应用。继续构建自己的模型。

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

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

  现在,你应该已经达到了了解比特币 header,并知道每个组件含义的水平。您还可以使用比特币区块浏览器,探索原始比特币交易。

  一些额外的资源:

  比特币的学术先驱

  比特币机制:UTXOs 和比特币脚本(比特币脚本不是非常重要,大致知道它能做什么即可)

  比特币 forks 指南

  软分叉和矿工信号

  双重打击,51%的攻击和自私的开采

  重播攻击

  比特币可扩展性问题,这是比特币生态系统中大部分争议的来源。你应该知道为什么

  比特币人会对块的大小有很多争议。

  隔离的证人,也就是 SegWit,不是必须了解,但会经常出现。

  闪电网络(Lightning Network)是比特币更重要的拓展解决方案之一,也推广到其他区块链

  比特币完整节点,比特币费用统计,图表,图表和其他图表

  比特币能源消耗指数(在发布时,比特币开采能源消耗量相当于秘鲁全国)

  Gwern 对比特币龌龊之处作了深刻的论述

  如果你想更深一步了解,可以参考 Jameson Lopp 关于比特币资源的资源。

  以太坊和智能合约编程

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

  理解区块链和工作量证明如何在对等网络内实现分布式拜占庭式容错共识。但支付网络只是你可以应用区块链的应用程序之一。在 2013 年,以太坊的创始人 Vitalik Buterin 问道:将区块链应用到分布式计算机上会怎样?

  在以太坊上,你花钱让矿工在这个分布式虚拟机上运行自己的程序。这意味着您可以使用图灵完整编程语言(不同于比特币脚本)执行任意计算。显然,这包括所有的支付程序,因此以太坊比特币的功能更强大,并做了进一步创新。

  其后是智能合约,即在此类虚拟机上运行的程序的名称。智能合约可以根据程序的执行直接与区块链的数字货币进行交互。换句话说,您可以创建自动执行的金融合同。这是一个疯狂的想法,用这个编程模型,你几乎可以做到所有科幻作品中的事情。

  以太坊掀起了 ICO 和区块链开发的浪潮。它是排在比特币后面的第二大加密货币,它的开发者是排名第三的加密货币币种的 10 倍之多。它拥有最强大的开发团队,最成熟的工具,大多数 ICO 和项目都与其相关,且最被业内看好。如果你正在做区块链开发工作,你很可能将会为以太坊智能合约编写代码。(即使无志于此,了解一下这个领域的趋势也无妨。)

  以太坊背后的思想也催生了一波隐性经济学的创新浪潮。你应该接触一下 DAO 的思想。

  好吧,幻想告一段落,让我们来深入了解背后的技术吧。

  Preethi Kasireddy 关于以太坊黄皮书和内部结构概览介。以太坊使用的是账户模式而不是比特币的 UTXO 模式,您很快就会明白为什么这会使编写智能合约变得更容易。

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

  以太坊的主要编程语言是 Solidity,它是一种静态类型的 JavaScript-esque 语言,实话说有很多缺点和设计问题。像 Viper 这样的更强大的语言可以在推出之后取代它,但目前,Solidity 是智能合约编程的通用语言。这基本上是以太坊的 JavaScript,所以你需要学会它(和它的陷阱)。

  第一次接触 Solidity 开发时,我建议您通读所有的 CryptoZombies 教程。这些是高质量的 Codecademy-esque 教程,可以学到 Solidity 编程的基础知识。

  现在,你的胃口被吊起来了,是时候自己开发了。

  入门以太坊的课题是构建一个兼容 ERC-20 的令牌。我推荐这本指南作为你完成任务的指导教程。

  Remix 是一个浏览器中的 Solidity 编辑器和编译器, 它基本上是以太坊开发的辅助轮,所以我建议把 Remix 中的其他练习都做一遍。设置一个本地区块链以了解以太坊工具也值得一试。本教程很好地介绍了一个端到端的区块链堆栈,并对这些堆栈进行了解释。

  接下来,我建议你创建一个投票系统,称之为以太坊的 Todo。 Karl Floersch 的教程讲解了如何建立一个安全的提交显示投票系统。

  很好,现在该中期考试了:创建一个安全的投币游戏,两个玩家可以安全地进行投掷硬币游戏。这次没有教程,自己动手做吧。在这个过程中要考虑到可能发生的攻击,如 玩家如何作弊?你能确保他们坦诚相待吗?这里有一些提示。

  智能合约的安全性

  对于区块链开发来说,保证安全性是绝对必要的。智能合约一直被灾难性的黑客攻击,包括 DAO、Parity Wallet,以及 Parity Wallet hack 2(现在竟然还有他们自己的 T 恤衫)威胁着。如果你打算编写生产智能合约,你必须把这三个黑客透彻地分析一遍。

  然而事实上,智能合同很难尽善尽美。虽然编程工具链的改进让黑客更难实施攻击,但编程员会不可避免地犯错误。智能合约编程过程中还会犯许多微妙的错误,例如抢先交易或安全随机生成。

  作为一名智能合同开发人员,您必须把安全性放在第一位,所有处理大量资金流动的代码都应该通过像 Oyente 或 Securify 这样的静态分析器来进行,并进行彻底的测试,然后由有经验的智能合约审计师进行审计。为了结果更可靠,您还可以使用 OpenZeppelin 开源合同等预审组件。

  为了加强安全性,我建议您使用 OpenZeppelin 的 Ethernaut,在这个游戏中您可以找到攻击智能合约黑客的漏洞,这对你防范攻击有很重要的参考价值。

  Phil Daian 发起了一项有名的智能合约黑客挑战赛,叫做 Hack This Contract。

  在这之后,我强烈建议阅读由 ConsenSys 编写的“智能合同最佳实践(Smart Contract Best Practices)”。预计你将会在智能合约编程生涯中多次重温这个文档。由安全专家推荐的参考书目也值得你进一步阅读。

  脱离辅助轮

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

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

  现在是研究 IPFS 的好时机,您可以将其作为一个比以太坊成本便宜很多的分布式存储库。

  在与以太坊和和 IPFS 完整节点交互方面,大多数开发人员推荐使用 Infura。在以太网络上,Etherscan 和 ETH 加油站可以提供有用的实时统计数据。

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

  创建自己的项目

  现在,你应该对大部分技术比较熟悉了,剩下的就是开始构建项目,并深入到区块链社区。

  首先,开始创建自己的项目。如果有一些很棒的想法让你兴奋,那就去实现它,然邀请朋友来攻击它!如果你还没有好的想法,还有很多高质量的开源项目可以练手。OpenZeppelin 是创建智能合约不错的选择。

  此外,我建议你最好选择一个你热衷的开发项目,进入他们的 Slack 或 Rocketchat,告诉他们你做一些贡献,让他们给你分配一些小任务,,或者在他们的 Github 上发现未解决的问题。

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

  除开源贡献之外,还有许多区块链黑客竞赛不断涌现。大多数项目都有一个你可以加入的免费的公共 Slack,以及一个非常活跃的以太坊 Gitter 社区。当你深入到这个领域时,你最终会在 Telegram、Gitter 等场所发现志同道合的伙伴,一起学习进步。

  区块链社区

  真正去了解区块链世界的最好方法就是沉浸其中,阅读和聆听最聪明的人,尤其是他们过去写过的东西。这一直是我尝试进入一个新领域时的策略,对我来说也是回报丰厚。

  虽然好的区块链内容很多,但同时也有很多废话。以下是我推荐的学习社区。

  在线阅读

  区块链发烧友通常在两个地方发表他们的意见:Reddit 和 Twitter。Reddit 上的大多数用户质量不高,大多是一些废话。r/Ethereum 上的内容一贯质量不错(对于特定的加密货币,还有一些了解透彻的用户)。然而,这些人大多数是投资人,别太关注他们说了啥。远离比特币相关的用户,比特币社区在圈子里臭名昭著,人人敬而远之。

  Twitter 更是鱼龙混杂。无论如何,大多数区块链人都活在 Twitter 的世界里。根据我的经验,这里的区块链人有五种类型:开发者、企业家、记者、商人,以及“思想领袖”。

  对于这些人,我建议你远离“思想领袖”,企业家无所谓,记者通常只关注重大消息,除非你是个商人,否则对于开发者来说,这些消息只会让你分心。

  最应该关注的是真正的开发者。目前,他们是最重要,也是正在推动技术的发展的群体。

  以下是特定类型的代表人物:

  开发者

  Vitalik Buterin,以太坊

  Zooko Wilcox,ZCash

  Nick Szabo,智能合约的发明者

  弗拉德 Zamfir,以太坊

  Marco Santori,Cooley LLP

  Riccardo“fluffypony”Spagni,Monero

  Matt Liston,Gnosis

  企业家

  Balaji Srinivasan,Earn.com

  Erik Voorhees,变形

  投资者

  Naval Ravikant,MetaStable

  Ari Paul,Blocktower Capital

  Linda Xie, Scalar Capital

  Chris Burniske,Placeholder

  书籍和课程

  如果你想要更加系统地学习区块链,就需要看一些高质量的书籍和课程。

  区块链最好的教科书是 Bitcoin and Cryptocurrency Technologies (内含普林斯顿 Coursera 课程)。在这个领域,其他的书籍我只推荐 Andreas Antonopoulos 和以太坊创始人的 Gavin Wood 共同撰写,O'Reilly 出版的 Mastering Bitcoin。非技术书我推荐 Nathaniel Popper 的 Digital Gold。几乎所有值得阅读的东西都是在博客上,而不是在书本上,因为这个领域正在飞速发展,最重要的人物很少有时间写书,而且书本在发行时经常已经过时了。

  你还可以通过一些高质量的课程来系统学习。这是一些普林斯顿 Coursera 课程(Youtube 上也有视频)和加州大学伯克利分校的一些讲座链接。对于那些想要进入智能合约开发的人们,Consensys Academy 的课程也不错。

  我还在旧金山的布拉德菲尔德计算机科学学院为软件开发人员教授为期 4 周的加密货币研讨会。如果你是旧金山的软件工程师,想要了解更多关于加密货币背后的理论和实践的知识,可以来听一听。

  找工作

  正如我之前所说的,区块链初创公司正在疯狂地招聘人才。如果你真的做到了以上我所说的,甚至只做到了一半,那么你已经能够在这个领域有所作为了。 AngelList 在如何在密码空间找到工作做了一个很好的写作。

  这里是几个不错的区块链相关工作发布区:

  AngelList 加密启动

  BlockchainJobz

  Ethereum Jobs

  Be in Crypto

  区块链工作委员会

  Crypto Jobs List

  Google(区块链搜索查询)

  ConsenSys Jobs(旗下有很多以太坊创业工作室)

  我知道一些特别有前途的区块链初创公司正在招聘开发人员:

  0X

  达摩实验室

  Civic

  市场上还有一些大公司在招聘开发人员:

  Coinbase,加密界的 Google,一直在疯狂招聘

  Stellar 和 Ripple,如果你想做对企业友好的加密货币,它们不错的选择

  Square 已经整合了一些区块链,但不知道他们是否在进行外部招聘

  IBM、Visa 或 JP 摩根

  但是在我看来,选择进哪一家公司最好是因为对某一个项目感兴趣,并可以直接参与开发。大多数区块链团队都愿意为合适的人才进行远程招聘。许多开发者可以通过 Twitter,Github 或公共 Slack 渠道,展示自己的技术能力,并表现出一定的主动性,他们会给人留下深刻的印象。

  这就是我为对你的建议,完成这些之后,我相信你会比我走的更远。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼段35号明宇金融广场19楼1903室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街紫东段35号明宇广场2306

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市成华区建设路10号万科钻石广场B座5楼

联系电话:15023458194

公交路线:建设路中(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

20016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56