<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>bolt4, branch HEAD</title>
<subtitle>Onion routing protocol, per BOLT #4 (docs.ppad.tech/bolt4).
</subtitle>
<entry>
<id>c373cb39cdfc8cbbe544d887fa89fb4572260d94</id>
<published>2026-04-18T03:31:55Z</published>
<updated>2026-04-18T03:31:55Z</updated>
<title type="text">meta: add changelog</title>
<link rel="alternate" type="text/html" href="commit/c373cb39cdfc8cbbe544d887fa89fb4572260d94.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c373cb39cdfc8cbbe544d887fa89fb4572260d94
parent 096f69466d61985c656185a6f540a11bb9c6ec30
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:31:55 +0800

meta: add changelog

</content>
</entry>
<entry>
<id>096f69466d61985c656185a6f540a11bb9c6ec30</id>
<published>2026-04-18T03:31:05Z</published>
<updated>2026-04-18T03:31:05Z</updated>
<title type="text">meta: fix remote</title>
<link rel="alternate" type="text/html" href="commit/096f69466d61985c656185a6f540a11bb9c6ec30.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 096f69466d61985c656185a6f540a11bb9c6ec30
parent 1f7d84f4153a090952a118932b726644cd7db574
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:31:05 +0800

meta: fix remote

</content>
</entry>
<entry>
<id>1f7d84f4153a090952a118932b726644cd7db574</id>
<published>2026-04-18T03:26:45Z</published>
<updated>2026-04-18T03:26:45Z</updated>
<title type="text">test: silence warnings</title>
<link rel="alternate" type="text/html" href="commit/1f7d84f4153a090952a118932b726644cd7db574.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 1f7d84f4153a090952a118932b726644cd7db574
parent f2a62f941f49bb7408e1258914fc4bca8aec33ef
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:26:45 +0800

test: silence warnings

</content>
</entry>
<entry>
<id>f2a62f941f49bb7408e1258914fc4bca8aec33ef</id>
<published>2026-04-18T03:22:12Z</published>
<updated>2026-04-18T03:24:14Z</updated>
<title type="text">flake: use remotes</title>
<link rel="alternate" type="text/html" href="commit/f2a62f941f49bb7408e1258914fc4bca8aec33ef.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit f2a62f941f49bb7408e1258914fc4bca8aec33ef
parent 7254529dd192b6d628b0ed5c77702d921669d226
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:22:12 +0800

flake: use remotes

</content>
</entry>
<entry>
<id>7254529dd192b6d628b0ed5c77702d921669d226</id>
<published>2026-04-18T03:18:36Z</published>
<updated>2026-04-18T03:18:36Z</updated>
<title type="text">readme: add pre-release note</title>
<link rel="alternate" type="text/html" href="commit/7254529dd192b6d628b0ed5c77702d921669d226.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 7254529dd192b6d628b0ed5c77702d921669d226
parent 9099a9bd5b471b7788962066220514e756dd51a7
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:18:36 +0800

readme: add pre-release note

</content>
</entry>
<entry>
<id>9099a9bd5b471b7788962066220514e756dd51a7</id>
<published>2026-04-18T03:18:29Z</published>
<updated>2026-04-18T03:18:29Z</updated>
<title type="text">plans: commit old plan</title>
<link rel="alternate" type="text/html" href="commit/9099a9bd5b471b7788962066220514e756dd51a7.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 9099a9bd5b471b7788962066220514e756dd51a7
parent b6e03182d3417e71de26b50d3d8cb38082594b02
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 11:18:29 +0800

plans: commit old plan

</content>
</entry>
<entry>
<id>b6e03182d3417e71de26b50d3d8cb38082594b02</id>
<published>2026-01-25T12:13:15Z</published>
<updated>2026-01-25T12:13:15Z</updated>
<title type="text">ppad-bolt4: address review comments for IMPL6</title>
<link rel="alternate" type="text/html" href="commit/b6e03182d3417e71de26b50d3d8cb38082594b02.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit b6e03182d3417e71de26b50d3d8cb38082594b02
parent f6c4a17746f0c33df65ee8cc0f24f29de3afcbff
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 16:13:15 +0400

ppad-bolt4: address review comments for IMPL6

- Fix deriveBlindingRho to use &quot;rho&quot; key per BOLT4 spec
- Export helper functions from Codec, remove duplicates in Blinding
- Replace manual Integer modular arithmetic with Montgomery
  multiplication from ppad-fixed (Blinding.mulSecKey, Prim.blindSecKey)
