Introduction to Blockchain Basics
1. What is Blockchain?
Blockchain technology primarily aims to decentralize systems. Traditional institutions like banks, Alipay, and WeChat operate on centralized models. If these centers were to fail (though unlikely), the consequences would be severe. Blockchain addresses this vulnerability by eliminating single points of failure.
2. Simplified Blockchain Architecture
Using Ethereum's private chain as an example, the ecosystem consists of:
- Regular Users: Facilitate peer-to-peer transactions.
- Miners: Validate transactions and earn rewards through mining.
3. Blockchain Workflow Overview
Building an Ethereum Private Chain on Ubuntu Server
1. Setting Up the Ethereum Environment
To avoid errors, first install the Go language environment:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereumVerify the installation with geth -h. Correct setup displays command help.
2. Creating the Genesis Block
Every blockchain needs a starting point—the genesis block. Create a genesis.json file with the following JSON content. Validate the format using JSON validation tools.
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}3. Initializing the Blockchain
Run the following command after creating a data01 directory to store chain data:
geth --datadir data01 init genesis.json4. Launching the Geth Client
Execute this command to start the private chain client:
geth --datadir data01 --networkid 20140628 --rpc --rpccorsdomain "*" --nodiscover --port 16333 --rpcport 8546 consoleKey Parameters:
--port 16333: Default is30303.--rpcport 8546: Default is8545.
Append >> .log to redirect logs to the background. Successful launch enters interactive console mode.
5. Account Creation and Mining
Create an Account:
personal.newAccount("123") // "123" is the passwordCheck Miner Account:
eth.coinbaseStart Mining:
miner.start(1)Stop Mining:
miner.stop()
👉 Explore advanced blockchain tools
FAQ Section
Q1: Why is decentralization important in blockchain?
Decentralization eliminates reliance on a single authority, enhancing security and reducing systemic risks.
Q2: What’s the role of miners in Ethereum?
Miners validate transactions and secure the network while earning rewards through mining.
Q3: How do I troubleshoot JSON format errors in the genesis block?
Use online JSON validators like SoJSON to ensure correct syntax.
Q4: Can I change the default ports for Geth?
Yes, specify custom ports using --port and --rpcport flags.