DotCamp 精彩回顾|刘一鸣:漫谈比特币智能合约 - 打点钱包

资讯中心

DotCamp 精彩回顾|刘一鸣:漫谈比特币智能合约
2020.01.14

 

刘一鸣:非常荣幸跟大家分享我的想法,我想很多人对于比特币智能合约感兴趣,大家可能会好奇,在比特币上怎么去运行智能合约或者做智能合约相关的事情。

 

 

我想讨论一些想法,包括了现有的智能合约遇到的一些瓶颈,智能合约在比特币上应该是什么样子,以及为什么我认为比特币智能合约才是正确的路线,而不是现在很火爆的以太坊智能合约路线。

 

 

 

比特币的脚本

 

 

首先,我们会触及一个问题,比特币脚本的图灵完备——很多人认为比特币的脚本做不了智能合约,原因是它不具备图灵完备的特性——实际上这个问题已经得到了一定解答。CSW已经给出一个实现图灵完备脚本的方法,并且近几年双堆栈下推自动机已经被证明是图灵完备的,大家可以从这几个地方看具体的内容。

 

 

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3160279

https://cs.wmich.edu/~elise/courses/cs6800/2-stack-PDA-2nd.ppt

 

所以,我们知道了比特币的图灵完备是可以实现的,但是这依然有一些问题,有一些疑问等待解答。比如说,我们用这样的脚本或者这样的方法写智能合约的事情,做出来的东西有什么特点,该怎么去做这个事情,用什么方式去做这些事情。这些是大家会好奇的。

 

 

其实比特币脚本有很多的优点和缺点:

 

 

比如说大家认为它最大的一个缺点是没有循环、没有跳转。确实是这样,没有循环这件事使得脚本变得非常长,尽管你可以使用比特币脚本计算任何可计算的问题,但是如果没有循环和跳转,意味着要将循环和跳转的逻辑展开,会有很多反复重复的代码,使脚本变得非常长。换句话说,比特币脚本是图灵完备的,前提是纸带足够长。

 

 

比特币脚本还有一些缺点:

 

 

比如说它是函数式的,设计用于解锁输出。你可以把函数编译成比特币的脚本,这个没有问题。但是它是一个函数,不是Demo服务器的那种模式。另外,比特币的脚本代码不涉及历史,不是那种互相引用的模式,不能复用。

 

 

这些确实是一些缺点,但是这些设计有很多特殊的优点:

 

 

比如说没有循环和跳转,尽管大家觉得这样比特币脚本很长,但是这带来一个极大的好处,就是可以依据长度估算执行难度。矿工不进行计算也可以知道这个脚本最多执行的操作码的数量,以及其中有多少次SigOp。这非常重要,这使得比特币脚本不像以太坊合约那样必须先计算才知道这个脚本执行难度。比特币脚本通过去除循环和跳转,具备了无需计算即可进行难度估计的特性,你不需要执行就知道它应该收取多少手续费,以太坊合约则必须执行才能确定Gas。

 

(你同样无法用以太坊合约执行无限循环,任何共识层VM都做不到)

 

 

另外,这种脚本一旦上链即具备不可篡改性,其执行和携带的数据也是共识确定的。

 

 

所以,智能合约需要的特性,比特币脚本已经具备了。

 

 

于是我们进入下一个问题,用比特币脚本的特点,实现的智能合约是什么样子?或者说,比特币上的智能合约是什么样子?

 

 

其实谈到比特币智能合约,大家会想到一个典型就是omni layer,但是比特币合约不止是这样,比特币提供的特性可以实现更多。

 

 

 

智能合约与共识计算

 

 

首先,我们看一下现有的智能合约是什么样子。有一个经典评论说道,现在的智能合约既不智能也不是合约,因为它并不是智能,也不是合约,它只是链上执行的字节码。实际上我们谈论的智能合约是链上自动机,这是其技术实质。

 

 