- Use error instead of silent empty return in encryptHopData

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

</content>
</entry>
<entry>
<id>f6c4a17746f0c33df65ee8cc0f24f29de3afcbff</id>
<published>2026-01-25T11:53:44Z</published>
<updated>2026-01-25T11:53:44Z</updated>
<title type="text">merge: impl6 route blinding</title>
<link rel="alternate" type="text/html" href="commit/f6c4a17746f0c33df65ee8cc0f24f29de3afcbff.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit f6c4a17746f0c33df65ee8cc0f24f29de3afcbff
parent 200b300da902bc91e2ed8345dda3099854e1ef5a
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:53:44 +0400

merge: impl6 route blinding

</content>
</entry>
<entry>
<id>b3369999bb784519a1514e56236c4da381b3100d</id>
<published>2026-01-25T11:49:02Z</published>
<updated>2026-01-25T11:53:16Z</updated>
<title type="text">ppad-bolt4: implement route blinding (IMPL6)</title>
<link rel="alternate" type="text/html" href="commit/b3369999bb784519a1514e56236c4da381b3100d.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit b3369999bb784519a1514e56236c4da381b3100d
parent 200b300da902bc91e2ed8345dda3099854e1ef5a
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:49:02 +0400

ppad-bolt4: implement route blinding (IMPL6)

Add route blinding support per BOLT4 specification:

- New Blinding module with types for blinded paths
- BlindedPath, BlindedHop, BlindedHopData types
- PaymentRelay and PaymentConstraints for TLV encoding
- Key derivation: deriveBlindingRho, deriveBlindedNodeId
- Ephemeral key iteration: nextEphemeral
- ChaCha20-Poly1305 AEAD encryption for hop data
- createBlindedPath: create blinded routes from node list
- processBlindedHop: decrypt hop data and compute next path key
- TLV encoding/decoding for BlindedHopData

Add ppad-aead dependency for ChaCha20-Poly1305 AEAD.

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

</content>
</entry>
<entry>
<id>200b300da902bc91e2ed8345dda3099854e1ef5a</id>
<published>2026-01-25T11:42:05Z</published>
<updated>2026-01-25T11:42:05Z</updated>
<title type="text">merge: impl3 packet construction</title>
<link rel="alternate" type="text/html" href="commit/200b300da902bc91e2ed8345dda3099854e1ef5a.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 200b300da902bc91e2ed8345dda3099854e1ef5a
parent 94936a97d527acf0d757c1086a150126ae27fb91
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:42:05 +0400

merge: impl3 packet construction

</content>
</entry>
<entry>
<id>cd8aa074cac8d4144a1e30868fe639de29d8ae35</id>
<published>2026-01-25T11:39:03Z</published>
<updated>2026-01-25T11:39:03Z</updated>
<title type="text">ppad-bolt4: implement packet construction (IMPL3)</title>
<link rel="alternate" type="text/html" href="commit/cd8aa074cac8d4144a1e30868fe639de29d8ae35.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit cd8aa074cac8d4144a1e30868fe639de29d8ae35
parent 6f3327fe2856fded5511e8f8db21a44361d4c8c5
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:39:03 +0400

ppad-bolt4: implement packet construction (IMPL3)

Add Construct module for BOLT4 onion packet construction:
- Hop type for route specification
- construct function for creating onion packets
- Shared secret computation with ephemeral key blinding
- Filler generation for constant-size packets
- Payload wrapping with ChaCha20 obfuscation

Includes test vectors from BOLT4 specification.

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

</content>
</entry>
<entry>
<id>94936a97d527acf0d757c1086a150126ae27fb91</id>
<published>2026-01-25T11:38:30Z</published>
<updated>2026-01-25T11:38:30Z</updated>
<title type="text">merge: impl5 error handling</title>
<link rel="alternate" type="text/html" href="commit/94936a97d527acf0d757c1086a150126ae27fb91.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 94936a97d527acf0d757c1086a150126ae27fb91
parent a3c7517aa03108b53e026ba1a35653adb51b319f
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:38:30 +0400

merge: impl5 error handling

