我对技术探索与实践的看法:从后端到区块链的入门之旅
大家好,我是掘金上的一名全栈工程师,985计算机专业毕业,这几年一直在做前后端开发,也带过不少零基础的同学入门编程。最近有不少朋友私信问我:“想学新技术,但不知道从哪开始?”、“后端和区块链到底有什么关系?”、“能不能写一篇真正适合小白的教程?”
于是,我决定写下这篇《我对技术探索与实践的看法》。这篇文章不讲高深理论,而是用最佳实践的方式,带你从零开始,亲手跑通一个结合后端与区块链的小项目。希望你能从中感受到:技术不是遥不可及的魔法,而是一步步搭建出来的积木。
一、技术是什么?我们为什么要学它?
简单说:
- 后端:就是网站或 App 背后的“大脑”,处理数据、用户登录、支付逻辑等。比如你点外卖,下单、扣钱、通知骑手——这些都在后端完成。
- 区块链:是一种特殊的数据库,数据一旦写入就无法篡改,且由多个节点共同维护。比特币、以太坊就是基于区块链的。
我当初学的时候,以为区块链只能用来炒币。后来才发现,它在存证、溯源、数字身份等领域大有可为。而要让区块链真正“用起来”,往往需要后端服务来桥接用户和链。
所以,后端 + 区块链 = 让普通人也能安全、便捷地使用去中心化技术。
二、环境准备:5分钟搭好开发环境
我们用最轻量的工具组合,避免新手被复杂配置劝退。
所需工具清单
| 工具 | 用途 | 安装方式 |
|---|---|---|
| Node.js (v18+) | 运行 JavaScript 后端代码 | 官网下载 |
| npm / yarn | 包管理器 | 随 Node.js 自带 |
| Ganache | 本地区块链测试网络 | npm install -g ganache |
| Hardhat | 以太坊开发框架 | npm install -g hardhat |
搭建步骤(以 macOS / Linux / Windows WSL 为例)
安装 Node.js(确认版本 ≥18):
node -v # 应输出 v18.x 或更高全局安装 Ganache(模拟区块链):
npm install -g ganache创建项目目录并初始化:
mkdir my-blockchain-backend cd my-blockchain-backend npm init -y安装后端依赖:
npm install express web3
💡 避坑提示:不要一上来就用 MetaMask + 主网!新手请务必在本地测试网(如 Ganache)上练习,避免真金白银打水漂。
三、核心概念:用大白话讲清楚
1. 后端做了什么?
后端接收前端请求(比如“我要存一条记录”),处理逻辑,再把结果存到数据库或区块链。
2. 区块链上的“交易”是什么?
不是指买卖,而是任何写入操作。比如:
- 转账 1 ETH
- 调用智能合约的某个函数
- 存一条哈希值
每笔交易都要:
- 用私钥签名(证明你是本人)
- 支付 Gas 费(计算资源费用)
- 被矿工打包进区块
3. Web3.js 是什么?
一个 JavaScript 库,让你的后端程序能和区块链“对话”。比如查询余额、发送交易。
我当初学的时候,卡在“为什么要私钥”这个问题上。后来明白:区块链没有账号密码,只有私钥。谁掌握私钥,谁就拥有账户。
四、实战项目:构建一个“防篡改日志记录器”
我们要做一个简单的后端服务:用户通过 HTTP 请求提交一条日志,后端将其哈希值写入本地区块链。后续可验证该日志是否被篡改。
步骤 1:启动本地区块链(Ganache)
在终端运行:
ganache
你会看到类似输出:
Accounts:
(0) 0x7099... (私钥: 0xabc123...)
...
RPC server ready at http://127.0.0.1:8545
记下第一个账户地址和私钥,后面要用。
步骤 2:编写后端服务(server.js)
// server.js
const express = require('express');
const Web3 = require('web3');
const app = express();
app.use(express.json());
// 连接到本地 Ganache
const web3 = new Web3('http://127.0.0.1:8545');
// 使用 Ganache 提供的第一个账户
const account = '0x7099...'; // 替换成你自己的地址
const privateKey = '0xabc123...'; // 替换成你的私钥
// 简单的日志存储(实际项目应存数据库)
let logs = [];
// 接收日志并上链
app.post('/log', async (req, res) => {
const { message } = req.body;
if (!message) {
return res.status(400).json({ error: '缺少 message 字段' });
}
// 1. 计算消息的哈希值(SHA3)
const hash = web3.utils.sha3(message);
// 2. 构造一笔交易:向自己转账 0 ETH(只是为了触发链上记录)
const tx = {
from: account,
to: account,
value: '0',
data: web3.utils.utf8ToHex(message), // 把原始消息编码进交易数据
gas: 21000
};
// 3. 签名交易
const signedTx = await web3.eth.accounts.signTransaction(tx, privateKey);
// 4. 发送到区块链
const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
// 5. 本地也存一份(方便查询)
logs.push({ message, hash, txHash: receipt.transactionHash });
res.json({
success: true,
hash,
txHash: receipt.transactionHash
});
});
// 查询所有日志
app.get('/logs', (req, res) => {
res.json(logs);
});
// 启动服务器
app.listen(3000, () => {
console.log('后端服务运行在 http://localhost:3000');
});
🔍 代码说明:
- 我们没有部署智能合约,而是利用“交易数据字段”存储信息,这是最简方案。
data字段通常用于调用合约函数,但我们直接塞入原始消息,Ganache 会完整保存。
步骤 3:测试你的服务
启动后端:
node server.js用 curl 或 Postman 发送请求:
curl -X POST http://localhost:3000/log \ -H "Content-Type: application/json" \ -d '{"message": "今天学会了区块链!"}'你会收到响应:
{ "success": true, "hash": "0xabc...", "txHash": "0xdef..." }查看所有日志:
curl http://localhost:3000/logs
✅ 恭喜!你已经完成了一次“后端 + 区块链”的完整闭环。
五、常见问题解答(FAQ)
Q1:为什么交易要签名?
A:区块链是公开的,任何人都能发送交易。签名用私钥加密,证明“这个操作确实是我发起的”。
Q2:Gas 费是什么?本地测试也要付吗?
A:Gas 是执行操作的计算成本。Ganache 是模拟环境,Gas 不消耗真钱,但逻辑一致。
Q3:消息存在 data 字段安全吗?
A:在测试网可以,但主网上不推荐。生产环境应部署智能合约,用 mapping 或事件(Event)存储数据。
Q4:Web3.js 和 Ethers.js 有什么区别?
A:都是连接区块链的库。Web3.js 更老牌,Ethers.js 更现代、轻量。新手用 Web3.js 资料更多。
Q5:我的交易一直 pending 怎么办?
A:检查 Ganache 是否运行,端口是否正确(默认 8545),账户是否有足够 ETH(Ganache 初始有 100 ETH)。
六、学习建议:下一步怎么走?
你已经迈出了关键一步!接下来可以:
短期目标(1-2周)
- ✅ 学习 Solidity 基础,写一个真正的智能合约(比如存证合约)
- ✅ 用 Hardhat 部署合约到本地网络
- ✅ 尝试用 Metamask 连接你的后端
中期目标(1个月)
- 📚 阅读《Mastering Ethereum》前5章
- 🔧 用 Express + Web3.js 构建一个 NFT 铸造后端
- 🧪 学习如何监听链上事件(Event)
长期思维
技术探索的核心不是“会多少工具”,而是“能否解决问题”。
我见过太多人沉迷于新框架,却连 HTTP 状态码都说不清。
建议你:
- 每学一个概念,问自己“它解决了什么问题?”
- 每写一行代码,思考“如果出错,怎么调试?”
- 每完成一个小项目,尝试给朋友讲解一遍
结语
这篇文章没有炫技,没有复杂架构,只有一个朴素的目标:让你亲手跑通第一个“后端+区块链”程序。
技术世界很大,但入门的门槛可以很低。只要你愿意敲下第一行代码,就已经超越了90%只停留在“想学”阶段的人。
我是那个在掘金写教程的全栈工程师,如果你觉得这篇对你有帮助,欢迎点赞、收藏,也欢迎在评论区告诉我你想学什么——说不定下一篇教程就是为你写的!
记住:最好的学习,永远是动手实践。现在,就去运行那段代码吧!

评论 0