news 2026/8/24 17:33:50

bitcore-wallet-service生产部署完全指南:HTTPS、Cluster集群模式与限流配置实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bitcore-wallet-service生产部署完全指南:HTTPS、Cluster集群模式与限流配置实战

bitcore-wallet-service生产部署完全指南:HTTPS、Cluster集群模式与限流配置实战

【免费下载链接】bitcore-wallet-serviceA multisig, HD Bitcoin and Bitcoin Cash wallet service. Used by Copay.项目地址: https://gitcode.com/gh_mirrors/bi/bitcore-wallet-service

bitcore-wallet-service(BWS)是驱动 Copay 的比特币/比特币现金多签名 HD 钱包服务端。本指南面向新手,手把手带你完成生产部署的三大核心配置:HTTPS 加密通信、Node Cluster 多进程集群模式、按 IP 限流防护,让钱包服务从本地开发环境快速走向安全稳定的生产环境。🚀

📦 服务架构总览:部署前先认识它的组件

BWS 并非单一进程,而是由start.sh一次性拉起 7 个 Node.js 服务组成,各服务 PID 写入pids/目录、日志写入logs/目录:

服务入口文件端口
分布式锁(Locker)locker/locker.js3231
消息总线(Message Broker)messagebroker/messagebroker.js3380
区块链监控bcmonitor/bcmonitor.js
邮件通知emailservice/emailservice.js
推送通知pushnotificationsservice/pushnotificationsservice.js
法币汇率fiatrateservice/fiatrateservice.js
主 API 服务(bws)bws.js3232

💡 前置条件:MongoDB(2.6+)默认运行在 27017 端口。完整安装说明见installation.md

1️⃣ 一次准备:克隆与安装

git clone https://gitcode.com/gh_mirrors/bi/bitcore-wallet-service cd bitcore-wallet-service npm install

所有配置集中在根目录 config.js 中:MongoDB 连接(storageOpts)、Locker 地址(lockOpts)、消息总线(messageBrokerOpts)、区块链浏览器(blockchainExplorerOpts)等,改完直接启动即可生效。

🔐 配置 HTTPS:让钱包通信全面加密

bws.js 启动时会读取config.jshttps开关(第 28-43 行),自动切换为 Node 的https模块并加载证书。只需解开以下注释:

// config.js https: true, privateKeyFile: 'private.pem', certificateFile: 'cert.pem', // 若证书链不被 Node 默认信任(如自签/中间 CA),补充完整证书链: CAinter1: 'COMODORSADomainValidationSecureServerCA.crt', CAinter2: 'COMODORSAAddTrustCA.crt', CAroot: 'AddTrustExternalCARoot.crt',

要点:

  • 额外指定ciphers时,服务端会启用honorCipherOrder,按你给的顺序强制加密套件;
  • 若由 Nginx 等反向代理终结 TLS,BWS 本身保持https: false即可。

⚡ 开启 Cluster 集群模式:按 CPU 数扩吞吐、进程崩溃自动复活

bws.js 第 70-92 行的集群逻辑非常清晰:

  • cluster: true时,主进程按 CPU 核心数(或clusterInstances)逐个fork()出 worker;
  • 监听exit事件,任意 worker 崩溃会被自动 fork 替换,并记录错误日志;
  • ⚠️ 两个硬性依赖:集群模式下必须配置 locker server 与 message broker server,否则启动即抛错("When running in cluster mode, locker server need to be configured")。因为进程间必须共享锁与消息发布订阅,不能只靠单进程内存。
// config.js cluster: true, clusterInstances: 4, // 不设置则默认使用全部 CPU 核心数 lockOpts: { lockerServer: { host: 'localhost', port: 3231 } }, messageBrokerOpts: { messageBrokerServer: { url: 'http://localhost:3380' } },

⚠️ 开启集群前,先确认npm start启动的lockermessagebroker两个服务真正就绪,否则 BWS 主进程会立即失败。

小贴士:端口支持环境变量覆盖,process.env.BWS_PORT优先级高于config.port(默认 3232),多环境部署时很实用。

🛡️ 限流配置:内置 IP 节流,防刷钱包创建

lib/expressapp.js 基于express-rate-limit内置了两组限流器,默认对「创建钱包」和「费率估算」两类 API 按 IP 生效:

