随着新的指令和的引入,的多签功能正在变得强大。多签不仅是指多个人共同签名,保管一笔比特币资产;它还可以是多个条件「共同签名」,通过这些条件锁定和解锁比特币。
用条件决定资产的使用,其实就是合约的功能。当这个合约可以被代码表达并无需信任地自动执行时,我们称其为合约。因此前比特币核心主管维护人员Gavin Andresen说:比特币的多签功能已经可以完成以太坊上大部分有用的功能。
那么,比特币是如何实现智能合约的?比特币与以太坊的智能合约又有何区别?我们采访了对和智能合约有着深刻认知的技术写作者王渊命,他曾任新浪微博架构师、QingCloud容器平台负责人,现为某公链项目的首席架构师,他也是BFTF区块链技术联盟的发起者。
一、比特币是否需要智能合约
Q:比特币需要智能合约吗?
A:需要。智能合约能够为比特币系统带来逻辑可扩展性,在不改变现有基础设施、基础架构的情况下,为系统增加新的功能,从而增强系统的能力。扩展性不只是指TPS、容量和存储等方面。
智能合约的另一个作用是它能实现具有约束力的合同功能。它是一个定义各方权利和义务关系的协议,只不过是数字化的,且它的执行机制不依赖于现有的法律体系。
Q:比特币作为一种加密货币,为什么需要合同功能?简单交易它不就可以吗?
A:并没有所谓的简单交易,你为什么给我转账?无论是购物,或者是发工资或其他,背后其实都依赖于一个合同。在现实生活中,这个合同的执行是依赖于司法体系的,一方违约,另外一方可以起诉。只有货币而没有司法体系的约束,是没办法完成任何交易的。
那么在全球化的加密货币世界里,该如何构建这种合同的约束力?依赖于智能合约。智能合约将规则/法律通过代码表达并执行,用代码构建出一套约束力体系。
Q:比特币需要DeFi吗?
A:广义来说,所有的加密货币都属于 DeFi 的应用领域,因为 DeFi 的第一步是有货币。有了货币后,可以围绕货币定义怎么跟其它资产或者货币交换,如何借贷等等,加密货币里的金融相对法币体系的金融还比较早期,可探索的路还很长。
二、比特币如何实现智能合约
Q:为什么说比特币系统是支持智能合约的?
A:合约就是当我跟你做一个交易时,它能保证这个交易达成,也就是说它能表达某种条件,当条件满足时我才给你付款。能把这个条件表达出来,就可以认为它有智能合约表达能力。比特币的脚本(Script)是有智能合约表达能力的,可以把比特币的脚本理解成是一种智能合约。
那为什么比特币要通过脚本而不是把功能固化在链上?因为如果固化在链上,当用户/需要某个功能时,就需要比特币开发团队去实现,然后再发布,然后推动整个链的升级,但区块链升级是个复杂的事情,弄不好就分叉了。
所以比特币只提供最基础的一些素材,相当于给你提供面粉,但菜怎么做留给你自己,你可以利用这些素材,根据自己的场景组合出新的东西,不需要依赖于主链的升级。这也就是我前边讲过的通过智能合约来实现逻辑可扩展性。未来是不确定的,智能合约可以看成是一种应对不确定性的策略。
上边是比特币系统本身对智能合约的支持,它是通过脚本实现的;还有另一类支持/实现智能合约的方式,就是通过比特币系统的侧链,在侧链上实现智能合约的方法跟在以太坊上类似。
Q:比特币系统是如何通过脚本实现智能合约的?
A:以太坊上的智能合约是直接用代码表达清楚的,什么条件下执行 A,什么条件下执行 B 等等,比特币上的智能合约不像以太坊那样直白。
比特币上所有的智能合约都要被转换成加锁、解锁的机制来实现,也就是说在脚本中,通过「key」或者是「哈希条件」把资产锁定,再加上一个「时间锁」(meLock)。无论是闪电网络还是Arwen协议,都是这样的机制,比特币将会推出的Schnoor签名之类的,也都是为了更好地去表达这个机制。
因此,实现比特币智能合约的核心就是怎么去加锁和解锁资产。
如果合约中所有的条件都能转换成key、哈希条件、时间锁这三者来加锁和解锁,那么这个合约就可以用比特币系统实现。我把这三者分别称为签名锁,哈希锁,时间锁,比特币智能合约基本就是用这「三把锁」来实现的。
比如你从我这儿买一个音乐,这个音乐通过密码访问,那么在交易合约中,我把音乐的访问密码也变成其中的一个key,如果要达成交易,这个key必须让你知道;而一旦你知道(你拿到音乐),钱就支付给我了。
Q:哈希条件和key有什么不同?
A:你可以理解成一个东西,它们的作用是一样的。哈希条件是我知道一个value,把value哈希之后得到一个哈希结果。那么在合约中,就是设置一个条件,谁能在写交易的时候把这个哈希结果打进来,这钱就归谁。只要我有这个value,就有哈希结果,也可以理解成有一个key。
Q:简单而言,可不可以认为比特币的智能合约是通过多签加上时间锁来实现的?
A:可以,前边讲过用key、哈希条件、时间锁实现智能合约,哈希条件也可以当作多重签名中的一个key来看待;时间锁则是一个关于区块高度的条件。
Q:时间锁在实现智能合约中的重要性是什么?
A:时间锁很重要,如果没有时间约束的话,很多协议是没法实现的。正是因为现在有了哈希条件、时间锁,闪电网络这种合约才能跑起来。
比如说闪电网络,我们两个人共同出钱,把钱冻结到一个共管的账号里,然后在链下互相支付,当要去结算时一方不合作了怎么办?假设我们吵架了,你的钱你不要了,但我的钱我也拿不到。有了时间锁就好处理了,我设一个超时时间,过了超时时间钱就是我的,我就可以拿走了。
三、比特币与以太坊智能合约的差别
Q:对应于比特币用脚本实现智能合约,以太坊是用什么实现智能合约的?
A:以太坊有一个智能合约语言。其实比特币的脚本也可以理解成一种语言,只不过比较简单;比特币脚本执行也可以理解成有一个虚拟机,只不过虚拟机的实现比较简单。既然都是虚拟机执行指令,那么以太坊的改变在哪里?
我总结以太坊带来的主要改变有三点:
1. 以太坊虚拟机指令的表达能力更强。简单理解的话,可以认为以太坊提供的指令更低级,用低级的指令组合成高级指令,而比特币是直接提供高级指令,其指令是有限的。另外,以太坊支持跳转等指令,能表达出循环等逻辑,也就是大家常说的图灵完备。
2. 以太坊引入了 gas 机制。在以太坊上可以随意写合约逻辑,gas机制保证最后执行的时候有一个上限限制,这除了解决停机问题外,还能限制浪费资源,让脚本的执行成本跟付出的费用间有个关系。
3. 以太坊上的合约有状态,而比特币上的合约不能有自己的状态。这代表着:第一,比特币上的合约是不能自己生成自己的状态的,比如说在这次脚本里输出一个东西,在下次脚本中使用是不行的,比特币的脚本都是一次性的,只对这个交易起作用;第二,比特币上的脚本是不能直接读取链上已有的状态的,比如时间锁依赖链上的区块高度,需要特殊指令支持,嵌入到脚本里的其他状态(通过 op_return 指令实现)更无法读取。
Q:图灵完备会带来什么差别?
A:其实以太坊也不是说真图灵完备,因为它有gas的限制,不可能用太复杂的逻辑。
图灵完备的好处是它的扩展能力更强,表达能力更强。因此以太坊提供的实验的自由度要远大于比特币,这也是以太坊上各种实验项目多的原因。
比特币是一种保守策略。我就这么多指令,我在别的地方先实验,实验好了,觉得需要支持这个指令,就增加这个指令。比如说为了支持原子交换以及支付通道,增加了哈希时间锁定协议,可以锁定一个时间段。
比特币为什么不扩充那么多指令?因为不同指令的资源消耗是不一样的,如果表达很复杂的脚本,执行这个交易的成本就会很高,会消耗资源、影响整个。
Q:合约状态会带来什么差别?
A:比特币的状态全是在链下生成的,就是说生成交易的时候就要把这个状态写好,链上只承载交易的数据,其它额外的数据写不进去。
比如你很难在比特币上发自己的币。在比特币上发的币都是染色币,染色币是在脚本里嵌入一些自己的数据结构,但脚本不能读嵌入的这个数据结构,所以也不能通过脚本对这个数据结构做验证,需要再做一个网络校验,看写进去的这个数据是不是合法的。
所有的染色币都是基于这个机制实现的,它不是像以太坊那样直接发一个token,然后通过合约来校验。
比特币之所以采用这种设计,本质在于它是不欢迎其他的数据写上去的,因为对比特币网络来说,承载额外的数据是有成本的,这种数据还得永久保存,而用户只付费一次。所以比特币不提供自定义状态的存储,这不是它的路线,通过 op_return 嵌入自定义数据可以理解为一种 hack 行为,并不是比特币提供 op_return 的本来目标。
其实这能够看出比特币和以太坊在设计思路上的区别:你可以把比特币理解成一个中立的银行,它只提供资产加锁、解锁的机制,谁有钥匙资产归谁,它对其他的条件都不关心;并且每一笔资产都是独立的锁,它也不关心资产之间的关系。比特币的智能合约并不是一段代码,而是一系列操作锁的协议。
而以太坊的的设计思路是任何合约都可以表现为一系列的交易,后面的交易和前置交易的状态是有关联的,所以它提供一种通用的追踪和更新历史状态的机制,而更新状态的逻辑和条件就由用户自己去创造。以太坊黄皮书里的世界状态的公式很好的表达了这种思路。
这两种思路其实各有优劣,和设计者的目标以及对世界的抽象有关系。
Q:比特币和以太坊的智能合约还有其他不同吗?
A:UTXO模型(未花费交易输出)与Account模型(账户)的不同,也会给两者智能合约的实现带来差异。
在 UTXO模型中,每一笔钱都有一个标记,使用的时候需要明确知道使用的是哪一笔钱;Account模型则相当于把用户所有的UTXO合并成一个大的UTXO,使用的是这个默认的UTXO。这带来几点不同:
1. 在Account模型下写合约比较简单,只需要说转多少钱,不需要指明转的是哪一笔钱;
2. Account模型可以提前对未来的收益进行约束,也就说这笔钱还没到合约账户,但可以部署合约去约束它该怎么花;
3. 由于Account模型相当于合并 UTXO,所以转账时不能直接设置解锁条件,必须先部署一个合约。
当然,UTXO模型和 Account 模型都是在演化的,有一些项目会对它们做出改变,有机会我会写文章详细分析。
四、比特币智能合约案例
Q:怎么理解闪电网络本身就是一种智能合约?
A:你可以说闪电网络是一个协议,也可以说它是比特币上的一种智能合约。闪电网络的合约主要解决两个人如何共同锁钱,以及如果一方作弊、不合作等等情况下怎么办的问题,它是通过前边说的三把锁来实现的。
Q:在闪电网络上实现智能合约又是怎样的一个过程?
A:闪电网络实际上是两个人之间的支付通道,现在只支持互相转账。我们尝试在支付通道之上嵌入了一个虚拟机,就可以执行比较完备的智能合约,比如游戏。(注:王渊命在闪电网络上实现的智能合约:https://github.com/starcoinorg/thor)
通道双方可以压一笔 BTC,然后去玩游戏,赢的一方得BTC;如果玩的有分歧,可通过仲裁系统去仲裁。仲裁系统相当于一个法院,可以是一个侧链,或是一个双方信任的机构运行的节点,或者是仲裁者市场等等。仲裁系统保留了双方的解锁钥匙(哈希的 value),它仲裁之后把钥匙给赢的一方。
由于闪电网络的资产是定向的,所以仲裁者只能决定哪个用户得到BTC,但自己不能拿走用户的 BTC,即便是有联合作弊的可能,但作弊成本要比托管模式高。
Q:通过闪电网络实现智能合约,与通过类似Liquid的侧链实现智能合约,有什么不同?
A:闪电网络上的智能合约是通道双方的链下节点执行的,互相校验,产生分歧时需要有一个仲裁系统来仲裁。而侧链本身就有共识机制,有多个节点来执行和校验合约,所以两者在执行机制上是不一样的。
在侧链实现智能合约的方式与在以太坊上实现智能合约的方式类似,但当它与主链协同的时候,需要通过比特币的加锁、解锁的机制。
结束语
作为加密货币,比特币似乎有能力为DeFi的发展提供一个更好的空间,因为它凝聚了最多的共识,也承载着最高的价值和流动性,它是最受信任的加密资产。
那么作为一种系统,比特币是否支持DeFi的实施?在本文中我们探讨了比特币智能合约的实现机制,并把它与以太坊智能合约进行了一些比较。比特币上的DeFi不仅是可能的,而且会随着多签功能的强大变得更加完备。
也许我们可以期待以比特币为核心元素的去中心化金融服务的到来。
数字加密货币是草根翻身的最后机会,真的错过了,找绳也没用!
五百年一遇的金融变革,让我们用全部的力量与全部的热忱拥抱区块链
币圈一日,互联网十年!在币里疗伤并收获着无穷的快乐与财富,美哉善哉!
如果你是刚接触的小白,或者是经常亏损爆仓 的朋友,可以让我们一起共同努力。让我们的口袋达到我们所预期的效果。让我们一起在这个市场持久的走下去,迎来最终的胜利。
了解更多币圈一线报道,与作者、读者更深入探讨、交流,欢迎大家来一起交流,互相学习!
------
延伸阅读:
在比特币的交易中常犯的三个错误,第三个最致命
币圈的风向标比特币,到今天已经诞生11年了。就像人们持续的痴迷于证券、外汇等传统金融一样,数字货币的交易受到越来越多的人的追捧。继彩民、股民之后,由一个名词应时而生,那就是“币民”。就像还不懂事的孩子一样,币民在数字货币的交易中经常会犯错,以下便是币民最常犯的三个错误,其中第三个最致命。
第一:没有一个完备的资金方案,总是喜欢梭*。其实犯错并不可耻,可是它会打击我们的自信心。在币圈中,我们常见的就是币民常常会把手头的盈余全部投资数字货币。然后在数字货币的交易中,往往缺乏耐心,总是喜欢全仓交易,上来就梭*。诚然,没有人能够准确的预测比特币、以太坊未来的价格走势,可是你不得不相信,完备的资金方案,其实也是我们制胜的关键。从概率学的角度讲,完备的资金方案能够让我们尽量做到不损失本金,这样心态就不会蹦。从市场的角度讲,任何一个货币对,大部分的时间都是在走盘整,然后把握市场规律,合理规划资金,严格执行止盈止损,在币市中获利的可能性就会大大增加。
第二:FOMO一词在币圈也是存在的,FOMO也成为“局外人困境”。在投资市场,FOMO表示投资者经常会担心自己错失了机会,错过了行情。往往就是这样,你最担心什么就会吸引什么。这种恐慌和焦虑会让人做出错误的决定,对于策略的执行不够严格。比如有的人会出现频繁下单,因为你从感觉自己建仓早了,没有找到合适的点位。这样就会经常陷入一错再错的恶性循环,对未来的预期很难达成。我们都知道,在币圈没有涨停、跌停的概念,所以的交易都是T+0,所以在比特币等数字货币的交易过程中,就应该更加的果敢和决绝。
第三:拒绝杠杆交易。在币圈,很多交易所都在长期期权交易,众所周知,期权是带杠杆的。小编认为,借币或者借钱交易的这种杠杆形式,仅仅是一种尝试,那么币民应该尽量少参与为秒。杠杆效应本身就是一种极其复杂的运算,同时借入归还的过程又非常繁琐,很容易让人在交易中发生错误。君不见无数币民一夜之间把仓爆,数万资金变成了早晨看到的一条爆仓提醒短信。这点是非常致命的,也是无法挽回的。
总之,在加密数字货币这个交易市场中有交易行为,就是遵守这个市场的规则。否则,你就有可能被这个市场深套,成为庄家的韭菜。
虽然现在市场看起来并没有想象中的那么美好,但有句话说得很好:“机会永远是给有准备的人”,我们要对将来的机会做好准备。许多人都不知道应该怎么炒币,毕竟不是任何人能够准确判断什么时候买入,什么时候卖出的,在这种情况下我们应该如何去赚取更多的钱?笔者这边建议直接使用智能量化交易软件就可以全自动赚钱了。如果你没了解过量化交易,或者不知道市面上哪些智能量化比较好的话,这里笔者推荐QT智能量化机器人,QT智能量化机器人是适用于币圈现货的一款全自动炒币机器人。QT炒币机器人具有以下八大优势:
1.全网首创,策略灵活设置、一键执行,让交易真正的活起来。全网首创,可以根据币种灵活设置策略,科学分配资金,准确把握每一个支撑位,灵活变通,盈利更容易;
2.设定区间,只在区间内交易,防止高位建仓。价格暴涨,持有的币会持续持有,获得利润奔跑!超越价格区间上限,交易停止,防止高位循环建仓造成成本失控;
3.追踪止盈,开启追踪止盈功能,在达到利润目标的情况下,持续跟踪以获取更大盈利,所以比如设定盈利5%平仓,实际交易下来利润往往大大的超过预期;
4.延迟建仓,达到设定的建仓(或补仓)点位时,如果价格继续下降,则延迟建仓,把握每一个细节,最大程度上拉低平均成本,更容易获利;
5.平仓方式可选,分为整体平仓和网格收割两种。整体平仓计算全部成本,网格收割每单单独计算,达到盈利目标自动平仓,可以根据市场活跃程度,灵活选择;
6.可拓展性,如果你是交易的老手,可以尝试着制定不同的策略,在交易中可以实现不同的效果,比如QT可以实现高频交易,总之你可以大胆尝试;
7.自带演示账户,演示模式和实盘模式一键切换,演示账户为虚拟资金,也会按照核心算法严格执行策略,方便客户自行验证策略,同时也方便演示和推广;
8.价格合理,市场上很多炒币机器人都售价8800元甚至是1万多,高额的软件成本,让客户在交易中存在很大的心理负担,也就是说资金不够在这场交易中甚至连软件费用都赚不出来。QT炒币机器人售价仅为140U/年,价格合理,同时又有高佣金的推广费用,支持试用;
------------------
欢迎阅读
推荐阅读:
加密货币比特币合约和现货什么意思?有什么区别?
LOOKS币价值如何?LOOKS币值得长期投资吗?
新浪期货频道比特币期货实时行情已于12月27日上线
VADER币怎么买卖交易?VADER币上线了哪些交易所?
合约对冲会爆仓吗?合约对冲套利技巧揭秘
WBOND币怎么买卖交易?WBOND币上线了哪些交易所?
比特币可以随时买入卖出吗 比特币交易规则详情
ght币怎么买卖交易?ght币上线了哪些交易所?
合约交易哪个平台好?全球十大合约交易所排行榜
PLI币怎么买卖交易?PLI币上线了哪些交易所?