You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+66-69Lines changed: 66 additions & 69 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,17 @@
1
1
# Advanced Wallets
2
2
3
-
A secure, mTLS-enabled cryptocurrency signing server with two operational modes: Advanced Wallet Manager (dedicated signer) and Master Express (API gateway with integrated signing capabilities).
3
+
Advanced wallets are a type of self-custody cryptocurrency wallet that securely enable mutual TLS (mTLS) signing servers with two operational modes:
4
+
5
+
-**Advanced Wallet Manager Mode** - A lightweight, dedicated keygen/signing server that you can use for secure key operations. This mode includes support for wallet recoveries.
6
+
-**Master Express Mode** - An Express application that's the orchestrator between the Advanced Wallet Manager and [BitGo APIs](https://developers.bitgo.com/reference/overview#/). This mode serves as an API gateway with integrated signing capabilities.
7
+
8
+
Security includes:
9
+
10
+
-**mTLS Security** - Client certificate validation for secure communications.
11
+
-**Flexible Configuration** - Environment-based setup with file or variable-based certificates.
4
12
5
13
## Table of Contents
6
14
7
-
-[Overview](#overview)
8
15
-[Architecture](#architecture)
9
16
-[Installation](#installation)
10
17
-[Prerequisites](#prerequisites)
@@ -18,55 +25,45 @@ A secure, mTLS-enabled cryptocurrency signing server with two operational modes:
18
25
-[Production Setup](#production-setup)
19
26
-[License](#license)
20
27
21
-
## Overview
22
-
23
-
This application provides secure cryptocurrency operations with mutual TLS (mTLS) authentication:
24
-
25
-
-**Advanced Wallet Manager Mode**: Lightweight keygen/signing server for secure key operations. Includes support for recovery.
26
-
-**Master Express Mode**: An express app that acts as the orchestrator between the Advanced Wallet Manager and BitGo APIs.
27
-
-**mTLS Security**: Client certificate validation for secure communications
28
-
-**Flexible Configuration**: Environment-based setup with file or variable-based certificates
29
-
30
28
## Architecture
31
29
32
-
-**Advanced Wallet Manager** (Port 3080): Isolated signing server with no internet access, only connects to KMS API for key operations.
33
-
-**Master Express** (Port 3081): API gateway providing end-to-end wallet creation and transaction support, integrating BitGo APIs with secure communication to Advanced Wallet Manager
30
+
-**Advanced Wallet Manager** (Port 3080) - An isolated signing server with no internet access that only connects to the key management service (KMS) API for key operations.
31
+
-**Master Express** (Port 3081) - An API gateway providing end-to-end wallet creation and transaction support, integrating [BitGo APIs](https://developers.bitgo.com/reference/overview#/) with secure communication to Advanced Wallet Manager.
34
32
35
33
## Installation
36
34
37
35
### Prerequisites
38
36
39
-
-**Node.js** 22.1.0 or higher
40
-
-**npm** or **yarn** package manager
41
-
-**OpenSSL** for certificate generation
42
-
-**Docker** and **Docker Compose** (for containerized deployment)
43
-
-**Podman** (alternative to Docker for containerized deployment)
44
-
-**KMS API Implementation** - Advanced Wallet Manager requires a KMS (Key Management Service) API for secure key operations. See implementation guides:
37
+
-**Node.js** 22.1.0 or higher.
38
+
-**npm** or **yarn** package manager.
39
+
-**OpenSSL** for certificate generation.
40
+
-**Docker** and **Docker Compose** for containerized deployment (or you can use **Podman** as alternative to Docker).
41
+
-**KMS API Implementation** - Advanced Wallet Manager requires a KMS API for secure key operations. For example:
@@ -141,7 +138,7 @@ curl -X POST http://localhost:3081/ping
141
138
curl -X POST http://localhost:3081/ping/advancedWalletManager
142
139
```
143
140
144
-
**Note:**`TLS_MODE=disabled` should only be used for local development and testing. Always use mTLS in production environments. See the [Production Setup](#production-setup) section for production mTLS configuration.
141
+
> **Note:**You should only use `TLS_MODE=disabled` for local development and testing. Always use mTLS in production environments. For information about configuring mTLS in production, see the [Production Setup](#production-setup) section.
145
142
146
143
## Configuration
147
144
@@ -162,7 +159,7 @@ curl -X POST http://localhost:3081/ping/advancedWalletManager
162
159
|`ADVANCED_WALLET_MANAGER_PORT`| Port to listen on |`3080`| ❌ |
163
160
|`KMS_URL`| KMS service URL | - | ✅ |
164
161
165
-
**Note:**See [Prerequisites](#prerequisites) for KMS API implementation requirements.
162
+
> **Note:**For KMS API implementation requirements, see the [Prerequisites](#prerequisites).
166
163
167
164
### Master Express Settings
168
165
@@ -236,7 +233,7 @@ curl -X POST http://localhost:3081/ping/advancedWalletManager
236
233
|`KMS_SERVER_CA_CERT`| KMS server CA certificate (alternative) | PEM string |
**Note:**When `TLS_MODE=mtls`, outbound client certificates are required and cannot reuse server certificates for security reasons. In`TLS_MODE=disabled` mode, these certificates are not required.
236
+
> **Note:**For security reasons, when `TLS_MODE=mtls`, outbound client certificates are required and cannot reuse server certificates. When`TLS_MODE=disabled`, these certificates aren't required.
240
237
241
238
## Container Deployment with Podman
242
239
@@ -256,7 +253,7 @@ npm run container:build:advanced-wallet-manager -- --build-arg PORT=3082
256
253
257
254
### Run Containers
258
255
259
-
For local development, you'll need to run both the Advanced Wallet Manager and Master Express containers:
256
+
For local development, you must run both the Advanced Wallet Manager and the Master Express containers:
The OpenAPI specification for Master Express is available at [`masterBitgoExpress.json`](./masterBitgoExpress.json).
383
+
You can vew the OpenAPI specification for Master Express at [`masterBitgoExpress.json`](./masterBitgoExpress.json).
387
384
388
385
To regenerate the API documentation:
389
386
390
387
```bash
391
388
npm run generate:openapi:masterExpress
392
389
```
393
390
394
-
This will generate/update the `masterBitgoExpress.json` file with the latest API specification. You can view this file with any OpenAPI viewer such as:
391
+
This generates or updates the `masterBitgoExpress.json` file with the latest API specification. You can view this file with any OpenAPI viewer such as:
395
392
396
393
-[Swagger Editor](https://editor.swagger.io/)
397
394
-[Redoc](https://redocly.github.io/redoc/)
398
395
- VS Code OpenAPI extensions
399
396
400
397
## Production Setup
401
398
402
-
### Quick Start (With mTLS)
399
+
### Quick Start (with mTLS)
403
400
404
401
For production deployments with proper mTLS security:
For testing, you can use the server's IP address or `localhost` if running locally. In production deployments, configure your DNS or load balancer to point to the appropriate servers.
451
+
For testing, you can use the IP address of the server or `localhost` if you're running it locally. In production deployments, configure your DNS or load balancer to point to the appropriate servers.
455
452
456
453
```bash
457
454
# Test Advanced Wallet Manager (replace localhost with your server IP/hostname)
0 commit comments