Ethereum remains one of the most widely used blockchain platforms for decentralized applications and smart contracts. For developers and enthusiasts looking to interact directly with the Ethereum network, Go Ethereum (geth) offers a powerful command-line interface to manage accounts, mine blocks, and transfer Ether. In this guide, we'll walk through how to check account balances, send transactions, and verify their confirmation on the blockchain using geth.
Whether you're setting up a private testnet or learning core blockchain mechanics, understanding Ethereum transactions is essential. We’ll build on previous steps—like account creation and mining—and focus on the practical aspects of sending ETH between accounts.
Checking Account Balances in Wei and Ether
Before sending any funds, it’s crucial to verify your account balance. In Go Ethereum, balances are returned in Wei, the smallest denomination of Ether.
To check the balance of your first account:
> eth.getBalance(eth.accounts[0])
80000000000000000000This value is in Wei. Since 1 Ether equals 10¹⁸ Wei, you can convert it using web3.fromWei():
> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")
80You now see the balance in a human-readable format: 80 ETH.
👉 Learn how to interact with Ethereum using developer tools
The web3.fromWei() function supports multiple units:
"kwei"(10³ Wei)"mwei"(10⁶ Wei)"gwei"(10⁹ Wei)"ether"(10¹⁸ Wei)"tether"(10³⁰ Wei)
Conversely, use web3.toWei() to convert from Ether to Wei when preparing transaction values.
Preparing for an Ethereum Transaction
You currently have two accounts:
> eth.accounts
["0xae9abfc6eca2b25d579be8649d4f232f80d3bd46", "0x46c001f57b55abbe9086d595e15cbf7dc3a9b5b2"]Let’s send 10 ETH from the first account (accounts[0]) to the second (accounts[1]). This requires using eth.sendTransaction():
> eth.sendTransaction({
from: eth.accounts[0],
to: eth.accounts[1],
value: web3.toWei(10, "ether")
})However, if you run this now, you’ll encounter an error:
Error: authentication needed: password or unlockUnlocking Your Account
Ethereum accounts are locked by default for security. Use personal.unlockAccount() to unlock the sender account:
> personal.unlockAccount(eth.accounts[0])
Unlock account 0xae9abfc6eca2b25d579be8649d4f232f80d3bd46
Passphrase: ******
trueOnce unlocked, retry the transaction:
> eth.sendTransaction({
from: eth.accounts[0],
to: eth.accounts[1],
value: web3.toWei(10, "ether")
})
"0x29a48a49a140c0774b6876d343dda6df4af71b00bd515e22f6c9c08d1f4a7a00"The returned string is the transaction hash, confirming that the transaction was broadcast to the network.
Understanding Transaction Lifecycle
After sending a transaction, it doesn’t take effect immediately. It must be included in a block through mining.
Check the transaction status:
> eth.getTransaction("0x29a48a49a140c0774b6876d343dda6df4af71b00bd515e22f6c9c08d1f4a7a00")Initially, you’ll see:
blockNumber: nullThis means the transaction is pending—it hasn’t been mined yet. If you stopped mining earlier (as in previous tutorials), no new blocks are being created, so transactions remain unconfirmed.
Start Mining to Confirm the Transaction
Restart mining to include your transaction in a block:
> miner.start(1)
> eth.mining
trueWait a few seconds, then stop mining:
> miner.stop()
> eth.mining
falseNow recheck the transaction:
> eth.getTransaction("...")You should see:
blockNumber: 17,
blockHash: "0x74dfcccd..."The transaction has been confirmed in block 17.
Verifying Balance Updates
Now check the recipient’s balance:
> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether")
10Perfect—the second account now holds 10 ETH.
But what about the sender?
> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")
85It increased to 85 ETH, even though they sent 10 ETH. Why?
Because during mining, the account received block rewards—additional Ether for successfully mining a block. This explains the increase beyond the original 80 ETH minus 10 ETH sent.
Analyzing Transaction Receipts
For deeper insights into a confirmed transaction, use eth.getTransactionReceipt():
> eth.getTransactionReceipt("0x29a48a49a140c0774b6876d343dda6df4af71b00bd515e22f6c9c08d1f4a7a00")Key fields include:
gasUsed: The actual gas consumed (e.g., 21,000 for simple transfers)from/to: Sender and receiver addressesblockNumber: The block where it was confirmedtransactionHash: Unique identifier of the transaction
This receipt confirms not only that the transfer succeeded but also how much gas was used—helpful for cost analysis and debugging.
👉 Explore Ethereum development tools and APIs
Frequently Asked Questions
How do I convert between Wei and Ether?
Use web3.fromWei(value, "ether") to convert Wei to Ether, and web3.toWei(value, "ether") to convert Ether to Wei. These functions support various units like "gwei" or "finney" for fine-grained control.
Why does my transaction show "authentication needed"?
Your account must be unlocked before sending funds. Use personal.unlockAccount(address) and enter the correct passphrase set during account creation.
Why didn’t my balance change immediately after sending ETH?
Transactions require confirmation via mining. Until a block includes your transaction, balances won’t update. Use eth.getTransaction() to monitor its status.
What is gas, and why does it matter?
Gas is the fee paid for executing transactions on Ethereum. Simple transfers use 21,000 units of gas. You pay gas in Ether, based on the current gasPrice. Miners prioritize higher gas prices.
Can I send ETH without mining?
Yes—in live networks like Mainnet or testnets (e.g., Sepolia), miners or validators process transactions automatically. On private chains, you must run a miner to confirm transactions.
What happens if I lose my passphrase?
You lose access to your account. Unlike traditional systems, there’s no password recovery in Ethereum. Always back up your keystore files and store passphrases securely.
👉 Secure your crypto assets with best practices
Core Keywords for SEO
- Ethereum transaction
- Go Ethereum (geth)
- Send ETH using geth
- Ethereum balance in Wei
- Unlock Ethereum account
- Mine Ethereum blocks
- Transaction hash
- Gas usage in Ethereum
By mastering these fundamental operations—checking balances, unlocking accounts, sending transactions, and verifying confirmations—you gain full control over Ethereum interactions at the protocol level. Whether building dApps or managing private networks, this knowledge forms the foundation of blockchain development.
Continue experimenting with different values, multiple accounts, and custom gas settings to deepen your understanding of Ethereum’s inner workings.