Ethereum: Internal Transactions & Token Transfers Explained

Share this article

Ethereum: Internal Transactions and Token Transfers Explained

When using various Ethereum blockchain explorers like Etherscan to inspect addresses, you may come across certain addresses which have Transactions, Internal Transactions and Token Transfers. To understand the difference between them, we first have to understand the concept of external and internal addresses on Ethereum.

External and Internal Addresses

There are two types of addresses (accounts) in Ethereum: External and Internal.

When a user creates an address, that’s called an external address because it’s used for accessing the blockchain from the outside — from the “user world”.

When you deploy a smart contract to the Ethereum blockchain, an internal address is generated which is used as a pointer to a running blockchain program (a deployed smart contract). You can target it from the outside for calling functions, or you can target it from the inside so another deployed contract can call functions on an already deployed contract.

It’s important to note that all transactions on the Ethereum blockchain are set in motion from external accounts. Even if one smart contract is supposed to call another and that one in turn calls another, the very first transaction must be done by an external account. There’s currently no way to automatically call a transaction from the outside, though solutions are being worked on.

The key difference between external and internal accounts is the following:

External addresses have private keys and can be accessed by users. Internal addresses cannot be accessed directly as a wallet, and can only be used by calling their functions.

Transaction Types

This brings us back to transaction types. Let’s inspect this address.

Address screenshot

The address has several entries in the Transactions tab — some outgoing, some incoming. These transactions are external transactions — to and from external accounts. So as per the screenshot, we can see this address received 5 ether 7 days ago from this address and 0.2 ether 12 days ago from a Binance wallet. But if we look at the most recent sender, we’ll see some more interesting entries:

Sender

This address has been sending out Ether to individuals, but it did something else, too: it contributed to the EOS crowdsale and withdrew EOS tokens. Most of these transactions send 0 ether; they just call functions. For example, this transaction shows that almost half a year ago our protagonist called the claim function on the EOS Crowdsale contract, and this resulted in the crowdsale sending that person 312 tokens in return.

EOS crowdsale

The details of this transaction don’t matter much. We’re just looking at it to define the Transactions tab properly:

The Transactions tab lists all transactions initiated by external accounts, regardless of who initiated them — the receiver or the sender.

Now let’s look at the second tab of our first address: Internal Transactions.

Note: not all addresses will have this tab. It’s only present when an internal transaction actually happened on an account.

Internal transactions

Let’s look at one of these — for example, this one.

An internal transaction

This was a bid on the ENS (Ethereum Name Service) domain service, which allows entities to register an eth domain like bitfalls.eth so people can send ether straight to it rather than to a long and cryptic address like 0xbE2B28F870336B4eAA0aCc73cE02757fcC428dC9. The transaction describes itself as being sent to the ENS-Registrar contract, which then transferred 0.94 ether to the address which initially formed the auction, and then the contract called the finalization function.

But how is this an internal transaction if it still needed to be initiated by a transaction from an external account? The original initiating TX was external, yes, but this particular transaction is just one in a chain of transactions that happened inside the blockchain, from contract to contract. As the contract automatically sent ether back due to being triggered by another contract (the ENS auction process), it was logged as an internal transaction because the transfer of ether was the result of logic that was built into the smart contract and was not sent by someone from the outside. Therefore:

The Internal Transactions tab lists all transactions initiated by internal accounts as a result of one or more preceding transactions.

Token Transfers

Finally, there’s the Token Transfers tab.

Token Transfers

Somewhat self-explanatory, token transfers are transactions that do only and exclusively that: transfer tokens. The token in question must be an ERC20 token (i.e. have standardized functions) and then it’ll be listed here if the only purpose of the transaction is to transfer tokens. Here we can see an example of a spam-token: 1500 BOBx tokens were sent to the address 8 days ago. Token spam (airdrop) is a common method of promoting an ICO project. Airdrops make recipients wonder where the tokens came from. As they Google for the project, its Google SERP rating grows and backlinks are created. Considering it’s almost free and very trivial to build your own token, the marketing costs for such a stunt are near zero. $10 to be more precise, which becomes obvious if we look at the transaction more closely …

Spam token transaction

Spam token transaction

We can see that it was indeed an airdrop with a lot of addresses targeted as recipients.

