接入以太坊

以太坊块链

一、本身搭建节点,终端去访问搭建好的节点获取数据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,小巧。便于各类语言实现。

相关文章
相关标签/搜索