Skip to content

deps: upgrade VLS to 1.0.0-rc.1 - #758

Merged
cdecker merged 1 commit into
mainfrom
2026m10-vls-1.0.0-rc.1
Oct 20, 2026
Merged

cdecker merged 1 commit into
mainfrom
2026m10-vls-1.0.0-rc.1

Conversation

@cdecker

@cdecker cdecker commented Oct 18, 2026

Copy link
Copy Markdown
Collaborator

Bump VLS to 1.0.0-rc.1 from crates.io across the signer stack.

  • Update to the new vls/vls_persist/vls_ffi APIs; ChannelEntry moves to lightning_signer::persist::model
  • gl-sdk: lightning-invoice 0.34, un-gate duration_since_epoch()
  • Adapt test_empty_message expectation to VLS 1.0 per-variant error Display (protocol error: short read)

DB-persisted ChannelEntry records stay readable with this version (rollback-safe).

Tested: workspace test suite green (308 passed, 0 failed).

Bump vls-core, vls-persist, vls-protocol and vls-protocol-signer to
1.0.0-rc.1 (bitcoin 0.32 / LDK 0.2 stack).

- gl-client: ChannelEntry moved upstream into vls-core and is now
  re-exported from lightning_signer::persist::model instead of
  vls_persist::model. The record format is unchanged, so entries
  persisted by the old version still deserialize, and rollbacks stay
  possible.
- gl-client: update expected error string in test_empty_message;
  vls-protocol errors now have per-variant Display impls, which
  renders ShortRead as "short read".
- gl-sdk: bump lightning-invoice 0.33 -> 0.34 to match vls-core and
  replace the std-feature-gated timestamp() with
  duration_since_epoch().

Note this is externally breaking for gl-client consumers that use the
re-exported bitcoin/lightning/lightning_invoice types (LDK 0.1 -> 0.2).
let key = vls_persist::model::NodeChannelId(hex::decode(&key).unwrap());

let value: vls_persist::model::ChannelEntry =
let value: lightning_signer::persist::model::ChannelEntry =

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ChannelEntry didn't change beyond the namespace, right?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's my understanding, and I have tried to run against a couple of my nodes too. But since this is a crucial detail to get right, I will create a small loader that we can run over the entire population of nodes to ensure they all load as expected. Be right back :-)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following your question, I went through the entire population of GL nodes and found the following results:

Metric EU US Overall
Entries loaded OK 100.000% 99.998% 99.9997%
Entries failed to load 0.000% 0.0012% 0.0003%
ChannelEntry share of entries 1.02% 2.61% 1.38%
Entries with signatures 1.40% 11.28% 3.65%
Tombstoned entries 0.000% 0.0008% 0.0002%
Signatures verified (own nodes) 100% 100% 100%

Notice that the entries that ended up failing to load and the non-existent ChannelEntry's are all archived nodes, and predate this upgrade. As such I consider this experiment successful :-)

Comment thread libs/gl-sdk/src/input.rs
@cdecker
cdecker merged commit 6eed32f into main Oct 20, 2026
16 checks passed
@cdecker
cdecker deleted the 2026m10-vls-1.0.0-rc.1 branch October 20, 2026 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants