阿里云服务器搭建以太坊全指南:从入门到实践**

以太坊作为全球第二大加密货币平台,以及智能合约和去中心化应用(DApps)的领先平台,吸引了无数开发者和研究者的目光,拥有一个属于自己的以太坊节点,无论是用于参与网络验证、开发测试DApp,还是进行数据分析,都具有重要的价值,本文将详细介绍如何利用阿里云服务器,一步步搭建一个属于自己的以太坊节点(以目前主流的Geth客户端为例)。
在开始之前,我们需要明确为何选择阿里云服务器搭建以太坊节点:
使用SSH工具(如PuTTY、Xshell或终端)连接到你的阿里云服务器。
ssh root@你的服务器公网IP
sudo apt update sudo apt upgrade -y sudo apt install -y build-essential unzip wget git
Geth是以太坊官方的Go语言实现,是最常用的以太坊客户端之一。
访问Geth的官方GitHub发布页面:https://github.com/ethereum/go-ethereum/releases 选择适合Linux系统的最新稳定版本(通常是以linux-amd64结尾的zip文件)。 下载最新版本(假设为v1.13.6):
wget https://github.com/ethereum/go-ethereum/releases/download/v1.13.6/geth-linux-amd64-v1.13.6-20240220.zip
unzip geth-linux-amd64-v1.13.6-20240220.zip sudo mv geth-linux-amd64-v1.13.6/geth /usr/local/bin/
验证安装:
geth version
如果显示版本信息,则安装成功。

首次运行前,需要初始化一个数据目录,用于存放区块链数据。
mkdir -p ~/ethereum_data geth --datadir ~/ethereum_data init /path/to/genesis.json
genesis.json是创世区块配置文件,如果你加入的是公有链(如主网、测试网),通常不需要自己创建,Geth会自动使用默认的,如果你是搭建私有链,则需要自己编写genesis.json,对于公有网同步,此步可省略,直接同步即可。
启动主网节点(同步速度较慢,需要大量时间和空间):
geth --datadir ~/ethereum_data --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.api "eth,net,web3,personal" --ws --ws.addr "0.0.0.0" --ws.port "8546" --ws.api "eth,net,web3,personal"
参数说明:
--datadir ~/ethereum_data:指定数据目录。--syncmode full:同步模式,full表示完整同步,会下载所有区块和状态数据,最慢但最完整,也可选择snap(快速同步,默认,只下载最近的状态和区块头)或light(轻节点)。--http:启用HTTP-RPC服务。--http.addr "0.0.0.0":HTTP-RPC监听地址,0.0.0表示监听所有网络接口。--http.port "8545":HTTP-RPC监听端口。--http.api "eth,net,web3,personal":开放的HTTP-RPC API。--ws:启用WebSocket-RPC服务。--ws.addr "0.0.0.0":WebSocket-RPC监听地址。--ws.port "8546":WebSocket-RPC监听端口。--ws.api "eth,net,web3,personal":开放的WebSocket-RPC API。启动测试网节点(例如Ropsten测试网,已废弃,可考虑Sepolia或Goerli):
geth --datadir ~/ethereum_data --sepolia --syncmode full --http --http.addr "0.0.0.0" --http.port "8545"
--sepolia表示连接到Sepolia测试网。
为了使节点在后台持续运行,可以使用nohup命令结合&:

nohup geth --datadir ~/ethereum_data --syncmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.api "eth,net,web3,personal" > ~/geth.log 2>&1 &
这样,Geth会在后台运行,日志会输出到~/geth.log文件中。
你也可以使用screen或tmux等工具来管理会话,避免SSH断开导致节点停止。
连接到服务器,执行:
geth attach ~/ethereum_data/geth.ipc
进入Geth控制台后,可以输入以下命令:
eth.syncing
如果返回false,表示同步完成;如果返回一个对象,则表示仍在同步,其中currentBlock和highestBlock可以查看同步进度。
# 然后杀死进程 sudo kill <PID>
如果使用了nohup,也可以直接pkill geth。
在Geth控制台中可以创建和管理账户:
personal.newAccount("你的密码") // 创建新账户
personal.listAccounts // 列出所有账户
personal.unlockAccount(eth.accounts[0], "密码") // 解锁账户
随着区块链数据的增长,可能会遇到磁盘空间不足的问题,阿里云支持在线扩容数据盘:
lsblk或df -h查看分区和文件系统。sudo resize2fs /dev/vdb1 (假设数据盘是/dev/vdb1)