MetaID 建站教程 之 如何打造MetaProtocols.com

MetaProtocols.com是一个记录metaid相关协议的网站。该网站能方便用户搜索,查看现有协议。也可在此网站上发布新协议和编辑自己的协议。

1.MetaProtocols.com

MetaProtocols.com开发目标

  • 展示基于MetaID的开发模式是可以很快开发一个应用

  • 打造一个MetaID+ShowMeta/MetaSV如何实现Serverless网站(只是第一版,长远来说还是需要简单的后台来进行管理,比如黑名单,敏感词过滤等)

  • 开发者能方便地在此网站上浏览发布协议

预期开发时间

在以下条件满足的前提下,开发时间应该可以在48小时内完成

  • 中间件能按需求快速返回数据;

  • 设计稿完成。

  • showmoney第三方登录/注册相对比较完善

  • 相关协议制定好。

2. 登录/注册

登录/注册采用ShowMoney的第三方授权的登录和注册功能;

在这里插入图片描述

用户登录完毕后,方可使用以下网站主要功能:

  • 发布协议
  • 编辑协议
  • 为协议点赞
  • 评论协议

3. 发表协议

用户进入发布协议页面后,可进行协议发布。协议发布采用9.1 发表meta协议协议。用户界面如下:

在这里插入图片描述

用户填完表单后,采用metaProtocols协议来构建这样的一个json对象

metaProtocolData:

{
"protocolTitle":表单上协议名称,
"protocolAuthors":"这是记录协议作者",
"protocolIdentifier":表单上的协议标识,
"protocolHASHID":这是12位哈希值,采用BRFCID生成方式,根据protocolTitle、protocolAuthors、版本号来生成,
"protocolType":从协议类型选择选择,
"protocolEncoding":从协议编码框选择,
"protocolContent":表单上的协议内容,
"protocolDescription":表单上的协议说明,
"protocolImages":暂为空
}

然后构建如下的交易:

OP_0 OP_RETURN meta <address> <MetaProtocols TxID> MetaID <address> <metaProtocolData> 0 <表单上的版本号> applicaiton/json UTF-8 

如果用户在 Protocols节点下还没有MetaProtocols节点,则需先新建节点MetaProtocols:

OP_0 OP_RETURN meta <address> <Protocols TxID> MetaID MetaProtocols <protocolHASHID> 0 1 NULL NULL 

提交交易后即发表成功。

4. 首页协议列表

向数据服务商进行以下类似的查询

查询
"find":{
"parentNode":"MetaProtocols",
"isValid":true, //是否可用的
"isNew":true //最新版本
}

用户获取全网metaid用户所提交的metaprotocol协议。

然后能从数据服务商获取一组协议数组。数组元素内应该最少包含下信息:

协议的data部分,应为完整json格式数据(参见9.1 发表协议协议)

协议版本号,协议创建时间

metaid,用户名字,用户头像,txid等

如图:
在这里插入图片描述

5. 个人中心

点击用户头像或自己头像,均可进入个人中心页面。

个人中心主要时展示用户自己发布的协议和一些简单的信息。最终展示效果如下:

在这里插入图片描述

需注意的是,如果进入的是自己的个人中心页面,则协议中的”新增版本“按钮对自己可用,否则不显示该按钮。

获取指定用户发布的协议很简单,向数据服务商请求类似的查询即可:

查询
"find":{
"parentNode":"MetaProtocols",
"metaID":"{用户的metaID}"
"isValid":true, //是否可用的
"isNew":true //最新版本
}

获得数据后如首页那样异步获取点赞数即可处理数据,渲染页面即可。

总收入数的获取

总收入数为用户所有发表协议的总获赞收入,可向数据服务商请求类似的查询:

查询
"find":{
"parentNode":"ShowLike",
"data.payTo":"{用户的metaID}"
"data.payTO":{"$in":[所有的out地址]} //payTo地址和真实打款地址一致
"data.Pay":{"$in":[所有的out地址的输出金额]}//pay金额和打款金额一致
”data.toTx“:{"$in":[所有MetaProtocols下的本人交易]} //只统计协议部分的点赞,不统计其他应用的点赞。
"isValid":true, //是否可用的
"isNew":true //最新版本
}

总协议数

获取自己的总协议数,可向数据服务商请求类似的查询:

查询
"find":{
"parentNode":"MetaProtocols",
"MetaID":"{用户的metaID}"
"isValid":true, //是否可用的
"isNew":true //最新版本
}

