“Non-custodial” is not a security model on Lightning.
Because signing must be online, the real question is:
If your node is compromised, what can the attacker do?
AMA with @VLSProject happening now!
Join us for discussion of using a signer and policies to mitigate the risks of running a lightning node.
stacker.news/items/1584228
VLS refuses to sign a channel state you have already revoked.
Replaying an old state is a classic Lightning theft.
The signer tracks which states are dead and will not sign them.
TOMORROW: Stacker News AMA with @VLSProject!
Join us to discuss Lightning security and how Validating Lightning Signer works.
🗓️ Tuesday, 29 September 2026
⏰ 10AM Texas time, 1500 UTC
📍 stacker.news/~AMA
Picture an attacker taking full control of your Lightning node tonight.
With keys on the node, the funds are gone.
With VLS, the attacker can ask it to sign, but every request is checked against your channel state and limits first.
A VLS rule you can set: velocity limits.
VLS caps how much value can leave a channel in a given window.
A node trying to drain funds through many small payments hits the cap and stops.
On most Lightning setups the node holds the keys and can sign anything.
VLS moves the keys to a separate signer that checks each request first, so a compromised node can no longer sign whatever it wants.
📢 Stacker News AMA Announcement: @VLSProject!
The team from the Validating Lightning Signer project will be joining us to talk lightning security and using a dedicated signer with lightning.
🗓️ Tuesday, 29 September 2026
⏰ 10AM Texas time, 1500 UTC
📍 stacker.news/~AMA
A VLS rule you can set: a cap on how much a single payment can move.
A compromised node cannot push one large payment out, because the signer rejects anything over the limit.
VLS is a separate signer for your Lightning node.
The node asks it to sign.
VLS signs only if the request matches valid channel state and the limits you set.
That is the whole job.
A VLS rule you can set: channel closes may only pay out to addresses you approved ahead of time.
A hacked node trying to close your channels to its own address gets refused.
VLS checks two things before it signs: is this a valid Lightning state transition, and does it obey the operator's rules?
A request has to pass both.
Fail either one and there is no signature.
A node running VLS still routes payments, opens channels, and talks to peers.
The one thing it can no longer do is sign a transaction by itself.
Signing now requires passing VLS's checks.
VLS keeps your Lightning keys off the node.
The node proposes a transaction, VLS checks it against the channel's real state and your rules, then signs only if it passes.
A hacked node cannot skip the check.
A tweet cannot hold a threat model.
The site can.
If anything we post here sounds too neat, the long version, with the caveats included, is one click away in the profile.
VLS runs on a $10 ESP32 with the same validation logic as a server deployment.
If that sounds implausible for a Lightning signer, the code that does it is public.
Lightning funds have been lost to race conditions, fee gaps, and stale state.
None of those attacks broke cryptography.
Understanding why is the best reason to spend twenty minutes on our site.