原文:https://medium.freecodecamp.org/the-authoritative-guide-to-blockchain-development-855ab65b58bc
新的csdn的编辑器真的不好用,没markdown好用。
加密货币,ICOS,神奇的网络货币——这些都是非常让人激动的疯狂事件。也是你们这些充满激
情的开发者所希望加入的。
我很高兴你对这个领域非常感兴趣。我也是。但是你可能对从哪里开始学习并不是很清楚。区块链
正在以折颈的速度移动,但是并没有斜波来帮助学习这个东西。
自从我离开Airbnb全职于区块链,许多人都开始找我了解如何全职投入到区块链这个领域。可以
这个当做是我对区块链编程的权威教程(必然是不完全的)。
这个教程会按照以下10个部分展开:
为什么要学习区块链开发?
在我回答这个问题前,先让我申明下:区块链现在是一个被过度高估的领域。这些价值不是一成
不变的,并且一场变故注定会发生。这之前便已经发生过了。并且会在将来再次发生。如果你在这
个领域工作很长时间的话。你会对这些价值表示不屑。在这个Emin Gun Sirer的世界中,价值是在
加密金融中最没趣的东西。在这个领域中有非常重要的技术,这些技术将会颠覆这个世界。
如果你不相信,我也不能命令你是否要加入这个领域。但是我可以告诉你是我加入这个领域
的5个理由。
1. 现在还不晚
关于分布式系统有几本很好的教科书,但它是一个庞大而困难的学习领域。
分布式系统对推理区块链绝对是必不可少的,因此在开展区块链编程之前,
您必须在此建立基础。
一旦你不再住在一台机器上,你必须开始推理一致性和一致性。你会想知道
可线性化和最终一致性模型之间的区别。您还需要了解容错一致性算法的保
证,如Paxos和RAFT。了解在分布式系统中推理时间的困难。欣赏安全与活
力之间的权衡。
在这样的背景下,您将能够理解拜占庭容错共识(即公共区块链的主要安全
要求)带来的困难。您将需要了解PBFT,这是首个提供拜占庭容错共识的
可扩展算法之一。 PBFT是许多非证明区块链共识算法的基础。再一次,您
不需要了解PBFT是如何以及为什么是正确的细节,而是获得总体思路和安
全保证。
了解分布式数据库的传统方法(核心,区块链毕竟是数据库)也非常有用。
了解分片(例如通过一致哈希),领导者跟随者复制和基于法定人数的提交。
查看分布式哈希表(DHT),如Chord或Kademlia。
2008年10月,Satoshi Nakamoto发表了一份白皮书,他在其中描述了分散数字货币的协议。 他把
这个协议称为比特币。在您了解区块链背后的重要想法之前,您必须从比特币开始,掌握Satoshi的
独到见解。首先,我建议建立你的直觉关于工作证明和分岔选择规则(也称为Nakamoto共识)。
从这里开始:
https://youtu.be/_160oMzblY8
我建议你观看一个以上的视频解说,让这个主意融入你的脑海:
大。 既然您已经建立了自己的直觉,那么本文将对比特币的关键组成部分进行更深入的端到端阐述。
加密货币本质上是多学科的 - 这是什么使他们如此迷人和激进的一部分。 除了计算机科学,密码学
和网络之外,它们也与经济学深度交织。 加密货币可以通过其经济结构获得许多安全属性,这通常
被称为cryptoconomics。 因此,经济学对理解加密货币是至关重要的.Cryptocurrencies本质上是
多学科的 - 这是使它们如此迷人和激进的一部分。 除了计算机科学,密码学和网络之外,它们也
与经济学深度交织。 加密货币可以通过其经济结构获得许多安全属性,这通常被称为cryptocono
mics。 因此,经济学对理解加密货币至关重要。
https://www.youtube.com/watch?v=Lx9zgZCMqXE
既然您已经建立了自己的直觉,那么本文将对比特币的关键组成部分进行更深入的端到端阐述。
https://youtu.be/3aJI1ABdjQk
这里是sourceCode
您还可以找到其他区块链实现,使用各种编程语言编写。继续建立你自己的,并让自己满意,它主
要是功能性的。一旦你做到这一点,你应该很好地掌握如何在区块链(比特币)上实现一个简单的
支付应用程序。您现在也应该拥有足够的背景,以便您能够阅读和理解原始比特币白皮书。
为了理解比特币挖掘的经济学和机制,我建议观看比特币和加密货币普林斯顿课程的比特币挖掘
讲座。
如果你已经得到这么多,你应该很好地理解比特币,以便遍历比特币块头并理解每个组件的含义。
您还应该能够与比特币区块浏览器一起玩,并浏览原始比特币交易。
现在是研究比特币和加密货币历史的好时机。由加州大学伯克利分校提供的下面的视频给出了一
个很好的概述。
https://youtu.be/apYieuvnUaE
一些额外的信用资源:
比特币的学术前兆
比特币机制:UTXOs和比特币脚本(比特币脚本不是非常重要,只是大致知道它能做什么)
比特币分叉指南
软叉和矿工信号
双重支出,51%的攻击和自私的采矿
重播攻击
比特币可扩展性问题,这是比特币生态系统中大部分争议的根源。你应该知道为什么比特币人会对
块的大小有很多争论。
隔离证人,又名SegWit,不是必需的,但它出现了很多。现在您已经构建了区块链并了解比特币的动态,现在是时候钻研以太坊。您了解区块链和工作证明
如何在对等网络内实现分布式拜占庭式容错共识。 但支付网络只是您可以在这种区块链上运行的一
个应用程序。 2013年,以太坊的创始人Vitalik Buterin问道:如果您使用区块链实施分散式计算机,
该怎么办?
在以太坊,您向矿工支付在这个分布式虚拟机上执行您的程序。这意味着您可以使用图灵完整编程
语言(与比特币脚本不同)执行任意计算。显然,这包括与支付相关的应用程序,因此以太坊实现
了比特币功能的超集,并且实现了创新的复兴。
这将我们带入了智能合约 - 在这样的虚拟机上运行的程序的名称。根据程序的执行情况,智能合约
可以直接与区块链的加密货币进行交互。换句话说,您可以创建自动执行的金融合同。这是一个疯
狂的想法,以及一旦你接受这种编程模型,你可以做的各种科幻未来的东西。
以太坊促成了ICO和开发商在区块链上的建设浪潮。它是比特币背后的第二大加密货币,拥有超过
10倍的下一个最受欢迎平台的开发人员,它拥有最强大的开发团队,最成熟的工具以及大多数ICO
和项目。它也拥有最多的行业支持,这有很长的路要走。很有可能,如果您正在开发区块链,您将
为以太坊智能合约编写代码。 (即使你不是,了解这个领域发生了什么也是很重要的。)
首先,更详细的以太坊高层解释:https://youtu.be/mCzyDLanA7s
他在Ethereum背后的想法也催生了一场隐性经济学的创新浪潮。你应该将自己的脚趾浸入DAO
的想法,以及他们暗示的所有科幻发烧的梦想。
好的,这足以让我们深入了解科技。
以下是Preethi Kasireddy对Ethereum黄皮书及其内部结构的完美概述。以太坊使用账户模型而
不是比特币的UTXO模型 - 您很快就会明白为什么这会使编写智能合约更容易。
以太坊的主要编程语言是Solidity,它是一种静态类型化JavaScript语言。这是一种含有大量疣的
语言,以及许多可疑的设计选择。 Viper等更强大的语言可以在生产就绪后取代它,但现在,Soli
dity已成为智能合约编程的通用语言。这基本上是以太坊的JavaScript,所以你需要学习它(和它的
陷阱)。
现在你已经开始了食欲,现在是时候自己开发了。
以太坊的“hello world”正在构建符合ERC-20的令牌。我建议将本指南作为第一个教程来引导您
完成整个过程。
Remix是一款浏览器中的Solidity编辑器和编译器 - 它基本上是以太坊开发的培训轮,所以我建议
您在Remix中完成其余练习。但也值得设置一个本地区块链,并了解以太坊工具。本教程在通过端到
端的区块链堆栈和解释这些部分的过程中做得很好。
接下来,我建议建立一个投票系统。我会称之为以太坊的Todo应用程序。卡尔Floersch有一个
很好的教程,他走过了如何建立一个安全的提交 - 揭示投票系统。
太棒了,现在是你的中期考试:建立一个安全的投币游戏,两个玩家可以安全地投注投币。这次
没有教程,请自行完成。想想可能发生的攻击 - 玩家如何作弊?你能确保他们真的玩吗?这里有一
些提示。
安全对区块链开发至关重要。智能合约一直受到灾难性黑客的困扰,包括DAO黑客攻击,Parity
Wallet黑客攻击以及亲密命名的Parity Wallet hack 2(现在有自己的T恤)。如果你打算编写生
产智能合约,你绝对必须阅读所有这三个黑客的分析。
事实是,智能合约非常难以正确。尽管编程工具链会改进以使这些确切的攻击更难,但它们最终
都是由于程序员错误造成的。还有许多来自智能合约编程的细微错误,比如先行( frontrunn
ing)或secure generation of randomness 。
作为一名智能合约开发人员,您必须将安全视为至高无上。在智能合约编程中没有“快速移动和
破坏事物”。这意味着任何处理大量资金流动的代码都应该通过像Oyente或Securify这样的静态
分析器进行测试,并进行彻底测试,然后由有经验的智能合同审计师进行审计。您还应该尝
试依靠预先审计的组件,例如OpenZeppelin的开源合同。
为了加强安全性,我建议您通过OpenZeppelin的Ethernaut进行工作,这是一款可以在智能合约
中找到并攻击漏洞的游戏。他们中的许多人会复制对野外发生的智能合约的实际攻击。
一旦你过去了,我强烈建议阅读由ConsenSys编制的全部智能合同最佳实践。期望在您的智能合
约编程生涯中多次重温本文档。参考书目也值得探索,以供安全专家进一步阅读。
大多数开发人员推荐将VSCode或Atom用于文本编辑器,因为它们具有相当好的Solidity插件。
为了与本地区块链进行交互,您需要使用Ganache(以前称为TestRPC),并且您需要为您的
(基于JS的)测试使用Truffle框架并配置您的构建管道。
为了与Ethereum和IPFS完整节点交互,Infura是大多数开发人员推荐的。 Etherscan和ETH加油站
为以太坊网络提供有用的实时统计数据。
首先,开始构建自己的项目。如果有一些很棒的想法让你兴奋,那就去建立它,然后说服其他人跟
你一起攻击它!如果您还没有一个想法,或者不习惯让自己的手变脏,那么有许多高质量的开源项
目欢迎捐款。 OpenZeppelin可能是启动智能合约的好地方。
更好的是,我建议首先找到一个你很喜欢的积极开发的项目。获取他们的Slack或Rocketchat - 开
发人员通常可以轻松访问。告诉他们你想贡献一些小任务(或者在他们的Github上发现未解决的问
题)。
请注意,尽管我一直专注于协议和智能合约开发,但区块链公司需要Web开发人员来构建其核心功
能。这些角色通常需要与区块链进行交互,所以关于区块链的工作方式必须具备良好的心智模型 -
但对于区块链初创公司的许多工程师而言,您的大部分工作都将在构建Python网络服务器或设计
React前端以及与区块链互动可能只是这项工作的一小部分。您不必专注于智能合约开发 - 实际上
,这只是工作区块链栈的一部分。
除开源贡献之外,还有许多区块链黑客马拉松不断涌现。大多数项目都有一个免费的公共Slack,
你可以加入,而且还有一个非常活跃的Ethereum的Gitter频道,许多开发者都在这里闲逛。当你
深入这个空间时,你最终会发现你的对等组,无论它是在Slack频道,电报组还是Gitter频道。无论
在哪里,找到你的人并继续学习。
真正理解区块链世界的最好方法是让自己沉浸其中。阅读并聆听最聪明的人,特别是他们过去写过
的东西。在尝试学习一个新领域时,这一直是我的策略,对我来说这是付出的代价。
我推荐的三个梦幻般的播客是软件工程每日区块链访谈( Software Engineering Daily
Blockchain interviews),它为许多主题和加密货币提供了良好
的技术指导。从那里我推荐Epicentre和Unchained - 你会想回去听很多老的剧集。另一个有趣的
新兴技术播客是Conspiratus。我建议订阅每个这些。
有几个很好的Youtube频道(尽管Youtube上有很多垃圾)。订阅以太坊基金会( Ether
eum Foundation)并观看Devcon3演示文稿。伯克利的区块链记录了他们的许多讲座,其中
大部分都是出色的技术概述。 Decypher Media还发布会谈,白皮书评论和教程。杰克逊帕尔默
已经参与了每周的综述,这些都是技术层面较差,但非常均匀。
-------------------------------------------------------------------------------------------------------懒癌犯了,不想翻了,虽然借助了很多google翻译的力量
-------------------------------------------------------------------------------------------------------
在线阅读对于实时区块链喋喋不休,它主要生活在两个地方:Reddit和Twitter。对于Reddit来说,大多数次
品质量都非常低,并且受噪音控制。 r /以太坊的质量一直很好(对于特定的加密货币,还有一些好
的子分类)。尽管大多数次级债券主要由投机者主导,并不能很好地利用你的注意力。远离比特币
相关的次级信用。比特币臭名昭着地是毒性最严重的社区之一,而Reddit只是放大了这一点。
Twitter更是一个混合包。无论好坏,大多数区块链人都生活在Twitter上。首先,区块链Twitter对
我来说有点神秘,但最终我开发了Twitter区块链人员的非正式本体论。根据我的经验,区块链
人士有五种类型:建设者,企业家,记者,交易员和“思想领袖”。
避免像瘟疫那样的“思想领袖”。企业家可以没事,尽管他们大多是炒作男人或者推销自己的项目
。投资者大多在推销价格和炒作项目,所以如果那是你的事情,那是你的事。记者倾向于发布关于
当天重大新闻的推文,我建议你不要离开,除非你需要实时分析,你可能不需要。如果你是一个
活跃的交易者,这可能很重要,但如果你试图在区块链上建立基础,大多数实时的东西都是一种分
心。
所有这一切,我建议尽量减少你的Twitter和Reddit的曝光。如果你不是记者或日间交易员,那么很
可能你并不需要实时聊天。重要信息将异步地向您显示。有几个好消息摘要可以总结一天/周最重要
的消息,你可以在自己的时间消费,而不受关注市场的束缚。
我建议订阅Inside Bitcoin以获取最重要的加密新闻片段的日常摘要(它不仅涵盖比特币)。对于令
牌项目,令牌经济拥有出色的每周评论,而“以太坊”周刊对以太坊生态系统中以开发人员为中心
的事件进行了精辟的摘要。
Vitalik Buterin提供卓越的区块链和密码经济分析(阅读他所有的旧博客文章,Vitalik被广泛认为是
一代人的思想家)
黑客攻击,由康奈尔大学的研究人员进行区块链安全分析Money Stuff,Matt Levine的彭博联合企业,以切入和富有洞察力的分析触及市场,金融和区块链
新闻
Vlad Zamfir for tempe