深圳娱乐

澳大利亚。信息安全从业者刘:谈比特币的智能契约

澳大利亚。信息安全从业者刘九9月7日在中国北京召开了BSV发展与商业生态会议,会议由比特币协会(BitcoinAssociation)、奥凯克斯(OKEx)和领英(LinkedIn)联合组织,贾楠·云志和我们共同赞助。

此次活动是比特币协会(BitcoinAssociation,以下简称BA)自成立以来首次下线亮相,也是比特币在中国的首次官方活动。

作为一名信息安全从业者,Aus。刘从黑客的角度分析了比特币的智能合约。他列举了以太网智能合同的三个主要问题:第一,货币模式限制了商业模式;其次,问题是在链上定义的虚拟机限制了开发。第三个问题是复杂性。

编辑后,Aus的全文。刘先生的演讲如下:我的名字叫奥斯。刘和蒙克斯罗德也用于其他地方。

我是信息安全从业者,也是BSV的独立开发者。

这可能让我不同于其他开发人员,因为我习惯了使用一些黑客的想法。

黑客的想法是什么?在学校,辩论队的一些同学找到了我和我的室友,因为他们用计时软件在倒数15秒时写一个提醒,而他们想倒数30秒。

然后呢?我室友说他可以做一个同样的,30秒。

我在想什么?我想说的是,我可以通过底层的方式将程序中写的15改为30。

因此,我的室友成了一名优秀的开发人员,他的工程能力非常强,而我成了一名安全从业者,这是由不同的想法造成的。

黑客对比特币会有什么不同的担忧?我会更加关注底层细微变化的可能性,并找到其他人想不到的各种使用场景。

因此,开发人员通常讨厌安全从业人员。他们刚刚开发了一种功能,在吃火锅和唱歌时发现了一种奇怪的用法。那么它们就是发展的漏洞,必须加班加点。

作为一个有着安全背景的开发者,我喜欢各种各样的可能性。边界条件的简单改变会产生很大的不同。

回到比特币,让我们以这种方式讨论比特币的智能合约。

像BSV的扩张和提升这样看似微不足道的变化有什么可能?表面上看,容量似乎很大,但这种大容量实际上带来了巨大的质的变化。

这是什么质的变化?让我们一起探索吧。

从演示开始,首先我想从演示开始。我们看到这种状态下的灯泡现在是关着的。当我们按下开关时,灯泡的状态就会打开。当我们再次按下开关时,灯泡就会熄灭。

无论你在哪里可以参观BSV,你都可以得到灯泡的当前状态。

该演示在链上:事实上,每次按下开关,都会在BSV链上发送一个Tx,该Tx包含定义的开关按下动作。

当有必要获得灯泡的状态时,我可以通过BitDB采取所有的按压开关动作来计算灯泡的当前状态。当前灯泡的状态如何?这完全取决于你按下开关的次数。

这实际上构成了一个链上状态,或者一个链上状态机。

考虑到这一演示,让我们看看链式存储。

决定性记录许多人怀疑BSV扩张的意义。虽然目前的上限已经扩大到2G,但实际用途是什么?许多人认为这仅仅意味着BSV可以用作网络磁盘,而区块链网络磁盘既昂贵又低效。

事实上,这种扩展仅仅是一个网络磁盘吗?要回答这个问题,我们必须回到一个更重要的问题,即存储在链上的数据仅仅是纯数据吗?在线存储和普通云存储的本质区别是什么?如果你够敏锐,你会发现PoW是真实的,不能被篡改。

一旦存储被链接,它与PoW具有相同的高确定性,并且可以被公开访问。

云存储难以提供确定性和防篡改信任。

比特币上的数据存储实际上提供了这样一个数据源,它不能被篡改,也可以被公开访问。

那么,数据是什么?数据不仅是静态文件,也是文本和视频。事实上,一切都是数据、用户的业务请求、运行代码的服务器以及数据。

或者数据本身是一种状态,状态的表示也是数据。

世界上各种复杂的状态都可以用标准化的方式表示为数据。随着历史被区块链记录下来,就像韦瑟斯沃所做的那样,它成为了一个明确的记录。

比特币所包含记录的确定性由熵来保证,而熵是PoS或BFT很难达到的。

那么这个决定性的记录会给智能合同带来什么变化呢?我们必须首先看看智能契约的本质,状态机。

确定性有限状态自动机事实上,当我们谈论智能契约时,什么是智能契约?程序员可能知道一件事,叫做有限状态自动机,或确定性有限状态自动机,或DFA,它是所有程序的基础。

包括像以太网广场或各种智能合同这样的公共链,实际上正在构建一个接受输入并产生状态转换的状态机。

输入可以是交易或操作码。链中的状态机接受输入并改变链中的状态,例如帐户金额或链中的其他状态。

各种程序实际上都是状态机。例如,在上一次灯泡演示中,灯泡有两种状态:开和关。按下按钮是一种输入,并在两种状态之间产生状态转换。

如果我们从一个更精确的定义来看DFA,它实际上是五倍:一组非空的有限状态、输入字母、状态转换函数、起始状态和接受状态。

我们使用这个定义来思考链中的虚拟机。当我们谈论供应链中的智能合同时,我们需要什么?我们想要的实际上是一个可公开验证的确定性状态和一个确定性状态传递函数。

例如,当我们想要某种令牌或合同时,我们真正关心的不是程序是如何工作的,而是所需的功能(如传输)可以确定地实现,并且可以被验证,没有人可以篡改它。

在此过程中,合同或链指定初始状态、接受状态和状态集,用户提供输入并被记录,状态转换功能在共识中被设置。

从而创建确定性状态。

这就是源自以太网广场的一系列智能合同的区块链所做的。

