using System.Text.Json.Nodes; namespace StellaOps.Findings.Ledger.Hashing; public static class LedgerHashing { public static LedgerHashResult ComputeHashes(JsonObject canonicalEnvelope, long sequenceNumber) { var canonicalJson = LedgerCanonicalJsonSerializer.Serialize(canonicalEnvelope); var eventHash = HashUtilities.ComputeSha256Hex(canonicalJson); var merkleLeafInput = $"{eventHash}-{sequenceNumber}"; var merkleLeafHash = HashUtilities.ComputeSha256Hex(merkleLeafInput); return new LedgerHashResult(eventHash, merkleLeafHash, canonicalJson); } } public sealed record LedgerHashResult( string EventHash, string MerkleLeafHash, string CanonicalJson);