<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>bolt2, branch HEAD</title>
<subtitle>Lightning peer protocol, per BOLT #2 (docs.ppad.tech/bolt2).
</subtitle>
<entry>
<id>9fe981110faec0b53206fcc8ef0496cb54ed848a</id>
<published>2026-04-18T13:45:51Z</published>
<updated>2026-04-18T13:45:51Z</updated>
<title type="text">remove vestigial unTxId and txIdLen</title>
<link rel="alternate" type="text/html" href="commit/9fe981110faec0b53206fcc8ef0496cb54ed848a.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 9fe981110faec0b53206fcc8ef0496cb54ed848a
parent 19f6c064afa9b88faf67374fd8436ea4577dc327
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 21:45:51 +0800

remove vestigial unTxId and txIdLen

Both duplicate ppad-tx functionality. Callers now pattern-match
on TxId directly and use the literal 32 for length.

</content>
</entry>
<entry>
<id>19f6c064afa9b88faf67374fd8436ea4577dc327</id>
<published>2026-04-18T12:38:46Z</published>
<updated>2026-04-18T12:38:46Z</updated>
<title type="text">lib: remove orphan NFData instances for ppad-tx types</title>
<link rel="alternate" type="text/html" href="commit/19f6c064afa9b88faf67374fd8436ea4577dc327.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 19f6c064afa9b88faf67374fd8436ea4577dc327
parent cee2509e0b105a80bea50c8900d72f6b63cd6931
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 20:38:46 +0800

lib: remove orphan NFData instances for ppad-tx types

NFData instances for TxId and OutPoint are now provided by
ppad-tx itself. Remove orphans and the -fno-warn-orphans pragma
from Types.hs.

</content>
</entry>
<entry>
<id>cee2509e0b105a80bea50c8900d72f6b63cd6931</id>
<published>2026-04-18T12:19:19Z</published>
<updated>2026-04-18T12:19:19Z</updated>
<title type="text">lib: use ppad-tx TxId and OutPoint types</title>
<link rel="alternate" type="text/html" href="commit/cee2509e0b105a80bea50c8900d72f6b63cd6931.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit cee2509e0b105a80bea50c8900d72f6b63cd6931
parent c98ddf37bc5d8c76d5440e3ecff369b86e11bdec
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 20:19:19 +0800

lib: use ppad-tx TxId and OutPoint types

Replace bolt2&#39;s local TxId, txId, Outpoint definitions with
re-exports from Bitcoin.Prim.Tx. Add orphan NFData instances
for TxId and OutPoint (needed for benchmarks). Keep unTxId
and txIdLen as backward-compat helpers.

Update Codec.hs (txId -&gt; mkTxId), tests, and benchmarks.

</content>
</entry>
<entry>
<id>c98ddf37bc5d8c76d5440e3ecff369b86e11bdec</id>
<published>2026-04-18T12:18:31Z</published>
<updated>2026-04-18T12:18:31Z</updated>
<title type="text">lib: add ppad-tx dependency</title>
<link rel="alternate" type="text/html" href="commit/c98ddf37bc5d8c76d5440e3ecff369b86e11bdec.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c98ddf37bc5d8c76d5440e3ecff369b86e11bdec
parent b364652ce341c38ed96f6f368bacd2dd01ec922c
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 20:18:31 +0800

lib: add ppad-tx dependency

Add ppad-tx to cabal build-depends and flake.nix inputs
for canonical TxId and OutPoint types.

</content>
</entry>
<entry>
<id>b364652ce341c38ed96f6f368bacd2dd01ec922c</id>
<published>2026-04-18T05:15:42Z</published>
<updated>2026-04-18T05:15:42Z</updated>
<title type="text">meta: add bolt1 bounds</title>
<link rel="alternate" type="text/html" href="commit/b364652ce341c38ed96f6f368bacd2dd01ec922c.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit b364652ce341c38ed96f6f368bacd2dd01ec922c
parent 13d13f1074bd5b8772dcf6f7b0958dd5bf04b1f4
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 13:15:42 +0800

meta: add bolt1 bounds

