主页 > 下载imtoken被盗 > 比特币也有智能合约吗?它与以太坊有何不同?

比特币也有智能合约吗?它与以太坊有何不同?

下载imtoken被盗 2023-08-03 05:16:02

受访者:王渊明(微博:@jolestar)

采访与写作:李华(笔芯研究院特约研究员)

随着新指令和算法的引入,比特币的多重签名功能变得越来越强大。多重签名不仅是指多个人一起签名以保留比特币资产;也可以是多个条件的“共同签名”,通过它可以锁定和解锁比特币。

使用条件来确定资产的用途实际上是合约的功能。当这个合约可以用代码表达并在没有信任的情况下自动执行时,我们称之为智能合约。因此,前 Bitcoin Core 首席维护者 Gavin Andresen 表示:比特币的多重签名功能已经可以完成以太坊上的大部分有用功能。

那么,比特币是如何实现智能合约的呢?比特币和以太坊的智能合约有什么区别?我们采访了对区块链和智能合约有深刻理解的技术作家王渊明。曾任新浪微博架构师、青云容器平台负责人。他现在是一个公链项目的首席架构师。BFTF区块链技术联盟发起人。

智能合约

一、比特币需要智能合约吗?

问:比特币需要智能合约吗?

答:是的。智能合约可以为比特币系统带来逻辑上的可扩展性,在不改变现有基础设施和基础设施的情况下为系统增加新的功能,从而增强系统的能力。可扩展性不仅仅与 TPS、容量和存储有关。

智能合约的另一个功能是它们可以实现绑定合约功能。它是一种界定各方权利义务关系的协议,但它是数字化的,其执行机制不依赖于现有的法律体系。

Q:比特币作为一种加密货币,为什么需要合约功能?仅仅交易它还不够吗?

A:没有所谓的简单交易。你为什么把钱转给我?无论是购物,工资还是其他,实际上都取决于合同。在现实生活中,该合同的执行依赖于司法系统。一方违约,另一方可以起诉。没有司法制度的约束,任何交易都无法仅靠金钱完成。

那么在全球化的加密货币世界中,如何构建此类合约的约束力呢?取决于智能合约。智能合约通过代码表达和执行规则/法律,并使用代码构建绑定系统。

问:比特币需要 DeFi 吗?

A:广义上讲,所有的加密货币都属于DeFi的应用领域,因为DeFi的第一步就是要有货币。有了货币之后,你可以定义如何与其他资产或货币进行兑换,如何借入等等。加密货币金融相对于法币体系金融还比较早,还有很长的路要走。

二、比特币如何实现智能合约

Q:为什么说比特币系统支持智能合约?

A:合同就是我和你做交易的时候,可以保证交易的完成,也就是说可以表达一定的条件,只有条件满足我才会给你钱。如果这个条件能表达出来,就可以认为它具备表达智能合约的能力。比特币的脚本(Script)具有表达智能合约的能力,比特币的脚本可以理解为智能合约。

那么为什么比特币使用脚本而不是链上的硬化功能呢?因为如果固化在链上,当用户/开发者需要某个功能的时候,需要比特币开发团队去实现,然后发布,进而推动整个链的升级,但是区块链升级是一件复杂的事情,不可能得到 Okay 分叉。

所以,比特币只提供了一些基本的材料,相当于给你提供了面粉,但是怎么做菜就交给你了。你可以根据自己的场景使用这些素材来组合新的东西,而不需要依赖主链。升级。这就是我之前所说的通过智能合约实现逻辑可扩展性。未来是不确定的,智能合约可以看作是一种应对不确定性的策略。

以上是比特币系统自身对智能合约的支持,通过脚本实现;还有另一种支持/实现智能合约的方式,就是通过比特币系统的侧链在侧链上实现智能合约。类似于以太坊。

Q:比特币系统如何通过脚本实现智能合约?

A:以太坊上的智能合约直接用代码表示。在什么条件下执行A,在什么条件下执行B等等,比特币上的智能合约不像以太坊那么简单。

比特币上的所有智能合约都必须转化为加锁解锁机制,也就是说,在脚本中,资产是通过“密钥”或“哈希条件”锁定的,再加上一个“时间锁”。”(时间锁定)。无论是闪电网络还是Arwen协议,都是这样一种机制,而比特币即将推出的Schnoor签名也是为了更好的表达这种机制。

因此,实现比特币智能合约的核心是如何锁定和解锁资产。

