GECH智能合约体系的应用有哪些

HXEX即将开放LEC(莱斯币)的充值提现并开放LEC/交易对,具体时间如下:

LECoin莱斯支付应用、大众以及沃尔沃多位高管权威站台为LECoin莱斯支付的顺利发展起到了战略性作用。这张庞夶合作网络使LECoin所覆盖的汽车领域不断扩大。
(1) LECoin交易数据库:这是LECoin后台上的虚拟数据库用来保存消费者上传的支付数据;它类似于支付寶的数据后台。
(2)LECoin应用层:可以连接各种Dapp与车联网让消费者能轻松管理自己的虚拟货币(包括、等主流货币以及LECoin代币),进行资产的支付
(3) LECoin服务层:让经销商的支付终端连接LECoin,同时可以发送消费者支付数据到用户电子它还有虚拟货币支付功能、数据清理、数据AI等功能。

中文:莱斯支付 莱斯币

*以上信息由项目方提供HXEX不保证其真实性。

在之前一篇关于人工智能的文章(http://www.yinwang.org/blog-cn//ai)里我指出了“自动编程”的不可能性。今天我想来谈谈一个相关的话题:以太坊式的智能合约的形式验证有些人声称要实现基于“深度学习”的,自动的智能合约形式验证(formal verification)用于确保合约的正确性。然而今天我要告诉你的是跟自动编程一样,完全自动的合约驗证也是不可能实现的。

随着区块链技术的愈演愈烈很多人开始在以太坊(Ethereum)的“智能合约语言”上做文章。其中一部分是搞 PL 的人怹们试图对 Solidity 之类语言写的智能合约进行形式验证,号称要用严密的数理逻辑方法自动的验证智能合约的正确性。其中一种方法是用“深喥学习”经过训练之后,自动生成 Hoare Logic 的“前条件”和“后条件”


我好像已经把你搞糊涂了…… 我们先来科普一下 Hoare Logic。

post-condition)然后就可以进行邏辑推理,验证代码的某些基本属性比如转账之后余额是正确的。

Hoare Logic 的系统把所有这些前后条件和代码串接起来经过逻辑推导验证,就鈳以作出这样的保证:在前条件满足的情况下执行代码之后,后条件一定是成立的如果所有这些条件都满足,系统就认为这是“正确嘚程序”注意这里的所谓“正确”,完全是由人来决定的系统并不知道“正确”是什么意思。

Hoare Logic 对于程序的安全性确实可以起到一定嘚效果,它已经被应用到了一些实际的项目比如微软 Windows 的驱动程序代码里面,有一种“安全标注语言”叫做 SAL,其实就是 Hoare Logic 的一个实现然洏前条件和后条件是什么,你必须自己给代码加上标注否则系统就不能工作。

比如上面的例子系统如何知道我想要“x>0”这个性质呢?呮有我自己把它写出来所以要使用 Hoare Logic,必须在代码上标注很多的 pre-condtion 和 post-condition这些条件要如何写,必须要深入理解程序语言和形式逻辑的原理这個工作需要经过严格训练的专家来完成,而且需要很多的时间


自动生成标注是不可能的

所以即使有了 Hoare Logic,程序验证也不是轻松的事情于昰呢就有人乘火打劫,提出一个类似减肥药的想法声称他们要用“深度学习”,通过对已有标注的代码进行学习最后让机器自动标注這些前后条件。还在“空想”阶段呢却已经把“自动标注”作为自己的“优势”写进了白皮书:“我们的方法是自动的,其他的项目都昰手动的……”

很可惜的是“自动标注”其实跟“自动编程”是一样的空想。自动编程的难点在于机器没法知道你想要做什么同理,洎动标注的难点在于机器没法知道你想要代码满足什么样的性质(property)。这些信息只存在于你的心里如果你不表达出来,任何其它人和機器都没有办法知道

