在学习的过程中发现,不少示例代码已经比较陈旧了,现在使用起来会遇到各种问题。在评论区中,也发现有不少小伙伴遇到了类似的问题,于是为了方便自己学习,和帮助其他人;决定写一个基于 ts 的副本,相关依赖都使用最新版本来实现。大家可以根据 commit
记录来阅读,我会严格遵循文章的进度来提交代码。欢迎大家 fork、issues。
# 安装依赖
yarn
# 编译
yarn compile
# 部署合约
yarn deploy
# 测试
yarn test
# 生成测试数据
yarn sample
# 运行本地客户端
yarn dev
新建 scripts/config.ts
文件,写入与自己相关的信息
export const memonic = "你的助记词";
export const rinkebyUrl = "要部署的 rinkeby 网络地址";
文章中用到的东西,在重制版里基本都是用的最新的。但是研发到后期收尾阶段,将 Mocha
改成了 jest
,因为前者在处理报错的时候,它的提示不够智能。查阅相关材料了解到,可以配合其它包来解决这个问题。但是这方面 jest
的支持就做的比较好。于是采用了 jest
作为单元测试的基础库。
原文章中涉及到的功能有很多可以完善的点,直到重制版编写完成,依然有细节可以继续完善,具体的功能完善如下:
- 钱包在切换账户时,会实时的同步到项目当中,在确保账户正确的情况下,不影响业务逻辑
- 创建项目、投资和项目支出这三个功能,都是异步的,支持同时创建、投资和支出多个项目
- 状态通知
- 项目的创建、投资和支出,都有对应的通知,包括报错处理
- 角色完善
- 项目方创建的项目,可以自行投资,但项目支出和资金画展只能由项目方来发起
- 投资人除了投资项目,项目的投票功能也只对投资人开放
具体到更细节的,比如投资时的表单限制、资金支出的表单限制也有。但直到最后依然还是有细节工作可以完善的,但是我没再进行下去了,因为这已经完全是前端的范畴了。这个过程最重要的是了解合约开发、了解区块链。这个过程中我发现,写智能合约的 Solidity 语言并不那么智能,很多时候在做很简单的处理时,它经常让我很难受。但我了解到了这个流程,并且对我目前的工作有了一定的帮助,那就值得了。