Closed
Description
For background and an overview of the plan, see the LDK Roadmap.
This issue describes only execution plan specific to VSS.
Phase-I:
Overall: Phase-I covers single device usage, where a lightning node uses vss as primary storage for critical data(lightning state machine).
Tasks:
VSS-Server Side :
- Model/Interface design for VSS Service (Add basic Get and Put Api signatures along with protobuf setup #1), Add GetKeysSummary Api Signature/protos #4)
- Protobuf-generation setup for Server side ((Add initial PostgreSQL implementation for get & put operations #5))
- DB Schema ((Add initial PostgreSQL implementation for get & put operations #5))
- Service setup (REST) for VSS (Add GetKeysSummary Api Signature/protos #4)
- JOOQ generation setup for VSS-DB ((Add initial PostgreSQL implementation for get & put operations #5))
- Api Implementation for GetObject (Add initial PostgreSQL implementation for get & put operations #5)
- Api Implementation for PutObject (Add initial PostgreSQL implementation for get & put operations #5)
- Api Implementation for ListKeysVersions (Add Implementation for ListKeyVersions Api and AbstractKVStore tests for the same #8)
- Implement globalVersion/key-level concurrency checks for multi-device use in all of above API's (Add initial PostgreSQL implementation for get & put operations #5, Add Implementation for ListKeyVersions Api and AbstractKVStore tests for the same #8)
- Containerized Tests for Postgres implementation of Get, Put, ListKeyVersions and global/key-level versioning checks (Add AbstractKVStoreIntegrationTest and PostgresImpl Test #6)
- REST Controllers/ Api handlers for all the above api's (Depends on all of above) ( Add AbstractVssApi, get/put/list api handlers #10) (Add GetObjectApiTest, PutObjectsApiTest, ListKeyVersionsApiTest #12)
- Dependency Injection Setup (Base DependencyInjection setup #11)
- Connection management and pooling for server (Base DependencyInjection setup #11)
- Testing (Basic testing done with just rust client-side, to do more testing after ldk-node integration)
- Create Delete Api and add delete in tx support in write api (Add Delete functionality #15, Add delete_object fn to client vss-rust-client#7)
- Allow non-conditional put/delete operations (Add Non-conditional Put/Delete functionality #17)
- Docker support in vss-server (Read application properties from env first and add Docker configuration. #32)
- Usage Guide / Docs
VSS-Client Side
- Protobuf-generation setup for Client side (rust) (Add rustfmt and Github CI vss-rust-client#2)
- Rust fmt and CI setup (Add rustfmt and Github CI vss-rust-client#2)
- Basic HTTP thin client making calls to vss (Add VSS Http thin client implementation for get/put/listKeyVersions api's vss-rust-client#1)
- Tests for thin-client (Add Unit tests for VssAccessor vss-rust-client#3)
- LDK-Node integration (Depends on LDK-Node Storage PR) (Add VSS Support in ldk-node ldk-node#158)
- CI for ldk-node:vss integration
- Client-side encryption before storing objects in vss.
- Document public methods in vss-client side.
- Bindings support in ldk-node for build_with_vss_store
- Dyn AuthMethod in vss-client
- LnUrl Auth support in vss-client
- Jwt authorizer support in vss-server
- Usage Guide / Docs
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Done