Package com.klaytn.caver.transaction
Class AbstractTransaction
- java.lang.Object
-
- com.klaytn.caver.transaction.AbstractTransaction
-
- Direct Known Subclasses:
AbstractFeeDelegatedTransaction
,AccountUpdate
,Cancel
,ChainDataAnchoring
,EthereumAccessList
,EthereumDynamicFee
,LegacyTransaction
,SmartContractDeploy
,SmartContractExecution
,ValueTransfer
,ValueTransferMemo
public abstract class AbstractTransaction extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractTransaction.Builder<B extends AbstractTransaction.Builder>
Represents a AbstractTransaction class builder.
-
Constructor Summary
Constructors Constructor Description AbstractTransaction(Klay klaytnCall, java.lang.String type, java.lang.String from, java.lang.String nonce, java.lang.String gas, java.lang.String chainId, java.util.List<SignatureData> signatures)
Create AbstractTransaction instanceAbstractTransaction(AbstractTransaction.Builder builder)
Create AbstractTransaction instance
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
appendSignatures(SignatureData signatureData)
Appends signatures to the transaction.void
appendSignatures(java.util.List<SignatureData> signatureData)
Appends signatures to the transaction.abstract java.lang.String
combineSignedRawTransactions(java.util.List<java.lang.String> rlpEncoded)
Combines signatures to the transaction from RLP-encoded transaction strings and returns a single transaction with all signatures combined.boolean
compareTxField(AbstractTransaction txObj, boolean checkSig)
Check equals txObj passed parameter and Current instance.void
fillTransaction()
Fills empty optional transaction field.(nonce, gasPrice, chainId)java.lang.String
getChainId()
Getter function for chain idabstract java.lang.String
getCommonRLPEncodingForSignature()
Returns the RLP-encoded string to make the signature of this transaction.java.lang.String
getFrom()
Getter function for fromjava.lang.String
getGas()
Getter function for gasint
getKeyType()
Klay
getKlaytnCall()
Getter function for klaytnRPCjava.lang.String
getNonce()
Getter function for noncejava.lang.String
getRawTransaction()
Returns a RawTransaction(RLP-encoded transaction string)abstract java.lang.String
getRLPEncoding()
Returns the RLP-encoded string of this transaction (i.e., rawTransaction).java.lang.String
getRLPEncodingForSignature()
Returns an RLP-encoded transaction string for making signature.java.lang.String
getSenderTxHash()
Returns a senderTxHash of transactionjava.util.List<SignatureData>
getSignatures()
Getter function for signaturesjava.lang.String
getTransactionHash()
Returns a hash string of transactionjava.lang.String
getType()
Getter function for type.java.util.List<java.lang.String>
recoverPublicKeys()
Recovers the public key strings from "signatures" field in transaction object.java.util.List<SignatureData>
refineSignature(java.util.List<SignatureData> signatureDataList)
Refines the array containing signatures - Removes duplicate signatures - Removes the default empty signature("0x01", "0x", "0x") - For an empty signature array, return an array containing the default empty signature("0x01", "0x", "0x")void
setChainId(java.lang.String chainId)
Setter function for chain id.void
setChainId(java.math.BigInteger chainId)
Setter function for chain id.void
setFrom(java.lang.String from)
void
setGas(java.lang.String gas)
Setter function for gasvoid
setGas(java.math.BigInteger gas)
Setter function for gasvoid
setKlaytnCall(Klay klaytnCall)
Setter function for klaytnRPCvoid
setNonce(java.lang.String nonce)
Setter function for nonce.void
setNonce(java.math.BigInteger nonce)
Setter function for nonce.void
setSignatures(java.util.List<SignatureData> signatures)
void
setType(java.lang.String type)
Setter function for type.AbstractTransaction
sign(AbstractKeyring keyring)
Signs using all private keys used in the role defined in the Keyring instance.AbstractTransaction
sign(AbstractKeyring keyring, int index)
Signs to the transaction with a private key in the Keyring instance.AbstractTransaction
sign(AbstractKeyring keyring, int index, java.util.function.Function<AbstractTransaction,java.lang.String> signer)
Signs to the transaction with a private key in the Keyring instance.AbstractTransaction
sign(AbstractKeyring keyring, java.util.function.Function<AbstractTransaction,java.lang.String> signer)
Signs using all private keys used in the role defined in the Keyring instance.AbstractTransaction
sign(java.lang.String keyString)
Signs to the transaction with a single private key.AbstractTransaction
sign(java.lang.String keyString, java.util.function.Function<AbstractTransaction,java.lang.String> signer)
Signs to the transaction with a single private key.java.math.BigInteger
suggestGasPrice()
Suggests a gas price to use in the transaction.void
validateOptionalValues(boolean checkChainID)
Checks that member variables that can be defined by the user are defined.
-
-
-
Constructor Detail
-
AbstractTransaction
public AbstractTransaction(AbstractTransaction.Builder builder)
Create AbstractTransaction instance- Parameters:
builder
- AbstractTransaction.builder
-
AbstractTransaction
public AbstractTransaction(Klay klaytnCall, java.lang.String type, java.lang.String from, java.lang.String nonce, java.lang.String gas, java.lang.String chainId, java.util.List<SignatureData> signatures)
Create AbstractTransaction instance- Parameters:
klaytnCall
- Klay RPC instancetype
- Transaction's type stringfrom
- The address of the sender.nonce
- A value used to uniquely identify a sender’s transaction.gas
- The maximum amount of gas the transaction is allowed to use.chainId
- Network IDsignatures
- A Signature list
-
-
Method Detail
-
getRLPEncoding
public abstract java.lang.String getRLPEncoding()
Returns the RLP-encoded string of this transaction (i.e., rawTransaction).- Returns:
- String
-
getCommonRLPEncodingForSignature
public abstract java.lang.String getCommonRLPEncodingForSignature()
Returns the RLP-encoded string to make the signature of this transaction.- Returns:
- String
-
sign
public AbstractTransaction sign(java.lang.String keyString) throws java.io.IOException
Signs to the transaction with a single private key. It sets Hasher default value. - signer : TransactionHasher.getHashForSignature()- Parameters:
keyString
- The private key string.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
sign
public AbstractTransaction sign(java.lang.String keyString, java.util.function.Function<AbstractTransaction,java.lang.String> signer) throws java.io.IOException
Signs to the transaction with a single private key.- Parameters:
keyString
- The private key stringsigner
- The function to get hash of transaction.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
sign
public AbstractTransaction sign(AbstractKeyring keyring) throws java.io.IOException
Signs using all private keys used in the role defined in the Keyring instance. It sets index and Hasher default value. - signer : TransactionHasher.getHashForSignature()- Parameters:
keyring
- The Keyring instance.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
sign
public AbstractTransaction sign(AbstractKeyring keyring, java.util.function.Function<AbstractTransaction,java.lang.String> signer) throws java.io.IOException
Signs using all private keys used in the role defined in the Keyring instance.- Parameters:
keyring
- The Keyring instance.signer
- The function to get hash of transaction.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
sign
public AbstractTransaction sign(AbstractKeyring keyring, int index) throws java.io.IOException
Signs to the transaction with a private key in the Keyring instance. It sets signer to TransactionHasher.getHashForSignature()- Parameters:
keyring
- The Keyring instance.index
- The index of private key to use in Keyring instance.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
sign
public AbstractTransaction sign(AbstractKeyring keyring, int index, java.util.function.Function<AbstractTransaction,java.lang.String> signer) throws java.io.IOException
Signs to the transaction with a private key in the Keyring instance.- Parameters:
keyring
- The Keyring instance.index
- The index of private key to use in Keyring instance.signer
- The function to get hash of transaction.- Returns:
- AbstractTransaction
- Throws:
java.io.IOException
-
appendSignatures
public void appendSignatures(SignatureData signatureData)
Appends signatures to the transaction.- Parameters:
signatureData
- SignatureData instance contains ECDSA signature data
-
appendSignatures
public void appendSignatures(java.util.List<SignatureData> signatureData)
Appends signatures to the transaction.- Parameters:
signatureData
- List of SignatureData contains ECDSA signature data
-
combineSignedRawTransactions
public abstract java.lang.String combineSignedRawTransactions(java.util.List<java.lang.String> rlpEncoded)
Combines signatures to the transaction from RLP-encoded transaction strings and returns a single transaction with all signatures combined. When combining the signatures into a transaction instance, an error is thrown if the decoded transaction contains different value except signatures.- Parameters:
rlpEncoded
- A List of RLP-encoded transaction strings.- Returns:
- String
-
getRawTransaction
public java.lang.String getRawTransaction()
Returns a RawTransaction(RLP-encoded transaction string)- Returns:
- String
-
getTransactionHash
public java.lang.String getTransactionHash()
Returns a hash string of transaction- Returns:
- String
-
getSenderTxHash
public java.lang.String getSenderTxHash()
Returns a senderTxHash of transaction- Returns:
- String
-
getRLPEncodingForSignature
public java.lang.String getRLPEncodingForSignature()
Returns an RLP-encoded transaction string for making signature.- Returns:
- String
-
fillTransaction
public void fillTransaction() throws java.io.IOException
Fills empty optional transaction field.(nonce, gasPrice, chainId)- Throws:
java.io.IOException
-
suggestGasPrice
public java.math.BigInteger suggestGasPrice() throws java.io.IOException
Suggests a gas price to use in the transaction.Calls `klay_gasPrice` to return unit price of the gas.
- Returns:
- BigInteger
- Throws:
java.io.IOException
-
compareTxField
public boolean compareTxField(AbstractTransaction txObj, boolean checkSig)
Check equals txObj passed parameter and Current instance.- Parameters:
txObj
- The AbstractTransaction Object to comparecheckSig
- Check whether signatures field is equal.- Returns:
- boolean
-
validateOptionalValues
public void validateOptionalValues(boolean checkChainID)
Checks that member variables that can be defined by the user are defined. If there is an undefined variable, an error occurs.
-
refineSignature
public java.util.List<SignatureData> refineSignature(java.util.List<SignatureData> signatureDataList)
Refines the array containing signatures - Removes duplicate signatures - Removes the default empty signature("0x01", "0x", "0x") - For an empty signature array, return an array containing the default empty signature("0x01", "0x", "0x")- Parameters:
signatureDataList
- The list ofSignatureData
- Returns:
- List<String>
-
recoverPublicKeys
public java.util.List<java.lang.String> recoverPublicKeys()
Recovers the public key strings from "signatures" field in transaction object.If you want to derive an address from public key, please use
Utils.publicKeyToAddress(String)
.Example :
List<String> publicKeys = tx.recoverPublicKeys();
- Returns:
- List<String>
-
getKlaytnCall
public Klay getKlaytnCall()
Getter function for klaytnRPC- Returns:
- Klay
-
setKlaytnCall
public void setKlaytnCall(Klay klaytnCall)
Setter function for klaytnRPC- Parameters:
klaytnCall
- Klay RPC Instance.
-
getType
public java.lang.String getType()
Getter function for type.- Returns:
- String
-
getFrom
public java.lang.String getFrom()
Getter function for from- Returns:
- String
-
getNonce
public java.lang.String getNonce()
Getter function for nonce- Returns:
- String
-
getGas
public java.lang.String getGas()
Getter function for gas- Returns:
- String
-
getChainId
public java.lang.String getChainId()
Getter function for chain id- Returns:
- String
-
getSignatures
public java.util.List<SignatureData> getSignatures()
Getter function for signatures- Returns:
- String
-
setType
public void setType(java.lang.String type)
Setter function for type.- Parameters:
type
- The Transaction type.
-
setFrom
public void setFrom(java.lang.String from)
-
setGas
public void setGas(java.lang.String gas)
Setter function for gas- Parameters:
gas
- The maximum amount of gas the transaction is allowed to use.
-
setGas
public void setGas(java.math.BigInteger gas)
Setter function for gas- Parameters:
gas
- The maximum amount of gas the transaction is allowed to use.
-
setNonce
public void setNonce(java.lang.String nonce)
Setter function for nonce.- Parameters:
nonce
- A value used to uniquely identify a sender’s transaction.
-
setNonce
public void setNonce(java.math.BigInteger nonce)
Setter function for nonce.- Parameters:
nonce
- A value used to uniquely identify a sender’s transaction.
-
setChainId
public void setChainId(java.lang.String chainId)
Setter function for chain id.- Parameters:
chainId
- A network id.
-
setChainId
public void setChainId(java.math.BigInteger chainId)
Setter function for chain id.- Parameters:
chainId
- A network id.
-
setSignatures
public void setSignatures(java.util.List<SignatureData> signatures)
-
getKeyType
public int getKeyType()
-
-