</content>
</entry>
<entry>
<id>13d13f1074bd5b8772dcf6f7b0958dd5bf04b1f4</id>
<published>2026-04-18T05:14:10Z</published>
<updated>2026-04-18T05:14:10Z</updated>
<title type="text">flake: update</title>
<link rel="alternate" type="text/html" href="commit/13d13f1074bd5b8772dcf6f7b0958dd5bf04b1f4.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 13d13f1074bd5b8772dcf6f7b0958dd5bf04b1f4
parent 55e7004eb892f0cb69399c383fe82a00b3748831
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 13:14:10 +0800

flake: update

</content>
</entry>
<entry>
<id>55e7004eb892f0cb69399c383fe82a00b3748831</id>
<published>2026-04-18T05:13:38Z</published>
<updated>2026-04-18T05:14:03Z</updated>
<title type="text">lib: use unsafeTlvStream constructor</title>
<link rel="alternate" type="text/html" href="commit/55e7004eb892f0cb69399c383fe82a00b3748831.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 55e7004eb892f0cb69399c383fe82a00b3748831
parent 6ba35318c4c58c15f4e78e88a8a24bb0a3c480d9
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 13:13:38 +0800

lib: use unsafeTlvStream constructor

</content>
</entry>
<entry>
<id>6ba35318c4c58c15f4e78e88a8a24bb0a3c480d9</id>
<published>2026-04-18T05:09:12Z</published>
<updated>2026-04-18T05:09:12Z</updated>
<title type="text">readme: pre-release note</title>
<link rel="alternate" type="text/html" href="commit/6ba35318c4c58c15f4e78e88a8a24bb0a3c480d9.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 6ba35318c4c58c15f4e78e88a8a24bb0a3c480d9
parent 9b9f02e85c0aa7b968d373a752540192ed9bd29d
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 13:09:12 +0800

readme: pre-release note

</content>
</entry>
<entry>
<id>9b9f02e85c0aa7b968d373a752540192ed9bd29d</id>
<published>2026-01-25T11:00:50Z</published>
<updated>2026-01-25T11:00:50Z</updated>
<title type="text">Add larger benchmark cases for scaling analysis</title>
<link rel="alternate" type="text/html" href="commit/9b9f02e85c0aa7b968d373a752540192ed9bd29d.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 9b9f02e85c0aa7b968d373a752540192ed9bd29d
parent 5f199af68ded0f0dc3704dc5f74a367b80a77060
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:00:50 +0400

Add larger benchmark cases for scaling analysis

Add CommitmentSigned benchmarks with 100 and 483 (max) HTLC
signatures to measure list accumulation pattern performance at scale.

Fix Weight.hs to handle Either EncodeError return types from
encodeTxSignatures and encodeCommitmentSigned.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>5f199af68ded0f0dc3704dc5f74a367b80a77060</id>
<published>2026-01-25T11:00:31Z</published>
<updated>2026-01-25T11:00:31Z</updated>
<title type="text">Use INLINABLE for smart constructors</title>
<link rel="alternate" type="text/html" href="commit/5f199af68ded0f0dc3704dc5f74a367b80a77060.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 5f199af68ded0f0dc3704dc5f74a367b80a77060
parent 67521b1799241d5023ae7263f0f370d34cef02f4
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:00:31 +0400

Use INLINABLE for smart constructors

Change INLINE to INLINABLE for type smart constructors (channelId,
signature, point, etc.) to allow cross-module specialization while
letting GHC decide on actual inlining.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>67521b1799241d5023ae7263f0f370d34cef02f4</id>
<published>2026-01-25T11:00:25Z</published>
<updated>2026-01-25T11:00:25Z</updated>
<title type="text">Add INLINABLE pragmas to hot-path codec functions</title>
<link rel="alternate" type="text/html" href="commit/67521b1799241d5023ae7263f0f370d34cef02f4.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 67521b1799241d5023ae7263f0f370d34cef02f4
parent 5dbe46093eabc21f2e1a3033dea9af13db8f04f4
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:00:25 +0400

Add INLINABLE pragmas to hot-path codec functions

