web3j – 區塊鏈開發你需要了解的都在這裡了

最近在基於 web3j 做一款 Android 區塊鏈錢包 App,可以創建、導入錢包,可以查詢餘額,交易,交易記錄以及交易詳情查詢等。在開發過程中走了不少彎路,特寫此文以記之,願後來之人少走彎路,少加班,騰出時間,多陪陪孩子老婆,如此,也不枉我花費時間寫此文了。

首先,區塊鏈研發和普通的 APP 研發不一樣,下面我羅列了有那些差別,另外是一些資源。

區塊鏈的運行機制

我覺得區塊鏈的基礎是分佈式存儲,一臺臺礦機組成了強大的分佈式系統,而 web3j 以及 web3.js 分別是以太坊的 java(包括android)、js 實現,所以如果你需要開發 區塊鏈錢包 那麼你應該先了解 web3j 或者 web3.js

與傳統 APP 的開發區別

假設你需要開發一款傳統的錢包 APP ,比如類似支付寶或者微信支付,你除了安全之外就是和自己的服務端交互,和服務端交互無一例外是基於 http接口了,但是開發區塊鏈錢包就不一樣了,你可以沒有服務器,沒有 api ,直接使用相關 sdk 即可,那麼這個 sdk 本身將是一個瓶頸啦,說的誇張點,起初 android 開發是基於 java 的,只是用了 android sdk 而已,但是 android 開發與 java 服務端 開發差距可不小,好在 web3j 的 api 並不那麼複雜,只是心裡要清楚可能不需要服務端,完全由 sdk 來做,當然,有個服務端或許更好吧,統一點,只是這樣子是否合理就不好說了,但如果我全權負責開發一個區塊鏈錢包app,那麼我會開發服務端,然後開放 api 接口 給各個客戶端調用,減少客戶端的開發成本,同時也避免了一些未知的bug,比如 android 與 ios 實現不一樣,不能互通或者其他,另外,測試也很簡單,僅做 api 測試就好了,即使有 bug 服務端修復併發版本即可,不影響客戶端吧,客戶端那可是需要用戶更新,這個成本高了去了。

我如何獲得以太坊測試幣

首先,如我所說,雖然你可能使用sdk,但是服務器還是需要的,或者說是節點吧,你還是需要連接到以太坊的呀,這你可以使用 infura.io ,通過它你可以連接到以太坊,不過最好的方式還是你們公司自己搭建一個,一方面速度有保障,另一方面更可控吧,前期你可以使用它,它有測試網絡和正式網絡,測試網絡比如 kovan.infura.io ,在測試網絡你就可以自己領幣了,然後轉賬哈,領幣可以去這兩個網址:

1、https://faucet.kovan.network 需要用 github 賬號登錄,每天一次,到賬快。

2、https://www.rinkeby.io/#faucet 需要在你的 google+ 或者 Twitter 或者 facebook 發佈一條公開的信息,內容是你的錢包地址,然後把這條信息的地址複製進去,最後點擊 Give Me Ether 即可,比如你可以輸入:https://plus.google.com/u/0/100933232866249203363/posts/A8onGq9cJn4 這個 url 然後點擊 Give Me Ether 按鈕。

BIP32、BIP39、BIP44、助記詞

目前,我只知道 bip32、bip39以及bip44 一起共同定義了目前使用最廣泛的 HD Wallet,即目前使用的 區塊鏈錢包由這三個組成,比如 imToken(我兩位室友在這個公司,所以比較熟) 默認的路勁是:m/44’/60’/0’/0/0 ,而路勁這個概念在 bip44 裡提出,定義如下:m /purpose'/coin_type'/account'/change/address_index

這裡,purporse 固定是 44,代表使用 bip44,coin_type 表示不同幣種,比如 0 是 Bitcoin,60 是 Ethereum

bip39 提出了助記詞概念,助記詞可用於導入賬號,非常重要,助記詞目前是12個單詞,共有2048個單詞,你可以想象下這有多少種可能性,但是相同的助記詞不同的路勁導入後生成的錢包地址是不一樣的哦。

本文只是簡單的科普,如果需要開發一款區塊鏈錢包 APP,你可以關注我後期的博文,或者直接點擊右下角私聊我。目前,我實現的功能有:創建錢包,從助記詞、私鑰導入錢包,通過私鑰轉賬,轉賬進度,餘額查詢等,基本滿足一款簡單的 區塊鏈 錢包的需求了。


分享到:


相關文章: