主页 > imtoken官方地址 > 打开比特币智能合约的“三把锁”

打开比特币智能合约的“三把锁”

imtoken官方地址 2023-01-18 16:30:17

比特币合约对冲锁仓_比特币合约每天都要转出吗_什么是比特币合约

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

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

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

什么是比特币合约_比特币合约对冲锁仓_比特币合约每天都要转出吗

智能合约

1. 比特币需要智能合约吗?

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

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

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

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

A:没有所谓的简单交易,为什么要转钱给我? 不管是购物,还是发工资等等,其实都取决于背后的合同。 在现实生活中,这种契约的执行取决于司法系统。 如果一方违约,另一方可以起诉。 没有司法制度的约束,任何交易都不可能只用货币来完成。

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

问:比特币需要 DeFi 吗?

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

2. 比特币如何实现智能合约

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

A:合同是指当我与你进行交易时,它可以保证交易的完成,也就是说,它可以表达一定的条件,只有在满足条件的情况下,我才会向你付款。 如果能够表达这个条件,就可以认为它具有表达智能合约的能力。 比特币的脚本(Script)具有表达智能合约的能力,比特币的脚本可以理解为一种智能合约。

那为什么比特币要用脚本而不是在链上固化函数呢? 因为如果固化在链上,当用户/开发者需要某个功能时,需要比特币开发团队去实现,然后发布,然后推动整个链的升级,但是区块链升级是一个复杂的过程事,且无法解决。 好吧,它是分叉的。

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

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

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

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

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

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

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

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

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

A:你可以把它理解为一个东西,它们的作用是一样的。 散列条件是我知道一个值,我对这个值进行散列后得到一个散列结果。 然后在合约里面,就是设置一个条件,谁在写交易的时候,谁能输入哈希结果,谁就可以拿到钱。 只要我有这个值,就会有一个hash结果什么是比特币合约,也可以理解为有一个key。

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

A:是的,如前所述,智能合约是使用密钥、哈希条件和时间锁来实现的。 哈希条件也可以被视为多重签名中的密钥; 时间锁是关于块高度的条件。

Q:时间锁在实现智能合约中的重要性是什么?

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

比如在闪电网络中,我们两个人一起出钱,把钱冻结在一个共同管理的账户里,然后在链下互相支付。 结算时一方不配合怎么办? 假设我们吵架,你不要你的钱,我却拿不到我的。 有了时间锁,就好办了。 我定个加班,加班过后,钱是我的,我可以拿走。

3. 比特币和以太坊智能合约的区别

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

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

我总结一下以太坊带来的三个主要变化:

1、以太坊虚拟机指令表达能力更强。 简单理解,可以认为以太坊提供的指令是低级的,低级指令组合成高级指令,而比特币直接提供高级指令,其指令是有限的。 另外,以太坊支持跳转等指令,可以表达循环等逻辑,也就是我们常说的图灵完备。 2.以太坊引入gas机制。 你可以在以太坊上自由编写合约逻辑,gas机制保证最终执行时有上限。 这样既解决了宕机问题,又限制了资源的浪费,这样脚本的执行成本和付出的成本之间就有了关系。 3. 以太坊上的合约有状态,而比特币上的合约不能有自己的状态。 这意味着:首先,比特币上的合约无法生成自己的状态。 例如,如果你在这个脚本中输出了一些东西,它就不能在下一个脚本中使用。 比特币脚本都是一次性的,只对本次交易有效; 第二,比特币上的脚本不能直接读取链上已有的状态,比如时间锁取决于链上的区块高度,需要特殊的指令支持,在脚本中嵌入其他状态(通过op_return指令实现)是更不可读。

问:图灵完备性有什么区别?

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

图灵完备的优点是扩展能力更强,表达能力更强。 因此,以太坊提供的实验自由度远大于比特币,这也是以太坊上有很多实验项目的原因。

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

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

问:合同状态有什么区别?

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

比如你很难在比特币上发行自己的货币。 比特币上发行的币都是染色币。 染色币在脚本中嵌入了自己的一些数据结构,但是脚本无法读取嵌入的数据结构,所以无法通过脚本验证数据结构,需要重新做一遍。 网络检查,看写入的数据是否合法。

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

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

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

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

其实这两种想法各有利弊,关系到设计者的目标和对世界的抽象。

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

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

在UTXO模型中,每一笔钱都有一个标记,使用时需要准确知道使用的是哪一笔钱; Account模型相当于将用户所有的UTXO合并成一个大的UTXO,使用默认的UTXO。 这有几个区别:

1. Account模型下写合约比较简单。 你只需要说转多少钱,不需要具体说明转多少钱; 2. Account模型可以提前约束未来收益,也就是钱还没有转账。 到合约账户,但可以部署合约来限制它应该如何花费; 3. 由于Account模型相当于合并UTXO,因此转账时不能直接设置解锁条件,需要先部署一个合约。

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

4. 比特币智能合约案例

Q:如何理解闪电网络本身就是一个智能合约?

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

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

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

通道内的双方都可以存入一笔BTC,然后去玩游戏,获胜的一方将获得BTC; 游戏中如有分歧,可通过仲裁系统进行仲裁。 仲裁系统相当于法庭,可以是侧链,也可以是双方信任的机构运行的节点,也可以是仲裁员市场等,仲裁系统保存双方的解锁密钥(哈希值)双方,并在仲裁后将密钥交给获胜方。

由于闪电网络的资产是定向的,仲裁者只能决定哪个用户获得BTC,而不能拿走用户的BTC。 即使存在联合作弊的可能,作弊的成本也高于托管模式。

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

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

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

结论

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

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

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

-结束-