区块链和它背后的分布式账本技术将极大地改变互联网的格局和与之相关的许多其他行业。智能合约被认为是区块链2.0,但合约开发工具的不成熟却阻碍了区块链和DApps(去中心化应用)的开发和发展。Voyage项目创新性地提出了解决智能合约和DApps编程困难问题的方法,并致力于构建一个开源、协作的DApp创造环境。Voyage将致力于构建一个支持多个公链的开发者工具包和相应的安全测试库等。
Voyage生态系统的定位是一个互助社区/合作者社区,其中涵盖了DApp开发人员,验证人员,服务提供商,市场运营商,企业和最终用户。
Voyage: 一种新的语言
在冯·诺伊曼语言中,并行处理中最重要的瓶颈是变量。例如,多个线程在同一时间访问和修改相同的变量并导致错误。为了避免线程在对变量操作时被另一个线程修改变量,通常需要一个锁来确保只有一个线程进入关键部分并访问变量。该结构强化了线程的鲁棒性,同时导致效率很低。在引入多核CPU时,这个问题尤其麻烦 - 使用锁和线程上下文切换带来了巨大的成本,导致了各种各样的活锁、死锁和其他问题。而程序吞吐量则不会随CPU核心数量的增加而线性增加。
解决冯.诺伊曼型编程语言面临的并发问题的主要做法是:
A. 通过将系统级锁切换到CPU总线级锁来减少锁开销。CPU使用多个种Atomic原语来最小化锁定开销。
B .开发无锁数据结构。这是一个巧妙而复杂的减少程序对锁的依赖的方式。
C .设计非常复杂的系统以避免数据竞争,如单线程多进程模型或事件驱动的异步队列等。
在多核环境中,解决方案极大地提高了编程的可扩展性。然而,区块链网络可以被看作是一台拥有数万甚至数十万CPU的超级计算机。在冯·诺伊曼编程语言的努力下,线性可扩展性不能完全解决。随着节点数量的增加,系统的处理能力将不会随着时间的推移而变化,从而会达到瓶颈。其根本原因来自冯·诺依曼编程语言本身⸺ 它不是一种为在并发环境中使用而设计的语言。
Voyage是一种以Scala为基准,同时结合了Solidity性能的全栈开发语言。Scala是一种现代的多范式编程语言,旨在以简洁、优雅和类型安全的方式表达常见的编程模式。它可以在Java平台(Java虚拟机)上运行,同时集成了面向对象和函数语言的特性。
1. Voyage的主要特点
一致性:尽管Scala融合 了静态类型系统、面向对象编程、函数编程等语言特性,但很少能看到融合的痕迹。Voyage是一种编程语言,它结合了大部分的语言特性,却没有杂乱;
类型安全:Scala的编译 器和类型系统会通过消除软件错误来强化支持编程。同时,Voyage是图灵完备的,甚至可以在编译过程中解决问题;面向对象: Voyage是一种面向对象的编程语言,所有的变量和方法都封装在对象中,可以打包为外部使用;
函数式编程: Scala是一种函数式编程语言,函数可以独立存在。开发人员可以将函数定义为另一个函数的返回值,同时接受函数作为函数参数,这可以给组合函数带来极大的方便;
异步编程: 由于函数式编程提倡变量不变, 异步编程变得更容易。参考Scala提供的Future和AKKA库,使异步编程更加灵活;
基于VoVM: Voyage将编译加入VoVM字 节码,帮助无缝 地集成现有的Java类库。开发人员将可以访问大型和稳定的Java类库,如cozy apachey 1ucommon*和Java中的其他工具库;
快速测试: Voyage提供交互式命令行 (REPL),开发人员可以快速测试各种语法和代码,从而促进新特性的学习,或者尝试新的想法。
2. Vayage Toolchain 开发工具
Vayage Development Kit,简称VDK,是使用Voyage程序语言的开发工具包,可以在Voyage平台构建应用程序和组件的开发环境,让开发和调试变得更加便捷和简洁。
VDK包含的基本组件包括:
Voyagec ‒ 编译器,将源程序转成字节码。
Voyagepak ‒ 打包工具,将相关的类文件打包成一个文件。
Voyagedoc ‒ 文档生成器,从源码注释中提取文档。
Debugger ‒ 查错工具。
DApp Viewer ‒ DApp程序浏览器,一种执行HTML文件上的Voyage DApp的DApp浏览器。
Voyagep Voyagep ‒ Voyage反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Vconsole ‒ Voyage进行系统调试和监控的工具。
VDK可以帮助Voyage DApp开发实现:
A.简洁、优雅、灵活的语法
VDK提供的工具可用于构建领域特定语言(DSL) ,以及对用户友好的API接口,逐步实现可视化编程。
B.可扩展的架构
使用VDK能编写出简短的解释性脚本,并将其粘合成大型的分布式应用。
以下四种语言机制有助于提升系统的扩展性:
1.使用trait实现的混合结构;
2. 抽象类型成员和泛型;
3.嵌套类;
4.显式自类型(self type)。
3. Voyage Security Library安全库
Voyage security library为智能合约提供安全库,确保智能合约的安全开发。其功能主要包括以下几点:
· 智能合约形式验证:
形式验证会为智能合约代码提供静态分析,从形式上验证智能合约的正确性和存在的问题。
· 模块化编程:
提供开发项目需要的通用模块,比如代币发行、代币众筹、空投等等智能合约标准通用模块。
· 容错检测:
为智能合约开发提供漏洞的自动检测、回滚恢复等简单的工具,同时提供专门的安全研究合约沙盒,为漏洞检测提供奖赏激励。
4. V Studio
2008年,苹果App Store.上线后,开发者能够很容易地创建和上传他们的App,使开发者获得收益,千百万人可以参与使用;同时用户从App Store下载或购买更新软件。现在,App的开发已经供过于求,然而无论是因为谷歌和Apple这样的大公司垄断所导致的,还是由于App.上线批准方面的政策不透明性,该局面都会给用户和程序开发员造成巨大损失。而且在App获取上线批准的过程中,也存在让客户担心隐私性安全的问题,有些用户的信息甚至会在当事人毫不知情的情况下被出卖。显然,第四次App应用的变革已经来临,V Studio将成为下一代App应用的主流需求。
V Studio将是一个全球性的分布式应用分发系统,将Voyage开 发社区中经投票或推荐的DApp聚集在一起,可以更加快速、方便、精准的让用户找到自己需要的DApp。
5. Voyage with AI&loT
Voyage进一步将支持主流人工智能学习系统,比如TensorFlow等,为未来区块链和AI结合做准备。Voyage将 基于TensorFlow提出新的编程模型,基于“Graph Program Extraction”算法,让开发者可以用Voyage直接发挥TensorFlow等的优势。
Voyage的另一个方向是结合嵌入式语言,为物联网提供了点对点直接以互联的方式进行数据传输,整个物联网解决方案不需要引入大型数据中心进行数据同步和管理控制,包括数据采集、指令发送和软件更新等操作。
Voyage编程: 系统架构
Voyage是一种受Scala强烈启发的新编程语言,但由于它具有原生代码编译器,从系统编程到高级脚本编程,都提供了对并发性和多核心CPU的支持,它的使用范围更广。
Voyage有自己的完整的跨平台工具链,有两个编译器,一个解释器和一个链接器,不依赖于任何第三方库,除了在引导阶段需要的Rebol2解释器。一旦完成,Voyage将会是完全自承载的。
1. 形式化验证
形式化验证经常被使用在硬件设计中。考虑到软件成本,软件行业很少实施形式验证方法。然而,Voyage开始时将会有形式化验证工具。形式化验证使用数学方法来证明在任何类型的代码中是否存在Bug,这可以从根本上消除软件漏洞。
由于区块链不可修改的性质,智能合约的安全性至关重要。Voyage工具链可以消除像DAO这样的智能合约漏洞。
2. 并发进程
Voyage中进程被赋予了-流的地位。这里所谓的进程与操作系统中的进程概念不同,反而类似于在Voyage VM的Green Thread中erlang或golang的进程。一个节点可以轻松地创建数千个进程,而不必担心OS线程上下文切换开销。
我们以教程中的代码为例:
valueStore!(init)和for (@value <= valueStore)代表两个不同的进程,I代表操作人
员是否同时执行以下操作:
1 valueStorel!(init) /
2 for (@value <= valueStore) {
1 //...
4}
for (@value <= valueStore)中的操作符<=代表其他进程
|和<=类似erlang中的spawn或golang中的go in. Voyage直接支持在语言级别上的并发,而不需要额外的函数调用。换句话说,由Voyage所写的智能合约本质上比冯.诺伊曼语言中所写的平行度要好。
Voyage所写的智能合约实际上是一个由多个进程组成的反应流。合同中的过程可以并行地在多个节点上执行,不再是一个从开始到结束执行智能合约的节点。基于Scala的AKKA框架,在动态变化的分布式网络节点上执行Voyage合约,这个过程被命名为Mobile Process Calculio对于使用Voyage的开发人员来说,这些细节在他们编写时几乎不需要考虑就可以理解。Voyage提供了-组统-的语法, 可以从这些实现细节中将开发人员解放出来。
3. 通道
Voyage提供了通道,类似erlang中的mailbox或golang的Channel。 进程通过通道交换消息。在Voyage中,一切都是进程,传递的消息实际上是进程的序列化。
Voyage强大的原因是通道本身也能在通道内通过,这得益于反射的概念。对于Java/C#程序员来说,反射通常被理解为分析或加载程序本身的过程方法。这被称为结构反射。Voyage的反射会更进一步,并被称为进程反射。通过进程反射,可以将信道转换为进程,使信道能够在信道中传递。
与在某些节点上执行智能合同的Ethereum和EOs VMs不同,Voyage的智能合约将被分解成多个节点并行执行的进程,而通道将这些进程连接在一起。Voyage将一个去中心化的计算网络集成到一台能够并行执行智能合同的超级计算机中。这是未来无限可扩展性的基石。
4. 编程示例
Voyage是最先进的编程语言之一, 它结合了面向对象和函数语言的特性。无需放弃高级的VoVM和成熟的Java生态系统,开发人员就可以获得更高级的语言特性和更高的开发效率。我们用一一个普通的Android代码作为例子来说明Voyage的优点。
Java平台编程
BroadcastReceiver connectivityListener = null;
Void onResume){
Super.onResume();
//...
connectivityListener = new BroadcastReceiver(){
@Override
Public void onReceive(Context context,Intent intent){
doSomething();
}
};
registerReceiver(connectivityListener,newIntenFilter(connec-
tivityManager.CONNECTIVITY_ ACTION));
}
void onPause({
unregisterReceiverlconnectivityListener;
//...
Super.onPause();
}
Voyage平台編程
broadcastReceiver(ConnectivityManager.CONNECTIVITY_ ACTION){
(context,intent)=> doSomethingl()
}
在比较中,会发现基于Java的开发回调是一个匿名类,注册和取消注册需要成对出现。在开发过程中,它将显得非常乏味和脆弱。基于Scala的Voyage可以用函数式代替匿名类,这祥可以更好地支持DApp編写。
V Studio : 一个新的DApp平台
V Studio包含用于构建 DApp所需的模块化编程、可视化编程等,提供跨链、跨平台的DApp开发解决方案,同时打造DApp分发、推广的超级入口,为DApp开发提供技术、市场等全方位支持,建立优质DApp生态。
在Voyage编程语言的基础上,V Studio会整合不同的底层公链,构建一个跨区块链、跨平台的DApp开发解决方案。基于Voyage和Voyage开发工具包,开发人员可以轻松构建一个DApp,它可以在Ethereum、Qtum或其他底层公链上运行,而无需掌握底层公链结构或编程语言。
这个设计法人特点是:
DApp-friendly开发工具
Voyage链设计用于构建跨链机制,支持跨链编程,提供编译器,并提供更完整的编程语言,以优化基于区块链的DApp的性能。
可伸缩性
Voyage链与Voyage虚拟机机制有关,其中每台虚拟机同时执行一项智能合约,并执行多线程。这将允许该平台在保持性能、一致性和代码复杂性的同时进行线性伸缩。
独立性
Voyage虚拟机的每个实例在独立的区块链上都执行一套独立的智能合约,只有在必要的时候才执行网络。由于默认分区(Sharding),它产生一个协调的并行区块链网络。
1. Voyage智能合约
Voyage链是跨链编程的关键部分。Voyage链将 提供DSL,它可以直接编译到区块链虚拟机(VM),使用不同的后端来针对不同的底层公链。
为了实际了解Voyage的编程,我们生成一个名为Cell的合约,它拥有一-个值,并允许客户端获取并设置它: .
contract Cll( get, set, state)={
select{
case rtn <- get;v<-state=> {
rtn!( *v)/state!( *v)/Cel( get, set, state)
}
case newValue <- set; v< state=> {
state!( *newValue)/ Cell get, set, state)
}
}
}
该合约用一个通道来获取请求,一个通道来设置请求,以及一个用来存放数据资源的状态通道。它会等待客户端请求的获取/设置通道。客户端请求是通过Case类来匹配的。
当收到一个请求时,一个连结传入的客户端和状态通道发出的请求的合约将会生效。首先,它从访问中移除内部状态,然后依次获取和设置操作,这样它们总是针对资源的单一一 致副本进行操作一同时提供数据 资源同步机制、内存访问和状态更新。
在get时,有一个请求 带着一个rtn地址, 这个地址的值v在状态中会被发送出去。由于v已从状态通道中取出,因此它被放回,并且递归调用Cell行为。
在set时,请求以一个新值出现,该值被发布到状态通道(旧值已被连接窃取)。与此同时,Cell行为被递归调用。
通过select确认,单元中只有一个线程可以响应客户端请求。这是一个竞争,失败的线程,不管是getter还是setter,都会被杀死。这样,当进行Cell的递归调用时,丢失的线程不会挂起,但是新的Cell进程仍然能够响应任何类型的客户机请求。
Voyage将取代目前用于开发DApp的网络栈。Voyage链将提供一个集成的本地区块链节点,这样开发人员就不会面对复杂的部署配置。基于Voyage编程语言及其内置的DSL,我们还为DApp提供了一个标准库。
标准库将包括:
· 集成目标区块链节点的包装器。
· 操作智能合同的高级接口,并在运行时从常规代码发送事务(相当于WebDApp 20中的Web3或类似接口);
· 一个沙盒I/O模式,以加强运行DApp的设备的安全性。
· 为Voyage token管理提供了-个特定的库(用于缓解和鼓励Voyage相关的DApp创建)。
2. 基于Voyage的应用
在Beta 1.0完成后,将会有一些基 于Voyage的DApp,如全球去中心化式智能民宿旅行应用程序。Voyage将 为迁移到Voyage工具链或其他公链的DApp提供测试网络的开发支持以及Voyage的开发者联盟的开源技术支持。
经济体系
基于DPoS共识算法,Voyage将有33个节点和66个备份节点,并采用24小时投票选举系统。这样的共识算法要求这99个节点在成为节点或空闲节点之前必须锁定相当数量的令牌。
· 资源使用
所有开发人员免费使用。为了防止资源滥用(例如计算积压和状态存储),每个账户可用容量的百分比基于所拥有的令牌数量。例如,一个账户持有1%的所有令牌可以访问1%的状态存储容量。此外,DApp开发人员持有一定数量令牌可以获得Voyage支持。持有的令牌越多,从Voyage工具链获得的资源越多。Voyage用户之间可以通过令牌进行交易,用户可以出售或出租剩余产能,以换取代币。
· 块奖励
33节点可以从交易费用中得到奖励。每一个可以贡献存储和计算以及拓展DApp生态系统资源的节点,都可以从Voyage基金和DApp开发人员那里得到激励。
· V Studio和投票权
在Voyage经济中,将建立高质量的V Studio,V Studio将成为DApp分发和推广的超级入口。在V Studio中,应用程序开发人员可以自行决定盈利模式,不收取任何费用。Voyage还鼓励消费者参与整个经济生态的发展,因为一个令牌代表一个投票权,任何令牌持有人都可以参与Voyage V Studio中的所有投票活动,比如是否接受一个新的DApp。
生态建设
1. 技术生态
Voyage作为公链技术和DApp区块链应用中间的桥梁,将建立一个开放性的技术生态。Voyage核心团队、Voyage开发社区、Voyage应用合作伙伴共同推进区块链技术的发展和应用,为DApp的开发和落地,以及为多个行业的区块链提供更全面、有力的技术支持。
Voyage技术生态主要成员包括:
A. Voyage技术团队
Voyage技术团队由国内顶级的区块链核心开发专家,丰富的底层公链开发经验的技术人员,以及有互联网多年创业经验的团队构成,可以实现底层架构技术和区块链分布式应用的完美衔接,同时团队还设有交互设计师、UI设计师以及互联网产品经理等。
B . Voyage技术社区
Voyage从开始建立之初就致力于构建一个开源的技术社区。一方面随着Voyage区块链编程语言、开发者工具包等陆续对外公开,可以吸引全球顶尖的开发人才为Voyage的迭代和发展做出技术贡献;另一方面我们也将吸引各类DApp应用开发者或公司,为DApp的开发和应用提供更多的合作和互相促进学习的机会。
C . Voyage技术合作伙伴
希望与各类具有强大技术实力的伙伴进行合作。一方面希望合作伙伴能够在区块链应用上提供开发、集成、运维的综合技术支持服务;另一方面希望来自各行各业的专业公司基于本体的底层区块链架构,实施拓展各行业的区块链应用。
Voyage将营造一个开放的技术生态,任何组织及个人均可根据自身情况,自愿参与到技术生态中,Voyage技术生态的目标是通过与合作伙伴合作,试验参与生态系统并推动价值创造和网络效应的新方式,从而培育创新环境。同时Voyage基金会可资助研究和开发工作,以支持在提供商业交易服务方面安全有效的自治网络。
2. 治理生态;
基于Voyage发展开源的DApp开发者工具包,将让开发人员轻松探索和发现价值,同时为开发人员提供: 个开放、可持续的平台来开发、交付和增强这些服务并吸引用户。为履行其使命,Voayge联盟将对Voyage生态成员的资源进行整合、对接和管理。
生态成员Ecosystem Members
Voyage生 态的参与者统称为Voyage联盟的成员,Voyage联 盟将由多类型的主体构成。以下定义针对的是Voyage联盟成员的的身份和类别:
Voyage联盟将投入资源建立一个公平和透明的治理流程,将充分考虑到生态系统内所有参与者的声音和需求。这种开放式管理模式,成员将有资格参与监督流程、令牌发放、定价规则、法律事务以及内容和合规指南相关的决策。
Voyage联盟将指导和资助Voyage区块链本身的开发,以及提供可以让生态系统合作伙伴能够为彼此建立合作、共同发展和创造价值的工具。作为此过程的一部分,Voyage建议将自己的代码库作为一个开源项目提供,可用于为新社区提供动力,并为现有项目增加功能。Voyage联 盟将通过让开发团队继续改进支持Voyage生态系统的技术套件来进一步完成这项工作,并将维护生态系统参与者可以使用的开源代码库。
3. 应用生态
Voyage应用生态的核心目标是促进DApp的落地和应用。目前DApp的发展还处于非常早期,DApp应用还没有杀手级或者比较大规模的应用。随着区块链技术的发展,传统的C/S模式可能被颠覆,开发者也不用再去买云服务器部署自己的应用。有了区块链开发平台,开发者可以很容易的把应用部署到区块链上,这是一个基于全球服务器,7*24不间断服务的应用平台。因此Voyage特别提出应用生态的建设,实现DApp应用间的合作、共享和协作,提高DApp应用的落地能力,降低DApp的推广成本,并且Voyage联盟会选择一些优质的DApp进行孵化投资。
A.合作
使用Voyage编程语言和Toolchain开发的DApp,可以进行底层相关技术设计的讨论。Voyage会 为所有开发者提供更加全面的开发支持工具和模块化编程,但如何选择最佳的技术组合是各类DApp开发者之间可以进行合作探讨的,比如智能合约的设计、共识机制的选择等。
B.协作
根据合作伙伴差异化的技术能力和技术开发经验, Voyage欢迎合作伙伴基于需求贡献实力,共同进行特定协议、模块等的设计、开发、测试等工作。技术生态合作伙伴可基于技术发展需求,加入到开发计划中,行贡献代码、代码审核、提供测试等,Voyage基 金会将提供token的贡献奖励。
同时DApp开发者可以根据自己的应用性需求,特别是在 需要定制化开发的情况下,在Voyage社区发布开发需求和开发任务并且提供相应的开发报酬,向技术生态征集技术贡献。
C. 共享
技术的发展是不断进步和完善的过程, Voyage应用生态欢迎大家进行技术共享和交流。同时欢迎大家贡献自己的计算资源、算力支持等。
同时在DApp的推广过程中,DApp之间可以进行推广渠道、用户等的共享,比如A应用支持B应用的空投推广。
D.安全生态
安全生态系统是一个以社区为管理的商业组织,致力于助力网络安全社区和区块链之间的连接,建立黑客奖励机制,鼓励对计算机网络和软件的合法研究。
Voyage的生态系统允许客户为他们的产品进行高品质的入侵测试和漏洞评估。整个过程以及调查结果将使用时间戳进行记录并颁发基于Voyage的DApp漏洞和对策证书,每个项目的证书都可以在Voyage官网查到认证数据。
关于更多V语言信息:http://www.voyageproject.io/
更多区块链信息:http://www.qukuaiwang.com.cn/news/
风险提示:区块链投资具有极大的风险,项目披露可能不完整或有欺骗。请在尝试投资前确定自己承受以上风险的能力。区块网只做项目介绍,项目真假和价值并未做任何审核!