예제 #1
0
        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);
        }
예제 #2
0
        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);
        }