技术

Blockchain

一个共享的、只可追加的账本,由一组计算机在没有中心运营方的情况下达成共识。任何人都无法悄悄修改历史记录。

最近审阅: 审阅人Kevin Riedl wiki ↗

区块链是一种具有两个不寻常属性的数据库。第一,它只可追加:你可以添加记录,但无法在不被所有参与者察觉的情况下重写已有记录。第二,没有单一一方控制它。一组节点运行相同的软件,并通过共识机制(工作量证明、权益证明或一种许可制变体)就下一个区块达成一致。其结果是一个多方可以在彼此不信任的情况下信任的账本。

区块链大致分为两类。公有区块链(以太坊、比特币、Solana)是开放的:任何人都可以读取它、运行节点或进行交易,智能合约系统和更广义的 web3 技术栈都住在这里。私有或许可制区块链限制谁可以参与,这通常意味着你用额外的步骤重建了一个更慢、更复杂的普通数据库。如果一家公司控制了所有节点,你得到的不是区块链的优势,而是一个你现在必须运维的分布式系统。

一锤定音的那个问题,举个实际例子:一家物流公司想要一条区块链「好让合作伙伴信任货运数据」。走一遍三项测试。这些记录需要在公司破产后存续吗?并不需要,运行这张网的就是这家公司。互不信任的各方需要在没有运营方的情况下共享状态吗?接近了,但实际上有一方明显是中枢,其他人都连到它。它们需要与其他链上系统做无需许可的可组合性吗?不需要。所以他们真正想要的,是一个权限设好、带审计日志和签名条目的共享数据库,它更便宜、更快,也是他们现有团队就能运维的东西。那套区块链说辞,解决的是一个签名加一个只读副本早已解决的信任问题。

诚实的立场:大多数被宣传为需要区块链的项目其实并不需要。区块链只有在以下情况下才值得其复杂性:你需要能在运营方破产后存续的资产、彼此不信任的各方之间的共享状态,或无需许可的可组合性。其余的一切都是数据库。当公有链确实是正确选择时,手续费和吞吐量通常会把构建推向一条 Layer 2,而不是基础层。我们交付过真正的区块链系统,也劝退过比我们构建的更多的客户。我们的区块链工作从你是否真的需要它开始。

// FAQ

常见问题

一个共享账本,许多计算机各自保存一份副本并通过共识达成一致,因此没有任何单一一方可以重写历史。它以速度和简洁性换取在没有受信中心权威的情况下运行的能力。
公有链以手续费和透明度为代价,给你抗审查性和无需许可的访问。私有链放弃了这些好处,通常最终沦为一个更慢的数据库。如果一个实体控制了节点,普通数据库几乎总是更好的工程选择。
三项测试:资产是否必须在公司破产后存续,互不信任的各方是否需要在没有中心运营方的情况下共享状态,你是否需要无需许可的可组合性?如果都不适用,你需要的是数据库,而不是区块链。