开发环境和工具

1. window 10 64
2. 比特核心钱包:bitcoin core 64
配置过程
1. 下载比特币核心钱包,下载链接https://bitcoin.org/en/download
2. 安装完不要运行。启动测试网络,这个需要下的数据比较少,大概10G。如图,第二个启动项
3. 启动后会弹出如图页面:

 选择数据存放的位置(正式环境需要100G,随着时间而增加),这个地址下面还需要使用,请记住。
4. 同步数据,如下图所示

 下边进度条消失就是同步完了。
5. 配置rpc。在数据存放位置新建一个文件名称是bitcoin.conf,内容如下
testnet=0
server=1
rpcuser=wang
rpcpassword=123456
rpctimeout=30
rpcport=18332
rpcconnect=127.0.0.1
testnet=0是测试网络,正式环境去掉这一行,并把rpcport=18332改为rpcport=8332
6. 代码使用了jsonrpc4j,maven依赖如下
<dependency>
<groupId>com.github.briandilley.jsonrpc4j</groupId>
<artifactId>jsonrpc4j</artifactId>
<version>1.1</version>
</dependency>
6.1. 简单公用类
public class ClientUtil {

    public static JsonRpcHttpClient getClient() {
JsonRpcHttpClient client = null;
try {
String cred = Base64.encodeBytes(("wang" + ":" +"123456").getBytes());
Map<String, String> headers = new HashMap<String, String>(1);
//身份认证
headers.put("Authorization", "Basic " + cred);
client = new JsonRpcHttpClient(new URL("http://127.0.0.1:18332"),headers);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return client;
} public static Object result(String command, Object[] objects) {
JsonRpcHttpClient client = ClientUtil.getClient();
Object result = null;
if(client != null) {
try {
result = client.invoke(command, objects,Object.class);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
return result;
}
}
6.2. 发送比特币
   @Test
public void sendfrom() {
String result = (String) ClientUtil.result("sendfrom", new Object[]{"","2MzFix1Fnndi1wAvg9B7dLfRgL25FuC4J7x","0.0001"});
System.out.println(result);
}
第二个参数是对方的地址,第三个参数是金额。
6.3. 生成一个地址,并监测对方是否发送
    /**
* 生成一个收款地址,等待接收
*/
@Test
public void newAddressAndReceived() {
String result = (String) ClientUtil.result("getnewaddress", new Object[]{""});
System.out.println(result); while (true) {
Double received = (Double) ClientUtil.result("getreceivedbyaddress", new Object[] {result});
if(received > 0) {
System.out.println(received);
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
7. 免费领取测试网络比特币地址:https://testnet.coinfaucet.eu/en/
    api:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
 

通过rpc访问比特币核心钱包的更多相关文章

  1. [翻译]QT core wallet manual 狗狗币核心钱包使用教程

    译注:比特币没赶上可以玩狗狗币啊,水电厂包不起可以用CPU挖啊.为了顺应时代潮流,了解一下区(fa)块(heng)链(cai)和加密货币技术,准备从研究狗狗币开始.网上找了一圈没有看到很好的入门级教程 ...

  2. dubbo入门学习(一)-----分布式基础理论、架构发展以及rpc、dubbo核心概念

    一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed ...

  3. 最著名的著名的比特币BTC钱包地址-中本聪的钱包

    最著名的著名的比特币BTC钱包地址-中本聪的钱包1.比特币创始人中本聪 1PTFYUG6nCzRrByoRfGT5kefUNuZjNF84o这个地址还是比特币的创世地址,比特币从未移动过,其中的50币 ...

  4. 04.UTXO:未使用的交易输出,比特币核心概念之一

    在比特币系统上其实并不存在“账户”,而只有“地址”.只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和.比特币系统并不会帮你把这些地址汇总起来 ...

  5. 比特币系列钱包的UTXO总结

    1.通过比特币钱包的WalletNotify配置来处理 本钱包内的交易信息的 推送.BlockNotify数据更多,不适合交易所的监听

  6. hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问。而随着hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如此,以便查询。这里包含我们使用到的组件:HDFS, YARN, Hbase, Hive, ZooKeeper:

    组件 节点 默认端口 配置 用途说明 HDFS DataNode 50010 dfs.datanode.address datanode服务端口,用于数据传输 HDFS DataNode 50075 ...

  7. [币严区块链]数字货币交易所之比特币(BTC)钱包对接 | 自建节点JSON-RPC访问

    BTC钱包对接流程 一.   部署BTC钱包节点 二.   分析BTC钱包的API 三.   通过JSON-RPC访问BTC钱包API 四.   部署测试 一.部署钱包节点 交易平台对接BTC之前,要 ...

  8. BTC钱包对接流程

    BTC钱包对接流程: 部署钱包节点 分析钱包的API 通过JSON-RPC访问钱包API 部署测试 1.部署钱包节点 虚拟币交易平台对接所有的虚拟币之前,都要在自己的服务器上部署一个钱包节点,首先要找 ...

  9. 比特币客户端Electrum使用介绍

    简介 比特币的客户端很多,为什么选择Electrum. 首先Electrum真的很轻量,安装马上可以用,不用下载几百G的区块链账本.我之前安装bitcoin核心客户端,这是个完整节点.下载账本都要好多 ...

随机推荐

  1. elastalert SpikeRule异常告警问题

    公司里面用了ELK,所以也就顺其自然的玩起了elastalert, 发现SpikeRule比较符合自己的需求. 但配置后,死活不停的虚假告警,看实际曲线明明没有相差太多,1.4的倍率却总是被打破. 憋 ...

  2. VS2013,VS2015设置类模板文件表头

    一般VS的类模板文件是放在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSha ...

  3. ArcGIS Engine中的8种数据访问 (转)

    数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGI ...

  4. C++ 实现Range类,用于常规遍历

    PYTHON的Range类非常好用,所以用C++来简单实现下:  // 实现Range类,用于遍历 // #include <string> class Range { public: / ...

  5. Struts2:类型转换器

    常规的String,int能自动转换,但是,有些类型不是这么简单,比如输入字符串,但需要Date.自定义类型,因此需要自定义类型转换类型转换器分全局和局部按惯例,局部的优先级高于全局 需求: 1.输入 ...

  6. C#检测网卡和网络统计信息

    using System; using System.Collections.Generic; using System.Net.NetworkInformation; public class My ...

  7. Jmeter plugin jp@gc - PerfMon Metrics Collector

    Jmeter由于是开源工具,所以目前有很多插件可以供使用,最简单的方法是先把Plugin Manager安装了 下载地址:https://jmeter-plugins.org/wiki/Plugins ...

  8. tomcat7 ajax请求服务中文乱码

    在确保请求服务编码格式为utf-8的情况下,确保tomcat的配置 <Connector connectionTimeout="20000" port="8080& ...

  9. Xenko基础API笔记2-Enum Keys按键

    Name   Description A The 'a' key. Add The 'add' key. Apps The 'apps' key. Attn The 'attn' key. B The ...

  10. Ninject之旅之十一:Ninject动态工厂(附程序下载)

    摘要 如果我们已经知道了一个类所有的依赖项,在我们只需要依赖项的一个实例的场景中,在类的构造函数中引入一系列的依赖项是容易的.但是有些情况,我们需要在一个类里创建依赖项的多个实例,这时候Ninject ...