All Collections
Crypto Basics
What is the difference between a wallet address, contract address, and a private key?
What is the difference between a wallet address, contract address, and a private key?

The important differences between a wallet address and a private key

Matt avatar
Written by Matt
Updated over a week ago

A blockchain contract address, a public wallet address, and a private key are all related components in the world of Web3 and blockchain technology.

TLDR / Simple Summary

Contract Address: A smart contract is a self-executing, programmable agreement with predefined rules that automatically enforces or executes actions when certain conditions are met. The contract address allows users to interact with the smart contract, such as sending or receiving tokens, or invoking specific functions.

Public Wallet Address: A public wallet address is like an email address for your Web3 wallet. It's a unique identifier that you share with others so they can send digital assets to your wallet.

Private Key: A private key is like the password to your Web3 wallet. It's a secret, alphanumeric string of characters that grants you access to your wallet and allows you to authorize transactions. You should never share your private key with anyone, as possessing it would give them full control over your funds.


For every self-custody crypto wallet (including the 1inch Wallet), there are two keys: A private key, and a public key. Anyone can create a new wallet by generating these keys. The private key is created with an algorithm (SHA256), and public keys are generated with an elliptic curve digital signature (ECDS) algorithm. A private key can generate a public key, but not vice versa. Once the public key is created, it can be used to generate the wallet address.

Wallet Address [Public]

The public key is used to create a unique wallet "address" (a string of 42 characters) that which can only be used to receive or view funds. The wallet address is comparable to a traditional bank account number, and due to its characteristics, can be openly shared with anyone.

An EVM compatible wallet address will always begin with '0x' looks something like this:

0xacB69452d804c4aCAE2Ee19e18b8cBCf5E6204Ae

It can also be used in a QR code format as well, making it easy to share with others for receiving payments.

Please note: If you import your wallet address into a new wallet application, it will only be 'read only' - meaning that you will only be able to view balances. To have full access to the assets, you will need to correctly import the private key.

Bonus: Ethereum Name Service (ENS):

ENS names are universal "nicknames" that can be claimed and used as a replacement for your public wallet address! For example, an ENS name looks like "jane.eth", and can be used to receive any EVM chain payment.

ENS names can be claimed here.


Contract Address

A contract address is a unique identifier for a smart contract deployed on a blockchain. Smart contracts are self-executing agreements that follow predefined rules and automatically enforce actions when specific conditions are met. An EVM contract address enables users to interact with the smart contract, such as invoking its functions or transferring tokens etc. Every token has its own unique contract.

While both contract and wallet addresses are unique identifiers on the Ethereum blockchain, they both serve different purposes. A wallet address is used for sending, receiving, and holding both native and non-native digital assets, while a contract address is only associated with its creator, the smart contract itself, and its functionality.

Contract addresses are generated deterministically during smart contract deployment, using the deploying address (owner) and its nonce (the number of transactions sent from the address). Public wallet addresses, on the other hand, are derived from private keys.

You can't inherently tell the difference between a contract address and a wallet address just by looking at them. However, you can use a block explorer like Etherscan to check if an address is a contract address. When you search an address, the block explorer will display information about it, including whether it's a contract address or a wallet address.


What happens if I send assets to a contract address?

***WARNING: If you send tokens to a contract address, they will most likely be lost forever!!

In most cases, users will accidentally copy and paste the token contract address of the token they are wanting to send, instead of the public wallet address. Unfortunately tokens are almost always unrecoverable in these scenarios, unless the token creator has added in a special [rescueFunds] function to recover them at the time of creation. In that case, it is recommended to try and contact the token creator to see if the funds are recoverable.


The Private Key / Recovery Phrase (Don't share with anyone!!)

The private key is a unique string of 64 characters that can be used to access funds and perform other actions (like signatures) within a wallet. It is the only thing proving your ownership of funds within the wallet. It should NEVER be shared or revealed to others.

Example:

545cdcd19de92805371d9644fa7d5a154e51204e41c8cbc8ff3bc9fdd5083efd

The Recovery Phrase:

Whenever you create a new 1inch Wallet, you will be given a 12-word recovery phrase, aka "seed phrase". It is the seed that your private key can be generated from, and is used to restore your wallet in the event that the private key is lost or missing.

The words must be written down correctly and in the specific order shown. If the words are not entered in the correct order, the key will not be generated, and the funds will not be accessible.

***It is strongly recommended to have multiple "offline" backups of your private key or recovery phrase.

Questions, comments, concerns? Please reach out to us in the Live Support Chat!

Did this answer your question?