# VLS inside Lampo
### June 5th, 2024 meeting
What we discussed on June 5th, 2024:
- Reviewed the codebase of `lnrod` and analyzed the signer's workflow in lnrod and how it is implemented.
- Explored the frontend's role as a proxy and the function of the RootHandler.
- Explored how keys are implemented in `lampo`
- Compared `KeysManager` in `lampo` and `lnrod`: `lnrod` requires passing the keys_manager throughout, while in `lampo`, injecting it into LampoKeys will be sufficient.
- Talked about implementation of `Logger` and`LampoLogger`
- Need to find a minimal implementation of signer that is running with the lampo node all the time, and for extra security need to implement Grpc transport Signer
Links and Homework:
- An example of CLN integration with VLS: https://hackmd.io/@hedwigcorp/HJ2FFziWa
- Need to setup Core Lightning with VLS.
----
## June 10th, 2024 meeting
- What we discuss last time, was that vls will create a proxy that is a key manager ldk world. So what we need in lampo, is be able to inject the vls key manager inside the `lampo_common::keys`
- How vls is building the keymanager?
- Creating the Protocol Handler:
- Create a Dummy Persister
- Define Allowlist: Set up an allowlist containing specific Bitcoin addresses that are permitted to interact with the system.
- Define a Simple Policy for Network
- Set Up Validator Factory: Initialize a SimpleValidatorFactory using the created policy to validate actions within the network.
- Initialize Clock Components: ClockStartingTimeFactory, StandardClock
- Build Protocol Handler
- User Handler Builder to make InitHandler
- Extract Root Handler from InitHandler
- Create Signer Port (which a wrapper around protocol_handler for making the struct more dynamic)
- Create SignerPortFront using SignerPort, which provide a client RPC interface to the core MultiSigner and Node
- Create a DummySourceFactory
- Create the Frontend which acts like a proxy to handle communication between the Signer and the Node using SignerPortFront and SourceFactory
- Start the frontend
- Then create the KeyManagerClient using the ProtocolHandler
- Why the KeyManager is not defined inside the `vls-proxy`
- Why the create_spending_transaction is not implemented as a `DefaultSpendibleKeysInterface`?
- use `lampo_common` inside the vls
- Complain to me why it is not working :)
## June 17th, 2024 meeting
Some Doubts:
- Many type errors occur because types do not match from lampo_common::ldk and bdk to VLS.
- Need to get bitcoin_core_client in CoreWalletManager::build_wallet function, how should I get it (need for getting new sweep address)
- What dependency should I add into lampo_common, currently I have added all the dependency.
- LamoKeys cannot be implemented inside lampo-common due to a cyclic dependency error; therefore, LampoKeys must be initialized in lampo-vls. Is this ok to you?
- How should I test the signer, need some guidance regarding this, never done any kind of testing beforehand.
- Can you provide some context for https://gitlab.com/lightning-signer/txoo? What is it?
- And there is a field in NodeServices called trusted_oracle_keys which keys they are talking about?
## Meeting 17-06
- Making progress improving VLS API
- Testing is blocking blocked by: https://gitlab.com/lightning-signer/validating-lightning-signer/-/merge_requests/672
## TODO for the next week
- [ ] Fix the lampo-common vls export
- [ ] Implement a LampoKeys trait and find out all the trait method that are needed
- [ ] keep working on ldk update inside vls https://gitlab.com/lightning-signer/validating-lightning-signer/-/merge_requests/672
## Agenda for 08/07
- Local Signer is almost complete, code can be found at https://github.com/VanshulB/lampo.rs/tree/macros/vls-v1/
- Used LampoConf in parameters while initializing the Signer
- Regarding LampoKeys trait - as discussed in PR https://github.com/vincenzopalazzo/lampo.rs/pull/255 so we can use `SignerProvider` trait and Adapter Pattern while integrating Signer
- using lampo_common is blocked due to VLS upgrade
- Need to refactor the code as VLS brings new traits like OutputSpender and other methods in their API in the next release
- Testing is still blocking blocked by: https://gitlab.com/lightning-signer/validating-lightning-signer/-/merge_requests/672
- Regarding VLS Upgrade https://gitlab.com/vincenzopalazzo/validating-lightning-signer/-/tree/macros/ldk-upgrade-119
- It is still not compiling in my machine
- There are a lot of rust-bitcoin error mainly SigHash
### For next week
- Make lampo-vls compatible with lampo
- Remove vls from lampo_common
- make generic `lampo_common::keys::LampoKeys`
- Wait on the https://gitlab.com/lightning-signer/validating-lightning-signer/-/merge_requests/672 to be finished.