/// <summary> /// Adds a new sha256Hash signature to this transaction by revealing preimage. /// </summary> /// <param name="preimage">the sha256 hash of preimage should be equal to signer hash</param> public void Sign(byte[] preimage) { Signature signature = new Signature { InnerValue = preimage ?? throw new ArgumentNullException(nameof(preimage), "preimage cannot be null") }; byte[] hash = Util.Hash(preimage); int length = hash.Length; byte[] signatureHintBytes = hash.Skip(length - 4).Take(4).ToArray(); SignatureHint signatureHint = new SignatureHint { InnerValue = signatureHintBytes }; DecoratedSignature decoratedSignature = new DecoratedSignature { Hint = signatureHint, Signature = signature }; Signatures.Add(decoratedSignature); }
/// <summary> /// Returns transaction hash. /// </summary> /// <returns></returns> public byte[] Hash() { return Util.Hash(SignatureBase()); }
/// <summary> /// Returns transaction hash for the given network. /// </summary> /// <param name="network">The network <see cref="Network" /> the transaction will be sent to.</param> /// <returns></returns> public byte[] Hash(Network network) { return(Util.Hash(SignatureBase(network))); }