Mark encode/decode functions for UpdateAddHtlc and CommitmentSigned
as INLINABLE to allow cross-module specialization at call sites.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>5dbe46093eabc21f2e1a3033dea9af13db8f04f4</id>
<published>2026-01-25T07:31:43Z</published>
<updated>2026-01-25T07:31:43Z</updated>
<title type="text">Add README</title>
<link rel="alternate" type="text/html" href="commit/5dbe46093eabc21f2e1a3033dea9af13db8f04f4.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 5dbe46093eabc21f2e1a3033dea9af13db8f04f4
parent 56d36474ebb995931313bf1dc4bdd2a3f84db799
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:31:43 +0400

Add README

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>56d36474ebb995931313bf1dc4bdd2a3f84db799</id>
<published>2026-01-25T07:30:37Z</published>
<updated>2026-01-25T07:30:37Z</updated>
<title type="text">Address REVIEW1.md findings</title>
<link rel="alternate" type="text/html" href="commit/56d36474ebb995931313bf1dc4bdd2a3f84db799.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 56d36474ebb995931313bf1dc4bdd2a3f84db799
parent 779bf5c0d8de70c80aaa2bc8b9ee3430f768c15a
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:30:37 +0400

Address REVIEW1.md findings

Types.hs:
- Add Secret newtype (32-byte per-commitment secret) with smart constructor

Messages.hs:
- RevokeAndAck.revokeAndAckPerCommitmentSecret now uses Secret
- ChannelReestablish.channelReestablishYourLastCommitSecret now uses Secret

Codec.hs:
- Add encodeU16BytesE (bounds-checked u16-prefixed encoding)
- Add checkListCountU16 (bounds-checked list count)
- Add decodeSecretBytes, DecodeInvalidSecret error
- encodeTxAddInput, encodeTxAddOutput, encodeTxSignatures, encodeTxAbort,
  encodeUpdateFailHtlc, encodeCommitmentSigned now return Either EncodeError
- Remove unused encodeU16Bytes and decodeBytesE

test/Main.hs:
- Update tests for Either-returning encoders
- Update tests to use Secret type
- Fix unhex to return Maybe (total function)

bench/Main.hs:
- Update for Either-returning encoders

CLAUDE.md, AGENTS.md:
- Add directive to record design decisions to plans/TODO

plans/:
- Add TODO with outstanding design decisions (TLV unknown-even rule,
  flake dependency path)

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>779bf5c0d8de70c80aaa2bc8b9ee3430f768c15a</id>
<published>2026-01-25T07:15:52Z</published>
<updated>2026-01-25T07:15:52Z</updated>
<title type="text">Merge impl/bench: criterion and weigh benchmarks for BOLT2 codecs</title>
<link rel="alternate" type="text/html" href="commit/779bf5c0d8de70c80aaa2bc8b9ee3430f768c15a.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 779bf5c0d8de70c80aaa2bc8b9ee3430f768c15a
parent 93521021143220e4829968a962b44f1f82922258
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:15:52 +0400

Merge impl/bench: criterion and weigh benchmarks for BOLT2 codecs

Adds timing and allocation benchmarks for representative messages from
each category:

Criterion (bench/Main.hs):
- V1: OpenChannel encode/decode
- V2: OpenChannel2, TxSignatures with 5 witnesses
- Close: ClosingSigned
- Normal: UpdateAddHtlc, CommitmentSigned with 10 HTLC sigs

Weigh (bench/Weight.hs):
- Allocation tracking for construction, encoding, and decoding

</content>
</entry>
<entry>
<id>93521021143220e4829968a962b44f1f82922258</id>
<published>2026-01-25T07:15:46Z</published>
<updated>2026-01-25T07:15:46Z</updated>
<title type="text">Merge impl/tests: comprehensive tests for all BOLT2 codecs</title>
<link rel="alternate" type="text/html" href="commit/93521021143220e4829968a962b44f1f82922258.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 93521021143220e4829968a962b44f1f82922258
parent 3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:15:46 +0400

Merge impl/tests: comprehensive tests for all BOLT2 codecs

Adds unit tests, error condition tests, and property tests for all 29
BOLT2 message types.

86 test cases covering:
- Roundtrip encode/decode for all messages
- Insufficient bytes errors
- EncodeLengthOverflow for Shutdown, ClosingComplete, ClosingSig
- Property-based roundtrip tests with QuickCheck

