作者:BitMex Research;翻译:0xjs@金色财经
摘要:
在这篇文章中,我们探讨了为什么Dapp通常构建在以太坊而不是比特币上,这让我们回到 2014 年 3 月。我们研究了名为 Counterparty 的 Dapp 协议是否以及如何使用比特币区块链的争论。这有时被称为“OP_Return 战争”。我们解释了比特币中OP_Return使用和侧链的历史。
我们的结论是,无论人们喜欢与否,2014年比特币开发社区的文化以及将比特币交易数据用于替代用例的负面看法,在推动这些Dapp的开发人员走向以太坊等替代系统的过程中发挥了重要作用。
概述
我们经常被问到这样一个问题:为什么DEX等 Dapp 通常在以太坊上而不是在比特币上?毕竟,当然可以在比特币之上构建Dapp,例如DEX、域名系统或替代代币。
当然,这有几个原因,例如: i、以太坊更灵活的原生脚本语言使构建 Dapp 变得更容易;ii、以太坊更快的出块时间,使 Dapp 更加用户友好;或者 iii、比特币选择比以太坊更保守的区块大小限制,导致比特币的费用可能更高。
上述所有因素确实产生了影响,但我们认为它们的影响往往被夸大了。最重要的因素是文化。一些比特币爱好者和比特币开发者根本不希望在比特币区块链上进行此类活动,并且他们成功地阻止了这种活动。这似乎主要发生在 2014 年 3 月左右,那段时期发生的事情就是本文的主题。与此同时,以太坊等其他区块链的发起者可能利用并夸大了比特币开发者的这种明显立场,以帮助他们的新区块链获得吸引力。
Counterparty协议
正如我们在 2020 年 9 月的报告中提到的,2014 年初,Counterparty 推出。Counterparty 是比特币之上的协议层,可实现新代币创建以及在DEX上交易这些代币等功能。该系统的工作原理是使用部分比特币交易数据,并将其在Counterparty协议中用作功能,例如创建代币、发送代币或在DEX上对代币进行市场出价。
更简洁地说,一开始 Counterparty 使用比特币操作码 OP_CHECKMULTISIG 将 Counterparty 相关数据包含到比特币区块链中。该操作码应该用于验证Pay to script hash(P2SH)多重签名交易的签名。
此处(https://www.blockstream.info/tx/52e498fc0ab6430a9e8902299a63b01a3414fca019c9d5bfdce3318d44033977?expand)可以查看 2014 年 7 月的Counterparty 交易示例。
该交易将比特币发送回其来源地址,并且还有三个额外的输出,其中输出脚本是与Counterparty协议相关的数据。在本例中,它创建了一个名为TICKET的新代币。使用 OP_CHECKMULTISIG 可以被认为是一种黑客攻击,因为这不是操作码的预期用途。Counterparty 现在使用比特币的 OP_Return 操作码来存储数据,这在某种程度上更符合开发者的意图。
例如,请查看最近的一个Counterparty 交易,它使用 OP_Return(https://www.blockstream.info/tx/393ec1dfd7d51ac46faadf022e339bc463db6e59b8705b2aa3d2aa179db23475?expand)。
2014 年初,围绕 Counterparty 进行了大量的实验、开发者活动、创新和兴奋,该平台领先于名为 Mastercoin 的竞争对手平台。
什么是OP_Return?
OP_Return 是比特币中的交易输出,此交易输出已证明是不可花费的。该功能可用于销毁比特币或在比特币区块链中存储任意数据。由于数据不是 UTXO 集的一部分,因此以这种方式存储数据据说有助于扩展比特币,因为参与修剪的节点不需要存储 OP_Return 数据。
2013 年 5 月,有人在以下交易中利用了此功能(https://www.blockstream.info/tx/d29c9c0e8e4d2a9790922af73f0b8d51f0bd4bb19940d9cf910ead8fbe85bc9b?expand)。
此交易中的 OP_Return 输出包含 Rick Astley 于 1987 年创作的歌曲“Never Gonna Give You Up”的歌词,这首歌曲与 Rickrolling meme 相关。
2014 年之前,包含 OP_Return 的交易是非标准的,不会被普通比特币节点转发。然而,如果矿工包含这些交易,它们就被认为是有效的。2014 年 3 月,Bitcoin Core 0.9.0 发布,OP_Return 功能作为标准交易类型,因此默认情况下节点会中继交易。当时的发行说明如下:
此更改并不是对在区块链中存储数据的认可。OP_RETURN 的更改创建了一个可证明可修剪的输出,以避免数据存储方案(其中一些已经部署)将任意数据(例如图像)存储为永远无法使用的 TX 输出,从而导致比特币的 UTXO 数据库膨胀。在区块链中存储任意数据仍然是一个坏主意;将非货币数据存储在其他地方成本更低且效率更高。
来源:https ://bitcoin.org/en/release/v0.9.0#opreturn-and-data-in-the-block-chain
Bitcoin Core 0.9.0 只会中继 OP_Return 为 40 字节或更少的交易,如果数据大于此,它仍然是有效交易,但不会中继。最初的限制是 80 字节,但经过多次讨论,开发人员最终决定为 40 字节。需要明确的是,Bitcoin Core 发布版本中的 OP_Return 中继限制从未下降。2015年2月,Bitcoin Core 0.11.0最终将中继限制提高到80字节。2016 年 1 月,在 Bitcoin Core 0.12.0 中,该限制再次提高到83 字节,即我们今天的限制。但这个 3 字节的增加仅仅是计数工作方式的改变,包括操作码本身,所以它不是“真正的”增加。这意味着,如果今天想要一笔 OP_Return 输出超过 80 字节的交易,则必须自己挖掘它或直接将其发送给矿工。
对于 OP_Return 的大小没有真正的共识。然而,ScriptPubKey 的限制为 10,000 字节,但也许可以解决这个问题。
OP_Return战争
2014 年 3 月 20 日,当时比特币的主要贡献者之一 Jeff Garzik 开始在 Bitcointalk 论坛的 Counterparty 主题上发帖。Jeff 批评 Counterparty 对区块链空间的使用。
迄今为止,我还没有看到无法用简单哈希安全替换的区块链数据转储方案。你不需要将数据存储在区块链中。这纯粹是智力上的懒惰。时间戳哈希(数据)同样安全,同时更高效。此外,二级链(secondary chain)可以可证明地与比特币挂钩:
来源:https://bitcointalk.org/index.php? topic=395761.msg5796379#msg5796379
Jeff接着说:
CheckMultiSig 显然是针对 ECDSA 公钥,而不是任意数据。毫不奇怪,将一项操作用于其预期目的之外的其他目的会产生负面的、可能是意想不到的或未知的后果。Counterparty交易并不是“按照比特币协议”进行的,它们蒙混进来,因为它从未预料到该功能会以这种方式使用。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827189#msg5827189
人们可能会认为 Jeff 的这种观点很奇怪,因为在 2017 年他似乎是“大区块支持者”,而且这种关于保守使用区块空间的观点似乎与大区块观点不一致。然而,这种明显的矛盾在2014年根本没有出现。Jeff当时的观点在某种程度上得到了当时几乎所有活跃的开发者的认同,包括后来成为大区块者的开发者。据我们所知,人们对区块大小限制的看法与这个问题之间根本没有简单的映射。Jeff 当时是一位备受尊敬的开发人员,这篇文章引起了 Counterparty 开发人员和用户的极大关注。
一位化名“BitcoinTangibleTrust”的 Counterparty 开发者对 Jeff 的回复如下:
你是绝对正确的。你不需要将数据存储在区块链中。时间戳哈希(数据)同样安全,同时更高效。二级链(secondary chain)可以可证明地与比特币挂钩。然而,根据下面 PhantomPhreak [Counterparty 联合创始人兼首席开发人员] 的注释,Counterparty 在每三个多重签名交易之一中使用 256 字节将数据存储在区块链中。此外,所有这些多重签名交易均由矿工处理。
该开发者继续批评比特币开发人员计划将 OP_Return 限制为 40 个字节而不是 80 个:
如果 OP_RETURN 的目的是停止/限制多重签名行为(未花费的输出)并由此减少区块链膨胀,那么我担心通过将 OP_RETURN 的大小从 80 字节减少到 40 字节,你会无意中使多重签名对所有元协议更具吸引力,但同时降低OP_RETURN吸引力。
Counterparty 首席开发者兼联合创始人(名为“PhantomPhreak”)插话道:
我们的想法是,我们将数据存储在第二个区块链中,并将带时间戳的数据的哈希值放入比特币中,该哈希值也将小于 40 字节。我们没有这样做的原因不是“智力懒惰”的问题,而是实现复杂性的问题。Counterparty 不是计算机科学中的一个项目;它被设计得尽可能简单,以提高开发速度。即使我们必须将数据存储在多签输出中,而不是太小的 OP_RETURN 输出中。在这个领域,更糟肯定是更好。
第二天,Jeff回复道:
这就是所谓的搭便车。鉴于比特币区块链的绝大多数(>90%)应用是货币使用,使用全节点作为哑数据存储终端只是滥用全志愿者的网络资源。网络复制交易数据,那么为什么不搭便车呢?mastercoin 和Counterparty 并没有参与现有社区,而是简单地打开了开关,开始使用比特币 P2P 节点作为不需要的数据存储。UTXO从来不打算用作任意数据存储。它可能被滥用这一事实并不意味着它是正确的、远程高效的或最佳的解决方案。UTXO数据库是整个网络的快速访问数据库。每个节点都需要数据库尽可能小,以便最好地处理网络交易。将任意数据编码为未花费的输出是网络范围内的滥用,简单明了。整个网络承担费用。
来源:https://bitcointalk.org/index.php? topic=395761.msg5815887#msg5815887
由于 Jeff 在社区中的地位很高,Counterparty 社区中的大多数人似乎都热衷于参与并解决该问题。例如,BitcoinTangibleTrust 回应称:
感谢您分享您的想法Jeff。那么,您愿意帮助我们开始与现有的比特币核心开发社区合作吗?作为负责任的合作伙伴符合 Counterparty 的利益,因为如果我们要生存就需要比特币区块链。您能否告诉我们如何开始合作解决这些问题?
来源:https://bitcointalk.org/index.php? topic=395761.msg5816031#msg5816031
另一位 Counterparty 开发者提出了另一点:
比特币协议是否有办法阻止 XCP 使用它的方式,而不破坏其他任何东西?
如果比特币开发者没有办法阻止 Counterparty 相关交易,也许这种反对并不重要,Counterparty 可以在未经许可的情况下继续使用比特币。比特币开发者和当时的矿池运营商 Luke-Jr 随后加入了争论:
矿工应该过滤掉滥用行为。
来源:https://bitcointalk.org/index.php? topic=395761.msg5816503#msg5816503
Luke-Jr 随后建议可以使用联合挖矿的侧链类型结构来构建此类系统,这可以避免区块链膨胀。
问题不在于新的层,而在于违背人们的意愿强加给他们。新层可以在选择加入的基础上完成,不会污染区块链并强迫非参与者存储数据。
Luke 还被问及为什么比特币开发人员将预期的 OP_Return 中继大小从最初提出的 80 字节限制减少到 40 字节。Luke回应了以下三点:
太多人的印象是 OP_RETURN 是一个功能,应该被使用。它从来没有这样的意图,它只是一种“让窗户保持解锁状态,这样当有人闯入时我们不需要更换玻璃”的一种方式。即减少人们滥用比特币造成的损害。
40 字节足以满足将数据绑定到交易的所有合法需求:你将获得 32 字节用于哈希,再加上 8 字节用于某种唯一标识符(这实际上也没有必要!)。
最初的 80 字节提案旨在用于 512 位哈希,但后来确定这是不必要的。
Luke-Jr 继续说道:
希望随着挖矿回归去中心化,我们将看到对滥用/垃圾邮件交易的容忍度降低,无论是 OP_RETURN 变体还是其他。现在,如果有人有一个有效的、必要的用例来实际存储交易的哈希值,显然这是矿工应该认真考虑挖矿的情况。
来源:https://bitcointalk.org/index.php? topic=395761.msg5817170#msg5817170
Luke当时的矿池也开始过滤掉Counterparty相关交易。此时,Counterparty社区中开始出现恐惧和不确定性。他们需要 OP_Return 为 80 字节,否则他们将被迫继续使用 OP_CHECKMULTISIG 操作码。鉴于 Luke 的评论,它似乎不太可能达到 80 字节。除此之外,一些人担心开发人员甚至可能进一步降低限制,从而可能导致 Counterparty 退出网络。比特币开发者似乎对 Counterparty 并不是特别友好,因此有些人可能觉得继续使用比特币协议可能很困难。
2014 年 3 月 25 日,以太坊主要创始人 Vitalik Buterin 插话,他认为争论应该更多地围绕费用,如果你支付足够的费用,那么你的交易应该被合法地包含在内。如今,以太坊的费用算法非常复杂,针对许多不同的区块链用途有不同的费用桶和费率,这从本质上解决了 OP_Return 问题。有人可能会说,比特币上的隔离见证也在一定程度上缓解了这一问题。
OPRETURN 之争之所以成为这样的问题,都是协议的错。在理想的世界里,“滥用”的概念根本不存在;费用将是强制性的,并且经过精心设计,以紧密匹配特定交易对网络施加的实际成本,”他说。“如果你能为你正在做的事情支付费用,那么你应该能够做到这一点,没有任何问题。”
资料来源:https ://www.coindesk.com/markets/2014/03/25/developers-battle-over-bitcoin-block-chain/
2014 年 3 月 27 日,Counterparty改变了交易方式以绕过 Luke-Jr 的挖矿过滤器。然而,第二天Luke评论说:
好消息!添加过滤器可以在不到 5 分钟的时间内阻止这些垃圾,并且只用了 1 行代码。
来源:https://bitcointalk.org/index.php? topic=395761.msg5955613#msg5955613
Luke-Jr 还将 Counterparty 比作一种滥用形式:
这是滥用,因为你强迫其他人违背他们的自由选择下载/存储你的数据。每个完整节点都必须下载完整的区块链(不管可修剪与否!)。每个全节点都同意下载和存储金融交易。并非每个完整节点都同意存储其他任何内容。为此,你需要 100% 的共识,而不仅仅是某个子集(即不是矿工;不是开发人员),甚至是大多数。此外,每个人都可以自由存储不在区块链中的数据。将它放入区块链中没有任何好处,除非你将它强加给那些不想要它的人。解释一下这就是滥用……
来源:https://bitcointalk.org/index.php? topic=395761.msg5826443#msg5826443
对比特币开发者的愤怒
正如人们所预料的那样,比特币开发者的担忧最终遭到了一些Counterparty开发者和用户的沮丧和愤怒。我们在下面列出了他们的一些评论。首先来自一位名为“porqupine”的用户对 Luke-Jr 的矿池阻止 Counterparty 交易的评论:
太棒了,开发人员不是在负责任地致力于寻找解决方案 - 你正在宣传猫捉老鼠。你意识到你也在说去他妈的网络中立吗?并试图将人们应该和不应该在区块链上进行的交易类型纳入私人手中。对你不喜欢的某些人的下一步制裁是什么?对于你不批准其政府外交政策的国家的节点广播的交易进行制裁?
来源:https ://bitcointalk.org/index.php?topic=395761.msg5955738#msg5955738
2014 年 3 月 21 日,porqupine 继续说道:
等一下,什么时候决定的:每个节点都同意存储X类型数据,而不是Y类型数据。也许我也不同意存储洗钱、非法毒品和武器、人类奴隶制等交易。你基本上否定了协议中立性并决定协议应该和不应该用来存储什么,而且还不止于此,不是以第一人称说话,而是使用代词“我们”,给人的印象是你是在代表所有矿工或整个协议用户说话。
来源:https://bitcointalk.org/index.php? topic=395761.msg5826584#msg5826584
其他人对为什么Jeff和Luke有权阻止某些用例而不是其他用例表示担忧。
我简直不敢相信这种态度。我不知道比特币有所有者。我以为我和大约一百万人都是所有者 ?
Counterparty 联合创始人 PhantomPhreak 表示:
首先,Counterparty 交易是金融交易。其次,每个全节点都同意下载和存储比特币区块链。也就是说,交易符合比特币协议,而Counterparty 交易显然就是这样做的。中本聪在创世区块中嵌入了一条政治信息,看在上帝的份上……你对比特币可能的用例的看法比其他人要狭隘得多。
来源:https ://bitcointalk.org/index.php?topic=395761.msg5826770#msg5826770
他或她继续说道:
比特币做了很多它最初没有打算做的事情。是的,我们非常希望使用比现在更优雅的解决方案。Counterparty 最初设计为使用 OP_RETURN 输出来存储其所有消息数据,我觉得这非常优雅,并且对区块链的影响最小。我们围绕 Gavin 在官方比特币博客上宣布的 80 字节限制规划了所有消息格式。我们只使用多重签名输出,因为我们别无选择。我们不想扩展比特币协议。我们希望完全在其中做一些事情,并且尽可能简单直接,以获得稳定性、安全性等好处。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827473#msg5827473
……
同样,我们只将金融交易存储在区块链中,并且我们为我们使用的空间付费。对于全节点来说,存储 OP_RETURN 输出中的金融交易并不比其他任何交易更痛苦。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827688#msg5827688
另一位名为“bitwhizz”的用户说道:
如果你不想存储它,就不要存储,相当简单,不使用比特币,就不下载区块链,你也没有损失。然而,我的同意意味着我相信比特币具有比交易更多的功能,并且基于这一事实,没有人拥有它,并且有 OP_RETURN 功能,我不明白为什么应该消除该功能,因为你不想存储你已经可以自由选择的数据。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827897#msg5827897
“Anotheranonlol” 说道:
我实在无法理解,Counterparty 的交易怎么就不构成金融交易呢?我也无法理解这样的观点:因为比如说,1000 个节点中有 1 个节点不愿意接受这个数据,所以默认情况下应该禁止它。在最近的 mtgox 噩梦以及因将余额存储在中心化实体上而造成的大量黑客攻击、盗窃、关闭和损失之后,Counterparty 似乎想出了一个解决方案,允许以去中心化、无需信任的方式解决这个问题
来源:https://bitcointalk.org/index.php? topic=395761.msg5827776#msg5827776
“Baddw”说道:
事实上,任何人都可以随时将任意数据存储在区块链中。它已经并且正在被用于此目的。每个运行比特币节点的人都应该已经知道这一点,如果他们不知道,它应该是他们安装 Bitcoin-QT 时出现的通知的一部分(如果有的话;我不记得见过)。任何比特币交易都可能只是简单的资金流动,也可能是一封情书,也可能是引爆炸弹的触发器。消除这种可能性就会杀死比特币,就这样。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827749#msg5827749
Baddw 继续说道:
计算历史(实际上,整个人类技术历史)中许多最伟大的发展都是人们发现发明者非意图用途的结果。好消息是,大多数发明家并没有那么保护自己的发明,以至于拒绝让其他人将其用于新事物。那些这样做的人发现自己很快就被超越了。
来源:https://bitcointalk.org/index.php? topic=395761.msg5827925#msg5827925
从这些评论中可以清楚地看出,许多 Counterparty 用户和开发者对比特币开发者的立场感到惊讶和失望。尽管该项目仍在继续,就像Mastercoin一样,但无论好坏,一些开发人员可能会因此离开比特币,转而在以太坊等其他区块链系统上构建他们的协议。我们认为,2014 年的这个时刻比任何其他时刻都更加重要。然而,其他人可能有不同的看法。
联合挖矿的侧链
在 OP_Return 辩论中,Counterparty 和区块链膨胀的反对者通常提到某种形式的联合挖矿侧链作为 Dapp 的解决方案。事实上,据说中本聪很喜欢这条道路,并且据说在 2010 年 12 月就支持了它的域名系统:
我认为 BitDNS 有可能成为一个完全独立的网络和独立的区块链,但与比特币共享 CPU 能力。唯一的重叠是让矿工可以同时搜索两个网络的工作量证明。
来源:https ://bitcointalk.org/index.php?topic=1790.msg28696#msg28696
将这些 Dapp 系统作为侧链实现存在许多困难,今天我们对这些弱点的理解比 2014 年更好,当时许多人只是认为它们可以工作。
复杂性——最重要的弱点之一是实施和构建侧链解决方案的复杂性。为了尽早推出协议并赢得市场份额,这些项目没有时间构建侧链和与比特币的联合挖矿系统。
比特币作为原生资产——可能无法将非托管比特币作为侧链上的运营资产,因为可能无法建立无需信任的双向挂钩。对于许多 Dapp 来说,这是一个很大的弱点,例如,他们可能希望使用比特币作为DEX中的主要交易对。这个弱点在 2014 年似乎并没有得到很好的理解,许多人只是假设它能以某种方式发挥作用。
有限的扩展优势——使用侧链的优势可能会因用例而异。例如,如果要建立一个DEX,每一次出价、报价和撮合都可能需要主链的所有安全保障。由于主链的使用量如此之大,对于交易所上每个用户的每一个可能的操作,侧链系统的扩展优势可能非常有限。原生提交链上投标可能仅使用大约 90 个字节,而存储订单信息的哈希值以及需要识别的结构和开销可能在链上大约 50 个字节,因此并没有节省太多空间。
2014 年 3 月,Counterparty 开发者(xnova)概述了他对侧链的反对观点。
此外,除非我在这里忽略了某些内容,否则我们仍然需要从第二个区块链中的区块中解析出数据(至少假设它是比特币或比特币衍生品实现)以获取我们存储的数据。因此: * 它不会使 SPV 类型的Counterparty客户端能够使用Counterparty通过Colored Coin提供的功能(即 DEX、投注、资产回调、股息、差价合约等) * 这会降低Counterparty交易的安全性。* 它将大大增加实现的复杂性(即增加出现错误和漏洞的可能性)。唯一可疑的好处是“轻微”减少我们对区块链的存储要求(即每笔交易可能减少 20-40 字节?) 。我只是不明白这在这里有什么意义。还有一点:Counterparty可以给比特币带来巨大的好处,如果以太坊(和其他类似的non-Bitcoin-meta “2.0”类型代币)加入,这一点将变得更加明显。至少我个人的感觉是,比特币很可能需要在生态系统中提供具有此类功能的产品,以有效地与以太坊和(未来)其他区块链的功能竞争,否则就有被淘汰的风险,至少在投资者和金融市场运营商中是如此,随着比特币生态系统获得更多认可、信任和思想分享,它有能力将数十亿甚至数万亿美元带入比特币生态系统。
来源:https://bitcointalk.org/index.php? topic=395761.msg5799174#msg5799174
似乎一些支持侧链作为解决方案的人对许多 Dapp 应用程序并不是特别感兴趣,也没有尝试过它们。因此,他们从未考虑过构建DEX的复杂性以及每个用户的几乎每一个操作都需要安全性。大多数比特币开发者似乎对他们感兴趣的东西相当开放,并且清楚他们想要什么:抗审查货币、非政治货币、电子现金等等……
结论
2014 年左右之后,大多数对 Dapp 感兴趣的开发者都专注于在以太坊或其他系统上构建,而不是在比特币上。随后,以太坊获得了大量开发者的兴趣和动力,而比特币上的 Dapp 开发却很少。本文的重点是强调,造成这种情况的主要驱动因素不一定是费用或以太坊虚拟机和以太坊更强的技术能力,而只是许多比特币爱好者和比特币开发者不希望比特币上的 Dapps,他们对这些功能不感兴趣。无论好坏,一些比特币爱好者故意将许多 Dapp 开发人员赶走。一些比特币爱好者认为,大多数 Dapp 活动都与不可持续的骗局有关,或者出于安全或其他原因,这种活动在比特币上是不受欢迎的。与此同时,一些替代币(例如以太坊)的推动者可能夸大了所谓“OP_Return Wars”的影响和意义,以促进其新兴的区块链。
自2014年以来,很多人的观点发生了变化。比特币需要交易费才能生存。在 2016 年后的环境中,我们有许多完整的区块和较高的费用,人们更广泛地认识到任何付费交易都是“合法的”。以太坊上的某些 Dapp,例如 Uniswap 等交易所,或 AAVE 和 Compound 等借贷协议,在某种程度上已被证明既成功又有趣。尽管如此,比特币支持者是否足够关心比特币上的这些协议,更不用说是否有人会真正构建和使用它们,仍然是一个悬而未决的问题。