私有链谬论
在所有被炒作的区块链中,一个简单但自我反驳的想法不断涌现,即私有链。与此同时也衍生出一个问题:私有链到底有没有存在的必要?本文就此给出了答案。
本文作者Bèr Kessels,由格密链社区的马佳敏翻译。
为了理解为什么私有链是无意义的,我们必须首先定义什么是区块链(blockchain),什么不是。既然中本聪创造了这个词,我们来看看他的描述是否我们有帮助:
一个点对点的分布式时间戳服务,用于生成交易时间顺序的计算证明。
它确实体现了“区块链”的一些重要特征(中本聪在block和chain这两个词之间加了一个空格,但我使用了当前流行的术语——blockchain):
·点对点:暗示分布;至少排除了中央集权的可能性·计算证明:意味着它是可验证的·时间戳服务/时间顺序:这是目标,但也意味着永久
Marco Iansiti和Karim R Lakhani有一个更容易理解的解释:
一种公开的、分布式账本,可以有效地、可核查的、永久地记录双方之间的交易。
·公开的(通常称为无需许可的)·分布式的(通常称为去中心化的)·可验证的·永久的(通常称为不可变的)
换句话说:任何不符合这些标准的东西,根据定义,都不是区块链。它可能是类似的,或者使用类似的技术,但不是区块链。这是很重要的。
我们也可以从另一方面来看:如果区块链提供了这些特性,我们什么时候需要区块链呢?(可参照下图)
这有相同的看法,但将争论的焦点转向:如果您的需求不符合区块链提供的确切内容,您不需要区块链。对于私有链:如果它不公开,则不需要区块链。我们可以就此打住。
想要一个私有链的理由
那么,为什么人们会首先想到私有链呢?我们可以把论点分成三个主要论点(再加上第四个)。
1、我们可以存储私人数据或其他不应该公开的数据。(我们放弃了公开和可验证部分来保护隐私)2、我们可以控制谁拥有读写权限(我们放弃了公开性来进行控制)3、我们可以更好地扩展(我们放弃了分布式部分以提高速度)。4、我们对在公共平台上发布的安全性和确切特性还不够自信(我们放弃了永久性以获得灵活性)
第四个是使用私有链的唯一有效论据:作为临时阶段,因为你仍在开发并查找区块链应用程序的内容:非常类似于你首次向五个朋友发布应用程序的方式,而不是立即上传到应用程序商店。
所有其他的原因都是纯粹的废话,因为他们不需要区块链来获得完全相同的结果。或者因为根据定义,这样部署,它就不是区块链。可以这样说,在私有环境中部署区块链,它就不再是区块链了。
但是,这不仅仅是文字游戏。请继续关注下文。
私人数据:公开
区块链必须是公开的,以确保持久性或不变性。
让我们将区块链比作一本家庭书籍(用于记录生活的点滴)。当我有这样一本书,并且它存放在我办公室的抽屉里,我是唯一一个可以查看和修改它的人。
所以,当我因为某种原因买了一双昂贵的鞋子,一个星期后我想隐藏这个事实,我可以简单地从书中删除这一行。或者用“剪刀”把它覆盖。boom,我从未买过鞋(根据书中所说)。
但如果家庭成员可以访问这本书,每个人都可以查看或复制,它就会变得更加“不可改变”。我仍然可以删除“昂贵的鞋子”的记录,但人们可能知道,家人可以打电话给我。如果有更多的人可以查看这本书(为什么不将每周的副本邮寄给所有的家人和朋友?),之后更改内容变得越来越困难。
然而,区块链还有一个特点:通过应用密码学技术,它可以让人们轻松检测出书中的一行被更改了。因此,拥有副本的所有人都可以轻松地察觉到一些不应该被改变的事情已经发生了。但只有在其他利益相关者可以获得副本时,这种特性才有用。在私有链中,很容易改变一些东西,即使这种改变会带来很大的、明显的影响。仅仅是因为没有人见证这显而易见的影响!
公开,是确保永久性的因素。不是因为改变某件事是不可能的(这是完全可行的),而是因为其他参与者可以看到这种改变或其加密效应。
例如,从理论上讲,比特币也不是永久性的。如果有足够多的参与者决定把你一年前付给John的0.01btc送给Mallory,那就会发生这样的事情:历史将被改写。比特币的不变性源于这样一个事实:任何人都能察觉到这种变化,而绝大多数人都需要承认这种变化。
此外,公开还确保了参与者在进行这种回溯性改变时将受到损害:他们与(比特币)区块链有利害关系,因为他们刚刚证明了这个区块链可以被回溯,所以它会跌价。
在区块链中,无论是公开的还是私人的,不可变性更多的是所有参与者的共识,即我们不会改变历史。承诺!这并不是什么神奇的“来自密码学的东西”。在私有链中,这个承诺很容易实现。甚至更容易执行:如果Mallory改变了一些旧记录,就把他扔出去!
记住这一点:不可变性是一种协议(共识),因此您可以选择任何数据库,甚至共享excel表,然后彼此承诺不会更改任何内容。您所需要的只是检测某些内容发生了更改,这是大多数数据库系统(或日志记录)将提供的。您甚至可以在其中添加一些密码学技术,使篡改更明显或更容易恢复(或处理)。
无需许可,因为需要控制。
区块链必须是无需许可的(无权限),以确保永久性。
这其实很简单。如果你能控制谁有权限,你就能控制谁来决定事实。因此,你掌握着以任何你想要的方式改变历史的钥匙。
在家庭用书的类比中,谁可以控制书的读写,延伸开来,就是可以决定书中内容的人。
推而广之,那个人也就完全拥有改写历史的权限。因为当访问控制器想要更改某些内容时,他可以简单地将反对更改的任何人从写(和读)访问中删除,然后将自己(或代理)权限提升为能够写入。然后改变它。
如果其他人还能查看,他们可能会注意到历史被改写了,但却没有能力对此做些什么。事实是区块链中的内容,由于缺乏权限,他们无法更改。这样一个回溯性的改变是多么笨拙或多么明显:拥有访问控制权的人可以通过该权力进行这些变更。
区块链中的不变性并非来自于一种神奇的技术。但它来自于区块链所需的条件:运行它的环境或“世界”使其不可变。
具有讽刺意味的是,实际上,有一种神奇的技术可以确保不变性。这种技术被称为区块链。同时必须是公有链。我们回到原点。
不采用分布式,因为扩展或速度。
区块链必须是分布式的,以确保可验证的事实。
分布式的反面是中心化。按照“家庭用书”的比喻,分布式意味着每天会有好几次(甚至在每次更改之后)都会在人们之间复印和交换副本。然而,更重要的是,这些副本都不被视为“事实”。
如果只有一本家庭用书,那么改变里面的内容(比如撕掉一页纸)是微不足道的,如果做的好,是无法被察觉的。
显而易见的解决方案是复印每一页(例如每天),并将这些副本保存在多个地方。这就是分布式。这是低效的、缓慢的和昂贵的,而不是简单地相信持有的一个副本。但实际上这就是区块链的作用。因为信任的确切原因:这样我们就不必相信一个副本持有人告诉我们的事实。这就是区块链无需信任的本质。
当所有的副本在任何时刻都可以被认为是真实的,任何副本之间的任何差异都将被检测到,并能够触发警报。那么,我们就需要一个冲突解决方案:哪一个才是事实。
在比特币中,他们只是简单地说:大多数副本持有者拥有的是事实。如果你的书被五个人抄写,其中有两个人的书中包含"伯克买了昂贵的鞋子”,但另外三个没有,则伯克没有买昂贵的鞋子。
如果只有一本书被选为真理,而所有其他的书都只是用来证明某些东西在某个时候存在的副本,那真的证明不了什么:谁能说持有副本的人没有在里面伪造一些记录?
所有参与者之间的分配至关重要,因为任何中央权威机构都可以随意改变历史而不被发现:验证是不可能的,并且需要对权威机构甚至是一小部分权威机构信任。
回过头来:当你不需要这种不信任感,当你可以信任一个中央权威时,你根本就不需要区块链。或者如果需要信任,有权威,从本质上讲,它不是区块链。
我最喜欢的加密货币是怎样的?
如果它有一个“私有的”或“需要许可的”区块链,其实它根本就不需要使用区块链。它可能仍然是一个非常现代的数据库(由加密支撑的数据库)所支撑的加密货币,但它只是没有使用区块链。因为它没有使用区块链,所以它缺少一个或多个关键特征。
这意味着一家公司可以随时拿走你的加密货币(例如,Ripple)。或者这意味着它从根本上是不安全的。或者它可能会提供非常有趣的解决方案。
我可能会基于信任和谷歌电子表格构建一个非常有用和有趣的货币兑换系统。但它不是区块链。它只是谷歌服务器上的一个电子表格(围绕它有一个非常新颖的想法)。
“ 你说番茄,我说番茄 “
如果您想将任何数据库称为区块链,请继续。如果您坚持称一个谷歌电子表格(spreadsheet)为区块链:好的。它不是一些受保护的或商标的术语。你甚至可以称我的自行车为区块链。毕竟它有一条链子。
但这对谁都没有帮助。因为你要么是在重新发明一个轮子,要么是在一个更合适的地方使用一种非常低效的技术,更高效的技术会帮助你做得更好。
一些私有链不是区块链,因为它们只是其他技术。
但遗憾的是,大多数私有链实际上只是低效的、不安全的或仅仅是愚蠢的实现,在这种实现中,公有链的相关设置并未被采用。这没有提供公共版本的任何好处,但具有所有的缺点。
以git为例:git不是区块链;git是DAG;所以别叫它区块链。DAG是一种非常优雅、高效的数据结构。这甚至可以用于在一小群需要对其数据进行加密安全篡改检测的参与者中进行分布式数据存储。我之所以提到git,是因为有些加密货币正是这样做的:使用DAG在一组私有参与者之间共享“真理”。
或者以BitTorrent为例:BitTorrent不是区块链;所以请不要这样称呼它。BitTorrent是Merkle树的一种非常巧妙的实现,并且非常适合在大量参与者之间分发大量数据。它并不是区块链。我之所以提到它,是因为如果您需要确保所有参与者都有数据的副本,这项技术通常就足够了。
实际上有成千上万种数据库类型,有些允许极其简单的同步,有些允许惊人的吞吐量,还有一些允许真正彻底的一致性检查。或者用密码签名的日志。或加密数据,或共享部分数据,或…。我们不会因为炒作而称所有这些为“区块链”。它们不是:它们只是特定用例的适当解决方案。区块链就是这样一种解决方案,和大多数技术一样,它适用于非常小的用例子集。然而,私有版本永远不可能是这样的子集。