观察现在智能合约,你会发现他们共同的特点,就是在共识中定义和执行他们的链上自动机。智能合约被调用时,每个节点去执行一遍,然后通过对比结果的方式,来校验提交到区块链上的调用结果。

 

 

这样带来一个问题,即每一个节点都要计算一遍,一千个节点做同样的计算,就只相当于一个节点,所以现有智能合约方案的性能受到限制,没有办法达到很高的并发,并且没有什么太好的解决方案,甚至还提出一个不可能三角。

 

 

这一切的一切,是因为计算都在共识之中,要通过共识计算为结果背书。

 

 

但是,如果我们回顾智能合约的需求,其实人们对智能合约的需求是什么?是确定性,或者说结果不依赖某个第三方。如果任何一个第三方给出一个经过篡改的结果,其他节点验证不通过就会拒绝它,并可以明确抓到它的作弊行为。大家的需求其实是这样一个和第三方无关的确定性。

 

 

共识计算在这里只是用于达到确定性的手段,人们其实并不在意这种链上计算,因为如果单纯是为了计算,人们会去使用云服务器,那样的成本很低。

 

 

并且,人们其实也不排斥信任,因为当你向Web3接口查询时,你实际也是在查询一个运行了节点的服务器,在这个场景下你选择了信任你查询的服务器,而非自己运行一个节点。老话说Don’t trust,verify,正是这样,当人们具有了验证和选择的权利,人们选择信任。区块链的世界不是排斥信任的世界,是将信任的权利交给用户。

 

 

继续分析需求,你还会发现,人们其实关心的是与自己有关的代码,并不关心别人的事情怎么样。大洋彼岸某一个人喝了一杯咖啡,调用了一个合约,跟我有什么关系呢?然而,如果采用链上共识计算,你所在的节点也需要将这个与你无关的合约计算一遍。

 

 

这些是以太坊智能合约带来的谬误,即用共识去计算一切,并且在分片中企图用技术代替用户信任的权利。在共识中进行这样的计算,性能不可能好,你可以像EOS一样提升单个节点的计算能力,但瓶颈就在那里。

 

 

然而,以太坊不得不在共识中进行全部计算,因为它的Gas机制面临一个问题,就是先有鸡还是先有蛋的。共识进行某个计算需要知道有多少Gas,然而要知道有多少Gas则必须进行计算,所以它的计算依赖于历史计算。要解决这个鸡蛋问题,就要把Gas与自身状态分离,换句话说,就是让外部账本提供Gas,而不是用自己的账本。Vitalik最初就是想把以太坊运行在比特币上的,这样就能解决很多问题,然而BTC拒绝扩容,并通过一系列限制扼杀任何比特币上智能合约的尝试,不过这就是另一个话题了。

 

 

 

计算无关的确定性

 

 

接下来,大家请思考一件事,即,如果智能合约的真实需求是确定性,其实并不需要计算就可以得到。

 

 

我先请大家做一道数学题, (5+9)!的结果是多少?

 

 

计算是很麻烦的,我们在现场很难计算出来。但是我想问第二个问题,这个结果是不是确定的,即,是不是谁来计算它的结果都一样?

答案很清楚,这个式子一旦给出,结果就是确定的。如果你计算结果不一样,是你自己算错了,不是结果错了。这种结果的确定性,与是否进行计算、谁进行计算无关。

 

 

如果你只关心结果的确定性,而不关心结果是什么,那么你就无需进行计算。如果我们把这种计算无关的确定性应用到智能合约,我们就得到了计算无关的智能合约,它的状态的确定性无需进行计算。就像一个数学函数,如果它的定义已经确定,输入也已经确定,那么它的结果也就随之确定,尽管,你需要计算才能知道结果,但你不需要计算就能知道结果是确定的。谁关心结果是什么,谁去进行计算就行了。

 

 

比特币脚本提供了什么特性呢?不可篡改性。

 

 

