区块链源代码分析(1)
国外有个大侠用node.js写了区块链项目,一起来学习一下。
暂时还没包括POW和P2P协议和如何奖励。接下来几篇将详细叙述POW(nonce),P2P,reward
// 引入加密模块
const SHA256 = require('crypto-js/sha256');
// 定义块
class Block {
constructor (index,timestamp,data,previousHash=''){
this.index = index;
this.timestamp = timestamp;
this.data = data;
this.previousHash=previousHash;
this.hash=this.caculateHash(); //hash 值
}
caculateHash(){
return SHA256(this.index+this.timestamp+ JSON.stringify(this.data)+this.previousHash).toString(); //计算hash值
}
}
//定义区块链
class Blockchain{
constructor()
{
this.chain=[this.createGensisBlock()]; //创建世纪块
}
//创世纪块
createGensisBlock(){
return new Block(0,"2017/01/01","GenesisBlock","");
}
//获取当前块
getLatestBlock(){
return this.chain[this.chain.length-1];
}
//增加区块到区块链中
addBlock(newBlock){
newBlock.previousHash = this.getLatestBlock().hash;
newBlock.hash = newBlock.caculateHash();
this.chain.push(newBlock);
}
//验证块的有效性,当前块的hash等于nonce+前一个块的hash值 nonce相当于难度,暂时还没加入
//加入nonce后需要生成的hash值得前两位为0,正真的比特币hash至少要前72位为零,可见难度有多大,需要多大的计算能力
isChainValid(){
for(let i=1;i<this.chain.length;i++){
const currentBlock = this.chain[i];
const previousBlock = this.chain[i-1];
if(currentBlock.hash != currentBlock.caculateHash()){
return false;
}
if(currentBlock.previousHash!=previousBlock.hash){
return false;
}
return true;
}
}
}
let xuanBlock = new Blockchain();
xuanBlock.addBlock(new Block(1,"10/10/2017",{amount:4}));
xuanBlock.addBlock(new Block(2,"10/12/2017",{amount:2}));
console.log(JSON.stringify(xuanBlock,null,4));
区块链源代码分析(1)相关推荐
- r语言error in match.fun(fun) :_Go语言200行写区块链源代码分析
Github上有一个Repo,是一个使用Go语言(golang),不到200行代码写的区块链源代码,准确的说是174行.原作者起了个名字是 Code your own blockchain in le ...
- 区块链前景分析和学习建议
纵观区块链快速的发展趋势,如狂风暴雨般席卷全球,已经有很多领域开始尝试引入区块链,试图借助区块链技术进行转型的公司也有很多,但区块链是一种新兴的技术,专业人才十分匮乏,因此学习区块链技术成了很多人要做 ...
- 区块链概念股分析 | 远光软件大涨128%,区块链或成关键因素?
随着高层的发话,区块链概念股一度掀起一波炒作热潮,越来越多的上市公司开始涉足区块链业务.但是区块链概念股鱼龙混杂,面对众多质量参差不齐的股票,大家往往不知道该如何下手. 陀螺财经重磅推出[区块链概念股 ...
- 杭州趣链科技CEO李伟:区块链场景分析和实践
2017年10月25日,由数据猿联合<清华金融评论>共同主办的"2017金融科技价值峰会--数据驱动金融商业裂变"在北京隆重召开.本文是杭州趣链科技CEO李伟关于区块链 ...
- 狂热至理性,2018年区块链舆情分析 | 链塔区块链产业年鉴精选
转发此链接至朋友圈并截图进预售群, 前50名可进入链塔年鉴购买优惠通道 "这是一个最好的时代,也是一个最坏的时代." 2018年,区块链依然是最热门的话题之一.从年初火热的三点钟社 ...
- python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...
原创: 菜鸟哥 菜鸟学Python 最近区块链技术再次被大家热议,既然区块链受到如此高的关注,我们就不妨去采集数据分析看看,目前所有与区块链相关的招聘信息吧. 1数据的爬取 首先是对于数据的爬取,由于 ...
- 区块链工程师薪资竟然被AI吊打?最新出炉的《2018区块链招聘分析报告》,释放了哪些重要信号?...
2018年中的区块链行业呈现出与年初不同的形态. 一方面ICO渐冷,传统VC转淡,整个融资环境趋于严峻:另一方面各国纷纷布局区块链,从政策上大力发展区块链技术. 整个区块链行业的变动,使得区块链人才招 ...
- 从概念到底层技术,区块链一站式分析和汇总(附知识图谱)
作者简介:朱志文,亿书创始人,CSDN区块链知识库特邀编辑.中国区块链俱乐部主创者和发起人,比特币的忠实粉丝,区块链技术的布道者,代表作<Nodejs开发加密货币>.个人博客:http:/ ...
- 5G与区块链发展分析
5G作为新一代移动通信技术,具备高速率.低延时和海量接入的特性.而区块链作为新一代互联网,其去中心化.交易信息隐私保护.历史记录防篡改.可追溯等特性可推动5G应用的高效发展.分析区块链和5G的行业痛点 ...
最新文章
- Service Worker
- c语言程序的实质,C语言_printf中的%p的实质
- CAP带你轻松玩转ASP.NETCore消息队列
- B-树、B+树、B*树详解
- 今天完成了share memory的测试
- 保险条款精解(四)索赔——不可不看,因为您以前可能没听说过
- 集群的可扩展性及其分布式体系结构(1)
- 锂价疯涨 马斯克说特斯拉可能不得不去开采和提炼锂
- 交换机端口呈现err-disable的原因
- 计算机在思政专业的应用与探索,课程思政在计算机类课程中的探索与实践
- PKM全民推广系列一:PKM定义
- 推荐几个代码自动生成器,神器
- python绘制中国_用Python画中国地图(下)
- 大话西游2人数最多服务器,大话2大话各个服务器狂人榜排名 看大话如今服务器...
- hdu6441 Find Integer
- 基于android的手机掌上购物
- pandas读取数据时,报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid contin
- elementUI中el-upload上传文件时附带额外参数传递
- 知识点滴 - 无线电频谱划分
- Find_in_set()函数的使用及in()用法详解
热门文章
- 联通 受限服务器未响应,联通设置宽带的时候服务器未响应
- word2003系统服务器,用Word?2003进行协同办公
- 计算机的未来展望英语作文,展望未来英语作文范文
- Oracle数据库基础(还在学java吗?不如来看看oracle)
- Table ‘ambari.members‘ doesn‘t exist 解决方法
- linux 版本的选择,以及如何查看linux版本
- linux 版本介绍
- 证券公司信息化3-经纪业务收入大概是个什么水平?一个普通投资者的开户过程是怎样的?
- Aligenie语音开发平台(天猫精灵)的对接记录
- 人脸识别之insightface开源代码使用:训练、验证、测试(3)