Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions src/NLightning.Application/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,47 @@

All notable changes to this project will be documented in this file.

## v1.0.0

Major release adding the full channel-opening flow, peer management, and a complete channel handler suite.

### Added

- Added `ChannelManager` to orchestrate channel lifecycle and persistence;
- Added channel message handlers: `AcceptChannel1MessageHandler`, `OpenChannel1MessageHandler`,
`FundingCreatedMessageHandler`, `FundingSignedMessageHandler`, `FundingConfirmedMessageHandler`,
`ChannelReadyMessageHandler`;
- Added `IChannelMessageHandler<T>` interface for typed channel message handling;
- Added `PeerManager` for managing peer connections, reconnection, and disconnection behavior;
- Added `DependencyInjection` extension class for convenient service registration;
- Added dependencies on `NLightning.Infrastructure` and `NLightning.Infrastructure.Bitcoin`;
- Added `Microsoft.Extensions.Logging` package reference;

### Changed

- Moved `MessageFactory` from `NLightning.Application.Factories` to `NLightning.Application.Protocol.Factories`;
- Refactored `AcceptChannel1MessageHandler` to comply with `ChannelTypeTlv` and use `payload.ToSelfDelay` for
`ChannelConfig` creation;
- Refactored `OpenChannel1MessageHandler` to reflect latest BOLT feature flag
changes ([lightning/bolts#1310](https://github.com/lightning/bolts/pull/1310)) and refine channel opening validation;
- Improved peer exception handling and error messaging in `PeerManager`;

### Fixed

- Fixed `ChannelConfig` creation when initiating a channel to use `payload.ToSelfDelay` instead of
`tempChannel.ChannelConfig.ToSelfDelay`;
- Fixed MessagePack serialization warnings in `PeerManager`;

### Removed

- Removed stub `LightningKeyManager` (was fully commented out);

### Breaking Changes

- Dropped `net8.0` and `net9.0` targets; the library now requires **.NET 10.0** or later;
- `MessageFactory` namespace changed from `NLightning.Application.Factories` to
`NLightning.Application.Protocol.Factories`;

## v0.0.1

Initial release
8 changes: 4 additions & 4 deletions src/NLightning.Application/NLightning.Application.csproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>0.0.1</Version>
<Version>1.0.0</Version>
<Configurations>Debug;Release;Debug.Native;Release.Native;Debug.Wasm;Release.Wasm</Configurations>
</PropertyGroup>

<PropertyGroup>
<Description>Application Library for NLightning</Description>
<AssemblyVersion>0.0.1</AssemblyVersion>
<FileVersion>0.0.1</FileVersion>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>
<PackageTags>lightning-network,bitcoin,crypto,infrastructure,dotnet,cryptography,cross-platform,libsodium,blazor,webassembly,aot</PackageTags>
<PackageProjectUrl>https://docs.nlightn.ing/api/NLightning.Application.html</PackageProjectUrl>
<PackageId>NLightning.Application</PackageId>
<PackageReleaseNotes>Initial release of NLightning.Application library.</PackageReleaseNotes>
<PackageReleaseNotes>Added full channel-opening handler suite, ChannelManager, PeerManager, and DependencyInjection registration. Targets .NET 10 only. See CHANGELOG.md for details.</PackageReleaseNotes>
</PropertyGroup>

<PropertyGroup Condition="$(Configuration.Contains('Debug'))">
Expand Down
18 changes: 18 additions & 0 deletions src/NLightning.Bolt11/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

All notable changes to this project will be documented in this file.

## v5.0.0

BOLT 11 compliance fix for unknown fallback address versions and updated package URL.

### Fixed

- Fixed `FallbackAddressTaggedField.FromBitReader` to return `null` instead of throwing on unknown witness
versions, complying with BOLT 11's requirement to skip `f` fields with unknown versions;
- Fixed `Invoice.FallbackAddresses` getter to handle a nullable list correctly;

### Changed

- Updated `PackageProjectUrl` to `https://docs.nlightn.ing`;

### Breaking Changes

- Dropped `net8.0` and `net9.0` targets; the library now requires **.NET 10.0** or later;

## v4.0.5

Fixed an error when decoding `PayeePubKeyTaggedField`.
Expand Down
8 changes: 4 additions & 4 deletions src/NLightning.Bolt11/NLightning.Bolt11.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@

<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>4.0.5</Version>
<Version>5.0.0</Version>
<Configurations>Debug;Debug.Native;Debug.Wasm;Release;Release.Native;Release.Wasm</Configurations>
</PropertyGroup>

<PropertyGroup>
<Description>A Bitcoin Lightning Invoice Decoder/Encoder implemented in C#</Description>
<AssemblyVersion>4.0.5</AssemblyVersion>
<FileVersion>4.0.5</FileVersion>
<AssemblyVersion>5.0.0</AssemblyVersion>
<FileVersion>5.0.0</FileVersion>
<PackageTags>lightning,invoice,bolt11,encoder,decoder</PackageTags>
<PackageProjectUrl>https://docs.nlightn.ing/api/NLightning.Bolt11.Models.Invoice.html</PackageProjectUrl>
<PackageId>NLightning.Bolt11</PackageId>
<PackageReleaseNotes>Fixed an error when decoding `PayeePubKeyTaggedField`.</PackageReleaseNotes>
<PackageReleaseNotes>Fixed BOLT 11 compliance: unknown fallback address versions are now skipped instead of throwing. See CHANGELOG.md for details.</PackageReleaseNotes>
</PropertyGroup>

<PropertyGroup Condition="$(Configuration.Contains('Debug'))">
Expand Down
50 changes: 50 additions & 0 deletions src/NLightning.Domain/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,56 @@

All notable changes to this project will be documented in this file.

## v2.0.0

Major release introducing the Client domain, wallet domain types, channel open validation, and comprehensive interface updates.

### Added

- Added `Client` domain namespace with `INamedPipeIpcService`, `ClientException`, `ErrorCodes`, `ClientCommand`,
`OpenChannelClientRequest`, `OpenChannelClientSubscriptionRequest`, `OpenChannelClientResponse`, and
`OpenChannelClientSubscriptionResponse`;
- Added Bitcoin wallet types: `UtxoModel`, `WalletAddressModel`, `AddressType`, `KeyConstants`,
`IUtxoDbRepository`, `IUtxoMemoryRepository`, `IWalletAddressesDbRepository`;
- Added `FundingTransactionModel`, `FundingTransactionModelFactory`, and `IFundingTransactionModelFactory`;
- Added `WalletMovementEventArgs` for wallet event propagation;
- Added `IChannelOpenValidator` interface with `ChannelOpenValidator`, `ChannelOpenMandatoryValidationParameters`,
and `ChannelOpenOptionalValidationParameters`;
- Added `ChannelUpdatedEventArgs` and `ChannelUpgradedEventArgs` channel events;
- Added `NodeConstants` and `AttentionMessageEventArgs` to the node domain;
- Added `GetDepositP2TrKeyAtIndex` and `GetDepositP2WpkhKeyAtIndex` methods to `ISecureKeyManager`;

### Changed

- Updated `Feature` enum and `FeatureSet` defaults to reflect latest BOLT spec
([lightning/bolts#1310](https://github.com/lightning/bolts/pull/1310)): `OptionDataLossProtect`,
`VarOnionOptin`, `OptionStaticRemoteKey`, and `PaymentSecret` are now set as compulsory by default;
- Simplified `FeatureSet` dependency rules, removing several previously required feature dependencies;
- `IPeerManager.ConnectToPeerAsync` now returns `Task<PeerModel>` instead of `Task`;
- `IPeerManager.DisconnectPeer` now accepts an optional `Exception` parameter;
- `ISecureKeyManager.KeyPath` renamed to `ChannelKeyPath`; `GetNextKey`/`GetKeyAtIndex` renamed to
`GetNextChannelKey`/`GetChannelKeyAtIndex`;
- `LightningMoney.ToString()` now includes the unit by default;
- Updated `PackageProjectUrl` to `https://docs.nlightn.ing`;

### Fixed

- Fixed `AcceptChannel1Payload.ToSelfDelay` propagation in channel config creation;

### Removed

- Removed `Feature.InitialRoutingSync` (deprecated in latest BOLT spec);
- Removed `Feature.OptionAnchorOutputs` (superseded by `OptionAnchorsZeroFeeHtlcTx`);

### Breaking Changes

- Dropped `net8.0` and `net9.0` targets; the library now requires **.NET 10.0** or later;
- `ISecureKeyManager`: `KeyPath` → `ChannelKeyPath`; `GetNextKey`/`GetKeyAtIndex` → `GetNextChannelKey`/`GetChannelKeyAtIndex`;
- `OpenChannel1Message`: `ChannelTypeTlv` is now required (non-nullable); constructor parameter order changed;
- `ChannelConfig.ChannelReserveAmount` changed from `LightningMoney?` to `LightningMoney`;
- `Feature.InitialRoutingSync` and `Feature.OptionAnchorOutputs` removed from the `Feature` enum;
- `LightningMoney.ToString()` output now includes the unit;

## v1.1.2

This version removes a Span size check from `BitReader` since the calculations are complex and should be done by the
Expand Down
8 changes: 4 additions & 4 deletions src/NLightning.Domain/NLightning.Domain.csproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>1.1.2</Version>
<Version>2.0.0</Version>
<Configurations>Debug;Release;Debug.Native;Debug.Wasm;Release.Native;Release.Wasm</Configurations>
</PropertyGroup>

<PropertyGroup>
<Description>Domain Library for NLightning</Description>
<AssemblyVersion>1.1.2</AssemblyVersion>
<FileVersion>1.1.2</FileVersion>
<AssemblyVersion>2.0.0</AssemblyVersion>
<FileVersion>2.0.0</FileVersion>
<PackageTags>lightning-network,bitcoin,crypto,infrastructure,dotnet,cryptography,cross-platform,libsodium,blazor,webassembly,aot</PackageTags>
<PackageProjectUrl>https://docs.nlightn.ing/api/NLightning.Domain.html</PackageProjectUrl>
<PackageId>NLightning.Domain</PackageId>
<PackageReleaseNotes>This version removes a Span size check from `BitReader` since the calculations are complex and should be done by the caller.</PackageReleaseNotes>
<PackageReleaseNotes>Added Client domain, wallet types, channel open validation, and updated feature flags to match latest BOLT spec. Contains breaking interface changes. See CHANGELOG.md for details.</PackageReleaseNotes>
</PropertyGroup>

<PropertyGroup Condition="$(Configuration.Contains('Debug'))">
Expand Down
38 changes: 38 additions & 0 deletions src/NLightning.Infrastructure.Bitcoin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,44 @@

All notable changes to this project will be documented in this file.

## v1.0.0

Major release adding wallet address management, funding transaction building, and comprehensive key management improvements.

### Added

- Added `FundingTransactionBuilder` and `IFundingTransactionBuilder` for constructing and signing funding transactions from UTXO sets;
- Added `BitcoinChainService` and `IBitcoinChainService` for chain-level Bitcoin operations;
- Added `IBitcoinWalletService` with `GetUnusedAddressAsync`;
- Added `IBlockchainMonitor.WatchBitcoinAddress` for watching wallet addresses;
- Added `IBlockchainMonitor.PublishAndWatchTransactionAsync` for broadcasting and tracking transactions;
- Added `IBlockchainMonitor.LastProcessedBlockHeight` property;
- Added `IBlockchainMonitor.OnWalletMovementDetected` event;
- Added `SecureKeyManager.ChannelKeyPath`, `DepositP2TrKeyPath`, `DepositP2WpkhKeyPath` key paths;
- Added `SecureKeyManager.OutputDepositP2TrDescriptor`, `OutputDepositP2WshDescriptor`, `OutputChangeP2TrDescriptor`, `OutputChangeP2WshDescriptor` output descriptors;
- Added `LocalLightningSigner` dependency on `IUtxoMemoryRepository` for UTXO selection;

### Changed

- `BitcoinWalletService` rewritten to use `IBlockchainMonitor` and `ISecureKeyManager` instead of direct RPC; no longer implements `IBitcoinWallet`;
- `SecureKeyManager.KeyPath` renamed to `ChannelKeyPath`; `OutputDescriptor` renamed to `OutputChannelDescriptor`;
- `CommitmentKeyDerivationService.DeriveRemoteCommitmentKeys` signature simplified: removed `localChannelKeyIndex` and `commitmentNumber` parameters;
- `DustService` now references `Domain.Protocol.Interfaces` instead of `Domain.Protocol.Services`;
- Updated `PackageProjectUrl` to `https://docs.nlightn.ing`;
- Updated `MessagePack` to `v3.1.4`, `NBitcoin` to `v9.0.5`, `NBitcoin.Secp256k1` to `v3.2.0`, `NetMQ` to `v4.0.2.2`;

### Removed

- Removed `IBitcoinWallet` interface (replaced by `IBitcoinWalletService`);

### Breaking Changes

- Dropped `net8.0` and `net9.0` targets; the library now requires **.NET 10.0** or later;
- `IBitcoinWallet` removed; use `IBitcoinWalletService` instead;
- `SecureKeyManager.KeyPath` → `ChannelKeyPath`; `OutputDescriptor` → `OutputChannelDescriptor`;
- `CommitmentKeyDerivationService.DeriveRemoteCommitmentKeys` signature changed: `localChannelKeyIndex` and `commitmentNumber` parameters removed;
- `LocalLightningSigner` constructor now requires `IUtxoMemoryRepository`;

## v0.0.4

Bump version to use `NLightning.Infrastructure@v1.0.3`.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>0.0.4</Version>
<Version>1.0.0</Version>
<Configurations>Debug;Release;Debug.Native;Debug.Wasm;Release.Native;Release.Wasm</Configurations>
</PropertyGroup>

<PropertyGroup>
<Description>Bitcoin Infrastructure Library for NLightning</Description>
<AssemblyVersion>0.0.4</AssemblyVersion>
<FileVersion>0.0.4</FileVersion>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>
<PackageTags>lightning-network,bitcoin,crypto,infrastructure,dotnet,cryptography,cross-platform,libsodium,blazor,webassembly,aot</PackageTags>
<PackageProjectUrl>https://docs.nlightn.ing/api/NLightning.Infrastructure.Bitcoin.html</PackageProjectUrl>
<PackageId>NLightning.Infrastructure.Bitcoin</PackageId>
<PackageReleaseNotes>Bump version to use `NLightning.Infrastructure@v1.0.3`.</PackageReleaseNotes>
<PackageReleaseNotes>Added wallet address management, funding transaction builder, and multi-path key derivation in SecureKeyManager. Contains breaking interface changes. See CHANGELOG.md for details.</PackageReleaseNotes>
</PropertyGroup>

<PropertyGroup Condition="$(Configuration.Contains('Debug'))">
Expand Down
28 changes: 28 additions & 0 deletions src/NLightning.Infrastructure/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,34 @@

All notable changes to this project will be documented in this file.

## v2.0.0

Peer service improvements, warning message propagation, `ChannelIdFactory` extension, and transport hardening.

### Added

- Added `PeerCommunicationService.SendWarningAsync` to send `WarningMessage` to peers on disconnect;
- Added `PeerService.SendWarningAsync` and `OnAttentionMessageReceived`/`OnExceptionRaised` events;
- Added `ChannelIdFactory.CreateTemporaryChannelId` for generating random temporary channel IDs;
- Added `ITcpService.ListeningTo` property exposing active listen endpoints;
- Added `host` and `port` parameters to `ConnectedPeer` constructor;

### Changed

- `PeerCommunicationService.DisconnectEvent` changed from `EventHandler?` to `EventHandler<Exception?>?`;
- `PeerCommunicationService.Disconnect` and `PeerService.Disconnect` now accept an optional `Exception` parameter and send an error/warning message before closing;
- `ITcpService.ConnectToPeerAsync` parameter changed from `PeerAddressInfo` to `PeerAddress`;
- Updated `libsodium` to `v1.0.21`;
- Updated `Microsoft.Extensions.Logging.Abstractions` and `Microsoft.Extensions.Options` to `v10.0.5`;
- Updated `PackageProjectUrl` to `https://docs.nlightn.ing`;

### Breaking Changes

- Dropped `net8.0` and `net9.0` targets; the library now requires **.NET 10.0** or later;
- `PeerCommunicationService.DisconnectEvent` signature changed from `EventHandler?` to `EventHandler<Exception?>?`;
- `ITcpService.ConnectToPeerAsync` now takes `PeerAddress` instead of `PeerAddressInfo`;
- `ConnectedPeer` constructor now requires `host` and `port` parameters;

## v1.0.3

Fixed an error on `SodiumJsCryptoProvider` where Blazor apps whould be unable to call `Sha256.GetHashAndReset`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@

<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>1.0.3</Version>
<Version>2.0.0</Version>
<Configurations>Debug;Release;Debug.Native;Debug.Wasm;Release.Native;Release.Wasm</Configurations>
</PropertyGroup>

<PropertyGroup>
<Description>Infrastructure Library for NLightning</Description>
<AssemblyVersion>1.0.3</AssemblyVersion>
<FileVersion>1.0.3</FileVersion>
<AssemblyVersion>2.0.0</AssemblyVersion>
<FileVersion>2.0.0</FileVersion>
<PackageTags>lightning-network,bitcoin,crypto,infrastructure,dotnet,cryptography,cross-platform,libsodium,blazor,webassembly,aot</PackageTags>
<PackageProjectUrl>https://docs.nlightn.ing/api/NLightning.Infrastructure.html</PackageProjectUrl>
<PackageId>NLightning.Infrastructure</PackageId>
<PackageReleaseNotes>Fixed an error on `SodiumJsCryptoProvider` where Blazor apps whould be unable to call `Sha256.GetHashAndReset`.</PackageReleaseNotes>
<PackageReleaseNotes>Added warning message propagation on disconnect, temporary channel ID generation, and TCP service improvements. Contains breaking interface changes. See CHANGELOG.md for details.</PackageReleaseNotes>
</PropertyGroup>

<PropertyGroup Condition="$(Configuration.Contains('Debug'))">
Expand Down
Loading