Skip to main content
Sign a transaction using the private key(s) required to sign the transaction. You cannot sign the transaction with a public key. If your client operator account private key is the key used in the key field(s) of a transaction, you do not need to manually sign the transaction. The execute(client) method signs the transaction with the client operator account private key before it is submitted to a Hedera network.
MethodTypeDescription
sign(<privateKey>)PrivateKeySign the transaction with an ED25519 private key
signWith(<publicKey, transactionSigner>)PublicKey, TransactionSignerSign the transaction with a callback that may block waiting for user confirmation.
signWithOperator(<client>)ClientSign the transaction with the client
signWithSigner(<signer>)Sign the transaction with a local wallet. Local wallet available in Hedera JavaScript SDK only. >=v2.11.0
//Create any transaction
AccountUpdateTransaction transaction = new AccountUpdateTransaction()
     .setAccountId(accountId)
     .setKey(key);

//Freeze the transaction for signing
AccountUpdateTransaction freezeTransaction = transaction.freezeWith(client);

//Sign the transaction with a private key
AccountCreateTransaction signedTransaction = freezeTransaction
    .sign(PrivateKey.fromString("302e020100300506032b65700422042012a4a4add3d885bd61d7ce5cff88c5ef2d510651add00a7f64cb90de3359bc5c"));

//v2.0.0    
//Create any transaction
const transaction = await new AccountUpdateTransaction()
     .setAccountId(accountId)
     .setKey(key)
     .freezeWith(client);

//Sign the transaction with a private key
const signedTransaction = transaction
    .sign(PrivateKey.fromString("302e020100300506032b65700422042012a4a4add3d885bd61d7ce5cff88c5ef2d510651add00a7f64cb90de3359bc5c"));
//Create any transaction
transaction := hedera.NewAccountUpdateTransaction().
		SetAccountID(newAccountId).
		SetKey(updateKey.PublicKey())
	
//Freeze the transaction for signing
freezeTransaction, err := transaction.FreezeWith(client)
if err != nil {
    panic(err)
}

signedTransaction := freezeTransaction.Sign(hedera.PrivateKeyFromString("302e020100300506032b65700422042012a4a4add3d885bd61d7ce5cff88c5ef2d510651add00a7f64cb90de3359bc5c"))
//v2.0.0
// Create any transaction
let transaction = AccountUpdateTransaction::new()
    .account_id(account_id)
    .key(key);

// Freeze the transaction for signing
let frozen_transaction = transaction.freeze_with(&client)?;

// Sign the transaction with a private key
let signed_transaction = frozen_transaction.sign(
    PrivateKey::from_str("302e020100300506032b65700422042012a4a4add3d885bd61d7ce5cff88c5ef2d510651add00a7f64cb90de3359bc5c")
);

// v0.34.0