更新文章
This commit is contained in:
@@ -51,7 +51,7 @@ const blockchain = defineNoteConfig({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "区块链运维", items: [
|
text: "区块链运维", items: [
|
||||||
{ text: "区块链网络部署指南", link: "/ops/blockchain/deployment/" }
|
{ text: "区块链产品设计和基本部署", link: "/ops/blockchain/practice/basic-deployment/" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title: 2025 一带一路金砖 - 区块链应用开发与运维 样题详解
|
title: 2025 一带一路金砖 - 区块链应用开发与运维 样题详解
|
||||||
createTime: 2025/09/30 19:57:14
|
createTime: 2025/09/30 19:57:14
|
||||||
permalink: /article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/
|
permalink: /article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/
|
||||||
password: simeng
|
# password: simeng
|
||||||
---
|
---
|
||||||
|
|
||||||
## 第一部分:区块链平台运维
|
## 第一部分:区块链平台运维
|
||||||
@@ -106,3 +106,44 @@ tcp LISTEN 0 4096 0.0.0.0:20400 0.0.0.0:*
|
|||||||
4. 使用 swagger 对节点管理服务的 API 接口测试。
|
4. 使用 swagger 对节点管理服务的 API 接口测试。
|
||||||
|
|
||||||
**【参考答案】**
|
**【参考答案】**
|
||||||
|
|
||||||
|
切换到 WeBASE-Front 目录下,将 `dist/conf_template` 配置文件目录复制一份作为配置文件,命名为 `dist/conf`
|
||||||
|
```bash
|
||||||
|
# 当前工作目录为:/home/simeng/blockchain/WeBASE-Front
|
||||||
|
cp -r dist/conf_template dist/conf
|
||||||
|
```
|
||||||
|
|
||||||
|
将节点所在目录 `nodes/{$ip}/sdk` 下的所有文件拷贝到当前的 `dist/conf` 目录下
|
||||||
|
```bash
|
||||||
|
cp ../nodes/127.0.0.1/sdk/* ./dist/conf/
|
||||||
|
```
|
||||||
|
|
||||||
|
编辑配置文件 : `vim dist/conf/application.yml`
|
||||||
|
```bash
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
配置环境变量 JAVA_HOME
|
||||||
|
编辑配置文件:`~/.bashrc`,添加如下内容
|
||||||
|
```bash
|
||||||
|
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
|
||||||
|
export PATH=$JAVA_HOME/bin:$PATH
|
||||||
|
```
|
||||||
|
刷新环境变量
|
||||||
|
```bash
|
||||||
|
source ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
切换到 `dist` 目录下,拉取 Solidity 开发工具 v0.8.11.js(这一步可能会很慢,建议直接把 v0.8.11.js 下载到本地,然后直接放到对应目录,WSL2 的机器是直接挂载在 Windows 上的,Windows 可以直接操作)
|
||||||
|
```bash
|
||||||
|
wget https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.8.11.js -O static/static/js/v0.8.11.js
|
||||||
|
```
|
||||||
|
|
||||||
|
运行 `bash start.sh` 启动 WeBASE-Node-Manager 管理平台服务
|
||||||
|
```bash
|
||||||
|
# 当前工作目录为:/home/simeng/blockchain/WeBASE-Front/dist
|
||||||
|
bash start.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
由于 localhostForwarding 机制(具体参考:[配置WSL2资源](https://notes.simengweb.com/article/operate-wsl2/#%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE)),我们可以直接通过localhost来访问WSL2容器的端口的服务
|
||||||
|
访问:[http://localhost:5002/WeBASE-Front](http://localhost:5002/WeBASE-Front)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ permalink: /article/deploying-wsl2-on-windows-10/
|
|||||||
|
|
||||||
嗨呀~让我们在 Windows10 专业版上部署 WSL2 并启动 ubuntu 20.04 虚拟机吧~
|
嗨呀~让我们在 Windows10 专业版上部署 WSL2 并启动 ubuntu 20.04 虚拟机吧~
|
||||||
|
|
||||||
最好使用 Windows10 专业版,并且在整机上部署呢,在虚拟机上部署的话可能会有小麻烦,所以不太推荐啦~
|
最好使用 Windows10 专业版,并且在物理机上部署呢,在虚拟机上部署的话可能会有小麻烦,所以不太推荐啦~
|
||||||
<!-- more -->
|
<!-- more -->
|
||||||
|
|
||||||
## Windows10 镜像
|
## Windows10 镜像
|
||||||
@@ -97,7 +97,7 @@ simeng@localhost:~$
|
|||||||
这样我们就成功安装好Ubuntu虚拟机啦,可以开始使用了哦~
|
这样我们就成功安装好Ubuntu虚拟机啦,可以开始使用了哦~
|
||||||
### 安装过程中可能会出现的错误
|
### 安装过程中可能会出现的错误
|
||||||
|
|
||||||
在安装过程中,可能会遇到一些小问题呢~不过不用担心,0已经帮大家准备好了解决方案哦~
|
在安装过程中,可能会遇到一些小问题呢~不过不用担心,已经帮大家准备好了解决方案哦~
|
||||||
|
|
||||||
#### 错误码 0x800701bc 缺少更新包
|
#### 错误码 0x800701bc 缺少更新包
|
||||||
如果看到这样的错误信息:
|
如果看到这样的错误信息:
|
||||||
|
|||||||
@@ -4,4 +4,25 @@ createTime: 2025/09/28 07:54:17
|
|||||||
permalink: /ops/blockchain/
|
permalink: /ops/blockchain/
|
||||||
---
|
---
|
||||||
|
|
||||||
## 区块链运维
|
## 区块链简介
|
||||||
|
区块链就像是一本神奇的共享账本哦~它由许许多多的"区块"连接而成,每个区块里都记录着各种交易信息~最特别的是,这本账本不是由某一个人或组织保管的,而是由网络里的所有人一起维护呢~
|
||||||
|
|
||||||
|
想象一下,当有新的交易发生时,网络里的每个人都会收到一份拷贝,大家一起验证这份交易的真实性,然后把它添加到账本里~这样一来,就没有人能够偷偷篡改账本啦~是不是很神奇呢~♪
|
||||||
|
|
||||||
|
区块链还有一个超棒的特点哦~它不需要中间人的帮忙,就能让互不相识的人们安全地进行交易~就像魔法一样,让信任在数字世界里自然生长~
|
||||||
|
|
||||||
|
## 区块链的理论基础
|
||||||
|
|
||||||
|
呜呜~在网上找关于完整区块链原理的资料好难呀,现在就只看到一些比较基础的课程和书籍呢。
|
||||||
|
|
||||||
|
嘿嘿,在B站的话,发现有一个课程超棒哒,就是肖臻老师的[《区块链技术与应用》](https://www.bilibili.com/video/BV1Vt411X7JF/)呢!
|
||||||
|
|
||||||
|
在Youtube上也可以去看看[Binance Academy](https://www.youtube.com/@BinanceAcademy)的视频哟,感觉也很不错哒!
|
||||||
|
|
||||||
|
至于书籍嘛,目前还没找到特别好的,不过没关系,会继续努力找找哒!如果有好的课程的话,可以评论留言分享一下哦~
|
||||||
|
|
||||||
|
## 区块链的运维实践
|
||||||
|
|
||||||
|
嘿嘿~区块链的搭建呀,主要就是通过 [FISCO BCOS](https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/introduction.html) 来实现哒!
|
||||||
|
|
||||||
|
它呢,是一个开源的、基于Java的区块链平台哟~还支持智能合约的部署和执行呢,超厉害的!
|
||||||
|
|||||||
@@ -1,226 +0,0 @@
|
|||||||
---
|
|
||||||
title: 区块链网络部署指南~(≧∇≦)ノ
|
|
||||||
description: 详细介绍区块链网络的搭建和部署过程
|
|
||||||
createTime: 2025/09/28 20:15:00
|
|
||||||
permalink: /ops/blockchain/deployment/
|
|
||||||
---
|
|
||||||
|
|
||||||
# 区块链网络部署指南~(≧∇≦)ノ
|
|
||||||
|
|
||||||
嗨~今天我们要一起学习如何搭建和部署一个区块链网络哦!是不是听起来很厉害呢?其实只要按照步骤一步步来,你也可以成为区块链部署小能手的~(๑˘ᴗ˘๑)
|
|
||||||
|
|
||||||
## 准备工作 🏗️
|
|
||||||
|
|
||||||
在开始部署之前,让我们先准备好所需的环境和工具吧:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 更新系统包
|
|
||||||
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语言客户端,我们需要先安装它:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 下载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. 创建创世区块配置文件
|
|
||||||
|
|
||||||
创世区块是区块链的第一个区块,我们需要创建一个配置文件来定义它的参数:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 创建一个名为genesis.json的文件
|
|
||||||
nano genesis.json
|
|
||||||
```
|
|
||||||
|
|
||||||
将以下内容复制到文件中:
|
|
||||||
|
|
||||||
```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. 初始化区块链
|
|
||||||
|
|
||||||
现在我们可以使用创世区块配置文件来初始化我们的私有链了:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 创建一个目录来存储区块链数据
|
|
||||||
mkdir -p ~/ethereum-private-chain/data
|
|
||||||
|
|
||||||
# 使用genesis.json初始化区块链
|
|
||||||
geth --datadir ~/ethereum-private-chain/data init genesis.json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. 启动区块链节点
|
|
||||||
|
|
||||||
初始化完成后,我们可以启动我们的区块链节点了:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 启动区块链节点
|
|
||||||
# --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控制台中,我们可以开始挖矿来生成新区块:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
// 设置挖矿账户
|
|
||||||
miner.setEtherbase(eth.accounts[0])
|
|
||||||
|
|
||||||
// 开始挖矿
|
|
||||||
miner.start(1)
|
|
||||||
|
|
||||||
// 查看挖矿状态
|
|
||||||
eth.blockNumber
|
|
||||||
|
|
||||||
// 查看账户余额
|
|
||||||
eth.getBalance(eth.accounts[0])
|
|
||||||
|
|
||||||
// 停止挖矿
|
|
||||||
// miner.stop()
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. 添加其他节点(可选)
|
|
||||||
|
|
||||||
如果需要搭建多节点的区块链网络,我们可以将其他节点连接到我们的主节点:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
// 在主节点上获取节点信息
|
|
||||||
admin.nodeInfo.enode
|
|
||||||
|
|
||||||
// 在其他节点的Geth控制台中添加主节点
|
|
||||||
admin.addPeer("enode://主节点的enode信息@主节点IP:30303")
|
|
||||||
|
|
||||||
// 查看已连接的节点
|
|
||||||
admin.peers
|
|
||||||
```
|
|
||||||
|
|
||||||
## 部署智能合约 🚀
|
|
||||||
|
|
||||||
区块链网络搭建完成后,我们可以部署一个简单的智能合约来测试它:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
// 在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 ̄)づ
|
|
||||||
70
docs/notes/ops/blockchain/practice/basic-deployment.md
Normal file
70
docs/notes/ops/blockchain/practice/basic-deployment.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
title: 区块链产品设计和基础部署
|
||||||
|
description: 详细介绍区块链产品设计和基础部署
|
||||||
|
createTime: 2025/09/28 20:15:00
|
||||||
|
permalink: /ops/blockchain/practice/basic-deployment/
|
||||||
|
---
|
||||||
|
|
||||||
|
## 区块链产品方案设计
|
||||||
|
|
||||||
|
### 区块链产品需求分析
|
||||||
|
|
||||||
|
区块链产品分析主要是以下几个步骤:
|
||||||
|
|
||||||
|
1. 明确业务需求
|
||||||
|
|
||||||
|
围绕指定业务分析区块链落地解决的痛点,提出围绕业务的功能概述。
|
||||||
|
|
||||||
|
2. 搜集业务相关信息
|
||||||
|
|
||||||
|
针对设计功能,分析收集数据的方向、类型和具体维度
|
||||||
|
|
||||||
|
3. 分析搜集数据
|
||||||
|
|
||||||
|
借助数据分析工具整合收集数据,并能根据收集数据得出初步结论
|
||||||
|
|
||||||
|
能够保证收集数据的准确性和安全性
|
||||||
|
|
||||||
|
4. 确定应用需求
|
||||||
|
|
||||||
|
根据业务需求和收集数据,细化产品具体功能需求
|
||||||
|
|
||||||
|
5. 落地区块链平台
|
||||||
|
|
||||||
|
形成具体平台的设计需求报告
|
||||||
|
|
||||||
|
形成平台验收的准则
|
||||||
|
|
||||||
|
### 区块链平台设计方案
|
||||||
|
|
||||||
|
区块链平台包括:区块链底层平台、智能合约层、业务层、应用层和用户层
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 业务功能模块设计
|
||||||
|
|
||||||
|
业务功能模块设计包括三层:功能平台、功能模块、详细功能
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 业务流程图
|
||||||
|
|
||||||
|
关于业务流程图的一些常见符号:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
有一些好用的在线绘制流程图的网站:
|
||||||
|
|
||||||
|
1. [Draw.io](https://app.diagrams.net/)
|
||||||
|
|
||||||
|
### ER 图设计
|
||||||
|
|
||||||
|
E-R 图(实体-关系图)是数据库设计中常用的一种工具,E 是实体,拥有一组属性,R 是关系,用于找到实体之间的联系。
|
||||||
|
|
||||||
|
实体与实体之间的关系,可能是一对一(1:1),一对多(1:n),多对多(m:n)
|
||||||
|
|
||||||
|
实体:通常用矩形表示,代表系统中的一个对象或概念,如"学生","课程","老师"
|
||||||
|
|
||||||
|
属性:通常用椭圆形表示,表示实体的特征,如"学生"的"姓名","班级"
|
||||||
|
|
||||||
|
关系:用菱形表示,用于不同实体间的联系,如"课程"和"学生"之间的"选修"关系
|
||||||
@@ -4,12 +4,3 @@ createTime: 2025/09/28 12:39:11
|
|||||||
permalink: /ops/blockchain/theory/basic-principles/
|
permalink: /ops/blockchain/theory/basic-principles/
|
||||||
---
|
---
|
||||||
|
|
||||||
## 学习资料和课程推荐
|
|
||||||
关于完整的区块链原理的资料,我目前在网上很少看到,只有一些比较基础的课程和书籍。
|
|
||||||
|
|
||||||
目前在B站的话我只找到一个课程是比较推荐的,肖臻老师的[《区块链技术与应用》](https://www.bilibili.com/video/BV1Vt411X7JF/)
|
|
||||||
|
|
||||||
在Youtube上的话,可以看一看[Binance Academy](https://www.youtube.com/@BinanceAcademy)的视频,也不错。
|
|
||||||
|
|
||||||
至于书籍的话,我目前还没有看到特别好的,等我再找找吧。
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user