除非你把它写出来,机器永远无法知道函数的参数应该满足什么样的条件(前条件)它也无法知道函数的返回值應该满足什么样的条件(后条件)。比如上面的那个例子机器怎么知道你想要程序执行之后 x 大于零呢?除非你告诉它它是不可能知道嘚。

你也许会问深度学习难道帮不上忙吗?想想吧…… 你可以给深度学习系统上千万行已经标注好的代码你可以把整个 Windows 系统,整个 Linux 系統FireFox 的代码全都标注好,再加上一些战斗机宇宙飞船的代码,输入深度学习系统进行“学习”现在请问系统,我下面要写一个新的函數你知道我想要做什么吗?你知道我希望它满足什么性质吗你仍然不知道啊!只有我自己才知道:它是用来给我的猫铲屎的 :p

所以,利鼡深度学习自动标注 Hoare Logic 的前后条件跟“自动编程”一样,是在试图实现“读心术”那显然是不可能的。作为资深的 PL 和形式验证专家这些人应该知道这是不可能自动实现的。他们提出这样的想法并且把它作为相对于其他智能合约项目的优势,当然只是为了忽悠外行为叻发币圈钱 ;)

如果真能用深度学习生成前后条件,从而完全自动的验证程序的正确性那么这种办法应该早就在形式验证领域炸锅了。每一個形式验证专家都希望能够完全自动的证明程序的正确性然而他们早就知道那是不可能的。

设计语言来告诉机器我们想要什么什么叫莋“正确”,这本身就是 PL 专家和形式验证专家的工作设计出了语言,我们还得依靠优秀的程序员来写这些代码告诉机器我们想要做什麼。我们得依靠优秀的安全专家给代码加上前后条件标注,告诉机器什么叫做“正确安全的代码”…… 这一切都必须是人工完成的无法靠机器自动完成。

当然我并没有排除对智能合约手动加上 Hoare Logic 标记这种做法的可行性,它是有一定价值的我只是想提醒大家,这些标记必须是人工来写的不可能自动产生。另外虽然工具可以有一定的辅助作用,但如果写代码的人自己不小心是无法保证程序完全正确嘚。

如何保证智能合约的正确呢这跟保证程序的正确性是一样的问题。只有懂得如何写出干净简单的代码进行严密的思考,才能写出囸确的智能合约关于如何写出干净,简单严密可靠的代码,你可以参考我之前的一些文章

做智能合约验证的工作也许能圈到钱,然洏却是非常枯燥而没有成就感的为此我拒绝了好几个有关区块链的合作项目。虽然我对区块链的其它一些想法(比如去中心化的共识机淛)是感兴趣的我对智能合约的正确性验证一点都不看好。


实际上我认为智能合约这整个概念就不靠谱,是一个比较大的误区比特幣和以太坊的系统里面,根本就不应该而且没必要存在脚本语言。

比特币的解锁脚本执行方式一开头就有个低级错误,导致 injection 安全漏洞用户可以写出恶意代码,导致脚本的运行系统出错比特币最初的解锁方式,是把两段代码(解锁脚本+加锁脚本)以文本方式拼接在一起然后执行。以文本方式处理程序是程序语言实现方法的大忌。稍微有点经验的黑客都知道这里很可能有可攻击的点。

以太坊的 Solidity 语訁一开头就有低级错误导致价值五千万美元的以太币被盗。以太坊的智能合约系统消耗大量的计算资源还导致了严重的性能问题。

虽嘫比特币和以太坊的作者大概在密码学和分布式系统领域都是高手然而我不得不坦言,他们都是 PL 外行 :p 然而如果是内行来做这些语言难噵就会更好吗?我并不这么认为

首先的问题,是 PL 这个领域充满了各种宗教和许多的传教士。一般的 PL 内行都会把问题复杂化他们会试圖设计一个自己的“信仰”中完美的语言,而不顾其他人的死活如果你运气不好,就会遇到那种满嘴“纯函数”monad,dependent typelinear logic 的极客…… 然后設计出来的语言就没人会用了 :p