数学函数的定义被放到比特币上,比特币就能通过PoW保证这个定义不可篡改。输入也被放到区块链上,那么比特币就能保证输入不可篡改。当比特币保证了这二者不可篡改时,其实就已经保证了这个函数的结果不可篡改。

 

 

大家可以意识到这个问题吗?比特币实现了结果不可篡改,但是并没有共识计算。

 

 

更进一步,通过将智能合约实现在比特币上,我们就把共识计算去掉了,智能合约退化成区块链存储问题,或者区块链背书问题。于是乎,智能合约的性能不再被共识计算限制,智能合约可以达到极高的性能了。

 

 

比特币(BSV)在这里就通过非常简单的协议,实现了自身非常高的性能,从而容纳非常多的智能合约并行进行。这一切只需要比特币通过PoW提供不可篡改性,这对比特币来说很简单。

 

(比特币通过PoW能为许许多多的事务提供不可篡改性,然而BTC拒绝扩容并严格限制了这种能力,从而使PoW看上去是一个耗电而无用的行为)

 

 

我们用稍稍数学一点的方式去把上面的问题证明一下或者拓展一下,就是我们在通过比特币实现一个计算无关的链上自动机。举例来说,一个有限状态自动机包含五个集合:状态集、状态转移函数、起始状态、接受状态以及输入符号流。大家可以注意到,这个状态机的定义并不包含它的当前状态,或者说结束状态。

 

 

只要把这个状态机在比特币上进行明确定义,并通过比特币进行输入,这个状态机的状态就具备了确定性。无论是谁去执行,获得的当前状态都是一样的,而且任何有权限读这个状态机的人,都可以验证其状态。

 

 

如果从状态机的角度分析篡改,某个服务器返回给你错误的结果时,它一定篡改了它所运行的状态机的定义。要么篡改了状态转换函数,要么是篡改了输入、要么是篡改了状态集或其他要素。所以当这些定义被区块链赋予不可篡改性时,某个服务器就无法进行篡改了,它当然可以返回给你错误的结果,但是任何能够访问这个合约的人都能对其进行抓包。这和你使用他人提供的以太坊节点是一样的。

 

 

 

比特币智能合约

 

 

这种智能合约模式有一些独到的特点,并且很好地解决了现在智能合约碰到的一些问题。

 

 

首先,这种状态机非常自由,使用什么VM完全取决于开发者。和以太坊及其后继者不同,比特币智能合约模式并没有指定某种VM,任何在执行上能够具备确定性的VM都可以被使用。你想用JS写比特币智能合约,当然可以,你想用什么都行,你想用x86跑智能合约,为什么不行呢?只要其能够不可篡改地上链即可。这种自由使得迁移成本可以做到非常小。

 

 

其次,这种模式可以读取世界状态,尽管其只能写入其私有状态。理论上任何链上确定地状态,都可以作为其输入,这使得它完全可以通过一些SDK读取比特币的历史,乃至其他合约的状态,作为它的输入。当然,读取外部状态的代价是要对外部状态进行计算,这需要开发者进行取舍。但是重要的是,这种能力使得合约之间能够在双方配合的情况下,通过彼此读取对方状态,简单地完成互动,从而实现更加复杂的彼此交互的系统。

 

 

另外,这种无需计算的模式,实现了谁关心合约结果谁去进行计算。比特币不关心合约或者链上程序的状态是什么,它只保证其不可篡改就够了。对于绝大部分我们不关心的合约,我们只关心它们不可篡改即可,而无需关心其状态,也无需为之付出计算。合约之间是并行的关系。就像不同的人同时计算不同的数学公式,而没几个人关心 14! 结果到底是什么。这解决了(被认为制造出来的)智能合约性能问题,并允许其大规模推广。

 

 

