Skip to content

Latest commit

 

History

History
164 lines (139 loc) · 10.3 KB

modify-transaction-fields.md

File metadata and controls

164 lines (139 loc) · 10.3 KB

Modify transaction fields

For every transaction submitted to a Hedera network you can modify the transaction ID, amount of time the transaction has to reach consensus, a memo field to attach a note, the account ID of the node the transaction will be submitted to, and the maximum fee the client is willing to pay for a given transaction. The SDKs do not require you to set these fields when submitting a transaction to a Hedera network as the SDK either creates the value at the time of submission or inputs default values. The methods listed below can be used to modify any of these values.

{% hint style="info" %} Note: The total size for a given transaction is limited to 6KiB {% endhint %}

Fields Description
Transaction ID

Set the ID for this transaction. The transaction ID includes the operator's account ( the account paying the transaction fee). If two transactions have the same transaction ID, they won't both have an effect. One will complete normally and the other will fail with a duplicate transaction status.


Normally, you should not use this method. Just before a transaction is executed, a
transaction ID will be generated from the operator on the client.

Valid Duration

Set the duration that this transaction is valid for

Note: Max network valid duration is 180 seconds. SDK default value is 120 seconds

Memo Set a note or description that should be recorded in the transaction record (maximum length of 100 characters). Anyone can view this memo on the network
Node ID Set the account ID of the node that this transaction will be submitted to.
Max transaction fee

Set the max transaction fee for the operator (transaction fee payer account) is willing to pay

Default: 1 hbar

{% tabs %} {% tab title="V2" %}

Method Type Requirement
setTransactionID(<transactionId>) TransactionID Optional
setTransactionValidDuration(<validDuration>) Duration Optional
setTransactionMemo(<memo>) String Optional
setNodeAccountIds(<nodeAccountIds>) List<AccountId> Optional
setMaxTransactionFee(<maxTransactionFee>) Hbar Optional
setGrpcDeadline(<grpcDeadline>) Duration Optional
setRegenerateTransactionId(<regenerateTransactionId>) boolean Optional

{% code title="Java" %}

//Create the transaction and set the transaction properties
Transaction transaction = new AccountCreateTransaction() //Any transaction can be applied here
    .setKey(key)
    .setInitialBalance(Hbar.fromTinybars(1000))
    .setMaxTransactionFee(new Hbar(2)) //Set the max transaction fee to 2 hbar
    .setTransactionMemo("Transaction memo"); //Set the node ID to submit the transaction to
    
//v2.0.0

{% endcode %}

{% code title="JavaScript" %}

//Create the transaction and set the transaction properties
const transaction = await new AccountCreateTransaction() //Any transaction can be applied here
    .setKey(key)
    .setInitialBalance(Hbar.fromTinybars(1000))
    .setMaxTransactionFee(new Hbar(2)) //Set the max transaction fee to 2 hbar
    .setTransactionMemo("Transaction memo"); //Set the node ID to submit the transaction to

{% endcode %}

{% code title="Go" %}

//Create the transaction and set the transaction properties
transaction := hedera.NewAccountCreateTransaction(). //Any transaction can be applied here
    SetKey(newKey.PublicKey()).
    SetInitialBalance(hedera.NewHbar(1000)). 
    SetMaxTransactionFee(hedera.NewHbar(2)). //Set the max transaction fee to 2 hbar
    SetTransactionMemo("Transaction memo") //Set the transaction memo

//v2.0.0 

{% endcode %} {% endtab %}

{% tab title="V1" %}

Method Type Requirement
setTransactionID(<transactionId>) TransactionID Optional
setTransactionValidDuration(<validDuration>) Duration Optional
setTransactionMemo(<memo>) String Optional
setNodeAccountId(<nodeAccountId>) AccountId Optional
setMaxTransactionFee(<maxTransactionFee>) long/Hbar Optional

{% code title="Java" %}

//Create the transaction and set the transaction properties
Transaction transaction = new AccountCreateTransaction() //Any transaction can be applied here
    .setKey(publicKey)
    .setInitialBalance(new Hbar(100))
    .setMaxTransactionFee(new Hbar(2)) //Set the max transaction fee to 2 hbar
    .setTransactionMemo("Transaction memo"); //Set the node ID to submit the transaction to
    
//v1.3.2

{% endcode %}

{% code title="JavaScript" %}

//Create the transaction and set the transaction properties
const transaction = new AccountCreateTransaction() //Any transaction can be applied here
    .setKey(publicKey)
    .setInitialBalance(new Hbar(100))
    .setMaxTransactionFee(new Hbar(2)) //Set the max transaction fee to 2 hbar
    .setTransactionMemo("Transaction memo"); 

//v1.4.4

{% endcode %} {% endtab %} {% endtabs %}

Get transaction properties

{% tabs %} {% tab title="V2" %}

Method Type Requirement
getTransactionID() TransactionID Optional
getTransactionValidDuration() Duration Optional
getTransactionMemo() String Optional
getNodeAccountId() AccountID Optional
getMaxTransactionFee() Hbar Optional
getTransactionHash() byte[ ] Optional
getTransactionHashPerNode() Map<AccountId, byte [ ]> Optional
getSignatures() Map<AccountId, Map<PublicKey, byte [ ]>> Optional

{% code title="Java" %}

//Create the transaction and set the transaction properties
Transaction transaction = new AccountCreateTransaction() //Any transaction can be applied here
    .setInitialBalance(Hbar.fromTinybars(1000))
    .setMaxTransactionFee(new Hbar(100)) //Set the max transaction fee to 100 hbar
    .setNodeAccountId(new AccountId(3)) //Set the node ID to submit the transaction to
    .setTransactionMemo("Transaction memo"); //Add a transaction memo
    
Hbar maxTransactionFee = transaction.getMaxTransactionFee();
//v2.0.0

{% endcode %}

{% code title="JavaScript" %}

//Create the transaction and set the transaction properties
const transaction = await new AccountCreateTransaction() //Any transaction can be applied here
    .setInitialBalance(Hbar.fromTinybars(1000))
    .setMaxTransactionFee(new Hbar(100)) //Set the max transaction fee to 100 hbar
    .setNodeAccountId(new AccountId(3)) //Set the node ID to submit the transaction to
    .setTransactionMemo("Transaction memo"); //Add a transaction memo
    
const maxTransactionFee = transaction.getMaxTransactionFee();

{% endcode %}

{% code title="Go" %}

//Create the transaction and set the transaction properties
transaction := hedera.NewAccountCreateTransaction(). //Any transaction can be applied here
    SetKey(newKey.PublicKey()).
    SetInitialBalance(hedera.NewHbar(1000)). 
    SetMaxTransactionFee(hedera.NewHbar(2)). //Set the max transaction fee to 2 hbar
    SetTransactionMemo("Transaction memo") //Add a transaction memo

maxtransactionFee := transaction.GetMaxTransactionFee()
//v2.0.0         

{% endcode %} {% endtab %} {% endtabs %}