以太坊塊鏈
1、自己搭建節點,終端去訪問搭建好的節點獲取數據
2、使用免費的Infura,省去創建節點的煩惱
Infura
Infura 提供免費公開的Ethereum(以太坊)主網和測試網絡節點;
ps:Infura 需要翻才能注冊過去。
接入方式
1、web3j
2、JSON-RPC
Web3j接入方式
web3.js是以太坊提供的一個Javascript庫,它封裝了以太坊的JSON RPC API,提供了一系列與區塊鏈交互的Javascript對象和函數,包括查看網絡狀態,查看本地賬戶、查看交易和區塊、發送交易、編譯/部署智能合約、調用智能合約等,其中最重要的就是與智能合約交互的API。
web3j的提供的功能
- 通過HTTP和IPC 完成Ethereum的JSON-RPC客戶端API的實現
- Ethereum錢包支持
- 使用過濾器的函數式編程功能的API
- 自動生成Java智能合約包裝器,以創建、部署、處理和調用來自本地Java代碼的智能合約
- 支持Parity的 個人和Geth的 個人客戶端API
- 支持Infura,所以您不必自己運行一個Ethereum客戶端
- 一套綜合化、一體的測試示范和可運行的腳步
- 支持命令行工具
- 兼容Android
- 支持JP Morgan’s Quorum via web3j-quorum
3、 web3j文檔
可以參考web3j的說明文檔
//獲取節點運行geth客戶端的版本號 String url = "https://mainnet.infura.io/your api-key"; Web3j web3 = Web3j.build(new HttpService(url)); Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().sendAsync().get(); String clientVersion = web3ClientVersion.getWeb3ClientVersion(); //只讀屬性,返回當前節點持有的帳戶列表 這個方法說明就是我從web3的中文文檔里找到的 String url = "https://mainnet.infura.io/your api-key"; Web3j web3 = Web3j.build(new HttpService(url)); //點進ethAccounts()方法的源碼就可以知道返回的是什么對象了 EthAccounts ethAccounts = web3.ethAccounts().sendAsync().get(); List<String> accountList = ethAccounts.getAccounts();//返回當前節點持有的賬戶列表
這樣簡單的接入就完成了。
https://web3j.readthedocs.io/en/latest/infura.html
因為Ethereum(以太坊)提供了JSON-RPC API 可以訪問。
Http是以太坊各種客戶端都支持的方式之一,也是終端開發最熟悉的。
1、Http
//查閱API 發現需要POST的形式 參數以json的形式 請求
//這里我測試使用的是xutils3 以請求版本號為例 String json = "{\"jsonrpc\":\"2.0\",\"method\":\"web3_clientVersion\",\"params\":[],\"id\":67}"; RequestParams params = new RequestParams("https://mainnet.infura.io/your api-key"); params.setAsJsonContent(true); params.setBodyContent(json); x.http().post(params, new Callback.CommonCallback<String>() {
2、JSONRPC 2.0的方式
json-rpc是基於json的跨語言遠程調用協議。比xml-rpc、webservice等基於文本的協議數據傳輸格小;相對hessian、java-rpc等二進制協議便於調試、實現、擴展,是很優秀的一種遠程調用協議。
JSON-RPC協議描寫敘述
json-rpc協議很easy,發起遠程調用時向服務端數據傳輸格式例如以下:
{
"jsonrpc": "2.0", "method": "方法名", "params": [“參數數組”], "id": 方法ID}
參數說明:
method: 調用的方法名
params: 方法傳入的參數。若無參數則傳入 []
id : 調用標識符。用於標示一次遠程調用過程
server其收到調用請求,處理方法調用,將方法效用結果效應給調用方;
返回數據格式:
{
"jsonrpc": "2.0",
"result": "Hello JSON-RPC",
"error": null,
"id": 方法ID
}
參數說明:
result: 方法返回值。若無返回值。則返回null。
若調用錯誤,返回null。
error :調用時錯誤,無錯誤返回null。
id : 調用標識符,與調用方傳入的標識符一致。
以上就是json-rpc協議規范,很easy,小巧。便於各種語言實現。