200 行 Javascript 代码构造一个区块链
区块链的基础概念是非常简单的:一个有序递增记录列表的分布式数据库。然而,当我们在谈论区块链时很容易和用区块链来解决问题的过程混淆。这在如今较流行的以区块链为底层技术的项目,如比特币以及以太坊中也会存在这样的问题。“区块链”这个概念经常会和以下几个概念联系起来,比如交易,智能合约,或者加密货币。
这使得理解区块链变得更加艰难,特别是从源代码角度。在这篇文章中我会用 200 行的 Javascript 代码构建一个简单的区块链, 叫做 NaiveChain。
区块构造
第一个逻辑上的步骤是决定区块的构造。为了尽可能简单,只包含了必要 的几个部分:索引,时间戳,数据,哈希以及前一个区块的哈希。
区块中必须包含前一个区块的哈希值来保证链的完整性。
2
区块哈希
需要对区块进行哈希运算来保持数据的完整性。对区块内容进行 SHA-256 散列。这里的哈希运算与挖矿毫无关联,因为这里不包含工作量证明问题。
生成一个区块
为了生成一个区块,我们必须知道前一个区块的哈希值以及创建区块内容要求的剩余部分(即索引,哈希,数据,以及时间戳)。区块数据由最后一个使用者提供。
存储区块
内存中的 Javascript 用来存储区块链。区块链中的第一个区块被称作 “成因块”,它是采用硬编码编写的。
验证区块的完整性
在任意一个时间点我们必须能够验证一个区块或区块链的数据完整性。特别是有其他节点的新区块接入时需决定是否接受它们。
选择最长链
无论在什么时间点,都应该只有一条明确的区块链。在有冲突的情况下,选择最大数值区块所在的那条链。
2
和其他节点沟通
节点的一个重要部分是与链上的其他节点共享信息并在链上同步。下面的规则是用来确保链上节点的同步。
当一个节点生成一个新的区块,会在网络上进行广播。
当一个节点链接到一个新的点时,它会对最后一个区块发起请求。
当一个新的节点碰见一个区块的索引大于当前已知区块时,它会把这个区块添加到当前链上或是向整个区块链发起请求。
这是当节点遵循规定协议时的一些经典的通讯场景
不使用自动对等探索。点的位置(即 URL) 必须被手动添加。
控制节点
2
从某种程度上说,用户必须能够控制他们的节点。这通过建立 HTTP 服务器来完成。
正如所见,用户能够通过以下方式与节点进行交互:
列出所有的区块
创建一个新的区块,区块内容由用户提供
列出或是添加点
控制节点最直接了当的方法是通过 Curl :
架构
你可能感兴趣的文章
-
给区块链大佬泼盆冷水:先吃螃蟹者,不一定是英雄,也可能是烈士
-
给区块链大佬泼盆冷水:先吃螃蟹者,不一定是英雄,也可能是烈士
朱啸虎冷眼旁观区块链昨天朱啸虎与陈伟星(快的打车创始人)的互怼,想必大家都有目共睹了,有人觉得朱啸虎理性,有人觉得陈伟星更有前瞻性。不过区块链的火热,也引发了许...
2024-10-18
连获2个“全市第一”苏州高铁新城区块链又到高光时刻
-
连获2个“全市第一”苏州高铁新城区块链又到高光时刻
11月6日,2020(第八届)江苏互联网大会可信区块链高峰论坛上,正式公布了江苏省50大区块链典型应用案例。在这份极具含金量的省级名单中,苏州高铁新城14项相关...
2024-10-18
解读:腾讯区块链方案白皮书(三)
-
解读:腾讯区块链方案白皮书(三)
“我们很清楚,孤木难成林。只有赋予开放分享的基因,生态才可能长成一片森林。”这是马化腾2016年在至伙伴公开信中曾经提到,显然,区块链已经成为腾讯开放基因中的重...
2024-10-18
手机挖矿app有哪些这三种目前比较火
-
手机挖矿app有哪些这三种目前比较火
手机挖矿应成为现在很流行的一种赚钱方式了,那么手机挖矿app哪个好?那个app靠谱?有哪些手机挖矿app呢?下面一起了解一下吧!什么是手机挖矿手机挖矿其实本质还...
2024-10-18
以太币是什么?新人必看教学
-
以太币是什么?新人必看教学
以太币是什么
2024-10-18
虚拟货币投资详解,哪些币种值得入手?!
-
虚拟货币投资详解,哪些币种值得入手?!
3、定投定期定额买虚拟货币是一种比较适合新手投资的方式,定投指每隔一段时间,以固定的金额买入同一种加密资产或者组合
2024-10-18
野路子能出奇迹?快来看区块链十大主流代币
-
野路子能出奇迹?快来看区块链十大主流代币
比特币(BTC)数字货币鼻祖,最具价值的虚拟货币。因勒索病毒点名只收比特币而进入大众视野,2017年比特币自身价格的暴涨更是吸引了大批投资者进入数字货币市场。由...
2024-10-17
一文看 懂国内区块链产业,到底哪块最赚钱?
-
一文看 懂国内区块链产业,到底哪块最赚钱?
区块链火了。无论它是徐小平、陈伟星等人眼中的“风口”,还是巴菲特、朱啸虎等人口中的“泡沫”、“骗局”。当你为没加入“3点钟”社群而深深焦虑的时候,不如平心静气地...
2024-10-17
央行数字货币五大好处曝光以人的价值为基础,用区块链定义
-
央行数字货币五大好处曝光以人的价值为基础,用区块链定义
2月28日,国际货币基金副总裁张涛在伦敦经济学院发表了演讲,探讨了最近的国际热门话题,即“中央银行数字货币(简称:CBDC)”。演讲中,张涛简单阐述了CBDC的...
2024-10-17
详解印度区块链,你不可错过的二三事
-
详解印度区块链,你不可错过的二三事
区块链在印度发展可谓一波三折,但数字货币的快速升值也引起了印度媒体的关注,主流媒体对加密货币进行了密集报道,大多数文章对比特币和加密币持支持的态度,会给出“投资...
2024-10-17