public static bool TryGetRequiredValidations(ILedgerState state, TransactionRequiredValidationFactory factory, Transaction transaction, out List <TransactionRequiredValidation> validations) { var dictionary = new Dictionary <Address, TransactionRequiredValidation>(); foreach (var input in transaction.GetInputs()) { var address = input.Address; if (!dictionary.ContainsKey(address)) { TransactionRequiredValidation validation; if (!factory.TryGetRequiredValidations(state, input.Address, transaction.Declarations, out validation)) { validations = new List <TransactionRequiredValidation>(); return(false); } dictionary.Add(address, validation); } } validations = dictionary.Values.ToList(); return(true); }
private static bool TryGetRequiredSignatures(ILedgerState state, TransactionRequiredValidationFactory factory, Transaction transaction, out List <TransactionRequiredValidation> list) { var validations = new Dictionary <string, TransactionRequiredValidation>(); foreach (var input in transaction.GetInputs()) { if (!validations.ContainsKey(input.Address.Encoded)) { TransactionRequiredValidation required; if (!factory.TryGetRequiredValidations(state, input.Address, transaction.Declarations, out required)) { list = null; return(false); } validations.Add(input.Address.Encoded, required); } } list = validations.Values.ToList(); return(true); }