【公告】Vite智能合约上线测试网络


  • Reward

    经过Vite技术团队的努力开发和全面测试,继Go-vite1.2.2版本上线后,Vite测试网络在东八区时间2019年1月18日 04:02:15完成了代号为Smart的硬分叉,硬分叉之后支持创建合约和调用合约。

    智能合约是公链的核心技术,多数公链项目都是主网上线后才会启用智能合约,而Vite的理念一直都是打造可以用来的公链,为了让测试网络用起来,也是为了让主网更稳定的上线,那么在测试网络时期上线智能合约则更能和Vite的初衷相呼应。目前Vite是全球第一个实现智能合约的DAG公链,dApp开发者在Vite上开发和部署应用将变得前所未有的简单。

    什么是智能合约?

    智能合约是区块链的核心技术,那么什么是智能合约呢?智能合约这个术语至少可以追溯到1995 年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他的定义是“一个智能合约是一套以数字形式 定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。”后来Investopedia给出的一个有用的工作定义是:“智能合约是自动执行的合同,买方和卖方之间的协议条款直接写入代码行。在我看来,智能合约是在公链生态中比合同更可靠的约束力量。

    异步智能合约

    以太坊里的合约间调用是用内部交易的方式来完成的,这组调用要么同时完成,要么全部失败,这是一个原子性的ACID语义,会成为性能瓶颈。比如合约执行的速度严重影响区块生成的时间、区块链能够支持的合约执行并发量,并且容错能力十分有限。而Vite鉴了一些中心化互联网技术中比较成熟的方案,采用了消息传递的机制和消息驱动的架构,合约之间不共享任何状态,只通过彼此发送消息来进行通信,这便是Vite独有的异步智能合约。而“异步智能合约”中最重要的就是异步模型。

    异步原理

    一个交易的生命周期包括:交易发起、交易写入、交易确认。为了提高系统的性能,我们需要将这三个步骤设计成异步模式。这是因为在不同的时刻,用户发起交易的数量是不同的,而系统处理交易写入和确认交易的速度相对固定。异步模式有利于削平波峰波谷,从而提高系统的整体吞吐能力。

    比特币和以太坊等系统的异步模型比较简单:将所有用户发起的交易放入一个未确认交易池中,当矿工将其打包到一个区块中,该交易同时完成了写入和确认,当区块链继续增长时,该交易最终到达预设的确认置信度。这个异步模型存在两个问题:

    ●交易在未确认状态下没有持久化到账本。未确认的交易是不稳定的,没有参与共识,也无法防止交易重复发送;

    ●交易的写人和确认之间没有异步机制。交易只有在确认时才写入账本,写入速度受制于确认速度。

    Vite协议建立了更完善的异步模型:首先,将交易拆分成基于“请求-响应”模式的交易对,无论是转账还是合约调用,当一个请求交易被写入账本,则代表该交易被成功发起。另外,交易被写人账本和确认也是异步的。交易可以先被写人Vite的DAG账本中,不会被确认过程阻塞。交易的确认通过快照链来完成,快照的动作也是异步进行的。这是一个典型的生产者消费者模型,在交易的生命周期中,无论上游的生产速率如何变动,下游都可以以恒定的速率消化待处理的交易,从而充分利用平台资源,提高了系统的吞吐。

    异步智能合约最大的特点就是合约间调用是异步进行的,同步的智能合约在进行合约间调用的过程中会阻塞等待返回结果,这段等待的时间是无效的。异步则会直接返回,不会等待执行结果而是把等待时间直接拿去做其他事情,比同步执行的智能合约速度更快。

    合约的成本


    ●成本-在测试网络中创建合约需要消耗10VITE,这部分VITE会销毁。

    ●配额-创建合约的请求交易消耗的配额由合约创建者提供,创建合约的响应交易配额由创建合约时销毁的VITE提供,在测试网络中,创建合约的响应交易会得到最高1000000的配额。合约执行需要消耗配额。合约请求交易和合约响应交易分别消耗交易发起者和合约账户的配额。

    ●配额获取-测试网络中,合约账户只能通过抵押VITE的方式来获取配额。如果合约账户没有足够的配额,则合约所属委托共识组不会打包这个合约的任何交易,因此合约提供者应该及时为合约抵押VITE。

    智能合约语言

    以太坊提供了一种图灵完备的编程语言Solidity,用于开发智能合约。为了支持异步语义,Vite对Solidity进行了扩展,定义了一组用于消息通信的语法。扩展之后的Solidity称为Solidity++。

    Solidity++将支持Solidity的大部分语法,但不再支持合约外的函数调用。开发者可以通过Message关键字来定义消息,并通过onMessage关键字定义消息处理器,从而实现跨合约通信功能。Solidity++中的消息会被编译成CALL指令,并生成一个请求交易加入账本。在Vite中账本充当了合约之间异步通信的消息中间件,可以确保消息可靠存储并防止重复。

    有关智能合约详情可参考Vite技术文档:https://vite.wiki/zh/tutorial/contract/contract.html

    最后,欢迎全球开发者在Vite链上部署调用智能合约,共同打造一个丰富的智能合约库,完善的Vite生态。


  • Reward

    强的一匹,第一个在Dag上玩智能合约的



  • 学习了 ,进一步了解vite


Log in to reply