最近公司因为调整原因,个人暂时没有开发工作,所以想把现有掌握的使用PHP开发以太坊相关代码整理一下。
起因是以太坊相关代码中,PHP算是比较少的,而实际项目中,一些功能的实现都是使用python或nodejs相关类库,然后通过命令行调用与PHP交互。由于项目又使用docker的缘故,产生了一系列诸如不知道怎么调用宿主机命令行之类的问题,最后包装成http服务进行交互,感觉甚是麻烦。
代码在github上开源,地址为https://github.com/NanQi/ethereum-php
计划代码完善后,发布成composer包,同时会支持laravel。
使用PHP做以太坊相关开发,有一个类库很全面,https://github.com/sc0Vu/web3.php
但是web3.php需要搭建本地以太坊节点,我们项目过程中因为本地节点遇到的问题大致有:
- 安全问题,ETH被盗
- 使用go语言客户端,需要维护所有的keystore
- web3.php没有找到超时时间的配置
- 本地节点服务器重启后长时间同步区块
- 用户使用自己的钱包必须上传keysotre
其实最大的问题还是一套代码跑不起来,需要依赖本地节点服务。
此类库不依赖本地节点,使用etherscan和infura代理,主要适用于以太坊代币开发,同时会增加创建合约功能,大致会完成以下几个功能:
- 使用私钥创建系统默认钱包(用来做充币地址)
- 使用助记词创建钱包(用以钱包项目)
- 使用助记词还原钱包
- 调用以太坊常用方法(查询交易信息,是否成功,查询以太坊余额等)
- 调用合约方法(查询余额等)
- 执行事务(给充币地址转以太坊手续费收回代币,转代币)
如果从项目层面来讲,主要可以完成以下项目需求:
- 充币
- 提币
使用公共钱包的流程:
- 充币地址充币
充币地址充币需要每个用户注册或使用时创建一个新的钱包,用户操作APP或网站时查询该钱包中是否有指定代币,有代币则将代币转到公共钱包中完成充币操作。因为因为充币地址对应的钱包刚开始没有以太坊,所以还需要从公共钱包中转部分手续费。 - 绑定钱包充币
既然是绑定钱包充币,自然先要完成绑定钱包功能。类库支持使用助记词创建和恢复钱包,支持密码和自定义BIP44的PATH,用户完成绑定钱包,然后从绑定钱包直接充代币到公共钱包完成充币操作。 - 提币
支持提币到绑定钱包和其他钱包,系统操作公共钱包完成提币操作。
如果使用智能合约做充提币操作,因为个人没有相关项目经验,不知道需求如何定,所以这里无法给出相关流程。
需求说明到此结束,欢迎留言交流讨论,个人QQ:二七五零96967
网友评论