对于区块链技术的研究需要做好哪些准备工作?
我建议你在深入研究之前,先加强对基本原理的理解。区块链建立在计算机科学、密码学和经济学数十年研究的基础上。中本聪是一个“反叛者”,但他也很清楚之前的历史。为了理解区块链的工作原理,您需要了解先于区块链产生的区块,以及为什么他们不起作用。
以下是一些需要熟悉的预备知识,按重要性排序。(注意,以下内容里的链接只是一个学习起点,您可能会想深入了解更多。)
计算机科学
数据结构
您需要熟悉主要数据结构的特性和复杂性保证:linked lists, binary search trees, hash maps, 以及 graphs (特别是在区块链中具有显著特征的有向非循环图)。从头开始构建它们有助于更好地理解它们的工作方式和属性。
密码学
密码学是加密货币的代名词和基础。所有加密货币都使用公钥/私钥加密(public/private key cryptography)作为身份和身份验证的基础。我建议学习 RSA( RSA)(它很容易学习,不需要很强的数学背景),然后看看 ecdsa( ECDSA)。椭圆曲线密码需要更抽象的数学——理解所有细节并不重要,但要知道,这是大多数加密货币(包括比特币)使用的密码。
另一个重要的密码原语是密码散列函数(哈希函数)。这些可用于承诺机制,并且是 merkle 树的构建块。Merkle trees 支持 Merkle proofs,这是区块链用于可扩展性的关键优化之一。
分布式系统
关于分布式系统有一些很好的教科书,但这是一个庞大而困难的研究领域。分布式系统对于区块链的论证是绝对必要的,因此在处理区块链编程之前必须在此建立基础。
一旦你的系统不再运行在一台机器上,就必须开始论证一致性和共识。您需要了解可线性化和最终一致性模型之间的区别。您还需要了解容错一致性算法的保证,例如 Paxos 和 RAFT。了解在分布式系统中论证时间的困难,理解安全与活性之间的权衡。
有了这样的背景,你将能够理解拜占庭容错共识的难点,这是公共区块链的主要安全要求。您将需要了解 PBFT,这是首个提供拜占庭容错共识的可扩展算法之一。PBFT 是许多非工作证明区块链一致性算法的基础。再次提醒,你不需要了解 PBFT 太多的细节,而是总体的思路及其安全性保障机制。
理解传统的分布式数据库也是非常有用的(其核心思想是,区块链本质上是数据库)。了解分片(例如通过一致性哈希),主从复制(leader-follower replication),分布式哈希表 (DHTs),例如 Chord 或 Kademlia。
网络
区块链的分布式在很大程度上源于其点对点网络拓扑结构。因此,区块链是过去 p2p 网络的直接产物。
要了解区块链通信模型,您需要了解计算机网络的基础知识:如 TCP 与 UDP、数据包模型、IP数据包,以及大致的网络路由工作方式。
公共区块链倾向于通过 gossip protocols 和 flooding 来传播信息。学习p2p网络设计的历史,包括 Napster to Gnutella, BitTorrent,Tor,都具有一定的指导意义。区块链有自己的特点,但它们借鉴了这些网络的经验教训以及它们是如何设计的。
经济学
加密货币本质上是多学科的 - 这是使它们如此迷人和激进的主要原因。除了计算机科学,密码学和网络,它们还与经济学密切相关。加密货币可以通过其经济结构获得许多安全属性,这通常被称为加密经济学。因此,经济学对于理解加密货币至关重要。
博弈论
对加密货币最重要的经济学分支是博弈论,即研究多个主体之间的收益和激励。你不需要深入到很细节,但你需要了解博弈论分析的基本工具,以及如何使用它们来分析一次性和持续性游戏中的激励因素。
你需要掌握两个关键的概念:纳什均衡点和谢林点,因为它们在密码学分析中具有突出的特点。
宏观经济学
加密货币不仅是协议,也是货币的形式。因此,它们响应宏观经济规律(如果它们可以被称为规律的话)。加密货币受制于不同的货币政策,并对通货膨胀和通货紧缩作出可预见的反应。你应该了解这些过程以及它们对支出、储蓄等的影响。
另一个有价值的经济概念是货币的流通速度,特别是当它与货币的价值相对应时。
微观经济学
加密货币也深深地与市场交织在一起,这需要了解微观经济学。你需要对供求曲线有很强的直觉。你应该能够解释竞争和机会成本(它们将经常应用于挖矿领域)。在许多硬币发行和密码经济系统中,拍卖理论具有突出的特点。
我希望你已经熟悉了其中的一些话题。如果是的话,请随意浏览或跳过它们。
好吧,到现在为止,你已经完成并巩固了你的基础知识,现在您已经掌握了以上的理论,让我们来开始区块链开发吧。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.