我对技术探索与实践的看法:从后端到区块链的入门之旅

@胡思宇
2025-12-18 18:06
阅读 1536

大家好,我是掘金上的一名全栈工程师,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 为例)

  1. 安装 Node.js(确认版本 ≥18):

    node -v  # 应输出 v18.x 或更高
    
  2. 全局安装 Ganache(模拟区块链):

    npm install -g ganache
    
  3. 创建项目目录并初始化:

    mkdir my-blockchain-backend
    cd my-blockchain-backend
    npm init -y
    
  4. 安装后端依赖:

    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:测试你的服务

  1. 启动后端:

    node server.js
    
  2. 用 curl 或 Postman 发送请求:

    curl -X POST http://localhost:3000/log \
         -H "Content-Type: application/json" \
         -d '{"message": "今天学会了区块链!"}'
    
  3. 你会收到响应:

    {
      "success": true,
      "hash": "0xabc...",
      "txHash": "0xdef..."
    }
    
  4. 查看所有日志:

    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

最热最新
暂无评论
@胡思宇Lv.1
0
影响力
0
文章
0
粉丝