元宇宙非小号金色财经交流群社区官网

的完整结构区块链初学者必读:存储一个完整结构的区块链技术学习笔记

浏览:83|时间:2023-06-16 19:44:26
本文约2700字,阅读(观看)需要20分钟。

到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略“分布式”这个部分,仅专注于“存储”这一点。

选择数据库

目前,我们的区块链实现里面并没有用到数据库,而是在每次运行程序时,简单地将区块链存储在内存中。那么一旦程序退出,所有的内容就都消失了。我们没有办法再次使用这条链,也没有办法与其他人共享,所以我们需要把它存储到磁盘上。

那么,我们要用哪个数据库呢?实际上,任何一个数据库都可以。在比特币原始论文中,并没有提到要使用哪一个具体的数据库,它完全取决于开发者如何选择。BitcoinCore,最初由中本聪发布,现在是比特币的一个参考实现,它使用的是LevelDB。而我们将要使用的是BoltDB,因为它非常简洁,用Go实现,不需要运行一个服务器,能够允许我们构造想要的数据结构。

数据库结构

Bolt使用键值存储,这意味着它没有像SQL RDBMS(MySQL,PostgreSQL等等)的表,没有行和列。相反,数据被存储为键值对(key-value pair,就像Golang的map)。键值对被存储在bucket中,这是为了将相似的键值对进行分组(类似RDBMS中的表格)。因此,为了获取一个值,你需要知道一个bucket和一个键(key)。

需要注意的一个事情是,Bolt数据库没有数据类型:键和值都是字节数组(byte array)。鉴于需要在里面存储Go的结构(准确来说,也就是存储Block(块)),我们需要对它们进行序列化,也就说,实现一个从Go struct转换到一个byte array的机制,同时还可以从一个byte array再转换回Go struct。虽然我们将会使用encoding/gob来完成这一目标,但实际上也可以选择使用JSON, XML, Protocol Buffers等等。之所以选择使用encoding/gob,是因为它很简单,而且是Go标准库的一部分。

因为目前还没有交易,所以我们只需要blocks bucket。另外,正如上面提到的,我们会将整个数据库存储为单个文件,而不是将区块存储在不同的文件中。所以,我们也不会需要文件编号(filenumber)相关的东西。最终,我们会用到的键值对有:

- 32字节的block-hash -> block结构 - l -> 链中最后一个块的hash

这就是实现持久化机制所有需要了解的内容了。(未完待续)

区块 区块链 区块链技术 学习 技术

  • 派出所积极学习区块链知识,如何在法律上维护区块链技术安全?

    派出所积极学习区块链知识,如何在法律上维护区块链技术安全?

    2022-01-13 09:28:45

    警察积极主动学习培训区块链技术、数字货币法律知识;办案人掌握币市,对token不容易一概评定涉嫌诈骗;一些区块链项目,被作为传销的“新标底”。警察虚拟货币法律知识的升级继沿海地区几栋大都市的网络警察好朋友积极主动学习培训...

  • 区块链技术:联邦学习是区块链隐私计算的目标吗?

    区块链技术:联邦学习是区块链隐私计算的目标吗?

    2022-03-03 20:36:09

    区块链领域里有一个很竖直的跑道,技术性行动很晦涩,这就是对数据开展个人隐私解决的个人隐私测算。为什么呢?一是由于对数据解决的商品复杂性,二是技术性上也有好多好多问题存有。用区块链基础设施建设来做,太过度简单,这一举例说明...

  • 加强区块链技术的引导和规范 推动区块链技术发展和产业创新

    加强区块链技术的引导和规范 推动区块链技术发展和产业创新

    2022-03-25 14:44:23

    习近平同志在主持中共中央政治局第十八次集体学习时强调,区块链技术的综合应用在新技术创新和产业改革中发挥着重要作用。区块链产业具有巨大的发展潜力和广阔的应用前景。区块链技术的综合应用在促进新技术创新和产业改革中的重要作用不...

  • 区块链技术应用:区块链技术如何让善款在阳光下运行?

    区块链技术应用:区块链技术如何让善款在阳光下运行?

    2022-03-30 12:26:42

    归功于分布式系统、公开化、信息追朔等工艺特性,在全国各地的抗“疫”行为中,区块链应用充分发挥了关键功效。由我国雄安集团数字城市建设企业、趣链科技公司带头的好几家公司协同呼吁进行了一款根据区块链的公益慈善捐赠平台——善踪,...

本站分享的区块链、Web3.0元宇宙、NFT、数字藏品最新消息等相关数藏知识快讯NFR资讯新闻,与金色财经非小号巴比特星球前线Btc中国官网无关,本站资讯观点不作为投资依据,市场有风险,投资需谨慎!不提供社区论坛BBS微博微信交流群等相关币圈信息发布!
本站内容来源于互联网,如存在侵权及违规内容投诉邮箱( zztaobao@vip.qq.com )