区块链基础
Please read Substrate to Polkadot SDK page first.
区块链是一个去中心化的账本,它以一系列区块的形式记录信息。 区块中包含的信息是一组有序的指令,这些指令可能导致状态发生变化。
在区块链网络中,各个计算机(称为节点)相互通信,形成一个去中心化的对等(P2P)网络。 没有中央机构控制网络,并且通常参与区块生成的每个节点都会存储构成规范链的区块的副本。
在大多数情况下,用户通过提交可能导致状态变化的请求与区块链交互,例如,更改文件所有者或将资金从一个账户转移到另一个账户的请求。 这些交易请求会传播到网络上的其他节点,并由区块作者组装成一个区块。 为了确保链上数据的安全性和链的持续发展,节点使用某种形式的共识来就每个区块中数据的状态以及执行的交易顺序达成一致。
什么是区块链节点?
在高级别上,所有区块链节点都需要以下核心组件:
- 用于存储作为交易结果记录的状态更改的数据存储。
- 用于节点之间去中心化通信的对等网络。
- 共识方法,以防止恶意活动并确保链的持续发展。
- 用于排序和处理传入交易的逻辑。
- 用于生成区块哈希摘要以及对交易相关的签名进行签名和验证的加密技术。
由于构建区块链所需的核心组件涉及的复杂性,大多数区块链项目都从现有区块链代码库的完整副本开始,以便开发人员可以修改现有代码以添加新功能,而不是从头开始编写所有内容。 例如,比特币存储库被分叉以创建莱特币、ZCash、Namecoin 和比特币现金。 同样,以太坊存储库被分叉以创建 Quorum、POA Network、KodakCoin 和 Musicoin。
但是,大多数区块链平台并非旨在允许修改或自定义。 因此,通过分叉构建新的区块链存在严重的限制,包括源区块链代码中固有的可扩展性等限制。 在您探索 Substrate 如何缓解与其他区块链项目相关的许多限制之前,了解大多数区块链共享的一些常见属性非常重要。 通过了解大多数区块链是如何运作的,您将能够更好地了解 Substrate 如何提供替代方案和功能来构建最适合您需求的区块链。
状态转换和冲突
区块链本质上是一个状态机。 在任何时间点,区块链都具有当前的内部状态。 随着传入交易的执行,它们会导致状态发生变化,因此区块链必须从其当前状态转换到新状态。 但是,可能存在多个有效的转换会导致不同的未来状态,并且区块链必须选择一个可以达成一致的单个状态转换。 为了就转换后的状态达成一致,区块链中的所有操作都必须是确定性的。 为了使链成功发展,大多数节点必须就所有状态转换达成一致,包括:
- 链的初始状态,称为创世状态或创世块。
- 由每个区块中记录的已执行交易产生的状态转换序列。
- 要包含在链中的区块的最终状态。
在集中式网络中,中央机构可以在相互排斥的状态转换之间进行选择。 例如,配置为主要权限的服务器可能会按照其看到的顺序记录状态转换的变化,或者在发生冲突时使用加权过程在竞争性替代方案之间进行选择。 在去中心化网络中,节点以不同的顺序看到交易,因此它们必须使用更复杂的方法来选择交易并在冲突的状态转换之间进行选择。
区块链用于将交易批处理到区块中以及选择哪个节点可以将区块提交到链中的方法称为区块链的共识模型或共识算法。 最常用的共识模型称为工作量证明共识模型。 使用工作量证明共识模型,第一个完成计算问题的节点有权将区块提交到链中。
为了使区块链具有容错能力,即使某些节点受到恶意行为者或网络中断的影响,也能提供一致的状态视图,某些共识模型要求至少三分之二的节点始终就状态达成一致。 这个三分之二的多数确保网络具有容错能力,并且可以承受某些网络参与者行为不端,无论这种行为是有意的还是意外的。
区块链经济学
所有区块链都需要资源(处理器、内存、存储和网络带宽)来执行操作。 参与网络的计算机(生成区块的节点)为区块链用户提供这些资源。 这些节点创建了一个分布式、去中心化的网络,以满足参与者社区的需求。
为了支持社区并使区块链可持续发展,大多数区块链要求用户以交易费用的形式支付其使用的网络资源。 支付交易费用需要将用户身份与持有某种类型资产的账户相关联。 区块链通常使用代币来表示账户中资产的价值,网络参与者可以通过交易所链外购买代币。 网络参与者然后可以存入代币以使他们能够支付交易费用。
区块链治理
某些区块链允许网络参与者提交和投票支持影响网络操作或区块链社区的提案。 通过提交和投票支持提案(公投),区块链社区可以在本质上民主的过程中确定区块链如何发展。 但是,链上治理相对罕见,并且要参与其中,区块链可能要求用户在账户中持有大量代币或被选为其他用户的代表。
在区块链上运行的应用程序
在区块链上运行的应用程序(通常称为去中心化应用程序或 dApp)通常是使用前端框架编写的 Web 应用程序,但使用后端智能合约来更改区块链状态。
智能合约是在区块链上运行的程序,它在特定条件下代表用户执行交易。 开发人员可以编写智能合约以确保以编程方式执行的交易的结果被记录并且无法被篡改。 然而,仅使用智能合约,开发人员无法访问某些底层区块链功能(例如共识、存储或交易层),而是遵守链的固定规则和限制。 智能合约开发人员通常将这些限制作为一种权衡,以实现更快的开发时间,并减少需要做出的核心设计决策。
下一步去哪里
所有区块链都共享一些共同的特征。 Substrate 本身不是区块链,而是一个区块链构建者的工具包,它具有一个模块化的组件框架来创建自定义区块链。 使用 Substrate,您可以获取常见的区块链组件(如存储、共识和加密)并将它们组合起来,按原样使用它们提供的功能或修改它们以适合您的项目目的。
您可以探索以下资源以了解更多信息。