权益证明
上QQ阅读APP看书,第一时间看更新

以太坊原文发表于2014年1月23日的《比特币杂志》。

下一代加密货币和去中心化应用平台

过去一年,围绕所谓的“比特币2.0协议”的讨论越来越多,这是一种受比特币启发的替代加密网络,其目的是让底层技术能够用于加密货币之外的用途。最早实现这一想法的是域名币(Namecoin),这是一种创建于2010年、用于去中心化域名注册的类似比特币的加密货币。最近,我们看到了染色币,它允许用户在比特币网络上创建自己的货币,以及诸如万事达币(Maste rcoin)、比特股(BitSha res)和合约币(Counterparty)等旨在提供金融衍生品、储蓄钱包及去中心化交易等功能的更先进的协议。但到目前为止,所有已经发明的协议都是专门化的、针对特定行业或应用程序的详细功能集,它们通常都有金融性质。现在,包括我在内的一群开发人员想出了一个相反的项目:一个旨在尽可能通用并允许任何人为几乎任何可以想象的目的创建专门应用程序的加密货币网络。这个项目就是以太坊。

加密货币协议就像洋葱

许多加密货币2.0协议都有一个共同的设计理念:正如互联网一样,当协议能分成不同的层次时,加密货币设计将会最为有效。根据这种思路,比特币被认为是加密货币生态系统的TCP/IP(传输控制协议/网际协议),其他下一代协议可以建立在比特币之上,就像我们在TCP之上有SMTP用于电子邮件,HTTP用于网页,XMPP用于聊天一样,它们都有一个通用的底部数据层。

到目前为止,遵循这种模式的三个主要协议是染色币、万事达币和合约币。染色币协议的工作方式很简单。首先,为了创建染色币,用户可以对特定的比特币做标记,以此表示特殊含义。例如,设想鲍勃是黄金的发行人,他可能希望标记一些比特币,并说每个聪(satoshi)代表0.1克可从他那里赎回的黄金。协议可以通过区块链跟踪这些比特币,于是就可以随时知道谁拥有了这些比特币。

万事达币和合约币要更抽象一些,它们使用比特币区块链存储数据,因此万事达币或合约币的交易就是比特币交易,不过协议会以完全不同的方式解释交易。一个人可以有两笔万事达币交易,一笔发送1个万事达币,另一笔发送100 000个万事达币,但从一个不知道万事达币协议如何工作的比特币用户的角度看,这两笔交易看起来都像是发送0.0006个比特币的小交易。万事达币的特定元数据会被编码在交易输出结果中。然后,万事达币用户需要在比特币区块链中搜索万事达币的交易,以确定当前万事达币的资产负债表状况。

我个人有幸与染色币和万事达币协议的多位发起者有过直接交流,并深度参与了这两个项目的开发。但是,经过大约两个月的研究和参与,我最终意识到,尽管在低级协议之上使用此类高级协议的基本想法值得称赞,但正如目前的情况一样,它们的执行过程存在根本性的缺陷,这很可能会损害项目的吸引力。

造成上述情况的原因并非协议背后的想法不好;这些想法都很棒,仅社区的反应就足以证明提出这些想法的人正在尝试做一些非常有必要的事情。真正的问题在于,他们试图在比特币之上构建高级协议,而低级协议根本不适合这项任务。这并不是说比特币不好,或者不是革命性的发明;作为一种存储和转移价值的协议,比特币相当出色。但是,就作为一种有效的低级协议而言,比特币的效果较差;比特币不像一个可以在其上构建HTTP的TCP,而是像SMTP;它是一种可以很好地完成其目标任务(就像在SMTP的情况下是电子邮件,在比特币的情况下则是金钱)的协议,但要作为其他任何事情的基础则不是特别合适。

