近期我们PPk技术社区尝试实现了一个融合比原链和PPk开放协议的小应用DEMO——“我画你猜”比原区块链版。
可以通过下面两种方式访问: 1. 传统的网址: http://btmdemo.ppkpub.org/joy/ 2. 基于区块链的PPk ODIN标识网址: ppk:JOY/
类似DAT、IPFS等正在发展中的WEB3.0开放协议,目前大众使用的电脑和手机浏览器还不能原生支持访问。要访问“ppk:joy/”这样的ODIN标识网址,现在可以运行我们PPk开发的JAVA开源工具的代理服务,就能使用现有浏览器来访问PPK网络资源了,比如 http://btmdemo.ppkpub.org:8088/ 或 http://45.32.19.146:8088/ 就是我们运行的示例服务,在浏览器里打开该代理服务网址然后输入要访问的 PPk ODIN标识网址就可以看到了,如下图所示:
这个游戏示例本身很简单,用到比原智能合约的猜谜模板实现“装赏金进红包”和“猜谜解锁得红包”,采用比原的retired交易类型将对应谜面定义数据包括图片、猜谜合约ID等作为交易的附加信息一起存储到区块链上,通过调用比原节点API就能被查询和显示出来。
同时在游戏里内置了一个免费领取比原testnet测试币的水龙头,配合比原官方钱包可以深入体验比原链的功能特性。
通过实践收获,和在一些技术细节上得到了比原技术支持团队的详细支持,能体会理解到比原的资产定义UTXO模型是很轻量级的原生实现,相比以太坊通过账户和合约模型来定义资产,在执行效率和安全性上比原是有天然优势的。比原智能合约的定位是在比特币脚本语言和以太坊solidity中间,比Bitcoin脚本语言更为灵活,但相比以太坊solidity语言又面向资产场景做了特定的编码约束,在安全和开放灵活性上取了个折衷平衡,这个特性可以被有意在比原链上开发应用的朋友深入把握下,用到合适的业务场景会有事半功倍的效果。
我们PPk技术社区成员一起探讨后,认为比原的优势特性不是用于开发像以太坊那种偏较复杂业务逻辑的重量级应用,而是适合将比原作为一个封装好最核心的数字资产发行和交易逻辑的可信、高效的区块链平台,将具体的业务处理逻辑放在区块链外部来实现,只是将资产状态通过比原平台进行可信处理和存储,而不是都托管到区块链上来执行。就像我们这次做的这个猜谜应用的实现架构,将关键的游戏数据包括谜面定义、猜谜奖励的资产状态等都托管在比原区块链上,而游戏展现和交互UI还是传统的PHP+JS可以很方便快速实现的WEB网站,并通过PPk ODIN标识和PTTP协议将两部分有机地衔接在一起,支持随着技术发展来灵活演进,不影响业务对外接口的持续和稳定性。比如在后续比原的侧链方案发展完善后,上述依靠传统WEB平台的业务逻辑主体就可以切换到比原侧链来实现,而这个升级改变通过PPk开放协议的适配,对于外部用户是透明不受影响的,就像现在的某个网站服务从一个小机房转移到另一个大机房,网站后端也从PHP改成了JAVA,但对于访问者来说仍然是同一个域名不受影响。
这里探讨下结合区块链的DAPP应用和游戏相比传统的APP应用和游戏有什么本质的改变? 对此业界有很多观点,我们PPk社区认为至少有一点是很明显的,即相比传统APP和游戏的“数据黑盒”,DAPP应用和游戏改变成完全开放的“数据白盒”,而且依托区块链技术还是“对等、可信”的。这样同一份游戏记录数据,开放、可信、持续地托管到区块链上,可以被其它游戏应用所自主、可信、稳定地调用和整合,所谓“1+1>2”,自组织成更有生命力的应用生态。
以我们这次做的“我画你猜”小游戏DMEO来说,每一条谜面记录都开放、可信地存放在比原链上,拥有能保证跨链唯一性的ODIN标识,例如下图:
这是游戏界面中看到的一条猜谜记录的详细信息,上面的猜谜合约地址是比原链上得到的output_id用于通过比原钱包解锁,下面就是对应这条猜谜记录JSON源数据的ODIN标识( ppk:JOY/guessgame/bytom/ce7315bf71dd88305df8507fd6eb5ceeb1a7149681c2dbcc732ea319f5539320# ),可以被跨链跨平台应用所自主可信地采用,通过支持ODIN标识和PTTP协议的工具比如PPk浏览器就能获取到该ODIN标识对应谜面记录的JSON数据,如下图所示:
同时获取者能自主判断所拿到的源数据是否是可信的,这里面就用到了区块链技术,其实机制也很简单,就是把公钥可信地存储在区块链上,通过ODIN标识来获得验证数据块签名即可,具体实现方案可以访问 http://ppkpub.org/#odinproject 深入了解。
这里重点留意上图中的红色方块标注的文本内容,实际在这个游戏示例中,我们并不是简单地直接存猜谜合约的ID, 而是用到同样用ODIN标识定义的一个URI 即“ppk:BTM/contract/0e42b3e32591c28ef1575b62f1c50c3790b62569ac091cddcb1dee070101a46b” 。
这样我们猜谜应用的主体程序运行在比原链上,不仅可以使用比原链的猜谜合约和token,同时后续还可以进一步扩展,灵活支持跨链接入其他区块链如ETH,EOS等猜谜合约的ODIN标识地址和资产。将ETH,EOS等其它链上的合约也ODIN标识定义出相应的URI地址,然后在创建谜面时输入使用就可以了,就是将上述示例红框里的”ppk:BTM/contract/…”这样的地址换成”ppk:ETH/contract/…”等, 游戏应用相应调用PPk开放协议的SDK,统一按照PPk ODIN标识规范识别,并通过PTTP协议与ETH、EOS等区块链服务节点进行信息交互就可以了,类似现在采用HTTP协议就可以很方便、灵活访问不同的网站和内容服务。
在上述这个简单示例基础上,我们PPk技术社区正在比原链和更多区块链平台的各自特性,进一步构思和实现更多应用示例,体现PPk开放协议在WEB3.0生态中的独特“衔接”作用,欢迎继续关注。