最近公司因為調(diào)整原因,個人暫時沒有開發(fā)工作,所以想把現(xiàn)有掌握的使用PHP開發(fā)以太坊相關(guān)代碼整理一下。
起因是以太坊相關(guān)代碼中,PHP算是比較少的,而實際項目中,一些功能的實現(xiàn)都是使用python或nodejs相關(guān)類庫,然后通過命令行調(diào)用與PHP交互。由于項目又使用docker的緣故,產(chǎn)生了一系列諸如不知道怎么調(diào)用宿主機(jī)命令行之類的問題,最后包裝成http服務(wù)進(jìn)行交互,感覺甚是麻煩。
代碼在github上開源,地址為https://github.com/NanQi/ethereum-php
計劃代碼完善后,發(fā)布成composer包,同時會支持laravel。
使用PHP做以太坊相關(guān)開發(fā),有一個類庫很全面,https://github.com/sc0Vu/web3.php
但是web3.php需要搭建本地以太坊節(jié)點,我們項目過程中因為本地節(jié)點遇到的問題大致有:
- 安全問題,ETH被盜
- 使用go語言客戶端,需要維護(hù)所有的keystore
- web3.php沒有找到超時時間的配置
- 本地節(jié)點服務(wù)器重啟后長時間同步區(qū)塊
- 用戶使用自己的錢包必須上傳keysotre
其實最大的問題還是一套代碼跑不起來,需要依賴本地節(jié)點服務(wù)。
此類庫不依賴本地節(jié)點,使用etherscan和infura代理,主要適用于以太坊代幣開發(fā),同時會增加創(chuàng)建合約功能,大致會完成以下幾個功能:
- 使用私鑰創(chuàng)建系統(tǒng)默認(rèn)錢包(用來做充幣地址)
- 使用助記詞創(chuàng)建錢包(用以錢包項目)
- 使用助記詞還原錢包
- 調(diào)用以太坊常用方法(查詢交易信息,是否成功,查詢以太坊余額等)
- 調(diào)用合約方法(查詢余額等)
- 執(zhí)行事務(wù)(給充幣地址轉(zhuǎn)以太坊手續(xù)費收回代幣,轉(zhuǎn)代幣)
如果從項目層面來講,主要可以完成以下項目需求:
- 充幣
- 提幣
使用公共錢包的流程:
- 充幣地址充幣
充幣地址充幣需要每個用戶注冊或使用時創(chuàng)建一個新的錢包,用戶操作APP或網(wǎng)站時查詢該錢包中是否有指定代幣,有代幣則將代幣轉(zhuǎn)到公共錢包中完成充幣操作。因為因為充幣地址對應(yīng)的錢包剛開始沒有以太坊,所以還需要從公共錢包中轉(zhuǎn)部分手續(xù)費。 - 綁定錢包充幣
既然是綁定錢包充幣,自然先要完成綁定錢包功能。類庫支持使用助記詞創(chuàng)建和恢復(fù)錢包,支持密碼和自定義BIP44的PATH,用戶完成綁定錢包,然后從綁定錢包直接充代幣到公共錢包完成充幣操作。 - 提幣
支持提幣到綁定錢包和其他錢包,系統(tǒng)操作公共錢包完成提幣操作。
如果使用智能合約做充提幣操作,因為個人沒有相關(guān)項目經(jīng)驗,不知道需求如何定,所以這里無法給出相關(guān)流程。
需求說明到此結(jié)束,歡迎留言交流討論,個人QQ:二七五零96967