比特币的具体问题集中在一个地方:可扩展性。比特币本身具有加密货币的可扩展性;即使区块链膨胀到超过1TB(太字节),也有一种称为“简化支付验证”(SPV)的协议,如比特币白皮书所述,该协议允许只有几兆字节带宽和存储的“轻客户端”安全地确定它们是否已经收到交易。但是,对于染色币和万事达币,这种可能性并不存在。原因是这样的:为了确定染色币的颜色,你不仅需要使用比特币简化支付验证来证明它的存在,还需要一直追溯它的起源,并在每一步进行简化支付验证。有时,反向扫描是指数型的,由于使用元币(metacoin)协议,如果不验证每一笔交易,就无法知道任何事情。

这就是以太坊打算解决的问题。以太坊并不打算成为瑞士军刀式的协议,有数百种功能来满足每一种需求;相反,以太坊的目标是成为优秀的基础协议,允许在其基础上,而不是在比特币的基础上构建其他去中心化的应用程序,并为这些程序提供更多的工具,让它们能够充分利用以太坊的可扩展性和效率。

合约,不仅仅为了差价

在开发以太坊的时候,人们对允许在加密货币之上创建金融合约有很大兴趣;合约的基本类型是“差价合约”(CFD)。在差价合约中,双方同意投入一定金额的资金,然后根据基础资产的价值按一定比例提取资金。例如,一份差价合约可能会让爱丽丝和鲍勃各投入1 000美元。30天后,区块链会自动返还爱丽丝1 000美元本金,并且在此期间,莱特币兑美元的比价每上涨1个单位,系统就会多返还其100美元收益;剩余部分的资金则会返还给鲍勃。这些合约允许人们在不集中交易的情况下以高杠杆率对资产进行投机,或者通过取消他们的风险敞口来保护自己免受加密货币波动的影响。

在这里需要指出的是,差价合约显然只是公式合约(contracts for formulas)指根据数学公式订立的合约。——译者注这个更一般概念的特例。除了让合约从爱丽丝那里获取 x美元,从鲍勃那里获取y美元,然后返回给爱丽丝x美元,并按照给定标价物每上涨1美元,额外返还z美元的情形,一份价差合约应该还能够返还给爱丽丝基于任何数学公式计算得出的资金数量,而不论合约的复杂程度如何。如果公式允许随机数据作为输入,这些广义的差价合约甚至可以用于执行点对点(peer-to-peer)赌博。

以太坊采纳了这个想法,并将它推进了一步。以太坊上的合约不再是由双方开始和结束的协议,而更像是由区块链模拟的一类自治主体。每份以太坊合约都有自己的内部脚本代码,每次发送交易时都会激活脚本代码。脚本语言可以访问交易的值、发送方和可选数据字段,以及一些块数据和它自己的内存,并把它们作为输入,同时还可以发送交易。为了制作一份差价合约,爱丽丝会创建一份合约,并在其中存入价值1 000美元的加密货币,然后等待鲍勃发送含有1 000美元的交易来接受合约。随后,合约会设定一个计时程序,30天后,爱丽丝或鲍勃可以向合约发送一笔小额交易,以再次激活它并释放资金。

以下是用高级语言编写的以太坊货币合约代码示例:

然而,除了这种狭义的差价合约模型之外,白皮书还给出了许多其他交易类型,这些类型将通过以太坊脚本实现,其中包括:

● 多重签名托管。其精神与比特币仲裁服务BitratedBitrated是比特币生态中的声誉管理与消费者保护系统。它在区块链技术上建立了信任层,将消费者保护、欺诈预防机制引入比特币和其他加密货币。其目标是为加密货币提供工具,使市场能够使用用户信誉、智能合约、自愿但具有约束力的仲裁程序进行自我监管。——译者注类似,但规则更复杂。例如,签名者无须手动传递部分签名的交易;人们可以在区块链上一次对一笔取款进行异步授权异步授权模式是指系统将授权业务的交易信息和凭证影像资料传输至发起机构的本地终端,由本机构会计主管进行审核、授权的模式。——译者注,然后在有足够的人授权后自动完成交易。

