用js代码理解区块链,最简版本

要想理解区块链的应用场景,需要首先理解区块链的技术,用50行代码就可以初步理解什么是区块链

const SHA256 = require('js-sha256')//哈希算法

class Block{

constructor(index,data,previousHash){

this.index = index;

this.timestamp = new Date();

this.data = data

this.previousHash = previousHash;

this.hash = this.calcHash();

}

calcHash(){

var sha = SHA256.create();

return sha.hex();//blockchain的关键所在

}

static first(data='Genesis'){//创世区块

return new Block(0,data,'0')

}

static next(previous,data='Tranaction data...'){

return new Block(previous.index+1,data,previous.hash)

}

}

//let's get started

b0 = Block.first("Gensis")

b1 = Block.next(b0,"Tranaction Data...")

b2 = Block.next(b1,"Tranaction Data...")

b3 = Block.next(b2,"More Transaction Datasss...")

blockchain = [b0,b1,b2,b3]

console.log(blockchain)

输出结果如下

[ Block { index: 0, timestamp: 2017-12-29T17:39:00.839Z, data:'Gensis', previousHash:'0',hash:'b83beefe99777acf14995d6450cca2ffa3da9223eac4feb39d70bd9201880364'}, Block { index: 1, timestamp: 2017-12-29T17:39:00.841Z, data:'Tranaction Data...', previousHash:'b83beefe99777acf14995d6450cca2ffa3da9223eac4feb39d70bd9201880364',hash:'30653cac3d6415c677cfbbe881ad192979c61029843d03f9b40a3a192f76b593'}, Block { index: 2, timestamp: 2017-12-29T17:39:00.841Z, data:'Tranaction Data...', previousHash:'30653cac3d6415c677cfbbe881ad192979c61029843d03f9b40a3a192f76b593',hash:'9a629894800467082cb475f075e0ff1b600282a76264c9e29c88473b7fb31179'}, Block { index: 3, timestamp: 2017-12-29T17:39:00.841Z, data:'More Transaction Data...', previousHash:'9a629894800467082cb475f075e0ff1b600282a76264c9e29c88473b7fb31179',hash:'8036f9d8537c00099e71841e9803b128e802ab0f10323cbf1a1a786aeef84569'} ]

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏汇智网教程

以太坊智能合约示例

1K10
来自专栏Python中文社区

用Python从零开始创建区块链

作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链。 对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块...

1.1K7
来自专栏顶级程序员

如何用Python创建眼下火爆的区块链?这篇干货请收藏

源 / learnblockchain 文 / Daniel van Flymen 译 / Tiny熊

1174
来自专栏智能计算时代

超级账本项目:架构设计

image.png 架构设计 整个架构如下图所示。 ? 包括三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Memb...

3204
来自专栏比原链

Derek解读Bytom源码-孤块管理

Gitee地址:https://gitee.com/BytomBlockchain/bytom

1073
来自专栏区块链入门

【链安科技】ATN Token中CUSTOM_CALL漏洞

本文结论:ERC223, ERC827的部分实现代码引入了任意函数调用缺陷,可能会对使用这部分代码的合约带来安全漏洞。如果需要实现上述规范接口,请仔细检查...

1083
来自专栏极客编程

以太坊智能合约开发DApp应用示例

智能合约开发是以太坊的核心,学习过程主要是搭建以太坊开发环境和solidity语言的编程。本文不用任何以太坊Dapp框架,直接在ganache下开发智能合约。

1472
来自专栏蜉蝣禅修之道

以太坊DApp开发初探

关于“以太猫”的流行,相信不少人都有所耳闻,甚至入手养过几只。从游戏性来说,其本质就是一个简单的收集交换类游戏,然鹅,是区块链赋予了它魅力,让用户每一只猫永远不...

1.2K15
来自专栏机器学习算法与Python学习

如何用Python创建眼下火爆的区块链?这篇干货请收藏

源 | learnblockchain | 小象 文 | Daniel van Flymen 译 | Tiny熊 对数字货币的崛起感到新奇的我们,...

3417
来自专栏极客编程

用solidity语言开发代币智能合约

智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助。

1582

扫码关注云+社区

领取腾讯云代金券