From 3c1e6fc00ba43ac8173a4daaec8ba93ce86e7e81 Mon Sep 17 00:00:00 2001
From: David Gershony <14833917+DavidGershony@users.noreply.github.com>
Date: Thu, 2 Jul 2026 11:41:50 +0100
Subject: [PATCH 1/2] remove Blockcore.Core dependency, migrate to pure
NBitcoin
- Replace all Blockcore.NBitcoin.* and Blockcore.Consensus.* types with NBitcoin equivalents
- Introduce AngorNetwork wrapper class to replace custom Blockcore network classes
- Set TransactionBuilder.ShuffleOutputs=false and DustPrevention=false (NBitcoin defaults differ from Blockcore fork)
- Retain Blockcore.Nostr.Client (provides Nostr.Client.* namespace, unrelated to Bitcoin)
- Improve UAT deploy automation: detect errors early instead of waiting full TxTimeout
- Delete 6 custom network classes (BitcoinMain, BitcoinSignet, BitcoinTest, BitcoinTest4, Angornet, LiquidMain)
- Delete NetworkMapper.cs (replaced by AngorNetwork.BitcoinNetwork + implicit conversion)
---
src/Directory.Packages.props | 1 -
.../Wallet/Simple/SimpleWallet.cs | 4 +-
.../Import/SeedwordsEntryViewModel.cs | 2 +-
.../Funds/Accounts/AccountsViewModel.cs | 6 +-
.../Settings/SettingsSectionViewModel.cs | 12 +-
.../AngorApp/UI/Shared/Services/UIServices.cs | 4 +-
.../LogExportRoundtripTest.cs | 4 +-
.../App.Test.Integration/Nip44InteropTest.cs | 4 +-
src/design/App/Automation/AutomationFlows.cs | 19 +-
.../EditProfile/EditProfileView.axaml.cs | 2 +-
.../Steps/CreateProjectStep3View.axaml.cs | 2 +-
.../UI/Sections/Settings/SettingsViewModel.cs | 6 +-
.../UI/Shared/Helpers/BlossomAuthKeyHelper.cs | 2 +-
.../UI/Shared/Services/LogExportService.cs | 4 +-
.../Funding/Founder/ApproveInvestmentTests.cs | 20 +-
.../Founder/CreateProjectProfileTests.cs | 2 +-
.../Funding/Founder/CreateProjectTests.cs | 6 +-
.../Funding/Founder/FounderAppServiceTests.cs | 2 +-
.../Funding/Founder/ReleaseFundsTests.cs | 8 +-
.../Funding/Founder/SpendStageFundsTests.cs | 7 +-
.../Operations/BuildEndOfProjectClaimTests.cs | 2 +-
.../BuildPenaltyReleaseTransactionTests.cs | 2 +-
.../BuildRecoveryTransactionTests.cs | 9 +-
.../BuildUnfundedReleaseTransactionTests.cs | 2 +-
.../CheckForReleaseSignaturesTests.cs | 2 +-
.../Operations/ClaimLightningSwapTests.cs | 2 +-
...mentFromSpecificAddressIntegrationTests.cs | 9 +-
...reateInvestmentFromSpecificAddressTests.cs | 17 +-
.../Operations/CreateInvestmentTests.cs | 17 +-
.../Operations/GetInvestorNsecTests.cs | 2 +-
.../MonitorAddressForFundsIntegrationTests.cs | 6 +-
.../Operations/MonitorAddressForFundsTests.cs | 4 +-
.../NotifyFounderOfCancellationTests.cs | 2 +-
.../NotifyFounderOfInvestmentTests.cs | 2 +-
.../Operations/PublishInvestmentTests.cs | 2 +-
.../RequestInvestmentSignaturesTests.cs | 19 +-
.../ProjectInvestmentsServiceTests.cs | 4 +-
.../TestDoubles/AngornetMinerFaucet.cs | 23 +-
.../Lightning/BoltzNetworkSwitchingTests.cs | 16 +-
.../Lightning/LightningIntegrationTests.cs | 4 +-
.../Angor.Sdk.Tests/Shared/TestDataBuilder.cs | 4 +-
.../Shared/TestNetworkFixture.cs | 6 +-
.../Angor.Sdk/Common/NetworkConfiguration.cs | 21 +-
.../Founder/Operations/ApproveInvestment.cs | 4 +-
.../Founder/Operations/CreateProjectInfo.cs | 4 +-
.../Operations/CreateProjectProfile.cs | 4 +-
.../Operations/GetProjectInvestments.cs | 2 +-
.../Founder/Operations/ReleaseFunds.cs | 4 +-
.../Founder/Operations/SpendStageFunds.cs | 6 +-
.../Operations/UpdateProjectProfile.cs | 4 +-
.../Investor/Domain/PortfolioService.cs | 4 +-
.../Operations/BuildEndOfProjectClaim.cs | 4 +-
.../Operations/BuildInvestmentDraft.cs | 2 +-
.../BuildPenaltyReleaseTransaction.cs | 4 +-
.../Operations/BuildRecoveryTransaction.cs | 6 +-
.../BuildUnfundedReleaseTransaction.cs | 6 +-
.../Operations/CancelInvestmentRequest.cs | 5 +-
.../Operations/CheckForReleaseSignatures.cs | 2 +-
.../Investor/Operations/GetInvestorNsec.cs | 4 +-
.../Investor/Operations/GetPenalties.cs | 3 +-
.../Investor/Operations/GetRecoveryStatus.cs | 8 +-
.../Operations/NotifyFounderOfCancellation.cs | 4 +-
.../Operations/NotifyFounderOfInvestment.cs | 4 +-
.../Investor/Operations/PublishInvestment.cs | 8 +-
.../Operations/RequestInvestmentSignatures.cs | 5 +-
.../Funding/Projects/EncryptionService.cs | 4 +-
.../Projects/IProjectInvestmentsService.cs | 2 +-
.../Projects/ProjectInvestmentsService.cs | 8 +-
.../Funding/Shared/NostrDecrypter.cs | 4 +-
.../Infrastructure/Impl/WalletAppService.cs | 4 +-
.../Angor.Sdk/Wallet/WalletContextServices.cs | 5 +-
...nputsFromAddressAndSignTransactionTests.cs | 98 ++--
.../Angor.Shared.Tests.csproj | 1 -
.../DataBuilders/AngorScripts.cs | 31 +-
.../DataBuilders/InvestmentOperations.cs | 104 ++---
.../DataBuilders/ProjectOperations.cs | 16 +-
.../DataBuilders/ScriptBuilder.cs | 24 +-
.../DerivationOperationsTest.cs | 441 +++++++++---------
.../InvestmentOperationsTest.cs | 85 ++--
.../MempoolMonitoringServiceTests.cs | 4 +-
.../Protocol/AngorTestData.cs | 5 +-
.../Protocol/FounderTransactionActionTest.cs | 31 +-
.../Protocol/InvestmentIntegrationsTests.cs | 92 ++--
.../Scripts/ProjectScriptsBuilderTest.cs | 6 +-
.../Protocol/SeederTransactionActionsTest.cs | 26 +-
.../InvestmentTransactionBuilderTest.cs | 44 +-
.../SpendingTransactionBuilderTest.cs | 27 +-
.../Angor.Shared.Tests/PsbtOperationsTests.cs | 75 +--
src/shared/Angor.Shared.Tests/ScriptTest.cs | 12 +-
.../TaprootOutputKeyTests.cs | 6 +-
.../TransactionValidation.cs | 37 +-
.../WalletOperationsTest.cs | 75 +--
src/shared/Angor.Shared/Angor.Shared.csproj | 1 -
src/shared/Angor.Shared/AngorKey.cs | 14 +-
.../Angor.Shared/DerivationOperations.cs | 48 +-
src/shared/Angor.Shared/HdOperations.cs | 70 ++-
.../Angor.Shared/IDerivationOperations.cs | 4 +-
.../Angor.Shared/INetworkConfiguration.cs | 6 +-
src/shared/Angor.Shared/IPsbtOperations.cs | 6 +-
src/shared/Angor.Shared/IWalletOperations.cs | 3 +-
.../Lightning/BoltzClaimService.cs | 114 +++--
.../Lightning/Models/BoltzConfiguration.cs | 4 +-
.../Angor.Shared/Models/FundingParameters.cs | 10 +-
.../Angor.Shared/Models/ProjectScripts.cs | 2 +-
src/shared/Angor.Shared/Models/PsbtData.cs | 2 -
src/shared/Angor.Shared/Models/SendInfo.cs | 3 +-
.../Angor.Shared/Models/TransactionInfo.cs | 2 +-
src/shared/Angor.Shared/Models/WalletWords.cs | 2 +-
src/shared/Angor.Shared/NetworkMapper.cs | 28 --
.../Angor.Shared/Networks/AngorNetwork.cs | 74 +++
src/shared/Angor.Shared/Networks/Angornet.cs | 118 -----
.../Angor.Shared/Networks/BitcoinMain.cs | 155 ------
.../Angor.Shared/Networks/BitcoinSignet.cs | 174 -------
.../Angor.Shared/Networks/BitcoinTest.cs | 99 ----
.../Angor.Shared/Networks/BitcoinTest4.cs | 99 ----
.../Angor.Shared/Networks/LiquidMain.cs | 99 ----
src/shared/Angor.Shared/Networks/Networks.cs | 87 +---
.../Protocol/FounderTransactionActions.cs | 41 +-
.../Protocol/IFounderTransactionActions.cs | 3 +-
.../Protocol/IInvestorTransactionActions.cs | 2 +-
.../Protocol/ISeederTransactionActions.cs | 3 +-
.../Protocol/InvestorTransactionActions.cs | 62 ++-
.../Scripts/IInvestmentScriptbuilder.cs | 5 +-
.../Scripts/IProjectScriptsBuilder.cs | 5 +-
.../Scripts/ISeederScriptTreeBuilder.cs | 4 +-
.../Protocol/Scripts/ITaprootScriptBuilder.cs | 9 +-
.../Scripts/InvestmentScriptBuilder.cs | 7 +-
.../Protocol/Scripts/ProjectScriptsBuilder.cs | 11 +-
.../Scripts/SeederScriptTreeBuilder.cs | 5 +-
.../Protocol/Scripts/TaprootScriptBuilder.cs | 33 +-
.../Protocol/SeederTransactionActions.cs | 28 +-
.../IInvestmentTransactionBuilder.cs | 5 +-
.../ISpendingTransactionBuilder.cs | 2 +-
.../InvestmentTransactionBuilder.cs | 28 +-
.../SpendingTransactionBuilder.cs | 17 +-
src/shared/Angor.Shared/PsbtOperations.cs | 91 ++--
.../Services/ApplicationLogicService.cs | 4 +-
.../Services/IApplicationLogicService.cs | 2 -
.../Services/MempoolIndexerMappers.cs | 7 +-
.../Services/MempoolSpaceIndexerApi.cs | 4 +-
.../Angor.Shared/Services/NetworkService.cs | 44 +-
.../Services/NostrCommunicationFactory.cs | 23 +-
.../Services/RelaySubscriptionsHandling.cs | 1 -
.../Angor.Shared/Utilities/AmountExtension.cs | 4 +-
.../Utilities/PenaltyThresholdHelper.cs | 2 +-
.../Utilities/TransactionExtension.cs | 34 +-
src/shared/Angor.Shared/WalletOperations.cs | 176 +++----
src/webapp/Angor.Client/Angor.Client.csproj | 1 -
.../Components/BalanceDisplay.razor | 6 +-
.../Components/FounderProjectItem.razor | 2 +-
.../Components/MessageComponent.razor | 2 +-
.../Models/FlattenedProjectTest.cs | 2 +-
.../Angor.Client/Models/InvestorProject.cs | 2 +-
.../Angor.Client/NetworkConfiguration.cs | 24 +-
.../Pages/CheckTransactionCode.razor | 22 +-
src/webapp/Angor.Client/Pages/Create.razor | 13 +-
src/webapp/Angor.Client/Pages/Invest.razor | 18 +-
.../Angor.Client/Pages/InvestView.razor | 18 +-
src/webapp/Angor.Client/Pages/Investor.razor | 8 +-
src/webapp/Angor.Client/Pages/Penalties.razor | 5 +-
src/webapp/Angor.Client/Pages/Recover.razor | 25 +-
src/webapp/Angor.Client/Pages/Release.razor | 8 +-
src/webapp/Angor.Client/Pages/Settings.razor | 6 +-
.../Angor.Client/Pages/Signatures.razor | 4 +-
src/webapp/Angor.Client/Pages/Spend.razor | 15 +-
src/webapp/Angor.Client/Pages/Unfunded.razor | 6 +-
src/webapp/Angor.Client/Pages/View.razor | 6 +-
src/webapp/Angor.Client/Pages/Wallet.razor | 12 +-
.../Angor.Client/Services/CurrencyService.cs | 6 +-
.../Services/EncryptionService.cs | 7 +-
.../Angor.Client/Services/IWalletUIService.cs | 2 +-
.../Angor.Client/Services/WalletUIService.cs | 4 +-
.../Angor.Client/Shared/BaseComponent.cs | 6 +-
.../Angor.Client/Shared/MainLayout.razor | 6 +-
174 files changed, 1442 insertions(+), 2338 deletions(-)
delete mode 100644 src/shared/Angor.Shared/NetworkMapper.cs
create mode 100644 src/shared/Angor.Shared/Networks/AngorNetwork.cs
delete mode 100644 src/shared/Angor.Shared/Networks/Angornet.cs
delete mode 100644 src/shared/Angor.Shared/Networks/BitcoinMain.cs
delete mode 100644 src/shared/Angor.Shared/Networks/BitcoinSignet.cs
delete mode 100644 src/shared/Angor.Shared/Networks/BitcoinTest.cs
delete mode 100644 src/shared/Angor.Shared/Networks/BitcoinTest4.cs
delete mode 100644 src/shared/Angor.Shared/Networks/LiquidMain.cs
diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index d104826e8..551356922 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -86,7 +86,6 @@
-
diff --git a/src/avalonia/AngorApp.Model/Wallet/Simple/SimpleWallet.cs b/src/avalonia/AngorApp.Model/Wallet/Simple/SimpleWallet.cs
index 55ae32ada..82dc34ffb 100644
--- a/src/avalonia/AngorApp.Model/Wallet/Simple/SimpleWallet.cs
+++ b/src/avalonia/AngorApp.Model/Wallet/Simple/SimpleWallet.cs
@@ -7,7 +7,7 @@
using Angor.Shared.Models;
using AngorApp.Model.Amounts;
using AngorApp.Model.Common;
-using Blockcore.Networks;
+using Angor.Shared.Networks;
using CSharpFunctionalExtensions;
using ReactiveUI;
using ReactiveUI.SourceGenerators;
@@ -82,7 +82,7 @@ public SimpleWallet(WalletId id, IWalletAppService walletAppService, ISendMoneyF
GetTestCoins.HandleErrorsWith(notificationService, "Cannot get test coins");
- CanGetTestCoins = networkConfiguration.GetNetwork().NetworkType == NetworkType.Testnet;
+ CanGetTestCoins = !networkConfiguration.GetNetwork().IsMainnet;
Name = CanGetTestCoins ? "Test Wallet" : "Bitcoin Wallet";
}
diff --git a/src/avalonia/AngorApp/UI/Flows/AddWallet/Import/SeedwordsEntryViewModel.cs b/src/avalonia/AngorApp/UI/Flows/AddWallet/Import/SeedwordsEntryViewModel.cs
index ff8e72de2..fa1fb3dc4 100644
--- a/src/avalonia/AngorApp/UI/Flows/AddWallet/Import/SeedwordsEntryViewModel.cs
+++ b/src/avalonia/AngorApp/UI/Flows/AddWallet/Import/SeedwordsEntryViewModel.cs
@@ -1,6 +1,6 @@
using ReactiveUI.Validation.Extensions;
using ReactiveUI.Validation.Helpers;
-using Blockcore.NBitcoin.BIP39;
+using NBitcoin;
namespace AngorApp.UI.Flows.AddWallet.Import
{
diff --git a/src/avalonia/AngorApp/UI/Sections/Funds/Accounts/AccountsViewModel.cs b/src/avalonia/AngorApp/UI/Sections/Funds/Accounts/AccountsViewModel.cs
index 7e817d125..b235b4fff 100644
--- a/src/avalonia/AngorApp/UI/Sections/Funds/Accounts/AccountsViewModel.cs
+++ b/src/avalonia/AngorApp/UI/Sections/Funds/Accounts/AccountsViewModel.cs
@@ -3,7 +3,7 @@
using Angor.Sdk.Wallet.Application;
using Angor.Shared;
using AngorApp.UI.Flows.AddWallet;
-using Blockcore.Networks;
+using Angor.Shared.Networks;
using DynamicData;
using ReactiveUI;
using Zafiro.CSharpFunctionalExtensions;
@@ -39,13 +39,13 @@ public AccountsViewModel(IWalletContext walletContext, IAddWalletFlow addWalletF
Balances = accountBalances;
- CanGetTestCoins = networkConfiguration.GetNetwork().NetworkType == NetworkType.Testnet;
+ CanGetTestCoins = !networkConfiguration.GetNetwork().IsMainnet;
// Update CanGetTestCoins when wallets are reloaded (e.g. after network change)
walletContext.WalletChanges
.QueryWhenChanged()
.Select(wallets => wallets.Items.Any(w => w.CanGetTestCoins))
- .StartWith(networkConfiguration.GetNetwork().NetworkType == NetworkType.Testnet)
+ .StartWith(!networkConfiguration.GetNetwork().IsMainnet)
.ObserveOn(RxApp.MainThreadScheduler)
.Subscribe(value => CanGetTestCoins = value)
.DisposeWith(disposable);
diff --git a/src/avalonia/AngorApp/UI/Sections/Settings/SettingsSectionViewModel.cs b/src/avalonia/AngorApp/UI/Sections/Settings/SettingsSectionViewModel.cs
index a8852320a..332304c3d 100644
--- a/src/avalonia/AngorApp/UI/Sections/Settings/SettingsSectionViewModel.cs
+++ b/src/avalonia/AngorApp/UI/Sections/Settings/SettingsSectionViewModel.cs
@@ -82,9 +82,9 @@ public SettingsSectionViewModel(INetworkStorage networkStorage, IWalletStore wal
currentNetwork = networkStorage.GetNetwork();
networkConfiguration.SetNetwork(currentNetwork switch
{
- "Mainnet" => new BitcoinMain(),
- "Liquid" => new LiquidMain(),
- _ => new Angornet()
+ "Mainnet" => AngorNetwork.Main(),
+ "Liquid" => AngorNetwork.Liquid(),
+ _ => AngorNetwork.Angornet()
});
Network = currentNetwork;
SelectedNetwork = currentNetwork;
@@ -272,9 +272,9 @@ private async Task ChangeNetworkAsync()
networkStorage.SetSettings(new SettingsInfo());
networkConfiguration.SetNetwork(newNetwork switch
{
- "Mainnet" => new BitcoinMain(),
- "Liquid" => new LiquidMain(),
- _ => new Angornet()
+ "Mainnet" => AngorNetwork.Main(),
+ "Liquid" => AngorNetwork.Liquid(),
+ _ => AngorNetwork.Angornet()
});
AmountUI.DefaultSymbol = networkConfiguration.GetNetwork().CoinTicker;
networkService.AddSettingsIfNotExist();
diff --git a/src/avalonia/AngorApp/UI/Shared/Services/UIServices.cs b/src/avalonia/AngorApp/UI/Shared/Services/UIServices.cs
index b1dfee94d..1c2369d4c 100644
--- a/src/avalonia/AngorApp/UI/Shared/Services/UIServices.cs
+++ b/src/avalonia/AngorApp/UI/Shared/Services/UIServices.cs
@@ -8,7 +8,7 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Styling;
-using Blockcore.Networks;
+using Angor.Shared.Networks;
using Serilog;
using Zafiro.Avalonia.Dialogs;
using Zafiro.Settings;
@@ -129,7 +129,7 @@ public virtual bool EnableProductionValidations()
{
var isDebugMode = IsDebugModeEnabled;
var network = networkConfiguration.GetNetwork();
- var isTestnet = network.NetworkType == NetworkType.Testnet;
+ var isTestnet = !network.IsMainnet;
return !(isDebugMode && isTestnet);
}
diff --git a/src/design/App.Test.Integration/LogExportRoundtripTest.cs b/src/design/App.Test.Integration/LogExportRoundtripTest.cs
index 5a739396c..684f7ab3d 100644
--- a/src/design/App.Test.Integration/LogExportRoundtripTest.cs
+++ b/src/design/App.Test.Integration/LogExportRoundtripTest.cs
@@ -4,8 +4,8 @@
using Angor.Sdk.Funding.Projects;
using Angor.Shared;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
-using Blockcore.NBitcoin.DataEncoders;
+using NBitcoin;
+using NBitcoin.DataEncoders;
using FluentAssertions;
using Xunit;
diff --git a/src/design/App.Test.Integration/Nip44InteropTest.cs b/src/design/App.Test.Integration/Nip44InteropTest.cs
index 0e6660a42..9f074dc73 100644
--- a/src/design/App.Test.Integration/Nip44InteropTest.cs
+++ b/src/design/App.Test.Integration/Nip44InteropTest.cs
@@ -1,8 +1,8 @@
using System.Diagnostics;
using Angor.Sdk.Funding.Projects;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
-using Blockcore.NBitcoin.DataEncoders;
+using NBitcoin;
+using NBitcoin.DataEncoders;
using FluentAssertions;
using Xunit;
diff --git a/src/design/App/Automation/AutomationFlows.cs b/src/design/App/Automation/AutomationFlows.cs
index dbc3ce535..ec0556b80 100644
--- a/src/design/App/Automation/AutomationFlows.cs
+++ b/src/design/App/Automation/AutomationFlows.cs
@@ -1121,22 +1121,37 @@ private static async Task DeployProjectAsync(
// deploy modal is a PaymentFlowView (DeployFlowViewModel.CurrentScreen is not set
// in the wallet-pay path)
var deployDeadline = DateTime.UtcNow + TxTimeout;
+ bool deploySucceeded = false;
while (DateTime.UtcNow < deployDeadline)
{
- var success = await Dispatcher.UIThread.InvokeAsync(() =>
+ var (success, errorMsg) = await Dispatcher.UIThread.InvokeAsync(() =>
{
Dispatcher.UIThread.RunJobs();
var paymentFlow = myProjectsVm.CreateProjectVm?.DeployFlow?.PaymentFlow;
- return paymentFlow?.IsSuccess == true;
+ var deployFlow = myProjectsVm.CreateProjectVm?.DeployFlow;
+ var err = paymentFlow?.ErrorMessage ?? deployFlow?.DeployErrorMessage;
+ return (paymentFlow?.IsSuccess == true, err);
});
if (success)
{
+ deploySucceeded = true;
break;
}
+ // If the deploy flow reported an error, don't wait the full timeout
+ if (!string.IsNullOrEmpty(errorMsg))
+ {
+ return new ProjectCreatedResponse { Success = false, Error = $"Deploy failed: {errorMsg}" };
+ }
+
await Task.Delay(PollInterval);
}
+ if (!deploySucceeded)
+ {
+ return new ProjectCreatedResponse { Success = false, Error = "Deploy timed out waiting for IsSuccess" };
+ }
+
// Click SuccessActionButton in the PaymentFlowView success screen
await ClickByNameAsync(window, "SuccessActionButton");
await Task.Delay(500);
diff --git a/src/design/App/UI/Sections/MyProjects/EditProfile/EditProfileView.axaml.cs b/src/design/App/UI/Sections/MyProjects/EditProfile/EditProfileView.axaml.cs
index e2e423e3c..b68ebeaf7 100644
--- a/src/design/App/UI/Sections/MyProjects/EditProfile/EditProfileView.axaml.cs
+++ b/src/design/App/UI/Sections/MyProjects/EditProfile/EditProfileView.axaml.cs
@@ -12,7 +12,7 @@
using App.UI.Shared;
using App.UI.Shell;
using App.UI.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using ReactiveUI;
diff --git a/src/design/App/UI/Sections/MyProjects/Steps/CreateProjectStep3View.axaml.cs b/src/design/App/UI/Sections/MyProjects/Steps/CreateProjectStep3View.axaml.cs
index f4a956ab9..f6c32f832 100644
--- a/src/design/App/UI/Sections/MyProjects/Steps/CreateProjectStep3View.axaml.cs
+++ b/src/design/App/UI/Sections/MyProjects/Steps/CreateProjectStep3View.axaml.cs
@@ -9,7 +9,7 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform.Storage;
-using Blockcore.NBitcoin;
+using NBitcoin;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using ReactiveUI;
diff --git a/src/design/App/UI/Sections/Settings/SettingsViewModel.cs b/src/design/App/UI/Sections/Settings/SettingsViewModel.cs
index 5ddb6e228..ae416d1cd 100644
--- a/src/design/App/UI/Sections/Settings/SettingsViewModel.cs
+++ b/src/design/App/UI/Sections/Settings/SettingsViewModel.cs
@@ -325,9 +325,9 @@ private async Task SwitchNetworkStorageAsync(string newNetwork)
// Switch the runtime network object so Bitcoin operations use the correct parameters.
_networkConfig.SetNetwork(newNetwork switch
{
- "Mainnet" => new BitcoinMain(),
- "Liquid" => new LiquidMain(),
- _ => new Angornet()
+ "Mainnet" => AngorNetwork.Main(),
+ "Liquid" => AngorNetwork.Liquid(),
+ _ => AngorNetwork.Angornet()
});
// Re-initialize defaults for the new network.
diff --git a/src/design/App/UI/Shared/Helpers/BlossomAuthKeyHelper.cs b/src/design/App/UI/Shared/Helpers/BlossomAuthKeyHelper.cs
index 767cd30cf..771411b76 100644
--- a/src/design/App/UI/Shared/Helpers/BlossomAuthKeyHelper.cs
+++ b/src/design/App/UI/Shared/Helpers/BlossomAuthKeyHelper.cs
@@ -1,4 +1,4 @@
-using Blockcore.NBitcoin;
+using NBitcoin;
namespace App.UI.Shared.Helpers;
diff --git a/src/design/App/UI/Shared/Services/LogExportService.cs b/src/design/App/UI/Shared/Services/LogExportService.cs
index f8876f300..c7197c03c 100644
--- a/src/design/App/UI/Shared/Services/LogExportService.cs
+++ b/src/design/App/UI/Shared/Services/LogExportService.cs
@@ -7,8 +7,8 @@
using Angor.Shared;
using Angor.Shared.Models;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
-using Blockcore.NBitcoin.DataEncoders;
+using NBitcoin;
+using NBitcoin.DataEncoders;
using CSharpFunctionalExtensions;
using Nostr.Client.Utils;
using Microsoft.Extensions.Logging;
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/ApproveInvestmentTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/ApproveInvestmentTests.cs
index 346db11b9..7624f3133 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/ApproveInvestmentTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/ApproveInvestmentTests.cs
@@ -7,7 +7,7 @@
using Angor.Shared.Models;
using Angor.Shared.Protocol;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Moq;
@@ -119,16 +119,16 @@ public async Task Handle_WhenSignatureVerificationFails_ReturnsFailure()
.Returns(network);
_mockInvestorTransactionActions
- .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
+ .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
.Returns(tx);
_mockFounderTransactionActions
- .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(new SignatureInfo());
// CheckInvestorRecoverySignatures returns false -> throws InvalidOperationException
_mockInvestorTransactionActions
- .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(false);
// Act
@@ -165,15 +165,15 @@ public async Task Handle_WhenSuccessful_SendsSignaturesToInvestor()
.Returns(network);
_mockInvestorTransactionActions
- .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
+ .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
.Returns(tx);
_mockFounderTransactionActions
- .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(new SignatureInfo());
_mockInvestorTransactionActions
- .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(true);
_mockSerializer
@@ -268,15 +268,15 @@ private void SetupSuccessfulApprovalFlow()
.Returns(network);
_mockInvestorTransactionActions
- .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
+ .Setup(x => x.BuildRecoverInvestorFundsTransaction(It.IsAny(), It.IsAny()))
.Returns(tx);
_mockFounderTransactionActions
- .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.SignInvestorRecoveryTransactions(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(new SignatureInfo());
_mockInvestorTransactionActions
- .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.CheckInvestorRecoverySignatures(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(true);
}
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectProfileTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectProfileTests.cs
index 6e26e406a..7186eca62 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectProfileTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectProfileTests.cs
@@ -8,7 +8,7 @@
using Angor.Shared;
using Angor.Shared.Models;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Microsoft.Extensions.Logging;
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectTests.cs
index 4971ffc45..bc0496447 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/CreateProjectTests.cs
@@ -7,10 +7,8 @@
using Angor.Shared;
using Angor.Shared.Models;
using Angor.Shared.Protocol;
-using Blockcore.Consensus.ScriptInfo;
-using Blockcore.Consensus.TransactionInfo;
-using Blockcore.NBitcoin;
-using Blockcore.Networks;
+using Angor.Shared.Networks;
+using NBitcoin;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Microsoft.Extensions.Logging;
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/FounderAppServiceTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/FounderAppServiceTests.cs
index fb912ef9d..0bc8d6d4e 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/FounderAppServiceTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/FounderAppServiceTests.cs
@@ -10,7 +10,7 @@
using Angor.Shared;
using Angor.Shared.Models;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/ReleaseFundsTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/ReleaseFundsTests.cs
index 7b3d895c2..4677f331a 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/ReleaseFundsTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/ReleaseFundsTests.cs
@@ -8,7 +8,7 @@
using Angor.Shared.Models;
using Angor.Shared.Protocol;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Moq;
@@ -163,7 +163,7 @@ public async Task Handle_WhenSignatureCheckFails_ReturnsFailure()
_mockInvestorTransactionActions
.Setup(x => x.CheckInvestorUnfundedReleaseSignatures(
It.IsAny(),
- It.IsAny(),
+ It.IsAny(),
It.IsAny(),
It.IsAny()))
.Returns(false);
@@ -171,13 +171,13 @@ public async Task Handle_WhenSignatureCheckFails_ReturnsFailure()
_mockFounderTransactionActions
.Setup(x => x.SignInvestorRecoveryTransactions(
It.IsAny(), It.IsAny(),
- It.IsAny(), It.IsAny()))
+ It.IsAny(), It.IsAny()))
.Returns(new SignatureInfo());
_mockInvestorTransactionActions
.Setup(x => x.BuildUnfundedReleaseInvestorFundsTransaction(
It.IsAny(),
- It.IsAny(),
+ It.IsAny(),
It.IsAny()))
.Returns(network.CreateTransaction());
diff --git a/src/sdk/Angor.Sdk.Tests/Funding/Founder/SpendStageFundsTests.cs b/src/sdk/Angor.Sdk.Tests/Funding/Founder/SpendStageFundsTests.cs
index 930903994..24c335b4d 100644
--- a/src/sdk/Angor.Sdk.Tests/Funding/Founder/SpendStageFundsTests.cs
+++ b/src/sdk/Angor.Sdk.Tests/Funding/Founder/SpendStageFundsTests.cs
@@ -9,7 +9,8 @@
using Angor.Shared.Models;
using Angor.Shared.Protocol;
using Angor.Shared.Services;
-using Blockcore.NBitcoin;
+using NBitcoin;
+using Angor.Shared.Networks;
using CSharpFunctionalExtensions;
using FluentAssertions;
using Microsoft.Extensions.Logging;
@@ -230,7 +231,7 @@ public async Task Handle_WhenSuccessful_ReturnsTransactionDraft()
It.IsAny(),
It.IsAny>(),
It.IsAny(),
- It.IsAny(),
+ It.IsAny