BitcionCore⽬录说明、使⽤说明、f配置说明⼀、⽬录结构/层级
⼆、⽬录内容
⽐特币核⼼⽂档 内容总览。
该数据,索引和⽇志⽂件通过 Oracle Berkeley DB 使⽤,这是⽐特币使⽤的嵌⼊式键/值对数据存储。区块⼦⽬录【v0.8 及以上版本】
包含区块链数据。
链状态⼦⽬录【v0.8 及以上版本】
LevelDB 数据库,具有所有当前未花费的交易输出的紧凑表达和关于它们来源交易的⼀些元数据。 此处的数据对验证新传⼊区块和交易是必须的。 从理论上讲,它可以从区块数据重建(参阅 -reindex 命令⾏选项),但这需要相当长的时间。 如果没有它,理论上你仍然可以进⾏验证,但这意味着对于所花费的每个输出,通过区块(截⾄ 2017 年 11 ⽉区块总⼤⼩为 150GB)进⾏全⾯扫描。
锁⼦⽬录【v0.8 及以上版本】
包含“撤销”数据。
你可以把区块当作链状态的“补丁”(它们消耗⼀些未花费的输出,并⽣成新的输出),并把撤销数据当作反向补丁。 它们是回滚链状态所必须的,在重组时是必要的。
个⼈⾝份识别数据【v0.8 及以上版本】
如果你希望向朋友发送区块链,避免它们⼤量下载,这部分可能对你有⽤。
其他的⽂件和⽬录(blocks, blocks/index, chainstate)可以安全地传输/存档,因为它们包含仅与公共区块链有关的信息。
转让
“区块”和“链状态”⽬录中的数据库⽂件是跨平台的,可以在不同的平台间进⾏复制安装。 这些⽂件统称为节点的“区块数据库”,表⽰节点在同步过程中下载的所有信息。 换句话说,如果将 A 节点数据⽬录的区块数据库复制到 B 节点的数据⽬录,B 节点将具有与 A 节点⼀样的同步百分⽐。 这通常⽐再次进⾏普通初始化同步快得多。但是,当你以这种⽅式复制某⼈的数据库,你必须绝对信任他。 ⽐特币核⼼将其区块数据库⽂件当作 100% 准确且值得信赖,⽽在正常初始化同步期间,它将对端提供的每个区块视为⽆效,直到另有证明为⽌。 如果攻击者能够修改你的区块数据⽂件,那么他们可以做各种导致你丢失⽐特币的邪恶事件。 因此,你应该只在你个⼈的控制下从别⼈那⾥复制区块数据库,并且只能通过安全连接复制。
每个节点都有⼀个唯⼀的区块数据库,并且所有⽂件都是⾼可连接的。 所以,如果你把⼀个数据⽬录中的“区块”或“链状态”⽬录中的⼏个⽂件复制到另⼀个数据⽬录中,这⼏乎肯定会导致第⼆个节点崩溃或在未来的某个随机点卡住。 如果你想把区块数据库从⼀个数据⽬录复制到另⼀个数据⽬录,必须删除旧数据库并⼀次复制全部⽂件。 复制时必须关闭两个节点。
只写⼊“区块”⽬录中编号最⼤的⽂件。之前的⽂件永远不会改变。 此外,当访问这些区块 blk.dat ⽂件时,通常按⾼度顺序访问它们。因此,可以把“区块”⽬录或 blk.dat ⽂件的某个⾃⼰单独符号链接到磁存储驱动器上⽽不会造成太⼤的性能损失(参阅拆分数据⽬录),以及如果两个节点以相同的区块数据库启动(由于前⾯描述的复制),后续同步运⾏将⾮常有效。
⼆、使⽤及 f 配置说明
编译后的⼏个主要程序
我们现阶段主要学习bitcoind这个程序,这个程序的启动参数⼤致如下:
bitcoind -daemon 启动
bitcoin-cli stop 停⽌
它启动后,你会发现与你的节点基本交互有⽤下⾯的命令: getblockchaininfo, getnetworkinfo, getnettotals, getwalletinfo, stop,和help。
//bitcoind 命令通⽤格式
bitcoind [选项]
bitcoind [选项] <;命令> [参数] 将命令发送到 -server 或 bitcoind
bitcoind [选项] help 列出命令
bitcoind [选项] help <;命令> 获取该命令的帮助
//bitcoind常见命令
-conf=<⽂件名> 指定配置⽂件(默认:f)
-pid=<⽂件名> 指定 pid (进程 ID)⽂件(默认:bitcoind.pid)
-gen ⽣成⽐特币
-gen=0 不⽣成⽐特币
-min 启动时最⼩化
-splash 启动时显⽰启动屏幕(默认:1)
-datadir=<⽬录名> 指定数据⽬录
-dbcache=<n > 设置数据库缓存⼤⼩,单位为兆字节(MB)(默认:25)</n>
-dblogsize=<n > 设置数据库磁盘⽇志⼤⼩,单位为兆字节(MB)(默认:100)</n>
-timeout=<n > 设置连接超时,单位为毫秒</n>
-proxy=<ip:端⼝ > 通过 Socks4 代理链接</ip:端⼝>
-dns addnode 允许查询 DNS 并连接
-port=<;端⼝> 监听 <;端⼝> 上的连接(默认:8333,测试⽹络 testnet:18333)
-maxconnections=<n > 最多维护 <n >个节点连接(默认:125)</n></n>
-addnode=<ip > 添加⼀个节点以供连接,并尝试保持与该节点的连接</ip>
-connect=<ip > 仅连接到这⾥指定的节点</ip>
-irc 使⽤ IRC(因特⽹中继聊天)查节点(默认:0)
-listen 接受来⾃外部的连接(默认:1)
-dnsseed 使⽤ DNS 查节点(默认:1)
-banscore=<n > 与⾏为异常节点断开连接的临界值(默认:100)</n>
-bantime=<n > 重新允许⾏为异常节点连接所间隔的秒数(默认:86400)</n>
-
maxreceivebuffer=<n > 最⼤每连接接收缓存,<n >*1000 字节(默认:10000)</n></n> -maxsendbuffer=<n > 最⼤每连接发送缓存,<n >*1000 字节(默认:10000)</n></n> -upnp 使⽤全局即插即⽤(UPNP)映射监听端⼝(默认:0)
-detachdb 分离货币块和地址数据库。会增加客户端关闭时间(默认:0)
-paytxfee=<amt > 您发送的交易每 KB 字节的⼿续费</amt>
leveldb使用-testnet 使⽤测试⽹络
-debug 输出额外的调试信息
-logtimestamps 调试信息前添加[时间戳](8btc/article-165-1.html)
-printtoconsole 发送跟踪/调试信息到控制台⽽不是 debug.log ⽂件
-printtodebugger 发送跟踪/调试信息到调试器
-rpcuser=<⽤户名> JSON-RPC 连接使⽤的⽤户名
-
rpcpassword=<;密码> JSON-RPC 连接使⽤的密码
-rpcport=<port > JSON-RPC 连接所监听的 <;端⼝>(默认:8332)</port>
-rpcallowip=<ip > 允许来⾃指定 <ip >地址的 JSON-RPC 连接</ip></ip>
-rpcconnect=<ip > 发送命令到运⾏在 <ip >地址的节点(默认:127.0.0.1)</ip></ip> -blocknotify=<;命令> 当最好的货币块改变时执⾏命令(命令中的 %s 会被替换为货币块哈希值)
-upgradewallet 将钱包升级到最新的格式
-keypool=<n > 将密匙池的尺⼨设置为 <n >(默认:100)</n></n>
-rescan 重新扫描货币块链以查钱包丢失的交易
-checkblocks=<n > 启动时检查多少货币块(默认:2500,0 表⽰全部)</n>
-checklevel=<n > 货币块验证的级别(0-6,默认:1)</n>
**SSL 选项:**
-rpcssl 使⽤ OpenSSL(https)JSON-RPC 连接
-rpcsslcertificatechainfile=<⽂件.cert> 服务器证书⽂件(默认:)
-rpcsslprivatekeyfile=<⽂件.pem> 服务器私匙⽂件(默认:server.pem)
-rpcsslciphers=<;密码> 可接受的密码(默认:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)
这⾥⾯⼤部分参数都可以省略,转⽽使⽤配置⽂件进⾏配置,因为使⽤配置⽂件更⽅便些,所以这⾥我们使⽤配置⽂件进⾏配置,在linux
下时,f的默认路径为$HOME/.f,我们可以从bitcoin源码的share/examples到⼀份样本拷贝过去并进
⾏修改,如下所⽰:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论