然而,在共识中界定国家过渡职能存在几个严重问题。

第一个问题是货币模式限制了商业模式。

尽管图灵的完整性意味着任何程序都可以完成,但是总是很难将商业场景与货币模型相匹配。

许多商业模式不仅是货币模式,甚至难以用货币模式来表达,这使得在智能合同上发展传统商业变得困难,因为将其他商业模式转化为货币模式是一项非常困难的工作。

相对成功的智能合同通常仅限于代币或数字资产,它们自然适合货币模型。

然而,公众甚至开发者对智能合同的理解通常仅限于令牌和数字资产。

第二个问题是在链上定义的虚拟机限制了开发。然而,如果共识中的国家转移函数必须尽可能简单,以使区块链得以运行和扩大,发展就变得复杂了。

虽然许多人会从技术上编写编译器,但是在各种语言生态系统中重用组件仍然很困难。

这大大提高了智能合同的技术门槛,模型的翻译也提高了门槛,这使得开发难以大规模进行(当然,从制造门槛提高专业收入并不坏)。

作为一个喜欢使用JS的伪全栈工程师,他用JS编写前端,用JS编写后端,用JS访问数据库。为什么他不能使用ChromeV8引擎在链条上运行虚拟机?

不,因为虚拟机已经定义,不能自己选择。

第三个问题是复杂性。

状态转移的计算在一致性层,这带来了严重的性能问题。网络有很大的计算能力,但是整个链的处理能力不如旧的家用电脑。

很难完全执行一个正常的程序。

在许多商业服务中,单个高性能服务器无法满足业务需求,更不用说连锁合同、高吞吐量了?这几乎是不可能的。

这些问题根本的原因是,状态转移函数定义在共识中,所有的节点都必须计算状态转移来进行验证,要不然无法保证状态的确定性。这些问题的根本原因是状态转移函数是在共识中定义的,所有节点都必须计算状态转移来验证,否则状态的确定性无法得到保证。

状态确定性不需要以下计算公式:(1087357389+87890345434)* 28+897733 21388233-73004832% 3结果如何?我不知道。

但是我问你,结果确定吗?不管谁计算,结果都是独一无二的,不会改变,这是真的吗?事实上,我们不需要任何计算就知道结果是肯定的。

因为我们知道这些运算都是确定的,用于计算的数字也是确定的。

如果你够聪明,你可能已经知道我的意思了。

对于DFA,只要它的定义是确定的,状态转换函数是确定的,输入流是确定的,那么就可以知道执行后的状态是确定的,而不执行状态转换函数。

这种状态的确定性无需计算即可获得。

必须计算的只有那些想知道具体结果的人,即那些对当前状态感兴趣的人。

因此,为了达到智能契约的目的,只需要确定性地定义DFA及其状态转换函数,并生成确定性的输入流。

一旦所有这些都得到确认,链内计算实际上是不必要的,因为无论是链内计算还是链内计算,其中的计算都不会影响结果的确定性。

就像那个计算公式一样,你在家里和公园里的计算不会给结果带来任何不同。

BSV扩张的本质变化就在这里,确定性和权力保障的确定性。

BSV带来的全新智能合同可能是这样的,怎么做呢?事实上,原则很简单。事实上,使用BSV存储的确定性来明确定义DFA,您将得到一个防篡改、可公开验证的DFA。

通过公开定义BSV链上的状态集、状态转换函数、开始状态和结束状态,并获得用于发送输入流的确定性排序方法,生成接受链上输入的链上智能契约。

在这里,你能自己定义一些复杂的状态对象吗?没错。

当发送被定义为输入时,可以使用用户定义的数据结构吗?这是完全可能的(不符合要求的发送是无效输入,也是输入,相应的状态转换是无转换)。

定义状态转换函数时,我可以使用自己的语言吗?当然,只要代码和虚拟机是确定的。

灯泡演示甚至是一个用JS编写的简单链DFA。事实上,这些定义大多是JS代码(当然,组件的安全性也应该考虑在内,区块链历史查询不应该信任第三方)。

此时,聪明人已经知道如何在BSV实施这种智能合同。事实上,这是智能契约关于记号化的思想之一,也是不成文者称之为Planaria InfiniteStateMachine的原因。

本质上,以太网广场(Ethernet Square)拆分扩展计划的想法是放弃链上计算,只让感兴趣的人或者拆分他们进行计算。

然而,不幸的是,以太网广场和它的模仿者无法通过这种想法扩展。

为什么以太网广场要进行在线计算?简单地说,这是一个攻击成本的问题。

如果以太网不执行链内计算来验证输入是否有效,它就不能防止攻击者用大量无效输入阻塞状态机并无休止地消耗计算资源。

零攻击成本将使状态计算在计算成本中不可行。

目前,虽然以太网具有气体机制来处理无效输入,但是气体机制也依赖于状态计算,除非以太网具有不依赖于EVM状态计算的外部气体机制。

比特币(BSV)数据存储的手续费价格从攻击成本上解决了这个问题。

即使输入无效,也需要支付数据上行成本,这实际上构成了不依赖于合同状态的智能合同气体(Gas of intelligent contract)。

事实上,EVM建在比特币的二楼,使用比特币作为天然气,将是一个更理想的智能合同引擎。

每当我想到这一点,作为一个比特币原教旨主义者,我不禁觉得BTC应该成为智能合约的最底层区块链,但不幸的是,它受到了强加于共识的各种限制的约束。

所有这些应用程序的开发应该早在四五年前就繁荣起来,而不是看着Github的比特币应用程序堆在四五年前就停止了维护,哀叹我们前辈的智慧。

幸运的是,我们有BSV。

You may also like...

发表评论