</content>
</entry>
<entry>
<id>6305a924d785f816eae01346de153948b1b1dbd7</id>
<published>2026-01-25T07:15:19Z</published>
<updated>2026-01-25T07:15:19Z</updated>
<title type="text">Add benchmarks for BOLT2 message codecs</title>
<link rel="alternate" type="text/html" href="commit/6305a924d785f816eae01346de153948b1b1dbd7.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 6305a924d785f816eae01346de153948b1b1dbd7
parent 3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:15:19 +0400

Add benchmarks for BOLT2 message codecs

Implement comprehensive benchmark suites for BOLT2 message encoding and
decoding operations:

bench/Main.hs (criterion timing benchmarks):
- V1 channel establishment: OpenChannel encode/decode
- V2 channel establishment: OpenChannel2 encode/decode, TxSignatures
  with multiple witnesses
- Channel close: ClosingSigned encode/decode
- Normal operation: UpdateAddHtlc encode/decode, CommitmentSigned with
  10 HTLC signatures

bench/Weight.hs (weigh allocation benchmarks):
- Message construction allocation tracking via helper functions
- Encode/decode allocation profiles for all benchmarked message types
- Organized by category matching criterion benchmarks

Helper functions construct valid test messages using smart constructors
from the Types module. All test data uses NOINLINE pragmas to prevent
constant folding during benchmarks. BangPatterns used for strict
evaluation in message constructors.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>f081f671e72a1c4364ebb972f2b89c539fbb74e0</id>
<published>2026-01-25T07:14:30Z</published>
<updated>2026-01-25T07:14:30Z</updated>
<title type="text">test: comprehensive tests for all 29 BOLT2 message codecs</title>
<link rel="alternate" type="text/html" href="commit/f081f671e72a1c4364ebb972f2b89c539fbb74e0.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit f081f671e72a1c4364ebb972f2b89c539fbb74e0
parent 3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:14:30 +0400

test: comprehensive tests for all 29 BOLT2 message codecs

Add roundtrip tests covering:
- V1 establishment: OpenChannel, AcceptChannel, FundingCreated,
  FundingSigned, ChannelReady
- V2 interactive-tx: OpenChannel2, AcceptChannel2, TxAddInput,
  TxAddOutput, TxRemoveInput, TxRemoveOutput, TxComplete,
  TxSignatures, TxInitRbf, TxAckRbf, TxAbort
- Close: Stfu, Shutdown, ClosingSigned, ClosingComplete, ClosingSig
- Normal operation: UpdateAddHtlc, UpdateFulfillHtlc, UpdateFailHtlc,
  UpdateFailMalformedHtlc, CommitmentSigned, RevokeAndAck, UpdateFee
- Reestablish: ChannelReestablish

Include error condition tests:
- DecodeInsufficientBytes for truncated inputs
- EncodeLengthOverflow for oversized scripts
- Invalid field length handling

Property tests verify roundtrip for all message types with varying
input data. Uses smart constructors for valid test data.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412</id>
<published>2026-01-25T07:09:02Z</published>
<updated>2026-01-25T07:09:02Z</updated>
<title type="text">impl: unified Codec.hs with all BOLT2 message codecs</title>
<link rel="alternate" type="text/html" href="commit/3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 3fca308b65c9f8a40c88c2bedb53eb3bcfd1e412
parent d1c7117b5bc7ad0292dcef0c4a6651218f3f6ced
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:09:02 +0400

impl: unified Codec.hs with all BOLT2 message codecs

Integrates encode/decode functions for all 29 BOLT2 message types:

Channel establishment v1 (32-36):
  OpenChannel, AcceptChannel, FundingCreated, FundingSigned, ChannelReady

Channel establishment v2 / interactive-tx (64-74):
  OpenChannel2, AcceptChannel2, TxAddInput, TxAddOutput,
  TxRemoveInput, TxRemoveOutput, TxComplete, TxSignatures,
  TxInitRbf, TxAckRbf, TxAbort

Channel close (2, 38-41):
  Stfu, Shutdown, ClosingSigned, ClosingComplete, ClosingSig

