/// <summary> /// Lock the coins before queueing them. /// </summary> public IEnumerable <SmartCoin> QueueCoinsToMix(string password, params SmartCoin[] coins) { using (MixLock.Lock()) { var successful = new List <SmartCoin>(); foreach (SmartCoin coin in coins) { if (coin.SpenderTransactionId != null) { continue; } var secret = KeyManager.GetSecrets(password, coin.ScriptPubKey).SingleOrDefault(); if (secret == null) { continue; } if (CoinsWaitingForMix.Select(x => x.SmartCoin).Contains(coin)) { continue; } CoinsWaitingForMix.Add(new MixCoin(coin, secret)); successful.Add(coin); } return(successful); } }