In this article we will look at what Ethereum nodes are and look at one of the most popular ones called Geth.
To communicate with the blockchain, we must use client . A client is a piece of software capable of establishing a p2p communication channel with other clients, signing and broadcasting transactions, mining, deploying and interacting with smart contracts, etc. The client is often called a node .
The formal definition of the functionality that an Ethereum node must follow is defined in the ethereum yellow paper. The yellow paper defines the required functions of nodes in the network, mining algorithm, ECDSA private/public key parameters. It defines all the features that make nodes fully compatible with Ethereum clients.
Based on the yellow paper, anyone can create their own Ethereum node implementation in any language they see fit.
The full list of clients can be seen here.
By far the most popular clients are Geth and Parity. Implementations differ mainly in their choice of programming language - with Geth using Golang and Parity using Rust.
Since Geth is the most popular client implementation available at the moment, we'll focus on it for now.
Node types
When you join the Ethereum network, you have the opportunity to run different types of nodes. Options currently:
- Light knot
- Full node
- Archive node
An archive node is a special case of a full node, so we won't go into detail here. One of the best summaries of node types I've found is on Stack Exchange:
In general, we can divide node software into two types: full nodes and light (weight) nodes. Full nodes verify the block that is broadcast to the network. In this way, they ensure that the transactions contained in the blocks (and the blocks themselves) follow the rules defined in the Ethereum specifications. They maintain the current state of the network (as defined according to the Ethereum specifications).
Transactions and blocks that do not comply with the rules are not used to determine the current state of the Ethereum network. For example, if A tries to send 100 ether to B, but A has 0 ether, and the block includes that transaction, full nodes will understand that this does not comply with Ethereum rules and will reject the block as invalid. In particular, the execution of smart contracts is an example of a transaction. Whenever a smart contract is used in a transaction (such as sending ERC-20 tokens), all full nodes will need to execute all instructions to ensure they reach the correct, agreed upon next state of the blockchain.
There are several ways to achieve the same state. For example, if A had 101 ether and gave one hundred of them to B in one transaction, paying 1 ether for gas, the end result would be the same as if A sent 100 transactions of 1 ether each, paying 0.01 ether per transaction (ignoring who received the commission for the transaction). To find out whether B is now allowed to send 100 Ether, it is enough to know what B's current balance is. Full nodes that store the entire transaction history are called full archiving nodes. They need to exist online to be healthy.
Nodes can also discard old data; if B wants to send 100 Ether to C, it doesn't matter how the Ether was received, only B's account holds 100 Ether. Light nodes, on the other hand, do not verify every block or transaction and may not have a copy of the current state of the blockchain. They rely on complete assemblies to provide them with missing parts (or simply lacking certain functionality). The benefit of lightweight nodes is that they can start up and run much faster, can run on devices with more compute/memory resources, and don't eat up nearly as much memory. On the other hand, there is an element of trust in other nodes (this varies depending on the client, and probabilistic methods/heuristics can be used to reduce risk). Some full clients include features for faster synchronization (for example, Parity warp synchronization).
The most secure cold wallets for storing ETC
There are 2 main ways to store cryptocurrency:
- Hot
- Cold
In the first case, the wallet maintains a constant connection to the Internet, which increases ease of use, but makes it more vulnerable. With cold storage, the wallet is not connected to the Internet - you can store coins and accept transactions as securely as possible. However, to send coins, the wallet will still have to be connected to the network - this can be done by converting it into a “hot” one or connecting it to a computer or smartphone.
There are 2 types of “cold” wallets:
- Paper
- Hardware
A paper wallet is a piece of paper with a private key. To create it, special Paper Wallet generators are used. For example, you can try the CryptoStorage service. In the list of available cryptocurrencies, just select Ethereum Classic, after which the system will generate a private key and public address. You can save a file with this data to your computer (in TXT, CSV or JSON formats) or print it directly to a printer. It is recommended to laminate a printed paper wallet to protect it from mechanical damage, and also store it in a safe place (for example, in a safe).
A paper wallet can be made for free, but it is extremely inconvenient to use: in order to send coins, you have to convert to a “hot” wallet and then re-create a “cold” one. Therefore, most users buy quite expensive (the price can reach 10-15 thousand rubles) hardware wallets.
Running Geth
To spin up a Geth node, the only thing you need to do is go to a terminal window and run geth . When you do this, you should get output similar to this:
➜ ~ geth INFO [06-03|11:03:13] Maximum peer count ETH=25 LES=0 total=25 INFO [06-03|11:03:13] Starting peer-to-peer node instance=Geth/ v1.8.10-stable/darwin-amd64/go1.10.2 INFO [06-03|11:03:13] Allocated cache and file handles database=/Users/mjvr/Library/Ethereum/geth/chaindata cache=768 handles=128 INFO [06-03|11:03:13] Writing default main-net genesis block INFO [06-03|11:03:14] Persisted trie from memory database nodes=12356 size=2.34mB time=48.31016ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [06-03|11:03:14] Initialized chain configuration config=»{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: Engine: ethash}" INFO [06-03|11:03:14] Disk storage enabled for ethash caches dir=/Users/mjvr/Library/Ethereum/geth/ethash count=3 INFO [06-03|11:03:14] Disk storage enabled for ethash DAGs dir=/Users/mjvr/.ethash count=2 INFO [06-03|11:03:14] Initialising Ethereum protocol versions=”[63 62 ]» network=1 INFO [06-03|11:03:14] Loaded most recent local header number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03:14] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03:14] Loaded most recent local fast block number=0 hash=d4e567…cb8fa3 td=17179869184 INFO [06-03|11:03 :14] Regenerated local transaction journal transactions=0 accounts=0 INFO [06-03|11:03:14] Starting P2P networking INFO [06-03|11:03:16] UDP listener up self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c8 7ca7a [email protected] [::]:30303 INFO [06-03|11:03:16] RLPx listener up self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7a [email protected] [::]:30303 INFO [06-0 3|11: 03:16] IPC endpoint opened url=/Users/mjvr/Library/Ethereum/geth.ipc
After this, you should periodically see new lines where Geth says "Import new state" or "Import new block headers" or "Import new arrivals". State, block headers, and transactions are part of the Ethereum tree attempts: they must be loaded in order for your node to sync with the Ethereum blockchain.
This is a process that can take a very long time, so one of the options you have is to run such a lightweight node;
geth --light
It now requires Geth to only fetch the most recent block headers and rely on other full nodes to verify transactions using Merkle confirmations.
Access to the Geth console
Now that you have created a node, you can access it by opening a new tab in your terminal and running the following:
geth attach
This will connect the Geth console—a Javascript framework for communicating with the blockchain—to your running node. This can be done in either full client mode or light mode.
Once you have opened the console, enter:
web3.eth.blockNumber
You should receive the output as a number (eg 5631487) that represents the current block number of the Ethereum network.
What is staking in Ethereum 2.0?
ETH 2.0 staking is the freezing of Ethereum coins on the deposit of a smart contract in order to become a validator and take part in maintaining the ecosystem, receiving a reward for this. The validator, like the miner, checks the transaction and searches for the hash signature of the block, but spends much less energy resources on this.
Blocking coins is needed to ensure that a given node will not act to the detriment of the system, because in this case it itself will suffer. To start staking Ether, a validator must deposit 32 ETH (today’s value is approximately 8,000,000 Russian rubles). The rate fluctuates constantly, but, in any case, it is a large amount.
Create a new account
To use blockchain, you need to have an account. With Geth you can do this by running the following in your terminal:
geth account new
Once you do this, it will ask you to enter a password, which you will need to secure your account. Make sure you use a secure password and keep it safe.
What Geth does when you run geth account new is update a file in the Geth data directory (the directory where Geth stores all the necessary data, including blocks and headers). Seats (per platform):
- macOS: ~/Library/Ethereum
- Linux: ~/.ethereum
- Windows: %APPDATA%\Ethereum
First, install Chocolatey
Official website: https://chocolatey.org/
Chocolatey is a Windows package installer/manager similar to apt-get on Ubuntu. It simplifies the process of updating your client to the latest release.
Open cmd.exe and enter:
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE% \chocolatey\bin
Access to Geth from other clients
When you run Geth, the client automatically starts an RPC server on port 8545. You can access the RPC server and its methods on this port by connecting to localhost:8545 using a library such as web3js or web3j or web3j manually using curl or wget .
To learn about connecting external tools such as those to a running Geth instance (private when running your own blockchain, or public as in the instructions above), see this post.
Best Ethereum Classic Hardware Wallet
A hardware wallet is a separate physical device on which private keys are stored in an isolated environment. You can store cryptocurrency on it and accept transfers. To send transactions, you just need to connect it to a computer or smartphone - but even in this case, the keys will not leave the device.
One of the best models of hardware wallets is the Ledger Nano X. This is a hardware wallet from the French company Ledger, produced since 2022. It replaced the outdated Ledger Nano S model (2016). The wallet can store Ethereum Classic, as well as over 1.8 thousand other cryptocurrencies (BTC, ETH, etc.).
The Ledger Nano X wallet visually looks like a regular flash drive with a rotating protective cap. On its body there is a USB connector for connecting to a computer or smartphone, 2 control buttons and a small display displaying basic information (currency, transfer address, etc.). When connecting your wallet to other devices, use the Ledger Live application (suitable for Windows, MacOS, Linux, Android and iOS). With it, you can safely view your balance, send cryptocurrency to other users, etc.
Profitability calculation
Profit will depend on how dynamically the new network develops, and, of course, on the amount of funds invested.
The Ether staking calculator is here. Testnet profitability figures cannot provide an accurate representation of a validator's actual future earnings. Everything will become clear when both branches of the blockchain merge.
How to participate in ETH 2.0 staking?
A wealthy investor or an experienced miner who has accumulated enough money can independently launch a validator node and start staking ETH. But keep in mind that if you change your mind about working, the blocked coins cannot be returned. They will become available when the developers activate phase 1.5 , which will most likely happen next year (or maybe later).
To prevent validators from rushing to withdraw money en masse and thereby collapse the ETH rate, the system has a dynamic locking period (256 epochs). Those who froze their money earlier will be able to withdraw it first, while the rest will wait their turn. Considering the fact that the first validators began staking ETH last year, the process of withdrawing money deposited in October 2022 may take several months from the start of phase 1.5. Therefore, it is better not to invest all capital in this project.
You can turn to services to start staking Ether through a trusted node. There are also certain risks here. If you invest money in a scam or your validator is fined or even has his deposit taken away for attempting malicious actions, then you will suffer along with him. We will tell you how to safely invest money in ETH collective staking a little later. Well, those who still decide to act on their own will need instructions for setting up the equipment.
How to withdraw Ethereum from EXMO exchange
Many of us come across cryptocurrency exchanges for various reasons: trading, currency exchange, arbitrage. Therefore, you have to withdraw digital coins to cryptocurrency wallets. Let's look at an example on the popular EXMO exchange:
- First you need to go through a simple registration. The procedure is usual - enter your email, come up with a password.
- Similar to the example with Polonix, we top up the exchange account and exchange Ethereum for Bitcoin or fiat currencies. EXMO is one of the few exchanges that supports fiat.
- Go to the “Wallet” section and opposite Ethereum click “Top up”.
- Enter the Ethereum wallet address, indicate the number of coins and confirm the transaction.
Now it remains to check the Ethereum wallet account. Funds are usually credited within a few minutes.
Attention! There is a lot of information on the Internet about the suspension of the withdrawal of Ethereum from the EXMO exchange. Before buying Ethereum, contact the resource’s technical support for detailed information.
What is this transition and why is it needed?
Eth2 is a group of updates aimed at scaling the Ethereum network. When creating them, the developers pursued several goals:
- Increased scaling. The cryptocurrency network should allow thousands of operations to be performed within a second. This feature will simplify and reduce the cost of using the application. It is based on 64 new nodes that take on the load.
- Increased security. Ethereum must be protected from scammers. The number of the latter increases with the popularity of the system. Switching to PoS allows you to avoid many types of attacks.
- Environmental friendliness. Old mining methods required a lot of energy and the use of powerful PCs, ASIC miners or mining rigs. After the transition this will not be necessary. For mining, staking will be used, for the implementation of which you do not need to invest large sums in the purchase of expensive equipment.