So following the answer from this thread: https://solana.stackexchange.com/questions/716/how-many-solana-transaction-confirmations-are-enough-to-declare-a-transaction-as > Solana doesn't work with the "number of confirmations" scheme that is > used in Ethereum with PoW. The commitment levels are based whether a > supermajority of validators has confirmed the transaction (finalized) > or includes votes from gossip (inter-validator communication) and > replay (confirmed). Therefore, the time to confirmed and time to > finalized can vary. and documentation from: https://docs.solana.com/developing/clients/jsonrpc-api#default > If commitment configuration is not provided, the node will default to > "finalized" commitment On the front-end, when sending transactions like so const signature = await provider.signAndSendTransaction(transaction); const confirmation = await connection.confirmTransaction( { blockhash: latestBlockHash.blockhash, lastValidBlockHeight: latestBlockHash.lastValidBlockHeight, signature, } ); I would get the following RpcResponse object const confirmationRpcResponse = { context: {slot: 150669448} value: {err: null} } Is my understanding correct, that if I do not provide any commitment (in the **signAndSendTransaction** method) the RPC response **confirmTransaction** gives me information that transaction was finalized and I do not need any more "checking for confirmations", "checking for timestamps" etc. ? Why does **value** key hold an **err** object and no actual value, like "processed" "finalized" "confirmed" - anything that would be more understandable than just slot and empty err key. How should I understand the response I got? UPDATE 26.07.2022: Just got the following error: > Error: TransactionExpiredBlockheightExceededError: Signature > mySingature--->qYmvyL9qqsJte2TKXLyu9DZUrjQs9cU9PFVsyvjGM9vd3UykkvbLfLhbRjQqhM4BhRFWM7eW > has expired: block height exceeded. When using the above method. So there is definitely something else that has to be done before I can declare a transaction final. Where can I read about it? UPDATE 27.07.2022: So yesterday I was getting something from connection.confirmTransaction( { blockhash: latestBlockHash.blockhash, lastValidBlockHeight: latestBlockHash.lastValidBlockHeight, signature, } Today it doesn't return anything. Just like that. good game well played. Looks like after some time I get: > Error: TransactionExpiredBlockheightExceededError: Signature > 56767Ps4Fq4ZCaowEzPxPoNhSEECsw41MebNkSCEcx2ZnWmQr8aCQjTqnArSK7NeCqBXRUehNuiqQk2LRwhym73 > has expired: block height exceeded. So I guess the network is busy. > Follow-up after few minutes https://solana.fm/tx/56767Ps4Fq4ZCaowEzPxPoNhSEECsw41MebNkSCEcx2ZnWmQr8aCQjTqnArSK7NeCqBXRUehNuiqQk2LRwhym73?cluster=devnet-solana Transaction has been **confirmed, finalized! SuccessFinalizedMaximum Confirmations Achieved!** Can someone explain that to me? `signAndSendTransaction(transaction)` -> doesn't return any promise next `connection.confirmTransaction` -> return an error that blockheight was exceeded. Then after a while transaction gets included. How am I supposed to handle this on the front-end...