Scry.info技术分享——ScryProtocol简介

Scry.info技术分享——ScryProtocol简介

ScryProtocol与Contract相关协议模型基本对应. 相关关系如下图:

Scry.info技术分享——ScryProtocol简介

scry protocol

Protocol从ScryProDataFactory中获取与Contract定义的data类似的一个数据结构对象,使使用ScryInfo对eth进行相关操作,同时使用ScryDB进行相关中间状态的存储.

Scry.info技术分享——ScryProtocol简介

scry protocol

ProtocolBase: Protocol的基础类,定义了对白皮书中提到的相关模型的操作(图中并未列出全部),并且引用到了ScryInfo类.其中几个重要的方法:

vote()

: 数据投票. 这个是数据被协议在eth上create出来之后,需要各方对该数据进行的投票,也就是白皮书中提到的公证环节.

buyAnswer(): 购买答案. 在数据被公证完毕后,就可以对数据进行购买,不会重复购买.

queryAnswer(): 查询答案. 查询答案前必须先进行购买.

queryAnswer和buyAnswer共同实现了白皮书中对于查询的相关操作.

SupplyProtocol: 主动数据供应协议的具体相关操作,它负责实现ProtocolBase定义的主动数据供应()方法. 在实现上它分为了手动和自动. 手动表示用户得在相关操作被eth确认(mined)之后,都要自己去进行下一步的操作,这个及其繁琐,体验很不良好. 所以我们实现了自动的相关操作,目的是减少用户不必要的操作,优化体验. 从图中可以看到自动相关的操作实际上是通过https访问的ScryServer来实现的.(ScryServer是一个免费的开源商业项目,是作为ScryInfo系统的补充存在,目的是简化用户操作,提升用户体验. 后续会推出相关详细介绍文章)

DelegateSupplyProtocol: 委托数据供应协议相关操作.

ReferendumProtocol: 公投协议相关操作.

ReputableSupplyProtocol:信誉数据供应协议相关操作. 这个协议没有在白皮书中提到,是后续扩展出来的一个,这个协议的主要不同在于,它没有投票阶段,依靠的是数据供应者的信誉.

ScryProDataFactory: 一个工厂类,外层调用主要用到此类的Create方法,返回的是ScryProDataBase类型的对象. 它负责返回某个ScryProDataBase的子类对象.

ScryProDataBase: 协议用到的数据结构基础类.

ScryProBoolData: 协议用到的Bool类型的数据结构,是ScryProDataBase的一个子类实现. (还有其它一些子类的实现,没有在图中列出)

通过上述内容,我们就大致了解到了Protocol的基本结构和功能.


分享到:


相關文章: