摘要
比特币测试网是一个公开的、并行的区块链,用于在不冒真实资金风险的情况下测试比特币应用。开发者使用它发送测试交易、验证钱包集成,并使用 bitcoind 和 bitcoin-cli 等工具进行练习。本指南解释了测试网与主网和 regtest 的区别,如何获取测试网币,以及如何将您的应用连接到可靠的测试网 RPC 端点。
快速建议:何时使用比特币测试网与 Regtest
如果您正在构建比特币应用,您需要一个安全的环境来测试交易、钱包逻辑和区块处理。比特币测试网是一个公共网络,模拟主网行为,但使用无价值的币。它非常适合集成测试、钱包开发,以及任何需要与实时对等网络交互的场景。
然而,对于大多数开发,regtest 模式通常是更好的选择。Regtest 为您提供一个私有区块链,您可以控制区块创建,使其在单元测试和 CI 管道中更快、更确定。当您需要针对具有真实交易传播和内存池行为的公共网络进行测试时,请使用测试网。
如果您需要可靠的测试网 RPC 端点而无需运行自己的节点,OnFinality 提供托管的比特币测试网 RPC 服务。查看我们的 RPC 定价 和 支持的网络 了解详情。
什么是比特币测试网?
比特币测试网是一个用于测试的替代区块链。它运行与主网相同的共识规则,但使用没有现实价值的测试网币(tBTC)。这允许开发者在不承担财务风险的情况下试验交易、智能合约(通过侧链)和钱包功能。
测试网是由社区维护的公共资源。它不是私有沙盒——任何人都可以加入,网络会经历真实的交易流量。这使得它对于测试您的应用在现实条件下(如内存池拥塞和区块重组)的行为非常有用。
测试网与主网与 Regtest:主要区别
| 特性 | 主网 | 测试网 | Regtest |
|---|---|---|---|
| 币值 | 真实 | 无 | 无 |
| 网络访问 | 公共 | 公共 | 私有 |
| 区块创建 | ~10 分钟 | ~10 分钟 | 即时(按需) |
| 用途 | 生产 | 集成测试 | 单元测试、CI |
| 需要水龙头 | 否 | 是 | 否 |
| 交易限制 | 标准 | 放宽 | 无 |
测试网放宽了一些标准交易检查,允许您测试可能在主网上禁用的功能。但是,由于它是一个共享网络,您不应滥用它——水龙头和节点由志愿者提供。
如何获取测试网比特币(水龙头)
要在测试网上发送交易,您需要 tBTC。您可以从公共水龙头获取。这些服务向测试网地址发送少量测试网币。常见的水龙头包括:
- Coinfaucet.eu
- 社区网站上列出的比特币测试网水龙头
使用水龙头时,请确保您提供有效的测试网地址。测试网地址通常以 m 或 n(对于 P2PKH)或 tb1(对于 SegWit)开头。不要将主网 BTC 发送到测试网地址——它们不兼容。
设置比特币测试网节点
要与测试网交互,您可以使用 Bitcoin Core 运行自己的节点。以下是基本设置:
- 下载并安装 Bitcoin Core。
- 配置
bitcoin.conf以使用测试网:
# bitcoin.conf
testnet=1
server=1
rpcuser=yourusername
rpcpassword=yourpassword
- 以测试网模式启动
bitcoind:
bitcoind -testnet -daemon
-
等待节点同步。测试网区块链比主网小,但仍需时间。
-
使用
bitcoin-cli与节点交互:
bitcoin-cli -testnet getblockchaininfo
这将显示您节点的同步状态、区块高度和网络信息。
连接到比特币测试网 RPC 端点
如果您不想运行完整节点,您可以使用像 OnFinality 这样的托管 RPC 提供商。这为您提供公共或私有端点,而无需同步和维护节点的开销。
OnFinality 提供比特币测试网 RPC 端点,您可以直接在应用中使用。例如,您可以进行 JSON-RPC 调用来查询区块链数据:
curl -X POST https://bitcoin-testnet.rpc.onfinality.io \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"1.0","id":1,"method":"getblockchaininfo","params":[]}'
将 URL 替换为 OnFinality 为比特币测试网提供的实际端点。查看 网络页面 获取最新端点详情。
使用 JavaScript (bitcoinjs-lib) 与比特币测试网交互
对于 Web 或 Node.js 应用,您可以使用 bitcoinjs-lib 等库来创建和广播交易。以下是生成测试网地址的示例:
const bitcoin = require('bitcoinjs-lib');
const network = bitcoin.networks.testnet;
const keyPair = bitcoin.ECPair.makeRandom({ network });
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey, network });
console.log('Testnet address:', address);
要广播交易,您需要连接到测试网节点或 RPC 端点。您可以使用 bitcoin-cli 或像 bitcoin-rpc 这样的库来发送原始交易。
常见陷阱与故障排除
1. 水龙头未发送币
水龙头可能暂时资金不足或需要请求间隔。尝试不同的水龙头或等待几分钟。
2. 交易未确认
测试网区块大约每 10 分钟挖出,但有时网络很慢。在像 mempool.space/testnet 这样的测试网浏览器上检查内存池,看看您的交易是否待处理。您可能需要增加费用。
3. 错误的网络地址
确保您使用测试网地址。发送到主网地址将导致资金丢失(即使它们是测试网币)。
4. 节点同步问题
如果您的节点未同步,请检查您的互联网连接和磁盘空间。您也可以使用 bitcoin-cli -testnet getblockcount 查看当前区块高度并与浏览器进行比较。
监控您的测试网节点
如果您运行自己的节点,您应该监控其健康状况。使用 bitcoin-cli 检查同步状态和网络连接:
bitcoin-cli -testnet getnetworkinfo
bitcoin-cli -testnet getpeerinfo
对于生产级监控,请考虑使用处理正常运行时间和扩展的托管 RPC 服务。OnFinality 提供具有监控和故障转移的专用节点,如我们的 专用节点 页面所述。
关键要点
- 比特币测试网是一个公共测试网络,使用无价值的币,非常适合集成测试。
- 由于其确定性,Regtest 更适合单元测试和 CI。
- 使用水龙头获取 tBTC,但注意不要滥用网络。
- 您可以运行自己的节点或使用像 OnFinality 这样的托管 RPC 提供商。
- 始终验证您使用的是测试网地址和正确的 RPC 端点。
常见问题解答
比特币测试网和 Regtest 有什么区别?
测试网是一个公共网络,有真实的节点和区块,而 regtest 是一个私有网络,您控制区块创建。Regtest 对于开发来说更快、更可预测。
如何获取测试网比特币?
您可以从公共水龙头获取 tBTC。搜索“Bitcoin testnet faucet”并输入您的测试网地址以接收免费币。
我可以将比特币测试网用于生产吗?
不,测试网仅用于测试。币没有价值,网络可能会重置或遇到问题。生产请使用主网。
OnFinality 支持比特币测试网 RPC 吗?
是的,OnFinality 提供比特币测试网 RPC 端点。查看我们的 网络页面 了解详情和端点 URL。
如何从测试网切换到主网?
在您的配置中,将 testnet=1 改为 testnet=0 或删除该行。您需要同步主网区块链,这要大得多。