/// <summary> /// Generates the hash for a serialized transaction payload. /// </summary> /// <param name="transactionPayload">The transaction payload in hex format.</param> /// <returns>The hash in hex format.</returns> public static string CreateTransactionHash(string transactionPayload) { if (transactionPayload == null) { throw new ArgumentNullException(nameof(transactionPayload)); } return(TransactionExtensions.Hasher(transactionPayload.FromHex()).ToHexUpper()); }
/// <summary> /// Signs the transaction with the given <see cref="KeyPair"/>. /// </summary> /// <param name="keyPair">The <see cref="KeyPair"/>.</param> /// <returns><see cref="SignedTransaction"/>.</returns> /// <exception cref="ArgumentNullException">keyPair</exception> public SignedTransaction SignWith(KeyPair keyPair) { if (keyPair == null) { throw new ArgumentNullException(nameof(keyPair)); } Signer = PublicAccount.CreateFromPublicKey(keyPair.PublicKeyString, NetworkType); Bytes = GenerateBytes(); var sig = TransactionExtensions.SignTransaction(keyPair, Bytes); var signedBuffer = Bytes.Take(4) .Concat(sig) .Concat(keyPair.PublicKey) .Concat( Bytes.Take(4 + 64 + 32, Bytes.Length - (4 + 64 + 32)) ).ToArray(); return(SignedTransaction.Create(signedBuffer, TransactionExtensions.Hasher(signedBuffer), keyPair.PublicKey, TransactionType)); }