Skip to content

Commit 5addde4

Browse files
committed
chore: update README and add contributions of will-bitlightlabs
1 parent ba6aa92 commit 5addde4

File tree

3 files changed

+56
-48
lines changed

3 files changed

+56
-48
lines changed

README.md

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,25 @@
44
![Lints](https://github.com/BP-WG/bp-node/workflows/Lints/badge.svg)
55
[![Apache-2 licensed](https://img.shields.io/crates/l/bp-node)](./LICENSE)
66

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].
1826

1927
In the future it is planned to upgrade the node into a fully-validating bitcoin node by using
2028
[`bitcoinkernel`] library for validating blocks.
@@ -23,30 +31,31 @@ In the future it is planned to upgrade the node into a fully-validating bitcoin
2331

2432
This repository contains the following crates:
2533

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`);
2836
- `bp-client`: client to work with the daemon and a command-line utility `bp-cli`;
2937
- `bp-rpc`: a shared crate between `bp-node` and `bp-client`.
3038

3139
## Node Architecture
3240

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.
3644

3745
The node daemon has the following components:
3846

3947
- **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;
4250
- **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;
4654
- **Query workers**, thread pool running queries for the client subscriptions in the database.
4755

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.
5059

5160
By default, the node exposes a binary RPC API over TCP, which can be exposed as more high-level APIs
5261
(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
5564

5665
## OS Support
5766

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.
6269

6370
[`bitcoinkernel`]: https://github.com/bitcoin/bitcoin/issues/27587
6471

@@ -75,3 +82,7 @@ framework changes.
7582
[`microservices.rs`]: https://github.com/cyphernet-labs/microservices.rs
7683

7784
[`netservices.rs`]: https://github.com/cyphernet-labs/netservices.rs
85+
86+
[Pandora Prime]: https://pandoraprime.ch
87+
88+
[Bitlight Labs]: https://bitlightlabs.com

src/blocks.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@
22
//
33
// SPDX-License-Identifier: Apache-2.0
44
//
5-
// Written in 2020-2025 by
6-
// Dr Maxim Orlovsky <[email protected]>
5+
// Designed & written in 2020-2025 by
6+
// @will-bitlight <https://bitlightlabs.com>
77
//
88
// Copyright (C) 2020-2024 LNP/BP Standards Association. All rights reserved.
99
// Copyright (C) 2025 LNP/BP Labs, InDCS, Switzerland. All rights reserved.
1010
// Copyright (C) 2020-2025 Dr Maxim Orlovsky. All rights reserved.
1111
//
12-
// Licensed under the Apache License, Version 2.0 (the "License");
13-
// you may not use this file except in compliance with the License.
14-
// You may obtain a copy of the License at
12+
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
13+
// in compliance with the License. You may obtain a copy of the License at
1514
//
16-
// http://www.apache.org/licenses/LICENSE-2.0
15+
// http://www.apache.org/licenses/LICENSE-2.0
1716
//
18-
// Unless required by applicable law or agreed to in writing, software
19-
// distributed under the License is distributed on an "AS IS" BASIS,
20-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21-
// See the License for the specific language governing permissions and
22-
// limitations under the License.
17+
// Unless required by applicable law or agreed to in writing, software distributed under the License
18+
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
19+
// or implied. See the License for the specific language governing permissions and limitations under
20+
// the License.
2321

2422
//! Block importer interface organized into a reactor thread.
2523

src/db.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,23 @@
22
//
33
// SPDX-License-Identifier: Apache-2.0
44
//
5-
// Written in 2020-2025 by
5+
// Designed & written in 2020-2025 by
6+
// @will-bitlight <https://bitlightlabs.com>
67
// Dr Maxim Orlovsky <[email protected]>
78
//
89
// Copyright (C) 2020-2024 LNP/BP Standards Association. All rights reserved.
910
// Copyright (C) 2025 LNP/BP Labs, InDCS, Switzerland. All rights reserved.
1011
// Copyright (C) 2020-2025 Dr Maxim Orlovsky. All rights reserved.
1112
//
12-
// Licensed under the Apache License, Version 2.0 (the "License");
13-
// you may not use this file except in compliance with the License.
14-
// You may obtain a copy of the License at
13+
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
14+
// in compliance with the License. You may obtain a copy of the License at
1515
//
16-
// http://www.apache.org/licenses/LICENSE-2.0
16+
// http://www.apache.org/licenses/LICENSE-2.0
1717
//
18-
// Unless required by applicable law or agreed to in writing, software
19-
// distributed under the License is distributed on an "AS IS" BASIS,
20-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21-
// See the License for the specific language governing permissions and
22-
// limitations under the License.
18+
// Unless required by applicable law or agreed to in writing, software distributed under the License
19+
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
20+
// or implied. See the License for the specific language governing permissions and limitations under
21+
// the License.
2322

2423
use std::cmp::Ordering;
2524
use std::ops::ControlFlow;

0 commit comments

Comments
 (0)