Example #1
0
        public static TransactionChainId GetEthTx(this Transaction t, Signature?s, bool useNewId)
        {
            var nonce = t.Nonce == 0
                ? Array.Empty <byte>()
                : new BigInteger(t.Nonce).ToByteArray().Reverse().ToArray().TrimLeadingZeros();
            var sig = s is null?Array.Empty <byte>() : s.Encode().AsSpan();

            var ethTx = new Nethereum.Signer.TransactionChainId(
                nonce,
                new BigInteger(t.GasPrice).ToByteArray().Reverse().ToArray().TrimLeadingZeros(),
                new BigInteger(t.GasLimit).ToByteArray().Reverse().ToArray().TrimLeadingZeros(),
                t.To.ToBytes(), // this may be empty, same as passing null
                t.Value.ToBytes(false, true),
                t.Invocation.ToArray(),
                new BigInteger(ChainId(useNewId)).ToByteArray().Reverse().ToArray().TrimLeadingZeros(),
                sig.IsEmpty ? Array.Empty <byte>() : sig.Slice(0, 32).ToArray().TrimLeadingZeros(),
                sig.IsEmpty ? Array.Empty <byte>() : sig.Slice(32, 32).ToArray().TrimLeadingZeros(),
                sig.IsEmpty ? Array.Empty <byte>() : sig.Slice(64, sig.Length - 64).ToArray().TrimLeadingZeros()
                );

            return(ethTx);
        }
        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());
        }
        public byte[] GetPublicKey(string rlp, Chain chain)
        {
            var transaction = new TransactionChainId(rlp.HexToByteArray(), new BigInteger((int)chain));

            return(transaction.Key.GetPubKey());
        }
 private string SignTransaction(byte[] privateKey, TransactionChainId transaction)
 {
     transaction.Sign(new EthECKey(privateKey, true));
     return(transaction.GetRLPEncoded().ToHex());
 }
Example #7
0
 public abstract Task SignAsync(TransactionChainId transaction);
        private async Task <string> SignTransactionAsync(IEthECKeyExternalSigner externalSigner, TransactionChainId transaction)
        {
            await transaction.SignExternallyAsync(externalSigner).ConfigureAwait(false);

            return(transaction.GetRLPEncoded().ToHex());
        }