启动一个去中心化组织:第一部分

Vitalik Buterin于2013年12月31日发布,我翻译了它,供大家参考。

美国总统候选人米特·罗姆尼提醒我们,公司就是人。无论你是否同意他的支持者从这一主张中得出的结论,这份申明肯定包含着大量的真理。什么是公司,总而言之,不过是某群人在一套特定的制度下一起工作。当一家公司拥有财产时,其真正意思时有一份法律合同明确规定这些财产只能在现有董事会成员的控制下为了某些目的而使用——这一名称本身可由特定股东修改。如果公司做什么事情,那是因为董事会已经同意这么做了。如果公司雇佣员工,这意味着雇员同意在一套特定的规则下为公司的客户提供服务,特别是涉及付款的规则。当一家公司拥有有限责任时,着意味着一些特定的人员被授予了额外的特权,可以在不担心政府启诉的情况下行事——这群人比单独行事的普通人拥有更多的权利,但是最终还是会成为普通人。任何情况下,一直下来只不过是人与合同的关系。

然而,产生了一个有趣的问题:我们真的需要人吗?一方面,答案是肯定的:尽管在后奇点时代,未来的机器能够独自生存,但是在可预见的未来,一些与物理世界互动的人类活动是完全必须的。然而在另一方面,从过去两百多年的发展来看,答案倾向于否定。工业革命使我们第一次开始大规模地用机器取代人类劳动,现在我们拥有先进的数字化工厂和机械臂,它们可以独立生产汽车等复杂产品。然而这只是低端自动化,不再需要普通的体力劳动者,代之以少量的专业人员来维护机器人,而公司的管理层保持不变。那么问题来了,我们能不能从另外一个方向来处理这个问题:尽管仍然需要人类来完成某些特定任务,那能不能将管理也从等式中移除?

大多数公司都有某种类型的宗旨申明,大多数宗旨是为股东赚钱,有时候这些宗旨也含有生产某种创新的特殊产品的情怀,或者有时候帮助社区参与混合,至少理论是这样。目前,该宗旨申明仅在董事会以及最终股东对其解释的情况下存在,但是如果在现代信息技术的力量下,我们能将宗旨申明编成代码,创造一个不可侵犯的合同,创造收入,为人们履行某些职能付款,找到硬件让它自身运行,所有这些都不需要自上而下的人为指导?

正如丹尼尔·拉米尔(Daniel Larmier )在《让我们谈谈比特币》中通过他自己的探索在这个概念上指出的那样,从某种意义上来说,比特币本身就可以认为是这种东西的非常早期的模型。比特币有2100万股股份,这些股份由比特币的股东持有。它有员工,并且有一份合同支付员工工资:大概每十分钟向随机一名员工支付25BTC。它甚至有自己的营销部门,很大程度上由股东自己组成。然而,它也非常受限,除了当前的时间它对世界几乎一无所知,除了改变难度它不能对自己的功能做任何改变,实际上它本身没有做任何事情。它简简单单存在,留给世界来认识它。问题是,我们能做的更好一些吗?

运算

首先挑战是明显的:这样的公司究竟如何做出决定?编写这样的代码很容易,至少给定预期的环境,输入给定的参数,计算出需要的操作。但是由谁来运行代码呢?如果代码只是简单的作为计算机程序存在某台特定的机器上,那么由什么来阻止机器所有者来关掉这台机器,或者甚至修改代码把所有的钱发送给他自己?对于这个问题,唯一有效的答案是:分布式计算。

然而,我们寻找的这种分布式计算与SETI@home和Folding@home项目所使用的分布式计算是不同的。在那些情况下,仍然存在中心服务器从分布式节点收集数据,并发送请求。更准确的说,这里所需要的是我们在比特币中看到那种分布式计算:一套分散的自我验证自身运算的规则。在比特币中,这是通过简单的多数投票来完成的,如果你没有使用多数网络力量帮助计算区块链,你的区块将被抛弃,你也得不到任何区块奖励。该理论认为单一的攻击者没有足够的算力来颠覆这一机制,因此唯一可行的策略本质上是“随波逐流”和诚实行事,来帮助支持网络,并获得区块链奖励。因此我们能简单的应用这个机制来做去中心化计算吗?也就是说,我们能简单的要求网络中的每一台计算机来评估一个程序,然后只奖励那些答案与投票多数相符的人吗?遗憾的是,答案否定。比特币是一个特殊例子,因为比特币简单:它只是一种货币,并不携带任何属性和它自己的隐私数据。另一方面,虚拟公司需要将私钥存储到比特币钱包中——一段数据,任何人不能完全获取,不像在比特币交易中那样对任何人提供。但是,当然,私钥仍然必须有用,这样我们所需要的是交易签名系统,甚至以一种去中心化的方式计算生成比特币地址。幸运的是,比特币能让我们准确的做到这一点。

