4
4
![ Lints] ( https://github.com/BP-WG/bp-node/workflows/Lints/badge.svg )
5
5
[ ![ Apache-2 licensed] ( https://img.shields.io/crates/l/bp-node )] ( ./LICENSE )
6
6
7
- Bitcoin blockchain indexing and wallet notification node. It may be considered Electrum server or
8
- Esplora replacement, being faster, providing modern binary API, supporting wallet descriptors,
9
- LN-specific queries, client-side-validation tech like RGB, modern publication-subscribe interfaces,
10
- Noise encryption in network connectivity, asymmetric cryptographic client authentication and many
11
- more.
12
-
13
- The node designed and implemented by [ Dr Maxim Orlovsky] ( https://github.com/dr-orlovsky ) as a part
14
- of [ LNP/BP Labs] ( https://github.com/LNP-BP ) effort in building the foundation for LNP/BP layer 2 and
15
- 3 bitcoin application ecosystem. It is based on other LNP/BP projects such as [ BP Core Lib] ,
16
- [ BP Standard Lib] , [ BP Wallet Lib] and can be easily integrated with the rest of LNP/BP nodes like
17
- [ LNP Node] .
7
+ Bitcoin blockchain indexing and wallet notification node.
8
+ It may be considered Electrum server or Esplora replacement,
9
+ being faster,
10
+ providing modern binary API,
11
+ supporting wallet descriptors,
12
+ LN-specific queries,
13
+ client-side-validation tech like RGB,
14
+ modern publication-subscribe interfaces,
15
+ Noise encryption in network connectivity,
16
+ asymmetric cryptographic client authentication
17
+ and many more.
18
+
19
+ The node designed and implemented by
20
+ [ Dr Maxim Orlovsky] ( https://github.com/dr-orlovsky ) from [ Pandora Prime] and
21
+ [ @will-bitlightlabs ] ( https://github.com/will-bitlightlabs ) from [ Bitlight Labs]
22
+ as a part of [ LNP/BP Labs] ( https://github.com/LNP-BP ) effort
23
+ on building the foundation for LNP/BP layer 2 and 3 bitcoin application ecosystem.
24
+ It is based on other LNP/BP projects such as [ BP Core Lib] , [ BP Standard Lib] , [ BP Wallet Lib]
25
+ and can be easily integrated with the rest of LNP/BP nodes like [ LNP Node] .
18
26
19
27
In the future it is planned to upgrade the node into a fully-validating bitcoin node by using
20
28
[ ` bitcoinkernel ` ] library for validating blocks.
@@ -23,30 +31,31 @@ In the future it is planned to upgrade the node into a fully-validating bitcoin
23
31
24
32
This repository contains the following crates:
25
33
26
- - ` bp-node ` : main indexing daemon, which can be used as an embedded multi-thread service, or
27
- compiled into a standalone binary (` bpd ` );
34
+ - ` bp-node ` : main indexing daemon, which can be used as an embedded multi-thread service,
35
+ or compiled into a standalone binary (` bpd ` );
28
36
- ` bp-client ` : client to work with the daemon and a command-line utility ` bp-cli ` ;
29
37
- ` bp-rpc ` : a shared crate between ` bp-node ` and ` bp-client ` .
30
38
31
39
## Node Architecture
32
40
33
- The node operates as a set of threads, communicating through Crossbeam channels. It leverages
34
- [ ` microservices.rs ` ] and [ ` netservices.rs ` ] crates, which serves as the node non-blocking
35
- reactor-based (see [ ` io-reactor ` ] ) microservice frameworks.
41
+ The node operates as a set of threads, communicating through Crossbeam channels.
42
+ It leverages [ ` microservices.rs ` ] and [ ` netservices.rs ` ] crates,
43
+ which serves as the node non-blocking reactor-based (see [ ` io-reactor ` ] ) microservice frameworks.
36
44
37
45
The node daemon has the following components:
38
46
39
47
- ** Broker** , integrating all services and managing their communications;
40
- - ** RPC** : reactor-based thread managing incoming client connections, notifying them about changes
41
- to the subscribed information;
48
+ - ** RPC** : reactor-based thread managing incoming client connections,
49
+ notifying them about changes to the subscribed information;
42
50
- ** Persistence** , an embedded ReDB database;
43
- - ** Block importer** : a client connecting an integration service (see below) to bitcoin blockchain
44
- provider (Bitcoin Core, other Bitcoin nodes or indexers) receiving downloaded and new blocks and
45
- adding them into the database;
51
+ - ** Block importer** : a client connecting an integration service (see below)
52
+ to bitcoin blockchain provider (Bitcoin Core, other Bitcoin nodes or indexers)
53
+ receiving downloaded and new blocks and adding them into the database;
46
54
- ** Query workers** , thread pool running queries for the client subscriptions in the database.
47
55
48
- In order to operate one also needs to provide a node with an interface to bitcoin blocks integrating
49
- it with either Bitcoin Core, or any other node or indexer.
56
+ To operate, one also needs
57
+ to provide the node with an interface to bitcoin blocks integrating it with either Bitcoin Core,
58
+ or any other node or indexer.
50
59
51
60
By default, the node exposes a binary RPC API over TCP, which can be exposed as more high-level APIs
52
61
(HTTP REST, Websocket-based or JSON-RPC) using special adaptor services.
@@ -55,10 +64,8 @@ By default, the node exposes a binary RPC API over TCP, which can be exposed as
55
64
56
65
## OS Support
57
66
58
- The project currently supports only Linux and UNIX OSes. Support for macOS is currently broken due
59
- to use of a Rust language unstable feature on macOS platform by one of the project dependencies, and
60
- will be recovered soon. Windows support is a work-in-progress, requiring downstream [ ` io-reactor ` ]
61
- framework changes.
67
+ The project currently supports Linux, macOS and UNIX.
68
+ Windows support is a work-in-progress, requiring downstream [ ` io-reactor ` ] framework changes.
62
69
63
70
[ `bitcoinkernel` ] : https://github.com/bitcoin/bitcoin/issues/27587
64
71
@@ -75,3 +82,7 @@ framework changes.
75
82
[ `microservices.rs` ] : https://github.com/cyphernet-labs/microservices.rs
76
83
77
84
[ `netservices.rs` ] : https://github.com/cyphernet-labs/netservices.rs
85
+
86
+ [ Pandora Prime ] : https://pandoraprime.ch
87
+
88
+ [ Bitlight Labs ] : https://bitlightlabs.com
0 commit comments