OKCoin

加文•安德烈森:不需以太坊重复发明轮子

少平 发布在 币头条,比特币 57 7505

摘要:比特币基金会首席科学家加文•安德烈森最近撰文,认为将中介者和多重签名技术引入比特币,就可实现智能合同,不需以太坊重复发明轮子,且认为,以太坊试图做太多,“复杂性是安全的敌人”。以下是译文:

最近我一直在思考以太坊。其中某些部分十分有趣。

以太坊项目中某些部分看起来就是在重复制造不必要的轮子(如创建一个新的工作量证明机制或新的货币)。总的来说,我怀疑他们试图做太多,“野心”太大,导致整个系统过于复杂,“复杂性是安全的敌人”。他们最后要么彻底减少以太坊的应用范围, 要么就像打鼹鼠游戏一样疲于奔命应对DoS攻击等安全问题。

也许我是错的,我只是一个有点倔脾气、跟不上潮流的老人,经历过太多DoS攻击等安全问题,一朝被蛇咬,十年怕井绳。

无论如何,我发现以太坊中的一个理念很有趣:智能合同,包含资金、任意代码和状态。而且合同由以太坊网络进行认证,而不是中央机构。交易会触发合同内的代码,从而合同进入自我执行状态,发送由合同托管的资金,并更新合同的状态。

那么我们可以把智能合同这个有趣的理念应用到比特币中吗?有人能在比特币上创建“比特坊”(Bit-thereum)吗 ?

如果我们同意将“全网验证”替换为“利用不可完全信任的中介者验证(semi-trusted ‘oracles‘,见译者注)”,那么当然可以了。

不过这是作弊,不是吗?如果我们相信11个合同认证服务不会合谋(或全部受到攻击)违反内置于合同的执行条件,那比特币就不是完全去中心化的了。

欺骗是有点……但是我能想到的真正有趣的复杂合同都需来自区块链以外的数据。例如,当区块链执行远期合同时,就需合同到期日的比特币/美元汇率。

以太坊没有魔法来解决“区块链以外的数据”问题,正如它的白皮书所说“提供真实价格的可信任中介者仍是必需的”。至少有一家创业公司在解决“比特币区块链以外数据问题”(Reality Keys公司)。

从完全信任一个中介者到通过多个中介者(M-of-N semi-trusted sources)获取区块链外信息,这是一个进步。

所以我将从此开始,并认为中介者之间会竞争,争当最可靠的和最值得信任的合同认证者。参与合同的人从众多的中介者中挑出N个,并要求在合同发送资金前,合同条件被N个中介者中的一个或多个(M)确认。挑出多于一个的中介者,保证了单个中介者不可能盗取合同的资金,但是要小于N个,以防当合同发送资金时,有些中介者破产或者不对合同进行确认。

这些中介者需要一种一致同意的机器可读的合同语言,这个问题不难解决。有许多设计方案,复制大部分以太坊的合同设计语言(也许重用大量他们的代码)也许是一个很好的方法。

也许区块链之外的数据可以从网络上通过URI获取。当合同需要的链外信息是世界银行统计的阿鲁巴岛的平均气温,但是世界银行不再公开这些信息时,这些合同该如何处理?这是这一方法的缺陷。

中介者也需要一种方法用来存储合同的托管资金,也必须同意资金的返还。比特币多签名交易可解决这个问题:

1、参与合同者把合同代码发送到N个中介者,获得N个公钥。

2、中介者将储存合同代码和私钥,并愿意提供公钥给那些知道合同代码的人。

3、任何人都可以通过发送比特币到中介者(M-of-N)多重签名的地址,向合同增加资金。

到目前为止,在比特币和中介者方面都没有什么棘手的问题。但是当中介者需要评价合同和发送一些或者全部资金时,将会遇到什么问题?什么东西来触发中介者开始评价合同,更新合同的状态,谁来创建和广播发送资金的交易?

有许多可能的设计决策,我个人认为应该由获得合同中资金的一方来与N个中介者中的M个联系,获得签名,之后广播这一交易。