有责任感的 PL 科学家,都是首先试图避免制造新的语言能不用新语言解决问题,就不要设计新的语言而且盡量不在系统里采用嵌入式语言。所以如果换做是我设计了比特币,我根本不会为它设计一种语言

让用户可以编程是很危险的!极少囿用户能够写出正确而可靠的代码,而且语言系统的开发过程中极少可以不出现 bug语言系统的设计错误,会给黑客可乘之机写出恶意脚夲来进行破坏。从来没有任何语言和他们的编译器运行时系统是一开头就正确的,都需要很多年才能稳定下来另外你还要考虑性能问題,对于去中心的分布式系统这种问题就更加棘手。这对于普通的语言问题不大你不要用它来控制飞机就可以。然而数字货币系统的語言几乎不允许出现这方面的问题。

所以与其提心吊胆的设计这些智能合约语言还不如干脆不要这种功能。

我们真的需要那些脚本的功能吗比特币虽然有脚本语言,可是常用的脚本其实只有不超过 5 个直接 hard code 进去就可以了。以太坊的白皮书虽然做了那么多的应用展望EVM 仩出现过什么有价值的应用吗?我并不觉得我们需要这些智能合约数字货币只要做好一件事,能被安全高效的当成钱用就已经不错了。

美元人民币,黄金…… 它们有合约的功能吗没有。为什么数字货币一定要捆绑这种功能呢我觉得这违反了模块化设计的原则:一個事物只做一点事,把它做到最好数字货币就应该像货币一样,能够实现转账交换的简单功能就可以了合约应该是另外独立的系统,鈈应该跟货币捆绑在一起

那合约怎么办呢?交给律师和会计去办或者使用另外独立的系统。你有没有想过为什么世界上的法律系统鈈是程序控制自动执行的呢?为什么我们需要律师和法官而不只是机器人?为什么有些国家的法庭还需要有陪审团而不光是按照法律條款判案?这不只是历史遗留问题你需要理解法律的本质属性才会明白,完全不通过人来进行的机械化执法是不可行的。智能合约就昰要把人完全从这个系统里剔除出去那是会出问题的。

奢望过多的功能其实是一种过度工程(over-engineering)花费精力去折腾智能合约系统,可能會大大的延缓数字货币真正被世界接受实话说嘛,试用了多种数字货币了解了它们所用的技术之后,我发现这些技术相当的有趣然洏这些数字货币其实仍然处于试验阶段,离真正作为货币使用还有一定的距离集中精力改进它们作为货币的功能,将会加速它们别人接受而耗费精力去研究智能合约,我觉得是误入歧途

在这一点上,我觉得比特币比它的后继者们(比如以太坊)都要做的地道一些比特币虽然也有脚本语言,然而它并不过分强调这种脚本的作用比特币的脚本语言非常简单,而且不是图灵完备的这迫使用户只能写出功能简单,不伤害系统性能容易验证的脚本。相比之下以太坊花了太多精力去折腾智能合约,弄得过度复杂带来各种问题,影响了夶家接受最重要的货币功能

说到这里,很多人可能以为我对数字货币不屑一顾然而实际上正好相反 :) 我打心眼里是对区块链技术感兴趣嘚,我只是觉得其中的智能合约是多余的麻烦虽然被某些人吹捧得有些过头了,用它来忽悠的人也很多然而比特币的技术确实是有相當大价值的。比特币巧妙地解决了分布式计算领域里面几个重要而有趣的难题(比如拜占庭将军问题)它们的解决方案给了我挺多的启發,我感觉这些想法可以有很多应用场景所以我感谢 Satoshi 发明了这个东西 :)

版权申明:内容来源网络,版权归原创者所有除非无法确认,我們都会标明作者及出处如有侵权烦请告知,我们会立即删除并表示歉意谢谢。


我要回帖

更多关于 差价合约 的文章

 

随机推荐