团队背景
为什么你是合适的人 / 团队?
雷兔 (Lay2) 是一个区块链产品研发团队,成员均有十年以上互联网产品研发经验以及两年以上的区块链研发经历。团队的区块链技术栈涉主要为闪电网络、状态通道等 layer 2 技术,产品设计注重实用性,在支付、DApp 方向设计研发了多款应用以及对应的框架。
项目缘由
为什么这个项目能对 Nervos 生态带来价值?
Nervos 还处于项目早期,无论对开发者还是用户而言,基础设施都还很不完善,这一现状给 Nervos 带来了生态的双边冷启动难题:如果没有优质开发者进行生态建设,就很难吸引到用户;但是没有足够规模用户又很难吸引到优质的开发者。更为严峻的是,一些早期的公链由于其先发优势和财富效应,已经聚集起了足够量级的双边生态,而这带来的网络效应进一步加剧了 Nervos 生态双边冷启动的难度。
幸运的是,CKB 的 Cell 模型和 RISC-V 虚拟机带来了前所未有的灵活性和扩展性,使得 Nervos 完全可以另辟蹊径。无需等待钱包以及 DApp 浏览器等设施走完开发、上线、积累应用和用户的漫长的过程,Nervos 可以通过直接「征用」其他区块链基础设施的方式,迅速接入大量用户。这样一来,Nervos 就能够越过生态冷启动困境,直接进入应用发展阶段。雷兔团队设计研发的 pw-sdk 就为 CKB 提供了这一能力。
与一般 sdk 不同的是,基于 pw-sdk 开发的 DApp (称为 pw-dapp) 可以在比特币、以太坊、EOS、Tron 等公链的钱包环境中直接运行。这里「直接」有两层含义:一方面,钱包运营方不需要进行任何针对性的开发,甚至不需要对 CKB 公链进行支持,即可运行 pw-dapp,如 MetaMask 钱包已经可以直接运行 pw-dapp;另一方面,对用户来说,现有的任何公链地址都是一个合法的 CKB 地址,无需进行 CKB 钱包的创建即可使用 pw-dapp,而且无论是操作体验还是资产安全性都能与其公链原生 DApp 保持一致。
对生态而言,pw-sdk 能够为 Nervos 带来大量成熟的基础设施及其附带的庞大用户基础,让 Nervos 生态建设从「基础设施建设->产品研发->用户积累->市场反馈」的单线程串行模式,升级为「基础设施建设」「产品研发」「市场反馈」的多线程并行模式,而且在很大程度上消除了「用户积累」的环节。可以预见,pw-sdk 将大大提升 Nervos 生态发展的速度,也能够给区块链世界展示出 CKB 作为新一代加密经济基础设施的的独特的能力与巨大的价值潜力。
技术规范与实现
你将如何成功地实施这个项目?
pw-sdk 包含:
- pw-lib: 密码学原语库
例如识别以太坊签名格式所需的 Keccak256 哈希算法库,ECDSA Secp256r1 (NIST P-256) 签名算法库等。
- pw-lock: 多链通用 lock script
pw-lock 能够验证比特币、以太坊、EOS 等公链钱包的签名,能够将这些公链的每一个地址(以公钥计算)都映射为一个合法 CKB 地址。
pw-lock 将使用 type id 的方式实现,方案稳定后会申请收录到短地址标准中,从而让其他公链钱包对应的 CKB 地址与默认的 CKB 地址在格式上完全一致。
- pw-core: 面向前端的 js sdk
使用 Typescript 编写的前端 sdk:pw-core,为开发者提供在所有 pw-lock 支持的公链钱包中直接运行 CKB DApp 的能力,并内置了与上述后端服务器的交互。
时间线 / 路线图
项目所需的时间是否符合常理?
需要约 10 个月来完成这些工作,目前已经完成了部分工作,随着项目推进,我们会不断放出阶段性成果,让社区都能够体验和参与进来。
Checkpoint 1:2020 年 4 月
pw-lib,包括:
- 持 Keccak-256 算法库
pw-lock,包括:
- 支持以太坊钱包签名
- 支持 EIP-712 签名标准
- 能够使用 Type ID 部署
pw-core,包括:
- API 接口设计
Checkpoint 2:2020 年 6 月
pw-lib,包括:
- 支持 Secp256r1 (ECC P-256)
pw-lock,包括:
- 支持 Web Authn
pw-core,包括:
- 实现基本的 API 接口,如签名、交易发送、手续费计算等
- 基础版文档和教程
- 基于 pw-sdk 的样例 DApp
Checkpoint 3:2020 年 8 月
- 所有 pw 组件增加对 BTC、EOS 等更多公链的支持
Checkpoint 4:2020 年 11 月
- 正式版 pw-lib
- 正式版 pw-lock
- 正式版 pw-core
- 正式版 p-wallet
- 完善的文档和示例
感谢 @stwith 在本文的翻译上提供的帮助,感谢 @xxuejie @ash @keith 提供的技术支持,感谢所有内测组的小伙伴们提供的建议和反馈。