限流对象API 路由时间窗口延迟起始次数每次延迟封禁阈值
创建钱包POST /v1 或 v2 /wallets/1 小时8 次后3 秒15 次
费率估算GET /v1 或 v2 /feelevels/10 分钟5 次后0.3 秒10 次

默认值定义在 lib/common/defaults.js 第 106-121 行的Defaults.RateLimit

createWallet: { windowMs: 60 * 60 * 1000, // 1 小时窗口 delayAfter: 8, // 第 8 次请求后开始减速 delayMs: 3000, // 每次追加 3 秒延迟 max: 15, // 超过 15 次直接封禁 1 小时 message: 'Too many wallets created from this IP, please try again after an hour', }
  • 调整阈值直接修改defaults.js对应字段即可;
  • 限流器仅在!opts.ignoreRateLimiter时启用,开发/测试环境可借此跳过。

🚀 启动、停止与验证

npm start # 执行 start.sh:nohup 后台启动 7 个服务,管理 pid 与日志 npm stop # 执行 stop.sh:按 pid 文件逐个停止

验证清单:

  1. logs/bws.log出现 "BWS running [Instance:0..3]",说明集群 worker 全部就绪;
  2. curl -k https://你的域名:3232/bws/api/v1/version/应返回{"serviceVersion":"2.5.1"}
  3. ps确认 worker 进程数与clusterInstances一致。

📌 所有 API 挂载在config.jsbasePath(默认/bws/api)前缀之下,健康检查时别漏了路径。

✅ 生产部署检查清单

  • MongoDB 可连通,数据库名bws
  • 证书私钥权限受限,防止泄露
  • 集群模式下 locker(3231)与 messagebroker(3380)运行正常
  • 限流阈值已按业务量调整
  • logs/pids/纳入监控
  • 防火墙仅开放 3232(对外),3231/3380 保持内网

按照以上三步——HTTPS、Cluster、限流——配置到位后,bitcore-wallet-service 就具备了面向真实用户的生产服务能力。🎉

【免费下载链接】bitcore-wallet-serviceA multisig, HD Bitcoin and Bitcoin Cash wallet service. Used by Copay.项目地址: https://gitcode.com/gh_mirrors/bi/bitcore-wallet-service

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 17:33:41

单片机毕业设计-基于 51/STM32 单片机的室内安防环境监测与继电器联动控制系统设计 基于 51/STM32 单片机的环境参数采集、阈值调控与防盗报警系统设计(017504)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/24 17:33:19

Binder深度揭秘:Bowline中Ruby模型与HTML双向数据绑定的终极指南

Binder深度揭秘:Bowline中Ruby模型与HTML双向数据绑定的终极指南 【免费下载链接】bowline Ruby/JS GUI and Binding framework (deprecated) 项目地址: https://gitcode.com/gh_mirrors/bo/bowline 在桌面应用框架 Bowline 中,Binder 是实现 Rub…

作者头像 李华
网站建设 2026/8/24 17:31:25

多智能体协同路由:级联感知与时空Sidecar架构实践

1. 项目概述:当多智能体遇上“级联效应” 最近在折腾一个多智能体协同路由的项目,核心要解决的问题,听起来有点绕,但场景其实很常见:想象一下,在一个大型的物流中心,你有几十台AGV小车&#xff…

作者头像 李华
网站建设 2026/8/24 17:29:54

zdict隐藏彩蛋:查完单词随机蹦出程序员笑话的pyjokes惊喜功能

zdict隐藏彩蛋:查完单词随机蹦出程序员笑话的pyjokes惊喜功能 【免费下载链接】zdict The last online dictionary CLI framework you need. 项目地址: https://gitcode.com/gh_mirrors/zd/zdict zdict 是一款免费的命令行在线词典框架(CLI dicti…

作者头像 李华
网站建设 2026/8/24 17:28:24

不想折腾环境配置?OpenClaw 小龙虾 AI Windows 快速搭建指南

本地部署 OpenClaw|Windows 搭建可执行任务的 AI 数字员工 核心亮点:图形化一键部署、内置全套运行依赖、本地数据留存、28 万 Tokens 额度 Windows 2.9.3 下载地址:https://xiake.yun/api/download/package/22?promoCodeIV4E9B04A80C Mac…

作者头像 李华