diff --git a/src/Blockcore.sln b/src/Blockcore.sln index 19ba8cfe1..554640006 100644 --- a/src/Blockcore.sln +++ b/src/Blockcore.sln @@ -154,6 +154,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.SeniorBl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.RoyalSportsCity", "Networks\Blockcore.Networks.RoyalSportsCity\Blockcore.Networks.RoyalSportsCity.csproj", "{D176C98F-E2EF-49C6-B073-32F08889BD27}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.Consensus.Host", "Features\Blockcore.Features.Consensus.Host\Blockcore.Features.Consensus.Host.csproj", "{83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.MemoryPool.Host", "Features\Blockcore.Features.MemoryPool.Host\Blockcore.Features.MemoryPool.Host.csproj", "{A54A4DB3-C1D9-4C5F-A636-FE448AA36174}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.Wallet.Host", "Features\Blockcore.Features.Wallet.Host\Blockcore.Features.Wallet.Host.csproj", "{77E48C55-353E-4E51-A904-A021C961FA81}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blockcore.Features.BlockStore.Host", "Features\Blockcore.Features.BlockStore.Host\Blockcore.Features.BlockStore.Host.csproj", "{2D445BEF-2578-4A5A-99AA-7EB9E90A37A2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blockcore.Features.Miner.Host", "Features\Blockcore.Features.Miner.Host\Blockcore.Features.Miner.Host.csproj", "{C887B83D-815C-4CFF-BA8E-4EB148C7F488}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -404,6 +414,26 @@ Global {D176C98F-E2EF-49C6-B073-32F08889BD27}.Debug|Any CPU.Build.0 = Debug|Any CPU {D176C98F-E2EF-49C6-B073-32F08889BD27}.Release|Any CPU.ActiveCfg = Release|Any CPU {D176C98F-E2EF-49C6-B073-32F08889BD27}.Release|Any CPU.Build.0 = Release|Any CPU + {83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF}.Release|Any CPU.Build.0 = Release|Any CPU + {A54A4DB3-C1D9-4C5F-A636-FE448AA36174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A54A4DB3-C1D9-4C5F-A636-FE448AA36174}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A54A4DB3-C1D9-4C5F-A636-FE448AA36174}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A54A4DB3-C1D9-4C5F-A636-FE448AA36174}.Release|Any CPU.Build.0 = Release|Any CPU + {77E48C55-353E-4E51-A904-A021C961FA81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {77E48C55-353E-4E51-A904-A021C961FA81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {77E48C55-353E-4E51-A904-A021C961FA81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {77E48C55-353E-4E51-A904-A021C961FA81}.Release|Any CPU.Build.0 = Release|Any CPU + {2D445BEF-2578-4A5A-99AA-7EB9E90A37A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D445BEF-2578-4A5A-99AA-7EB9E90A37A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D445BEF-2578-4A5A-99AA-7EB9E90A37A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D445BEF-2578-4A5A-99AA-7EB9E90A37A2}.Release|Any CPU.Build.0 = Release|Any CPU + {C887B83D-815C-4CFF-BA8E-4EB148C7F488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C887B83D-815C-4CFF-BA8E-4EB148C7F488}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C887B83D-815C-4CFF-BA8E-4EB148C7F488}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C887B83D-815C-4CFF-BA8E-4EB148C7F488}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -472,6 +502,11 @@ Global {2834DEF2-0CF7-4012-A73D-07F06256CC75} = {3B56C02B-4468-4268-B797-851562789FCC} {9C962CB5-A11B-47F1-A5D3-2AD2215CF100} = {3B56C02B-4468-4268-B797-851562789FCC} {D176C98F-E2EF-49C6-B073-32F08889BD27} = {3B56C02B-4468-4268-B797-851562789FCC} + {83A17E7D-FC7F-4F7D-A22F-C94E9A70DAEF} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} + {A54A4DB3-C1D9-4C5F-A636-FE448AA36174} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} + {77E48C55-353E-4E51-A904-A021C961FA81} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} + {2D445BEF-2578-4A5A-99AA-7EB9E90A37A2} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} + {C887B83D-815C-4CFF-BA8E-4EB148C7F488} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6C780ABA-5872-4B83-AD3F-A5BD423AD907} diff --git a/src/Features/Blockcore.Features.BlockStore/Api/BlockStoreClient.cs b/src/Features/Blockcore.Features.BlockStore.Host/Api/BlockStoreClient.cs similarity index 100% rename from src/Features/Blockcore.Features.BlockStore/Api/BlockStoreClient.cs rename to src/Features/Blockcore.Features.BlockStore.Host/Api/BlockStoreClient.cs diff --git a/src/Features/Blockcore.Features.BlockStore/Api/Controllers/BlockStoreController.cs b/src/Features/Blockcore.Features.BlockStore.Host/Api/Controllers/BlockStoreController.cs similarity index 97% rename from src/Features/Blockcore.Features.BlockStore/Api/Controllers/BlockStoreController.cs rename to src/Features/Blockcore.Features.BlockStore.Host/Api/Controllers/BlockStoreController.cs index 2be18d2b0..7f490667e 100644 --- a/src/Features/Blockcore.Features.BlockStore/Api/Controllers/BlockStoreController.cs +++ b/src/Features/Blockcore.Features.BlockStore.Host/Api/Controllers/BlockStoreController.cs @@ -195,7 +195,7 @@ public IActionResult GetAddressesBalances(string addresses, int minConfirmations this.logger.LogDebug("Asking data for {0} addresses.", addressesArray.Length); - AddressBalancesResult result = this.addressIndexer.GetAddressBalances(addressesArray, minConfirmations); + AddressIndexing.AddressBalancesResult result = this.addressIndexer.GetAddressBalances(addressesArray, minConfirmations); this.logger.LogDebug("Sending data for {0} addresses.", result.Balances.Count); @@ -221,7 +221,7 @@ public IActionResult GetVerboseAddressesBalancesData(string addresses) this.logger.LogDebug("Asking data for {0} addresses.", addressesArray.Length); - VerboseAddressBalancesResult result = this.addressIndexer.GetAddressIndexerState(addressesArray); + AddressIndexing.VerboseAddressBalancesResult result = this.addressIndexer.GetAddressIndexerState(addressesArray); return this.Json(result); } diff --git a/src/Features/Blockcore.Features.BlockStore/Api/Controllers/BlockStoreRPCController.cs b/src/Features/Blockcore.Features.BlockStore.Host/Api/Controllers/BlockStoreRPCController.cs similarity index 100% rename from src/Features/Blockcore.Features.BlockStore/Api/Controllers/BlockStoreRPCController.cs rename to src/Features/Blockcore.Features.BlockStore.Host/Api/Controllers/BlockStoreRPCController.cs diff --git a/src/Features/Blockcore.Features.BlockStore/Api/Models/BlockStoreRouteEndPoint.cs b/src/Features/Blockcore.Features.BlockStore.Host/Api/Models/BlockStoreRouteEndPoint.cs similarity index 100% rename from src/Features/Blockcore.Features.BlockStore/Api/Models/BlockStoreRouteEndPoint.cs rename to src/Features/Blockcore.Features.BlockStore.Host/Api/Models/BlockStoreRouteEndPoint.cs diff --git a/src/Features/Blockcore.Features.BlockStore/Api/Models/UtxoModel.cs b/src/Features/Blockcore.Features.BlockStore.Host/Api/Models/UtxoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.BlockStore/Api/Models/UtxoModel.cs rename to src/Features/Blockcore.Features.BlockStore.Host/Api/Models/UtxoModel.cs diff --git a/src/Features/Blockcore.Features.BlockStore/Models/BlockTransactionDetailsModel.cs b/src/Features/Blockcore.Features.BlockStore.Host/BlockTransactionDetailsModel.cs similarity index 100% rename from src/Features/Blockcore.Features.BlockStore/Models/BlockTransactionDetailsModel.cs rename to src/Features/Blockcore.Features.BlockStore.Host/BlockTransactionDetailsModel.cs diff --git a/src/Features/Blockcore.Features.BlockStore.Host/Blockcore.Features.BlockStore.Host.csproj b/src/Features/Blockcore.Features.BlockStore.Host/Blockcore.Features.BlockStore.Host.csproj new file mode 100644 index 000000000..02ef38107 --- /dev/null +++ b/src/Features/Blockcore.Features.BlockStore.Host/Blockcore.Features.BlockStore.Host.csproj @@ -0,0 +1,29 @@ + + + Blockcore Features BlockStore Host + Blockcore.Features.BlockStore.Host + Blockcore.Features.BlockStore.Host + Blockcore.Features.BlockStore.Host + False + Blockcore + true + + + + all + + + + + + + + + + + + 1701;1702;1705;IDE0008; + + + + \ No newline at end of file diff --git a/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressBalancesResult.cs b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressBalancesResult.cs new file mode 100644 index 000000000..2d700777d --- /dev/null +++ b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressBalancesResult.cs @@ -0,0 +1,125 @@ +using System.Collections.Generic; +using Blockcore.Utilities.JsonConverters; +using LiteDB; +using NBitcoin; +using Newtonsoft.Json; + +namespace Blockcore.Features.BlockStore.AddressIndexing +{ + /// + /// A class that contains a list of balances per address as requested. + /// + /// Should the request fail the will be populated. + /// + /// + public sealed class AddressBalancesResult + { + public AddressBalancesResult() + { + this.Balances = new List(); + } + + public List Balances { get; set; } + + [JsonProperty("reason")] + public string Reason { get; private set; } + + public static AddressBalancesResult RequestFailed(string reason) + { + return new AddressBalancesResult() { Reason = reason }; + } + } + + /// + /// A class that contains the balance for a given address. + /// + public sealed class AddressBalanceResult + { + public AddressBalanceResult() { } + + public AddressBalanceResult(string address, Money balance) + { + this.Address = address; + this.Balance = balance; + } + + [JsonProperty("address")] + public string Address { get; set; } + + [JsonProperty("balance")] + [JsonConverter(typeof(MoneyJsonConverter))] + public Money Balance { get; set; } + } + + /// + /// A class that contains a list of balances data per address as requested. + /// Should the request fail the will be populated. + /// + public sealed class VerboseAddressBalancesResult + { + private VerboseAddressBalancesResult() + { + this.BalancesData = new List(); + } + + public VerboseAddressBalancesResult(int consensusTipHeight) : this() + { + this.ConsensusTipHeight = consensusTipHeight; + } + + public List BalancesData { get; set; } + + public int ConsensusTipHeight { get; set; } + + [JsonProperty("reason")] + public string Reason { get; private set; } + + public static VerboseAddressBalancesResult RequestFailed(string reason) + { + return new VerboseAddressBalancesResult() { Reason = reason }; + } + } + + public class AddressIndexerData + { + [BsonId] + public string Address { get; set; } + + public List BalanceChanges { get; set; } + } + + public class AddressBalanceChange + { + /// true if there was a deposit to an address, false if it was a withdrawal. + public bool Deposited { get; set; } + + public long Satoshi { get; set; } + + /// Height of a block in which operation was confirmed. + public int BalanceChangedHeight { get; set; } + + /// + public override string ToString() + { + return $"{nameof(this.Deposited)}:{this.Deposited}, {nameof(this.Satoshi)}:{this.Satoshi}, {nameof(this.BalanceChangedHeight)}:{this.BalanceChangedHeight}"; + } + } + + public static class AddressBalanceChangeExtensions + { + public static long CalculateBalance(this IEnumerable balanceChanges) + { + long balance = 0; + + foreach (AddressBalanceChange change in balanceChanges) + { + if (change.Deposited) + balance += change.Satoshi; + else + balance -= change.Satoshi; + } + + return balance; + } + } +} \ No newline at end of file diff --git a/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexRepository.cs b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexRepository.cs index 9b56ad8b7..c29d0bc14 100644 --- a/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexRepository.cs +++ b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexRepository.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Blockcore.Controllers.Models; using Blockcore.Utilities; using LiteDB; using Microsoft.Extensions.Logging; diff --git a/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexer.cs b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexer.cs index 96ac79df3..22239b5fd 100644 --- a/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexer.cs +++ b/src/Features/Blockcore.Features.BlockStore/AddressIndexing/AddressIndexer.cs @@ -14,7 +14,6 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; using Blockcore.Consensus.TransactionInfo; -using Blockcore.Controllers.Models; using Blockcore.Interfaces; using Blockcore.Networks; using Blockcore.Utilities; diff --git a/src/Features/Blockcore.Features.BlockStore/Blockcore.Features.BlockStore.csproj b/src/Features/Blockcore.Features.BlockStore/Blockcore.Features.BlockStore.csproj index f80e8a0c9..54cdc9f5f 100644 --- a/src/Features/Blockcore.Features.BlockStore/Blockcore.Features.BlockStore.csproj +++ b/src/Features/Blockcore.Features.BlockStore/Blockcore.Features.BlockStore.csproj @@ -15,7 +15,6 @@ - diff --git a/src/Features/Blockcore.Features.ColdStaking/Blockcore.Features.ColdStaking.csproj b/src/Features/Blockcore.Features.ColdStaking/Blockcore.Features.ColdStaking.csproj index 29f99559f..217253388 100644 --- a/src/Features/Blockcore.Features.ColdStaking/Blockcore.Features.ColdStaking.csproj +++ b/src/Features/Blockcore.Features.ColdStaking/Blockcore.Features.ColdStaking.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Features/Blockcore.Features.Consensus.Host/Blockcore.Features.Consensus.Host.csproj b/src/Features/Blockcore.Features.Consensus.Host/Blockcore.Features.Consensus.Host.csproj new file mode 100644 index 000000000..e88a4eb0d --- /dev/null +++ b/src/Features/Blockcore.Features.Consensus.Host/Blockcore.Features.Consensus.Host.csproj @@ -0,0 +1,27 @@ + + + + Blockcore Features Consensus Host + Blockcore.Features.Consensus.Host + Blockcore.Features.Consensus.Host + Blockcore.Features.Consensus.Host + False + Blockcore + true + + + + + + + + + + + + + + 1701;1702;1705;IDE0008; + + + \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Consensus/ConsensusController.cs b/src/Features/Blockcore.Features.Consensus.Host/ConsensusController.cs similarity index 100% rename from src/Features/Blockcore.Features.Consensus/ConsensusController.cs rename to src/Features/Blockcore.Features.Consensus.Host/ConsensusController.cs diff --git a/src/Features/Blockcore.Features.Consensus/ConsensusRPCController.cs b/src/Features/Blockcore.Features.Consensus.Host/ConsensusRPCController.cs similarity index 100% rename from src/Features/Blockcore.Features.Consensus/ConsensusRPCController.cs rename to src/Features/Blockcore.Features.Consensus.Host/ConsensusRPCController.cs diff --git a/src/Features/Blockcore.Features.MemoryPool.Host/Blockcore.Features.MemoryPool.Host.csproj b/src/Features/Blockcore.Features.MemoryPool.Host/Blockcore.Features.MemoryPool.Host.csproj new file mode 100644 index 000000000..e79633f01 --- /dev/null +++ b/src/Features/Blockcore.Features.MemoryPool.Host/Blockcore.Features.MemoryPool.Host.csproj @@ -0,0 +1,34 @@ + + + + Blockcore Features MemoryPool Host + Blockcore.Features.MemoryPool.Host + Blockcore.Features.MemoryPool.Host + Blockcore.Features.MemoryPool.Host + False + + library + + true + + + + + + + + + + + + + + + Library + + + + 1701;1702;1705;IDE0008; + + + \ No newline at end of file diff --git a/src/Features/Blockcore.Features.MemoryPool/MempoolController.cs b/src/Features/Blockcore.Features.MemoryPool.Host/MempoolController.cs similarity index 100% rename from src/Features/Blockcore.Features.MemoryPool/MempoolController.cs rename to src/Features/Blockcore.Features.MemoryPool.Host/MempoolController.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Controllers/MiningController.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Controllers/MiningController.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Controllers/MiningController.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Controllers/MiningController.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Controllers/MiningRPCController.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Controllers/MiningRPCController.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Controllers/MiningRPCController.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Controllers/MiningRPCController.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Controllers/StakingController.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Controllers/StakingController.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Controllers/StakingController.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Controllers/StakingController.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Controllers/StakingRPCController.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Controllers/StakingRPCController.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Controllers/StakingRPCController.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Controllers/StakingRPCController.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Models/GenerateBlocksModel.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Models/GenerateBlocksModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Models/GenerateBlocksModel.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Models/GenerateBlocksModel.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Models/GetNetworkStakingInfoModel.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Models/GetNetworkStakingInfoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Models/GetNetworkStakingInfoModel.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Models/GetNetworkStakingInfoModel.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Models/GetStakingAddressesModel.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Models/GetStakingAddressesModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Models/GetStakingAddressesModel.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Models/GetStakingAddressesModel.cs diff --git a/src/Features/Blockcore.Features.Miner/Api/Models/RequestModels.cs b/src/Features/Blockcore.Features.Miner.Host/Api/Models/RequestModels.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Models/RequestModels.cs rename to src/Features/Blockcore.Features.Miner.Host/Api/Models/RequestModels.cs diff --git a/src/Features/Blockcore.Features.Miner.Host/Blockcore.Features.Miner.Host.csproj b/src/Features/Blockcore.Features.Miner.Host/Blockcore.Features.Miner.Host.csproj new file mode 100644 index 000000000..04be5fbc7 --- /dev/null +++ b/src/Features/Blockcore.Features.Miner.Host/Blockcore.Features.Miner.Host.csproj @@ -0,0 +1,36 @@ + + + Blockcore Features Miner Host + Blockcore.Features.Miner.Host + Blockcore.Features.Miner.Host + Blockcore.Features.Miner.Host + False + true + + + + + + + + + + + + + + + + 1701;1702;1705;IDE0008; + + + + + + all + + + + + + \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Miner/Broadcasters/StakingBroadcaster.cs b/src/Features/Blockcore.Features.Miner.Host/Broadcasters/StakingBroadcaster.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Broadcasters/StakingBroadcaster.cs rename to src/Features/Blockcore.Features.Miner.Host/Broadcasters/StakingBroadcaster.cs diff --git a/src/Features/Blockcore.Features.Miner/Broadcasters/StakingInfoClientEvent.cs b/src/Features/Blockcore.Features.Miner.Host/Broadcasters/StakingInfoClientEvent.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Broadcasters/StakingInfoClientEvent.cs rename to src/Features/Blockcore.Features.Miner.Host/Broadcasters/StakingInfoClientEvent.cs diff --git a/src/Features/Blockcore.Features.Miner.Host/MiningHostFeature.cs b/src/Features/Blockcore.Features.Miner.Host/MiningHostFeature.cs new file mode 100644 index 000000000..bc19b81b5 --- /dev/null +++ b/src/Features/Blockcore.Features.Miner.Host/MiningHostFeature.cs @@ -0,0 +1,81 @@ +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using Blockcore.Broadcasters; +using Blockcore.Builder; +using Blockcore.Builder.Feature; +using Blockcore.Configuration.Logging; +using Blockcore.Features.Miner.Broadcasters; +using Blockcore.Features.Miner.Interfaces; +using Blockcore.Features.Miner.UI; +using Blockcore.Interfaces.UI; +using Blockcore.Mining; +using Microsoft.Extensions.DependencyInjection; + +[assembly: InternalsVisibleTo("Blockcore.Features.Miner.Tests")] + +namespace Blockcore.Features.Miner +{ + public class MiningHostFeature : FullNodeFeature + { + + public MiningHostFeature() + { + } + + /// + public override Task InitializeAsync() + { + return Task.CompletedTask; + } + + /// + public override void Dispose() + { + } + } + + public static class FullNodeBuilderMiningExtension + { + public static IFullNodeBuilder AddMiningHost(this IFullNodeBuilder fullNodeBuilder) + { + LoggingConfiguration.RegisterFeatureNamespace("mining"); + + fullNodeBuilder.ConfigureFeature(features => + { + features + .AddFeature() + .DependOn() + .FeatureServices(services => + { + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + }); + }); + + return fullNodeBuilder; + } + + public static IFullNodeBuilder AddPowPosMiningHost(this IFullNodeBuilder fullNodeBuilder) + { + LoggingConfiguration.RegisterFeatureNamespace("mining"); + + fullNodeBuilder.ConfigureFeature(features => + { + features + .AddFeature() + .DependOn() + .FeatureServices(services => + { + + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + }); + }); + + return fullNodeBuilder; + } + } +} \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Miner/UI/MiningNotification.cs b/src/Features/Blockcore.Features.Miner.Host/UI/MiningNotification.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/UI/MiningNotification.cs rename to src/Features/Blockcore.Features.Miner.Host/UI/MiningNotification.cs diff --git a/src/Features/Blockcore.Features.Miner/UI/NavItem.cs b/src/Features/Blockcore.Features.Miner.Host/UI/NavItem.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/UI/NavItem.cs rename to src/Features/Blockcore.Features.Miner.Host/UI/NavItem.cs diff --git a/src/Features/Blockcore.Features.Miner/UI/Pages/Mine.razor b/src/Features/Blockcore.Features.Miner.Host/UI/Pages/Mine.razor similarity index 99% rename from src/Features/Blockcore.Features.Miner/UI/Pages/Mine.razor rename to src/Features/Blockcore.Features.Miner.Host/UI/Pages/Mine.razor index 19221ddf8..d1e200921 100644 --- a/src/Features/Blockcore.Features.Miner/UI/Pages/Mine.razor +++ b/src/Features/Blockcore.Features.Miner.Host/UI/Pages/Mine.razor @@ -17,7 +17,7 @@ @inject IWalletManager walletManager @inject NavigationManager navigationManager -@inject MiningFeature miningFeature +@inject MiningHostFeature miningFeature @inject IPowMining powMining @inject Network network @inject IInitialBlockDownloadState initialBlockDownloadState diff --git a/src/Features/Blockcore.Features.Miner/UI/Pages/Stake.razor b/src/Features/Blockcore.Features.Miner.Host/UI/Pages/Stake.razor similarity index 100% rename from src/Features/Blockcore.Features.Miner/UI/Pages/Stake.razor rename to src/Features/Blockcore.Features.Miner.Host/UI/Pages/Stake.razor diff --git a/src/Features/Blockcore.Features.Miner/UI/_Imports.razor b/src/Features/Blockcore.Features.Miner.Host/UI/_Imports.razor similarity index 100% rename from src/Features/Blockcore.Features.Miner/UI/_Imports.razor rename to src/Features/Blockcore.Features.Miner.Host/UI/_Imports.razor diff --git a/src/Features/Blockcore.Features.Miner/Blockcore.Features.Miner.csproj b/src/Features/Blockcore.Features.Miner/Blockcore.Features.Miner.csproj index 195bc87e5..e2644643c 100644 --- a/src/Features/Blockcore.Features.Miner/Blockcore.Features.Miner.csproj +++ b/src/Features/Blockcore.Features.Miner/Blockcore.Features.Miner.csproj @@ -14,7 +14,6 @@ - diff --git a/src/Features/Blockcore.Features.Miner/Api/Models/GetStakingInfoModel.cs b/src/Features/Blockcore.Features.Miner/GetStakingInfoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Miner/Api/Models/GetStakingInfoModel.cs rename to src/Features/Blockcore.Features.Miner/GetStakingInfoModel.cs diff --git a/src/Features/Blockcore.Features.Miner/MiningFeature.cs b/src/Features/Blockcore.Features.Miner/MiningFeature.cs index f6645a23b..f8834ba99 100644 --- a/src/Features/Blockcore.Features.Miner/MiningFeature.cs +++ b/src/Features/Blockcore.Features.Miner/MiningFeature.cs @@ -3,7 +3,6 @@ using System.Text; using System.Threading.Tasks; using Blockcore.Base; -using Blockcore.Broadcasters; using Blockcore.Builder; using Blockcore.Builder.Feature; using Blockcore.Configuration; @@ -11,14 +10,10 @@ using Blockcore.Configuration.Settings; using Blockcore.Features.BlockStore; using Blockcore.Features.MemoryPool; -using Blockcore.Features.Miner.Broadcasters; using Blockcore.Features.Miner.Interfaces; using Blockcore.Features.Miner.Staking; -using Blockcore.Features.Miner.UI; -using Blockcore.Features.RPC; using Blockcore.Features.Wallet; using Blockcore.Interfaces; -using Blockcore.Interfaces.UI; using Blockcore.Mining; using Blockcore.Networks; using Microsoft.Extensions.DependencyInjection; @@ -222,7 +217,6 @@ public static IFullNodeBuilder AddMining(this IFullNodeBuilder fullNodeBuilder) features .AddFeature() .DependOn() - .DependOn() .DependOn() .FeatureServices(services => { @@ -250,7 +244,6 @@ public static IFullNodeBuilder AddPowPosMining(this IFullNodeBuilder fullNodeBui features .AddFeature() .DependOn() - .DependOn() // TODO: Need a better way to check dependencies. This is really just dependent on IWalletManager... // Alternatively "DependsOn" should take a list of features that will satisfy the dependency. //.DependOn() @@ -264,9 +257,6 @@ public static IFullNodeBuilder AddPowPosMining(this IFullNodeBuilder fullNodeBui services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); }); }); diff --git a/src/Features/Blockcore.Features.PoA/Blockcore.Features.PoA.csproj b/src/Features/Blockcore.Features.PoA/Blockcore.Features.PoA.csproj index c852d3a4b..b10433df9 100644 --- a/src/Features/Blockcore.Features.PoA/Blockcore.Features.PoA.csproj +++ b/src/Features/Blockcore.Features.PoA/Blockcore.Features.PoA.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Features/Blockcore.Features.RPC/Blockcore.Features.RPC.csproj b/src/Features/Blockcore.Features.RPC/Blockcore.Features.RPC.csproj index 20f125270..acb6d02a6 100644 --- a/src/Features/Blockcore.Features.RPC/Blockcore.Features.RPC.csproj +++ b/src/Features/Blockcore.Features.RPC/Blockcore.Features.RPC.csproj @@ -20,6 +20,7 @@ + diff --git a/src/Features/Blockcore.Features.Wallet/Api/Controllers/AddressBookController.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/AddressBookController.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Controllers/AddressBookController.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/AddressBookController.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Controllers/LegacyExtPubKeyConverter.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/LegacyExtPubKeyConverter.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Controllers/LegacyExtPubKeyConverter.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/LegacyExtPubKeyConverter.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletController.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletController.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletController.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletController.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletModelBuilder.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletModelBuilder.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletModelBuilder.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletModelBuilder.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletRPCController.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletRPCController.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Controllers/WalletRPCController.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Controllers/WalletRPCController.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/AddressBalanceModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressBalanceModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/AddressBalanceModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressBalanceModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/AddressBookModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressBookModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/AddressBookModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressBookModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/AddressGroupingModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressGroupingModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/AddressGroupingModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressGroupingModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/AddressesModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressesModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/AddressesModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/AddressesModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/DistributeUtxoModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/DistributeUtxoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/DistributeUtxoModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/DistributeUtxoModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/GetTransactionModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/GetTransactionModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/GetTransactionModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/GetTransactionModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/GetWalletInfoModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/GetWalletInfoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/GetWalletInfoModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/GetWalletInfoModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/ListSinceBlockModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/ListSinceBlockModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/ListSinceBlockModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/ListSinceBlockModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/ListSinceBlockTransactionModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/ListSinceBlockTransactionModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/ListSinceBlockTransactionModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/ListSinceBlockTransactionModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/MaxSpendableAmountModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/MaxSpendableAmountModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/MaxSpendableAmountModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/MaxSpendableAmountModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/NewAddressModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/NewAddressModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/NewAddressModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/NewAddressModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/RemovedTransactionModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/RemovedTransactionModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/RemovedTransactionModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/RemovedTransactionModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/RequestModels.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/RequestModels.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/RequestModels.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/RequestModels.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/SpendableTransactionsModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/SpendableTransactionsModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/SpendableTransactionsModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/SpendableTransactionsModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/UnspentCoinModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/UnspentCoinModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/UnspentCoinModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/UnspentCoinModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletBalanceModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletBalanceModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletBalanceModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletBalanceModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletBuildTransactionModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletBuildTransactionModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletBuildTransactionModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletBuildTransactionModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletFileModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletFileModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletFileModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletFileModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletGeneralInfoModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletGeneralInfoModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletGeneralInfoModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletGeneralInfoModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletHistoryModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletHistoryModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletHistoryModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletHistoryModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletSendTransactionModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletSendTransactionModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletSendTransactionModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletSendTransactionModel.cs diff --git a/src/Features/Blockcore.Features.Wallet/Api/Models/WalletStatsModel.cs b/src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletStatsModel.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Api/Models/WalletStatsModel.cs rename to src/Features/Blockcore.Features.Wallet.Host/Api/Models/WalletStatsModel.cs diff --git a/src/Features/Blockcore.Features.Wallet.Host/Blockcore.Features.Wallet.Host.csproj b/src/Features/Blockcore.Features.Wallet.Host/Blockcore.Features.Wallet.Host.csproj new file mode 100644 index 000000000..7373b2206 --- /dev/null +++ b/src/Features/Blockcore.Features.Wallet.Host/Blockcore.Features.Wallet.Host.csproj @@ -0,0 +1,27 @@ + + + Blockcore Features Wallet Host + Blockcore.Features.Wallet.Host + Blockcore.Features.Wallet.Host + Blockcore.Features.Wallet.Host + False + true + + + + + + + + + + + + + + + 1701;1702;1705;IDE0008; + + + + \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Wallet/Broadcasters/WalletGeneralInfoClientEvent.cs b/src/Features/Blockcore.Features.Wallet.Host/Broadcasters/WalletGeneralInfoClientEvent.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Broadcasters/WalletGeneralInfoClientEvent.cs rename to src/Features/Blockcore.Features.Wallet.Host/Broadcasters/WalletGeneralInfoClientEvent.cs diff --git a/src/Features/Blockcore.Features.Wallet/Broadcasters/WalletInfoBroadcaster.cs b/src/Features/Blockcore.Features.Wallet.Host/Broadcasters/WalletInfoBroadcaster.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Broadcasters/WalletInfoBroadcaster.cs rename to src/Features/Blockcore.Features.Wallet.Host/Broadcasters/WalletInfoBroadcaster.cs diff --git a/src/Features/Blockcore.Features.Wallet/Helpers/SentTransactionItemModelComparer.cs b/src/Features/Blockcore.Features.Wallet.Host/Helpers/SentTransactionItemModelComparer.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/Helpers/SentTransactionItemModelComparer.cs rename to src/Features/Blockcore.Features.Wallet.Host/Helpers/SentTransactionItemModelComparer.cs diff --git a/src/Features/Blockcore.Features.Wallet/UI/AddressBookNotification.cs b/src/Features/Blockcore.Features.Wallet.Host/UI/AddressBookNotification.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/AddressBookNotification.cs rename to src/Features/Blockcore.Features.Wallet.Host/UI/AddressBookNotification.cs diff --git a/src/Features/Blockcore.Features.Wallet/UI/CopyToClipboard.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/CopyToClipboard.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/CopyToClipboard.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/CopyToClipboard.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Dropdown.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Dropdown.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Dropdown.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Dropdown.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/DropdownListItem.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/DropdownListItem.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/DropdownListItem.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/DropdownListItem.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/NavItem.cs b/src/Features/Blockcore.Features.Wallet.Host/UI/NavItem.cs similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/NavItem.cs rename to src/Features/Blockcore.Features.Wallet.Host/UI/NavItem.cs diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Accounts.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Accounts.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Accounts.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Accounts.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookCreate.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookCreate.razor similarity index 97% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookCreate.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookCreate.razor index d7311eec7..6c4035734 100644 --- a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookCreate.razor +++ b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookCreate.razor @@ -120,7 +120,7 @@ else ModalService.Close(); NavigationManager.NavigateTo("walletsend/" + ModalService.Parameter.ToString().Split(Convert.ToChar("|"))[0] + "/" + ModalService.Parameter.ToString().Split(Convert.ToChar("|"))[1]); - AddressBookNotification.AddressBookChanged(this, true); + Blockcore.Features.Wallet.UI.AddressBookNotification.AddressBookChanged(this, true); // NavigationManager.NavigateTo("walletsend/MyWallet/account 0"); } } \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookDelete.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookDelete.razor similarity index 97% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookDelete.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookDelete.razor index 238fb169c..703eae30e 100644 --- a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalAddressBookDelete.razor +++ b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalAddressBookDelete.razor @@ -115,7 +115,7 @@ else ModalService.Close(); NavigationManager.NavigateTo("walletsend/" + ModalService.Parameter.ToString().Split(Convert.ToChar("|"))[0] + "/" + ModalService.Parameter.ToString().Split(Convert.ToChar("|"))[1]); - AddressBookNotification.AddressBookChanged(this, true); + Blockcore.Features.Wallet.UI.AddressBookNotification.AddressBookChanged(this, true); } private void CloseModalCanselRemove() diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalViewSpendableTransactions.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalViewSpendableTransactions.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalViewSpendableTransactions.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalViewSpendableTransactions.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalViewTransaction.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalViewTransaction.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalViewTransaction.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalViewTransaction.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalWalletCreate.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalWalletCreate.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalWalletCreate.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalWalletCreate.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalWalletRecover.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalWalletRecover.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Modal/ModalWalletRecover.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Modal/ModalWalletRecover.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/UTXOList.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/UTXOList.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/UTXOList.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/UTXOList.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/WalletBroadcastTx.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletBroadcastTx.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/WalletBroadcastTx.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletBroadcastTx.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/WalletReceive.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletReceive.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/WalletReceive.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletReceive.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/WalletSend.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletSend.razor similarity index 99% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/WalletSend.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletSend.razor index 00d119227..8bf4e063c 100644 --- a/src/Features/Blockcore.Features.Wallet/UI/Pages/WalletSend.razor +++ b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletSend.razor @@ -228,7 +228,7 @@ { this.Fee = new Money(this.Network.MinTxFee).ToDecimal(MoneyUnit.BTC); - AddressBookNotification.AddressBookChanged += AddressBookChanged; + Blockcore.Features.Wallet.UI.AddressBookNotification.AddressBookChanged += AddressBookChanged; } private async void AddressBookChanged(object sender, bool e) { diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/WalletView.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletView.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/WalletView.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/WalletView.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/Pages/Wallets.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Wallets.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/Pages/Wallets.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/Pages/Wallets.razor diff --git a/src/Features/Blockcore.Features.Wallet/UI/_Imports.razor b/src/Features/Blockcore.Features.Wallet.Host/UI/_Imports.razor similarity index 100% rename from src/Features/Blockcore.Features.Wallet/UI/_Imports.razor rename to src/Features/Blockcore.Features.Wallet.Host/UI/_Imports.razor diff --git a/src/Features/Blockcore.Features.Wallet.Host/WalletHostFeature.cs b/src/Features/Blockcore.Features.Wallet.Host/WalletHostFeature.cs new file mode 100644 index 000000000..ccfa952fb --- /dev/null +++ b/src/Features/Blockcore.Features.Wallet.Host/WalletHostFeature.cs @@ -0,0 +1,49 @@ +using System.Threading.Tasks; +using Blockcore.Broadcasters; +using Blockcore.Builder; +using Blockcore.Builder.Feature; +using Blockcore.Features.Wallet.Broadcasters; +using Blockcore.Features.Wallet.UI; +using Blockcore.Interfaces.UI; +using Microsoft.Extensions.DependencyInjection; + +namespace Blockcore.Features.Wallet +{ + public class WalletHostFeature : FullNodeFeature + { + public WalletHostFeature() + { + } + + /// + public override Task InitializeAsync() + { + return Task.CompletedTask; + } + + /// + public override void Dispose() + { + } + } + + public static class FullNodeBuilderWalletHostExtension + { + public static IFullNodeBuilder UseWalletHost(this IFullNodeBuilder fullNodeBuilder) + { + fullNodeBuilder.ConfigureFeature(features => + { + features + .AddFeature() + .DependOn() + .FeatureServices(services => + { + services.AddSingleton(); + services.AddSingleton(); + }); + }); + + return fullNodeBuilder; + } + } +} \ No newline at end of file diff --git a/src/Features/Blockcore.Features.Wallet/Blockcore.Features.Wallet.csproj b/src/Features/Blockcore.Features.Wallet/Blockcore.Features.Wallet.csproj index 509c6bc4c..a6dddd4d0 100644 --- a/src/Features/Blockcore.Features.Wallet/Blockcore.Features.Wallet.csproj +++ b/src/Features/Blockcore.Features.Wallet/Blockcore.Features.Wallet.csproj @@ -19,15 +19,14 @@ all + - - diff --git a/src/Features/Blockcore.Features.Wallet/WalletFeature.cs b/src/Features/Blockcore.Features.Wallet/WalletFeature.cs index 2f103337f..ae2ca6204 100644 --- a/src/Features/Blockcore.Features.Wallet/WalletFeature.cs +++ b/src/Features/Blockcore.Features.Wallet/WalletFeature.cs @@ -2,29 +2,20 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using Blockcore.Broadcasters; using Blockcore.Builder; using Blockcore.Builder.Feature; using Blockcore.Configuration.Logging; -using Blockcore.Connection; -using Blockcore.Connection.Broadcasting; using Blockcore.Consensus; using Blockcore.Features.BlockStore; using Blockcore.Features.MemoryPool; -using Blockcore.Features.MemoryPool.Broadcasting; -using Blockcore.Features.RPC; using Blockcore.Features.Wallet.AddressBook; -using Blockcore.Features.Wallet.Broadcasters; using Blockcore.Features.Wallet.Interfaces; using Blockcore.Features.Wallet.Types; -using Blockcore.Features.Wallet.UI; using Blockcore.Interfaces; using Blockcore.Interfaces.UI; using Blockcore.Networks; -using Blockcore.Signals; using Blockcore.Utilities; using Microsoft.Extensions.DependencyInjection; -using NBitcoin; using NBitcoin.Policy; namespace Blockcore.Features.Wallet @@ -159,7 +150,6 @@ public static IFullNodeBuilder UseWallet(this IFullNodeBuilder fullNodeBuilder) .AddFeature() .DependOn() .DependOn() - .DependOn() .FeatureServices(services => { services.AddSingleton(); @@ -170,8 +160,6 @@ public static IFullNodeBuilder UseWallet(this IFullNodeBuilder fullNodeBuilder) services.AddSingleton(new ScriptAddressReader()); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); }); }); diff --git a/src/Features/Blockcore.Features.WalletWatchOnly/Blockcore.Features.WalletWatchOnly.csproj b/src/Features/Blockcore.Features.WalletWatchOnly/Blockcore.Features.WalletWatchOnly.csproj index 205d13795..d50856943 100644 --- a/src/Features/Blockcore.Features.WalletWatchOnly/Blockcore.Features.WalletWatchOnly.csproj +++ b/src/Features/Blockcore.Features.WalletWatchOnly/Blockcore.Features.WalletWatchOnly.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Networks/Blockcore.Networks.X1/Components/ComponentRegistration.cs b/src/Networks/Blockcore.Networks.X1/Components/ComponentRegistration.cs index 3f49c358a..1a967db92 100644 --- a/src/Networks/Blockcore.Networks.X1/Components/ComponentRegistration.cs +++ b/src/Networks/Blockcore.Networks.X1/Components/ComponentRegistration.cs @@ -1,5 +1,4 @@ using Blockcore.Base; -using Blockcore.Broadcasters; using Blockcore.Builder; using Blockcore.Configuration.Logging; using Blockcore.Consensus; @@ -11,12 +10,8 @@ using Blockcore.Features.Consensus.Rules; using Blockcore.Features.MemoryPool; using Blockcore.Features.Miner; -using Blockcore.Features.Miner.Broadcasters; using Blockcore.Features.Miner.Interfaces; -using Blockcore.Features.Miner.UI; -using Blockcore.Features.RPC; using Blockcore.Interfaces; -using Blockcore.Interfaces.UI; using Blockcore.Mining; using Microsoft.Extensions.DependencyInjection; @@ -73,7 +68,6 @@ static IFullNodeBuilder AddX1PowPosMining(this IFullNodeBuilder fullNodeBuilder) features .AddFeature() .DependOn() - .DependOn() // TODO: Need a better way to check dependencies. This is really just dependent on IWalletManager... // Alternatively "DependsOn" should take a list of features that will satisfy the dependency. //.DependOn() @@ -87,8 +81,8 @@ static IFullNodeBuilder AddX1PowPosMining(this IFullNodeBuilder fullNodeBuilder) services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); + //services.AddSingleton(); + //services.AddSingleton(); }); }); diff --git a/src/Networks/Blockcore.Networks.X1/Components/X1MiningFeature.cs b/src/Networks/Blockcore.Networks.X1/Components/X1MiningFeature.cs index 6ac1fff74..2b12d62d9 100644 --- a/src/Networks/Blockcore.Networks.X1/Components/X1MiningFeature.cs +++ b/src/Networks/Blockcore.Networks.X1/Components/X1MiningFeature.cs @@ -3,28 +3,19 @@ using System.Text; using System.Threading.Tasks; using Blockcore.Base; -using Blockcore.Broadcasters; using Blockcore.Builder; using Blockcore.Builder.Feature; using Blockcore.Configuration; -using Blockcore.Configuration.Logging; using Blockcore.Configuration.Settings; using Blockcore.Consensus.ScriptInfo; using Blockcore.Features.BlockStore; -using Blockcore.Features.MemoryPool; using Blockcore.Features.Miner; -using Blockcore.Features.Miner.Broadcasters; using Blockcore.Features.Miner.Interfaces; using Blockcore.Features.Miner.Staking; -using Blockcore.Features.RPC; using Blockcore.Features.Wallet; -using Blockcore.Features.Wallet.UI; -using Blockcore.Interfaces.UI; -using Blockcore.Mining; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NBitcoin; -using NBitcoin.DataEncoders; namespace Blockcore.Networks.X1.Components { diff --git a/src/Tests/Blockcore.Features.BlockStore.Tests/AddressIndexerTests.cs b/src/Tests/Blockcore.Features.BlockStore.Tests/AddressIndexerTests.cs index 9147fc2ad..86b76f00c 100644 --- a/src/Tests/Blockcore.Features.BlockStore.Tests/AddressIndexerTests.cs +++ b/src/Tests/Blockcore.Features.BlockStore.Tests/AddressIndexerTests.cs @@ -10,7 +10,7 @@ using Blockcore.Consensus.Chain; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -using Blockcore.Controllers.Models; +//using Blockcore.Controllers.Models; using Blockcore.Features.BlockStore.AddressIndexing; using Blockcore.Networks; using Blockcore.Networks.Bitcoin; diff --git a/src/Tests/Blockcore.Features.BlockStore.Tests/Blockcore.Features.BlockStore.Tests.csproj b/src/Tests/Blockcore.Features.BlockStore.Tests/Blockcore.Features.BlockStore.Tests.csproj index bbc878368..5ea1d4c07 100644 --- a/src/Tests/Blockcore.Features.BlockStore.Tests/Blockcore.Features.BlockStore.Tests.csproj +++ b/src/Tests/Blockcore.Features.BlockStore.Tests/Blockcore.Features.BlockStore.Tests.csproj @@ -25,6 +25,7 @@ + diff --git a/src/Tests/Blockcore.Features.Miner.Tests/Blockcore.Features.Miner.Tests.csproj b/src/Tests/Blockcore.Features.Miner.Tests/Blockcore.Features.Miner.Tests.csproj index 0bda35f08..07f1431d5 100644 --- a/src/Tests/Blockcore.Features.Miner.Tests/Blockcore.Features.Miner.Tests.csproj +++ b/src/Tests/Blockcore.Features.Miner.Tests/Blockcore.Features.Miner.Tests.csproj @@ -26,6 +26,7 @@ + diff --git a/src/Tests/Blockcore.Features.RPC.Tests/Blockcore.Features.RPC.Tests.csproj b/src/Tests/Blockcore.Features.RPC.Tests/Blockcore.Features.RPC.Tests.csproj index 8e6ecbc89..a15a6281a 100644 --- a/src/Tests/Blockcore.Features.RPC.Tests/Blockcore.Features.RPC.Tests.csproj +++ b/src/Tests/Blockcore.Features.RPC.Tests/Blockcore.Features.RPC.Tests.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Tests/Blockcore.Features.Wallet.Tests/Blockcore.Features.Wallet.Tests.csproj b/src/Tests/Blockcore.Features.Wallet.Tests/Blockcore.Features.Wallet.Tests.csproj index 52df95844..c14301d95 100644 --- a/src/Tests/Blockcore.Features.Wallet.Tests/Blockcore.Features.Wallet.Tests.csproj +++ b/src/Tests/Blockcore.Features.Wallet.Tests/Blockcore.Features.Wallet.Tests.csproj @@ -27,6 +27,7 @@ + diff --git a/src/Tests/Blockcore.IntegrationTests.Common/Blockcore.IntegrationTests.Common.csproj b/src/Tests/Blockcore.IntegrationTests.Common/Blockcore.IntegrationTests.Common.csproj index d1f0448a5..ebf9b07b0 100644 --- a/src/Tests/Blockcore.IntegrationTests.Common/Blockcore.IntegrationTests.Common.csproj +++ b/src/Tests/Blockcore.IntegrationTests.Common/Blockcore.IntegrationTests.Common.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Tests/Blockcore.IntegrationTests/Blockcore.IntegrationTests.csproj b/src/Tests/Blockcore.IntegrationTests/Blockcore.IntegrationTests.csproj index 045c3ebf6..db9361a57 100644 --- a/src/Tests/Blockcore.IntegrationTests/Blockcore.IntegrationTests.csproj +++ b/src/Tests/Blockcore.IntegrationTests/Blockcore.IntegrationTests.csproj @@ -30,6 +30,11 @@ + + + + + diff --git a/src/Tests/Blockcore.Tests/Blockcore.Tests.csproj b/src/Tests/Blockcore.Tests/Blockcore.Tests.csproj index a8c283e55..2134f5bd1 100644 --- a/src/Tests/Blockcore.Tests/Blockcore.Tests.csproj +++ b/src/Tests/Blockcore.Tests/Blockcore.Tests.csproj @@ -26,6 +26,7 @@ +