bitcoin 基础
Posted chinusyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bitcoin 基础相关的知识,希望对你有一定的参考价值。
比特币是一种免费的开源点对点电子现金系统,完全去中心化,不需要中央服务器或可信方。用户持有自己货币的加密密钥,并在P2P网络的帮助下直接与他人进行交易,以检查双重支出。
一、Testnet
testnet
是用于测试的另一种比特币区块链。测试网币与实际的比特币是分开的,并且不应该有任何价值。这使得应用程序开发人员或比特币测试人员可以进行实验,而不必使用真正的比特币,也不必担心破坏比特币主链。
运行bitcoin-qt
或bitcoind
带-testne
t标志的来使用测试网(或在bitcoin.conf
文件中放入testnet=1
)。
测试网已经有三代了。testnet2
只是第一个用不同的创世区块重置的测试网,因为人们开始用测试网币兑换真钱。Testnet3
是当前的测试网络。它是在0.7版本中引入的,引入了第三个起源块,一个新规则,以避免“难度太高,现在太低,事务验证时间太长”的问题,并包含带有边缘情况事务的块,旨在测试实现的兼容性。2015年12月21日,SegNet被用于测试Wuille的隔离证人提案。
一个可用的测试网络
1.1 测试网络命令
bitcoin-qt.exe -testnet -datadir=..\\btc-test-data -rpcbind=127.0.0.1:18332
1.2 不同点
- 默认的比特币网络协议监听端口是18333(而不是8333)
- 默认的RPC连接端口是18332(而不是8332)
- 引导使用不同的DNS种子。
ADDRESSVERSION
字段的不同值确保没有测试网比特币地址将在生产网络上工作。(0x6F而不是0x00)- 协议消息头字节为0x0B110907(而不是0xF9BEB4D9)
- 测试网上1.0的最低难度等于主网上0.5的难度。这意味着任何测试网难度的主网等效值都是测试网难度的一半。此外,如果在20分钟内没有找到任何块,难度将自动重置为单个块的最小值,之后将恢复到之前的值。
- 一个新的创世块
IsStandard()
检查被禁用,因此可以试验非标准事务。
1.3 创世块
测试网使用与主网络不同的创世块。你可以在这里找到它。测试网使用0.7比特币发布的新创世块重置。
1.4 大小
测试网接收的交易比主区块链少,通常规模要小得多。截至2018年1月,磁盘上的数据大小为14gb,包含大约6年的测试网活动数据。下载这些数据需要大约12gb的网络活动,最高传输速率为2mb /s。
1.5 外部链接
https://testnet-faucet.com/btc-testnet/
Forked/Updated testnet-box
1.5.1 Using with docker
Pull the image
docker pull freewil/bitcoin-testnet-box
运行docker容器
docker映像将在后台运行两个比特币节点,并被附加以允许您键入命令。如果您希望能够从容器外部访问这两个JSON-RPC端口,映像还会从节点公开它们。
docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box
进入容器:
make start
Check the status of the nodes
make getinfo
Creating wallets
bitcoin-cli -datadir=1 createwallet wallet1
bitcoin-cli -datadir=2 createwallet wallet2
Generating blocks
通常在真实的比特币网络上,区块平均每10分钟生成一次。由于这个测试网使用比特币核心(bitcoind)的regtest模式,我们能够使用一个简单的命令立即在专用网络上生成一个区块。
在第一个钱包有余额之前,需要生成至少100个区块
make generate BLOCKS=200
确认第一个钱包上有余额
make getinfo
为第二个钱包生成一个钱包地址
make address2
#bcrt1qpgg8207chnnahky9znjnssd0zgp3cdw9cv2yp9
Sending bitcoins
1.6 区块浏览
Bitcoin Testnet on mempool.space
二、bitcoin-qt 命令使用
2.1 查看帮助
bitcoin-qt.exe -?
-datadir=<dir>
Specify data directory
-blocksdir=<dir>
Specify directory to hold blocks subdirectory for *.dat files (default: <datadir>
)
Options:
-alertnotify=<cmd>
Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)
当收到相关警报或我们看到非常长的分叉时执行命令(cmd中的%s被message替换)
2.2 RPC server options
-rpcbind=<addr>[:port]
绑定到给定地址监听JSON-RPC连接。不要将RPC服务器暴露给不受信任的网络,例如公共internet!除非-rpcallowip
也被传递,否则该选项将被忽略。port
是可选的,覆盖-rpcport
。IPv6使用[host]:port
表示。此选项可以指定多次(默认值:127.0.0.1
和::1
,即localhost
)
-rpcport=<port>
Listen for JSON-RPC connections on <port>
(default: 8332, testnet: 18332, signet: 38332, regtest: 18443)
-rpcuser=<user>
Username for JSON-RPC connections
-rpcpassword=<pw>
Password for JSON-RPC connections
Bitcoin SV节点软件发布升级版本v1.0.8(测试版)
发表时间:2021年5月11日
信息来源:bitcoinsv.io
Bitcoin SV团队于2021年5月11日同时发布了2项升级,分别是
1.Bitcoin SV节点软件v1.0.8测试版本
2.mAPI软件v1.3.0测试版本
Bitcoin SV节点软件v1.0.8(测试版)是在v1.0.7.1基础之上的推荐升级版本;这个全新的软件版本支持向mAPI或自定义应用这类远程终端报告“双花企图”。本次升级还包括多项性能提升,特别是在处理交易间复杂的依赖关系图时的性能提升。
技术细节列示如下:
- 节点开始支持交易的“双花”通知;当发现某个交易输入双花时,会向指定端点发送HTTP通知。(请参考https://github.com/bitcoin-sv-specs/protocol了解更多细节)
- 新的getorphaninfo RPC接口。
- 新的verifyScript RPC接口。
- 新的getmerkleproof2 RPC接口,此为技术标准委员会(TSC)公布的merkle证明标准。
- getsettings RPC接口的输出新增maxstackmemoryusageconsensus参数。
- 即使已知了某笔交易,sendrawtransaction和sendrawtransactions RPC 接口也可以和dontCheckFees一起使用。
- 修改sendrawtransaction和sendrawtransactions RPC接口的返回,可以选择是否包含未确认的交易祖先列表。
- 新的配置参数dustlimitfactor,可以用来定义“粉尘交易”。*
- “粉尘”回收(dust return)交易。*
- 调整了验证异步任务的默认超时时间,以更好的处理链和长图。
- 改变未确认交易的祖先数算法,使用祖先高度而不是祖先数量。
- 提升孤交易池内的交易释放速率。
- 提升cs_main处理时的效率使节点性能更优。
- 改进链的验证。
- 交易在它内存池祖先(in-mempool ancestor)链的高度大于或等于10000时,不会被接受。之前这个限额是1000笔交易。
- 配置参数maxorphantxsize的默认值改为1GB。
- 配置参数maxcollectedoutpoints不再使用,已被移除。
- 重置了STN。
*补充说明:
8.新的命令行选项-dustlimitfactor,可以用来定义“粉尘交易”。
截至目前,交易输出的金额和(花费这个输出)对应的手续费的最小比是3/1。当不满足该条件时,交易会被当做“粉尘”拒绝。
现在可以用新的配置选项“-dustlimitfactor”来设置一个百分比,其默认值仍为300%,但可设置成300%至0%之间的任何值。
如果-dustlimitfactor的值设为0,则任何交易输出都不会被认“粉尘”。
计算“粉尘”阈值的公式如下(整数算术运算):
s = 序列化后的交易输出的大小
d = dustlimitfactor,介于300和0之间的百分比值,默认值300
r = dustrelayfee,取-minrelaytxfee的默认值,从v1.0.8版本开始这个值是250
m = 148,可花费的交易输入的最小字节长度
d * (r * (s + m)/1000)) / 100
注意到由于dustlimitfactor表示的是一个百分比,所以计算时要除以100。
例如:对于含有一个34字节交易输出的典型交易,上述公式计算出的阈值是135聪。
d = 300
s = 34
r = 250
阈值 = (300 * (250 * (34 + 148)/1000)) / 100 = 135
注意到如果使用浮点数算术运算,上述公式计算出的阈值将是136.5聪。
因此在使用默认设置的1.0.8版本中,一个典型的交易输出的金额需要至少是135聪才能不被当做“粉尘”。请注意,由于精度舍入(rounding)的存在,如果dustlimitfactor和dustrelayfee的值设置的非常低,则计算出的“粉尘”阈值可能为0。
9.“粉尘”回收(dust return)交易。
为了接受一种全新的交易类型——“粉尘”回收交易,现在的交易验证规则被适当放宽。这种新的交易类型允许将“粉尘”通过交易费的形式捐赠给矿工来抵御钱包“粉尘攻击”。这对网络而言更为经济,因为它可以通过减少实际不可花费的交易输出来清理钱包和UTXO数据库。 同时完全消除“粉尘攻击”的动机。
一笔交易只有在满足下列所有条件时才会被认为是“粉尘”回收交易:
- 交易只有一个值为0的交易输出(金额为0)
- scriptPubKey形如:
OP_FALSE OP_RETURN n ‘dust’
其中,n是协议标识的长度,例如字符串‘dust’的长度。 - 所有的交易输入都是标准形式或设置了下列配置参数:
acceptnonstdconsolidatiοninput=1(默认值为0) - 必须接受非标交易,例如必须设置下列配置参数:
acceptnonstdtx=1(默认值为1)
请注意,“粉尘”回收交易跟合并交易共享两个配置参数:
- acceptnonstdconsolidationinput(默认值为false)
- minconsolidationfactor(默认为非零值。设置为0意味着禁用合并交易和“粉尘”回收交易)
“粉尘”回收交易示例:
{
'txid': '7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc',
'hash': '7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc',
'version': 1,
'size': 226,
'locktime': 0,
'vin': [
{
'txid': '471e1070d48faf20b599b2291c5c7550f9152d6e3549987d85dae82f2e96e93f',
'vout': 0,
'scriptSig': {
'asm': '61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161c2',
'hex': '4c9561616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161c2'
},
'sequence': 0
}
],
'vout': [
{
'value': Decimal('0.00'),
'n': 0,
'scriptPubKey': {
'asm': '0 OP_RETURN 11 647573745f72657475726e',
'hex': '006a5b0b647573745f72657475726e',
'type': 'nulldata'
}
}
],
'blockhash': '380fe8631752b75ee3ce027bdf80e22f3445f4b620a9585b369fb9a0c3f2677e',
'confirmations': 1,
'time': 1620224004,
'blocktime': 1620224004,
'blockheight': 208,
}
请在此下载可执行文件和源代码:https://download.bitcoinsv.io/bitcoinsv/
如有问题,您可以通过邮件support@bitcoinsv.io或Telegram https://t.me/bitcoinsvsupport联系我们。
感谢您对Bitcoin SV的持续支持!
本公告代表Steve Shadders和Bitcoin SV基础架构团队向您发送。
目前,全球已有超过400个项目构建于Bitcoin SV区块链之上。凭借坚如磐石的协议及超高的网络性能,Bitcoin SV生态系统迅猛发展,我们期待未来出现更多前所未有的商业应用。
- 对比特币区块链开发感兴趣的朋友可以通过CSDN站内私信联系我们,申请加入BSV开发者交流群。
- 同时,您也可以扫描下方二维码,关注比特币协会官方微信公众号——BA资讯,了解更多区块链领域的实时资讯。
以上是关于bitcoin 基础的主要内容,如果未能解决你的问题,请参考以下文章
区块链实战什么是 P2P 网络,区块链和 P2P 网络有什么关系
区块链实战什么是 P2P 网络,区块链和 P2P 网络有什么关系
区块链实战什么是 P2P 网络,区块链和 P2P 网络有什么关系