此外需要注意的是,比特币智能合约的确定性,并不意味着这个合约或者程序必须是公开的或者全部公开的去执行,提供不可篡改可以通过哈希值,或者是加密的程序。合约可以存在一个密钥作为其访问权限,任何有这个权限的人可以获取这个合约并进行执行或验证,而对于没有权限的人来说,它只是一段缺少意义的数据。这种隐私性使得比特币智能合约可以在合约内包含并处理私钥,这是很多其他智能合约做不到的。

 

 

具体而言,你可以在私钥生命周期结束后公开其访问权限,以此来接受公众审计,或者将权限授予某个第三方来进行审计,如何设计是开发者的自由。

 

 

 

一二层的结合

 

 

这种比特币智能合约模式当然也有缺点和局限,即,它只能读取世界状态,而不能写入世界状态。这意味着它不能调用比特币一层的转账等等,因为它是二层的状态机,只能写入自己的状态。所以这个系统中,比特币一层脚本的作用是相当重要的,一二层要进行配合。

 

 

比特币一层的脚本提供了一种向区块链或者向比特币的账本进行写入权限的角色。一层的脚本做得事情其实很简单,可以做价值的转移,比如说谁有权限谁去解锁这个脚本可以把输出花费掉,或者产生一条可以作为二层合约输入的比特币交易记录。一层脚本是事件源,来驱动二层合约。

 

 

这种结合,当然也需要一层合约的配合,你可以使用sCrypt来将你需要的函数编译成二层合约要求的比特币脚本。在Genesis升级后,你就可以自由地使用比特币脚本了,从而实现各种姿势的权限要求。举个例子,当两个热需要进行一二层代币转账时,一方可以在二层打开一个处于open状态的交易,规定了一层付款的转账模板和脚本要求,当另一方按照要求完成一层付款时,这个付款交易就成为二层合约的输入,二层交易就close了,一个动作完成两层输入,比起原子交换还要原子交换。此外,二层也可以通过计算,产生可验证的凭证,用以完成现实世界的确权。

 

 

所以在这种模型里,一层提供事件的输入,二层产生状态的转移,二层进行计算、输出。在一层其实你只需要负责基本的一些事情,就是进行符合要求的输入、解锁一些权限等等的事情。这个过程类似于向水面投一个石头,水面产生涟漪是二层合约各种各样的执行。

 

 

目前,一二层结合方案已经有了很多的例子,比如我们常说的Tokenized,是使用这种模式构建的二层代币。还有GearSV,是在比特币上实现的链上wasm来运行智能合约。RunOnBitcoin,是在比特币上使用JS沙箱来运行智能合约。这些限制非常少,应用场景十分宽泛,并不需要局限在某个VM上,你甚至可以天马行空自己写一个VM放上去。

 

 

 

从智能合约到智能应用

 

 

刚才我们重新认识了比特币智能合约,这种模式,大家可能感觉到新奇,但是如果把思维拓展开,你会发现,BSV上许多链上应用和链上协议,就符合这种智能合约的模式。我们实际上已经在使用这种智能合约了,或者说,撕开智能合约的外皮,更准确的名称应当叫做“智能应用”,因为它远不止合约。

 

 

Planaria被很多人熟悉,很多人使用它作为数据库来进行查询,有很多应用基于它。实际上,它就符合这种状态机的模式。如果你阅读它的代码,你会发现一个Planaria包含了两个JS,即Planaria和Planarum。

 

 

Planaria.js接收TX作为事件,产生状态转移,并将其存储在MongoDB中。你通过编码Planaria.js来定义状态转换,这其实就是之前所说的自动机或者状态机的概念。而Planarum则负责状态的查询和推送,你通过编码Planarum.js来定义外部如何读取当前状态,响应查询和websocket订阅。

 

 

这种角度来讲,Planaria就是比特币智能合约,但是它是更广义的智能合约,它不仅仅是合约的事情,更是链上的程序,链上的应用。只是Planaria是无币智能合约,但是你可以有币,比如说用Tokenized来发行代币。

 

 

