Skip to content

Commit 45c0fbf

Browse files
committed
Add README section for Development.
1 parent 4a5fd28 commit 45c0fbf

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,36 @@ in progress.
6464
LNURL-auth.
6565
VSS is also integrated with [LDK-node] v0.4.x as alpha support.
6666

67+
### Development
68+
69+
* **Build & Deploy**: Refer to language specific folder for instructions related to build and deploy of VSS.
70+
* **Hosting**: VSS can either be self-hosted or deployed in the cloud. If a service provider is hosting VSS for multiple
71+
users, it must be configured with **HTTPS**, **Authentication/Authorization**, and **rate-limiting**.
72+
* **Authentication and Authorization**: Currently, the VSS-server
73+
supports [JWT](https://datatracker.ietf.org/doc/html/rfc7519)-based authentication and authorization, and can run
74+
without authentication for local testing or in trusted setups. The VSS-rust-client supports LNURL-auth & JWT based
75+
authentication and authorization. Switching to simple HTTP header authentication is straightforward by adding another
76+
implementation. Note that the security of authentication heavily relies on using HTTPS for all requests.
77+
* **Scaling**: VSS itself is stateless and can be horizontally scaled easily. VSS can be configured to point to a
78+
PostgreSQL cluster, and further scaling considerations need to be addressed in the PostgreSQL cluster.
79+
* **Using with LDK-node**: [LDK-node] can be easily configured to run with VSS as primary storage. It is integrated in
80+
LDK-node (written in Rust) using [VSS-rust-client], and there is also support for other languages such as Swift,
81+
Kotlin and Python through [UniFFI] bindings.
82+
```rust
83+
use ldk_node::Builder;
84+
fn main() {
85+
let mut node_builder = Builder::new();
86+
...
87+
let node = node_builder.build_with_vss_store_and_fixed_headers(vss_endpoint, store_id, HashMap::new()).unwrap();
88+
node.start().unwrap();
89+
...
90+
...
91+
}
92+
```
93+
* **Using with Other Applications**: VSS is designed to store application-related metadata. Clients can use
94+
the [VSS-rust-client] directly for this purpose. This can help provide a complete user data recovery solution for
95+
applications, as well as enable turn-key multi-device support in the future.
96+
6797
### Summary
6898

6999
In summary, VSS is an open-source project that offers a server-side cloud storage solution for non-custodial Lightning
@@ -82,3 +112,7 @@ development of VSS, you can reach out to us in the [LDK Discord] in the `#vss` c
82112
[LDK-node]: https://github.com/lightningdevkit/ldk-node
83113

84114
[LDK-Roadmap]: https://lightningdevkit.org/blog/ldk-roadmap/#vss
115+
116+
[LDK Discord]: https://discord.gg/5AcknnMfBw
117+
118+
[UniFFI]: https://mozilla.github.io/uniffi-rs/

0 commit comments

Comments
 (0)