首页 > 教程攻略 > web3.0 >如何使用JavaScript和Express创建区块链

如何使用JavaScript和Express创建区块链

来源:互联网 时间:2026-07-10 07:28:33

到底什么是区块链?

简单来说,区块链就是一组“块”串在一起的链条,每个块里都记录着某类交易或操作的信息。比如你去银&行存钱或取钱,银&行系统会对照你账户上一次的余额来执行操作。网上交易也一样,每一笔新交易都必须和上一个区块的数据产生关联。

下面这张图能帮你理解区块之间是怎么连接的,我们也会按照这个思路来写一个简易的区块链应用。

如何使用Ja vaScript和Express创建区块链

就像流程图那样,接下来我们会一步步把代码写出来,让这个链条动起来。

先搭一个区块

要建区块链,得先有“块”。所以我们创建一个名叫 Block 的类。

如何使用Ja vaScript和Express创建区块链

第一行导入了一个加密包,帮我们处理哈希计算。在终端运行下面这行命令就能装上这个包。

npm i crypto-js

构造区块时,需要传几个参数:索引(index)、时间戳(timestamp)、交易数据(transaction)和前一个块的哈希(foreignHash)。

索引(index)就像每个块的身份证号,方便我们以后按编号快速找到它。

时间戳(timestamp)记录这个块创建的时间。因为块一旦生成就不能修改,所以不需要“更新时间”字段。

交易数据(transaction)是区块真正要存的东西,比如员工总数、转账金额、发送方信息等等。

前一个块的哈希(precedingHash)负责把当前块和前一个块紧紧连在一起。

哈希(hash)则和前面的哈希一起工作,保证整条链的连接是正确的。

最后,类里还有一个 computeHash 方法,用 SHA256 算法算出一个独一无二的哈希值。这个算法会把所有数据都算进去,确保没有两个块会得到一样的哈希。

区块有了,接下来看链条怎么搭。

创建一条链

我们再建一个 BlockChain 类,里边放几个方法用来操作这些块。下面是整个类的代码。

如何使用Ja vaScript和Express创建区块链

先写一个空的构造函数,初始化几个字段:id(链的标识符)、name(给链起个名字)、blockchain(真正存所有块的地方),以及 difficulty(后面做工作量证明会用)。

进到其他代码之前,先聊聊“创世块”。任何区块链项目都需要一个创世块来启动整条链——第一个块要作为基础,它的哈希会成为下一个块的前置哈希。这里我们用前面写的 Block 类创建一个对象,传一些初始值进去。

然后写一个 create() 方法,它会接收几个参数:name 通过 API 传入,id 也从 API 获取,genesis 用来设置创世块的值。

接着是 obtainLatestBlock(),它返回链上最新的那个块。这样我们就能拿到最后一个块的哈希,把它赋给新加入的块。

最重要的方法是 addNewBlock(),用来往链里添加新块。它接受一个区块作为参数。首先把区块链最新块的哈希取出来,填进新块的 precedingHash 里;然后生成新块的哈希(其实这个步骤在 Block 构造函数里已经做了,这里可以跳过)。但这个方法跑完以后,新块就会被推进 blockchain 数组里。

最后还有 checkChainValidity(),虽然这里不实际调用它,但以后可以用它来验证整条链的完整性。

加上控制器和路由

我们来写三条路由:

POST - /api/blockchain

创建一条区块链;

GET - /api/blockchain

获取区块链数据;

POST - /api/blockchain/append

往链里追加新的子块。

现在创建一个控制器文件。

如何使用Ja vaScript和Express创建区块链

先导入我们写的 BlockBlockChain 两个类。然后建一个叫 FlippingCoin 的控制器(名字随你喜好),重点要实现三个方法:

createNewChain —— 创建新链;

appendNewChild —— 添加子块;

getChain —— 获取整条链。

为了演示方便,这里跳过数据持久化部分。除了上面三个方法,还需要一个校验方法来确认传入的数据格式正确。

然后调用对应的方法让逻辑跑通。按下面的方式绑定路由。

如何使用Ja vaScript和Express创建区块链

确保每个方法都正确映射到了对应的路由上。

来测一下

先访问 POST 路由 /api/blockchain,它会根据我们在创世交易里传入的数据生成一条新的区块链。

如何使用Ja vaScript和Express创建区块链

再试试 POST 路由 /api/blockchain/append,把交易数据传进去,新块就会被添加到链上。

如何使用Ja vaScript和Express创建区块链

最后走一遍 GET 路由 /api/blockchain,看看数据有没有更新成功。

如何使用Ja vaScript和Express创建区块链

本文仅用于学习参考,不构成任何投资建议、交易建议或收益承诺。区块链技术和加密货币市场存在较大波动,实际项目开发需综合考虑安全、共识机制、网络环境等多方面因素。所有价格、市值等实时数据请以官方公告、交易所页面及行情平台为准,投资者应独立判断、谨慎决策。