public abstract Task SignAsync(TransactionChainId transaction);
        public bool VerifyTransaction(string rlp, BigInteger chainId)
        {
            var transaction = new TransactionChainId(rlp.HexToByteArray(), chainId);

            return(transaction.Key.VerifyAllowingOnlyLowS(transaction.RawHash, transaction.Signature));
        }
        public string GetSenderAddress(string rlp, BigInteger chainId)
        {
            var transaction = new TransactionChainId(rlp.HexToByteArray(), chainId);

            return(transaction.Key.GetPublicAddress());
        }
        public byte[] GetPublicKey(string rlp, BigInteger chainId)
        {
            var transaction = new TransactionChainId(rlp.HexToByteArray(), chainId);

            return(transaction.Key.GetPubKey());
        }
        private async Task <string> SignTransactionAsync(IEthExternalSigner externalSigner, TransactionChainId transaction)
        {
            await transaction.SignExternallyAsync(externalSigner).ConfigureAwait(false);

            return(transaction.GetRLPEncoded().ToHex());
        }
 private string SignTransaction(byte[] privateKey, TransactionChainId transaction)
 {
     transaction.Sign(new EthECKey(privateKey, true));
     return(transaction.GetRLPEncoded().ToHex());
 }