采用自主产权的智能合约体系

mumu0804...

08-21

转自:井通SWTC公链 

谈及区块链,不得不提智能合约。

“智能合约”(smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他发表在自己网站上的几篇文章中提到了智能合约的理念。他的定义如下:

“一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。”

虽然智能合约的理念早在二十几年前就被提出,但实践却严重地落后于理念
2008年,第一个加密货币比特币出现,同时引入了区块链技术。区块链最初是以比特币的底层技术出现的,虽然区块链概念已被提出,但智能合约依然没有融入比特币区块链网络中。直到2013年,以太坊的出现让它浮出水面。此后,逐渐涌现出了各种不同形式的智能合约,其中以太坊智能合约使用最广。

智能合约并不是一定要依赖于区块链来实现,不过区块链的部分基础特性决定了智能合约更加适合于在区块链上来实现。例如区块链的去中心化、数据的防篡改、高可用性等。去中心化能够保证数据的全网备份且不受第三方机构的干扰,无需担心数据会被篡改。高可用性不会存在中心存储系统受到攻击或是其他问题而导致合约不执行的问题。总的来说,区块链给予智能合约最好的特性就是“信任机制”。
区块链为智能合约提供可信任执行环境,智能合约为区块链扩展应用。
以太坊的智能合约,虽然能够控制区块链上各种数字资产进行复杂的操作,但是依然会存在一些漏洞,比如以太坊“THE DAO”事件的发生。以太坊的智能合约执行采用的是同步方式,利用交易触发或者自动触发合约调用,合约在具体执行的时候,区块链的共识机制必须等待合约执行完,返回结果后才能继续操作,从而完成对当前区块的共识。不同于以太坊智能合约的执行方式,井通SWTC公链的智能合约在执行上采用了分层、异步调用和快速执行三种机制,其目的是为了保证智能合约执行下共识算法的效率,从而保证井通SWTC公链的商用可行性。

井通SWTC公链智能合约系统实现过程: 

1. 采用TX驱动的做法,合约的创建,合约功能的调用,都由TX发起,如果执行的过程中需要修改用户的余额,则会发起交易并发到下层的TX,所有这些交易都将在TX执行验证并记录在底层的区块链中;

2. TX层的交易不受合约的影响;

3. TX层跟合约相关的交易以单独的TX方式保存合约的代码和状态, 合约的具体状态对应合约相关功能的程序调用过程及参数值,TX层的状态hash保证信息的一致性;

4. 合约层的执行由多个合约节点(contract validator-合约验证)执行,以确定性的方式分别执行并进行共识;

5. 每个合约节点采用组合(VM虚拟机)执行代码;

6. 合约节点保存合约执行的storage。

在这样的分层设计下,我们进一步优化了井通SWTC公链系统,使得合约的调用采用异步的方式。在此基础上,实现合约的快速调用和返回,同时支持用户选择分片的方式来执行智能合约过程,不需要所有的节点都做同样的事情,提高了整个系统的数据处理能力。
 
井通SWTC公链智能合约的异步调用

现有的智能合约在执行上采用的是同步方式,此类智能合约的执行方式具有以下缺陷:

1. 合约执行的速度严重影响区块生成的时间:

由于区块共识依赖于合约执行的结果,每个节点必须对合约结果的一致性达成共识,因此,合约的执行速度的快慢,直接影响区块后续操作,导致区块生成时间的延迟;

2. 合约执行的速度严重影响区块链能够支持的合约执行并发量:

在区块链生成的频率通常大致固定的情况下,在同样的时间段内,一个合约执行的快慢,将直接影响到同区块其他合约的执行,极端情况下,一个恶意的合约可能导致系统无法处理其他的合约,导致处理的合约并发量大大降低;

3. 合约执行过程中的容错能力受限:

由于采用同步执行的方式,合约执行过程中,针对各种错误情况的处理需要全面考虑,并且实现对各种“具备时间敏感的操作”快速处理,比如需要对各种操作的超时情况作相应的处理。

一些现有的解决方案,比如以太坊采用gas的方式,对每个合约进行运算量的估算,并且利用一个系统总gas量来控制当前区块能支持的总运算量,用来保证共识的按时完成。但是系统能支持的合约总数受到这个总量gas的限制,如果合约的代码越来越复杂,整个系统能支持的合约数就越来越少;另外,以太坊共识时间有限,gas的最高值并不能大幅增加。
针对此类智能合约执行技术存在的问题,井通SWTC公链提供一种跨区块异步调用合约系统,该系统的区块共识不依赖于前一合约执行结果,可提高合约执行的并发量以及区块能支持的合约数量,提高系统容错能力。

井通SWTC公链的异步调用合约系统,包括以下单元:

1. 分布式系统验证单元:

包括一个或多个服务节点以及若干个验证节点,用于接收用户递交的交易请求集合{TX},包括合约调用请求TX和支付请求TX;

2. 分布式合约执行单元:

位于本地或远端的分布式系统验证单元,与分布式系统验证单元之间通过预定义协议进行通讯,用以获取合约执行所需信息,并在合约执行完毕后,将结果返回至验证节点;

3. 合约执行缓存单元:

包括用于接收来自验证节点的合约调用请求,发送合约调用请求至分布式合约执行单元,接收合约执行结果,返回当前合约执行状态至验证节点,以实现合约的异步调用。

该系统实现方法如下:

1. 服务节点接收用户递交的交易请求TX,每个验证节点收集上述TX并汇集成交易请求集合{TX}i。{TX}i中包含的合约调用请求发送至合约执行缓存单元,合约执行缓存单元在收到上述请求后立即返回当前合约执行状态;

3. 在所有验证节点收到{TX}i后,{TX}i在所有验证节点完成共识,区块i生成,验证节点对共识后的{TX}i进行验证,验证后的状态写入区块i。同时每个验证节点创建一个查询合约TXq,并将其加入到区块(i+k)的交易请求集合{TX}(i+k)中;

4. 在进行1~2时,合约执行缓存单元采用异步调用的方式将合约调用请求发送至分布式合约执行单元,于后台执行合约,执行完毕后,合约执行缓存单元获得合约执行的最后结果,等待处理;

5. 区块(i+k)处理周期开始,{TX}(i+k)中包含的合约调用请求发送至合约执行缓存单元,合约执行缓存单元立即返回当前合约执行状态。同时,验证节点从查询合约TXq中提取出合约相关信息,并向合约执行缓存单元发出查询请求,合约执行缓存单元向验证节点返回区块i的合约调用请求的执行结果,并更新查询合约TXq;

6. 在所有验证节点收到{TX}(i+k)后,更新后的查询合约TXq和{TX}(i+k)合在一起形成一个新的集合,在所有验证节点完成共识,区块(i+k)生成,验证节点对共识过的TX进行验证,验证后的状态写入区块(i+k)。


井通SWTC公链的区块链系统以异步调用作为后台核心技术,与现有的智能合约执行技术相比具有以下优势:

1. 隔绝了合约执行和系统共识单元,合约的执行可以在远端,使得合约的执行不再占有系统共识的资源;

2. 合约执行单元和系统共识单元的去耦合,使得合约执行模块和共识模块相对独立,支持热插拔;

3. 在共识验证单元和合约执行单元之间设立合约执行缓存单元,在整个合约执行过程中创造性地采用了异步调用执行方式,使得合约的调用和执行结果在跨区(区块i和区块(i+k))之间分别实现,同时又能保证各个验证节点之间完成共识。该种合约异步调用执行模式提高了合约执行的并发量,共识的过程无需要等待合约的执行结果,大大提高了区块能支持的合约数量;

4. 提高了整个系统的容错能力,一方面系统可以设置合适的超时处理机制来处理合约延时的情况,另一方面,用户可以在合约调用中配置合适的k值,来保证长时间执行的合约得到正确处理。

 
井通SWTC公链智能合约的快速交易

现有基于区块链的分布式交易方式因区块链共识方式、区块的生成时间、区块的大小而受到很大的限制。基于区块链的交易速度一般都在秒级、甚至分钟级以上,此外,还存在如下缺陷:
1. 交易请求在分布式系统中的传播过程存在延迟,从某个发起节点到信息传播至其他所有节点之间存在信息延迟;
2. 共识过程存在时间延迟,数据的更新必须在共识完成后才能写入账本中,这种写入是间歇性的,每个验证周期更新一次,用户对数据更新的请求必须在更新周期之后才能得到响应并返回;
3. 现有的基于智能合约的交易不仅受到以上两点的影响,还受到合约执行延迟的影响。
一些现有的解决方案,比如闪电网络、比特币网络采用通道的办法来加快对交易请求的处理,但上述解决方案的协议要么比较复杂,要么采用了非拜占庭容错的方式,限制了其更广泛的应用。
井通SWTC公链实现了一种基于区块链合约的快速交易系统。在异步调用合约的基础上,对合约节点分成两种:普通交易合约节点和快速交易合约节点。
普通交易合约节点与验证节点之间通过预定义协议进行通讯,获取合约执行所需信息,合约执行完毕后,将结果返回至验证节点;快速交易合约节点执行快速交易请求,并将执行结果返回至合约接入服务器。
井通SWTC公链系统分为独立的合约层和底层共识层,快速交易对合约层发起调用,在合约层实现快速交易,其快速执行结果周期性或非周期性返回底层共识层,进行验证确认并写入区块链,使得交易的执行不受区块关闭的时间和区块大小的影响,也不受分布式网络传递的影响,同时具备分布式区块链固有的优点,克服了现有区块链交易方式在交易传播、共识过程以及合约执行过程中存在的延迟现象,以接近实时的方式实现对交易的快速支持,维持了交易系统的拜占庭容错性,可实现对交易细节的隐藏和加密,同时保持了分布式系统数据的一致性和完整性。

评论

暂无评论

推荐阅读

Nerthus

原创

09-02

关注

杨海坡

原创

09-09

关注

Nerthus

08-29

关注
关注

币信

原创

08-22

关注

内参君

原创

08-13

关注

天旭说币

原创

08-09

关注

36度区块链

首发

09-11

关注

BobiGlobal

原创

08-22

关注

币圈老守

原创

09-03

关注
加载更多