当前内存池信息
已占内存: 272.13 MB
交易数量: 102,021
总交易费: 1.04 BTC
总交易大小: 48.20 vMB
最低内存池费率: 1 sat/byte
最低转发费率: 1 sat/byte
未广播交易数量: 1
内存池 (mempool) 是交易的暂存区, 矿工挖矿时会从内存池选择交易打包进区块。凡是进入内存池中的交易都是经过验证的有效的交易。
在节点收到一笔交易后, 首先会验证交易的有效性, 比如检查交易的签名是否正确、交易费率是否大于节点设置的费率、内存池中是否有花费相同输入的交易等。如果交易通过了验证, 则会被添加到内存池中并转发到已知的其它网络节点。
内存池中的交易(子)可以花费另一个仍在内存池中的交易(父)的输出, 这两个交易可以称作父子交易。打包时, 父交易必须排在子交易前面, 可以是同一个区块, 也可以是不同区块。
子交易也可以有子交易, 但是有一个限制:从初始的父交易开始, 最多只能有 25 个后代交易。
如果一笔交易的手续费太低, 它可能永远不会被打包进区块。因为矿工会优先选择手续费高的交易。这种情况下, 交易会在内存池中停留一段时间, 然后被节点移出内存池。这个时间默认是 2 周。
节点设置
如果你本地正在运行一个 bitcoin-core
节点, 你可以在 bitcoin.conf
文件中配置内存池的一些参数:
mempoolexpiry
- 内存池中交易的最大时间限制, 默认为 336小时(2周)maxmempool
- 设置内存池的最大大小, 默认 300 MB, 超过时会移除低费率的交易mempoolreplacement
- 设置内存池中交易的替换策略, 有以下取值:1
- 默认值, 允许所有交易的替换0
- 禁止替换fee
- 只允许费率更高的替换fee,output
- 只允许费率更高和添加新输出的替换
mempoolminfee
- 设置内存池中交易的最低费用, 默认值为 0.00001, 表示 1 sat/byte (如果没有强制设置, 可能会自动调整)minmempoolfee
- 内存池中交易的最低费用, 默认值为 0.00001, 表示 1 sat/byteminrelaytxfee
- 设置节点接受的最低费用, 低于这个值将不会转发交易, 默认值为 0.00001, 表示 1 sat/bytelimitancestorcount
- 交易有未确认祖先交易数量。默认值为 25limitancestorsize
- 交易有未确认祖先交易的总大小。默认值为 101000, 表示 101 kvBlimitdescendantcount
- 交易有未确认后代交易数量。默认值为 25limitdescendantsize
- 交易有未确认后代交易的总大小。默认值为 101000, 表示 101 kvB
相关RPC
获取节点内存池信息
返回值
名称 | 类型 | 描述 |
---|---|---|
loaded | boolean | 内存池是否已加载 |
size | number | 内存池中交易数量 |
bytes | number | 内存池中交易总大小 |
usage | number | 内存池占用的内存大小 |
maxmempool | number | 内存池的最大大小 |
mempoolminfee | number | 内存池中交易的最低费用 |
minrelaytxfee | number | 节点接受的最低费用 |
unbroadcastcount | number | 未广播的交易数量 |
获取内存池所有交易信息
参数列表
参数名 | 类型 | 必选 | 默认值 | 描述 |
---|---|---|---|---|
verbose | boolean | false | 是否返回交易详情 | |
mempool_sequence | boolean | false | 每次内存池状态改变都会自增的序列号 |
获取内存池中某交易详情
参数列表
参数名 | 类型 | 必选 | 默认值 | 描述 |
---|---|---|---|---|
txid | string | - | 交易ID |
重要返回值
名称 | 类型 | 描述 |
---|---|---|
vsize | number | 交易的虚拟大小 |
weight | number | 交易的权重, witness 数据占 1/4, 其他数据占 1 |
fee | number | 交易的手续费 |
time | number | 交易进入内存池的时间 |
height | number | 交易进入内存池时的区块高度 |
depends | array | 交易的依赖交易 |
spentby | array | 花费这笔交易输出的交易 |
descendantcount | number | 交易的后代交易数量 |
descendantsize | number | 交易的后代交易总大小 |
ancestorcount | number | 交易的祖先交易数量 |
ancestorsize | number | 交易的祖先交易总大小 |
获取内存池中特定交易的所有祖先交易信息
参数列表
参数名 | 类型 | 必选 | 默认值 | 描述 |
---|---|---|---|---|
txid | string | - | 交易ID | |
verbose | boolean | false | 是否返回交易详情 |
获取内存池中特定交易的所有后代交易信息
参数列表
参数名 | 类型 | 必选 | 默认值 | 描述 |
---|---|---|---|---|
txid | string | - | 交易ID | |
verbose | boolean | false | 是否返回交易详情 |