1. 程式人生 > >區塊鏈錢包開發

區塊鏈錢包開發

匯新雲】為大家定期更新文章,【匯新雲】IT軟硬體專案商務平臺

開發錢包之前,我們需要有以下的預備知識。

第一,什麼是錢包,以及相關的分類。

本文站在開發者的角度,給讀者講解下怎麼樣和錢包進行互動,以及如何開發一個錢包。

我們怎麼樣理解錢包呢?簡單講它是連線區塊鏈的一個入口。目前比較成熟的公鏈,如比特幣、以太坊都有很多錢包可以選擇。一般錢包需要完全訪問你的使用者資產,也就是會要求你輸入私鑰。錢包的作惡成本極低,這也是筆者建議選擇開源錢包的原因之一。


題圖來自: © admin / Delphi White Paper Interpretation / 8855104.com

第二,需要了解下什麼是 RPC

JSON-RPC 以及 JSON

遠端過程呼叫(英語:Remote Procedure Call,縮寫為 RPC)是一個計算機通訊協議。該協議允許運行於一臺計算機的程式呼叫另一臺計算機的子程式,而程式設計師無需額外地為這個互動作用程式設計。如果涉及的軟體採用面向物件程式設計,那麼遠端過程呼叫亦可稱作遠端呼叫或遠端方法呼叫,例:Java RMI。[1]

RPC 的主要功能目標是讓構建分散式計算(應用)更容易,在提供強大的遠端呼叫能力時不損失本地呼叫的語義簡潔性。

RPC 呼叫分為以下兩種:

同步呼叫,客戶方等待呼叫執行完成並返回結果。

非同步呼叫,客戶方呼叫後不用等待執行結果返回,但依然可以通過回撥通知等方式獲取返回結果。若客戶方不關心呼叫返回結果,則變成單向非同步呼叫,單向呼叫不用返回結果。

非同步和同步的區分在於是否等待服務端執行完成並返回結果。

遠端過程呼叫是一個分散式計算的客戶端 - 伺服器(Client/Server)的例子,它簡單而又廣受歡迎。遠端過程呼叫總是由客戶端對伺服器發出一個執行若干過程請求,並用客戶端提供的引數。執行結果將返回給客戶端。由於存在各式各樣的變體和細節差異,對應地派生了各式遠端過程呼叫協議,而且它們並不互相相容。其中我們廣為使用的是一個叫做 JSON-RPC 的協議。

JSON-RPC,是一個無狀態且輕量級的遠端過程呼叫(RPC)傳送協議,其傳遞內容通過 JSON 為主。相較於一般的 REST 通過網址(如 GET /user)呼叫遠端伺服器,JSON-RPC 直接在內容中定義了欲呼叫的函式名稱(如 {“method”: “getUser”}),這也令開發者不會陷於該使用 PUT 或者 PATCH 的問題之中。 本規範主要定義了一些資料結構及其相關的處理規則。它允許執行在基於 Socket、HTTP 等諸多不同訊息傳輸環境的同一程序中。其使用 JSON(RFC 4627)作為資料格式。[2]

JSON-RPC 使用了 JSON 格式,那 JSON 是什麼呢?

JSON(JavaScript Object Notation)是一種輕量級的資料交換語言。 使用 JSON 做資料交換的好處在於,一是相容性高,二是可閱讀性高,三是支援較多的資料格式(比如 number, string, booleans, nulls, array, associative array),四是支援的語言較多。

第三,瞭解區塊鏈相關的基礎知識。

瞭解區塊鏈,書籍資料不用,一本 精通比特幣 足矣。這裡就不贅述了。

第四,掌握一門開發語言。

如果你是一門經驗豐富的程式設計師,此條預備知識可以忽略。如果你是一名非計算機科班出身的區塊鏈技術愛好者,建議從 Python 入手。同時,多瞭解下 JavaScript。

0x01 怎麼樣開發

假設我們把預備知識都瞭解了,接下來我們需要閱讀比特幣和以太坊的 RPC 介面。

以 sendrawtransaction 為例,這個函式列表提供了四列(Command、Parameters、Description、Requires unlocked wallet? ),分別表示函式名、傳入引數、描述、是否需要解鎖錢包。

我們把這個函式列表掌握之後,可以選擇某一種語言,然後進行區塊鏈錢包相關的開發。

當然,你還需要知道怎麼樣去部署一個比特幣的完全節點和測試網路,這樣就可以利用 RPC 進行介面呼叫,來和區塊鏈網路進行互動。

0x02 相關文件以及原始碼

這裡列出主流專案相關的 RPC 介面以及開源錢包專案,以供讀者參考。

2.1 Bitcoin

2.1.1 RPC

2.1.2 Wallet

bither,簡單安全的比特幣錢包

bread,iOS 錢包

Copay,同時支援 Bitcoin 和 Bitcoin Cash

2.2 Ethereum/ERC20

2.2.1 RPC

2.2.2 Wallet

Mist,官方出品

Parity,支援 Windows、Mac、PC 的錢包

Иeureal Wallet,支援 Windows、Mac、PC 的錢包

2.3其他

2.3.1 Zcash

Zcash,官方出品

2.3.2 BitShares

2.3.3 Sia

Sia,官方出品

2.3.4 Nem

2.3.5 Dash

Dash,官方出品

2.3.6 Qtum

2.3.7 Litecoin

2.3.8 IOTA

2.3.9 Monero

2.3.10 GXS

2.3.11 Ethereum Classic

0x03 小結

本文講解了開發錢包的預備知識,包括第一是什麼是錢包,以及相關的分類,第二是 RPC、JSON-RPC 以及 JSON,第三是瞭解區塊鏈相關的基礎知識,第四是掌握一門開發語言。接著淺談了怎麼樣開發,最後列出了主流專案相關的 RPC 介面以及開源錢包專案。如果讀者對錢包開發感興趣,希望本文能夠給讀者一個指引。

0x04 參考

學好區塊鏈,單筆專案百萬+不是夢:

區塊鏈產品經理(點選入駐),能力不夠也來混個臉熟