> ## Documentation Index
> Fetch the complete documentation index at: https://hedera-0c6e0218-docs-evm-account-model.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit a transaction

> Submit signed Hedera transactions with execute(), pick a consensus node, automatically sign with the operator key, and capture the transaction ID and hash.

The `execute()` method submits a transaction to a Hedera network. This method will create the transaction ID from the client operator account ID, sign with the client operator private key, and pick a node from the defined network on the client to submit the transaction to. The transaction is also automatically signed with the client operator account private key. You do not need to manually sign transactions if this key is the required key on any given transaction. Once you submit the transaction, the response will include the following:

* The transaction ID of the transaction
* The node ID of the node the transaction was submitted to
* The transaction hash

**Transaction Signing Requirements**

* Please refer to the specific transaction type and defined key structure of the account, topic, token, file, or smart contract to understand the signing requirements

| Method                                                      | Type             | Description                                                                                                        |
| ----------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------ |
| `execute(<client>)`                                         | Client           | Sign with the client operator and submit to a Hedera network                                                       |
| `execute(<client, timeout>)`                                | Client, Duration | The duration of times the client will try to submit the transaction upon the network being busy                    |
| `executeWithSigner(<signer>)`                               |                  | Sign the transaction with a local wallet. This feature is available in the Hedera JavaScript SDK only. `>=v2.11.0` |
| `<transactionResponse>.transactionId`                       | TransactionId    | Returns the transaction ID of the transaction                                                                      |
| `<transactionResponse>.nodeId`                              | AccountId        | Returns the node ID of the node that processed the transaction                                                     |
| `<transactionResponse>.transactionHash`                     | byte \[ ]        | Returns the hash of the transaction                                                                                |
| `<transactionResponse>.setValidateStatus(<validateStatus>)` | boolean          | Whether `getReceipt()` or `getRecord()` will throw an exception if the receipt status is not `SUCCESS`             |
| `<transactionResponse>.getValidateStatus`                   | boolean          | Return whether `getReceipt()` or `getRecord()` will throw an exception if the receipt status is not `SUCCESS`      |

<Note>
  The example below uses `setKeyWithAlias()` to set the **EVM Address from Public Key** at account creation, the recommended pattern for EVM compatibility. See [Create an Account](/native/accounts/create#evm-address-from-public-key) for details, including the immutability behavior and when to use `setKeyWithoutAlias()` instead.
</Note>

<CodeGroup>
  ```java Java theme={null}
  //Create the transaction
  AccountCreateTransaction transaction = new AccountCreateTransaction()
          // Sets the EVM Address from Public Key (recommended for EVM compatibility)
          .setKeyWithAlias(ecdsaPublicKey)
          // Use setKeyWithoutAlias(ecdsaPublicKey) if you plan to rotate keys soon after creation
          .setInitialBalance(new Hbar(1));

  //Sign with client operator private key and submit the transaction to a Hedera network
  TransactionResponse txResponse = transaction.execute(client);

  //Get the transaction ID
  TransactionId transactionId = txResponse.transactionId;

  //Get the account ID of the node that processed the transaction
  AccountId nodeId = txResponse.nodeId;

  //Get the transaction hash
  byte [] transactionHash = txResponse.transactionHash;

  System.out.println("The transaction ID is " +transactionId);
  System.out.println("The transaction hash is " +transactionHash);
  System.out.println("The node ID is " +nodeId);

  //v2.0.0
  ```

  ```javascript JavaScript theme={null}
  //Create the transaction
  const transaction = new AccountCreateTransaction()
          // Sets the EVM Address from Public Key (recommended for EVM compatibility)
          .setKeyWithAlias(ecdsaPublicKey)
          // Use .setKeyWithoutAlias(ecdsaPublicKey) if you plan to rotate keys soon after creation
          .setInitialBalance(new Hbar(1));

  //Sign with client operator private key and submit the transaction to a Hedera network
  const txResponse = await transaction.execute(client);

  //Get the transaction ID
  const transactionId = txResponse.transactionId;

  //Get the account ID of the node that processed the transaction
  const nodeId = txResponse.nodeId;

  //Get the transaction hash
  const transactionHash = txResponse.transactionHash;

  console.log("The transaction ID is " +transactionId);
  console.log("The transaction hash is " +transactionHash);
  console.log("The node ID is " +nodeId);

  //v2.0.0
  ```

  ```go Go theme={null}
  //Create the transaction
  transaction := hedera.NewAccountCreateTransaction().
          // Sets the EVM Address from Public Key (recommended for EVM compatibility)
          SetECDSAKeyWithAlias(ecdsaPublicKey).
          // Use SetKeyWithoutAlias(ecdsaPublicKey). if you plan to rotate keys soon after creation
          SetInitialBalance(hedera.NewHbar(1))

  //Sign with client operator private key and submit the transaction to a Hedera network
  txResponse, err := transaction.Execute(client)

  if err != nil {
          panic(err)
  }

  //Get the transaction ID
  transactionId := txResponse.TransactionID

  //Get the account ID of the node that processed the transaction
  transactionNodeId := txResponse.NodeID

  //Get the transaction hash
  transactionHash := txResponse.Hash

  fmt.Printf("The transaction id is %v\n", transactionId)
  fmt.Printf("The transaction hash is %v\n", transactionHash)
  fmt.Printf("The node id is %v\n", transactionNodeId)

  //v2.0.0
  ```

  ```rust Rust theme={null}
  // Create the transaction
  let transaction = AccountCreateTransaction::new()
      // Sets the EVM Address from Public Key (recommended for EVM compatibility); takes the ECDSA PrivateKey
      .set_ecdsa_key_with_alias(ecdsa_private_key)
      // Use .set_key_without_alias(key) if you plan to rotate keys soon after creation
      .initial_balance(Hbar::new(1));

  // Sign with client operator private key and submit the transaction to a Hedera network
  let tx_response = transaction.execute(&client).await?;

  // Get the transaction ID
  let transaction_id = tx_response.transaction_id;

  // Get the account ID of the node that processed the transaction
  let node_id = tx_response.node_id;

  // Get the transaction hash
  let transaction_hash = tx_response.transaction_hash;

  println!("The transaction ID is {:?}", transaction_id);
  println!("The transaction hash is {:?}", transaction_hash);
  println!("The node ID is {:?}", node_id);

  // v0.34.0
  ```
</CodeGroup>