对于更新合同状态问题,我的直觉认为合同的状态应该与比特币交易确认和花费的交易输出的状态相联系。所以,如果一个或多个合同的输入被双花,合同就会处于多种状态。一旦区块链确认选择了双花的一方,合同的状态问题也将解决。

我认为合同代码应该能利用未花费交易的输出和支出交易的输出。另一个有趣的设计决策是如何处理未确认交易的输出。我认为让合同再次花费零确认的输出,同时中介者承诺绝不签署相同的输出两次,这可能非常有用,使得许多有趣的应用可行。

中介者可能容易受到拒绝式服务的攻击,如攻击者请求无数的他们无意履行的合同公钥。或攻击者请求无数的合同评估(签名)。

为了解决第一个问题,中介者应该要求建立合同的小额预付款。为了解决第二个问题,中介者应该要求任何合同资金支出也需要小额手续费。这两个解决办法具有经济意义,给中介者带来明晰的商业模式。

利用比特币交易解决上述问题,可以保护中介者免受拒绝服务攻击。例如,小额手续费使得耗费大量CPU才能确认的合同需要付出巨额的交易费用。

中介者也可能对他们的服务条款进行限制,以抵御潜在的攻击者。如果攻击者创建了一个确认合同所需费用巨大的合同,中介者们可以协作没收托管资金。“任何需要超过1CPU微秒才能确认的合同,都可能面临资金被N个中介者平分的结局。”他们通过公布这些恶意合同,不使声誉受损。

但是,这样就可以了吗?难道不需要更复杂的设计吗?不需要新的比特币脚本语言、在区块链内的合同代码、联合挖矿链或者彩色币?

我不这么认为。比特币已经提供了全球货币和分布式总帐,不需要重新发明这些轮子。将现实世界的信息与比特币相结合后,比特币将变得更加有趣。

译者(少平)注:

Oracle是多用户、多任务、可分布式管理的数据库,同时可允许许多个用户对数据库操作。加文文中使用的“oracle”,译者译成“中介者”,该词超链接指向https://bitcointalk.org/index.php?topic=8821.msg133604#msg133604,可参考此网页给出的英文语境。如有错误,请指正。

  • 译者BTC地址:
  • 少平:1JtgQcqAoU65VY2NZy25FT9dAcuXrUKhfG
  • 享乐才子:1Gj7n88o2KH2r4MhsSLxUGw2kHsYyUrXLf

 

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:57

您需要登录后才可以回复 登录|注册
    藤井树
    藤井树 868 天前

    //@独行巨蟹:作为风险警示,Gavin的这篇也该包含进来吧?[嘻嘻]http://t.cn/RvS520n 这的确是一个足够酷炫但又充满风险的项目。而且以其IPO的受追捧程度,原始投资的收益肯定无法与NXT相比,但这对于项目本身的推广又何尝不是一件好事呢?

    +1
    +1
    我要点评
    比特咕噜
    比特咕噜 868 天前

    不做投资建议了,大家自己判断吧 //@独行巨蟹:作为风险警示,Gavin的这篇也该包含进来吧?[嘻嘻]http://t.cn/RvS520n 这的确是一个足够酷炫但又充满风险的项目。而且以其IPO的受追捧程度,原始投资的收益肯定无法与NXT相比,但这对于项目本身的推广又何尝不是一件好事呢?

    +1
    +1
    我要点评
    比特咕噜
    比特咕噜 868 天前

    不做投资建议了,大家自己判断吧 //@独行巨蟹:作为风险警示,Gavin的这篇也该包含进来吧?[嘻嘻] 这的确是一个足够酷炫但又充满风险的项目。而且以其IPO的受追捧程度,原始投资的收益肯定无法与NXT相比,但这对于项目本身的推广又何尝不是一件好事呢?

    +1
    +1
    我要点评
    独行巨蟹
    独行巨蟹 868 天前

    作为风险警示,Gavin的这篇也该包含进来吧?[嘻嘻]http://t.cn/RvS520n 这的确是一个足够酷炫但又充满风险的项目。而且以其IPO的受追捧程度,原始投资的收益肯定无法与NXT相比,但这对于项目本身的推广又何尝不是一件好事呢?

    +1
    +1
    我要点评