/// <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);
        }
Example #2
0
 /// <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)));
 }