linux部署比特币钱包(Bitcoin Core)

Bitcoin介绍

比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。
bitcoin百度百科
bitcoin维基百科

Bitcoin core钱包介绍

目前网络上有很多社区开发了多款bitcoin钱包,其中bitcoin core钱包安装后会下载全部节点,并且有一套rpc接口协议,代码在github也全部开源,bitcoin core支持多个操作系统,我们可以根据自己需要进行安装。我做过的项目需求都是交易系统和支付系统实现充值,提现,和归集功能,bitcoin core对我来说足够了,所以就选择他了。至于其他钱包我就没有具体深入研究了,如果有特殊需求的业务,也可以去研究下其他钱包是否支持。
想研究其他钱包可点击链接进行查看:bitcoin维基百科

Bitcoin 需要知道的知识点

因为虚拟币价值比较高,所以有很多黑客会想尽各种办法盗取虚拟币资产,像一线交易所也都被盗过,目前最简单和成本最低的防范方法就是做冷热钱包隔离,我们在设计系统的时候也应该考虑此方面的解决方案,然后在这个思路上面延伸。我的解决方案是用户充值进钱包的虚拟币,我每天会通过定时任务把热钱包的虚拟币转到冷钱包。这样的话黑客就算黑了我们钱包,他能盗走的币也很少,可以减少平台的损失。

  • 热钱包,我们现在搭建的就属于热钱包,简单来讲就是与外界联网的钱包,充值地址的币,每天都会划转到冷钱包
  • 冷钱包,与外界网络完全隔离,目前市面上也有很多相关的硬件钱包产品
  • 区块链的机制就是一但生成交易就无法篡改和撤回了,我们在开发的时候也要多注意,特别是在转币的时候
  • utxo,官方解释是未经使用的交易输出,具体介绍可以点击看其他大哥写的详细介绍,utxo介绍

Bitcoin core钱包安装

1.服务器硬件配置

  • 我目前用的服务器配置是aliyun centos7.5  4c,8g,500g硬盘,下面的配置信息是我给的建议
  • cpu:2c(同步区块的时候会占用cpu)
  • 内存:8G
  • 硬盘:500G(不差钱上固态,固态同步区块速度会快很多)

2.注意事项

区块同步时cpu会怼满,所以你们到时候不要大惊小怪了,这是正常的,等区块同步完成后就会恢复正常

3.安装钱包

  • 下载bitcoin coreLinux版本bitcoin-0.16.1-x86_64-linux-gnu.tar.gz
  • 解压到系统目录
tar -xzvf bitcoin-0.16.1-x86_64-linux-gnu.tar.gz -C /usr/local
  • bitcoin的默认配置目录为 ~/.bitcoin/bitcoin.conf,填写以下配置
  •  # ~/.bitcoin/bitcoin.conf
     datadir=/opt/btc/datadir
    #设置数据库缓存大小
     dbcache=10240
    
    #交易索引 txindex=1就代表全节点
     txindex=1
    
    #rpc访问的user
     rpcuser=btc
    
    #rpc访问的password
     rpcpassword=btc2018
    
    #后台运行
     daemon=1
     server=1
     rest=1
    
     rpcbind=0.0.0.0:8332
     rpcallowip=0.0.0.0/0
     deprecatedrpc=accounts
    
    # 闪电网络需要下面两行配置的支持
    # 允许在本机端口28332上广播原始区块信息
     zmqpubrawblock=tcp://127.0.0.1:28332
    # 允许在本机端口28333上广播原始交易信息
     zmqpubrawtx=tcp://127.0.0.1:28333

     

  • 启动bitcoin
  • bitcoind -daemon
    
  • 关闭bitcoin,一定要用以下命令,否则会有可能导致数据异常,需要重新同步数据
  • bitcoin-cli stop
    
  • 一些其他命令
  • # 查看网络状态:
    bitcoin-cli getnetworkinfo
    # 查看网络节点:
    bitcoin-cli getpeerinfo
    # 查看区块链信息:如同步进度、
    bitcoin-cli getblockchaininfo
    # 查看所有命令
    bitcoin-cli help

    启动后钱包会自动同步区块,可以打开日志查看具体同步情况

    tail -f nohup.out
    

    进入bitcoin安装目录

    cd $HOME/.bitcoin
    ls
    banlist.dat  bitcoind.pid  blocks  chainstate  debug.log  peers.dat  wallets
    ls wallets/
    database  db.log  wallet.dat
    

    因为此次我安装的版本是0.18,所以相比老版本有所改变,wallet.bat文件在wallet文件夹里面,上面我们可以看到文件夹最新结构,下面是具体文件夹介绍

    bitcoind.pid bitcoind   运行的进程文件
    
    blocks  区块链数据文件
    
    chainstate 区块链状态的数据库使用LevelDB存储
    
    db.log 数据库日志文件
    
    debug.log 运行时的日志文件
    
    wallet.dat 钱包文件(这个要划重点了,此文件保存了我们钱包生成的私钥,特别重要,建议通过编写shell脚本或者使用后台程序每天做个备份)
    

    安装supervisor(进程监控),钱包挂掉可以使程序自启

    sudo apt-get install supervisor
    

    4.钱包命令介绍

    bitcoin-cli getwalletinfo   查看钱包详情,在0.18版本中,以前的getinfo已经取消
    {
      "walletname": "",
      "walletversion": 169900,              钱包版本
      "balance": 0.00000000,                钱包余额
      "unconfirmed_balance": 0.00000000,    未确认余额
      "immature_balance": 0.00000000,       这个暂时还不清楚
      "txcount": 0,                         钱包内交易数量
      "keypoololdest": 1562826486,          密钥池内最早密钥创建时间
      "keypoolsize": 1000,                  密钥池大小
      "keypoolsize_hd_internal": 1000,
      "paytxfee": 0.00000000,               手续费率(这个比较重要,后面单独讲)
      "hdseedid": "ed13b2019c2e28e9dc84cf7124ba2e36cebcb656",
      "private_keys_enabled": true
    }
    
    bitcoin-cli getblockchaininfo   查看区块详情
    {
      "chain": "main",
      "blocks": 238558,                     钱包当前区块(btc安装启动后一般1-2天可以同步到最新区块高度)
      "headers": 584893,                    当前最新区块高度
      ....  后面还有其他信息,我们暂不关注
    }
    
    bitcoin-cli sendtoaddress   转账接口(后面具体介绍)
    Response:
    1. "address"            (string, required) 接收地址
    2. "amount"             (numeric or string, required) 转账金额
    
    Result:
    "txid"                  (string) 唯一标识tx_id
    
    Examples:
    > bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.1
    > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd", 0.1] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/

     

     

你可能感兴趣的:(【区块链研究所之数字钱包】)