BitVM是什么?与Robin Linus和Super Testnet详细讲解
链接:
Paper: bitvm.pdf
X: @robin_linus
Super Testnet’s Tapleaf circuits: supertestnet/tapleaf-circuits
Shinobi article on BM: bitcoinmagazine
AJ Towns ML response on BitVM: BitVM: Compute Anything on Bitcoin
赞助商:
Swan.com (code LIVERA)
CoinKite.com (code LIVERA)
Stephan Livera links:
Follow me on X @stephanlivera
播客文本:
Stephan (00:01.528) Robin 和Super testnet。欢迎回到节目。 Super Testnet (00:05.122) 非常感谢你邀请我。 Robin Linus (00:06.317) 感谢你邀请我。 Stephan (00:10.064) 好的,那么,让我们开始吧。我们将讨论BitVM,显然要为那些比特币爱好者解释这个概念。那么, Robin ,你想从你的动机谈起吗?比如说,你为什么会致力于这个想法? Robin Linus (00:26.149) 最终,我们想要扩展比特币。一个很好的方法是拥有某种可信的双向连接,就像是一种桥梁,将比特币连接到其他区块链。由于我的背景主要是零知识证明和有效性证明,我一直希望在比特币上拥有某种有效性证明验证器。是的,由于改变比特币很困难,新提案很难达成共识,一些疯狂的人,比如Super testnet和Sam Parker以及我,我们创建了一个Telegram群组,试图将某种CKP验证器嵌入比特币中。这就是BitVM背后的动机。 Stephan (01:11.888) 很好。所以你介意用通俗的语言解释一下BitVM是什么吗? Robin Linus (01:24.237) 它试图基本上模拟以太坊虚拟机给你的相同功能。因此,它使比特币上的智能合约,复杂的智能合约变得可能。 Stephan (01:39.48) 好的,我认为 Super testnet,也让我们听听你的看法。你提到这是比特币脚本历史上一个非常令人兴奋的发现。你能详细说明一下你的想法吗? Super Testnet (01:53.27) 是的,我最喜欢的事情之一就是尝试找到在比特币脚本中做一些新奇有趣的事情,有时是一些人们之前没有考虑到的东西。所以在过去的几年里,我制作了一些东西,比如几年前我在比特币脚本中制作了一个叫做Rule 110的东西。这是我的GitHub项目之一,我在比特币脚本中运行了这个自动机,或者说是这个...他们叫什么来着?一个单元格的动画,它在屏幕上画一个三角形。那非常有趣。我在那个项目中使用了很多布尔逻辑,这是计算机科学中的原语。然后在下一年,也就是去年,我在比特币脚本中制作了一些叫做for循环的东西,它是另一个原语,允许你...展开循环,你可以说,我要运行相同的代码七次,在第七次尝试时,它最终会关闭循环,退出并执行代码中的其他操作。这也涉及到很多核心原语。然后今年,我尝试在比特币脚本中实现SHA-256。我实际上想重新实现整个SHA-256算法,完全在比特币脚本中实现。Robin 在这方面帮了我很多。这就是我们第一次谈话的契机,然后我们一起加入了这个群体,试图在比特币脚本中做更多的事情,因为我们在那方面实际上非常成功。BitVM就是在这种背景下产生的,我们意识到如果我们可以做SHA-256,如果我们可以做循环,如果我们可以做布尔逻辑,我们可以将所有这些东西结合起来,形成一个具有相当强大特性的虚拟机。 Stephan (03:40.14) 好的,所以我认为大多数人可能对比特币脚本不太熟悉。你们是否介意以非程序员比特币用户为目标,其中一位简单解释一下? Robin Linus (03:59.329) 我可以吗?还是说由 Super ? Stephan (04:00.92) 是的, Robin ,你能给我们解释一下吗? Robin Linus (04:03.701) 好的,比特币脚本是一种简单的智能合约语言,允许你表达主要是签名、多重签名、时间锁、哈希锁等智能合约的基本原语。有了这些东西,你已经可以表达像闪电网络这样的东西,或者多重签名,你可以拥有基本的保险库。是的,你可以拥有...现在人们都知道的最简单的智能合约功能。它是有意限制的,故意不是图灵完备的。它是一种基于堆栈的语言,类似于FORTH,故意受限以避免创建不必要的攻击面。它在一开始甚至更加灵活,但后来Satoshi意识到某个时候有一个实现中的漏洞。然后他变得有些焦虑,一次性关闭了很 多操作码,实际上严重削弱了比特币脚本,简化了它,以避免创建任何不必要的攻击面。 Stephan (05:24.245) 我明白了。Super testnet,关于比特币脚本,你有什么补充吗? Super Testnet (05:29.986) 只是Satoshi留下的其中一些东西,或者说其中一些Satoshi留下的东西,是布尔逻辑,这是在计算机电路的创建中使用的原语。实际上,每个微芯片都是由这些东西叫做布尔逻辑门的一系列东西组成的。通过在比特币中保留这些功能,他使得你可以重新创建他删除的许多功能。所以这正是我们正在利用的事实,以创建BitVM。 Stephan (06:04.932) 我明白了。也许一种思考这个问题的方式是,比特币有一种编程语言,它被专门削减了。部分原因是由于历史原因,可能会被认为可能会造成关闭网络的风险。这里正在发生的事情,有点像是 Stephan (06:35.74) 计算脚本。这是一个公平的说法吗? Robin Linus (06:40.753) 是的,可能一个重要的细节是,这个BitVM在比特币上实际上几乎不执行太多的计算。它只是证明不正确执行。因此,与常规计算非常不同。 Stephan (06:55.544) 我 明白了,是的,这是一个重要的区别,与每台计算机都必须执行所有计算的想法相比,更像是一个求解器和验证器,正如你在论文中指出的那样,更像是一个求解器和验证器。我认为这可能更符合人们在比特币背景下的思考方式,更像是这个想法 Super Testnet (07:12.662) 让我们接受吧。 Robin Linus (07:13.035) 和一个验证器。 Stephan (07:21.24) 每个人都在运行自己的比特币节点,因为显然这里没有集中的服务器。每个人都在运行自己的比特币节点,你只是在进行这种类似于闪电的两方通道状态的来回交流,也许在某种程度上与此类似,所以BitVM与DLC闪电之类的东西有相似之处,但是它是以一种你。也就是说,否认的方式进行的 Robin Linus (07:37.42) 是的。 Stephan (07:50.608) 可能很多人会听到这里,并想,嗯,这一切的意义是什么?我只想拥有我的可靠货币。这对我有帮助吗?这将帮助比特币变得更加可靠或以某种方式更容易流通吗?你有什么想法可以分享吗? Robin Linus (08:05.913) 是的,我的个人愿景是我们真的要实现超级比特币化。这意味着我可以在任何地方都使用比特币支付。为了做到这一点,我们需要能够处理比我们目前能够处理的更多比特币交易。即使闪电网络实际上无法扩展到数十亿人。而且,一个很大的梦想是我们真的可以每秒处理数百万次交易,处理数百万次比特币交易。是的,像是 Super Testnet (08:47.174) 我想补充说,关于闪电网络也曾有类似的说法。有很多人对它不感兴趣,这是完全可以理解的。如果你只是想获取一些比特币,把它存入冷存储,而你希望比特币用于保护你的储蓄,那太好了。你可以这样做。但有些人也想将比特币用于日常支付。闪电网络是一个不错的选择。有些人想将比特币用于复杂的脚本和合同,BitVM就是为此而生的。所以我喜欢有更多的选择。 Stephan (09:26.428) 我明白了,是的。你们提到的可扩展性方面,我从你们那里读到的,Robin ,你谈到的是可扩展性,而 Super testnet,你也谈到了脚本能力。当然,我相信Robin ,你也同意脚本能力这一点。但就比特币的可扩展性而言,正如你提到的,有这样一种双向契约的想法,以及拥有侧链。 还可以说在这里可能还有其他可扩展性的优势,例如模拟契约方面的一些方面,我听说过人们谈论,比如作为一个示例,check template verify,它可以帮助人们进行拥塞控制,进而有助于人们使用闪电网络。你是否认为BitVM在这方面有任何好处? Robin Linus (10:16.565) 我们仍然在探索BitVM能做什么和不能做什么的边界上,目前还处于早期阶段。在昨天发布的那篇论文中,重点是在两方设置中,这与闪电通道非常相似。然而,可能有可能在一个开放式设置中进行。你有一个证明者,基本上每个人都可以成为验证者并质疑他们的主张。 如果这是可能的,那么我们就可以使用BitVM模拟基本上每个操作码提案,我认为。 Super Testnet (10:54.198) 有时被称为星形拓扑或星号拓扑,也被称为中心与辐射模型。 Robin Linus (10:55.126) 所以。 Super Testnet (11:00.862) 你有一个充当证明者的中心方,然后他与一群用户有着二对二的关系。因此,整个群体可以连接到这个中心方。他们可以依赖该方为他们进行计算,因为每个人都知道他不能撒谎,他不能进行虚假计算,否则他将失去他的钱并丧失群体可以拿走的保证金。因此,你可以在两方设置中扩展工作,以在星型设置或一对多方设置中工作。 Stephan (11:38.832) 哦,有趣。好的。因为人们曾评论说这不会实现某种全局状态,对吧?更像是通道式的状态。但你的意思是可以有中心枢纽,现在这可能被视为一种大规模集中的方式。但在这种情况下,个体用户能够确保他们没有被盗取。那可能会减轻这个问题,对吧? Robin Linus (11:49.418) 谢谢。 Robin Linus (12:05.42) 是的。 Super Testnet (12:08.074) 是的,在某些版本的中心与辐射模型中,你必须相信中心方不会偷走你的钱,但至少在这种情况下,以及在闪电通道的情况下,闪电服务提供商的一些部分也使用中心与辐射模型,就像它们被称为的那样。在这两种情况下,你不必信任中心方。中心方不能拿走你的钱。 如果你想使用它们,你可以使用,如果你不想使用它们,你也不必使用。但至少如果你选择使用它们,你知道你不是在信任它们不会偷走你的钱。你只是依赖它们向你和其他人提供一些服务。 Robin Linus (12:34.669) 谢谢。 Stephan (12:48.156) 我明白了。好的,也许从更高层次来看,我们可以将这个看作是。我知道在你的论文中, Robin ,你指出它与所谓的乐观滚动有一些相似之处。那么你能为我们详细解释一下吗?BitVM与乐观滚动有哪些相似之处?以及这对比特币用户有什么好处? Robin Linus (13:15.681) 乐观滚动的基本思想是你可以提出一项声明并声称某个陈述是真实的。例如,嘿,我在某个侧链中烧毁了一些硬币,所以我被允许在主链上拿走一些硬币。乐观滚动的思想就是我提出这个声明,如果这个声明是正确的,那一切都没问题,我可以拿到钱。但如果这个声明是不正确的,那么每个人都可以质疑我,证明我错误。 我的声明,并简洁地为我的声明提供欺诈证明,然后我失去我的钱。这一设置已经在一些替代币上得到探讨。 Robin Linus (13:57.909) BitVM基本上是将这个想法引入比特币的一种方式。 Super Testnet (14:05.878) 它也是。 Stephan (14:05.892) 太好了,好了,继续,继续 Super Testnet。 Super Testnet (14:09.334) 最近在比特币设置中也有人探讨过这一点,他们提出了Matt、Merkle等提议。所以这是在比特币邮件列表上讨论的一个最新提案。他们还在探讨这种我们称之为乐观计算的模式。因此,他们实际上是我们论文中引用的一个灵感,因为我们在某种程度上使用了他们的建模,并找到了一种方法来说,嗯,实际上taproot merkleizes all the things。那就让我们在taproot中做和他们一样的事情。这真是有趣。 Robin Linus (14:43.831) 是的。 Stephan (14:45.452) 好的,很好。那么让我们更详细地了解一下。所以 Robin ,你能解释一下BitVM的机制以及它是如何工作的吗?给我们一个概述。 Robin Linus (14:57.041) 最基本的想法是将一切都归结为二进制电路。为了做到这一点,我们需要一种叫做位承诺的东西。位承诺基本上是,我有一个变量,我们称之为A,这个变量可以是0或1。 现在作为证明者,我想要设置这个值,并且我希望一劳永逸地设置它。我想说,好的,A现在的值是1。每当我再次使用变量A时,我必须使用值1。如果我不使用值1,如果下一次我声称的值是0,那么我就是模棱两可的,就像我一次说它是0,另一次说它是1一样,这使你作为验证者可以拿走我的保证金。 如果我曾经说过A是一,也说过A是零,那么你可以拿走我的钱。这就是比特币的本质。 Stephan (15:58.992) 明白了。所以在这个上下文中,模棱两可有点像在闪电通道中作弊之类的行为。就像你做错了一样。 Robin Linus (16:04.413) 是的,是的,就像我只能声称A是一或A是零。但如果我声称A是一,然后第二天我声称A是零,那么是的,我就撒谎了。我就是做出了一个不一致的声明,而每个不一致的声明都可以受到惩罚。这是问题的核心。 Super Testnet (16:29.138) 在闪电通道中,类似的情况是使用公正交易。当你想关闭闪电通道时,你必须说最新的状态是什么。如果在该闪电通道的历史某个时点,你说不,这不是最新的状态,这个新状态才是最新的,那么你就自相矛盾或模棱两可了,别人可以惩罚你,或者你的对手可以惩罚你,并拿走你试图拿走的钱,甚至更多。 Super Testnet (16:59.292) 我们定义变量,如果你在变量上模棱两可,如果你说过它是这样的,现在又是那样的,那么你的对手可以在那种情况下拿走你的钱。 Robin Linus (17:13.673) 真正酷的是它是离链状态。我可以透露预映像有两个哈希,哈希0和哈希1。如果我向你透露哈希1的预映像,那么我设置值为1。如果我向你透露哈希0的预映像,那么我将承诺或变量的值设置为0。这取决于我透露哪个预映像, Stephan (17:13.68) 明白了,好的。 Robin Linus (17:43.013) 我可以设置值。关于这一点的酷之处在于,它引入了跨不同UTXO或跨不同脚本的状态。这是非常新颖的,因为通常脚本被限制在特定的UTXO上,比如只有这个执行,然后环境永远被删除。但通过位承诺的这个技巧,你可以引入跨不同脚本和跨不同UTXO的变量。 这基本上是创新的核心,我们可以在不同的UTXO之间拥有状态。 Super Testnet (18:23.082) BitVM工作的核心之一是程序的解构概念。任何存在的程序,比如任何代码片段或任何软件最终都必须在微芯片上运行。由于微芯片是由这些称为逻辑门的微小电路构成的,你实际上可以解构任何程序,并将其转化为一堆相互连接的这些逻辑门。我们确实这样做了。我们实际上将一个程序插入虚拟机,你说,我想运行这个程序,虚拟机解析它并处理它,并将其转化为一堆连接的逻辑门。然后每一个逻辑门都进入taproot地址的一个tap叶子。通过拥有这个解构的程序,它允许你实际上检查该程序的每一步的执行。你可以说,好的,在步骤A中,它必须通过这个逻辑门,一个。你可以检查每一步,看看证明者是否准确无误地执行了程序的每一步。你可以在比特币交易或比特币地址中检查这一点。如果他们做到了,如果他们正确执行了一切,那么好,证明者就可以为为你提供这项服务而拿到一些报酬。但如果他们弄错了,或者试图欺骗,或者模棱两可,你可以检测到,因为你有每一步的证据,然后说这是他们试图欺骗的证据,这是他们模棱两可的证据,这是他们错误运行程序的证据。然后你可以拿到证明者的钱。所以在这里的核心,又是解构一个程序并将其转化为比特币实际能理解的所有这些微小步骤。 Stephan (20:18.696) 正如你指出的,这是由于Taproot的结构才得以实现的。因此,我想说我见过的一个问题或批评是你可能会创建这些巨大的tap叶子或tap树,对吧?所以你能稍微详细说明一下 这个方面吗?也就是说,我想我们所关心的是初始设置时间。因为假设我们正在设置某种BitVM结构,将需要大量的来回通信,需要大量的计算才能使其正常运行。 Robin Linus(21:02.345)
是的,就像你必须设定那个圈一次,然后你必须在一个主干或者多个主干中表达它。而现实世界的程序很容易像数十亿个门一样庞大,数十亿个门基本上意味着你需要数十亿个主干叶。所以你需要提前计算这个巨大的主干树。是的,人们批评过它,但我认为他们大多数批评它是因为他们真的不明白它是如何运作的。 是的,如果你只是朴素地将一个常规程序编译成一个电路,那么它将变得庞大,而在实践中可能是不可能的,或者可能需要数天甚至数周来提前计算,这对用户体验来说不好,而且可能不会被广泛采用。但没有必要以那种方式做。 这些人的思考是来自于执行编程的常规思维。如果你真的必须执行所有东西,那么你需要表示每个门。这是对的。但在这里,我们不是在执行计算,我们是在验证特定的执行。验证特定的执行比执行整个计算容易得多。 而且我们可以巧妙地设计电路,以便我们只需要每个电路一次。例如,假设我们有一个用于SHA-256的电路。现在我们想要进行一百万次SHA-256调用。我们不需要复制那个电路一百万次。我们只需要一次,因为我们最多需要执行一次。正好在这种情况下,证明者说谎了。 Robin Linus(22:56.793) 只要证明者提出的要求是正确的,比如他说这个原像的哈希是那个哈希,这个原像的哈希是那个哈希,等等,只要这些要求是正确的,我们就永远不需要真正计算它们。我们不需要反驳它们。我们只需要反驳一个不正确的要求。所以假设验证者对哈希提出了一百万个要求,然后第一百万零一号要求是不正确的。 那么我们只需要验证或反驳这最后一个要求和所有其他要求。我们永远不需要触及它们,因为它们在第一次就已经是正确的了,所以没有必要反驳它们,或者如果它们是正确的话,也没有办法反驳它们。 Stephan (23:35.82)
是的,正如你在论文中指出的那样,这个BitVM的合作案例很大程度上可以保持在链下。只有在有人试图作弊或者有人搞错的情况下,你才真正需要去链上,对吧?然后我想在这种情况下,不是说这笔巨额交易必须进入链上,而是你只是将交易的一部分放在链上,对吧? Robin Linus(23:45.233) 是的,一切都可以这么简单。 Robin Linus(23:54.56) 是的。 Robin Linus(24:04.3)是的。 Super Testnet(24:05.31)是的,你展示错误发生的地方。所以你取其中一个这些逻辑门,一个微小的代码片段,大约10行代码,然后说这是错误发生的地方。所以这并不多。比闪电网络的罚款交易还要小。 Stephan (24:27.408) 明白了。我猜也许这也是个术语问题,但这个图灵完备性的概念一直是个备受争议的想法。所以你们能不能详细解释一下这个概念呢?嗯,我想首先,你能解释一下图灵完备是什么意思吗?也许你对比特币是否有好坏之分的看法呢?因为我想有些人说,哦,不,这是个坏事。也许你可以解释一下你的看法。 Robin Linus(24:56.397) 图灵完备通常意味着计算机是图灵完备的,如果它能计算一切可计算的东西。那基本上是它的简单解释。像,有不同的… Super Testnet(25:10.742) 是的,有一类计算机无法解决的程序或问题。比如派的最后一位是多少?这不是一个可计算的数字,因为派不是有理数。如果你将你的计算限制在计算机实际能够解决的问题子集上,那么图灵机或图灵完备计算机就是那种能够解决所有这些问题的计算机。 Stephan (25:40.316) 我明白了。然后对于比特币而言,你对此是好事还是坏事有什么看法吗?我想你显然是说这是一件好事。我并不是说我一定认同这种批评,但我在这方面见过批评,有人认为这对比特币是一件坏事。你能解释一下你的看法吗? Robin Linus(26:05.069) 我认为这些观点大多数是来自于,例如,在以太坊中,协议层面上有很多复杂性。以太坊本身就非常复杂,而这种复杂性,我们不想在比特币上有。我们希望保持比特币尽可能简单,因为如果它简单,我们就能更容易地推断系统的安全性局限。而我们在这里实现图灵完备计算的方式与以太坊非常不同,因为我们不增加基层的复杂性。基层仍然保持非常简单,基层的操作也非常简单。 而且,必须写入基层的数据量非常有限。不像以太坊,每个人都将他们的合同写入以太坊链,而每个人都必须永久保存它们。在这里并非如此。基本上一切都在链下进行。在协作案例中,你甚至在链上都察觉不到有人运行BitVM。在协作案例中,它只是一个常规的Schnorr签名。它只是… 一个两方交易,几乎是比特币上最简单的事情。我认为这在安全性和去中心化性方面更好,因为所有的复杂性都被转移到了链下。它不在基层,也不是整个网络验证每个人的一切的负担。这是很大的优势。 Super Testnet(27:49.35) 在我看来,一个图灵完备的编程环境对比特币来说是不好的。我很高兴比特币是有限的,没有图灵完备的能力。其中一个原因是因为计算机实际上不能区分一个可计算的程序和一个不可计算的程序。它们不知道程序是否可计算。当它们第一次看到它时,它们必须运行它来找出。如果它是不可计算的,如果有一个不可计算的函数,它们就会陷入困境。它们可能会永远卡住。 Robin Linus(28:01.397) 我也是。 Super Testnet(28:19.124) 这是计算机科学中的停机问题。所以如果比特币具有图灵完备的编程,那可能是很糟糕的,因为有人可能提交一个节点实际上无法验证的交易。所以它们就会被卡住。它们会永远卡在尝试验证这个交易上。或者至少直到有人提出一个不包含那笔交易的不同区块为止。 所以我认为在比特币上拥有图灵完备的编程是不好的。因此,通过在没有图灵完备的编程语言环境中实现BitVM,我们必须找到巧妙的方法来解决这个问题。我们想出的解决方案是在比特币之外创建程序。你实际上在比特币之外证明这个程序是可计算的。然后你把这个已经完成的程序, Super Testnet(29:15.44) 可计算的,放入一个主干叶或主干树中,这样比特币就不会被卡住。它利用了比特币不能解决或甚至不能尝试解决这些不可计算程序的事实。你只需要提前证明它是可以解决的。 Stephan (29:33.152) 是的。我想解释的另一种方式是,正如你所说,有这个停机问题。显然,我们不希望网络停机,而这里没有集中式服务器,只是数以万计、数以十万计的人运行着他们的比特币节点并执行这些操作。但我们可以说,在BitVM的背景下,如果比方说你和我进入这种BitVM的安排,如果我们弄砸了我们的程序,那只会影响你和我,对吧?它不会影响运行比特币的其他所有人。 Super Testnet (30:02.186) 好吧,这不会影响我们,因为发生的情况是,你必须,你必须,证明者必须创建这个程序并解决它,然后将程序放到比特币上,并向他的交易对手展示解决方案。但如果他永远不能做到,如果他实际上永远无法解决它,你就会卡在第一步。 Stephan (30:13.915) 我明白了。 Stephan (30:21.004) 对,我们甚至从一开始就无法启动这个东西。 Super Testnet (30:23.702) 是的,你可以创建资金交易。你可以把钱放到这个 tap tree 中,但验证者将只是把他的钱拿回来,因为求解器永远无法提供解决方案,他永远无法提供通过永不停止的电路的有效路径。 Stephan (30:42.332) 懂了。好的。那么就在这方面,这将会带来什么样的可能性呢?显然,现在还只是早期阶段,对吧?这篇论文昨天才发布。但如果你能为我们详细说明你认为可能存在的可能性,那将是很好的。正如你提到的,我们可以谈一谈这个双向挂钩的想法,罗宾,你能解释一下你认为比特币可能会有什么样的观点吗?比如,你是不是在说有人可以使用 BitVM? 或 BitVM 的将来版本,并创建某种无信任或所谓的无信任的双向挂钩,并且这将使侧链上的交易能够回挂到比特币上。 Robin Linus (31:25.469) 是的,这是一个大胆的梦想,我对它能够实现感到乐观。 Super Testnet (31:30.954) 我还想指出一点... Stephan (31:31.663) 好的。 Super Testnet (31:33.578) 在我们深入讨论用例之前,我想提醒大家 BitVM 目前非常有限。非常有限。我们只实现了虚拟机本身和一个函数。到目前为止,我们只有一个可以在其中运行的函数。这实际上是一个有用的函数。它被称为零检查函数。我们在比特币中用它来进行工作证明之类的工作。但我们只有这一个东西。为了构建侧链或契约或我们可能能够用 BitVM 实现的任何酷东西,我们 你知道,我们可能能够用 BitVM 实现的任何酷东西,我们需要更多的工具。我们需要编写更多的函数,在这个东西中运行它们,优化它们,并创建开发人员工具,以便开发人员可以实际创建合同,编写并调试它们。所以这将是一条漫长的道路。你知道,我们还远远没有能够在 BitVM 上做所有这些花哨的东西的情况。 它目前只是一个非常基本的实现,只有一个函数。所以我们还没有到达那个地步。 Stephan (32:35.948) 是的,指出这一点是完全合理的。而且我想你指出的另一个优势是,正如你所指出的,这不需要软分叉。所以这在比特币今天是可行的。所以我想这是一个重要的观点。是的。 Robin Linus (32:48.205) 就是这样。 Robin Linus (32:51.693) 它基本上就像 MAD 提案,合并所有东西,但没有软分叉。 Robin Linus (32:59.149) 这就是 COVID。 Stephan (32:59.736) 好的。 Super Testnet (33:00.05) 所以我期待的其中之一是弄清楚我们是否可以用这个进行任何形式的契约。契约是比特币中的一种交易类型,甚至是一种地址类型,一旦资金进入这个地址,就预定它将从那里进入一组预定的其他地址。我认为可能 我们可以使用 bitVM 实现这种原语的某种形式。如果我们可以做到这一点,那将打开许多大门。例如,这将使 Arc 更容易构建。它可以帮助我们改进闪电网络。所以,是的,我们在能够在这方面实际做契约之前,还有一些工作要做,如果可能的话。所以,是的,我期待着看看我们是否能够做到这一点。 Stephan (33:52.904) 是的。我明白了。那么以 Covenant 为例,我想简化一下,现在在今天已经有的东西,比如 Multi-Sig 等等,我想那可以在交易的输入方面帮助你锁定可以花费的金额。但我理解你所能做的一些 Covenant 是与交易的输出方面有关的,你在约束它可以去的地方,比特币的 UTXO 中有多少可以移动。所以从理论上讲,在未来,你可能会使用 Covenant 的泛化想法,你可能会说这个 UTXO 中的币只能移动 50%,或者类似的情况,对吗?就像 James O'Bee 的 OpVault 的想法中涉及到的一些情况。所以 我猜你的意思是,你说我们应该探索一下 bit 的可能性。 Super Testnet (34:50.466) 在 Biquin 中,你可以创建一个交易。 你可以说只有 Alice 或 Bob 可以花这笔钱。这只有这两个人被允许花费。他们是唯一拥有密钥的人。使用契约,你将会说,我会把一些钱放在一个地址中,其中 50% 将会流向 Alice,50% 将会流向 Bob。你某种程度上,有些人称之为“诅咒比特币”。它不能去其他地方。它必须去 Alice 或者必须去 Bob。这就是契约所能实现的。它是一种允许构建更多东西的原语。所以, 我不确定 BitVM 是否会为在比特币中执行契约的可能性创造条件,但我认为它确实有这个可能性,或者至少与之类似。所以我希望能够探索一下,看看我们是否能够使之成为现实。 Stephan (35:39.26) 好的。关于数据可用性方面,评论中还有另一个问题。问题是,它是否会有类似于 rollup 的数据可用性约束? Super Testnet (35:58.41) 这取决于你构建的合约。如果你使用这个构建一个 rollup,那么你将面临 rollup 带来的问题之一,其中之一是你要将 rollup 的数据放在哪里?BitVM 并没有解决这个问题。它只是一种对程序逻辑进行编码的方式,以便你可以在比特币上执行它,或者你可以证明或验证它是否在比特币上正确执行。它并不能解决像在 rollup 上下文中放置数据的问题。 Robin Linus (35:58.825) 是的。 Super Testnet (36:26.494) 所以是的,如果你要做 rollup,你将会面临数据可用性的问题。但当然,并非每个合约都有数据可用性的问题。有一些合约类型,根本不会产生大量的数据。它们只产生一兆字节左右。然后你可以将那些数据存储在你的本地机器上。所以,这取决于你写的合约。 Stephan (36:50.392) 看得出来。在处理大量争端的费用方面,我想这只是像闪电网络或者今天的比特币一样,对吧?如果很多人进入类似于 BitVM 的安排,他们需要转到链上,与今天很多人同时关闭闪电通道的问题并没有太大不同,对吧? Robin Linus (37:17.513) 是的,这就是为什么侧链会更好,因为在侧链中,你不会真正遇到大规模退出的问题,只要侧链是完全的。 Stephan (37:27.331) 我明白了。 Super Testnet (37:27.554) 好吧,如果所有人都想退出或者一下子全部退出,那么可能会有一个从侧链快速退出的情况。如果侧链上有一百万人,他们都想一下子退出,那可能是一个问题。 Robin Linus (37:39.153) 是的,但它不会以侧链停止工作的方式失败,只要它是无许可的,对吧?对于一个 roll,通常是序列是... Super Testnet (37:45.226) 是的,它只会,它会使证明者破产。但是是的,他将无法不给人们他们的钱,因为 BitVM 将确保他们始终有一种 peg out 的选择。这很酷。 Robin Linus (38:01.516) 是的。 Stephan (38:03.48) 对,所以是的,这更接近这个所谓的无信任的双向挂钩的概念,而不是在这个上下文中需要通过联邦进行的例子。 Robin Linus (38:19.357) 我是说,在我们的模型中,我们可能也会有一个联邦,但区别在于联邦不再受信任。就像联邦将被要求执行事务,并执行实际的打包一样,但如果他们停止工作或者进行任何无效的操作,你可以拿走他们的存款,然后他们将损失比从系统中获得的更多。 Stephan (38:26.416) 明白了。 Super Testnet (38:40.762) 我不同意... 如果你与某人在一个联邦中,你依赖他们处理块,所以从任何意义上来说,他们在某些方面是受信任的,但只是不用你的钱。你不会信任他们拿你的钱。你只是希望他们不会通过突然停止在侧链上处理块来给你带来不必要的费用,导致你不得不退出。你得依赖他们不要这样做,或者至少你会希望他们不会这样做,因为如果他们被证明是不可靠的批准者,那将花费你时间。 这不会花费你钱,但会花费你时间。 Stephan (39:12.62) 是的,所以在那个层面上,更像是一个烦人的问题,而不是一个直接的盗窃问题。 Robin Linus (39:20.373) 是的。 Super Testnet (39:21.814) 是的,它将是那样,而且它也会毁掉每个人的一天,如果每个人都依赖这个侧链继续运行,并在其上构建业务,然后突然停止工作。他们可能不会失去钱,但他们的业务可能就无法运作了。所以他们会说,嗯,我虽然没失去钱,但我失去了收入,所以,你知道,仍然存在很多信任。 Stephan (39:21.989) 好的。 Stephan (39:42.393) 是的。 Robin Linus (39:42.861) 其中很多是理论上的问题,我想指出,因为侧链的好处之一是一旦我们找到了一种进行无信任的双向包的方法,那么侧链币将变得有价值,或者说它们的价值将等于 BTC。一旦有了进行双向包或退出的方法,你就可以进行原子交换,并在流动性提供者和侧链用户之间实现基本上即时的退出。 Stephan (40:17.944) 是的,我的意思是,即使对我来说,我也不能百分之百确定它的价值是否仍然相同,对吧?就像,即使我们有了比特币中的无信任的双向挂钩,那么无信任的双向挂钩币,比如侧链币,是否会被赋予与比特币相同的价值?我不知道。 Robin Linus (40:33.309) 是的,可能。我认为会的,因为你可以在以太坊世界看到,他们将 ETH 锚定到其他链上,它与主链上的 ETH 一样有价值。 Super Testnet (40:43.794) 或者在一个非常接近的百分比内。是的,我不知道。如果你有一个非常可靠的链,运作得很好,那么它可能更有吸引力,人们可能更愿意使用它。因此,网络可能会更有价值,或许其挂钩将更接近比特币。但如果你有一个刚刚启动的新链,也许就不太一样了。也许它们有一些引导阶段。 Robin Linus (40:47.71) 是的。 Stephan (40:48.301) 是的,也许,可能。 Stephan (41:08.508) 是的。我看到一些讨论的另一个方面是,如果我们假设我们有BitVM,并且我们有检查模板验证,那是否也会改变事情或使得这种做法更容易? Robin Linus (41:09.569) 可能会改善多方面的设置。对于两方设置,你实际上不需要 CTV,因为你可以预先签名一切,而且你可以在两方之间完美模拟 CTV。这不是问题。但对于多方面的设置,对于开放式设置,你有一个单一的证明者,但有多个验证者,或者每个人都可以是验证者,在这种情况下,使用 CTV 可能是有趣的。 Super Testnet (41:49.954) 昨天在比特币开发者邮件列表上有一篇有趣的帖子,由 Anthony Towns 撰写,他对电路的规模有了一些数学计算,或者说这些程序的规模有多大,仍然能够及时验证,并使用少量的交易。根据他的数学计算,看起来你可以…… 通过添加 CTV,可以将可能程序的大小增加大约 10 到 12 倍左右。你可以使其变得 10 到 12 倍大。这还是挺酷的。但... 但是,是的,我认为我们已经可以使用这个进行相当大规模的程序了。他谈到了在一个单一程序中拥有 2400 万次运算。大多数有趣的东西都不需要那么多。所以,我们已经可以用这个做相当大的程序了。 Robin Linus (42:44.597) 我真的想强调的是,关于空间限制的谈论并不完全符合现实。你可以构建一个 VM,比如说,只需要 10GB。如果你愿意建立一个 10GB 的电路,你将能够执行任何人所需的更多计算。 Super Testnet (43:08.95) 是的,我不知道它需要多少,但已经可以通过这种方式使用很多非常现实和有用的东西,不论是少量的门,还是很多门,就像在一个单一程序中有 1200 万次运算一样。 Robin Linus (43:23.785) 昨晚我做了一些计算,我认为用 10GB 可以在现代 CPU 上运行一天左右,我认为。因此,你可以在约半天内做任何你可以在半天内做的事情。 Super Testnet (43:37.194) 是的,非常好。你不会发现圆周率的下一个数字,但你可能可以从侧链中进行一次退出。 Robin Linus (43:48.429) 是的,我只想强调我认为你可以做任何数量的计算。你甚至可以在 BitVM 中同步比特币全节点。 Stephan (43:57.728) 这有点像梦中的感觉。好吧,我们来讨论一下,是的,我想,关于实际问题,就是 BitVM 用户是否需要强大的硬件来设置这个?你知道,这是一种,你不太可能使用,比如移动用户可能无法参与这种活动? Super Testnet (43:58.946) 那将是很棒的 Robin Linus (43:59.625) 是的。 Robin Linus (44:22.693) 是的,就在移动手机上设置电路可能会有问题。但你可以在你的桌面电脑或笔记本电脑上设置电路,然后在手机上使用相同的电路,这是可能的。我认为 Super Testnet (44:38.026) 是的,还有很多取决于电路。并非每个有用的电路都需要在你的手机上设置数百万次运算。如果你只是在进行一些数百或数千次运算的事情,你的手机可以处理。因此,它真的取决于你创建的合约是什么。 Robin Linus (44:56.202) 是的。 Robin Linus (45:01.577) 而且这与智能电路设计有关,因为就像我们可以设计电路以便轻松地证明它一样,通常情况下,你会设计电路以便能够尽可能有效地执行它。这通常是设计目标。但是在这里,我们根本没有这个设计目标。我们想要的是尽可能高效地证明该捷径的执行错误。这是一个非常不同的设计目标,我认为可能可以设计非常有效的电路,以至于在某些时候,你甚至可以在手机上运行一切,或者在手机上设置一切。 Stephan (45:44.112) 好的,有趣。这也可能是一种情境,也许,也许我想不出一个好的例子,但这可能是这样的情况,个人可能并不真正使用这个,但这可能是企业间的情况,也许他们会使用它。对于他们来说,需要强大的硬件可能并不是大问题。也许这也是比特币的一些用途,可能会有道理。 Robin Linus (46:07.273) 特别是在两向挂钩的情况下。在两向挂钩的情况下,我们一直在讨论的想法通常是你通常有一些提供流动性的实体,他们是在侧链上做大笔挂钩的人,比如挂钩 10 BTC 到侧链之类的。那将是一个实体,也许是由 50 个人组成的联合体,他们会被罚没或者发生了一些不好的事情,诸如此类。所以只有极少数的用户实际上需要运行 BitVM,大多数用户不太会在乎。 Stephan (46:43.184) 知道了,所以也许这与当前的闪电网络类似,比如闪电网络服务提供商,或者将来可能与 ARC 类似,可能与 ARC 服务提供商类似。这些都是高度熟练且有足够资本的用户。对于他们来说,有高要求可能并不是什么大问题,只要最终用户仍然能够完成所需的工作,而无需拥有令人惊讶的计算机和高资本等等。 Robin Linus (46:48.535) 是的。 Robin Linus (47:10.23) 是的。 Stephan (47:12.525) 是的,好的。 Super Testnet (47:12.99) 你的手机只需要证明有人证明某个合同的执行是不正确的。证明内证明。 Stephan (47:23.956) 是的,所以我猜很难解释今天对最终用户的实际用途。但我想当我试图总结回目前最终用户的实际用途时,将来可能会允许向侧链进行两向挂钩,或者也许有某种方式可以在今天启用比特币的契约而无需软分叉。但我猜这还需要更多的研究和努力。 Robin Linus (47:53.889) 最终目标肯定是要扩展,或者对我个人来说,最终目标是将比特币扩展到每秒一百万笔交易。这是我总体上关心的。但是为了更容易理解,我只举了一些人们更容易理解的例子,比如你可以在 BitVM 上玩国际象棋、扑克牌、围棋之类的。那可能更容易理解一些。 Stephan (48:21.948) 好的,但我猜很多人会说,嗯,我真的不在乎在比特币上玩国际象棋。我会去 chess.com 或者 Lee Chess 等地玩国际象棋,对吧? Robin Linus (48:31.389) 是的,我只是举例说明一下,展示现在可以在比特币上进行哪些计算。我想要表达的是,你可以在比特币上进行非常复杂的基于轮次的计算,离线进行,而且可以尽可能复杂。这就是我提到的原因。 Super Testnet (48:51.338) 有人前几天指出,目前不能在线进行高额扑克游戏,因为你不信任扑克网站管理 2 亿美元。但你可能会信任比特币这笔数目的钱。因此,如果我们能在 BitVM 中构建一个扑克游戏,这对一些人可能很有用。他们可能会说,哦,现在我可以在是否能得到一对艾斯的赌注为 2 亿美元。有些人可能想这么做。不是我。希望不是任何理智的人。 Stephan (48:51.704) 是的,我明白了。 Stephan (49:23.136) 是的,可能是这样。我认为对此还有其他一些担忧,现在人们担心机器人,以及像高级扑克玩家之类的人类扑克玩家被高级扑克机器人打败的问题等等。但是,是的。 Robin Linus (49:30.66) 是的。 Robin Linus (49:37.917) 还有合作的问题。在线扑克的主要问题是你永远不知道桌子上的所有其他人是否正在合作对抗你,对吧? Stephan (49:47.864) 对,对,是的,这是另一个问题,显然,在这方面以前曾经有过一些与此相关的丑闻。好吧, 我只是在考虑如何最好地总结这个。所以... 让我试试,好的,我要试着总结一下。显然,这很技术性,但如果我理解错了什么,请告诉我。所以,这个想法是,你正在创建这种证明者和验证者的动态以及挑战-响应的动态,并且你利用了 Taproot 允许你拥有这些庞大的交易树的事实,使人们能够预先计算事物,并允许他们计算,然后证明如果有人做错了什么。目标是为比特币提供更多的可扩展性,或者可能是更多的契约。这是一个高层次的思考方式,对吗? Robin Linus (50:52.201) 是的。唯一要补充的是,我们还可以获得隐私。如果我们有一个两向挂钩,我们也可以获得隐私,基本上不仅仅是可扩展性,还有隐私。 Super Testnet (50:53.113) 其中一些听起来是正确的。 Stephan (51:07.316) 是的, Super testnet,有什么要补充的吗? Super Testnet (51:09.839) 我想说,BitVM 可能给予我们很多在比特币中以前很难实现的脚本超能力。现在它们仍然很难,但我们现在有了一条路径,使它们变得更容易。所以这真的很酷。但未来我们可以用它做什么,我们也许可以做契约,也许可以做侧链。而这正是我目前追求的两个目标。 希望,或者在游戏中也是一个第三个目标。但希望人们会想到我们没有想到的东西。他们可能会说,你知道吗,如果我们现在在比特币上运行一个计算机,让我们把这个放上去。也许我们会在区块链上运行《毁灭战士》(Doom),我不知道。或者我是说,不是在区块链上,在区块链外,应该这么说。但我们会看到,我们会看到人们会想出什么。 Stephan (51:56.26) 好的。嗯,bitvm.org 是链接。我会在 Stephan livera.com 的节目注释中放置所有链接。你们两位,罗宾和 Super testnet,有没有什么总结性的想法? Robin Linus (52:06.933) 当然,如果你想资助开发,请查看论文中的比特币地址。 Stephan (52:13.892) 还有 Super Testnet,还有什么你想提到的吗? Super Testnet (52:17.634) 走吧。 Stephan (52:20.495) 好的,走吧。谢谢你们加入我。 Robin Linus (52:20.822) 走吧。 非常感谢你的邀请。 Super Testnet (52:24.334) 谢谢,Stephan 。
最后更新于