1. Hi区块链首页
  2. 资讯
  3. 技术指南

Galaxy数字之美:新型智能合约Q语言,如何实现100%无BUG?(二)

让人“上头”的100%无BUG的新型智能合约Q语言如何使用?本文将为您安排的明明白白。

在上篇《Galaxy数字之美:新型智能合约Q语言,如何实现100%无BUG?(一)》中,我们为大家阐述了VNT Chain基于形式化验证的新型智能合约Q语言的它的设计原理及应用价值。大家似乎对这种既能保证100%无BUG同时操作简单的Q语言如何操作应用更为“上头”,那么本文我们就接着为大家分享其智能合约编译方法和形式化验证具体实现方式。

42a241a9cca240dca2c9b3d894aa4da0

在使用这种新型智能合约Q语言前,我希望大家对它有足够的了解,再去尝试成为早期使用者。为了让大家更好的理解与实操,我接下就先从类型系统来分析这种新型智能合约Q语言与传统C++,Crystal/Ruby语言的区别与优势。

aa12681b6bd347c1a7a25198fa14768b

如上图所示,在C++、 Crystal/ Ruby 语言中, `Class` 是一切类的类,它也是自己的类;object为对象,一切对象均是某个类的实例(对象总是有类),一切都是对象,包括类也是对象,=> 类作为对象也有它的类。不懂技术的朋友可能会有点懵,那我们换一个直白的说法,也就是这些语言中字段不能被直接访问,需要用方法包装,这样操作起来无疑比较复杂了。而这种新型智能合约Q语言中,类型被包含在更大的数学集合中,类型作为一种集合就可以交并补运算。原本的类型被叫做实体类(Entity Class),实体类具有字段、方法而数学集合没有,所以操作起来就更为简便。

另外函数方面,一般传统C++,Crystal/Ruby函数的参数具有确定的类型,而我们新型智能合约Q语言的参数是数学集合。这一点是通过大量的泛型与实例化来实现的,只有合约API入口点需要具有确定的类型,而之后的函数调用均被泛型实例化,编译时根据实际调用的参数类型派生出具有不同对应类型的函数。同时可以大量使用虚函数表,在保证一定性能的前提下,实现多类型参数(即一个参数不需要有唯一的类型,可以是确定的多个类型中的某个)。

cec5a17378e7498c9d58a08474f53e52

这样设计的优势在于,编译语言的函数与数学上的定理(Lema)有很强的相似性——从某种角度上一个函数就是对一个定理的描述,就可以十分轻松的用 HOL 表达,而用户对其的证明,只需要证明此定理,而不需要像C语言的形式化证明那样对函数建模。

通过以上的对比分析,想必大家对这种新的Q语言已经有了更为深入的了解。接下来我们就来和大家具体讲解这种Q语言的使用方法。如下流程图所示:

83dec7ecf53344e3a3250722f3d88d16

整个过程主要包括三大步骤:编程语言解析、形式化证明、代码发射。下面是这个实操步骤的具体拆解:

实操步骤

当然,我们对这个实施操作的描述是为便于技术爱好者们能够快速的理解和加以应用。我相信熟悉该领域技术的极客大神显然可以很容易地对上述实施操作针对不同应用环境加以修改利用,并把我们解说的一般原理应用到其他实施例中而不必经过创造性的劳动,从而极大的提高工作效率。

现在,这种操作简单且100%无BUG的Q语言你学会使用了嘛,是不是想要快速上手体验一番?目前VNTChain主网Galaxy已经上线,一起来加入VNT Chain技术生态成为新型智能合约Q语言早期使用者,与我们共同探索数字世界的美妙吧。VNT Chain是一个开放的社区,我们会奖励每一个为VNTChain做出贡献的开发者,期待您的加入,共建VNT Chain技术生态。

声明:登载此文出于传递更多信息之目的,观点仅代表作者本人,绝不代表Hi区块链赞同其观点或证实其描述。

提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。