当我在console.log测试区块链时为什么没有显示previousHash?
10LK
我正在尝试通过使用JavaScript构建一个小项目来了解有关区块链的更多信息。任何人都可以向我解释为什么当我在console.log测试区块链上登录时为何不显示previousHash吗?
(如果需要SHA256,则使用npm install --save crypto-js)
const SHA256 = require('crypto-js/sha256'); class Block{ //Index: (Optional) tells us where the block is in the chain //Timestamp: tells us when the block was created //Data: Can include any kind of data; for a currency you could store details of the transaction(transfer amount, sender id, receiver id) //previousHash: String which contains the hash of the block which came before it (Ensures data integrity) constructor(index, timestamp, data, previousHash = ''){ this.index = index; this.timestamp = timestamp; this.data = data; this.previousHash = previousHash; //Hash of this block this.hash = this.calculateHash(); } //Runs values from block through a hashing function to create a hash calculateHash(){ return SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString(); } } //8.44 class Blockchain{ //Initializes blockchain constructor(){ this.chain = [this.createGenesisBlock]; } // first block needs to be created manually //index, timeStamp, data, previousHash(there is none in this case) createGenesisBlock(){ return new Block(0, "01/01/2017", "Genesis block", "0"); } //Returns most recently added block getLatestBlock(){ return this.chain[this.chain.length -1]; } //adds a new block to the chain addBlock(newBlock){ newBlock.previousHash = this.getLatestBlock().hash; newBlock.hash = newBlock.calculateHash //The chain is just an array so you can use regular array methods this.chain.push(newBlock); } } //create instance of blockchhain let Coin = new Blockchain(); Coin.addBlock(new Block(1, "10/07/2017", {amount: 4})); Coin.addBlock(new Block(2, "12/07/2017", {amount: 10})); console.log(JSON.stringify(Coin, null, 4));
我希望console.logged JSON文件包含previousHash以及索引,时间戳和数据。它包含除previousHash之外的所有内容。
感谢您的帮助,我一直想弄清楚这一点…