● 储蓄账户。一个有趣的设置如下:假设爱丽丝想存一大笔钱,但不想冒私钥丢失或被盗的风险。她与“半可信”(semitrustworthy)半可信是一个密码学术语,它指交易的第三方具有“诚实但好奇”(Honest-but Curious,简称HBC)性质。也就是说,作为交易的第三方,它会在交易过程中如实执行交易者的相关指令,但会要求交易者提供对应的数据。值得一提的是,semi trustworthy不同于另一个概念,即semi-trusted,后者指第三方可能出错或欺骗交易者,但不会和其他交易者合谋来共同欺骗交易者。——译者注的银行鲍勃签订了一份合约,规定如下:爱丽丝每天的默认取款上限为1单位;在经鲍勃批准后,爱丽丝可以提取任何金额;鲍勃每天最多可以独自支取0.05单位。通常,爱丽丝一次只需要少量金额,如果她想要更多,可以向鲍勃证明自己的身份并取款。如果爱丽丝的私钥被盗,她可以去鲍勃那里,把钱转移到另一份合约中,以免窃贼盗取超过1单位的资金。如果爱丽丝丢失了她的私钥,鲍勃最终能够恢复她的资金。如果鲍勃被发现居心不良,那么爱丽丝可以比他快20倍地提取自己的资金。简言之,以上就达到了传统银行业的所有安全设定,但几乎不用任何信任。

● 点对点赌博。任何类型的点对点赌博协议都可以在以太坊上实现。一种非常基本的协议就是对随机数据(如区块哈希值)的差价合约。

● 创建自己的货币。使用以太坊的内存存储,你可以在以太坊内创建一种全新的货币。这些新货币可被设定为允许人们彼此互动,开展去中心化交易,也可以加入其他任何高级功能。

这就是以太坊代码的优势:因为脚本语言被设计成除收费系统外没有任何限制,所以基本上任何类型的规则都可以在其中编码。甚至可以让整个公司通过合约来管理它在区块链上的储蓄,而这份合约规定无限制动用资金需要公司有60名现任股东同意(或许,如果是30名股东,那每天最多只能动用1单位资金)。不那么传统资本主义式的其他结构也是可能的;一种想法是建立一个民主组织,唯一的规则是邀请新成员时必须有三分之二的现有组织成员同意。

超越金融

但是,金融应用程序只触及以太坊和以太坊之上的加密协议的表面。虽然以太坊的金融应用最初可能会让加密货币社区的许多人兴奋不已,但长期的愿景应该更关注以太坊与其他非金融点对点协议的协作模式。到目前为止,非金融对等协议面临的主要问题之一是缺乏激励,也就是说,与中心化营利平台不同,去中心化平台缺少参与的经济理由。在某些情况下,参与本身在一定意义上就是对参与者的回报;正是出于这个原因,人们才持续编写开源软件、为维基百科做贡献、在论坛上发表评论、撰写博客文章。然而,对于点对点协议而言,参与通常不是任何有意义的“有趣”活动;相反,它需要人们投入大量资源,耗费CPU(中央处理器)和电池电量让守护程序(Daemon)Daemon原意是希腊神话中半神半人的精灵。在计算机术语中是连续运行的程序之意。——译者注在后台自动运行而不必管它。

例如,很长一段时间以来,已经有了诸如FreenetFreenet是一种点对点的浏览器,它可以让用户匿名地访问暗网。——译者注之类的数据协议,它们主要为每个人提供去中心化的、不受审查的静态内容托管。不过,在实践中Freenet的速度非常慢,而且很少有人贡献资源。所有文件共享协议都面临着同样的问题:尽管利他主义足以传播流行的商业大片,但在传播那些不那么受主流偏好的内容时,利他主义的效果则明显降低。因此,恰恰相反,文件共享的点对点性质实际上可能加剧了娱乐和媒体制作的中心化,而非相反。但是,如果我们增加激励措施,让人们不仅可以建立非营利项目,还可以通过参与网络做生意和维持生计,那所有这些问题都有可能得到解决。

