NodeJS区块链实践(1)Nodejs搭建简易区块链

区块链的目的之一是让我们所需要的“有价值”的信息得以保存且不可更改,这些信息都储存在一个叫做“区块(block)”的结构中。以比特币为例,被认为是有价值的信息是“交易”,所有的交易储存在区块中,通过区块的hash、时间戳等实现信息的可追溯以及不可更改性。

我们这里首先实现的是一个简易的区块链,并不是像比特币这样成熟的区块链,暂不涉及交易结构、验证以及UTXO。

一、区块(block)

首先,创建一个区块(Block)类。我们的区块仅包含了一部分关键信息,它的结构如下:

class Block{
  constructor(data){
     this.hash = "",  // 当前区块的Hash值
     this.height = 0,  // 当前区块的高度
     this.body = data,  // 区块实际存储的有效信息
     this.time = 0,  // 时间戳,即区块创建的时间
     this.previousBlockHash = ""。// 前一个区块的Hash值
  }
}

这里,hash、height、time和previousBlockHash在比特币规范中属于区块头(header),区块头是一个单独的数据结构,而body部分用于储存交易信息或者其他数据。

二、区块链(blockchain)

首先,我们要把区块存在哪里?我们可以把区块直接放进一个数组(let blockchain = arr[]),但是这显然不是我们想要的。这里我们选择leveldb作为底层的数据储存方案。

const level = require('level');
const chainDB = './.data/blockchain';
const db = level(chainDB);

然后,我们要思考一下,一个blockchain实例需要具有哪些功能?

1、getBlockHeight():获取当前区块的高度,即该区块链的高度;
2、getBlockByHeight(height):通过区块高度来获取区块;
3、getBlockByHash(hash):通过区块哈希来获取区块;
4、validateBlock(height):验证某高度

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js可以用来搭建服务器,以下是一些步骤和代码示例: 1. 首先,你需要安装Node.js和Express框架。可以使用npm命令来安装它们。 2. 创建一个service.js文件,并在其中导入Express模块和创建一个Express应用程序的实例。 3. 使用app.listen方法来配置服务器的端口号,并启动服务器。 4. 可以使用app.get方法来定义GET请求的路由和处理函数。例如,可以创建一个'/api/list'的路由,当收到GET请求时,返回一个包含数据的JSON对象。 5. 可以使用app.post方法来定义POST请求的路由和处理函数。例如,可以创建一个'/api/setList'的路由,当收到POST请求时,将请求体中的数据存储起来,并返回一个包含存储数据的JSON对象。 6. 可以使用app.use方法来配置中间件。例如,可以使用express.static中间件来将静态文件部署到服务器上。 7. 最后,通过运行node service.js命令来启动服务器。 下面是一个示例代码: ```javascript const express = require('express'); const app = express(); app.use(express.static('img')); app.use(express.urlencoded({ extended: false })); app.get('/api/list', (req, res) => { res.send({ code: 200, data: \[{ name: 1 }, { name: 2 }, { name: 3 }\] }); }); app.post('/api/setList', (req, res) => { const newList = req.body; console.log(newList); res.send({ newList }); }); app.listen(9588, () => { console.log('服务器启动成功'); }); ``` 通过以上步骤和代码示例,你可以使用Node.js搭建一个简单的服务器,并处理GET和POST请求。 #### 引用[.reference_title] - *1* *2* [nodejs如何搭建服务器](https://blog.csdn.net/weixin_41472455/article/details/110274100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [如何通过nodejs快速搭建一个服务器](https://blog.csdn.net/ct5211314/article/details/128282738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值