Normal operation (128-135):
  UpdateAddHtlc, UpdateFulfillHtlc, UpdateFailHtlc,
  UpdateFailMalformedHtlc, CommitmentSigned, RevokeAndAck, UpdateFee

Channel reestablishment (136):
  ChannelReestablish

Adds EncodeError and DecodeError types with NFData instances.
Uses local path for ppad-bolt1 dependency in flake.nix.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>d1c7117b5bc7ad0292dcef0c4a6651218f3f6ced</id>
<published>2026-01-25T07:02:14Z</published>
<updated>2026-01-25T07:02:14Z</updated>
<title type="text">Merge impl/v1-codecs: V1 establishment + close codecs</title>
<link rel="alternate" type="text/html" href="commit/d1c7117b5bc7ad0292dcef0c4a6651218f3f6ced.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit d1c7117b5bc7ad0292dcef0c4a6651218f3f6ced
parent 00780406fc4c57e5d87bfaa0e9b215f71f629057
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:02:14 +0400

Merge impl/v1-codecs: V1 establishment + close codecs

Adds encode/decode functions for V1 channel establishment messages
(OpenChannel, AcceptChannel, FundingCreated, FundingSigned, ChannelReady)
and close messages (Stfu, Shutdown, ClosingSigned, ClosingComplete, ClosingSig).

Defines EncodeError and DecodeError types.

</content>
</entry>
<entry>
<id>4a47a71a73ead9cc3e6d636c9260ae0bc56d7dbc</id>
<published>2026-01-25T07:02:04Z</published>
<updated>2026-01-25T07:02:04Z</updated>
<title type="text">impl: V1 establishment + close message codecs</title>
<link rel="alternate" type="text/html" href="commit/4a47a71a73ead9cc3e6d636c9260ae0bc56d7dbc.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 4a47a71a73ead9cc3e6d636c9260ae0bc56d7dbc
parent 00780406fc4c57e5d87bfaa0e9b215f71f629057
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:02:04 +0400

impl: V1 establishment + close message codecs

Implements encode/decode functions for:
- OpenChannel (32), AcceptChannel (33), FundingCreated (34),
  FundingSigned (35), ChannelReady (36)
- Stfu (2), Shutdown (38), ClosingSigned (39),
  ClosingComplete (40), ClosingSig (41)

Defines EncodeError and DecodeError types with NFData instances.
All codecs follow BOLT1 encoding patterns.

</content>
</entry>
<entry>
<id>00780406fc4c57e5d87bfaa0e9b215f71f629057</id>
<published>2026-01-25T06:57:38Z</published>
<updated>2026-01-25T06:57:38Z</updated>
<title type="text">Merge impl/message-adts: Add BOLT2 message ADTs</title>
<link rel="alternate" type="text/html" href="commit/00780406fc4c57e5d87bfaa0e9b215f71f629057.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 00780406fc4c57e5d87bfaa0e9b215f71f629057
parent c8fa2e306fdf1737f9eca5a480b201d2d782da77
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:57:38 +0400

Merge impl/message-adts: Add BOLT2 message ADTs

Implements Wave 2 of IMPL1 plan - all 29 message types:

- Channel establishment v1: OpenChannel, AcceptChannel, FundingCreated,
  FundingSigned, ChannelReady
- Channel establishment v2: OpenChannel2, AcceptChannel2, TxAddInput,
  TxAddOutput, TxRemoveInput, TxRemoveOutput, TxComplete, TxSignatures,
  TxInitRbf, TxAckRbf, TxAbort
- Channel close: Stfu, Shutdown, ClosingSigned, ClosingComplete, ClosingSig
- Normal operation: UpdateAddHtlc, UpdateFulfillHtlc, UpdateFailHtlc,
  UpdateFailMalformedHtlc, CommitmentSigned, RevokeAndAck, UpdateFee
- Reestablishment: ChannelReestablish

