加载中 ...

凝聚区块链上的共识,应用协议之门已开

2019-02-13 10:17 编辑:btc268.com 来源:区块链资讯

点击上方“ifwallet” 关注我们!

  过了一个春节,虽然熊市貌似还遥遥无期,然而,区块链上,却发生了许多我们没看到,却很有意义的事情。首先,我们来说说Bitcom,一个去中心化的全球应用协议登记规范。看完这个描述,我知道你心里在想什么:啥玩意?! 

  且容我慢慢道来,区块链,大家都说它是一个分布式的区块链账本。然而你知道吗?区块链就像一座山,横看成岭侧成峰,远近高低各不同。你看到的区块链是一个什么东西,取决于你用什么角度看它,譬如说:

  从货币角度,区块链是数字货币的分布式账本

  从密码学角度,基于公私钥天然就是一个用户系统

  从数据库角度,它是一个不可篡改的去中心化数据库

   从消息流通角度,它是一个可信消息队列

  从不同的角度看到区块链,你会发现它有不同的用途。而区块链,它居然能够集这些特性于一身。它就像生命一样,最开始有了一个可能,然后可以衍生出各种各样的可能,这些可能取决于你对它的运用。

  我们今天讨论的应用协议,就有机会用到第二个角度和第四个角度。 

  
所谓应用,或者狭义一点,去中心化应用DApp是什么? 
DApp就是一个部分数据依赖于区块链,而构建的应用程序。以ETH上最著名的CryptoKitty为例,它把一些猫的基因数据存储在链上,把一些猫的出生、流转也和链上的数据挂钩,区块链变为了一条纸带,纸带上记录了所有的状态变化日志和最终状态,而CryptoKitty则把这些链上数据下载下来,构建一个本地状态,然后渲染出各种各样的猫和各种页面,这样一个DApp就诞生了。基于ETH区块链,拟定了一个ERC721协议,然后使用智能合约实现该协议,并部署成一个合约地址,就能构建这样的一个DApp。

  再比如,诞生于比特币区块链上Memo,就是利用一些自定义的协议,基于比特币的区块链来存储所有的推文和操作信息,DApp不间断监听,从而构建出一个最终状态,呈现出来就是一个Twitter的模样。 

  
区块链上流淌着各种各样的数据,有些是Memo关心的,有些是其它应用的,而怎么读取这些数据,构建本地状态,则是根据协议来进行的。例如,Memo定义了以下的协议表示不同的动作,完整版本在 https://memo.cash/protocol。

  然而,这样定协议,很容易冲突,没有个规范,你家的协议叫6d02,我的也叫 6d02,我还不知道有别的6d02,搞混了这可咋办。这个问题得到了BitcoinCash开发人员的关注,于是维护了一个表格,登记各种应用的前缀,约定一个4个字节的前缀,大家开发应用之前,先看看这个表,挑选一个不和别人冲突的前缀,然后添加到该表中,等待它被开发人员更新。 

  在应用量非常小的情况下,这个表就够用了,然而在应用逐渐增加的情况下,如何做到更加简便地定义自己的协议,而无需任何第三方的许可。说实话,这个问题我想过。我想的办法是,将这个表格搬到一个开发者平台上,我们也这么做了,这样的做法的确是降低了大家声明协议的成本,因为只需要填一个表格即可。但是这么做还是局部共识,无法避免和外部的协议碰撞。

  故而,我们需要的是一套制定协议的协议。unwritter从另外一个角度找到了答案。他认为之前用表的办法高门槛、并且不是一个根本的解决办法,他提出了一个办法:使用比特币地址作为前缀。 

  
这个办法有一定的精妙之处,因为比特币地址天然独一无二,而且能够对应到作者的身份,地址空间也足够大,不用担心碰撞。唯一的一个问题就是,它太长了,比起4字节前缀要多占很多空间,这在空间非常珍贵的区块链上显得有点浪费。然而,那是以前,区块链要变得有用,必须要往里面塞很多数据,故而有BSV/BCH节点放开了OP_RETURN的220字节限制,从而允许存储KB级别的数据。这个改变,使得采用比特币地址前缀来标识协议前缀的方法变得合理。

  通过这样一个简单的协议,就可以把区块链当成一个操作系统来使用了,对它下达命令,对应的服务程序就会给出响应。这其实就是将区块链当成了一个服务架构,消息在这个队列里面流淌,消息内容是什么区块链并不关心,只有业务的关联方关心。有了这个消息队列,就可以实现跨越时间、跨越地域、跨越系统的计算,区块链就成为了一台超级计算机,由内核操作系统和各种各样的应用程序组成,可以存储信息,完成计算。

  协议格式: 
OP_RETURN [地址] [data1] [data2] [data3] ...

  然而,应用的协议是有了,然而还存在三个问题:

  声明协议的协议还没有,大家如何去发现应用的协议?我们需要一个协议浏览器

  协议只有一个前缀是不够的,协议的内部分层还不易管理,需要一个管理工具

  缺少一个结果返回的协议,计算得到的结果需要以一个约定的方式返回给调用方

  IF将开放开发者平台,允许开发者定义自己的协议簇,一个协议簇有一个前缀,一个协议簇下有若干个子协议,也可以有自己的定义,你可以视为是Linux中的子命令。有了这么一个工具,开发者就能够查看到各种各样的应用协议,通过对接这些协议接口,就能拿到需要的数据为自己所用。此外,你还可以轻松管理和发布自己的子协议,后续还可以通过另外一个声明协议直接在区块链上声明自己的协议,IF开发者平台检测到这一声明之后,将自动加入到平台中,供自己管理和他人查看。

  结合BitDB和BitSOCket等工具监听对应的协议,你就可以开始构建自己的应用程序了,例如,你要构建一个计算加法的功能:

  声明通过地址

  17yyXL4raLZFU95ixkRESa2ZBPSSYxSsS5 

  来调用该协议,调用方式为

  17yyXL4raLZFU95ixkRESa2ZBPSSYxSsS5 sum A B

  服务程序监听该协议,得到OP_RETURN的指令参数:sum A B,计算 A B 并将结果以约定的方式返回到区块链上,调用方通过监听返回来获得结果,具体的结果返回协议还在设计中,敬请期待。

  以上,就是全球应用协议规范的核心内容和延伸,希望说得足够简单明了。IF将会持续提供相应的工具,降低开发门槛,期待区块链上能够涌现出更多开应用,通过一个又一个的协议,凝聚更多的共识。

  「下载方式」

  

   iOS用户前往APP STOre 进行下载,

  点击以下链接可查看下载指南:

   iOS版本下载指南

  Android用户请扫描下方二维码进行下载:

  长按二维码关注

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:凝聚区块链上的共识,应用协议之门已开

原文地址:http://www.btc268.com/qkl/js/6749.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();