如果合约中的所有条件都可以转化为密钥、哈希条件、时间锁进行加锁和解锁,那么该合约就可以在比特币系统中实现。我将这三个称为签名锁、哈希锁和时间锁。比特币智能合约基本上就是用这“三把锁”来实现的。

比如你从我这里买了一首音乐,音乐是通过密码访问的,那么在交易合约中,我也将音乐的访问密码变成了其中一个密钥。如果你想达成交易,你必须知道这个密钥;知道(你得到音乐),钱是付给我的。

问:哈希条件和键有什么区别?

A:你可以把它理解为一个东西,它们的作用是一样的。哈希条件是我知道一个值,对值进行哈希处理后得到哈希结果。然后在合约中,就是设置一个条件,写交易的时候谁可以输入哈希结果,钱属于谁。只要我有这个值,就有一个hash结果,也可以理解为一个key。

Q:简单来说,你能认为比特币的智能合约是通过多重签名和时间锁来实现的吗?

A:是的,我之前提到过智能合约是通过密钥、哈希条件和时间锁来实现的。哈希条件也可以看作是多重签名中的一个密钥;时间锁是关于块高度的条件。

问:时间锁定在实施智能合约中的重要性是什么?

A:时间锁定很重要。如果没有时间限制,很多协议都无法实现。正是因为有哈希条件和时间锁,闪电网络这样的合约才能运行。

例如,在闪电网络中,我们两个人一起出资,将资金冻结在共同管理的账户中,然后在链下相互支付。如果一方在解决问题上不合作怎么办?假设我们吵架了,你不想要你的钱,但我也拿不到我的。使用时间锁很容易处理。我设置了一个超时时间。过了超时时间,钱是我的比特币合约基金靠谱吗,我可以拿走。

三、比特币和以太坊智能合约的区别

Q:对应比特币使用脚本实现智能合约,以太坊用什么来实现智能合约?

A:以太坊有一种智能合约语言。其实比特币脚本也可以理解为一种语言,只是比较简单;比特币脚本执行也可以理解为有虚拟机,但是虚拟机的实现比较简单。既然所有的虚拟机都执行指令,那么以太坊的变化在哪里?

我将以太坊带来的主要变化总结为三点:

1. 以太坊虚拟机指令更具表现力。简单理解,可以认为以太坊提供的指令是低级指令,低级指令组合成高级指令,而比特币直接提供高级指令,其指令有限。另外,以太坊支持跳转等指令,可以表达循环等逻辑,也就是通常所说的图灵完备性。

2. 以太坊引入了气体机制。合约逻辑可以在以太坊上随意编写,gas 机制保证最终执行有上限。这样既解决了宕机问题,又限制了资源的浪费,使得脚本的执行成本和所支付的费用有关系。

3. 以太坊上的合约有状态,而比特币上的合约不能有自己的状态。这意味着:首先,比特币合约无法生成自己的状态。例如,如果你在这个脚本中输出了一些东西,你就不能在下一个脚本中使用它。比特币脚本都是一次性的。, 仅适用于本次交易;二、比特币上的脚本不能直接读取链上已有的状态,比如时间锁取决于链上的区块高度,需要特殊指令支持,脚本中嵌入其他状态(通过op_return指令实现)不能读。

问:图灵完备性有什么不同?

A:其实以太坊并不是真正的图灵完备的,因为它有gas限制,不可能使用太复杂的逻辑。

图灵完备性的优势在于它更具可扩展性和表现力。因此,以太坊提供的实验自由度远大于比特币,这也是为什么以太坊上有很多实验项目的原因。

比特币是一种保守的策略。我只有这么多指示。我会先在其他地方进行实验。实验完成后,如果我觉得需要支持这个指令,我会添加这个指令。例如,为了支持原子交换和支付通道,增加了哈希时间锁定协议,可以锁定一个时间段。

为什么比特币不扩展这么多指令?因为不同指令的资源消耗不同,如果表达非常复杂的脚本,执行交易的成本会非常高,会消耗资源,影响整个网络。

问:合同状态有什么不同?

A:比特币的状态都是链下生成的,也就是说,状态必须在交易产生的时候写入。链上只承载交易的数据,不能写入其他附加数据。

例如,你很难在比特币上发行自己的硬币。比特币上发行的硬币都是彩色硬币。彩币在脚本中嵌入了自己的一些数据结构,但脚本无法读取嵌入的数据结构,因此无法通过脚本验证数据结构。它需要再做一次。网络检查以查看写入的数据是否合法。