</content>
</entry>
<entry>
<id>52bc65a98228e7aa10cb047dd2131a1943b64dad</id>
<published>2026-01-25T11:36:28Z</published>
<updated>2026-01-25T11:36:28Z</updated>
<title type="text">ppad-bolt4: implement error handling (IMPL5)</title>
<link rel="alternate" type="text/html" href="commit/52bc65a98228e7aa10cb047dd2131a1943b64dad.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 52bc65a98228e7aa10cb047dd2131a1943b64dad
parent 6f3327fe2856fded5511e8f8db21a44361d4c8c5
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:36:28 +0400

ppad-bolt4: implement error handling (IMPL5)

Add Error module for constructing, wrapping, and unwrapping error
packets per BOLT4 spec. Error packets are at least 256 bytes and
use HMAC-SHA256 for authentication and ChaCha20-based obfuscation.

Key additions:
- ErrorPacket newtype for wrapped error packets
- AttributionResult type for unwrap results
- constructError: create error at failing node
- wrapError: add obfuscation layer at intermediate node
- unwrapError: peel layers and attribute error to hop

Also adds missing failure codes to Types.hs and comprehensive tests
for error construction, multi-hop wrapping, and attribution.

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

</content>
</entry>
<entry>
<id>a3c7517aa03108b53e026ba1a35653adb51b319f</id>
<published>2026-01-25T11:36:02Z</published>
<updated>2026-01-25T11:36:02Z</updated>
<title type="text">merge: impl4 packet processing</title>
<link rel="alternate" type="text/html" href="commit/a3c7517aa03108b53e026ba1a35653adb51b319f.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit a3c7517aa03108b53e026ba1a35653adb51b319f
parent 6f3327fe2856fded5511e8f8db21a44361d4c8c5
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:36:02 +0400

merge: impl4 packet processing

</content>
</entry>
<entry>
<id>819ad99a6b8bb3d94c1af4f6df6dfeca12a23495</id>
<published>2026-01-25T11:34:29Z</published>
<updated>2026-01-25T11:34:29Z</updated>
<title type="text">ppad-bolt4: implement packet processing (IMPL4)</title>
<link rel="alternate" type="text/html" href="commit/819ad99a6b8bb3d94c1af4f6df6dfeca12a23495.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 819ad99a6b8bb3d94c1af4f6df6dfeca12a23495
parent 6f3327fe2856fded5511e8f8db21a44361d4c8c5
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:34:29 +0400

ppad-bolt4: implement packet processing (IMPL4)

Add Process module with onion packet processing from the receiver&#39;s
perspective. Includes:

- RejectReason type for validation failures
- process function that validates, decrypts, and extracts hop payloads
- Version and ephemeral key validation
- HMAC verification (constant-time)
- Payload decryption and extraction
- Final hop detection (all-zero next HMAC)
- Forward packet preparation with ephemeral key blinding

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

</content>
</entry>
<entry>
<id>6f3327fe2856fded5511e8f8db21a44361d4c8c5</id>
<published>2026-01-25T11:24:27Z</published>
<updated>2026-01-25T11:24:27Z</updated>
<title type="text">merge: impl1 cryptographic primitives</title>
<link rel="alternate" type="text/html" href="commit/6f3327fe2856fded5511e8f8db21a44361d4c8c5.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 6f3327fe2856fded5511e8f8db21a44361d4c8c5
parent 421a8f1fdcb26858af29340431bd6c8a22bce76d
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:24:27 +0400

merge: impl1 cryptographic primitives

</content>
</entry>
<entry>
<id>c61764ec66849aad3bc5df096cc77c06c32a3ba2</id>
<published>2026-01-25T11:24:22Z</published>
<updated>2026-01-25T11:24:22Z</updated>
<title type="text">ppad-bolt4: implement cryptographic primitives (IMPL1)</title>
<link rel="alternate" type="text/html" href="commit/c61764ec66849aad3bc5df096cc77c06c32a3ba2.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c61764ec66849aad3bc5df096cc77c06c32a3ba2
parent 421a8f1fdcb26858af29340431bd6c8a22bce76d
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 15:24:22 +0400

ppad-bolt4: implement cryptographic primitives (IMPL1)

Add Lightning.Protocol.BOLT4.Prim module with:

- SharedSecret, DerivedKey, BlindingFactor newtypes
- Key derivation: deriveRho, deriveMu, deriveUm, derivePad, deriveAmmag
- ECDH shared secret computation (SHA256 of compressed 33-byte point)
- Blinding factor computation for ephemeral key updates
- Public/private key blinding operations
- ChaCha20 stream generation for packet obfuscation
- HMAC computation and constant-time verification

