区块链达成什么
注:仅选译,原文发布于
作者:Arthur B. @ Tezos
区块链技术确实可能引领许多创新应用。但是,要利用它的好处,必须理解这些好处所解决的基本技术问题。
什么是区块链?
区块链的正式定义有争论。在本文,我采用以下:
区块链:一种数据结构,将共识记录演绎为一系列操作,一组参与者根据加密协议,将这些操作打包成区块,并对这些操作进行验证。其用于实现分布式及去中心化分类账。
区块链还有其他定义,其中一些定义,通过经济激励指定共识形成,另一些定义将共识机制进一步限制为由 Bitcoin 所引入的 proof of work 方案。这些定义没有错,“区块链”一词本身太新,不能断言某一种定义最合适。
分布式分类账解决什么问题,如何使用区块链来实现它们?为了回答第一个问题,我们将讨论一个论坛示例。这将概述“要求使用分布式分类账”的那些特定问题。
案例研究:论坛
想象一个典型在线论坛:消息由经过身份验证的用户发布,以响应其他消息,形成讨论 threads 。某些用户可能被许可在某些特定子论坛中发帖,或被禁止这样做,一些用户会看到自己的帖子被点赞,从而获得 karma 。
使用单个数据库来实现这样的系统非常简单。如果我们希望运营一个去中心化论坛,通过将由区块链驱动的去中心化分类账视为数据库,来进行实现,似乎合乎逻辑。但是,对去中心化论坛的性质做一个审查,可以发现,这种实现带来的好处很少或没有:
对于去中心化论坛而言,确实需要考虑以下实施:
- 客户端连接到一个点对点网络,这个网络维护一个分布式哈希表。客户端 requests 来自其节点的消息 headers 列表。使用这些 headers ,客户端重建各种讨论 threads 。Censorship may be possible if 恶意节点将一个客户端与网络的其余部分相隔离,but that is also the case when using blockchains 。
- 可通过在消息 headers 使用 a very nominal proof-of-work hash,或通过使用由 popular curators 维护的白名单和黑名单,来避免垃圾邮件。
- 通过允许多个密钥解密消息内容,子论坛中的读取访问权限( Read access )的管理方式,非常类似于分布式分类账。
- 最终,写入访问权限由每个查看者自行决定。如果一个查看者决定她想要忽略写入访问规则(write access rules )并阅读所有声称有效的消息,她可这样做而不影响其他任何人。但是,在大多数情况下,她可能想使用对准入的共识(agreed upon permissions),来过滤消息。一个 K out of N 签名方案可授予及撤销此类准入权限。赞成票和反对票可视为特殊帖子。它们在点对点网络上传播,由每个客户端汇总,以确定某个用户的 karma 或一个帖子的可见性。
一个 DHT ,如 Cassandra, Chord, Kademlia 可驱动这个分布式论坛,没必要使用分布式分类账。
我们不需要区块链来实现以上这一切,原因是,我们在网络上正在表达的所有结构碰巧都是持久性数据结构( persistent data structures )(也称为不可变数据结构,或更不常见的说法是,仅附加数据结构[append-only data structures])。在倾向避免使用可变变量的函数式编程语言中,这些结构非常普遍。
持久数据结构通常看起来像一棵树(更一般地说,是有向无环图[ directed acyclic graph ])。例如,论坛中的一个 thread 可能如下所示:
在此图中,一个用户发布一条消息,指出该项目取得重大进展。因为存在错别字,该消息后来被编辑,然后有两个回复,其中一个回复被点赞。
注意,此图中没有回路( loops)。所有对象都将自己自由地附加到先前对象上。一旦创建,消息自身就永远不会被修改,它们是不可变的。在一个论坛中,究竟是什么需要可变性?我想到三种可能性:
- 用户名
- 获许用户量上限( capping the number of permissioned users )
- 消息的时间戳 ( time-stamping of messages )
用户名
Zooko 三角假设。Namecoin 似乎是此三角的一个例外,但其安全性取决于参与者(矿工)的行为,而非数学原理。
在区块链出现之前,此问题有两种解决方法:
- 放弃对“拥有对一个特定密钥的所有者的共识”的要求( Drop the requirement of having a consensus over the owner of a specific key )。对于每个参与者而言,你可依靠信任网络自行决定密钥和身份之间的关联,或你可以只是接受第一次连接期间建立的密钥值,如 SSH 所鼓励。至关重要的是,与数字货币不同,此处共识的缺乏不太重要。如果我决定,我真的希望在我的机器上,www.google.com 指向 Microsoft 的 Bing IP 地址,此操作不会影响其他任何人。
- 放弃对去中心化的要求,依靠传统证书颁发机构。参与者可轻松地审核此证书颁发机构,如察觉其注册表的任何无效更改,将其视为欺诈。
现在,我们可以使用区块链如 Namecoin 来确保一单个密钥与一个给定名称相关联。如果我们能够容忍很多人声称对一单个用户名的所有权,区块链就完全没有必要了。
Lesson:区块链可以计数(如“合计”,在这种情况下,计数为 1),DHT 不能计数(blockchains can count [as in “tally”, and in this instance, count to one] DHTs cannot.)
向一定数量的人授予权限( Giving permissions to a set amount of people )
现在应该清楚,为什么使用仅附加数据结构,将特定准入权限授予一定数量的人,是无法实施的:这些图中的节点无法计算其子级。在大多数论坛中,管理员可将读取访问权限自由授予或拒绝任意数量的人。但是,可以想像这样一种情况——预计有一定数量的人获得这项权利( where a set number of people is expected to receive this right )。在这种情况下,将需要区块链。任何三个管理员可选出一个新的管理员,这样的论坛,可用 DHT 可实现,但如果我们要求不超过比如 10 个管理员,则需要一个分布式分类账。
时间戳
根据应用的不同,准确可信的消息时间戳可能很微妙。虽然在讨论 thread 中,消息自然地进行了排序,但人们可能想知道两个回复中的哪个首先提交于一个 thread 中。这可通过一个可信时间戳服务或区块链来实现。时间戳能力不属于区块链维护参与者验证的共享状态的能力范畴( 此句翻译存疑:The ability to timestamp falls out of blockchains’ ability to maintain a shared state validated by the participants )。
表示可变数据结构
变量突变(Variable mutation )本质上是一种物理行为:当一个程序使用可变变量而不是不可变变量时,在物理层,会发生不同现象。实际上,突变会破坏信息(先前值),因此必须遵循热力学第二定律释放热量。Landauer 原理断言,擦除 1 bit 信息所需最小能量为 kT log 2,其中,T 为系统温度,k 为玻尔兹曼常数。擦除 1 bit 是不可逆操作,它必须提升宇宙的熵。
幸运的是,计算机科学家发明了一种技巧,无需真正进行突变,就能模拟突变。不删除旧值,我们只是保留它,但在其之上添加新值。例如,在以下示例,值“ Abc”已替换为值“ Def”。我们使用仅附加数据结构表示了变异。这也被称为 monad 。实际上,我们已经用链表替换了可变变量。
只是有一个问题,我们的链表实际上是一棵树。实际上,可以创建以下结构,特别是,如果多个参与方试图同时引入突变。在这种情况下,列表有多个“heads”,或者树中有多个“leaves”。
寻找共识
如果我们只跟踪列表的“head”,将非常方便,但是这样做将需要实现突变,因为该 head 在不断变化。我们回到了我们前面所描述的相同问题:我们需要一个 head ,一单个共识值。
比特币解决此问题的方法是,在每个区块上附加一个 proof-of-work 。拥有最多 work 量的分支,被视为具有权威性( canonical )的分支。协议附有经济激励措施,以吸引矿工达成共识并在同一分支开展工作。
如何选出一个具有权威性的分支,人们可能会考虑许多其他规则。人们可能选择由最大数量的stakeholders 签署的分支,拥有最多交易活动的分支,或者只是由 K out of N 个受信方签署的分支。本质上,区块链算法的特征是,在它选择代表分支的共识的这个选择过程中,所遵循的程序(What characterizes a blockchain algorithm is essentially the procedure by which it picks the consensus representing branch)。
结论
区块链不只是分布式数据库。它们是一种数据结构,可用来表示一个共享,可变的单值(singleton)。共享,是因为有多方可访问它;可变,是因为它们可修改它;单,是因为有一个这样的确切值(singleton because there is exactly one such value)。
译文仅供参考。
原文:https://ex.rs/what-do-blockchains-accomplish/
作者:Arthur B.
编译:东林
参与讨论(0)