Also includes MsgType enum and top-level Message sum type.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>643b146fa0176018b4092600bfcd7a3bb85072ee</id>
<published>2026-01-25T06:57:31Z</published>
<updated>2026-01-25T06:57:31Z</updated>
<title type="text">Add BOLT2 message ADTs.</title>
<link rel="alternate" type="text/html" href="commit/643b146fa0176018b4092600bfcd7a3bb85072ee.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 643b146fa0176018b4092600bfcd7a3bb85072ee
parent c8fa2e306fdf1737f9eca5a480b201d2d782da77
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:57:31 +0400

Add BOLT2 message ADTs.

Implements all 29 BOLT #2 message types:

Channel establishment v1:
- OpenChannel, AcceptChannel, FundingCreated, FundingSigned, ChannelReady

Channel establishment v2 (interactive-tx):
- OpenChannel2, AcceptChannel2, TxAddInput, TxAddOutput
- TxRemoveInput, TxRemoveOutput, TxComplete, TxSignatures
- TxInitRbf, TxAckRbf, TxAbort

Channel close:
- Stfu, Shutdown, ClosingSigned, ClosingComplete, ClosingSig

Normal operation:
- UpdateAddHtlc, UpdateFulfillHtlc, UpdateFailHtlc
- UpdateFailMalformedHtlc, CommitmentSigned, RevokeAndAck, UpdateFee

Reestablishment:
- ChannelReestablish

Also adds MsgType enum with type codes and top-level Message sum type.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>c8fa2e306fdf1737f9eca5a480b201d2d782da77</id>
<published>2026-01-25T06:53:52Z</published>
<updated>2026-01-25T06:53:52Z</updated>
<title type="text">Merge impl/core-types: Add core types for BOLT2</title>
<link rel="alternate" type="text/html" href="commit/c8fa2e306fdf1737f9eca5a480b201d2d782da77.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c8fa2e306fdf1737f9eca5a480b201d2d782da77
parent a966f67bc8b29e6adc12d272384cf9ea75b2c782
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:53:52 +0400

Merge impl/core-types: Add core types for BOLT2

Implements Wave 1 of IMPL1 plan - core types and validation helpers:

- ChannelId, Satoshis, MilliSatoshis
- Signature, Point, PaymentHash, PaymentPreimage
- TxId, Outpoint, ScriptPubKey
- ChainHash, ShortChannelId
- FeatureBits, OnionPacket

All types have:
- Smart constructors with length validation
- NFData instances for benchmarking
- Strict fields with BangPatterns/UNPACK
- INLINE pragmas on accessors
- Haddock documentation

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>9137834efa08ac77b7830fc6e819e8b4c2df7401</id>
<published>2026-01-25T06:53:11Z</published>
<updated>2026-01-25T06:53:11Z</updated>
<title type="text">Add core types for BOLT2.</title>
<link rel="alternate" type="text/html" href="commit/9137834efa08ac77b7830fc6e819e8b4c2df7401.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 9137834efa08ac77b7830fc6e819e8b4c2df7401
parent a966f67bc8b29e6adc12d272384cf9ea75b2c782
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:53:11 +0400

Add core types for BOLT2.

Implements newtypes for:
- Identifiers: ChannelId
- Amounts: Satoshis, MilliSatoshis
- Cryptographic: Signature, Point, PaymentHash, PaymentPreimage
- Transaction: TxId, Outpoint, ScriptPubKey
- Chain: ChainHash, ShortChannelId
- Protocol: FeatureBits, OnionPacket

All types have smart constructors with validation, NFData instances,
strict fields with UNPACK, and INLINE pragmas.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>a966f67bc8b29e6adc12d272384cf9ea75b2c782</id>
<published>2026-01-25T06:43:06Z</published>
<updated>2026-01-25T06:43:06Z</updated>
<title type="text">Initial skeleton for ppad-bolt2.</title>
<link rel="alternate" type="text/html" href="commit/a966f67bc8b29e6adc12d272384cf9ea75b2c782.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit a966f67bc8b29e6adc12d272384cf9ea75b2c782
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:43:06 +0400

Initial skeleton for ppad-bolt2.

Set up project structure following ppad conventions:
- Library module with BOLT2 message type documentation
- Test, benchmark scaffolding
- Nix flake with ppad-bolt1 dependency
- CLAUDE.md/AGENTS.md project guidelines

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
</feed>
