Files
SiMengWebSite_Notes/docs/notes/ops/blockchain/blockchain-deployment.md

6.9 KiB
Raw Blame History

title, description, createTime, permalink
title description createTime permalink
区块链网络部署指南~(≧∇≦)ノ 详细介绍区块链网络的搭建和部署过程 2025/09/28 20:15:00 /ops/blockchain/deployment/

区块链网络部署指南~(≧∇≦)ノ

嗨~今天我们要一起学习如何搭建和部署一个区块链网络哦!是不是听起来很厉害呢?其实只要按照步骤一步步来,你也可以成为区块链部署小能手的~(๑˘ᴗ˘๑)

准备工作 🏗️

在开始部署之前,让我们先准备好所需的环境和工具吧:

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装必要的依赖
sudo apt install -y git curl wget docker.io docker-compose

# 启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 添加当前用户到docker组避免每次使用sudo
# 注意:添加后需要重新登录才能生效哦~
sudo usermod -aG docker $USER

选择区块链平台 🌈

市面上有很多不同的区块链平台,我们可以根据项目需求来选择:

  • 以太坊最流行的智能合约平台适合开发DApp
  • Hyperledger Fabric:企业级联盟链解决方案
  • Polygon以太坊的Layer 2扩展解决方案
  • BSC:币安智能链,高性能的智能合约平台

今天我们将以以太坊私有链为例来演示部署过程哦~

部署以太坊私有链 🔗

1. 安装Geth客户端

Geth是以太坊的官方Go语言客户端我们需要先安装它

# 下载Geth安装包
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.10-7a0c19f6.tar.gz

# 解压安装包
tar -xvf geth-linux-amd64-1.13.10-7a0c19f6.tar.gz

# 移动geth可执行文件到系统路径
sudo mv geth-linux-amd64-1.13.10-7a0c19f6/geth /usr/local/bin/

# 验证安装是否成功
geth version

2. 创建创世区块配置文件

创世区块是区块链的第一个区块,我们需要创建一个配置文件来定义它的参数:

# 创建一个名为genesis.json的文件
nano genesis.json

将以下内容复制到文件中:

{
  "config": {
    "chainId": 12345,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "londonBlock": 0,
    "arrowGlacierBlock": 0,
    "grayGlacierBlock": 0,
    "mergeForkIdTransition": 0,
    "terminalTotalDifficulty": 0,
    "terminalTotalDifficultyPassed": true,
    "shanghaiTime": 0,
    "cancunTime": 0
  },
  "difficulty": "0x400",
  "gasLimit": "0x1000000",
  "alloc": {
    "0x71C7656EC7ab88b098defB751B7401B5f6d8976F": {
      "balance": "0x100000000000000000000000000000000"
    }
  }
}

3. 初始化区块链

现在我们可以使用创世区块配置文件来初始化我们的私有链了:

# 创建一个目录来存储区块链数据
mkdir -p ~/ethereum-private-chain/data

# 使用genesis.json初始化区块链
geth --datadir ~/ethereum-private-chain/data init genesis.json

4. 启动区块链节点

初始化完成后,我们可以启动我们的区块链节点了:

# 启动区块链节点
# --networkid 要与创世区块配置中的chainId一致
# --nodiscover 禁用节点发现机制,只允许手动添加节点
# --http 启用HTTP-RPC接口
# --http.addr 设置HTTP-RPC接口监听地址
# --http.api 启用的API模块
geth --datadir ~/ethereum-private-chain/data --networkid 12345 --nodiscover --http --http.addr "0.0.0.0" --http.api "eth,net,web3,personal,miner" console

5. 开始挖矿

在Geth控制台中我们可以开始挖矿来生成新区块

// 设置挖矿账户
miner.setEtherbase(eth.accounts[0])

// 开始挖矿
miner.start(1)

// 查看挖矿状态
eth.blockNumber

// 查看账户余额
eth.getBalance(eth.accounts[0])

// 停止挖矿
// miner.stop()

6. 添加其他节点(可选)

如果需要搭建多节点的区块链网络,我们可以将其他节点连接到我们的主节点:

// 在主节点上获取节点信息
admin.nodeInfo.enode

// 在其他节点的Geth控制台中添加主节点
admin.addPeer("enode://主节点的enode信息@主节点IP:30303")

// 查看已连接的节点
admin.peers

部署智能合约 🚀

区块链网络搭建完成后,我们可以部署一个简单的智能合约来测试它:

// 在Geth控制台中编写一个简单的智能合约
var helloWorldContract = eth.contract([
  {"constant":true,"inputs":[],"name":"greeting","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},
  {"constant":false,"inputs":[{"name":"_greeting","type":"string"}],"name":"setGreeting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},
  {"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}
]);

// 编译合约代码
var helloWorldCompiled = eth.compile.solidity('pragma solidity ^0.8.0; contract HelloWorld { string public greeting; constructor() { greeting = "Hello, Blockchain!"; } function setGreeting(string memory _greeting) public { greeting = _greeting; } }');

// 部署合约
var helloWorld = helloWorldContract.new({
  from: eth.accounts[0],
  data: helloWorldCompiled.HelloWorld.code,
  gas: 1000000
});

// 查看合约地址
helloWorld.address

// 调用合约函数
helloWorld.greeting.call()
helloWorld.setGreeting("Hello, Ethereum!", {from: eth.accounts[0]})
helloWorld.greeting.call()

监控与维护 📊

区块链网络部署完成后,我们需要定期进行监控和维护:

  • 节点状态监控:检查节点是否正常运行,区块高度是否在增长
  • 网络连接监控:监控节点之间的连接状态
  • 资源使用监控监控服务器的CPU、内存、磁盘和网络使用情况
  • 日志分析:定期查看区块链节点的日志,及时发现和解决问题

安全注意事项 🔒

在部署区块链网络时,安全是非常重要的:

  • 不要在生产环境中使用默认的配置参数
  • 定期更新节点软件到最新版本
  • 使用防火墙限制对节点的访问
  • 妥善保管私钥和密码
  • 考虑使用多重签名机制来保护重要操作

小练习 🏋️‍♀️

现在轮到你自己动手实践了!试着按照上面的步骤部署一个以太坊私有链,然后创建一个简单的智能合约并部署到链上吧~相信自己,你一定可以做到的!(๑•̀ㅂ•́)و✧

写在最后~💌

今天我们学习了如何部署一个区块链网络,从准备环境到部署智能合约,每一步都很重要哦~虽然看起来步骤很多,但只要耐心地一步步来,你一定能成功的!如果你在部署过程中遇到了问题,不要灰心,可以查阅相关文档或者向社区寻求帮助。

希望这篇指南能对你有所帮助,让我们一起在区块链的世界里快乐地探索吧!(づ ̄ 3 ̄)づ