Exemplo n.º 1
0
        public async Task <int> VerifyTransaction(Transaction transaction, ICollection <Transaction> siblings)
        {
            foreach (var instruction in transaction.Instructions)
            {
                if (!await VerifyInstruction(instruction, siblings))
                {
                    return(-1);
                }
            }

            var expectedId = await _transactionKeyResolver.ResolveKey(transaction);

            if (!expectedId.SequenceEqual(transaction.TransactionId))
            {
                return(-2);
            }

            foreach (var txnRule in _txnRules)
            {
                var txnResult = txnRule.Validate(transaction, siblings);
                if (txnResult != 0)
                {
                    return(txnResult);
                }
            }

            return(0);
        }
Exemplo n.º 2
0
        public async Task <Transaction> Build(ICollection <Instruction> instructions)
        {
            var result = new Transaction(instructions);

            result.TransactionId = await _keyResolver.ResolveKey(result);

            return(result);
        }