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()); }
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()); }