这种智能应用的模式会带来全新的未来,比如协议定义应用,即由链上协议定义应用的状态机。此时,应用完全由链上协议所定义,而非由其客户端所定义。不同的客户端仅仅是实现协议的不同SPV节点,应用所需的计算则由用户通过类似边缘计算的方式完成,不再需要一个负责计算的中心化服务端。

 

 

在智能应用的模式中,用户通过私钥自己掌握自己的身份,掌握自己的数据,选择自己的代理。用户间使用链上协议通过比特币进行交互,应用将是许多用户通过链上协议将比特币作为总线的C/C模式,而不再需要依赖中心化服务端的C/S或B/S模式。

 

 

 

比特币Actor模型

 

 

我们可以使用Actor模型来理解众多比特币应用组成的系统。

 

 

Actor是一个分布式系统的模型,其特点是Actor间无耦合,每个Actor状态均为私有,仅自己可写。每个Actor通过信箱收发消息来与其他Actor通信。Actor依据消息来产生行为。

 

 

Actor模型很像人与人的模型,你和我之间没有任何耦合,我们之间通过语言或其他的消息进行沟通,并依据消息改变想法和产生新的消息,而这些消息又在其他Actor中产生作用。

 

 

比特币智能应用组成的系统即是这样一种模型,不同来源的应用之间无需耦合,将比特币作为消息总线收发消息,改变自身的状态,并由用户或oracle产生新的消息。比特币天然适合作为消息总线,SPV节点则可以让每个Actor过滤而只获取其关心的消息。不同的用户、用户、程序构成了比特币上一个个的Actor,插在比特币总线上。

 

 

 

结语

 

 

我本次的分享就是这些,是对比特币智能合约的一些理解。比特币智能合约以一二层结合的方式实现,比特币通过计算无关的方式为智能合约提供确定性。在这个模式里,你并不是把比特币当作云服务器使用,而只需要比特币PoW提供确定性。如果将这种智能合约更进一步,就是智能应用,现在的Planaria也就是一个例子。智能应用允许用户自己掌握身份和数据,使用C/C架构替代B/S和C/S架构,并可以将比特币作为总线来组成更大的系统,这种系统可以使用Actor模型进行理解。

 

 

我的分享就到这里,谢谢!

 

 

 

Q&A

 

 

提问:所有的脚本都是存在链上,执行者都是在链下,那反过来推,如果我在链上存储,数据和程序本身没有分别,我可以以A格式传,也可以以B格式传,程序赋予了数据是一段代码,还是一段价值,我扔一些脚本上去都可以。那这个时候,像刚才你说的做这个状态机意义何在?你觉得是怎么样?也可以把代码当成数据扔上去就可以了。

 

 

刘一鸣:这种方式给了开发者极大的自由,可以以各种各样自己的方式去做这个事情,同样可以达到其他方式提供的那种确定性。

 

 

 

提问:我不是很理解,能不能具体一点,怎么自由。

 

 

刘一鸣:可以以各种方式,自己想的姿势去实现你的应用。

 

 

 

提问:Actor是在链上还是链下?

 

 

刘一鸣:这是指链下,其实链上也可以。

 

 

 

提问:链上怎么实现?

 

刘一鸣:把运行环境、程序代码、函数代码全都准备好,然后去上链,或者哈希值去上链。不同的这种oracle去执行你的Actor。

 

 

//////////

 

 

林哲明:如果说在执行过程当中,假设提供了无效数据,这种情况下,你觉得怎么处理?

 

 

刘一鸣:这个过程当中也是开发者自己去设计的事情,其实就是给开发者极大的自由,自由的代价也会有极大的责任,这个过程当中会写出极多的安全漏洞。但是这个是由开发者决定的,其实这个错误是执行的这个人犯的错误,或者他做得欺骗,你可以去验证这个事情。如果你不相信,可以去验证他,并且验证他相当于把他抓包了。

 

 

 

