public static bool Validate(Transaction transaction) { var outputTotal = transaction.OutputMap.Values.Sum(); if (transaction.Input.Amount != outputTotal) { Logger.Info($"Invalid transaction from {transaction.Input.Address}"); return(false); } if (!EllipticCurve.VerifySignature(publicKey: transaction.Input.Address, data: transaction.OutputMap.SerializeObject(), signature: transaction.Input.Signature)) { Logger.Info($"Invalid signature from {transaction.Input.Address}"); return(false); } return(true); }