You’ll also notice that the tokens were sent “from” 0x00000.... So what does that mean? How can a null-address be the origin? This simply means that this one spam transaction was also the origin of the token. The token was created and distributed to 100 people in one fell swoop, for a mere $10. You can check how many addresses were part of this stunt by looking at Input Data.

Conclusion

You now know how to interpret the transaction types in Ethereum on Etherscan, and can with a reasonable degree of certainty say what was transferred to whom, when, and where from, as well as identify what triggered it. This will come in handy in your future explorations of the Ethereum blockchain.

Frequently Asked Questions (FAQs) about Ethereum Internal Transactions and Token Transfers

What is the difference between a normal transaction and an internal transaction in Ethereum?

In Ethereum, a normal transaction is a transfer of Ether (ETH) initiated by an external account, typically a user’s wallet. It involves the sender signing the transaction with their private key and broadcasting it to the network. On the other hand, an internal transaction, also known as a ‘message’, is a transaction that is triggered by a contract during its execution. It’s not propagated across the network and doesn’t have a transaction hash. It’s only recorded in the state of the contract and can be viewed using a blockchain explorer like Etherscan.

Why can’t I see my internal transactions in my wallet?

Most wallets only track normal transactions that are recorded on the blockchain. Since internal transactions are not propagated across the network and only change the state of the contract, they are not visible in most wallets. However, you can view them using a blockchain explorer like Etherscan by entering your wallet address.

How are token transfers different from Ether transfers?

Ether transfers involve the movement of ETH, the native currency of the Ethereum network, from one account to another. Token transfers, on the other hand, involve the transfer of ERC-20 or other types of tokens that are built on top of the Ethereum network. These tokens can represent anything from a digital asset to a voting right in a decentralized organization.

What is gas and how does it relate to Ethereum transactions?

Gas in Ethereum is a measure of computational effort. Every operation that takes place in Ethereum, including transactions, requires some amount of gas. The sender of a transaction must pay for the gas used in Ether. The gas price, which is set by the sender, determines how much Ether the sender will pay per unit of gas.

Why did my Ethereum transaction fail?

There could be several reasons why an Ethereum transaction fails. The most common reason is that the transaction ran out of gas, which means that the gas limit set by the sender was too low for the transaction to be completed. Other reasons could include a problem with the smart contract or an issue with the network.

Can internal transactions be reversed?

No, internal transactions cannot be reversed. Once a transaction has been included in a block and that block has been added to the blockchain, the transaction is considered final. This is a key feature of blockchain technology, ensuring the immutability and security of the network.

How can I track my Ethereum token transfers?

You can track your Ethereum token transfers using a blockchain explorer like Etherscan. Simply enter your wallet address in the search bar and navigate to the ‘Token Transfers’ tab. Here, you can see all the token transfers associated with your address.

What is an ERC-20 token and how does it relate to Ethereum transactions?

ERC-20 is a standard for tokens on the Ethereum blockchain. It defines a common list of rules that all Ethereum tokens must adhere to, including how the tokens are transferred and how data within each token is accessed. When you transfer an ERC-20 token, an internal transaction is created.

Can I send tokens to any Ethereum address?

Yes, you can send tokens to any Ethereum address. However, it’s important to note that not all wallets support all types of tokens. If you send tokens to a wallet that doesn’t support them, the tokens may be lost.

How can I ensure my Ethereum transactions are secure?

To ensure your Ethereum transactions are secure, always double-check the address you’re sending to. Use a hardware wallet for added security, and be wary of phishing attempts. Always keep your private keys private and never share them with anyone.

Bruno SkvorcBruno Skvorc
View Author

Bruno is a blockchain developer and technical educator at the Web3 Foundation, the foundation that's building the next generation of the free people's internet. He runs two newsletters you should subscribe to if you're interested in Web3.0: Dot Leap covers ecosystem and tech development of Web3, and NFT Review covers the evolution of the non-fungible token (digital collectibles) ecosystem inside this emerging new web. His current passion project is RMRK.app, the most advanced NFT system in the world, which allows NFTs to own other NFTs, NFTs to react to emotion, NFTs to be governed democratically, and NFTs to be multiple things at once.

ethereumethereum-hublearn-ethereum
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week