● 激励性数据存储。它本质上是一个去中心化的Dropbox。其原理如下:如果用户希望网络备份一个1GB(千兆字节)的文件,他们可以从数据中构造一个被称为“默克尔树”的数据结构。然后,他们将树根以及10个以太币放入一份合约中,并将文件上传到另一个网络。这个网络的节点会出租其硬盘空间,并接收消息。每天,合约都会自动选择树的一个随机分支(例如,“左→右→左→左→左→右→左”),将它存在一个文件区块上,并向第一个节点提供0.01个以太币作为提供该分支的报酬。节点为了最大化其获得奖励的机会,将会存储整个文件。

● Bitmessage和TorTor即“洋葱路由”(The Onion Router),它可以让用户在互联网上进行匿名交流。——译者注。Bitmessage是下一代电子邮件协议,它是完全去中心化和加密的,允许任何人安全地向任何其他Bitmessage用户发送消息,而不依赖于除网络以外的任何第三方。然而,Bitmessage有一个很大的可用性缺陷:你需要将消息发送给包含34个字符的Bitmessage地址,例如“BM-BcbRqcFFSQUUm-XFKsPJgVQPSiFA3Xash”,而不能将它发送到一个“人类友好型”的电子邮件地址,比如myname@email。以太坊合约提供了一个解决方案:人们可以在一个特殊的以太坊合约上注册自己的用户名,Bitmessage客户端可以查询以太坊区块链,以获得与用户名相关联的34个字符的Bitmessage地址。在线匿名网络Tor也面临同样的问题,因此也可以从这个解决方案中受益。

● 身份和声誉系统。当你可以在区块链上注册你的用户名后,下一步是显而易见的:在区块链中建立信任网络。信任网络是有效的点对点通信基础设施的关键部分:你不仅需要知道给定的公钥指的是给定的人,还需要知道这个人首先是值得信赖的。解决方案是使用社交网络:如果你信任A,A信任B,B信任C,那么你很有可能信任C,至少在某种程度上是这样。以太坊可以作为一个完全去中心化的信誉系统的数据层,最终可能是一个完全去中心化的市场。

上述很多应用程序都由正在开发中的点对点协议和项目组成;在这些情况下,我们打算与尽可能多的类似项目建立合作伙伴关系,为其提供资助,并将其价值带入以太坊生态系统。我们不仅希望帮助加密货币社区,还希望帮助整个点对点社区,包括文件共享、种子、数据存储和网状网络。我们认为,有许多项目,尤其是非金融领域的项目,可能为社区带来巨大价值。但由于它们缺乏有效地引入金融成分的机会,因而其发展面临着资金不足的问题。也许以太坊最终会推动数十个这样的项目进入下一阶段。

为什么所有这些应用程序都可以在以太坊之上实现呢?答案在于加密货币的内部编程语言。这里可以用互联网做一个类比。早在1996年,网络只不过是HTML,人们能做的就是在GeoCities等网站上提供静态网页。然后,开发者发现人们对用HTML提交表单的需求十分迫切,于是就在HTML添加了表单功能。这就像一个网络协议的“染色币”:试图解决一个特定问题,但只是在一个弱协议之上进行,而没有考虑全局。然而,我们很快就开发出了一种web浏览器中的编程语言JavaScript。正是JavaScript解决了这个问题,因为它是一种图灵完备的通用编程语言,可以用来构建任意复杂度的应用程序;Gmail、脸书甚至比特币钱包都是用这种语言制作的。这并不是因为JavaScript的开发人员决定让人们建立Gmail、脸书和比特币钱包,他们只是想要一种编程语言。我们能用语言做什么取决于我们自己的想象。这就是我们想要带给以太坊的精神。以太坊并不打算成为所有加密货币创新的终点,而是打算成为起点。