Includes comprehensive tests with BOLT4 spec test vectors.
Updates flake.nix to use local ppad-* dependency paths.
Corrects blinding factor test vector in IMPL1.md.

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

</content>
</entry>
<entry>
<id>421a8f1fdcb26858af29340431bd6c8a22bce76d</id>
<published>2026-01-25T10:57:10Z</published>
<updated>2026-01-25T10:57:10Z</updated>
<title type="text">merge: impl2 types and codec</title>
<link rel="alternate" type="text/html" href="commit/421a8f1fdcb26858af29340431bd6c8a22bce76d.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 421a8f1fdcb26858af29340431bd6c8a22bce76d
parent 1216ddbcdc35dee03c6c883c4edbb2c60ceaa59b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 14:57:10 +0400

merge: impl2 types and codec

</content>
</entry>
<entry>
<id>3df0fdc773fd7c055b5bfbfd0a3a363274aa03cb</id>
<published>2026-01-25T10:46:36Z</published>
<updated>2026-01-25T10:46:36Z</updated>
<title type="text">ppad-bolt4: add Types and Codec modules</title>
<link rel="alternate" type="text/html" href="commit/3df0fdc773fd7c055b5bfbfd0a3a363274aa03cb.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 3df0fdc773fd7c055b5bfbfd0a3a363274aa03cb
parent 1216ddbcdc35dee03c6c883c4edbb2c60ceaa59b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 14:46:36 +0400

ppad-bolt4: add Types and Codec modules

Implement core data types and serialization for BOLT4:

Types module:
- OnionPacket, HopPayload, ShortChannelId, PaymentData, TlvRecord
- FailureMessage and FailureCode with flag patterns
- ProcessResult, ForwardInfo, ReceiveInfo
- Protocol constants

Codec module:
- BigSize encoding/decoding per BOLT1
- TLV stream encoding/decoding with ordering validation
- OnionPacket and HopPayload serialization
- ShortChannelId 8-byte encoding
- FailureMessage encoding/decoding

Includes comprehensive tests for boundary values, roundtrip properties,
and malformed input rejection.

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

</content>
</entry>
<entry>
<id>1216ddbcdc35dee03c6c883c4edbb2c60ceaa59b</id>
<published>2026-01-25T10:27:26Z</published>
<updated>2026-01-25T10:27:26Z</updated>
<title type="text">plans: architecture and implementation plans</title>
<link rel="alternate" type="text/html" href="commit/1216ddbcdc35dee03c6c883c4edbb2c60ceaa59b.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 1216ddbcdc35dee03c6c883c4edbb2c60ceaa59b
parent 7c32a438cf58b1f6a3a90a570e7f051a9bbaf76a
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 14:27:26 +0400

plans: architecture and implementation plans

ARCH1: high-level architecture, module structure, layer overview
IMPL1: cryptographic primitives (key derivation, ECDH, streams)
IMPL2: types and codec (BigSize, TLV, packet serialization)
IMPL3: packet construction (sender side)
IMPL4: packet processing (receiver side)
IMPL5: error handling (construction and attribution)
IMPL6: route blinding (optional, lower priority)

Dependency structure allows IMPL1+IMPL2 in parallel, then
IMPL3+IMPL4+IMPL5+IMPL6 in parallel after.

Also caches BOLT4 spec in etc/.

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

</content>
</entry>
<entry>
<id>7c32a438cf58b1f6a3a90a570e7f051a9bbaf76a</id>
<published>2026-01-25T10:16:37Z</published>
<updated>2026-01-25T10:16:37Z</updated>
<title type="text">ppad-bolt4: initial project skeleton</title>
<link rel="alternate" type="text/html" href="commit/7c32a438cf58b1f6a3a90a570e7f051a9bbaf76a.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 7c32a438cf58b1f6a3a90a570e7f051a9bbaf76a
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 14:16:37 +0400

ppad-bolt4: initial project skeleton

BOLT4 onion routing implementation for Lightning Network.

Includes:
- Library stub (Lightning.Protocol.BOLT4)
- Test/benchmark scaffolding
- Nix flake with deps: ppad-chacha, ppad-hmac-sha256,
  ppad-secp256k1, ppad-sha256

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

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