跳到主要内容

区块链基础

ref: https://docs.substrate.io/learn/blockchain-basics/

区块链是一个分布式账本,它以一系列区块的形式记录信息。一个区块中包含的信息是一组有序的指令,这些指令可能会导致状态的改变。

在区块链网络中,独立的计算机(称为节点)相互通信,形成一个去中心化的点对点(P2P)网络。这个网络中没有中央权威控制,通常情况下,每个参与区块生产的节点都存储着构成规范链的区块的副本。

在大多数情况下,用户通过提交一个可能导致状态改变的请求来与区块链进行交互,例如,更改文件所有者的请求,或从一个账户向另一个账户转移资金的请求。这些交易请求被传播(gossip)到网络上的其他节点,并由区块生产者组装成一个区块。为了确保链上数据的安全性和链的持续推进,节点使用某种形式的共识来就每个区块中数据的状态和执行事务的顺序达成一致。

区块链节点是什么

从高层次来看,所有区块链节点都需要以下核心组件:

  • 数据存储,用于记录由于交易而产生的状态变化。
  • 点对点网络,用于节点之间的去中心化通信。
  • 共识方法,用于防止恶意活动并确保链的持续推进。
  • 用于排序和处理传入交易的逻辑。
  • 用于为区块生成哈希摘要,以及签发和验证与交易相关的签名的加密技术。

由于构建区块链所需的核心组件十分复杂,因此大多数区块链项目选择拷贝现有区块链代码库作为开始,这样开发人员可以修改现有代码来添加新功能,而不是从头开始编写所有内容。例如,比特币仓库被分叉创建了Litecoin、ZCash、Namecoin和Bitcoin Cash。同样,以太坊仓库被分叉创建了Quorum、POA Network、KodakCoin和Musicoin。

然而,大多数区块链平台并未设计为允许修改或定制。因此,通过分叉构建新区块链具有严重的局限性,包括原区块链代码固有的可扩展性等局限。在探讨Substrate如何缓解在其他区块链项目中许多相关的局限性之前,了解大多数区块链都具备的一些常见属性是很重要的。通过了解大多数区块链如何运作,你将更好地了解Substrate是如何提供构建区块链的替代方案和能力,以满足你的需求。

状态转换和冲突

区块链本质上是一个状态机。在任何时候,区块链都持有一个当前的内部状态。随着传入的交易被执行,它们会导致状态的改变,因此区块链必须从当前状态转换到新状态。然而,可能有多个有效的转换,会导致不同的未来状态,区块链必须选择一个可以达成一致的单一状态转换。为了在转换后达成对状态的一致,区块链内的所有操作必须是确定性的。为了使链成功地推进,大多数节点必须就所有状态转换达成一致,包括:

  • 链的初始状态,被称为创世状态或创世区块。
  • 在每个区块中记录的已执行交易产生的一系列状态转换。
  • 要包含在链中的区块的最终状态。

在中心化网络中,中央权威可以在互相排斥的状态转换之间进行选择。例如,配置为主要权威的服务器可能按照它看到的顺序记录状态转换的更改,或者在冲突发生时使用加权过程来在竞争对手之间进行选择。在去中心化网络中,节点以不同的顺序看到交易,因此它们必须使用更复杂的方法来选择交易并在冲突的状态转换之间进行选择。

区块链中,将交易批量打包到区块中并选择哪个节点可以提交区块到链上的方法,称为区块链的共识模型或共识算法。最常用的共识模型称为工作量证明共识模型。使用工作量证明共识模型,首先完成计算问题的节点有权提交区块到链上。

对于一条区块链来说,即使某些节点被恶意参与者或网络中断所损害,也要能够容错并提供一致的状态视图,某些共识模型要求至少三分之二的节点始终就状态达成一致。这个三分之二多数保证了网络具有容错性,并能够承受一些网络参与者表现不佳,无论这种行为是故意还是意外。

区块链经济学

所有区块链都需要资源——处理器、内存、存储和网络带宽,来执行操作。参与网络的计算机——产生区块的节点,为区块链用户提供这些资源。节点创建了一个分布式、去中心化的网络,满足了社区参与者的需求。

为了支持一个社区并使区块链可持续,大多数区块链要求用户以交易费的形式支付他们使用的网络资源。交易费的支付要求将用户身份与持有某种类型资产的账户关联起来。区块链通常使用代币来表示账户中资产的价值,网络参与者通过交易所在链外购买代币,然后可以存入代币,以便支付交易手续费。

区块链治理

一些区块链允许网络参与者提交并投票影响网络运营或区块链社区的提案。通过提交和投票提案——公投,区块链社区可以通过在本质上来说是民主的过程来决定区块链的演变。然而,链上治理相对罕见。要参与链上治理,区块链可能要求用户在账户中持有大量代币,或被选为其他用户的代表。

跑在区块链上的应用

运行在区块链上的应用程序——通常称为去中心化应用程序或dApps——通常是使用前端框架编写的Web应用程序,但具有用于更改区块链状态的后端智能合约。

智能合约是一种在区块链上运行的程序,在特定条件下代表用户执行交易。开发人员可以编写智能合约,以确保被编程执行的交易的结果被记录且无法篡改。然而,仅凭智能合约,开发人员无法访问某些底层区块链功能——如共识、存储或交易层,而是遵守链的固定规则和限制。智能合约开发人员通常接受这些限制作为一种权衡,使开发时间更快,并且需要做出的核心设计决策更少。

下一步

所有区块链都具有一些共同特征。Substrate——虽然本身不是区块链,是一个区块链构建工具包,具有模块化的组件框架,用于创建自定义区块链。使用Substrate,你可以采用常见的区块链组件——如存储、共识和加密,并将它们组合起来,使用它们提供的功能,或修改它们以适应你的项目。

您可以浏览以下资源了解更多。

知识点

教程

如果你喜欢直接探索代码,你可以在Substrate Playground中开始构建,或者查阅API参考手册以获取有关使用的Rust crates的详细信息。