本文档为协会内部的Dapp开发指南,遵循本文档开发的Dapp可完美接入协会钱包ZJUBCA.WALLET,同时也兼容主流钱包(如Scatter,MEET.ONE等)。
在开发协会内部Dapp或内外通用的Dapp时,请务必遵循本开发指南。
由于协会钱包主要基于EOS麒麟测试网(kylin testnet)。Dapp应优先适配kylin测试网。
- 所有Dapp均以H5的形态接入协会钱包,因此Dapp应优先适配移动端。为了使Dapp更通用,我们推荐使用响应式页面。
- 所有操作应是简洁、明确的,特别是需要签名授权的操作,在设计和流程上须简洁明了。
- 页面的所有Alert、Confirm等提示交互信息,不能用浏览器原生的,而必须采用UI库提供的组件。
为了统一UI风格与减轻技术选型的成本,我们推荐以下UI框架:
- ant-design - 蚂蚁金服著名前端框架,适合企业级中后台应用
- material-ui - 谷歌出品的设计语言
- element-ui - 饿了么出品,适合企业级中后台应用
目前所有的Dapp均采用Scatter提供的SDK与区块链交互官方文档。协会钱包实现了Scatter几乎所有的API接口。不同于Scatter的socket通信方案,协会钱包与Dapp的交互采用iframe间消息通信的方案实现(受限于ionic技术本身),但对应用层来说开发体验一致。
为了减轻Dapp开发者的负担,做到code once, run everywhere,我们专门对主流桌面钱包Scatter的SDK进行了二次开发。
IMPORTANT!!!! 请Dapp开发者务必使用zjubca-scatter-js作为Dapp与区块链交互的SDK。 如此可实现兼容协会钱包与市面上所有实现了Scatter接口的主流钱包。
对于eos.js的版本选择,我们建议使用最新的v20.0.0。
考虑到Dapp的复杂度及开发周期,为了统一协会内技术栈,降低协会开发者开发成本,我们优先推荐vue.js。
您也可选用下列技术框架:
- Dapp内涉及发送交易的操作,均会拉起钱包原生组件对交易进行签名,再交由Dapp端发送至区块链节点,因此Dapp端须自行处理response。
- Dapp所用的网络节点与钱包互相隔离,互不影响。
- 切忌用自己的公网私钥作为测试用私钥!!!(也不要用别人的)
请务必使用Scatter桌面钱包进行开发调试!!!!!!
请忘了solidity,C/C++ 值得你拥有。
为了更好的开发体验,我们推荐使用js4eos进行合约项目初始化与自动化测试。你也可以自行定义项目结构与开发范式。非常欢迎在开发体验上贡献实践经验。
- 由于测试网token可免费获得,出于对用户体验的考虑,我们建议合约中涉及的所有RAM开销均由合约开发者自行承担。
- 开发者应合理设计合约代码以防止额外的资源开销。
常见的合约攻击手段须避开。参考智能合约攻击方式汇总
为了规范Dapp部署流程,降低开发和硬件成本,我们建议使用Github page进行部署。
- 在项目中安装gh-pages
- 在
package.json
的scripts
字段中增加"predeploy: npm run build"
的命令(假如本地编译命令为npm run build
) - 在
package.json
的scripts
字段中增加"deploy:gh-pages -d <your build dir>"
- 之后每次部署只需运行
npm run deploy
即可。 - 前往仓库的setting下配置github page,source branch选择
gh-pages
。
注:当配置了自定义域名时,会在gh-pages
下生成CNAME文件。但由于每次部署是强制push,会导致CNAME丢失,因此建议将CNAME文件放至项目目录,每次部署时将CNAME自动拷贝到<your build dir>
文件下