进一步创新

除了图灵完备的通用脚本语言等主要功能外,以太坊还将对现有加密货币进行许多其他改进。

● 费用:以太坊合同将规制其图灵完备功能,并对脚本执行的每个计算步骤收取交易费用,以防止滥用交易行为,如内存占用和无限循环脚本。更昂贵的操作,如存储访问和密码学操作,将收取更高的费用,合约填写的每个存储项目也将收取费用。为了鼓励合约的自行清理,当一个合约减少了使用的存储量后,将会收取负费用;事实上,有一个特殊的“自杀”(SUICIDE)操作码可以清除合约,并将所有资金和大量的负费用退还给创建者。

● 挖矿算法:人们热衷于创建能抵制专业硬件进行挖矿的加密货币,这可以让普通用户使用一般的硬件参与,而无须任何资本投资,从而有助于避免中心化。到目前为止,主要的解决方法是ScryptScrypt是加拿大计算机科学家暨计算机安全研究人员科林·珀西瓦尔(Colin Percival)于2009年发明的密钥派生函数。最初,它被用于科林·珀西瓦尔创立的Tarsnap服务。后来,它被用于包括莱特币、狗狗币在内的多个采用工作量机制的区块链项目。参见Percival C.(2009),Stronger Key Derivation via Sequential Memory Hard Functions,https://www.bsdcan.org/2009/schedule/attachments/87_scrypt.pdf。——译者注,这是一种需要大量计算能力和内存才能进行计算的挖矿算法;但是,Scrypt的硬内存(memory-hard)硬内存是指计算需要调用大量算力和内存来完成。工作量证明机制要求挖矿的算法是“硬内存”的,其原因是让所有挖矿者都付出足够的成本,以此防止“女巫攻击”,即模仿多个身份的攻击。——译者注不够,有些公司正在为其构建专门的设备。我们已经提出了DaggerDagger是由布特林提出的“硬内存”函数。参考https://www.hashcash.org/papers/dagger.html。——译者注,一种比Scrypt有更强“硬内存”的原型工作量证明,以及SlasherSlasher是布特林2014年提出的一种权益证明算法。根据这种算法,如果用户被发现违反了协议,那么将接受惩罚。见Buterin,V.,2014,Slasher:A Punitive Proof of-Stake Algorithm,https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of stake-algorithm。——译者注等完全绕过挖矿问题的原型权益证明算法。但最终,我们打算举办一场竞赛,类似于那些确定AES(高级加密标准)和SHA3(第三代安全散列算法)标准的竞赛,我们将邀请世界各地大学的研究小组设计出尽可能最好的普通硬件友好型挖矿算法。

● GHOST:GHOST是阿维夫·佐哈尔(Aviv Zohar)和尤纳坦·苏姆波林斯基(Yonatan Sompolinsky)首创的一种新的区块传播协议,允许区块链拥有更快的区块确认时间(理想情况下在3~30秒内),而不会遇到快速区块确认通常带来的集中化和高过时率问题。以太坊是第一个将简化的单级GHOST版本作为其协议的一部分进行整合的主要加密货币。

以太坊的计划

以太坊可能是一项规模巨大、影响广泛的事业,需要数月的时间来发展。有鉴于此,这种加密货币将分多个阶段发行。第一阶段已经开始,即白皮书的发布。论坛、维基和博客已经建立,任何人都可以自由访问,并在论坛上设置账户和评论。1月25日,为期60天的筹款活动将在迈阿密的会议上启动,在此期间,任何人都可以购买以太币,它是以太坊的内部货币,就像用比特币为万事达币筹款一样。比特币与以太币的比价将是1∶1 000,但早期的以太坊投资者将获得大约2倍的收益,以补偿他们之前参与项目所冒的风险。筹款的参与者不仅会得到以太币;还有一些额外的奖励,如免费的会议门票、一个将32字节放入创世区块的位置等,以及对于顶级捐赠者甚至可以命名这种加密货币的三种计量单位(这类似于比特币的单位“microbitcoin”一单位microbitcoin相当于一百万分之一个比特币。——译者注)。

