Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
        /// <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));
        }