这篇文章主要介绍了Bitcoin Core钱包如何安装与对接,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。 bitcoin百度百科 bitcoin维基百科
目前网络上有很多社区开发了多款bitcoin钱包,其中bitcoin core钱包安装后会下载全部节点,并且有一套rpc接口协议,代码在github也全部开源,bitcoin core支持多个操作系统,我们可以根据自己需要进行安装。我做过的项目需求都是交易系统和支付系统实现充值,提现,和归集功能,bitcoin core对我来说足够了,所以就选择他了。至于其他钱包我就没有具体深入研究了,如果有特殊需求的业务,也可以去研究下其他钱包是否支持。 想研究其他钱包可点击链接进行查看:bitcoin维基百科
因为虚拟币价值比较高,所以有很多黑客会想尽各种办法盗取虚拟币资产,像一线交易所也都被盗过,目前最简单和成本最低的防范方法就是做冷热钱包隔离,我们在设计系统的时候也应该考虑此方面的解决方案,然后在这个思路上面延伸。我的解决方案是用户充值进钱包的虚拟币,我每天会通过定时任务把热钱包的虚拟币转到冷钱包。这样的话黑客就算黑了我们钱包,他能盗走的币也很少,可以减少平台的损失。
热钱包,我们现在搭建的就属于热钱包,简单来讲就是与外界联网的钱包,充值地址的币,每天都会划转到冷钱包
冷钱包,与外界网络完全隔离,目前市面上也有很多相关的硬件钱包产品
区块链的机制就是一但生成交易就无法篡改和撤回了,我们在开发的时候也要多注意,特别是在转币的时候
utxo,官方解释是未经使用的交易输出,具体介绍可以点击看其他大哥写的详细介绍,utxo介绍
我目前用的服务器配置是aws ubuntu 2c,8g,500g硬盘,下面的配置信息是我给的建议
cpu:2c(同步区块的时候会占用cpu)
内存:8G
硬盘:500G(不差钱上固态,固态同步区块速度会快很多)
区块同步时cpu会怼满,所以你们到时候不要大惊小怪了,这是正常的,等区块同步完成后就会恢复正常
安装也有多种方法,可以在上面地址下载安装文件也行,这里我是直接通过ubuntu的apt下载安装 首先需要添加bitcoin的源:
sudo add-apt-repository ppa:bitcoin/bitcoin
添加源成功之后,需要更新下源:
sudo apt-get update
安装bitcoind:
sudo apt-get install bitcoind
可以选择性的安装bitcoin-qt,在ubuntu-service版本上是不需要bitcoin-qt的,如果是在ubuntu-desktop上面想使用bitcoin-qt的话可以选择安装:
sudo apt-get install bitcoin-qt
直接输入bitcoind命令可以让bitcoind在前台直接运行:
bitcoind
也可以采用后台运行的方式,也可以和我一样用nohup打印一下日志
nohup bitcoind &
通过命令查看钱包版本,以及是否安装成功
bitcoind -version Bitcoin Core Daemon version v0.18.0.0-g2472733a24a9364e4c6233ccd04166a26a68cc65 Copyright (C) 2009-2019 The Bitcoin Core developers Please contribute if you find Bitcoin Core useful. Visit <https: bitcoincore.org> for further information about the software. The source code is available from <https: github.com bitcoin>. This is experimental software. Distributed under the MIT software license, see the accompanying file COPYING or <https: opensource.org licenses mit> This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https: www.openssl.org> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.
启动后钱包会自动同步区块,可以打开日志查看具体同步情况
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
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/
用户在页面进入btc充值页面时,调用后台查询充值地址,如果没有充值地址我们通过btc钱包rpc接口“getnewaddress”创建一个属于用户的充值地址保存到数据库并返回给页面,用户往这个地址转币进行充值。
后台起一个线程或者调度任务根据区块高度扫描当前区块中交易记录,取出来和数据库中充值地址对比,如果是平台用户的充值地址交易记录,保存到区块转账记录表中(表中可设置tx_id为主键,tx_id为区块转账信息唯一标识,不会重复)。
普通用户提交提现表单后,如果提现数量大于设置的审核数量,则需要进到管理后台人工审核,审核通过后同步给提现地址转币,并更新审核状态和修改用户资产信息。
添加调度任务扫描区块转账表中待处理的记录,根据确认数来决定是否进行后续处理
转账目前有多种方式和接口,下面做详细介绍:
是使用离线签名方式的原生交易,适合冷钱包转账交易,大概步骤为先创建交易信息进行签名后,通过返回的hash值,广播出去后即可(广播也可以使用第三方服务进行广播),需要单独设置手续费,设置找零地址;
sendfrom接口,这个接口可以设置指定发送地址;
sendmany接口,这个接口看名字也大概知道,可以批量转账;
sendtoaddress接口,这个接口是使用整个钱包的utxo(简单理解就是整个钱包的可用余额)进行对外转账,好处就是他是把钱包所有的余额汇集一起对外转账,比如说用户提现1btc,如果我用其他接口指定转出地址时,转出地址余额没有1btc就无法转账,但是因为这个接口是把钱包余额加起来对外转,所有可以成功转出。
目前我的项目是设置的定时器每天在不同时间执行三次归集任务,因为用的sendtoaddress转账的接口,所以我每次归集的时候查询钱包余额是否超过归集阈值,超过就做归集操作。
感谢你能够认真阅读完这篇文章,希望小编分享的“Bitcoin Core钱包如何安装与对接”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。