林哲明:举一个自动售货机的例子,如果我投了币,收获机没有吐出我要的饮料,我其实是没有办法重新验证一遍,我证明他应该要给我吐出饮料。怎么办?我饮料没有拿到,应该起诉收货机?

 

刘一鸣:此时你已经拿到收货机没有给你吐饮料的证据,比特币的世界并不排斥诉诸法律。当然,从程序的角度同样也可以设计解决方案,比如说购买饮料的交易在合约中产生一个未完成状态,收到吐出饮料的证据才会完成,而符合一定条件则会产生退款。

 

 

//////////

 

 

提问:我也是一个UTXO级基于这样一个技术的供应链开发者,我会把跟智能合约相关的代码弱化到共识产权,做法不一样。我理解您的做法可能是这样,您把共识层代码一些数据交由开发者,开发者在上面自定义一套规则,成为一个合约制,实际上形成二层共识,一层共识不需要对比特币做任何的篡改,也不会干扰比特币网络的运作,二层上面有一整套包含规则、代码、解释器在内的东西,依赖二层去实现。在我的实践中和您刚才说得略有不同,把一部分共识层的东西下沉到底层架构,也就是通过共识升级的方式形成一个底层共识。

 

 

因此,我对底层网络做了大量的改造。在我们实践当中,这种方式对开发者的困扰相对少一点,因为只是把一些可以简单的认为把数据推到这里面,但是解释是确定的,不存在任何不确定性,我认为这两者各有优劣。您说的这个拥有更大的空间,拥有更广阔的应用前景,而我可能具有更多的确定性,我这个东西任何人写上去的数据可以确定相信得到一个明确的结果,因为所有的解释过程全部固化,实际上称之为内置智能合约,内置大概30个左右,形成一套内置一整套规则体系,实现完成对主体认证、数字资产的转移,一些资产的证券化。

 

 

到现在为止,我实践中没有感觉把这些如果放到最上层交由后者去做得的话,现在感觉到对开发者来说有一些问题,一个不太友善,一个工作量比较大。我的实践对于任何智能合约测试深度,我很担心它出问题,要付出非常高的成本。而对于一般普通开发者来说,可能没有意识到犯了什么错误,如果要做二层可能需要对代码审计这一块的工作,而我们走了另外一条路。

 

 

刘一鸣:这是非常有意思的提问,正好涉及到上午讨论的事情。首先这个事情从两个事情回答,第一个事情这种实现当然是可以的,不过它有一个代价就是难以提高它的性能,你的区块链性能会受到阻碍。比特币为什么可以跑到非常高的性能,因为它特别简单,它的脚本特别简单,整个共识里都很简单,所以它能跑到极高的性能。因为它简单,所以它能扩容。你做了很多事情在共识里,就会给你未来大规模提高性能和扩容时带来很多的阻碍。现在这些简便技巧在未来会成为你大规模应用时的技术债务,你还是要解决这些事情。

 

 

第二个事情就是上午讨论到一个地方,为什么最后都会融合到比特币,由BSV把这些区块链吃掉。刚才说到的状态机,其实有一个项目,把BTC区块或以太坊的区块放到BSV上,用BSV承载他的状态机,就把它的状态机放在比特币的二层了。

 

 

你可以在BSV上实现你自己的区块链,比特币一层替代了你原有的P2P的部分。你的账本就成为了比特币二层的私有状态。这样,你的区块链就运行在比特币二层上了。

 

 

实际上,这种模式适用于把现有其他链上的区块全都包进比特币来,使之成为比特币的二层应用。这就是比特币未来会吃掉各种各样的联盟链,各种各样的区块链的一种路径。

 

 

 

