最近区块链很火,有没有js版本区块链技术的实现,想学习下
网友回复
这样才正确,楼主的代码有误
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>BFW DEMO JS PAGE</title> <script id="bfwone" data="dep=jquery.17|crypto-js-3.1.9-1/crypto-js" src="//repo.bfw.wiki/bfwrepo/js/bfwone.js"></script> <script> class Block { constructor(index, timestamp, data, previousHash = '') { this.index = index; this.previousHash = previousHash; this.timestamp = timestamp; this.data = data; this.hash = this.calculateHash(); } calculateHash() { return CryptoJS.SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString(); } } class Blockchain { constructor() { this.chain = [this.createGenesisBlock()]; } createGenesisBlock() { return new Block(0, "011/01/2019", "bfw init block", "0"); } getLatestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.previousHash = this.getLatestBlock().hash; newBlock.hash = newBlock.calculateHash(); this.chain.push(newBlock); } 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.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } bready(function() { let bfwcoin = new Blockchain(); bfwcoin.addBlock(new Block(1, "1/12/2019", { amount: 4 })); bfwcoin.addBlock(new Block(2, "2/12/2019", { amount: 8 })); // 检查是否有效(将会返回true) console.log('区块链是否有效? ' + bfwcoin.isChainValid()); // 现在尝试操作变更数据 bfwcoin.chain[1].data = { amount: 100 }; console.log(bfwcoin); // 再次检查是否有效 (将会返回false) console.log("区块链是否有效? " + bfwcoin.isChainValid()); }); </script> </head> <body> </body> </html>
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>BFW DEMO JS PAGE</title> <script id="bfwone" data="dep=jquery.17|crypto-js-3.1.9-1/crypto-js" src="http://repo.bfw.wiki/bfwrepo/js/bfwone.js"></script> <script> class Block { constructor(index, timestamp, data, previousHash = '') { this.index = index; this.previousHash = previousHash; this.timestamp = timestamp; this.data = data; this.hash = this.calculateHash(); } calculateHash() { return CryptoJS.SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString(); } } class Blockchain { constructor() { this.chain = [this.createGenesisBlock()]; } createGenesisBlock() { return new Block(0, "011/01/2019", "bfw init block", "0"); } getLatestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.previousHash = this.getLatestBlock.hash; newBlock.hash = newBlock.calculateHash(); this.chain.push(newBlock); } 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.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } bready(function() { let bfwcoin = new Blockchain(); bfwcoin.addBlock(new Block(1, "1/12/2019", { amount: 4 })); bfwcoin.addBlock(new Block(2, "2/12/2019", { amount: 8 })); // 检查是否有效(将会返回true) console.log('区块链是否有效? ' + bfwcoin.isChainValid()); // 现在尝试操作变更数据 bfwcoin.chain[1].data = { amount: 100 }; console.log(bfwcoin); // 再次检查是否有效 (将会返回false) console.log("区块链是否有效? " + bfwcoin.isChainValid()); }); </script> </head> <body> </body> </html>
uniapp开发的app或小程序如何将视频投屏?
如何在安卓虚拟机上安装使用chatgpt官方app?
微信小程序如何计入PayPal支付收款?
海外国际版微信小程序如何注册开发上架并开通海外支付收款?
uniapp怎么实现修改默认picker的选中颜色和确认按钮颜色样式?
uniapp怎么实现自定义nav导航条向上滚动导航条背景变色?
js如何生成随机用户昵称?
如何解决python print输出不显示缓冲问题?
python-docx创建Word文档报错ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes
python如何实时监控指定目录的文件增删改操作记录?