Skip to content

Latest commit

 

History

History
117 lines (81 loc) · 5.76 KB

BestPractices_ZH.md

File metadata and controls

117 lines (81 loc) · 5.76 KB

DOB 协议最佳实践

1. Cluster 设计

1.1 Pattern设计

  • 根据需求,选择合适的DOB协议(DOB0/DOB1)
  • Pattern 应保持简单
  • 使用有意义的特征名称(traitName),清晰描述属性
  • 仔细设计 DNA 的生成规则(DNA的长度,每一位是什么含义)
  • 详细记录 Pattern 的结构,便于未来参考
  • 根据具体需求使用适当的patternType(options/range/rawNumber/rawString)
  • 处理特征生成中的边缘情况

1.2 解码器选择

  • 根据渲染需求选择合适的解码器
  • 优先使用标准解码器(DOB0/DOB1),以提高兼容性
  • 若标准解码器(DOB0/DOB1)无法实现渲染需求,可自行开发并部署自定义解码器,并将解码器的部署信息提交至https://github.com/sporeprotocol/dob-decoder-standalone-server,以便decoder server 识别
  • 测试解码器在不同平台(JoyID、Omiga 等)上的兼容性

1.3 内容存储

  • 对于媒体资源(如图片等),优先使用 BTCFS 而非普通链接,以增强去中心化程度
  • 使用 IPFS 时,确保内容已正确固定(pinned)并备份
  • BTCFS 需考虑内容大小限制及 Gas 成本
  • 根据需求选择合适的内容格式(PNG/SVG)

2. MVP验证

这一阶段是快速验证 Cluster 设计的合理性,以及 DOB 渲染是否符合预期,兼容性是否良好。我们建议在这个阶段不断地优化和调整 Cluster 的参数,直到渲染效果满意为止。

2.1 媒体资源

  • 可先用普通链接测渲染效果
  • 渲染效果验证通过后,媒体资源定稿时,再将其上链 在可行性验证阶段,媒体资源可能随时需要根据测试情况来调整,所以无需将媒体资源上链,可考虑使用普通链接,待渲染效果验证通过后,媒体资源定稿时,再将其上链。在使用普通链接时,需要确保图片所在的服务器正确地支持 CORS,以便图片正常显示。

2.2 创建 Cluster 并铸造 DOB

在 dob-cookbook 里的示例中,找到一个与你的需求相近的示例代码,将代码复制并粘贴到 CKB 在线编辑器(CCC Playground),修改相应的参数,然后运行。

  • 确保 CCC Playground 左下角的运行环境是Testnet(测试网络)
  • 打开 CCC Playground 右边的 Console,查看输出结果。
  • 依次点击 Console 中输出的链接,查看交易详情,观察渲染效果。
  • 也可以在 https://dob-render.vercel.app/ 上查看 DOB 的渲染效果,甚至可以通过编辑 dob decode response 的 json,来微调 DOB 的参数,以调整到预期的渲染效果,待渲染效果符合预期,则将参数同步更新到 cluster 的pattern 配置项中。
  • 确保你的 DOB 渲染效果符合预期,且兼容性良好,再进行下一步。

3. 集成与测试

一旦完成 MVP 的验证,便可以开始进行工程化集成了。在这个过程中,需详细处理下列问题:

3.1 DNA 生成和验证

  • 精心设计 DNA 的生成规则
  • 编写 DNA 的验证单元测试,以确保 DNA 中相应字段的分布符合预期

3.2 创建 Cluster

  • Cluster Description 应包含项目介绍,以便于用户了解项目背景
  • 验证 Traits 生成和分布的正确性
  • Traits 的边缘情况的处理

3.3 DOB 铸造

  • 生产环境用户如何 mint DOB?测试环境应严格按生产环境的方式进行
  • 注意生产环境中潜在的并发问题,确保并发 mint 时,DNA、DOB 的属性分布符合预期(而非相同)
  • 理想的情况是用户支付费用的交易上链后,便给用户 mint DOB
  • 也可以由后端预先 mint DOB,然后定时批量地分发给用户,但由于不具有实时性,用户体验较差
  • 如果支持用户使用多币种来支付,则需额外的兑换服务

3.4 DOB 渲染

  • 在不同平台上测试渲染效果
  • 优化图像质量和大小
  • 所有媒体资源,于本阶段定稿

3.5 测试

  • 完成基本的 UI 测试
  • 完成基本的功能测试
  • 完成必要的非功能测试

4. 准生产环境

在完成测试环境的验证后,应用正式上线前,需额外提供一个准生产环境,确保结果符合预期之后,再向用户开放生产环境。

4.1 媒体资源上链

4.2 主网上创建测试用的 Cluster

  • 创建测试用的 Cluster,确保 Cluster 中的媒体资源能够在主网上正常渲染
  • 为了避免误导用户,建议该 Cluster 的名字要特殊化,比如前面加上 ⚠️ 标志,并避免与项目名称一致
  • 其它参数尽量与最终生产版本保持一致,以便测试渲染结果

4.3 应用服务部署

  • 将应用部署到主网,但不开放给普通用户访问,仅供内部测试使用
  • 注意应用里的环境变量,确保相应的配置均已正确,避免在测试环境使用到主网的配置、主网上用到测试环境的配置
  • 验证连接钱包,查看连接后的地址是否是主网的钱包地址
  • 验证其他功能,确保所有的交易均运行在主网

若有条件,建议准备一份上线文档,供相关人员查阅和校对。

5. 正式上线

  • 建立必要的应急预案文档
  • 尽量选择在周中(周二-周四)进行上线
  • 观察平台报错日志,并及时处理
  • 提供定时的服务健康性检查,在服务异常时下发 push 通知给相关人员
  • 建立必要的反馈渠道
  • 积极响应和解决用户反馈的问题
  • 若遇紧急事件,应及时采取措施,并第一时间告知用户