提问:你那块提到了比特币的脚本是图灵完备,而且比特币的脚本其实它的功能、指令还是挺多的,就几十个指令。如果他图灵完备,本质上说也可以做任何的计算。如果我们付了足够的费用,我们是可以把这个智能合约写在这个链上,就是你说的一层。那这种方式和你说的只是把输入、输出写在链上,智能合约在链下做,这两个在什么场景或者说有没有可能像我说得那样在链上智能合约在链上做,是分不同的场景来用,还是根据付费意愿做,有没有这方面的思考?

 

 

刘一鸣:如果简单的事情,可以放在纯脚本做这个事情。现在付费其实就是比特币智能合约,其实也是一种,只是超级简单的。

 

 

提问:我只要付足够的钱可以做非常复杂,简单和复杂不是区别说要不要这么做,我付钱是可以的。

 

 

刘一鸣:这个地方涉及到你有没有必要把计算放到比特币上,有的时候在共识里面做计算非常昂贵,他不是说贵几倍的问题,可能会非常非常贵。所以你可以把简单的那种涉及权限,涉及价值转移等等的事情编码,这些事情所需要的代码或者指令并不是很多,放到一层就会很简单。而把计算,把复杂的输出等等那些事情放到二层去做。

 

 

提问:有的地方谈到过双堆栈的计算机我们可以做专门的芯片做脚本验证,因为下来挖矿只是做哈希碰撞,对于交易验证这一块实际上没有的。如果说将来有专门的硬件,专门的芯片做交易验证的时候,我们成本能够降得很低,计算力也会有很大的提升。

 

 

在这种情况下,我自己看法有可能我们很大一部分智能合约是跑在线下,同时也有一部分跑在链上。跑在链说有一个优点,我可以定价,把计算抛出去里面带的费用有一个价格在里面,矿工可能不是去单纯做哈希碰撞,而是他去做交易验证。

 

 

同时,我觉得这个费用能接受,我又去做计算,实际上把这个云计算的计算能力做一个很小力度的市场竞争,我觉得这个也是很有意义。比特币、区块链里面可以做存储,同时,你可以做很小力度市场充分计算,现在买阿里云最基本的单位是一台虚拟机,但是我在比特币上只算一个公式可以去竞价,可以去向市场上做邀约。这是我的一点看法。

 

 

刘一鸣:这样当然是可以,只是会比较贵而已,如果你愿意出钱也是可以的。再涉及到图灵完备的时候,可能也需要一个oracle帮你展开下一步的脚本,这样也是可以的。就是贵。

 

 

//////////

 

 

林哲明:实际上计算过程当中,这些计算也是发生,不可能因为CPU自式循环就少计算,计算量也是一样的,我觉得这个没有问题,随着竞争的加入成本应该不是问题。

 

 

刘一鸣:只是二层更便宜一些。

 

 

林哲明:核心逻辑因为一层参与的节点参与数量少。

 

 

刘一鸣:而且二层更自由一些。

 

 


 

 

认识打点钱包

 

打点钱包DotWallet,一款基于BSV开发的轻量化非托管钱包,用户可直接通过微信、Facebook账号登录,使用存储、收发和交易数字货币的功能。采用BSV的Tokenized技术,支持BTC/BSV;特色打点红包和转账可以在任意能打开网址的应用内使用;具备小额闪付和自动扣款功能,并支持私钥一键导出,是一个安全、稳定、便捷的区块链钱包。

 

-

 

除此之外,还同步推出了打点钱包开放平台服务,为开发们提供无缝对接的打点钱包技术服务,例如三方账号一键登录、简单的KYC验证,从而打通BSV等数字资产快速收发、及时到账等支付能力,对开发者来说,这是提升服务效率,降低运营成本的一个捷径。

 

 

 

■ ■■■■

 

 

获取更多信息请访问

 

▼▼▼

 

官网:www.dotwallet.com

 

新浪微博: @打点钱包DotWallet

 

telegram:http://bit.ly/2reDzhN

 

Twitter: @dotwallet