以太币的发行不会采用任何一种单一机制;相反,它会使用折中的方法,将多种方法的优点结合起来。其发行模型的工作原理如下:以太币将以每比特币兑换1 000~2 000以太币的价格在募捐活动中发布,早期的资助者将获得更优惠的价格,以补偿早期参与的更大不确定性。最低资金金额为0.01比特币。假设x单位以太币以如下方式发布:

● 0.225x单位以太币将分配给筹款开始前就已实质上参与项目的信托成员和早期出资人。该部分份额将存储在锁定时间的合约中;其中大约40%在一年后可以使用,70%在两年后可以使用,100%在三年后可以使用。

● 0.05x单位以太币将被配置给一个基金,用于在筹款开始后以太币发行前用该货币支付费用和奖励。

● 0.225x单位以太币将被配置为一个长期储备金池,用于在以太币发行后用该货币支付费用、工资和奖励。

● 此后,每年将开采0.4x单位以太币。

与比特币和大多数其他加密货币相比,以太币有一个重要的区别:它最终的供给是无限的。设计“永久的线性通货膨胀”模型是为了既不造成通货膨胀,也不造成通货紧缩;供给没有上限意在抑制现有货币的一些投机性效应和财富不平等效应;与此同时,线性而非传统的指数通胀模型意味着,随时间推移,有效通胀率趋于零。此外,由于初始货币供给量不会从零开始,因此前八年的货币供给量增长实际上将慢于比特币,这为筹款参与者和早期采用者提供了在中期大幅受益的机会。

在2月的某个时候,我们将发布一个中心化的测试网络,任何人都可以用它发送交易和创建合同。不久之后,我们将使用去中心化的测试网络来测试不同的挖矿算法,确保点对点守护程序的运作和安全,并采取措施优化脚本语言。最后,一旦确定协议和客户端是安全的,我们就将发布创世区块,并允许开始挖矿。

未来展望

由于以太坊包含一种图灵完备的脚本语言,所以我们可以从数学上证明,与比特币类似的区块链加密货币可以做的任何事情,以太坊基本上也能做。但目前的协议仍有一些问题尚未解决。例如,以太坊没有解决所有基于区块链的加密货币都面临的可扩展性这个根本问题,即每个完整节点都必须存储整个资产负债表并验证每笔交易。以太坊从瑞波币借用了独立的“状态树”和“交易列表”概念,一定程度上缓解了可扩展性问题,但没有任何根本性的突破。为了达到这一点,需要有新技术,如伊莱·本萨森(Eli Ben-Sasson)的安全的计算完整性和隐私技术(Secure Computational Integrity and Privacy,SCIP),该技术目前正在开发中。

此外,以太坊没有改进传统的工作量证明挖矿及其所有缺陷,卓越证明和瑞波币式的共识机制也尚未被探索。如果事实表明权益证明或其他工作量证明算法是更好的解决方案,那么未来的加密货币可能会使用MC2MC2即Memcoin2。Memcoin2是由亚当·麦肯齐(Adam Mackenzie)提出的一种加密货币,它采用一种混合了工作量证明和权益证明的共识机制。这里的MC2算法指的就是这种机制。参考https://decred.org/research/mackenzie2013.pdf。——译者注和Slasher等权益证明算法。如果以太坊2.0有发展空间,那就是在这些方面进行改进,也就是说,以太坊最终会是一个开放式项目;如果该项目获得足够的资金,我们甚至可能自己发布以太坊2.0,将原始账户余额转移到一个被进一步改进后的网络上。归根结底,正如我们给以太币本身赋予的标语一样,唯一的限制是我们的想象力。