public WabiSabiCoordinator(CoordinatorParameters parameters, IRPCClient rpc, ICoinJoinIdStore coinJoinIdStore) { Parameters = parameters; Warden = new(parameters.UtxoWardenPeriod, parameters.PrisonFilePath, Config); ConfigWatcher = new(parameters.ConfigChangeMonitoringPeriod, Config, () => Logger.LogInfo("WabiSabi configuration has changed.")); CoinJoinIdStore = coinJoinIdStore; CoinJoinTransactionArchiver transactionArchiver = new(Path.Combine(parameters.CoordinatorDataDir, "CoinJoinTransactions")); CoinJoinFeeRateStatStore = CoinJoinFeeRateStatStore.LoadFromFile(parameters.CoinJoinFeeRateStatStoreFilePath, Config, rpc); IoHelpers.EnsureContainingDirectoryExists(Parameters.CoinJoinFeeRateStatStoreFilePath); CoinJoinFeeRateStatStore.NewStat += FeeRateStatStore_NewStat; var coinJoinScriptStore = CoinJoinScriptStore.LoadFromFile(parameters.CoinJoinScriptStoreFilePath); IoHelpers.EnsureContainingDirectoryExists(Parameters.CoinJoinScriptStoreFilePath); RoundParameterFactory roundParameterFactory = new RoundParameterFactory(Config, rpc.Network); Arena = new( parameters.RoundProgressSteppingPeriod, rpc.Network, Config, rpc, Warden.Prison, coinJoinIdStore, roundParameterFactory, transactionArchiver, coinJoinScriptStore); IoHelpers.EnsureContainingDirectoryExists(Parameters.CoinJoinIdStoreFilePath); Arena.CoinJoinBroadcast += Arena_CoinJoinBroadcast; }
public Arena( TimeSpan period, Network network, WabiSabiConfig config, IRPCClient rpc, Prison prison, ICoinJoinIdStore coinJoinIdStore, RoundParameterFactory roundParameterFactory, CoinJoinTransactionArchiver?archiver = null, CoinJoinScriptStore?coinJoinScriptStore = null) : base(period) { Network = network; Config = config; Rpc = rpc; Prison = prison; TransactionArchiver = archiver; CoinJoinIdStore = coinJoinIdStore; CoinJoinScriptStore = coinJoinScriptStore; RoundParameterFactory = roundParameterFactory; }