第一个可能想到的解决方案多重签名系统。假设有一千台靠得住的电脑,它们继续支持这个公司,每台电脑创建一个私钥,这样在它们中间生成501-1000个多重签名地址。要使用这些资金,只需简单的构建一个具有来自任何501个节点的交易,并把它广播到区块链中。这里有一个明显的问题:交易将变得很大。每个签名大约由70字节构成,那么其中501个节点构成了35K字节的交易——这很难被网络接受,因为比特币默认拒绝任何超过10000字节的脚本。其次,解决方案针对比特币,如果公司想为了非财务目的存储私人数据,多重签名脚本是无用的。多重签名地址之所以有效,是因为有比特币网络来评估它们,并根据评估是否成功来决定是否将交易放入区块链。在私有数据的情况下,一个类似的解决方案本质上就是需要一些分散的权力,只有1000个签名中的501个签名才可以把数据发出去——这让我们回到了起点。

然而,仍然有希望使用另外的解决方案;密码学家通常把它称为“安全多方计算”。在安全多方计算中,对程序的输入(或者更准确地说,对模拟“电路”的输入,因为安全多方计算无法处理“如果”语句和条件循环)使用称为沙米尔秘密共享的算法进行分割,并将一段信息提供给每个参与者。沙米尔秘密共享算法能够把任何数据分成N个片段,这样它们中的K个片段(不是K-1)都足以恢复原始数据——运行算法时你可以选择K和N是什么。2和3,5和10,501和1000都是可能的。然后,可以以分散的方式,在数据片段上对电路进行评估。这样计算到最后,每人都可以得到一个计算的结果。但是在计算过程中,任何个人都不能对正在发生的事情有丝毫的了解。最后,片段放在一起,显示出结果。运算时间是O(n3)。意味着评估计算的计算步数大概与参与节点数的立方成正比。有10个节点时,计算步数是1000,有1000个节点时,运算步数是10亿。10亿步循环计算用C++在我的笔记本电脑上大概要花20秒时间,服务器只需花几分之一秒。因此1000个节点现在大致处于计算实用性的极限。

事实证明,安全多方计算可以用来生成比特币地址和签署交易,对于地址生成,协议很简单:

1.每人生成一个随机数作为私钥。

2.每人计算私钥对应的公钥。

3.每人公开他们的公钥,然后使用沙米尔秘密共享的算法计算出一个公钥,该公钥可以从公开的1000个公钥中的任何501个进行重构。

4.从那个公钥就产生了一个地址。

因为公钥可以被整数加减乘除,令人惊讶的是该算法的工作原理与你预期的完全相同。如果每人用相同的方法组合一个500-of-1000私钥,那么该私钥可以使用发送到地址的钱,该地址是通过对相应的公钥使用501-of-1000算法生成的,因为沙米尔秘密共享实际上只是一个运算公式。也就是说,只使用加减乘除,就可以在公钥之上计算该公式,就像计算地址一样简单。因此,私钥转换为公钥的运算是否在代数式之前还是之后进行并不重要。签名交易可以用相同的方法进行,尽管过程有些复杂。

安全多方计算的美妙之处是它可以延申到比特币之外,它可以容易的应用到企业依赖的人工智能运算,所谓的“机器学习”就是一套运算的通常叫法,这套运算探测现实世界数据的模型,允许计算机在人工干预之外来建模,大量应用于类似垃圾邮件过滤器和自动驾驶汽车等场合,这也“只是代数”,也能用安全多方计算来实现。实际上,如果那个计算在输入单元上分解电路,任何计算都能做到。对于这种可能的复杂性自然有一些限制,把复杂运算转化为电路通常会引入额外的复杂性,并且,如上所述,沙米尔保密共享独个儿可能会很昂贵,因此,实际上它只能应用于核心运算之中,更复杂的高级思维任务最好交给外部承包商来解决。




Excited about this topic? Look forward to parts 2, 3 and 4: howdecentralized corporations can interact with the outside world, how some simplesecure multiparty computation circuits work on a mathematical level, and twoexamples of how these decentralized corporations can make a difference in thereal world.

 


原文:Bootstrapping

A Decentralized Autonomous Corporation: Part I | Ethereum Foundation Blog

你可能感兴趣的:(启动一个去中心化组织:第一部分)