所有彩色币都是基于这个机制实现的,而不是像以太坊那样直接发行代币,然后通过合约进行验证。

比特币之所以采用这种设计,是因为它不欢迎其他数据被写入,因为对于比特币网络来说,承载额外数据是有成本的,而且这些数据必须永久保存,用户只需支付一次。因此,比特币不提供自定义状态的存储。这不是它的路线。通过 op_return 嵌入自定义数据可以理解为一种黑客行为,并不是比特币提供 op_return 的初衷。

其实这可以看出比特币和以太坊在设计思路上的区别:你可以把比特币理解为一个中立的银行,它只提供了一种资产锁定和解锁的机制,谁拥有关键资产就属于谁,它被用于other 它不关心 ; 的条件 而且每个资产都是独立的锁,不关心资产之间的关系。比特币智能合约不是一段代码,而是一系列对锁进行操作的协议。

以太坊的设计思想是任何合约都可以表示为一系列交易,而后续交易的状态和之前的交易状态是有关联的,所以它提供了一个通用的机制来跟踪和更新历史状态,同时更新逻辑和状态条件由用户自己创建。以太坊黄皮书中的世界状态公式很好地表达了这个想法。

这两种思路其实各有优劣,都与设计者的目标和对世界的抽象有关。

Q:比特币和以太坊的智能合约还有其他区别吗?

A:UTXO模型(未花费的交易输出)和Account模型(账户)的不同也会给两种智能合约的实现带来差异。

在UTXO模型中,每一笔钱都有一个标记,使用的时候要知道用了多少笔钱;Account模型相当于将用户的所有UTXO合并成一个大的UTXO,使用这个默认的UTXO。这有一些区别:

1. 在Account模型下写合约比较简单,只需要说转账多少,不需要指定转账多少;

2. Account 模型可以提前约束未来收益,也就是说钱还没有到合约账户,但是可以部署合约来约束应该怎么花;

3. 由于Account模型相当于合并UTXO,所以转账时不能直接设置解锁条件比特币合约基金靠谱吗,必须先部署合约。

当然,无论是 UTXO 模型还是 Account 模型都在演进,有些项目会对其进行改动。有机会我会写一篇文章详细分析。

四、比特币智能合约案例

Q:你怎么理解闪电网络本身就是一个智能合约?

A:你可以说闪电网络是一个协议,也可以说它是比特币上的智能合约。闪电网络的合约主要解决两个人如何锁钱,一方作弊,不合作怎么办等问题,是通过上面提到的三把锁来实现的。

Q:在闪电网络上实施智能合约的流程是怎样的?

A:闪电网络其实是两个人之间的支付通道,现在只支持相互转账。我们尝试在支付通道之上嵌入一个虚拟机来执行相对完整的智能合约,比如游戏。(注:王渊明在闪电网络上实现的智能合约)

通道双方可以压一个BTC,然后去玩游戏,获胜者将获得BTC;如果玩家之间存在分歧,可以通过仲裁系统进行仲裁。仲裁系统相当于一个法院,可以是一条侧链,也可以是双方信任的机构运行的节点,也可以是仲裁人的市场等。仲裁系统保存着解锁密钥(哈希值)双方,并经过仲裁,将钥匙交给获胜方。

由于闪电网络的资产是有方向性的,仲裁人只能决定哪个用户获得BTC,而不能拿走用户的BTC。即使有共同作弊的可能,作弊的成本也高于托管模式。

Q:通过闪电网络实现智能合约和通过类似 Liquid 的侧链实现智能合约有什么区别?

A:闪电网络上的智能合约由通道两侧的链下节点执行,并相互验证。当出现分歧时,需要仲裁系统进行仲裁。侧链本身有共识机制,有多个节点来执行和验证合约,所以两者的执行机制是不同的。

在侧链上实现智能合约的方式与在以太坊上实现智能合约的方式类似,但与主链配合时,需要用到比特币的加锁解锁机制。

结束语

作为一种加密货币,比特币似乎有能力为 DeFi 的发展提供更好的空间,因为它凝聚了最多的共识,也承载着最高的价值和流动性,是最值得信赖的加密资产。

那么作为一个系统,比特币是否支持 DeFi 的实现呢?在本文中,我们探讨了比特币智能合约的实现机制,并与以太坊智能合约进行了一些比较。比特币上的 DeFi 不仅是可能的,而且会随着多重签名的力量变得更加完整。

或许我们可以期待以比特币为核心元素的去中心化金融服务的到来。