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

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

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

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

霍比特HBTC将于4月19号上线EN(Exploit Network):据霍比特HBTC官方公告,霍比特HBTC将于4月19日16:00(UTC+8)首发上线EN(Exploit Network),并开通EN/USDT交易对。

同时,霍比特HBTC还将开启“新用户交易,平分2,000个EN”、“交易EN,瓜分7,000个EN”和“幸运锦鲤瓜分1,000个EN”三大活动。

Exploit Network是通过在多个网络部署跨链桥,来实现资产跨链互转的隐私支付网络,引入了基于zk-ENSNARK的EN-Protocol与EN-Shield匿名支付系统,实现高并发、高扩展、高度隐私的隐私支付网络。更多详情请查看原文[2021/4/19 20:35:13]

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

动态 | Dash计划将Dash Explorer更新为Insight:金色财经报道,去中心化支付解决方案Dash的营销经理Michael Seitz宣布,Dash Explorer将在2020年1月7日更新为Insight。据报道,旧的API已过时,且与新的改进后的API Insight相比功能有限。Insight是开源的Dash区块链资源管理器,将用于编写需要更高级区块链查询的Web钱包和其他应用程序。[2019/12/5]

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

Unicorn正式上线区块链浏览器UIC-Explorer:Unicorn也将在2018年4月17日正式上线区块链浏览器UIC-Explorer。Unicorn每笔交易都可以在UIC-Explorer中找到相对应的记录,保证了所有交易的透明性。据了解,通过使用UIC-Explorer区块链浏览器可查询到以下信息:1、区块上的出块时间、出块高度等整条区块链基础信息2、区块详情查询3、区块上的交易记录查询(地址、资金动向)4、区块上的合约执行情况查询此外,区块链浏览器UIC-Explorer可以让大家直接看到区块上记录的数据,同时地址和个人信息不挂钩,保证用户的个人隐私。[2018/4/16]

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

Galaxy Digital创始人:美国SEC将在Gary Gensler领导下批准比特币ETF:2月18日消息,Galaxy Digital创始人Mike Novogratz表示,美国证券交易委员会(SEC)将在SEC主席候选人Gary Gensler的领导下批准比特币交易所交易基金(ETF)。Novogratz认为,目前加密领域的投资工具,如灰度比特币信托(GBTC),给了散户投资者不公平的待遇,Gensler不太可能让现状保持不变。他还补充说,比特币ETF对灰度来说不是好兆头。(TheDailyHodl)[2021/2/18 17:25:11]

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

实操步骤

STEP1:编程语言解析

词法语法分析,包括词法分析,语法分析,将用户的代码解析成AST。其中词法分析和语法分析,使用Crystal宏机制实现,代码可以作为宏直接嵌入Crystal代码中,也可以直接输入AST,不通过宏式的语言描述,而是直接以方法调用的形式将对象传入。

语义分析-阶段1,检查AST是否构成合法的语义。任何错误的词法和语法将报出语法错误,并不是所有的AST都是合法的,语义分析将检查,若检查不通过,触发语义错误。

STEP2:形式化证明

根据AST中形式化证明相关部分,生成形式化证明用的语法树。

根据形式化证明用的语法树生成Isabelle/HOL语言。

使用Isabelle交互式证明工具进行证明。

STEP3:代码发射

语义分析-阶段2:注册全局参数或函数,确定外界可调用的接口与编译目标,推倒编译需要的信息,包括类型推导、内存空间分配、变量分配。

代码发射:根据语义分析得到的完全信息,从Export开始编译函数,及此函数调用到的函数,进而编译出:目标函数、目标函数所调用的函数、API包装函数、内部函数、智能合约的构造器,字段包装函数,基于AST发射代码。其中所有的Export函数必须是实例化后的函数,故确定Export的过程中即会实例化函数,而函数的实例化也即触发了对此函数的类型推导。

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-5:564ms