×

迅雷链精品课 | 19.智能合约-迅雷链智能合约开发

标签: 暂无标签
本帖最后由 迅雷链大学 于 2019-6-6 18:09 编辑

目录
1. 迅雷链智能合约应用开发
   1.1. 迅雷链服务层
   1.2. 合约开发
   1.3. 应用层


1. 迅雷链智能合约应用开发

迅雷链不仅支持基于EVM的solidity合约,还支持基于WASM的C/C++实现的合约。

从合约应用开发的角度看,在迅雷链上实现合约的过程与以太坊上通过Solidity实现合约的过程一致,主要区别在应用对接流程,即合约调用和查询的流程的区别。

1.1. 迅雷链服务层

为实现区块链业务的商用及避免传统区块链的一些缺点,迅雷链设计了服务层来增强系统的健壮性和安全性,主要提供包括网关、路由、第三方服务验证、合约审核、回调服务、事件通知等功能。

下面是服务层功能的一些关键点,也是与传统区块链不同的地方:
1) 通过服务层部署智能合约都需经过审核,以确保合约应用合规和安全;
2) 服务层会对所有合约调用交易做第三方服务验证,以确认合约交易是通过第三方服务业务签名发送过来的;
3) 智能合约的调用,需由第三方应用调用迅雷链助手App或迅雷链服务端SDK实现;
4) 合约执行结束后,服务层会回调通知第三方业务后台;

通过服务层的这些功能,可以确保合约调用的服务来源安全性,从而保证合约执行的安全和数据有效性,避免了因无限制合约调用导致的攻击和因为虚拟机和solidity语言不成熟导致的安全问题。

如果合约应用出现不可控的安全漏洞或升级需求,第三方可申请下架合约从而限制合约的调用,但已经上链的合约数据将一直有效。

另外智能合约应用的运行过程中,可以通过触发事件来通知外部监听程序,外部程序收到对应的事件通知和参数后,可以做出相应的操作。

合约事件订阅系统是迅雷链为开发者提供的订阅合约事件和查询合约事件的外围辅助系统,通过对相应合约的订阅,实现事件回调通知。

1.2. 合约开发

因为底层都是基于EVM的,所以使用solidity合约的开发与上一篇文章中的开发流程基本一致。不过有一些特殊的合约编码限制:
1) 为保证合约功能的合规和安全,合约将由官方执行审核后由官方账户部署。所以开发者在编写构造函数时不能使用msg.sender,如有需要可通过参数传入。
2) 基于数据有效性和合约账户安全考虑,限制使用selfdestruct/suicide功能。

1.3. 应用层

一个去中心化应用的实现,并非所有的逻辑和数据都有必要通过合约记录到区块链上。所以根据常规的合约应用开发,我们总结出了一些通用的应用结构,实际情况由业务需求决定:

通用的应用结构.png


外部应用与迅雷链交互的模式按照角色划分主要分为下面两种,这也是与其他区块链上合约应用实现的主要区别:
1) 面向C端用户的应用实现

面向C端用户的应用实现.jpg


2) 面向B端管理员的管理后台应用实现  

面向B端管理员的管理后台应用实现.jpg


C端用户使用第三方应用调用合约时,分为两种模式:如果是移动端应用,可以直接唤醒迅雷链助手App并传入要执行的合约交易,用户选择执行的账户并输入密码,迅雷链助手App发送交易到迅雷链;如果是PC网页,第三方应用页面可以根据用户请求生成一个二维码,用户使用迅雷链助手App扫码执行合约交易。

B端管理员用户需要设置合约的一些状态时,可以通过第三方管理后台,调用服务端SDK发送合约交易执行。

调用过程及参数的详细示例如下: 使用上一篇SimpleStorage.sol合约的set方法,获取set(100)编码后的data为'0x60fe47b10000000000000000000000000000000000000000000000000000000000000064'。

唤醒方式根据迅雷链开放平台合约调用文档,可以拼出参数:

参数.png


按照key=value&拼接上述参数并做base64编码后得 tx-data=ZGVzYz10ZXN0JmNhbGxiYWNrPXd3dy50ZXN0LmNvbSZ0bz0weGI5MTZhN2IzYWI3ZjM3MjJkZmY4NThkMzM2MGUwN2QwYjZkOTViMTYmdmFsdWU9MCZwcmVwYXlfaWQ9MjAxOTAxMDkxMDM5NTcwMTAwMTMwMTAxMzI0MjkxODQzMjc2NDAmc2VydmljZV9pZD0xMDAxMyZkYXRhPTB4NjBmZTQ3YjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY0Jmdhc19saW1pdD0xMDAwMDAwJnR4X3R5cGU9Y29udHJhY3Qmc2lnbj00MjQ5NDkzMzJhMDBjZWYzZGNmNjM3NDJhM2NlMTRlOQ==

第三方客户端应用可以使用链接方式唤醒迅雷链助手App,实现出来的代码和效果:vchouyi://payment/?tx-data=ZGVzYz10ZXN0JmNhbGxiYWNrPXd3dy50ZXN0LmNvbSZ0bz0weGI5MTZhN2IzYWI3ZjM3MjJkZmY4NThkMzM2MGUwN2QwYjZkOTViMTYmdmFsdWU9MCZwcmVwYXlfaWQ9MjAxOTAxMDkxMDM5NTcwMTAwMTMwMTAxMzI0MjkxODQzMjc2NDAmc2VydmljZV9pZD0xMDAxMyZkYXRhPTB4NjBmZTQ3YjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY0Jmdhc19saW1pdD0xMDAwMDAwJnR4X3R5cGU9Y29udHJhY3Qmc2lnbj00MjQ5NDkzMzJhMDBjZWYzZGNmNjM3NDJhM2NlMTRlOQ==&resource=d2t5&x-source=wky&callback=wky://x-callback-url/

迅雷链助手App.jpg


迅雷链大学

写了 33 篇文章,拥有财富 234,被 31 人关注

反对反对
回复

使用道具

B Color Link Quote Code Smilies

成为第一个吐槽的人

Archiver|手机版|小黑屋|迅雷链开发者社区
Copyright©2018 onethingcloud.com All Rights Reserved 深圳市网心科技有限公司版权所有 粤ICP备14008884号-23
返回顶部