接入以太坊

以太坊塊鏈

一、本身搭建節點,終端去訪問搭建好的節點獲取數據html

二、使用免費的Infura,省去建立節點的煩惱java

Infura

Infura 提供免費公開的Ethereum(以太坊)主網和測試網絡節點;git

ps:Infura 須要翻才能註冊過去。github

接入方式

一、web3j web

 

二、JSON-RPC編程

Web3j接入方式

 web3.js是以太坊提供的一個Javascript庫,它封裝了以太坊的JSON RPC API,提供了一系列與區塊鏈交互的Javascript對象和函數,包括查看網絡狀態,查看本地帳戶、查看交易和區塊、發送交易、編譯/部署智能合約、調用智能合約等,其中最重要的就是與智能合約交互的API。json

web3j的提供的功能api

  • 經過HTTP和IPC 完成Ethereum的JSON-RPC客戶端API的實現
  • Ethereum錢包支持
  • 使用過濾器的函數式編程功能的API
  • 自動生成Java智能合約包裝器,以建立、部署、處理和調用來自本地Java代碼的智能合約
  • 支持Parity的 我的和Geth的 我的客戶端API
  • 支持Infura,因此您沒必要本身運行一個Ethereum客戶端
  • 一套綜合化、一體的測試示範和可運行的腳步
  • 支持命令行工具
  • 兼容Android
  • 支持JP Morgan’s Quorum via web3j-quorum

三、 web3j文檔數組

能夠參考web3j的說明文檔網絡

web3的文檔

web3的中文文檔

//獲取節點運行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

JSON-RPC API 的接入方式

由於Ethereum(以太坊)提供了JSON-RPC API 能夠訪問。

Http是以太坊各類客戶端都支持的方式之一,也是終端開發最熟悉的。

一、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>() {            @Override            public void onSuccess(String result) {                Log.e("wlj", "result" + result);           } ​            @Override            public void onError(Throwable ex, boolean isOnCallback) {                Log.e("wlj", ex.toString());           } ​            @Override            public void onCancelled(CancelledException cex) { ​           } ​            @Override            public void onFinished() { ​           }       });

 

二、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,小巧。便於各類語言實現。

相關文章
相關標籤/搜索