获取返回结果的长度即可。

新增版本/编辑界面

当用户进入自己的个人中心页面时,应能在每个协议中看到”新增版本“按钮。用户点击后,即进入编辑协议界面。编辑界面和新增协议一致,只是表单内容将从该协议的最新版本复制过去。并且版本号自动加一。并启动metanet的修改模式新增协议:

  • 不检测相同的protocolIndentifier
  • 更新相关的version和协议内容
  • 构建op_return后的address和上一个最新的协议address相同。

6. 协议详情

用户点击协议,即可根据协议tx进入协议详情页。

获取协议详情很简单,可向服务商直接查询tx,如:

"find":{
"tx":"{需查询协议tx}"
}

然后根据反馈的结果,按指定协议,即9.1 发表协议协议的协议格式解释data内容,即可获得相关数据,渲染成如下页面。

在这里插入图片描述

7. 点赞处理

点赞是采用9.2 简单点赞协议,用户点击点赞后,构建一个SimpleLike协议,参考如下:

{
"isLike":"1",
"toTx":协议的txID,
"pay":5000
”payTo":协议创建者rootAddress
}

用户确认后,构建类似如下的交易

OP_0 OP_RETURN meta <address> <parennt TxID> MetaID <address> {"isLike":"1","toTx":协议的txID,"pay":5000”payTo":协议创建者rootAddress} 0 1 application/json UTF-8

其中一个out的地址和金额应该和payTo和pay中的值一致

本应用中,点赞规则为:

  • payTo:为协议创建者metaID;
  • pay:最少一次点赞不少于5000聪

8. 历史版本查看

每个协议详情页面下均有一个历史版本查看按钮,点击后,用户可以查看该协议的所有历史版本。参考设计图如下:

在这里插入图片描述

可向数据服务获取类似如的下查询

查询
"find":{
"parentNode":"MetaProtocols",
"data.protocolIdentifier":"{协议的标识ID}",
"metaID":"{用户的metaID}"
"isValid":true, //是否可用的
}

关键点是将是获取当前版本的过滤条件去掉即可查看所有历史版本。

9. 相关协议

9.1 发表协议协议

协议名称:metaprotocols发布协议

协议作者:MetaID Team

协议标识:MetaProtocols

协议格式和编码:applicaition/json, UTF-8

协议内容

{
"protocolTitle":"{这是协议标题,如一个xx协议}",
"protocolAuthors":"{这是记录协议作者}",
"protocolIdentifier":"{这是协议标识,如xxProtocol}",
"protocolHASHID":"{这是12位哈希值,和protocolIdentifier一起构成唯一协议名}",
"protocolType":"{协议格式,例如applicaiton/json代表json格式}",
"protocolEncoding":"{协议编码,例如UTF-8}",
"protocolContent":"{协议内容实例,一般放示例性例子内容,例如本段文字,}",
"ProtocolContentType":{协议内容的文本格式",如text/plain"},
"protocolDescription":"{协议的详细说明,例如下面这段文字}",
"ProtocolDescriptionType":{协议描述的文本格式,如"text/plain"},
"protocolImages":['采用B协议的图片tx地址','存放和协议相关的说明性图片']
}

协议描述:

protocolEncoding,为协议编码,参考https://www.iana.org/assignments/character-sets/character-sets.xhtml
ProtocolContentType和ProtocolDescriptionType可接受的格式:
text/plain,text/html,text

9.2 支付点赞协议

协议名称:简单点赞协议

协议标识:PayLike

协议格式和编码:applicaition/json, UTF-8

协议内容:

{
"isLike":"{1为点赞,-1为反对,其他不处理}",
"toTx":"{点赞的交易ID}",
"pay":"{向payTo指定用户支付的金额,默认为2000聪}"
”payTo":"{支付对象的地址}"
}

9.3 支付评论协议

**中文协议名称:**支付评论协议

协议标识: PayComment

协议格式: Applicaiton/json

协议实例:

{
	"createTime":"{创建时间}",
	"content":"{内容}",
	"contentType":"内容格式,默认text/plain",
	"commentTo":"评论是针对某tx或URL",
	"pay":"{向payTo指定用户支付的金额,默认为5000聪}"
	"payTo":"{支付对象的metaid}"
}

猜你喜欢

转载自blog.csdn.net/percyWangcn/article/details/107206384