# VLS Summer of Bitcoin - Recovery Project
## Description
Validating Lightning Signer (VLS) is an open source project which improves the security of the Bitcoin Lightning network. It does so by separating a user’s Lightning private keys and security rule validation from their Lightning node, into a discrete signing device.
This Summer of Bitcoin project aims to enhance the resilience and error recovery capabilities of VLS, ensuring robust handling of scenarios like node or signer crashes, data loss, and power outages.
The goal is to develop comprehensive recovery mechanisms, including state backup and restoration processes, fault tolerance strategies, and detailed logs for error analysis.
## Expected Outcomes
* **Robust Recovery Framework**: Complete recovery procedures and mechanisms (adding HTLC sweeps and justic transactions) that enable VLS to recover from various failures, including node/signer crashes, data loss, and power outages.
* **Comprehensive Testing and Breaking**: Actively attempt to break VLS in creative and comprehensive ways to identify vulnerabilities, ensuring the system can recover from any discovered failures.
* **Documentation and Guidelines**: Create detailed documentation on the recovery processes, including step-by-step guides for users, and best practices for preventing data loss and ensuring transaction integrity. Automate system tests for recovery to the extent possible.
* **Enhanced Fault Tolerance**: Implement improved fault tolerance strategies to minimize the impact of errors and ensure continuous operation.
* **Error Analysis and Logging**: Enhance logging mechanisms to capture detailed error information, facilitating quicker diagnosis and resolution of issues.
## Resources
[VLS Repo ](https://gitlab.com/lightning-signer/validating-lightning-signer)
[VLS How-To](https://gitlab.com/lightning-signer/validating-lightning-signer/-/tree/main/contrib/howto?ref_type=heads#howto-index)
[VLS in Docker](https://gitlab.com/lightning-signer/vls-container)
[VLS Policy Controls](https://gitlab.com/lightning-signer/validating-lightning-signer/-/blob/main/docs/policy-controls.md)
## Skills Required
* Strong background in Rust
* Hands-on experience with Linux, git
* Nice to have: Understanding of Bitcoin Core and Bitcoin Lightning network protocol, C/C++
## Mentors
[Devrandom](https://gitlab.com/devrandom01), [Ken Sedgwick](https://gitlab.com/ksedgwic)
## Difficulty
Medium
## Competency Test
- Install Rust, download the CLN - VLS Integration repo, build and run
- Cause a panic(failure) on purpose while signing a remote commitment, and observe the backtrace in the log