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.服务器硬件配置
- 我目前用的服务器配置是aws ubuntu 2c,8g,500g硬盘,下面的配置信息是我给的建议
- cpu:2c(同步区块的时候会占用cpu)
- 内存:8G
- 硬盘:500G(不差钱上固态,固态同步区块速度会快很多)
2.注意事项
区块同步时cpu会怼满,所以你们到时候不要大惊小怪了,这是正常的,等区块同步完成后就会恢复正常
3.安装钱包
安装也有多种方法,可以在上面地址下载安装文件也行,这里我是直接通过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
4.运行bitcoind
直接输入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/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
5.钱包命令介绍
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/
网友评论