zoukankan      html  css  js  c++  java
  • 比特币钱包搭建与使用

    安装

    就位

    cd /usr/local/

    安装依赖

    yum install -y wget
    yum install -y autoconf
    yum install -y automake
    yum install -y libtool
    yum install -y gcc gcc-c++ gcc-g77
    yum install -y openssl-devel 
    yum install -y boost-devel
    yum install -y libevent-devel

    数据库和钱包版本是有一定的搭配的,我这里用的是0.17.1配4.8.30,如果你要用其他版本,有可能需要折腾一下。

    下载解压 berkeley-db安装包(这是我存储的云端文件)

    wget http://file.fengyumeng.com/db-4.8.30.tar.gz
    tar -zxvf db-4.8.30.tar.gz

    如果你需要其他版本的话可以到这里去找:
    https://www.oracle.com/database/technologies/related/berkeleydb-release-history.html

    切目录

    cd db-4.8.30/build_unix/

    配置

    ../dist/configure --enable-cxx --disable-shared --with-pic --prefix=/usr/local

    安装

    make install

    回到local目录

    cd ../../

    下载bitcoin

    wget http://file.fengyumeng.com/bitcoin-0.17.1.tar.gz

    如果你身体好,能翻墙,就去github下载你想要的版本:https://github.com/bitcoin/bitcoin/releases

    解压

    tar -zxvf bitcoin-0.17.1.tar.gz

    切入目录

    cd ./bitcoin-0.17.1/

    生成配置文件

    ./autogen.sh

    进行配置

    ./configure

    编译

    make

    安装

    make install

    查找是否安装成功

    which bitcoind
    which bitcoin-cli

    启动

    创建一个目录存放区块数据

    mkdir /bitcoin

    跳过去

    cd /bitcoin/

    创建配置文件

    vim bitcoin.conf

    如下配置内容,自己看着改

    #测试网络(不配置就默认是主网)
    testnet=1
    
    # 启动rpc服务
    server=1
    
    # rpc账号密码
    rpcuser=abc
    rpcpassword=123456
    
    
    #rpc白名单 
    rpcallowip=0.0.0.0/0
    
    # 接受rest请求
    rest=1
    
    # 所有交易进行索引 否则只保留钱包地址交易索引记录
    txindex=1
    
    # 交易确认区块数 默认是6
    txconfirmtarget=3
    
    # 数据存储位置  默认是家目录下的.bitcoin目录
    datadir=/bitcoin
    
    # 块数据存储位置 默认家目录下的.bitcoin/blocks 必须先创建该目录
    blocksdir=/bitcoin/blocks

    更多配置,可以去这里找

    https://jlopp.github.io/bitcoin-core-config-generator

    启动命令

    bitcoind -conf=/bitcoin/bitcoin.conf  -rpcport=9999  -daemon

    -rpcport是rpc端口(默认的rpc端口是18443,如果你在配置文件里配端口的话 只有主网才会生效)
    -daemon是守护进程

    调用rpc接口看看通不通

    curl --user abc:123456 --data-binary '{"jsonrpc":"1.0","id":"curltest","method":"getwalletinfo","params":[]}' -H 'content-type:text/plain' http://127.0.0.1:9999

    看到如下信息证明是OK的  你已经可以找到balance等字样了

    停止命令  (带上你启动时的参数一起)

    bitcoin-cli -conf=/bitcoin/bitcoin.conf -rpcport=9999 stop

    如果再次启动的时候出现异常,就手动删除.lock文件

    rm -rf /bitcoin/testnet3/.lock

    使用

    区块信息

    查看区块信息
    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getblockchaininfo
    获取区块高度
    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getblockcount
    查看挖矿信息
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getmininginfo

    账户地址

    列出所有钱包
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 listwallets

    默认会有一个空钱包的

    生成钱包
    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 createwallet wallt1

    你可以生成很多钱包

    生成地址

    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getnewaddress a_label_1

    getnewaddress 后面跟的是 标签名 以官方的话说是个label  相当于分类名

    这是在wallt1钱包下面生成一个地址,一个客户端可以有很多个钱包,每个钱包可以有很多个地址,多个地址可以设置成同一个label,相当于一个房间里可以有多个衣柜,每个衣柜有很多个格子,我把很多双袜子放同一个格子方便管理。

    打印在控制台的就是生成的地址

    显示地址的私钥
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 dumpprivkey 2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM
    查看钱包下所有的label
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listlabels
    查看label下所有的地址
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getaddressesbylabel a_label_1

    钱包余额

    获取测试比特币

    地址:https://coinfaucet.eu/en/btc-testnet/

    获取了之后,可以去测试网络浏览器查:https://live.blockcypher.com

    也可以直接打开这个链接(把后面的地址换成你要查询的地址):https://live.blockcypher.com/btc-testnet/address/2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM/

    当然,你要等区块确认之后钱才会变成可用的。

    有一点需要注意一下,测试网络目前的区块高度是160多万,查一下你本地的区块高度同步了多少,如果区块没同步足够,在本地是查不到交易的。

    查询钱包信息
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getwalletinfo

    balance:钱包中以 BTC 为单位已确认的总余额
    unconfirmed_balance:钱包中以 BTC 为单位未确认的总余额
    immature_balance:钱包中以 BTC 为单位未成熟的总余额

    查询钱包余额
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getbalance 
    查询地址余额
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getreceivedbyaddress -rpcwallet=wallt1  2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM 3

    指定地址至少N个确认交易的金额,不填数字则默认1个

    根据标签查余额
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getreceivedbylabel a_label_1

    后面同样可以跟个数字 默认为1个确认的余额

    遍历地址余额信息
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listreceivedbyaddress 1 true

    交易

    查询钱包接收到的交易
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listtransactions
    根据hash查交易(钱包内交易)
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 gettransaction 3c1dcdccd6373134a183cd4df93e59a40b1b395fde55b7c0f9ca0eed04f4965f
    根据hash查交易(交易池交易)
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getrawtransaction 3c1dcdccd6373134a183cd4df93e59a40b1b395fde55b7c0f9ca0eed04f4965f true
    转账
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 sendtoaddress  2N8W4G3H1aTxJvkS8rdbj4e4yzeMeDCVB5y 0.01

    比特币每一次转账转出的都是整个钱包的所有可用余额,其中指定的金额去往目标地址,剩余的金额回到自己钱包,这是找零的概念,建议不了解的同学啃一下UXTO模型。

    加密解锁

    钱包加密
    bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 encryptwallet abcdefg

    encryptwallet后面跟的就是你的保险箱密码,一旦加密, 每次进行转账时都需要先进行钱包解锁。

    (加密成功后bitcoin进程会关闭,需要重新启动,建议区块同步完了再进行钱包加密,否则加密后重启钱包,可能会发现原来的钱包数据丢失了)

    钱包解锁
    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 walletpassphrase abcdefg 10

    解锁时间以秒为单位,到点之后钱包自动上锁,如果在解锁时间未到之前想要上锁就需要手动调用下面的锁定钱包接口

    锁定钱包
    bitcoin-cli  -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 walletlock

    API调用

    RPC接口一览表:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

    比特币PHP的SDK:https://github.com/blockchain/api-v1-client-php
    比特币JAVA的SDK:https://github.com/blockchain/api-v1-client-java
    比特币Python的SDK:https://github.com/blockchain/api-v1-client-python
    比特币NodeJs的SDK:https://github.com/blockchain/api-v1-client-node

    第三方API:https://www.blockcypher.com/dev/bitcoin/

  • 相关阅读:
    (转)视频编码标准汇总及比较
    (转)live555从RTSP服务器读取数据到使用接收到的数据流程分析
    (转)MPEG4码流简单分析
    H264裸流分析中,能获取哪些信息?
    (转)基于live555的流媒体代理转发服务器
    测试x264编码器的低延时编码和非延时编码
    ELK 日志分析系统
    Dubbox:来自当当网的SOA服务框架
    CHMOD命令怎么用?
    linux显示文件列表命令ls,使用ls --help列出所有命令参数
  • 原文地址:https://www.cnblogs.com/fengyumeng/p/11953049.html
Copyright © 2011-2022 走看看