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