• 通过rpc访问比特币核心钱包


    开发环境和工具

    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
     





  • 相关阅读:
    nextcloud环境搭建及部署
    docker容器内访问宿主机,访问不通 错误:Host is unreachable
    记录一下SQL的行行比较
    记录一次nginx平滑升级
    letsencrypt免费SSL证书自动续期
    守护进程因echo挂掉的原因,以及重定向标准输入、标准输出和标准错误
    openresty lua-nginx-module模块中文文档
    nginx localhost的坑
    PHP7 MongoDb的操作类
    tomcat 性能检测
  • 原文地址:https://www.cnblogs.com/jokulfox/p/6098203.html
Copyright © 2020-2023  润新知