Android通过Geth RPC接口实现接入以太坊私有链
环境:mac os & android studio
一、启动私有链
搭建方法见 here
启动并设定RPC端口:
geth --identity "linoy" --rpc --rpccorsdomain "*" --datadir "./" --port "30303" --nodiscover --rpcapi "personal,db,eth,net,web3,miner" --networkid 1999 console 2>>geth.log
- 1
- 2
需要注意的是rpcapi 参数:
这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。当你准备使用不同的api接口时,在启动节点时要添加上不同的参数,比如你要使用rpc调用创建账户(personal操作),那么在启动的命令中就需要核实是否有–rpcapi参数,参数值中是否有personal选项,否则无法正常调用
- 1
- 2
- 3
- 4
二、Android studio新建项目并添加.jar包
下载地址:here
新建项目
选择project
导入jar包
将你要导入的jar包拖入libs文件夹内,然后
三、设置布局文件
<Buttonandroid:id="@+id/showView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="getBlock"/><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/textview"/>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
四、设置权限
<uses-permission android:name="android.permission.INTERNET"/>
- 1
五、主代码
package com.example.pro.blockchain1;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import org.alexd.jsonrpc.JSONRPCException;
import org.alexd.jsonrpc.JSONRPCHttpClient;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button showButton;private TextView textview;public static final int SHOW = 0;private Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case SHOW:String a = (String) msg.obj;textview.setText(a);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textview=(TextView)findViewById(R.id.textview);showButton = (Button) findViewById(R.id.showView);showButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {if(v.getId() == R.id.showView) {show();}}private void show() {new Thread(new Runnable() {@Overridepublic void run() {try {String url = "http://10.0.2.2:8545"; //注意,不是127.0.0.1JSONRPCHttpClient client = new JSONRPCHttpClient(url);Map<String, Object> map = new HashMap();List paramsList = new ArrayList();map.put("json-rpc", "2.0");map.put("method", "web3_clientVersion");map.put("params", paramsList);map.put("id", "67");String st = client.callString("web3_clientVersion", map);Message msg = new Message();msg.what =SHOW;msg.obj = st;handler.sendMessage(msg);} catch (JSONRPCException e) {// textview.setText("step wrong??");e.printStackTrace();}}}).start();}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
可以看到结果:
其他事例
String url = "http://10.0.2.2:8545";
JSONRPCHttpClient client = new JSONRPCHttpClient(url);
Map<String, Object> map = new HashMap();
List paramsList = new ArrayList();
map.put("id", "1");
map.put("json-rpc", "2.0");
map.put("params", paramsList);//personal_listAccounts
String st = client.callString("personal_listAccounts", map);//personal_newAccount
paramsList.add("123456");
String st = client.callString("personal_newAccount", map);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
参考文档:here & here
API文档:here & here
Android通过Geth RPC接口实现接入以太坊私有链相关推荐
- 以太坊 私有链搭建 Geth+Mist钱包
近期在区块链的热潮推动下,我开始研究区块链技术,尤其是智能合约.可编程式的智能合约龙头老大非以太坊莫属了,其他的合约平台如 hyperledger,EOS 相对来说没以太坊成熟,以后陆续在研究.好了, ...
- 区块链开发之搭建以太坊私有链
(一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...
- 区块链,使用 Go-Ethereum 搭建以太坊私有链
1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...
- 在Ubuntu下成功搭建以太坊私有链挖矿并转账
前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...
- 使用Helm在k8s集群上部署以太坊私有链
一.概述 二.部署流程 三.问题记录 四.部署检查 五.参考 一.概述 使用k8s官方的包管理工具helm部署以太坊私有链并启动三类节点和一个前端服务: bootnode: used for Geth ...
- 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B
使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...
- 以太坊私有链与Ethereum Wallet启动问题
在私有链的情况下,要开启Ethereum Wallet,首先要开启本地的私有链geth,否则会出现如下问题: 解决方案: 开启以太坊私有链: ./private_blockchain.sh priva ...
- 如何搭建以太坊私有链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...
- 【手把手】如何在10分钟内搭建一个以太坊私有链?
在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建. 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果 ...
最新文章
- Tensorflow:在Tensorflow的不同版本中如何实现Xavier参数权重初始化
- 【深度学习】用 YOLO v5+DeepSORT,打造实时多目标跟踪模型
- 《计算机组成原理》课程设计任务书——TEC-2实验系统——微程序设计
- debug LUW1 - do binding workflow
- Codeforces 773D Perishable Roads 最短路 (看题解)
- 【JEECG技术文档】Redis与Eache切换文档
- 如何在Windows上安装Angular:Angular CLI,Node.js和构建工具指南
- php的qq接口文档,分账接口
- Markdown代码框diff,高亮显示差异、增量、修改
- [bzoj 2017] [Usaco2009 Nov]硬币游戏
- 管理口SSH服务存在拒绝服务漏洞(CVE-2016-6515)
- 优化理论18----Fritz John条件
- 01.redis初识
- linux怎么启动程序路径,linux查找启动程序的路径
- lch 儿童围棋课堂 初级篇2 (李昌镐 著)
- Eclipse中文汉化包安装教程
- 计蒜客 17119 Trig Function(切比雪夫多项式)
- UCI下载葡萄酒数据
- CSS基础--美化视觉效果
- 笔记本电脑dns电脑服务器未响应如何处理,提示dns电脑服务器未响应如何处理?...